:root{
  --void:#000;--ink:#e8ecf1;--dim:#8a929c;--line:rgba(232,236,241,.14);--cyan:#5ef2ff;--cyan-dim:rgba(94,242,255,.22);
  --display:"Michroma",system-ui,sans-serif;--body:"Saira",system-ui,sans-serif;--mono:"Azeret Mono",ui-monospace,monospace;
  --gut:clamp(18px,3vw,48px);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:var(--void)}
body{color:var(--ink);font:300 17px/1.5 var(--body);overflow:hidden;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.mono{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase}
:focus-visible{outline:1px solid var(--cyan);outline-offset:4px}

.hero{position:relative;height:100vh;height:100svh;min-height:560px;overflow:hidden;cursor:crosshair}
.stage{position:absolute;inset:0}
.stage canvas{position:absolute;inset:0;width:100%!important;height:100%!important;opacity:0;transition:opacity 1.4s ease}
.stage.ready canvas{opacity:1}
.poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity 1.4s ease}
.stage.ready .poster{opacity:0}

/* everything layered over the scene lets the pointer through, except real controls */
.frame,.cross,.word,.hud,.hint,.intro{pointer-events:none}
.nav,.cta{pointer-events:auto}

.frame i{position:absolute;width:22px;height:22px;border:1px solid var(--line)}
.frame i:nth-child(1){top:var(--gut);left:var(--gut);border-right:0;border-bottom:0}
.frame i:nth-child(2){top:var(--gut);right:var(--gut);border-left:0;border-bottom:0}
.frame i:nth-child(3){bottom:var(--gut);left:var(--gut);border-right:0;border-top:0}
.frame i:nth-child(4){bottom:var(--gut);right:var(--gut);border-left:0;border-top:0}

.cross{position:absolute;inset:0;opacity:0;transition:opacity .4s}
.cross.on{opacity:1}
.cross-x,.cross-y{position:absolute;background:var(--cyan-dim)}
.cross-x{left:0;right:0;height:1px;top:0;transform:translateY(var(--cy,50vh))}
.cross-y{top:0;bottom:0;width:1px;left:0;transform:translateX(var(--cx,50vw))}
.cross-tag{position:absolute;left:0;top:0;transform:translate(calc(var(--cx,50vw) + 14px),calc(var(--cy,50vh) + 12px));color:var(--cyan);font-size:10px;white-space:nowrap}

.nav{position:absolute;top:calc(var(--gut) + 14px);left:calc(var(--gut) + 30px);right:calc(var(--gut) + 30px);z-index:5;display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{font:400 15px/1 var(--display);letter-spacing:.18em}
.brand sup{font-size:8px;margin-left:2px;color:var(--dim)}
.nav nav{display:flex;gap:30px}
.nav nav a{font-size:14px;color:var(--dim);transition:color .3s}
.nav nav a:hover,.nav nav a:focus-visible{color:var(--ink)}
.nav-cta{white-space:nowrap;font:500 13px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;padding:12px 18px;border:1px solid var(--line);transition:border-color .3s,color .3s,background .3s}
.nav-cta:hover,.nav-cta:focus-visible{border-color:var(--cyan);color:var(--cyan);background:rgba(94,242,255,.06)}

/* the word is split around the figure: NULL on the left, FORM on the right */
.word{position:absolute;left:0;right:0;top:41%;transform:translateY(-50%);display:flex;justify-content:space-between;padding:0 calc(var(--gut) + 26px);font:400 clamp(48px,9.6vw,184px)/1 var(--display);letter-spacing:-.02em;z-index:2}
.word span{display:flex}
.word i{font-style:normal;display:inline-block;min-width:.6em;text-align:center;transition:color .25s,text-shadow .25s}
.word i.hot{color:var(--cyan);text-shadow:0 0 18px rgba(94,242,255,.55)}

.intro{position:absolute;left:calc(var(--gut) + 30px);bottom:calc(var(--gut) + 26px);max-width:400px;z-index:3}
.kicker{display:flex;align-items:center;gap:10px;color:var(--dim);margin-bottom:16px}
.dot{width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 10px var(--cyan);animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{opacity:.25}}
.lede{font-size:18px;color:var(--ink);margin-bottom:22px}
.cta{display:inline-flex;gap:14px;align-items:center;font:500 13px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;padding:16px 22px;background:var(--ink);color:#000;transition:background .3s,gap .3s}
.cta:hover,.cta:focus-visible{background:var(--cyan);gap:22px}

.hud{position:absolute;right:calc(var(--gut) + 30px);bottom:calc(var(--gut) + 26px);width:230px;border-top:1px solid var(--line);z-index:3}
.hud p{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);color:var(--dim)}
.hud b{font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums}
.hud .hud-state{color:var(--dim)}
.hud.locked .hud-state{color:var(--cyan)}
.hint{position:absolute;left:50%;bottom:calc(var(--gut) + 30px);transform:translateX(-50%);color:var(--dim);z-index:3;transition:opacity .6s}
.hint.gone{opacity:0}

@media (max-width:900px){
  .nav nav{display:none}
  .nav{left:calc(var(--gut) + 16px);right:calc(var(--gut) + 16px)}
  .word{top:17%;transform:none;flex-direction:column;align-items:flex-start;gap:0;font-size:clamp(44px,16vw,96px);padding:0 calc(var(--gut) + 14px)}
  .word-r{align-self:flex-end}
  .intro{left:calc(var(--gut) + 16px);right:calc(var(--gut) + 16px);bottom:calc(var(--gut) + 18px);max-width:none}
  .lede{font-size:15px;max-width:300px}
  .hud{display:none}
  .nav-cta{font-size:11px;padding:10px 12px}
  .hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:46%;background:linear-gradient(transparent,rgba(0,0,0,.82) 55%);pointer-events:none;z-index:2}
  .hint{display:none}
}
@media (prefers-reduced-motion:reduce){.dot{animation:none}.cross{display:none}}
