:root{--bg:#06080c;--panel:#0d121b;--panel-2:#111a26;--line:#1c2634;--text:#dbe4ee;--muted:#8695a8;--dim:#5c6a7d;--accent:#5eead4;--accent-2:#38bdf8;--warn:#fbbf24;--mono:"JetBrains Mono",ui-monospace,Menlo,monospace;--sans:"Inter",system-ui,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.62;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
.bg-grid{position:fixed;inset:0;z-index:-1;opacity:.16;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(circle at 50% -10%,#000,transparent 70%)}
.wrap{max-width:940px;margin:0 auto;padding:0 20px}

/* top bar */
.top{display:flex;align-items:center;gap:14px;padding:20px 0}
.brand{font-family:var(--mono);font-weight:700;font-size:19px;text-decoration:none;color:var(--text)}
.brand::first-letter{color:var(--accent)}
.top nav{margin-left:auto;display:flex;align-items:center;gap:6px}
.top nav a{font-family:var(--mono);font-size:13px;color:var(--muted);text-decoration:none;border-radius:999px;padding:7px 13px}
.top nav a:hover{color:var(--text);background:var(--panel)}
.top nav a.cta{color:#04120f;background:linear-gradient(180deg,var(--accent),#2dd4bf);font-weight:700}
.top nav a.cta:hover{background:linear-gradient(180deg,#7df1de,#2dd4bf)}
@media(max-width:560px){.top nav a.hide-sm{display:none}}

/* hero */
.hero{text-align:center;padding:52px 0 10px}
.hero .mark{font-size:56px;color:var(--accent);animation:float 4s ease-in-out infinite;filter:drop-shadow(0 0 22px color-mix(in srgb,var(--accent) 50%,transparent))}
@keyframes float{50%{transform:translateY(-8px)}}
@media(prefers-reduced-motion:reduce){.hero .mark{animation:none}.pkt{animation:none!important}}
.hero h1{font-size:clamp(29px,5.4vw,44px);line-height:1.18;margin:18px 0 12px;letter-spacing:-.8px}
.hero h1 .hl{color:var(--accent)}
.hero .lede{color:var(--muted);max-width:56ch;margin:0 auto;font-size:17px}
.actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:30px 0 8px}
.btn{display:inline-block;text-decoration:none;background:linear-gradient(180deg,var(--accent),#2dd4bf);color:#04120f;padding:13px 26px;border-radius:11px;font-weight:700;font-size:15px;transition:transform .12s,box-shadow .2s}
.btn:hover{transform:translateY(-1px);box-shadow:0 14px 34px -16px var(--accent)}
.btn.ghost{background:none;color:var(--text);border:1px solid var(--line)}
.btn.ghost:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:none}
.badges{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:22px}
.badges span{font-family:var(--mono);font-size:11.5px;color:var(--muted);background:#0a0e15;border:1px solid var(--line);border-radius:999px;padding:5px 12px}
.badges span.on{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}

/* mixnet strip */
.strip{margin:46px 0 0;background:radial-gradient(circle at 50% 30%,#0a121a,#080b11);border:1px solid var(--line);border-radius:14px;padding:22px 20px;overflow:hidden}
.hops{display:flex;align-items:center;gap:6px;position:relative}
.hop{flex:1;text-align:center;z-index:2}
.hop .box{height:40px;border:1px solid var(--line);border-radius:9px;background:#0a0e15;display:grid;place-items:center;font-family:var(--mono);font-size:10.5px;color:var(--dim)}
.hop.edge .box{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));color:var(--accent)}
.hop .lbl{font-family:var(--mono);font-size:9px;color:var(--dim);margin-top:5px}
.flow{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}
.pkt{position:absolute;top:16px;left:-5%;width:8px;height:8px;border-radius:2px;background:#26344a;animation:travel 3.4s linear infinite}
.pkt.real{background:var(--accent);box-shadow:0 0 9px -1px var(--accent)}
.pkt.b{animation-delay:1.1s}.pkt.c{animation-delay:2.2s}.pkt.d{animation-delay:.55s}
@keyframes travel{0%{left:-5%;opacity:0}12%{opacity:.9}88%{opacity:.9}100%{left:103%;opacity:0}}
.strip p{margin:16px 0 0;font-size:13.5px;color:var(--muted);text-align:center}
.strip p b{color:var(--accent);font-weight:600}

/* sections */
section{padding:56px 0 0}
h2{font-size:24px;margin:0 0 6px;letter-spacing:-.3px}
.sub{color:var(--muted);margin:0 0 26px;font-size:15px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:14px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px}
.card h3{font-size:15.5px;margin:0 0 7px;display:flex;align-items:center;gap:9px}
.card h3 .ic{font-family:var(--mono);color:var(--accent);font-size:13px}
.card p{margin:0;color:var(--muted);font-size:14px;line-height:1.6}

/* status note */
.note{margin-top:14px;background:linear-gradient(180deg,var(--panel),#0b1017);border:1px solid color-mix(in srgb,var(--warn) 30%,var(--line));border-radius:14px;padding:20px 22px}
.note h3{margin:0 0 6px;font-size:15.5px;color:var(--warn)}
.note p{margin:0;color:var(--muted);font-size:14px}
.note a{color:var(--accent)}

/* steps */
.steps{counter-reset:s;display:grid;gap:12px}
.step{display:flex;gap:14px;align-items:flex-start;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px}
.step::before{counter-increment:s;content:counter(s);font-family:var(--mono);font-size:12px;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:8px;min-width:28px;height:28px;display:grid;place-items:center;flex:none;margin-top:2px}
.step b{display:block;font-size:15px;margin-bottom:3px}
.step span{color:var(--muted);font-size:14px}

/* self host */
pre{background:#080b11;border:1px solid var(--line);border-radius:12px;padding:16px 18px;overflow-x:auto;font-family:var(--mono);font-size:13px;color:var(--text);margin:0}
pre .c{color:var(--dim)}

/* coming-soon curtain */
html.locked{overflow:hidden}
html.locked body>*:not(#soon){visibility:hidden}
.soon{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:24px;
  background:var(--bg);transition:opacity .4s ease}
.soon::before{content:"";position:absolute;inset:0;opacity:.16;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:48px 48px;mask-image:radial-gradient(circle at 50% 20%,#000,transparent 72%)}
.soon::after{content:"";position:absolute;left:50%;top:-160px;width:620px;height:620px;transform:translateX(-50%);
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 13%,transparent),transparent 62%);pointer-events:none}
.soon.gone{opacity:0;pointer-events:none}
html:not(.locked) .soon{display:none}
.soon-inner{position:relative;width:min(560px,100%);text-align:center}
.soon-mark{font-size:44px;color:var(--accent);line-height:1;margin-bottom:20px;
  filter:drop-shadow(0 0 26px color-mix(in srgb,var(--accent) 45%,transparent))}
.soon-chip{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:11.5px;
  text-transform:uppercase;letter-spacing:2px;color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 26%,var(--line));border-radius:999px;padding:7px 16px}
.soon-chip .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:nc-pulse 2.1s ease-in-out infinite}
@keyframes nc-pulse{0%,100%{opacity:1;box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 55%,transparent)}
  50%{opacity:.55;box-shadow:0 0 0 7px transparent}}
.soon h1{font-size:clamp(34px,7vw,52px);line-height:1.08;letter-spacing:-1.2px;margin:22px 0 0}
.soon h1 span{color:var(--accent)}
.soon .lede{color:var(--muted);font-size:16.5px;margin:16px auto 0;max-width:430px}
.soon-flow{display:flex;align-items:center;justify-content:center;gap:9px;margin:34px 0 30px}
.soon-flow i{width:9px;height:9px;border-radius:50%;background:var(--line);animation:nc-hop 2.4s ease-in-out infinite}
.soon-flow i:nth-child(2){animation-delay:.2s}
.soon-flow i:nth-child(3){animation-delay:.4s}
.soon-flow i:nth-child(4){animation-delay:.6s}
.soon-flow i:nth-child(5){animation-delay:.8s}
.soon-flow i:nth-child(6){animation-delay:1s}
.soon-flow i:nth-child(7){animation-delay:1.2s}
@keyframes nc-hop{0%,72%,100%{background:var(--line);transform:scale(1)}
  36%{background:var(--accent);transform:scale(1.45);box-shadow:0 0 16px color-mix(in srgb,var(--accent) 60%,transparent)}}
.soon-meta{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;margin-bottom:34px}
.soon-meta span{font-family:var(--mono);font-size:11px;color:var(--dim);border:1px solid var(--line);
  border-radius:999px;padding:5px 11px}
.soon-link{background:none;border:0;font-family:var(--mono);font-size:12.5px;color:var(--dim);cursor:pointer;
  padding:8px;text-decoration:underline;text-underline-offset:4px}
.soon-link:hover{color:var(--accent)}
.soon-form{width:min(340px,100%);margin:0 auto;text-align:left}
.soon-form label{display:block;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:1.5px;
  color:var(--dim);margin-bottom:8px}
.soon-row{display:flex;gap:8px}
.soon-row input{flex:1;min-width:0;background:#080b11;border:1px solid var(--line);border-radius:10px;color:var(--text);
  font-size:16px;padding:12px;font-family:var(--mono)}
.soon-row input:focus{outline:none;border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.soon-row button{border:0;border-radius:10px;padding:12px 18px;font-weight:700;font-family:var(--mono);font-size:13px;
  color:#04120f;background:linear-gradient(180deg,var(--accent),#2dd4bf);cursor:pointer}
.soon-row button:disabled{opacity:.6;cursor:default}
.soon-err{color:#fda4af;font-family:var(--mono);font-size:12px;margin:10px 0 0}
.soon.shake .soon-inner{animation:nc-shake .38s}
@keyframes nc-shake{10%,90%{transform:translateX(-2px)}30%,70%{transform:translateX(5px)}50%{transform:translateX(-7px)}}
@media (prefers-reduced-motion:reduce){
  .soon-chip .dot,.soon-flow i{animation:none}
  .soon-flow i:nth-child(4){background:var(--accent)}
  .soon.shake .soon-inner{animation:none}
}

/* footer */
footer{margin-top:70px;border-top:1px solid var(--line);padding:26px 0 44px;display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center}
footer a{font-family:var(--mono);font-size:12.5px;color:var(--muted);text-decoration:none}
footer a:hover{color:var(--accent)}
footer .sp{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--dim)}

/* Spacing that used to be set with a style="" attribute on the element. */
.sub.spaced { margin-top: 16px; }
.sub.spaced-lg { margin-top: 18px; }
