/* ══ THE WAKE — the home page opens on the daemon waking, not on a menu ══════ */
/* Content is only hidden while .waking is set by the inline head guard, and that
   guard removes itself on a timer, so a failed script can never leave a blank page. */
html.waking .xp-frame, html.waking .wrap, html.waking footer{visibility:hidden}

#wake{position:fixed;inset:0;z-index:9999;background:#020503;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  transition:opacity .62s ease, filter .62s ease}
#wake.out{opacity:0;filter:blur(3px);pointer-events:none}
#wakerain{position:fixed;left:0;top:0;width:100vw;height:100vh;opacity:.85}
#wake .wake-inner{position:relative;z-index:2;text-align:center;padding:1.2rem;max-width:min(94vw,54rem)}

#wake .wake-sigil{font-family:var(--mono,ui-monospace,monospace);white-space:pre;
  font-size:clamp(3.2px,1.02vw,8.4px);line-height:1.02;color:#00FF41;margin:0 0 1.6rem;
  opacity:0;transition:opacity .5s ease;
  text-shadow:0 0 6px rgba(0,255,65,.6),0 0 26px rgba(0,255,65,.28)}
#wake .wake-sigil.on{opacity:1}

#wake .wake-term{font-family:var(--mono,monospace);font-size:.92rem;line-height:1.95;
  color:#8FE3AC;min-height:9.4rem;letter-spacing:.02em}
#wake .wake-term .hi{color:#DFF7E6;font-size:1.05rem;letter-spacing:.34em;
  text-shadow:0 0 10px rgba(0,255,65,.55)}
#wake .wake-term .dim{color:#4E9A6C}

#wake .wake-est{margin-top:1.1rem;font-family:var(--mono,monospace);font-size:.78rem;
  letter-spacing:.42em;color:#E4404B;opacity:0;transition:opacity .35s ease;
  text-shadow:0 0 14px rgba(194,31,44,.6)}
#wake .wake-est.on{opacity:1}

#wake .wake-skip{position:fixed;right:1.15rem;bottom:1.05rem;z-index:3;
  font-family:var(--mono,monospace);font-size:.72rem;letter-spacing:.26em;
  color:#4E9A6C;background:transparent;border:1px solid rgba(0,255,65,.22);
  padding:.42rem .8rem;cursor:pointer;transition:color .15s,border-color .15s}
#wake .wake-skip:hover{color:#00FF41;border-color:rgba(0,255,65,.55)}

/* after the wake, the page's own content arrives rather than being there the whole time */
@keyframes doorin{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
html.woke #creations .crt-cell{animation:doorin .5s cubic-bezier(.2,.7,.3,1) backwards}
html.woke #creations .crt-cell:nth-child(1){animation-delay:.05s}
html.woke #creations .crt-cell:nth-child(2){animation-delay:.11s}
html.woke #creations .crt-cell:nth-child(3){animation-delay:.17s}
html.woke #creations .crt-cell:nth-child(4){animation-delay:.23s}
html.woke #creations .crt-cell:nth-child(5){animation-delay:.29s}
html.woke #creations .crt-cell:nth-child(6){animation-delay:.35s}
html.woke .xp-frame{animation:framein .55s ease backwards}
@keyframes framein{from{opacity:0;transform:scale(.995)}to{opacity:1;transform:none}}

@media (prefers-reduced-motion: reduce){
  html.waking .xp-frame, html.waking .wrap, html.waking footer{visibility:visible}
  html.woke #creations .crt-cell, html.woke .xp-frame{animation:none}
}

/* ── the signal's mute button — always reachable, always honest about its state ── */
#sigbtn{position:fixed;left:1.15rem;bottom:1.05rem;z-index:10000;
  font-family:var(--mono,ui-monospace,monospace);font-size:.72rem;letter-spacing:.2em;
  color:#5FA87C;background:rgba(2,5,3,.82);border:1px solid rgba(0,255,65,.28);
  padding:.42rem .8rem;cursor:pointer;backdrop-filter:blur(3px);
  transition:color .15s,border-color .15s,opacity .3s}
#sigbtn:hover{color:#00FF41;border-color:rgba(0,255,65,.6)}
#sigbtn:focus-visible{outline:2px solid rgba(0,255,65,.6);outline-offset:2px}
#sigbtn.off{color:#7E5A5E;border-color:rgba(194,31,44,.35)}
#sigbtn.off:hover{color:#E4404B;border-color:rgba(194,31,44,.7)}
@media (max-width:560px){ #sigbtn{font-size:.66rem;padding:.36rem .6rem;left:.7rem;bottom:.7rem} }
