:root{
  --bg:#170B2E; --panel:#241046; --panel2:#2E1557;
  --primary:#67E8F9; --secondary:#FF5FC8; --accent:#FFD84D;
  --ultron:#FF3B5C; --sig:#5BFF9E; --lav:#C084FC;
  --text:#FFFFFF; --muted:#A99BC9;
  --fd:"Bungee",sans-serif; --fc:"Fredoka",sans-serif;
  --fb:"Quattrocento Sans",sans-serif; --fm:"Share Tech Mono",monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font-family:var(--fb);overflow:hidden}
.screen{position:absolute;inset:0;display:none;flex-direction:column;overflow:auto}
.screen.on{display:flex}
button{font-family:var(--fb);cursor:pointer}
.btn{font-family:var(--fd);letter-spacing:1px;font-size:17px;border:none;border-radius:14px;
  padding:14px 26px;color:#1a0733;background:linear-gradient(90deg,var(--secondary),var(--primary));
  transition:filter .15s,transform .06s}
.btn:hover{filter:brightness(1.12)} .btn:active{transform:translateY(1px)}
.btn.ghost{background:#ffffff14;color:var(--text)}
.btn.ghost:hover{background:#ffffff24}
.btn.gold{background:linear-gradient(90deg,var(--accent),var(--secondary))}
.btn:disabled{opacity:.35;cursor:default;filter:none}
.kick{font-size:11px;letter-spacing:3px;color:var(--secondary);text-transform:uppercase;font-weight:700;font-family:var(--fc)}
h1{font-family:var(--fd);color:var(--primary);margin:0;line-height:1.05;letter-spacing:0}
.wrap{max-width:900px;margin:auto;padding:34px 26px;width:100%}
.card{border-radius:16px;padding:15px 18px;margin:13px 0;font-size:16.5px;line-height:1.55}
.card .h{font-family:var(--fc);font-weight:600;font-size:15px;letter-spacing:1.2px;text-transform:uppercase;margin-bottom:6px}
.c-cy{background:rgba(103,232,249,.09);border:1px solid rgba(103,232,249,.42)} .c-cy .h{color:var(--primary)}
.c-mg{background:rgba(255,95,200,.10);border:1px solid rgba(255,95,200,.45)} .c-mg .h{color:var(--secondary)}
.c-yl{background:rgba(255,216,77,.10);border:1px solid rgba(255,216,77,.5)}  .c-yl .h{color:var(--accent)}
.c-rd{background:rgba(255,59,92,.10);border:1px solid rgba(255,59,92,.5)}    .c-rd .h{color:var(--ultron)}
.c-gn{background:rgba(91,255,158,.09);border:1px solid rgba(91,255,158,.42)} .c-gn .h{color:var(--sig)}
.c-gy{background:#ffffff0a;border:1px solid #ffffff1f}                       .c-gy .h{color:var(--muted)}
.card b{color:var(--primary)}
.card ul{margin:6px 0 0;padding-left:20px;line-height:1.7} .card li{margin:0}
a{color:var(--primary)}

/* ---------- GATE ---------- */
#gate .wrap,#gate2 .wrap{max-width:820px;text-align:center}
.lockicon{font-size:56px;margin-bottom:2px;line-height:1}
.codein{font-family:var(--fm);font-size:26px;letter-spacing:4px;text-align:center;text-transform:uppercase;
  width:100%;max-width:520px;padding:15px;border-radius:14px;background:#0d0520;color:var(--accent);
  border:2px solid #ffffff28;outline:none;margin:14px auto;display:block}
.codein:focus{border-color:var(--primary);box-shadow:0 0 22px rgba(103,232,249,.3)}
.codein.bad{border-color:var(--ultron);animation:shake .35s}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-9px)}75%{transform:translateX(9px)}}
.msg{min-height:24px;font-family:var(--fm);font-size:14.5px;letter-spacing:1px;margin-top:2px}
.keyrow{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:12px 0 4px}
.keychip{display:flex;align-items:center;gap:8px;background:#ffffff0d;border:1px solid #ffffff20;
  border-radius:999px;padding:7px 15px;font-size:14px}
.dotlamp{width:15px;height:15px;border-radius:50%;flex:none}
.morsetable{display:grid;grid-template-columns:repeat(auto-fit,minmax(84px,1fr));gap:5px;
  font-family:var(--fm);font-size:13.5px;margin-top:10px;text-align:left}
.morsetable div{background:#ffffff0a;border-radius:7px;padding:5px 9px;letter-spacing:1px}
.morsetable b{color:var(--accent);font-family:var(--fd);font-size:13px;margin-right:7px}
.fold{margin-top:14px}
.fold summary{cursor:pointer;color:var(--muted);font-size:14px;list-style:none;padding:9px;
  border:1px dashed #ffffff24;border-radius:10px}
.fold summary::-webkit-details-marker{display:none}
.fold summary:hover{color:var(--primary);border-color:var(--primary)}
.fold[open] summary{margin-bottom:10px}

/* ---------- BRIEF ---------- */
.typed{font-family:var(--fm);font-size:17.5px;line-height:1.7;color:var(--sig);white-space:pre-wrap;min-height:340px;
  text-shadow:0 0 9px rgba(91,255,158,.35)}
.cursor{display:inline-block;width:10px;height:19px;background:var(--sig);vertical-align:-3px;animation:bl .7s steps(1) infinite}
@keyframes bl{50%{opacity:0}}
.tvbox{border:1px solid rgba(91,255,158,.32);border-radius:16px;padding:20px 24px;background:#06140d;
  position:relative;overflow:hidden}
.tvbox:after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(180deg,rgba(255,255,255,.05) 0 1px,transparent 1px 3px)}

/* ---------- PHASE MAP ---------- */
.weeklabel{font-family:var(--fc);font-weight:600;font-size:13px;letter-spacing:2px;color:var(--muted);
  text-transform:uppercase;margin:16px 0 6px}
.map{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:10px}
.mstep{border-radius:14px;padding:11px;border:1px solid #ffffff1c;background:#ffffff08;text-align:center}
.mstep .n{font-family:var(--fd);font-size:21px;color:var(--secondary);line-height:1.1}
.mstep .t{font-family:var(--fc);font-weight:600;font-size:14.5px;letter-spacing:.5px;color:var(--primary);margin-top:3px}
.mstep .d{font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.35}
.mstep .v{font-family:var(--fm);font-size:10.5px;color:var(--accent);letter-spacing:2px;margin-top:5px}
.mstep.done{border-color:rgba(91,255,158,.5);background:rgba(91,255,158,.08)}
.mstep.done .n:after{content:" ✓";color:var(--sig);font-size:16px}
.mstep.now{border-color:var(--accent);background:rgba(255,216,77,.1);box-shadow:0 0 16px rgba(255,216,77,.14)}

/* ---------- PHASE READER ---------- */
#reader{display:none;flex-direction:column;position:absolute;inset:0}
#reader.on{display:flex}
.rhead{display:flex;align-items:center;gap:16px;padding:11px 150px 11px 20px;border-bottom:1px solid #ffffff14;background:#1d0c3a;flex:none}
.rhead h1{font-size:19px}
.prog{margin-left:auto;display:flex;align-items:center;gap:12px;min-width:210px}
.progbar{flex:1;height:8px;border-radius:6px;background:#ffffff14;overflow:hidden}
.progfill{height:100%;width:0;background:linear-gradient(90deg,var(--secondary),var(--primary));transition:width .35s}
.progtxt{font-family:var(--fd);font-size:13px;color:var(--muted);letter-spacing:1px;white-space:nowrap}
.rbody{flex:1;overflow:auto;min-height:0}
.rinner{max-width:820px;margin:0 auto;padding:26px 26px 40px}
.rphase{font-size:11px;letter-spacing:3px;text-transform:uppercase;font-weight:700;font-family:var(--fc)}
.rtitle{font-family:var(--fd);font-size:31px;line-height:1.1;margin:4px 0 12px;color:var(--text)}
.rbody p{margin:0 0 11px;font-size:17px;line-height:1.6}
.rbody p b{color:var(--primary)}
.rfoot{display:flex;gap:10px;padding:12px 20px;border-top:1px solid #ffffff14;background:var(--panel2);flex:none;align-items:center}
.rfoot .btn{font-size:16px;padding:12px 22px}
.rfoot .spacer{flex:1}
kbd{font-size:11px;color:var(--muted);border:1px solid #ffffff22;border-radius:4px;padding:1px 5px}
.linkbtn{background:none;border:none;color:var(--muted);font-size:12.5px;text-decoration:underline;padding:6px}
.linkbtn:hover{color:var(--primary)}

pre.code{background:#0d0520;border:1px solid #ffffff1c;border-left:3px solid var(--primary);
  border-radius:10px;padding:13px 15px;overflow-x:auto;font-family:var(--fm);font-size:14px;
  line-height:1.6;color:#D9F6FF;margin:12px 0}
pre.code .cm{color:#8A7CB0}
pre.code .hi{color:var(--accent)}
code.inline{font-family:var(--fm);background:#ffffff14;border:1px solid #ffffff20;border-radius:6px;
  padding:1px 6px;font-size:.92em;color:var(--accent)}

table.wire{width:100%;border-collapse:collapse;margin:12px 0;font-size:15.5px}
table.wire th{text-align:left;font-family:var(--fc);font-weight:600;font-size:12px;letter-spacing:1.5px;
  text-transform:uppercase;color:var(--muted);padding:6px 10px;border-bottom:1px solid #ffffff20}
table.wire td{padding:8px 10px;border-bottom:1px solid #ffffff12}
table.wire tr:last-child td{border-bottom:none}
table.wire td:first-child{font-family:var(--fm);color:var(--primary);white-space:nowrap}
table.wire td:nth-child(2){font-family:var(--fm);color:var(--accent);white-space:nowrap}
table.wire tr.trap td{background:rgba(255,59,92,.11)}
table.wire tr.trap td:nth-child(2){color:var(--ultron);font-weight:700}

.dl{display:flex;flex-wrap:wrap;gap:9px;margin:12px 0 4px}
.dl a{display:inline-flex;align-items:center;gap:7px;background:#ffffff10;border:1px solid #ffffff22;
  border-radius:10px;padding:9px 14px;font-size:14.5px;text-decoration:none;color:var(--text)}
.dl a:hover{border-color:var(--accent);background:#ffffff18}
.dl a b{color:var(--accent);font-weight:400}

/* ---------- END / MEDALS ---------- */
#end .wrap{text-align:center;max-width:840px}
.medal{font-size:72px;line-height:1}
.confetti{position:fixed;inset:0;pointer-events:none;z-index:60}

/* ---------- TRAILER ---------- */
#trailer{background:#000}
.trailerwrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
#tcv{width:100%;height:100%;object-fit:contain;display:block}
.tctl{position:absolute;bottom:16px;right:20px;display:flex;gap:10px;align-items:center;z-index:4}
.soundbtn{background:#ffffff14;border:1px solid #ffffff30;color:var(--text);border-radius:9px;padding:8px 13px;font-size:13px}
.gowrap{position:absolute;left:0;right:0;bottom:11%;display:flex;justify-content:center;z-index:5;
  opacity:0;pointer-events:none;transition:opacity .7s}
.gowrap.on{opacity:1;pointer-events:auto}
.gobtn{font-family:var(--fd);font-size:44px;letter-spacing:6px;color:#fff;border:none;border-radius:22px;
  padding:16px 72px;background:linear-gradient(135deg,#FF5FC8,#C084FC 55%,#67E8F9);
  box-shadow:0 0 30px rgba(255,95,200,.75),0 0 90px rgba(192,132,252,.55),inset 0 0 22px rgba(255,255,255,.28);
  animation:gopulse 1.7s ease-in-out infinite;text-shadow:0 0 18px rgba(255,255,255,.55)}
.gobtn:hover{filter:brightness(1.14)}
@keyframes gopulse{0%,100%{transform:scale(1)}50%{transform:scale(1.055)}}

/* ---------- MUSIC TOGGLE ---------- */
#musicbtn{position:fixed;top:12px;right:14px;z-index:55;background:#ffffff12;border:1px solid #ffffff22;
  color:var(--muted);border-radius:999px;padding:7px 13px;font-size:13px;font-family:var(--fc)}
#musicbtn:hover{color:var(--text);border-color:var(--secondary)}

@media(max-width:700px){
  .rtitle{font-size:25px}
  .rhead h1{font-size:16px}
  .prog{min-width:120px}
  .wrap{padding:26px 18px}
}

/* ══════════════════════════════════════════════════════════════
   MULTI-PAGE SHELL
   Each phase is its own HTML page now, so the old absolutely
   positioned .screen system is gone — pages just scroll.
   ══════════════════════════════════════════════════════════════ */
body{overflow:auto}
.screen{position:static;display:flex}
.page{min-height:100%;display:flex;flex-direction:column}
.savedtag{position:fixed;bottom:12px;left:14px;z-index:70;font-size:11.5px;color:var(--muted);
  background:#1d0c3acc;border:1px solid #ffffff1c;border-radius:8px;padding:5px 10px;
  opacity:0;transition:opacity .35s;pointer-events:none}
.msg.ok{color:var(--sig)} .msg.bad{color:var(--ultron)}
a.btn{display:inline-block;text-decoration:none}
.topbar{display:flex;align-items:center;gap:14px;padding:10px 20px;border-bottom:1px solid #ffffff14;
  background:#1d0c3a;position:sticky;top:0;z-index:20}
.topbar a{color:var(--muted);text-decoration:none;font-size:13px;font-family:var(--fc)}
.topbar a:hover{color:var(--primary)}
.topbar .brand{font-family:var(--fd);font-size:14px;color:var(--primary);letter-spacing:1px}
.topbar .sp{flex:1}
a.mstep{text-decoration:none;display:block;transition:transform .12s,border-color .12s}
a.mstep:hover{transform:translateY(-2px);border-color:var(--primary)}
.mstep.locked{opacity:.55}
.mstep.locked .t:after{content:" 🔒";font-size:11px}

/* reader shell on a normal scrolling page */
#reader{position:static;display:flex;min-height:100vh}
.rbody{overflow:visible}
.director{text-align:center;max-width:760px}
.rfoot{position:sticky;bottom:0}

/* ══════════════════════════════════════════════════════════════
   LIZARD SPHERE Y — the comic
   ══════════════════════════════════════════════════════════════ */
.comicwrap{max-width:1000px;margin:0 auto;padding:20px 18px 60px;width:100%}
.chead{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:6px 0 14px}
.chead h1{font-size:30px;color:var(--accent)}
.chead .cnum{font-family:var(--fm);font-size:13px;color:var(--muted);letter-spacing:2px;margin-left:auto}
.logo{font-family:var(--fd);font-size:15px;letter-spacing:1px;color:var(--secondary)}

.strip{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.panel{position:relative;margin:0;border:3px solid #0B0518;border-radius:6px;overflow:hidden;
  background:#0d0520;box-shadow:0 4px 0 #0B0518,0 0 0 1px #ffffff14;aspect-ratio:4/3}
.panel.wide{grid-column:1 / -1;aspect-ratio:16/7}
.panel .art{position:absolute;inset:0;width:100%;height:100%;display:block}
.panel.burstpanel{border-color:var(--accent);box-shadow:0 4px 0 #0B0518,0 0 22px rgba(255,216,77,.35)}

.narr{position:absolute;left:0;top:0;max-width:74%;background:var(--accent);color:#20102e;
  font-family:var(--fc);font-weight:600;font-size:13.5px;line-height:1.35;padding:7px 11px;
  border-right:3px solid #0B0518;border-bottom:3px solid #0B0518;border-bottom-right-radius:8px}

.bub{position:absolute;max-width:56%;background:var(--text);color:#1a0733;border:3px solid #0B0518;
  border-radius:16px;padding:9px 12px;font-size:14px;line-height:1.4;box-shadow:2px 3px 0 #0B0518}
.bub b{display:block;font-family:var(--fd);font-size:10.5px;letter-spacing:1px;color:#7A3AA8;margin-bottom:3px}
.bub:after{content:"";position:absolute;width:0;height:0;border:11px solid transparent}
.bub.tl{left:10px;top:10px}          .bub.tl:after{left:24px;bottom:-21px;border-top-color:#0B0518}
.bub.tr{right:10px;top:10px}         .bub.tr:after{right:24px;bottom:-21px;border-top-color:#0B0518}
.bub.bl{left:10px;bottom:10px}       .bub.bl:after{left:24px;top:-21px;border-bottom-color:#0B0518}
.bub.br{right:10px;bottom:10px}      .bub.br:after{right:24px;top:-21px;border-bottom-color:#0B0518}
.bub.cute{background:#FFE9F7;border-color:#B0246F} .bub.cute b{color:#B0246F}
.bub.cute:after{border-top-color:#B0246F;border-bottom-color:#B0246F}
.bub.evil{background:#2A0A18;color:#FFD9E0;border-color:var(--ultron);font-family:var(--fd);
  font-size:12px;letter-spacing:.4px;line-height:1.5}
.bub.evil b{color:var(--ultron)}
.bub.evil:after{border-top-color:var(--ultron);border-bottom-color:var(--ultron)}

.sfx{position:absolute;font-family:var(--fd);font-size:30px;color:var(--accent);
  -webkit-text-stroke:3px #0B0518;paint-order:stroke fill;pointer-events:none;
  text-shadow:3px 4px 0 rgba(0,0,0,.45)}

.cnav{display:flex;align-items:center;gap:12px;margin-top:20px;flex-wrap:wrap}
.cnav .sp{flex:1}
.cdots{display:flex;gap:7px}
.dot{width:30px;height:30px;border-radius:50%;border:2px solid #ffffff2a;display:grid;place-items:center;
  font-family:var(--fm);font-size:12px;color:var(--muted);text-decoration:none}
.dot:hover{border-color:var(--primary);color:var(--primary)}
.dot.on{background:var(--secondary);border-color:var(--secondary);color:#1a0733;font-weight:700}

@media(max-width:720px){
  .strip{grid-template-columns:1fr}
  .panel,.panel.wide{aspect-ratio:4/3}
  .bub{max-width:70%;font-size:13px}
  .chead h1{font-size:22px}
  .sfx{font-size:22px}
}

#musicbtn.inbar{position:static;margin-left:6px}
.topbar{padding-right:14px}
/* art that must not be cropped sits on the panel's own background */
.panel .art.fit{background:#0d0520}

/* toolbox tables inside mission steps */
table.tools{width:100%;border-collapse:collapse;margin:4px 0 0}
table.tools td{padding:6px 0;vertical-align:top;border-bottom:1px solid #ffffff10;font-size:15.5px;line-height:1.5}
table.tools tr:last-child td{border-bottom:none}
table.tools td:first-child{width:38%;padding-right:14px;white-space:nowrap}
@media(max-width:640px){
  table.tools td{display:block;border-bottom:none;padding:3px 0}
  table.tools td:first-child{width:auto}
  table.tools tr{display:block;border-bottom:1px solid #ffffff10;padding:6px 0}
}
