:root{--bg:#0d0b14;--panel:#1a1626;--panel-2:#241e34;--line:#3b3252;--ink:#efe6d3;--muted:#a89fbf;--gold:#f3d64e;--red:#d93b3b;--green:#4fcf7a;--blue:#5b9bff;--parchment:#f1e3bd;--parchment-ink:#3a2a14;--font-pixel:"Press Start 2P", monospace;--font-mono:"VT323", monospace}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:var(--font-mono);margin:0;font-size:20px}button{font-family:var(--font-pixel);cursor:pointer;border:3px solid var(--ink);background:var(--panel-2);color:var(--ink);padding:10px 14px;font-size:11px;box-shadow:4px 4px #000}button:hover{background:var(--line)}button:active{transform:translate(2px,2px);box-shadow:2px 2px #000}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--gold);color:#1a1208;border-color:#1a1208}button.primary:hover{background:#ffe66d}button.danger{background:var(--red);border-color:#1a0808}button.ghost{box-shadow:none;border-color:var(--line);color:var(--muted);background:0 0;padding:6px 10px}input,textarea{font-family:var(--font-mono);color:var(--ink);border:3px solid var(--line);background:#0f0c18;width:100%;padding:8px 10px;font-size:20px}input:focus,textarea:focus{border-color:var(--gold);outline:none}textarea{resize:vertical;min-height:150px;line-height:1.2}#app{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:3px solid var(--line);background:var(--panel);align-items:center;gap:16px;padding:10px 16px;display:flex}.topbar .title{font-family:var(--font-pixel);color:var(--gold);letter-spacing:1px;font-size:14px}.topbar .level{font-family:var(--font-pixel);color:var(--muted);font-size:10px}.topbar .spacer{flex:1}.badge{font-family:var(--font-pixel);border:2px solid var(--line);color:var(--muted);padding:5px 8px;font-size:8px}.badge.live{color:var(--green);border-color:var(--green)}.badge.mock{color:var(--gold);border-color:var(--gold)}.layout{flex:1;grid-template-columns:300px 1fr;min-height:0;display:grid}.sidebar{border-right:3px solid var(--line);background:var(--panel);flex-direction:column;min-height:0;display:flex}.sidebar h2,.editor h2,.scroll h2{font-family:var(--font-pixel);color:var(--muted);letter-spacing:1px;margin:0;padding:12px 14px 8px;font-size:10px}.skill-list{flex-direction:column;flex:1;gap:8px;padding:0 10px 10px;display:flex;overflow:auto}.skill-card{border:3px solid var(--line);background:var(--panel-2);cursor:pointer;padding:8px 10px;transition:border-color .15s,background .15s;position:relative}.skill-card:hover{border-color:var(--muted)}.skill-card.selected{border-color:var(--gold)}.skill-card.checking{border-color:var(--gold);background:#3a3010;animation:.5s infinite alternate pulse}.skill-card.active{border-color:var(--green);background:#10301c}.skill-card.used{border-color:var(--line)}.skill-card.used .state{color:var(--muted)}.skill-card.selected{border-color:var(--gold)!important;background:#2e2812!important}.skill-card.selected .state{color:var(--gold)}.skill-card .rule{color:var(--ink);font-size:18px;line-height:1.1}.skill-card .preview{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:15px;overflow:hidden}.skill-card .state{font-family:var(--font-pixel);background:var(--panel);border:2px solid;padding:3px 5px;font-size:7px;position:absolute;top:-8px;right:6px}.skill-card.checking .state{color:var(--gold)}.skill-card.active .state{color:var(--green)}.skill-card.unknown{border-color:var(--red)}@keyframes pulse{0%{filter:brightness()}to{filter:brightness(1.5)}}.sidebar .actions{border-top:3px solid var(--line);gap:8px;padding:10px;display:flex}.empty{color:var(--muted);padding:8px 14px;font-size:17px;line-height:1.2}.main{flex-direction:column;min-height:0;display:flex}.stage{border-bottom:3px solid var(--line);background:#000;flex:none;position:relative}.stage canvas{width:min(100%,92.4444vh);height:auto;image-rendering:pixelated;image-rendering:crisp-edges;margin:0 auto;display:block}.bubble{color:#1a1208;opacity:0;pointer-events:none;z-index:1;background:#fffdf5;border:3px solid #1a1208;max-width:38%;padding:8px 12px;font-size:19px;line-height:1.15;transition:opacity .2s;position:absolute;transform:translateY(-100%);box-shadow:4px 4px #00000080}.bubble.front{z-index:2}.bubble.show{opacity:1}.bubble:after{content:"";left:var(--tail,50%);border:6px solid #0000;border-top-color:#1a1208;width:0;height:0;position:absolute;bottom:-12px;transform:translate(-50%)}.bubble.gate{background:#ffe9d6;max-width:36%}.bubble.knight{background:#e4f0ff}.bubble .who{font-family:var(--font-pixel);color:#6b5a3a;margin-bottom:4px;font-size:8px;display:block}.bubble .cursor{vertical-align:-2px;background:#1a1208;width:8px;height:16px;animation:.6s infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.verdict{font-family:var(--font-pixel);opacity:0;background:#000000bf;border:3px solid;padding:8px 14px;font-size:12px;transition:opacity .3s;position:absolute;top:14px;left:50%;transform:translate(-50%)}.verdict.show{opacity:1}.verdict.pass{color:var(--green);border-color:var(--green)}.verdict.fail{color:var(--red);border-color:var(--red)}.bottom{flex:1;grid-template-columns:1fr 1fr;min-height:0;display:grid}.scroll{border-right:3px solid var(--line);flex-direction:column;min-height:0;display:flex}.scroll .parchment{background:var(--parchment);color:var(--parchment-ink);white-space:pre-wrap;border:3px solid #8a6a3a;flex:1;margin:0 14px 14px;padding:14px 16px;font-size:19px;line-height:1.15;overflow:auto;box-shadow:inset 0 0 0 3px #d9c38f,4px 4px #00000080}.scroll .parchment .gate-intro{color:#6b4a1a;margin-bottom:10px;font-style:italic}.scroll .hint{color:var(--muted);padding:0 14px 12px;font-size:16px;line-height:1.2}.scroll .hint b{color:var(--gold)}.editor{flex-direction:column;min-height:0;padding-bottom:12px;display:flex}.editor .fields{flex-direction:column;flex:1;gap:8px;min-height:0;padding:0 14px;display:flex}.editor label{font-family:var(--font-pixel);color:var(--muted);justify-content:space-between;font-size:8px;display:flex}.editor textarea{flex:1;min-height:90px}.editor .row{align-items:center;gap:8px;padding:10px 14px 0;display:flex}.editor .row .spacer{flex:1}.counter{color:var(--muted)}.counter.over{color:var(--red)}.overlay{z-index:10;background:#05030ae0;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.card{background:var(--panel);border:4px solid var(--ink);width:100%;max-width:760px;max-height:92vh;padding:28px 32px;overflow:auto;box-shadow:8px 8px #000}.card h1{font-family:var(--font-pixel);color:var(--gold);text-shadow:3px 3px #000;margin:0 0 18px;font-size:22px;line-height:1.5}.card h1.red{color:var(--red)}.card h1.green{color:var(--green)}.card p{margin:0 0 12px;font-size:21px;line-height:1.25}.card .sub{color:var(--muted)}.card .buttons{flex-wrap:wrap;gap:12px;margin-top:20px;display:flex}.card ul{margin:0 0 12px;padding-left:22px;line-height:1.3}.card .reason{border:3px solid var(--red);color:#ffd6d6;background:#2a1414;padding:10px 12px}.card .lesson{border:3px solid var(--green);color:#d6ffe4;background:#10301c;padding:10px 12px}.title-art{width:100%;image-rendering:pixelated;border:3px solid var(--line);margin-bottom:18px}.rules{grid-template-columns:1fr 1fr;gap:12px;margin:14px 0;display:grid}.rules div{border:3px solid var(--line);background:var(--panel-2);padding:10px 12px;font-size:18px;line-height:1.2}.rules b{color:var(--gold);font-family:var(--font-pixel);margin-bottom:6px;font-size:9px;display:block}.blink{animation:1s infinite blink}.levels{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.levels span{font-family:var(--font-pixel);border:2px solid var(--line);color:var(--muted);padding:6px 8px;font-size:9px}.levels span.done{color:var(--green);border-color:var(--green)}.levels span.now{color:var(--gold);border-color:var(--gold)}@media (max-width:1000px){.layout{grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:3px solid var(--line);max-height:30vh}.bottom{grid-template-columns:1fr}.bubble{max-width:60%;font-size:16px}}.layout.play{grid-template-columns:300px 1fr}.main .log{flex-direction:column;flex:1;gap:6px;min-height:0;padding:12px 16px;display:flex;overflow:auto}.log .line{grid-template-columns:170px 1fr;gap:10px;font-size:18px;line-height:1.15;display:grid}.log .line .who{font-family:var(--font-pixel);color:var(--muted);padding-top:4px;font-size:8px}.log .line.gate .who{color:#e8a060}.log .line.knight .who{color:#7fb0ff}.log .line.pass .who{color:var(--green)}.log .line.fail .who{color:var(--red)}.log .line.level{font-family:var(--font-pixel);color:var(--gold);border-top:2px solid var(--line);grid-template-columns:1fr;margin-top:8px;padding-top:8px;font-size:10px}.log .line.fast{color:var(--muted);font-style:italic}.main .bar{border-top:3px solid var(--line);background:var(--panel);align-items:center;gap:10px;padding:10px 16px;display:flex}.main .bar .spacer{flex:1}.main .bar .frontier{font-family:var(--font-pixel);color:var(--muted);font-size:9px}.banner{text-align:center;font-family:var(--font-pixel);color:var(--gold);opacity:0;pointer-events:none;background:#000000b3;padding:8px;font-size:11px;transition:opacity .3s;position:absolute;top:0;left:0;right:0}.banner.show{opacity:1}.banner.warn{color:var(--red)}.deathscreen{background:var(--bg);flex:1;min-height:0;display:flex}.death{flex:1;grid-template-rows:auto 1fr;min-height:0;display:grid;overflow:hidden}.death .head{border-bottom:3px solid var(--line);background:var(--panel);align-items:center;gap:24px;padding:26px 32px 20px;display:flex}.death .head h1{font-family:var(--font-pixel);color:var(--red);text-shadow:3px 3px #000;margin:0 0 8px;font-size:20px;line-height:1.5}.death .head h1.gold{color:var(--gold)}.death .head h1.green{color:var(--green)}.death .head h1 .dim{color:var(--muted);text-shadow:none;font-size:10px}.death .head p.sub{color:var(--muted);max-width:900px;margin:0;font-size:21px;line-height:1.25}.death .body{grid-template-columns:minmax(380px,5fr) 6fr;min-height:0;display:grid;overflow:hidden}.death .col{flex-direction:column;min-height:0;padding:6px 0 20px;display:flex}.death .col.gate{border-right:3px solid var(--line);overflow:auto}.death .col h2{font-family:var(--font-pixel);color:var(--muted);letter-spacing:1px;margin:0;padding:18px 28px 10px;font-size:9px}.death .col h2 .dim{color:var(--line)}.death .colhead{justify-content:space-between;align-items:center;padding-right:24px;display:flex}.death .transcript{flex-direction:column;gap:10px;margin:0 28px;font-size:19px;line-height:1.25;display:flex}.death .transcript .tag{font-family:var(--font-pixel);color:var(--muted);margin-bottom:3px;font-size:7px;display:block}.death .transcript .q{color:#e8c0a0}.death .transcript .a{color:#b8d0ff}.death .transcript .why{color:#ff9a9a;border-left:3px solid var(--red);padding-left:10px;font-size:17px}.death .parchment{background:var(--parchment);color:var(--parchment-ink);white-space:pre-wrap;border:3px solid #8a6a3a;margin:0 28px;padding:14px 16px;font-size:18px;line-height:1.15;box-shadow:inset 0 0 0 3px #d9c38f}.death .hintbox{padding:12px 28px 0}.death .hintbox .hint{color:var(--gold);border-left:3px solid var(--gold);padding-left:10px;font-size:17px;line-height:1.2}.death .skill-list.compact{scrollbar-color:var(--gold) #0f0c18;scrollbar-width:auto;border-right:3px solid var(--line);flex:0 auto;gap:6px;min-height:70px;max-height:30vh;margin-right:14px;padding:4px 10px 6px 24px;overflow-y:scroll}.death .skill-list.compact::-webkit-scrollbar{width:16px}.death .skill-list.compact::-webkit-scrollbar-track{border-left:3px solid var(--line);background:#0f0c18}.death .skill-list.compact::-webkit-scrollbar-thumb{background:var(--gold);border:3px solid #0f0c18;box-shadow:inset -3px -3px #a08a2a}.death .skill-list.compact::-webkit-scrollbar-button:single-button{background:var(--panel-2);border-left:3px solid var(--line);height:16px}.death .skill-list.compact .skill-card{padding:6px 10px}.death .skill-list.compact .skill-card .rule{font-size:17px}.death .skill-list.compact .skill-card .preview{font-size:14px}.death .fields{flex-direction:column;flex:1;gap:6px;min-height:0;padding:8px 24px 0;display:flex}.death .fields textarea{flex:1;min-height:160px}.death label{font-family:var(--font-pixel);color:var(--muted);justify-content:space-between;font-size:7px;display:flex}.death .row{align-items:center;gap:8px;padding:10px 24px 0;display:flex}.death .row .spacer{flex:1}.death .lesson{border:3px solid var(--green);color:#d6ffe4;background:#10301c;margin:0 14px 10px;padding:8px 12px;font-size:17px;line-height:1.2}@media (max-width:1000px){.death .body{grid-template-columns:1fr;overflow:auto}.death .col.gate{border-right:0;border-bottom:3px solid var(--line);overflow:visible}}.explain{border:3px solid var(--blue);background:#1d1a2e;margin:0 0 8px;padding:10px 14px;font-size:19px;line-height:1.25}.explain b{color:var(--gold)}@media (max-width:1100px){.death .body{grid-template-columns:1fr 1fr}.death .col.skills{border-right:0;border-bottom:3px solid var(--line);grid-column:1/-1;max-height:28vh}}.huntbtn{align-items:center;gap:12px;margin:0 28px;padding:16px 20px;font-size:13px;display:flex}.huntbtn .glass{background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'><circle cx='9' cy='9' r='6' fill='none' stroke='%231a1208' stroke-width='3'/><line x1='13' y1='13' x2='20' y2='20' stroke='%231a1208' stroke-width='3.5' stroke-linecap='square'/></svg>") 50% no-repeat;width:22px;height:22px;display:inline-block}.cluebox .parchment{margin-bottom:8px}.cluebox .ghost{margin:0 28px}.cluebox .empty{padding:8px 28px 0}.hunt{background:#000;flex-direction:column;flex:1;min-height:0;display:flex}.huntbar{background:var(--panel);border-bottom:3px solid var(--line);align-items:center;gap:18px;padding:10px 16px;display:flex}.huntbar .title{font-family:var(--font-pixel);color:var(--gold);font-size:12px}.huntbar .sub{color:var(--muted);font-size:18px}.huntstage{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative}.huntstage canvas{width:auto;max-width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;display:block}.hotspot{cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'><circle cx='12' cy='12' r='8' fill='rgba(255,255,255,0.15)' stroke='%23000' stroke-width='5'/><circle cx='12' cy='12' r='8' fill='none' stroke='%23fff' stroke-width='2.5'/><line x1='18' y1='18' x2='27' y2='27' stroke='%23000' stroke-width='6' stroke-linecap='round'/><line x1='18' y1='18' x2='27' y2='27' stroke='%23fff' stroke-width='3' stroke-linecap='round'/></svg>") 12 12,zoom-in;position:absolute}.hotspot:hover{outline-offset:2px;outline:2px dashed #ffffff73}.hotspot.found{outline:2px solid #f3d64ecc}.huntinfo{background:var(--panel);border-top:3px solid var(--line);min-height:110px;max-height:34vh;padding:12px 24px 16px;overflow:auto}.huntinfo .flavour{color:var(--ink);font-size:20px;line-height:1.25}.huntinfo .flavour b{color:var(--gold)}.huntinfo .parchment{background:var(--parchment);color:var(--parchment-ink);white-space:pre-wrap;border:3px solid #8a6a3a;margin:0;padding:12px 14px;font-size:18px;line-height:1.15;box-shadow:inset 0 0 0 3px #d9c38f}.huntinfo .found-tag{font-family:var(--font-pixel);color:var(--gold);margin-bottom:8px;font-size:10px}.fallen-msg{font-family:var(--font-pixel);color:var(--red);text-shadow:2px 2px #000;font-size:11px}.fallen-sub{font-family:var(--font-mono);color:var(--ink);margin-left:10px;font-size:18px}.main .bar .frontier{align-items:center;display:flex}button.pulse{animation:.7s ease-in-out infinite alternate pulsebtn}@keyframes pulsebtn{0%{filter:brightness();transform:scale(1);box-shadow:4px 4px #000}to{filter:brightness(1.3);transform:scale(1.06);box-shadow:4px 4px #000,0 0 18px #f3d64ebf}}.win{border-bottom:3px solid var(--gold);background:linear-gradient(#2a2410,#1a1626);padding:16px 18px 14px;display:none}.win.show{animation:.5s ease-out winpop;display:block}.win-title{font-family:var(--font-pixel);color:var(--gold);text-shadow:4px 4px #000,0 0 18px #f3d64e80;letter-spacing:2px;font-size:30px}.win-sub{color:var(--ink);margin-top:8px;font-size:19px;line-height:1.25}@keyframes winpop{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.huntinfo .found-row{justify-content:space-between;align-items:center;gap:16px;margin-bottom:8px;display:flex}.huntinfo .found-tag{margin-bottom:0}.huntinfo .huntback{padding:14px 22px;font-size:13px}
