/* ghalixy.app/connect/: Ghalixy Connect's page, on top of site.css. Same rules: only transform and opacity animate,
   nothing moves with reduced motion, and nothing comes from anywhere else. */

/* the path a visit takes: browser, relay, your server */
.flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:12px;
  padding:clamp(22px,3vw,34px);border-radius:var(--r-xl);border:1px solid var(--stroke-2);
  background:radial-gradient(60% 70% at 50% 0%,rgba(139,92,246,.18),transparent 70%),linear-gradient(165deg,#10152e,#080a18);
  box-shadow:var(--shadow-lg)}
.flow__node{display:grid;justify-items:center;gap:10px;text-align:center}
.flow__icon{width:64px;height:64px;border-radius:20px;display:grid;place-items:center;border:1px solid var(--stroke-2);
  background:rgba(255,255,255,.05)}
.flow__icon svg{width:30px;height:30px}
.flow__node b{font-family:var(--font-display);font-size:1rem}
.flow__node small{color:var(--muted);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.04em}
.flow__link{position:relative;width:clamp(40px,7vw,90px);height:2px;background:linear-gradient(90deg,var(--cyan),var(--violet),var(--pink));border-radius:2px}
.flow__link::after{content:'';position:absolute;top:-3px;left:0;width:8px;height:8px;border-radius:50%;background:#fff;
  box-shadow:0 0 10px 2px rgba(174,103,247,.9);animation:packet 2.6s linear infinite}
.flow__link--2::after{animation-delay:-1.3s}
@keyframes packet{from{transform:translateX(0)}to{transform:translateX(calc(clamp(40px,7vw,90px) - 8px))}}
.flow__note{grid-column:1/-1;margin-top:8px;text-align:center;color:var(--muted);font-size:.86rem}
.flow__lock{display:inline-flex;align-items:center;gap:6px;color:var(--green)}
.flow__lock svg{width:15px;height:15px}

/* what works today, and what's next */
.status{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.status__col{padding:26px 28px;border-radius:var(--r-lg);border:1px solid var(--stroke);background:linear-gradient(165deg,#0f1430,#0a0d1e)}
.status__col h3{display:flex;align-items:center;gap:10px;font-size:1.12rem;margin-bottom:14px}
.status__col h3 i{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 10px var(--green)}
.status__col--next h3 i{background:var(--amber);box-shadow:0 0 10px var(--amber)}
.status__col li{position:relative;padding-left:20px;margin-bottom:10px;color:var(--text-2);font-size:.93rem;line-height:1.55}
.status__col li::before{content:'';position:absolute;left:2px;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--grad)}

/* addresses and DNS records, set like code */
.names{display:grid;gap:12px}
.name-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:18px;align-items:baseline;padding:16px 20px;
  border-radius:var(--r-md);border:1px solid var(--stroke);background:rgba(255,255,255,.03)}
.name-row code,.dns code{font-family:var(--font-mono);font-size:.86rem;color:var(--cyan);word-break:break-all}
.name-row p{color:var(--muted);font-size:.92rem}
.reserved{margin-top:18px;color:var(--dim);font-size:.85rem}
.reserved code{font-family:var(--font-mono);color:var(--text-2)}

.dns{display:grid;gap:10px;margin:18px 0 6px}
.dns__rec{display:grid;grid-template-columns:70px minmax(0,1fr) minmax(0,1.3fr);gap:14px;padding:12px 16px;border-radius:var(--r-sm);
  border:1px solid var(--stroke);background:#070915;font-size:.86rem}
.dns__rec span{font-family:var(--font-mono);color:var(--pink)}

/* sign in: go to your server by its name */
.open-field{display:flex;align-items:stretch;border-radius:var(--r-md);border:1px solid var(--stroke-2);background:#070915;overflow:hidden}
.open-field:focus-within{border-color:rgba(34,211,238,.6)}
.open-field input{flex:1;min-width:0;border:0;background:transparent;box-shadow:none;font-family:var(--font-mono);text-align:right;padding-right:2px}
.open-field input:focus{outline:none}
.open-field em{display:grid;place-items:center;padding:0 16px 0 2px;font-style:normal;font-family:var(--font-mono);color:var(--muted)}

/* what the relay sees, and never sees */
.sees{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.sees .status__col--never h3 i{background:var(--pink);box-shadow:0 0 10px var(--pink)}

@media (max-width:860px){
  .flow{grid-template-columns:1fr;justify-items:center}
  .flow__link{width:2px;height:34px;background:linear-gradient(180deg,var(--cyan),var(--violet),var(--pink))}
  .flow__link::after{left:-3px;animation-name:packetDown}
  @keyframes packetDown{from{transform:translateY(0)}to{transform:translateY(26px)}}
  .status,.sees{grid-template-columns:1fr}
  .name-row,.dns__rec{grid-template-columns:1fr;gap:6px}
}
@media (prefers-reduced-motion:reduce){ .flow__link::after{animation:none} }
