/* Q and the Machine: the chrome around every level's canvas. One file so the three levels look
   like one game. The canvas itself is drawn by os.js and each level's script. */
:root{--K:#0F1419;--S:#2A2E33;--P:#F2EDE2;--T:#EAE3D4;--B:#D6CDBA;--G:#C9C1B0;--O:#FF6B1A;--W:#FBF7EE;--V:#1F7A5C;--A:#B3741B;--D:#8C8579}
*{box-sizing:border-box}
html,body{margin:0;background:var(--K);color:var(--K)}
body{font:17px/1.45 Newsreader,Georgia,"Times New Roman",serif;-webkit-font-smoothing:antialiased;background:linear-gradient(180deg,#1A2029 0%,#0F1419 100%);min-height:100vh}
.shell{max-width:900px;margin:0 auto;padding:16px 14px 28px}
.mast{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 10px;color:var(--P)}
.mast h1{font-size:20px;font-weight:600;letter-spacing:-.01em;margin:0}
.mast h1 small{font-weight:400;color:var(--D);font-size:14px;margin-left:8px}
.mast p{margin:0;font-size:12px;color:var(--D)}
.mast a{color:var(--O)}
.mono{font:700 11px/1 ui-monospace,"Cascadia Mono",Consolas,monospace;letter-spacing:.13em;text-transform:uppercase}
.hud{display:flex;align-items:center;gap:15px;background:var(--K);color:var(--P);padding:10px 14px;font:700 11px/1 ui-monospace,"Cascadia Mono",Consolas,monospace;letter-spacing:.13em;text-transform:uppercase;border:2px solid var(--S);border-bottom:0}
.hud b{color:var(--O)}
.hud .sp{flex:1}
.hud .boss{color:var(--A)}
.meter{display:inline-block;vertical-align:middle;width:84px;height:10px;border:1px solid var(--D);margin-left:7px;background:#000}
.meter i{display:block;height:100%;width:100%;background:var(--V);transition:width .12s linear}
.hud.warn .meter i{background:var(--O)}
.hud.crit .meter i{background:var(--A)}
.hud button{background:transparent;color:var(--P);border:1px solid var(--D);font:inherit;letter-spacing:inherit;padding:5px 8px;cursor:pointer}
.stage{position:relative;aspect-ratio:320/176;background:#0F1419;border:2px solid var(--S);outline:none;touch-action:none;overflow:hidden;box-shadow:0 18px 50px rgba(0,0,0,.55)}
.stage:focus-visible{border-color:var(--O)}
canvas{display:block;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges}
/* the strip under the canvas: parts in level 1, the loop in level 2, the lanes in level 3 */
.strip{border:2px solid var(--S);border-top:0;background:#151B22;padding:8px 10px;display:grid;gap:6px}
.strip.four{grid-template-columns:repeat(4,1fr)}
.strip.five{grid-template-columns:repeat(5,1fr)}
.cell{border:2px solid var(--S);padding:7px 6px;font:700 9px/1.5 ui-monospace,Consolas,monospace;letter-spacing:.1em;color:var(--D);text-align:center;display:flex;flex-direction:column;align-items:center;gap:3px;opacity:.55}
.cell canvas{width:24px;height:24px;image-rendering:pixelated}
.cell b{color:var(--P);font-size:10px}
.cell .g{color:var(--V)}.cell .a{color:var(--O)}
.cell.on{opacity:1;border-color:var(--O);background:#241C12}
.cell.on b{color:var(--O)}
.cell.done{opacity:.85;border-color:var(--V)}
.cell.done b{color:var(--V)}
.cell.ready{opacity:1;border-color:var(--O)}
.overlay{position:fixed;inset:0;z-index:20;display:grid;place-items:center;background:rgba(6,9,12,.82);padding:14px}
.win{background:var(--P);border:2px solid var(--K);box-shadow:6px 6px 0 rgba(0,0,0,.5);padding:20px 24px 18px;max-width:520px;width:100%;max-height:calc(100dvh - 28px);overflow:auto;overscroll-behavior:contain}
.win.bad{background:#241C12;color:var(--T);border-color:var(--A)}
.win.bad h2,.win.bad .line{color:var(--W)}
.win .eyebrow{font:700 10px/1 ui-monospace,Consolas,monospace;letter-spacing:.18em;color:var(--D);margin:0 0 6px}
.win h2{margin:0 0 12px;font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1}
.win p.line{margin:0 0 14px;font-size:17px}
.pic{background:var(--K);border:2px solid var(--S);padding:10px;margin:0 0 14px;display:grid;place-items:center}
.pic canvas{image-rendering:pixelated;width:100%;max-width:480px;height:auto}
.keys{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 15px}
.keys span{font:700 10px/1 ui-monospace,Consolas,monospace;border:2px solid var(--K);background:var(--W);padding:8px 10px}
.keys span i{font-style:normal;color:var(--D);margin-left:6px}
.win.bad .keys span{border-color:var(--A);background:#1A1410;color:var(--T)}
.legend{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:6px}
.legend li{display:flex;align-items:center;gap:10px;border:2px solid var(--K);background:var(--W);padding:8px 10px;font-size:14px}
.legend li canvas{width:24px;height:24px;image-rendering:pixelated;flex:none}
.legend li b{font:700 10px/1 ui-monospace,Consolas,monospace;letter-spacing:.12em;min-width:64px}
.legend li.miss{opacity:.6}
.win.bad .legend li{border-color:var(--A);background:#1A1410}
.score{display:flex;gap:9px;margin:0 0 14px}
.score div{border:2px solid var(--K);background:var(--W);padding:11px 13px;flex:1}
.win.bad .score div{border-color:var(--A);background:#1A1410}
.score b{display:block;font:700 36px/1 ui-monospace,Consolas,monospace;color:var(--O)}
.score small{display:block;font:700 8px/1.2 ui-monospace,Consolas,monospace;letter-spacing:.13em;color:var(--D);margin-top:6px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.btn{font:700 11px/1 ui-monospace,Consolas,monospace;letter-spacing:.14em;text-transform:uppercase;padding:12px 14px;border:2px solid var(--K);background:var(--O);color:var(--K);text-decoration:none;cursor:pointer;box-shadow:3px 3px 0 var(--K)}
.win.bad .btn{border-color:var(--A);box-shadow:3px 3px 0 var(--A)}
.btn.ghost{background:transparent;box-shadow:none;color:inherit}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--K)}
.cite{margin:14px 0 0;font-size:13px;color:var(--D);border-top:1px solid rgba(140,133,121,.4);padding-top:11px}
.touch{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;padding:10px;pointer-events:none}
.touch div{display:flex;gap:8px}
.touch button{pointer-events:auto;width:54px;height:54px;border-radius:50%;border:2px solid var(--P);background:rgba(15,20,25,.75);color:var(--P);font:700 11px ui-monospace,Consolas,monospace;touch-action:none;user-select:none;-webkit-user-select:none}
.touch button.down{background:var(--O);color:var(--K)}
.help{display:flex;gap:15px;justify-content:center;flex-wrap:wrap;margin:10px 0 0;font:700 10px/1 ui-monospace,Consolas,monospace;letter-spacing:.12em;color:var(--D);text-transform:uppercase}
.help kbd{border:1px solid var(--S);padding:3px 5px;background:var(--K);color:var(--P)}
.skip{text-align:center;font-size:13px;margin:13px 0 0;color:var(--D)}
.skip a{color:var(--B)}
[hidden]{display:none!important}
/* Warm framing, with the pixel stage retained at its native aspect ratio. */
body{background:var(--P)}
.shell{max-width:1040px;padding:28px 24px 36px}
.mast{color:var(--K);margin-bottom:18px;border-bottom:1px solid var(--G);padding-bottom:14px}
.mast h1{font-size:26px}.mast a{color:#aa421b}.mast h1 small{color:#70695e}
.hud{border-radius:8px 8px 0 0;min-height:55px;font-size:10px;gap:12px}
.hud button{min-height:36px;letter-spacing:0;border-color:#696e70;border-radius:3px;padding:8px 10px}
.stage{box-shadow:0 10px 24px #24252012}
.strip{border-radius:0 0 6px 6px}.cell{opacity:1;color:#bdb7ac}.cell.done{opacity:1}.cell.done b,.cell .g{color:#80c7a4}
.cell.selected{box-shadow:inset 0 -3px var(--O);background:#2d302c}.strip.five .cell .g,.strip.five .cell .a{display:inline;font-size:9px}.strip.five .cell{gap:2px}
.help{color:#665e52;line-height:1.5;margin-top:18px}.help kbd{background:#e6dfd0;color:var(--K);border-color:var(--G)}
.skip a{color:#766b5a}.skip{margin-top:18px}
.btn{min-height:44px;line-height:1.35}.btn:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #c85520;outline-offset:4px}
.win{border-radius:8px;box-shadow:0 20px 80px #0006}.win .eyebrow{line-height:1.5;color:#746b5c}.win .line{line-height:1.45}
.live-guide{position:relative;display:grid;grid-template-columns:1.1fr 1fr;gap:12px 22px;background:var(--W);border:1px solid var(--G);border-radius:6px;padding:17px 20px 21px;margin-top:14px;overflow:hidden;font:12px/1.5 ui-monospace,Consolas,monospace}
.guide-copy b{font-size:12px;color:#a23c16}.guide-copy p{margin:5px 0 0;color:#665e52;font-size:11px}.guide-evidence{display:flex;gap:6px;flex-wrap:wrap;align-content:start;align-items:start}.guide-evidence span{padding:5px 8px;border-radius:3px;font-size:10px;border:1px solid #c8bcaa}.guide-evidence .verified{background:#e2ecdf;border-color:#8fae92;color:#315539}.guide-evidence .missing{border-style:dashed;background:#f3ede1;color:#776b56}
#guide-result{grid-column:1/-1;margin:0;border-top:1px solid #e3dbcc;padding-top:10px;font-size:11px;color:#514b40;min-height:27px}
.level-progress{height:3px;position:absolute;bottom:0;left:0;right:0;background:#ded6c6}.level-progress i{height:100%;display:block;background:#c95721}
.pause-cover{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#0f1419df;color:var(--P);font:700 22px ui-monospace,Consolas,monospace;letter-spacing:3px}
.stage:has(.touch:not([hidden])){overflow:visible;margin-bottom:80px}
.touch{bottom:auto;top:100%;height:80px;background:var(--K);border:2px solid var(--S);border-top:0;padding:10px 14px}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media (max-width:600px){
  .hud{gap:8px;padding:8px 10px;font-size:9px;letter-spacing:.04em}.meter{width:52px}
  .mast p{display:none}.help{display:none}.win h2{font-size:26px}.score b{font-size:28px}
  .strip{gap:3px;padding:6px}.cell{padding:5px 2px;font-size:8px;letter-spacing:0}.cell canvas{width:16px;height:16px}
  .shell{padding:18px 10px 24px}.mast h1{font-size:22px}.mast h1 small{font-size:11px}.hud{flex-wrap:wrap;gap:8px;min-height:52px}.hud button{min-height:44px;padding:8px}.hud .sp{flex:1;min-width:0}
  .live-guide{grid-template-columns:1fr;padding:13px 14px 18px;gap:10px}.guide-copy b{font-size:11px}.guide-evidence span{font-size:9px}.help{display:flex;font-size:8px;gap:8px}.win{padding:18px}.touch button{width:54px;height:54px}
}
