:root{ --bg:#050609; --ink:#eef1f7; --dim:#7d8598; --accent:#00e5ff; --pad:clamp(20px,3.4vw,54px); }
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:"Space Grotesk",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
canvas#c{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0;cursor:crosshair}
.grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.06;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

#pre{position:fixed;inset:0;z-index:20;background:var(--bg);display:flex;align-items:center;justify-content:center;gap:6px;
  font-family:"Space Mono",monospace;color:var(--ink);font-size:15px;letter-spacing:.05em;transition:opacity 1s ease}
#pre.done{opacity:0;visibility:hidden}
#pre i{color:var(--dim);font-style:normal;font-size:11px}
#pre em{position:absolute;bottom:9%;font-style:normal;font-size:10px;letter-spacing:.6em;color:var(--dim);text-indent:.6em}

/* ---------- giant ghosted scene-word (editorial background depth) ---------- */
.ghost{position:fixed;inset:0;z-index:4;pointer-events:none;display:flex;align-items:center;justify-content:center;
  mix-blend-mode:screen;opacity:0;transition:opacity 1.6s ease .6s}
.reveal .ghost{opacity:1}
.ghost span{font-family:"Space Grotesk",sans-serif;font-weight:700;letter-spacing:-.04em;
  font-size:34vw;line-height:1;color:rgba(120,150,180,.05);white-space:nowrap;
  transition:opacity .6s ease;user-select:none}

.hud{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;justify-content:space-between;align-items:center;
  padding:var(--pad);pointer-events:none;opacity:0;transform:translateY(-8px);transition:all 1.2s ease .3s}
.reveal .hud{opacity:1;transform:none}
.mk{font-weight:700;letter-spacing:.24em;font-size:15px}
.mk span{color:var(--accent);font-size:10px;vertical-align:top;margin-left:.1em}
.st{font-family:"Space Mono",monospace;font-size:10.5px;letter-spacing:.2em;color:var(--dim);display:flex;align-items:center;gap:8px}
.st i{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);animation:pl 2.4s ease-in-out infinite}
@keyframes pl{0%,100%{opacity:1}50%{opacity:.25}}

.rail{position:fixed;right:var(--pad);top:50%;transform:translateY(-50%);z-index:10;display:flex;flex-direction:column;gap:13px;opacity:0;transition:opacity 1s ease .6s}
.reveal .rail{opacity:1}
.rail span{width:7px;height:7px;border:1px solid var(--dim);border-radius:50%;opacity:.5;transition:all .5s}
.rail span.on{opacity:1;background:var(--accent);border-color:var(--accent);box-shadow:0 0 8px var(--accent)}

.scroll{position:relative;z-index:5}
.p{min-height:100vh;height:100dvh;padding:var(--pad);display:flex;flex-direction:column;justify-content:center;pointer-events:none}
.p:not([data-i="0"]){justify-content:flex-end;padding-bottom:11vh}
.p .tag{font-family:"Space Mono",monospace;font-size:10.5px;letter-spacing:.34em;color:var(--accent);margin-bottom:16px;opacity:.8}
.p h1,.p h2{font-weight:500;letter-spacing:-.02em;line-height:1.02;font-size:clamp(30px,4.4vw,62px);max-width:17ch}
.p em{font-style:normal;color:var(--accent)}
.p p{margin-top:18px;max-width:40ch;font-size:clamp(13.5px,1.05vw,16px);line-height:1.6;color:var(--dim);pointer-events:auto}
.p .sc{margin-top:34px;font-family:"Space Mono",monospace;font-size:10px;letter-spacing:.3em;color:var(--dim)}
.cta{margin-top:26px;display:inline-block;font-family:"Space Mono",monospace;font-size:13px;letter-spacing:.12em;color:var(--ink);
  text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:5px;pointer-events:auto;width:max-content}
.p[data-i="4"]{align-items:flex-start}

@media (max-width:820px){ .p h1,.p h2{font-size:clamp(27px,7vw,42px)} .p .tag{font-size:9.5px} .rail{right:13px} }
@media (prefers-reduced-motion:reduce){ *{transition-duration:.01ms!important;animation-duration:.01ms!important} }
