:root{--ink:#0d1b2a;--paper:#f2e8cf;--paper-dim:#d9c89b;--water:#274c77;--warm:#e07a5f;--sail:#f4a261;--gold:#e9c46a;--teal:#2a9d8f;--red:#bc4749;--green:#6a994e;--panel:#0d1b2adb;--panel-border:#000}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--ink);width:100%;height:100%;color:var(--paper);-webkit-font-smoothing:none;font-smooth:never;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overscroll-behavior:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-user-select:none;user-select:none;overflow:hidden}body{font-family:VT323,"Press Start 2P",monospace}#app{position:fixed;inset:0}#stage{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;touch-action:none;background:#343741;display:block;position:absolute;inset:0}#overlay{pointer-events:none;position:absolute;inset:0}#overlay>*{pointer-events:auto}.pixel{letter-spacing:.5px;font-family:"Press Start 2P",monospace}.body{font-family:VT323,monospace;font-size:22px;line-height:1.15}.pixbox{background:var(--panel);color:var(--paper);box-shadow:inset 0 0 0 3px var(--paper-dim), 0 0 0 3px #000, 6px 6px 0 3px #00000073;border:3px solid #000}button.btn,a.btn{color:var(--ink);background:var(--paper);cursor:pointer;image-rendering:pixelated;border:3px solid #000;padding:10px 14px;font-family:"Press Start 2P",monospace;font-size:11px;line-height:1.3;text-decoration:none;transition:transform 40ms,box-shadow 40ms;display:inline-block;box-shadow:4px 4px #000}button.btn:hover,a.btn:hover{background:var(--sail)}button.btn:active,a.btn:active{transform:translate(4px,4px);box-shadow:0 0 #000}button.btn.secondary,a.btn.secondary{color:var(--paper);border-color:var(--paper-dim);background:0 0;box-shadow:4px 4px #00000080}button.btn.secondary:hover,a.btn.secondary:hover{color:var(--paper);background:#f2e8cf1f}button.btn:disabled{opacity:.4;cursor:not-allowed;background:var(--paper-dim);transform:none;box-shadow:4px 4px #000}.hud{pointer-events:none;flex-wrap:wrap;align-items:center;gap:8px;padding:8px;display:flex;position:absolute;top:0;left:0;right:0}.hud>*{pointer-events:auto}.hud-chip{background:var(--panel);box-shadow:3px 3px 0 0 #00000080, inset 0 0 0 2px var(--paper-dim);color:var(--paper);border:2px solid #000;align-items:center;gap:6px;padding:6px 8px;font-family:VT323,monospace;font-size:20px;display:flex}.hud-chip .label{color:var(--gold);font-family:"Press Start 2P",monospace;font-size:8px}.hud-chip.danger{border-color:var(--red);color:var(--red)}.hud-chip.danger .label{color:var(--red)}.meter{border:2px solid var(--paper-dim);background:#000;width:92px;height:12px;position:relative}.meter>i{background:var(--green);height:100%;transition:width .12s linear,background .2s;display:block}.meter.warn>i{background:var(--gold)}.meter.bad>i{background:var(--red)}.hud-goals{background:var(--panel);min-width:150px;box-shadow:3px 3px 0 0 #00000080, inset 0 0 0 2px var(--paper-dim);border:2px solid #000;flex:160px;padding:6px 8px;font-family:VT323,monospace;font-size:18px}.hud-goals .row{align-items:center;gap:6px;display:flex}.hud-goals .row.done{color:var(--teal)}.hud-goals .box{border:2px solid var(--paper-dim);flex:none;width:12px;height:12px;display:inline-block}.hud-goals .row.done .box{background:var(--teal);border-color:var(--teal)}.hud-hint{background:var(--panel);color:var(--paper);text-align:center;pointer-events:auto;border:2px solid #000;max-width:90vw;padding:8px 12px;font-family:VT323,monospace;font-size:20px;position:fixed;bottom:14px;left:50%;transform:translate(-50%);box-shadow:3px 3px #00000080}.hud-actions{gap:8px;display:flex;position:fixed;bottom:14px;right:8px}.screen{justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0;overflow:auto}.dialog{width:100%;max-width:520px;padding:18px}.dialog h1,.dialog h2{text-shadow:3px 3px #000;font-family:"Press Start 2P",monospace;line-height:1.5}.dialog h1{color:var(--gold);margin-bottom:6px;font-size:18px}.dialog h2{color:var(--sail);margin:14px 0 8px;font-size:13px}.dialog p,.dialog li{font-family:VT323,monospace;font-size:20px;line-height:1.2}.dialog .sub{color:var(--paper-dim);font-size:18px}.dialog-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.dialog-header h1{margin-bottom:0}.level-list{flex-direction:column;gap:10px;margin:10px 0;display:flex}.level-row{border:2px solid var(--paper-dim);cursor:pointer;background:#f2e8cf0f;align-items:center;gap:12px;padding:10px 12px;font-family:VT323,monospace;font-size:22px;display:flex;box-shadow:4px 4px #00000080}.level-row:hover:not(.locked){border-color:var(--sail);background:#f4a26129}.level-row.locked{opacity:.5;cursor:not-allowed}.level-row .num{color:var(--ink);background:var(--paper);border:2px solid #000;padding:6px 8px;font-family:"Press Start 2P",monospace;font-size:12px}.level-row.locked .num{background:var(--paper-dim)}.level-row .title{flex:1}.level-row .stars{color:var(--gold);letter-spacing:2px;font-family:"Press Start 2P",monospace;font-size:12px}.level-row .stars .empty{color:#ffffff2e}.code-area{width:100%;color:var(--teal);border:2px solid var(--paper-dim);word-break:break-all;resize:vertical;background:#000;min-height:64px;padding:8px;font-family:VT323,monospace;font-size:16px}.row-btns{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.level-pager{justify-content:center;align-items:center;margin-top:12px}.pager-info{color:var(--paper-dim);text-align:center;min-width:90px;font-family:VT323,monospace;font-size:20px}.result-stars{color:var(--gold);letter-spacing:6px;text-shadow:3px 3px #000;margin:6px 0 4px;font-family:"Press Start 2P",monospace;font-size:30px}.result-stars .empty{color:#ffffff2e}.result-status{margin-bottom:4px;font-family:"Press Start 2P",monospace;font-size:14px}.result-status.win{color:var(--teal)}.result-status.lose{color:var(--red)}.result-goals{margin:8px 0}.result-goals .row{align-items:center;gap:8px;font-family:VT323,monospace;font-size:20px;display:flex}.result-goals .box{border:2px solid var(--paper-dim);flex:none;width:14px;height:14px}.result-goals .row.met .box{background:var(--teal);border-color:var(--teal)}.result-goals .row.met{color:var(--paper)}.result-goals .row.notmet{color:var(--paper-dim)}.toast{background:var(--panel);border:2px solid var(--gold);color:var(--gold);pointer-events:none;z-index:50;padding:8px 12px;font-family:VT323,monospace;font-size:18px;position:absolute;top:16px;left:50%;transform:translate(-50%);box-shadow:3px 3px #0009}.hidden{display:none!important}.title-dialog{text-align:center;max-width:420px}.title-logo{color:var(--gold);text-shadow:4px 4px #000;letter-spacing:2px;margin-bottom:4px;font-family:"Press Start 2P",monospace;font-size:30px}.title-sub{color:var(--sail);text-shadow:3px 3px #000;margin-bottom:14px;font-family:"Press Start 2P",monospace;font-size:15px}.title-tagline{color:var(--paper);margin-bottom:16px;font-family:VT323,monospace;font-size:20px;line-height:1.25}.title-mainbtns{justify-content:center}.title-mainbtns .btn{text-align:center;min-width:130px}.contact-panel{border-top:2px dashed var(--paper-dim);text-align:left;margin-top:10px;padding-top:10px}.contact-panel h2{text-align:left}.contact-panel .sub{font-size:17px}.contact-panel .row-btns{justify-content:flex-start}.contact-email{color:var(--teal);word-break:break-all;margin-top:8px;font-size:16px}.contact-panel a.btn,.contact-panel a.btn.secondary,.contact-panel button.btn,.contact-panel button.btn.secondary{align-items:center;height:40px;min-height:40px;padding-top:0;padding-bottom:0;display:inline-flex;color:#fff!important}.contact-panel a.btn,.contact-panel button.btn{background:var(--water);border-color:var(--ink);color:#fff!important}.contact-panel a.btn.secondary,.contact-panel button.btn.secondary{border-color:var(--paper-dim);background:0 0;color:#fff!important}.contact-panel a.btn:hover,.contact-panel button.btn:hover{background:var(--sail);color:#fff!important}.contact-panel a.btn.secondary:hover,.contact-panel button.btn.secondary:hover{background:#f2e8cf1f;color:#fff!important}@media (width<=540px){.hud-goals{font-size:16px}.dialog h1{font-size:15px}}@media (orientation:portrait){.hud-hint{text-align:left;max-width:46vw;font-size:17px;bottom:14px;left:8px;transform:none}.hud-goals{padding:4px 6px;font-size:14px}.hud-goals .box{width:10px;height:10px}}
