:root{--bg: #0f1216;--panel: rgba(16, 20, 26, .78);--panel-solid: #151a21;--border: rgba(255, 255, 255, .1);--text: #e8edf3;--muted: #95a1b0;--accent: #2f8cff;--green: #2bd96b;--red: #ff4d4d;--amber: #f2b33d;--grey: #8a939e;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden;background:var(--bg)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:#ffffff0f;border:1px solid var(--border);border-radius:8px;padding:8px 14px;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:#ffffff1f}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:#4a9bff}button.big{margin-top:18px;width:100%;padding:14px;font-size:1.1rem}kbd{display:inline-block;min-width:26px;padding:3px 7px;margin-right:3px;border-radius:6px;border:1px solid rgba(255,255,255,.35);border-bottom-width:3px;background:#ffffff14;font-family:inherit;font-weight:700;text-align:center}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.85em}.muted{color:var(--muted)}.small{font-size:.85rem}.err{color:var(--red)}.mainmenu{height:100%;overflow:auto;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;background:radial-gradient(ellipse at top,#1d2b42,#0f1216 60%),repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 2px,transparent 2px 120px)}.menu-box{width:min(860px,100%);background:var(--panel-solid);border:1px solid var(--border);border-radius:16px;padding:28px;box-shadow:0 30px 80px #00000080}.menu-box h1{margin:0;font-size:2.2rem;letter-spacing:-.02em}.menu-box h1 span{color:var(--accent)}.subtitle{margin:4px 0 18px;color:var(--muted)}.menu-box h3{margin:18px 0 10px;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:10px}.tabs button.active{background:#2f8cff2e;border-color:var(--accent)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px;border-radius:12px;background:#ffffff0a}.card.selected{border-color:var(--accent);background:#2f8cff24;box-shadow:0 0 0 2px #2f8cff59}.card small{color:var(--muted);text-align:center}.form{display:grid;gap:12px;max-width:560px}.form label{display:grid;gap:4px;font-size:.92rem}.form label.check{display:flex;align-items:center;gap:8px}.form input:not([type=checkbox]):not([type=range]),.form select,.form textarea{background:#0000004d;border:1px solid var(--border);border-radius:8px;padding:8px 10px}.form textarea{font-family:ui-monospace,Menlo,monospace;font-size:.82rem}.form textarea.invalid{border-color:var(--red)}.form h3{margin-bottom:0}.controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.controls td{padding:4px 10px 4px 0}.stack{display:grid;gap:10px;margin-top:16px;max-width:360px}.game{position:fixed;inset:0}.hud{position:fixed;inset:0;pointer-events:none}.connections{position:absolute;top:12px;left:12px;display:flex;gap:12px;align-items:center;padding:6px 12px;border-radius:10px;background:var(--panel);border:1px solid var(--border);font-size:.85rem;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.badge{padding:2px 8px;border-radius:6px;font-weight:600;font-size:.78rem}.badge-sim{background:#f2b33d33;color:var(--amber)}.badge-live{background:#2bd96b2e;color:var(--green)}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px;background:var(--grey)}.dot-connected{background:var(--green);box-shadow:0 0 6px var(--green)}.dot-connecting{background:var(--amber)}.dot-disconnected,.dot-error{background:var(--red)}.fps{color:var(--muted)}.notifications{position:absolute;top:60px;left:50%;transform:translate(-50%);display:grid;gap:6px;width:min(560px,calc(100% - 32px))}.note{padding:10px 14px;border-radius:10px;background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--accent);animation:slidein .25s ease-out;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.note-success{border-left-color:var(--green)}.note-warn{border-left-color:var(--amber)}.note-error{border-left-color:var(--red)}@keyframes slidein{0%{opacity:0;transform:translateY(-8px)}}.prompts{position:absolute;bottom:110px;left:50%;transform:translate(-50%);display:grid;gap:8px;justify-items:center}.prompt{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:12px;background:#0a0e14d9;border:1px solid rgba(47,140,255,.5);font-size:1.05rem;box-shadow:0 0 24px #2f8cff40}.holding{position:absolute;bottom:70px;left:50%;transform:translate(-50%);padding:6px 12px;border-radius:8px;background:#2f8cff33;border:1px solid var(--accent);font-size:.9rem}.hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);color:#e8edf3a6;font-size:.8rem;text-align:center;width:calc(100% - 32px);text-shadow:0 1px 2px #000}.clickhint{position:fixed;top:12px;right:12px;padding:6px 10px;border-radius:8px;background:var(--panel);font-size:.8rem;color:var(--muted);pointer-events:none}.panel{position:absolute;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:14px 16px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:.88rem}.panel h3{margin:0 0 8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.panel dl,.charge-grid{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0}.panel dt{color:var(--muted)}.panel dd{margin:0}.driving{right:12px;bottom:40px;width:290px;display:grid;grid-template-columns:1fr auto;gap:10px}.driving dl{grid-column:1 / -1}.speed strong{font-size:2.6rem;font-weight:700;line-height:1}.speed small{margin-left:4px;color:var(--muted)}.gear{align-self:center;font-size:1.6rem;font-weight:800;width:48px;height:48px;border-radius:10px;display:grid;place-items:center;border:2px solid var(--border)}.gear-R{color:var(--amber);border-color:var(--amber)}.gear-D{color:var(--green);border-color:#2bd96b80}.warn-line{grid-column:1 / -1;color:var(--amber);font-size:.8rem}.bar{display:inline-block;width:70px;height:7px;border-radius:4px;background:#ffffff1f;margin-right:6px;vertical-align:middle;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--green),#7af0a6)}.charging{left:12px;bottom:40px;width:300px}.ind{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}.ind-grey{background:var(--grey)}.ind-blue{background:var(--accent);box-shadow:0 0 6px var(--accent)}.ind-green{background:var(--green);box-shadow:0 0 6px var(--green)}.ind-red{background:var(--red);box-shadow:0 0 6px var(--red)}.cs-charging{color:var(--green);font-weight:600}.cs-starting,.cs-stopping{color:var(--amber)}.cs-faulted{color:var(--red);font-weight:600}.cs-completed{color:#7fd1ff}.overlay{position:fixed;inset:0;background:#05080cb8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow:auto;padding:24px 16px}.overlay.pause{display:flex;justify-content:center;align-items:flex-start}.overlay header{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}.overlay header h2{margin:0 auto 0 0}.sup-conn{display:flex;gap:14px;color:var(--muted);font-size:.88rem;flex-wrap:wrap}.supervision table{width:100%;border-collapse:collapse;font-size:.86rem;background:var(--panel-solid);border-radius:12px;overflow:hidden}.supervision th,.supervision td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.supervision th{background:#ffffff0a;color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em}.supervision .row-busy{background:#2f8cff0f}.supervision{overflow-x:auto}.legend{color:var(--muted);font-size:.82rem;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.debug-tools{margin-top:12px;display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:10px 12px;border:1px dashed var(--border);border-radius:10px;font-size:.86rem}.logpanel header input{background:#0000004d;border:1px solid var(--border);border-radius:8px;padding:6px 10px}.logpanel ol{list-style:none;margin:0;padding:0;font-family:ui-monospace,Menlo,monospace;font-size:.8rem;background:var(--panel-solid);border-radius:10px;border:1px solid var(--border)}.logpanel li{display:grid;grid-template-columns:80px 90px 1fr;gap:10px;padding:5px 10px;border-bottom:1px solid rgba(255,255,255,.04)}.logpanel time{color:var(--muted)}.logpanel .src{color:#7fb7ff}.log-warn{color:var(--amber)}.log-error{color:var(--red)}.log-debug{color:var(--muted)}@media(max-width:700px){.driving,.charging{position:absolute;width:calc(50% - 18px);font-size:.75rem}.hint{display:none}}
