:root{--screen-aspect:1.4385;--screen-width:min(96vw, calc(68vh * var(--screen-aspect)));--accent:#d9a441;--accent-soft:#ecc879}html,body{color:#888;background:#111;height:100%;margin:0;font-family:system-ui,sans-serif}main{box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;min-height:100%;padding:1rem 0;display:flex}.screen-frame{justify-content:center;display:flex;position:relative}#screen{width:var(--screen-width);aspect-ratio:var(--screen-aspect);image-rendering:pixelated;background:#000;outline:none;display:block}.screen-frame:fullscreen{background:#000;align-items:center}.screen-frame:fullscreen #screen{width:min(100vw, calc(100vh * var(--screen-aspect)))}.paused-label{color:#fff;letter-spacing:.05em;pointer-events:none;background:#000000b3;border-radius:6px;margin:0;padding:.4rem 1rem;font-size:1.2rem;display:none;position:absolute;top:50%;transform:translateY(-50%)}.screen-frame.paused .paused-label{display:block}body.needs-roms #screen,body.needs-roms .toolbar,body.needs-roms .paused-label,body.needs-roms .cart-panel,body.needs-roms .controls{display:none!important}.rom-setup{width:var(--screen-width);min-height:calc(var(--screen-width) / var(--screen-aspect));box-sizing:border-box;border:2px dashed var(--accent);color:#ccc;background:#1a1a1a;border-radius:10px;padding:1.5rem 1.75rem;font-size:.9rem}.rom-setup[hidden]{display:none}.rom-setup p{margin:0}.rom-setup h1{color:#fff;margin:0 0 .5rem;font-size:1.4rem}.rom-setup-lead{color:#bbb;line-height:1.45}.rom-setup code{color:#fff;background:#2a2a2a;border-radius:4px;padding:.05rem .3rem;font-size:.85em}.rom-list{gap:.6rem;margin:1rem 0;padding:0;list-style:none;display:grid}.rom-list li{background:#202020;border:1px solid #3d3d3d;border-left:4px solid #ff8a80;border-radius:6px;gap:.25rem;padding:.65rem .85rem;display:grid}.rom-list li.optional{border-left-color:#c9a227}.rom-list li[data-state=loaded]{border-left-color:#9ad284}.rom-list li[data-state=warning]{border-left-color:#c9a227}.rom-heading strong{color:#eee;font-size:1rem}.rom-need{color:#ff8a80;text-transform:uppercase;letter-spacing:.05em;background:#3d2424;border-radius:4px;margin-left:.4rem;padding:.05rem .4rem;font-size:.75rem}.optional .rom-need{color:#c9a227;background:#3d3524}.rom-detail,.rom-names{color:#aaa;font-size:.85rem}.rom-status{color:#ff8a80;font-size:.85rem;font-weight:600}.optional[data-state=missing] .rom-status,[data-state=warning] .rom-status{color:#c9a227}[data-state=loaded] .rom-status{color:#9ad284}.rom-tip{color:#999;font-size:.85rem}.rom-actions{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.rom-setup button{color:#eee;font:inherit;cursor:pointer;background:#2a2a2a;border:1px solid #555;border-radius:6px;padding:.5rem 1.1rem}.rom-setup button.primary,.rom-setup button[data-action=start]:not(:disabled){border-color:var(--accent);color:#fff;background:#4a3a17}.rom-setup button:hover:not(:disabled),.rom-setup button:focus-visible{border-color:var(--accent-soft);outline:none}.rom-setup button:disabled{opacity:.45;cursor:default}.rom-message:not(:empty){color:#ff8a80;margin-top:.75rem}.rom-storage-note:not(:empty){color:#c9a227;margin-top:.75rem}.rom-drop-hint{color:#fff;text-align:center;padding:2rem 0;font-size:1.2rem;display:none}.rom-setup.drag-over{background:#2a2414;border-style:solid}.rom-setup.drag-over>:not(.rom-drop-hint){display:none}.rom-setup.drag-over .rom-drop-hint{display:block}#status{margin:0;font-size:.85rem}.site-links,.emulator-links{flex-wrap:wrap;justify-content:center;gap:.4rem 1.25rem;font-size:.85rem;display:flex}.site-links a,.emulator-links a{color:var(--accent-soft);text-decoration:none}.site-links a:hover,.site-links a:focus-visible,.emulator-links a:hover,.emulator-links a:focus-visible{text-decoration:underline}.emulator-links strong{color:#ddd;font-weight:600}button,select{color:#eee;font:inherit;cursor:pointer;background:#2a2a2a;border:1px solid #555;border-radius:6px;padding:.35rem .75rem;font-size:.85rem}select{max-width:16rem;padding:.35rem .4rem}button:hover,button:focus-visible,select:focus-visible{outline:none;border-color:var(--accent)!important}button:disabled,select:disabled{opacity:.45;cursor:default}input[type=checkbox],input[type=range]{accent-color:var(--accent)}.toolbar{width:var(--screen-width);flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem 1rem;display:flex}.toolbar-group{flex-wrap:wrap;align-items:center;gap:.4rem;display:inline-flex}.toolbar label{color:#bbb;align-items:center;gap:.3rem;font-size:.85rem;display:inline-flex}.toolbar-message{color:#9ad284;font-size:.85rem}.toolbar-message.error{color:#ff8a80}.cart-panel{width:var(--screen-width);box-sizing:border-box;color:#ccc;text-align:center;background:#1a1a1a;border:2px dashed #555;border-radius:10px;padding:1rem 1.25rem;transition:border-color .15s,background-color .15s}.cart-panel p{margin:0}.cart-empty,.cart-loaded{flex-direction:column;align-items:center;gap:.6rem;display:none}.cart-panel[data-roms=loaded][data-state=empty] .cart-empty,.cart-panel[data-roms=loaded][data-state=loaded] .cart-loaded{display:flex}.cart-panel[data-roms=loaded][data-state=loaded]{border-style:solid;border-color:#3d3d3d}.cart-title{color:#eee;font-size:1.05rem}.cart-hint{color:#999;max-width:34rem;font-size:.85rem}.cart-file{color:#888}.cart-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;display:flex}.cart-actions label{color:#aaa;align-items:center;gap:.4rem;font-size:.85rem;display:inline-flex}.cart-details{color:#999;max-width:40rem;font-size:.8rem}.voice-prompt:not([hidden]){color:#c9a227;flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;font-size:.85rem;display:flex;margin-top:.75rem!important}.cart-panel.drag-over .voice-prompt{display:none}.cart-drop-hint{color:#fff;font-size:1.05rem;display:none}.cart-panel.drag-over{border-style:solid;border-color:var(--accent);background:#2a2414}.cart-panel.drag-over>:not(.cart-drop-hint){display:none!important}.cart-panel.drag-over .cart-drop-hint{display:block}.zip-files:not([hidden]),.bundled-games-row{color:#aaa;flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;font-size:.85rem;display:flex;margin-top:.75rem!important}.cart-panel[data-roms=missing] .bundled-games{display:none}.game-info{color:#999;font-size:.8rem;margin-top:.35rem!important}.game-info a{color:var(--accent-soft)}.zip-buttons{flex-wrap:wrap;gap:.4rem;display:inline-flex}.zip-buttons button.current{border-color:var(--accent)}.cart-message:not(:empty){color:#ff8a80;font-size:.9rem;margin-top:.6rem!important}.cart-message.warning{color:#c9a227}.controls{width:var(--screen-width);box-sizing:border-box;color:#bbb;font-size:.9rem}.controls-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem 1.5rem;display:flex}.controls label{align-items:center;gap:.4rem;display:inline-flex}.controls input[type=range]{width:6rem}.sound-hint{color:#c9a227}.keypad{-webkit-user-select:none;user-select:none;touch-action:none;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.5rem;margin-top:.75rem;display:flex}.keypad[hidden]{display:none}.keypad-disc{aspect-ratio:1;cursor:pointer;touch-action:none;background:radial-gradient(circle at 40% 35%,#6b5a36,#3a2f19 70%);border-radius:50%;width:7.5rem;position:relative;box-shadow:inset 0 0 0 2px #8a7443,0 2px 6px #00000080}.keypad-disc:before{content:"";border:1px dashed #ecc87959;border-radius:50%;position:absolute;inset:12%}.keypad-disc-knob{pointer-events:none;background:radial-gradient(circle at 35% 35%,#ecc879,#a07a2c);border-radius:50%;width:30%;height:30%;transition:transform 50ms;position:absolute;top:35%;left:35%}.keypad-keys{background:linear-gradient(#262626,#1b1b1b);border-radius:10px;grid-template-columns:repeat(3,3.4rem);gap:.35rem;padding:.6rem;display:grid;box-shadow:inset 0 0 0 1px #3a3a3a}.keypad-keys button{touch-action:none;height:2.4rem;padding:0;font-size:1.05rem}.keypad-keys button[data-key=clear],.keypad-keys button[data-key=enter]{font-size:.8rem}.keypad-sides{flex-direction:column;gap:.5rem;display:flex}.keypad-sides button{color:#1a1408;touch-action:none;background:radial-gradient(circle at 35% 35%,#ecc879,#8a6a24);border-color:#5c4615;border-radius:999px;padding:.6rem .9rem;font-weight:600}.keypad button.active{background:var(--accent);border-color:var(--accent);color:#111}.gamepad-status{color:#9ad284;text-align:center;margin:.5rem 0 0;font-size:.8rem}.controls-hint{color:#777;text-align:center;margin:.5rem 0 0;font-size:.8rem}
