:root{--bg: #0c0d12;--fg: #e8e6e1;--muted: #8a8a8a;--accent: #f8b400;--accent-dim: #b27e00;--panel: #15171f;--border: #2a2c36;--good: #6ace5a;--bad: #ff6b6b}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:ui-monospace,SF Mono,Cascadia Mono,Menlo,monospace;font-size:15px;line-height:1.55}body{max-width:760px;margin:0 auto;padding:48px 24px 96px}header{padding-bottom:24px;margin-bottom:32px}h1{margin:0;font-size:32px;letter-spacing:-.02em}.tagline{margin:4px 0 0;color:var(--accent);font-size:14px;letter-spacing:.04em}h2{font-size:18px;margin-top:36px;margin-bottom:12px;color:var(--accent)}main p{color:var(--fg)}main p.byo-rom{color:var(--muted);font-size:14px}body.landing main{text-align:center;padding-top:32px}body.landing h1{font-size:48px;margin-bottom:8px}body.landing .lede{max-width:540px;margin:16px auto;text-align:left}.cta{display:inline-block;margin:32px 0 12px;padding:14px 36px;border:1px solid var(--accent-dim);background:var(--accent);color:#1a1500!important;border-radius:4px;font-family:inherit;font-size:16px;font-weight:600;text-decoration:none;transition:filter .12s}.cta:hover{filter:brightness(1.1);color:#1a1500!important}body.landing .byo-rom{text-align:center;margin-top:4px}main ul{padding-left:20px;color:var(--fg)}main ul li{margin:8px 0}a,a:visited{color:var(--accent)}a:hover{color:var(--fg)}.load-button{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);cursor:pointer;padding:12px 24px;border:1px solid var(--accent-dim);background:var(--accent);color:#1a1500;border-radius:4px;font-family:inherit;font-size:14px;font-weight:600;transition:filter .12s;z-index:1}.load-button:hover{filter:brightness(1.1)}.load-button.hidden{display:none}.modal-backdrop{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:10}.modal-backdrop.hidden{display:none}.modal{background:var(--panel);border:1px solid var(--border);border-radius:6px;min-width:360px;max-width:480px;width:90%;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-header h2{margin:0;font-size:16px;color:var(--accent)}.modal-close{background:none;border:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:0 4px;font-family:inherit}.modal-close:hover{color:var(--fg)}.game-list{list-style:none;margin:0;padding:8px;overflow-y:auto}.game-list li{margin:0}.game-entry{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 14px;background:transparent;border:1px solid transparent;border-radius:4px;color:var(--fg);font-family:inherit;font-size:14px;cursor:pointer;text-align:left;transition:background .12s,border-color .12s}.game-entry:hover{background:var(--bg);border-color:var(--accent)}.game-entry .game-name{font-weight:600}.game-entry .game-status{font-size:12px;color:var(--muted)}.game-entry .game-status.ready{color:var(--good)}.status{font-size:13px;color:var(--muted);margin:8px 0 16px;min-height:1.55em}.status.error{color:var(--bad)}.status.connected{color:var(--good)}.screen-wrap{background:#000;border:1px solid var(--border);border-radius:4px;padding:0;width:fit-content;margin:0 auto;position:relative}canvas#screen{display:block;width:512px;height:480px;image-rendering:pixelated;image-rendering:crisp-edges}.controls-hint{font-size:12px;color:var(--muted);text-align:center;margin-top:8px}kbd{background:var(--panel);border:1px solid var(--border);border-radius:3px;padding:1px 6px;font-family:inherit;font-size:11px;color:var(--fg)}
