:root{--bg:#fcfcfc;--surface:#fff;--border:#e4e4e0;--text:#444;--muted:#888;--accent:#d98824;--accent-soft:#fff5e6;--success:#4a8f3a;--error:#c04040}.games-root,.games-root *{box-sizing:border-box}.games-root{background:var(--bg);min-height:100vh;color:var(--text);padding:50px 24px 80px;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px;line-height:1.6}.games-root h1,.games-root h2,.games-root h3{color:var(--text);margin:0 0 12px;font-weight:600;line-height:1.2}.games-root h1{font-size:26px}.games-root h2{font-size:18px}.games-root h3{color:var(--muted);font-size:14px;font-weight:500}.games-root p{margin:0 0 14px}.games-root a{color:var(--text);text-decoration:none}.games-root a:hover{text-decoration:underline}.games-shell{max-width:850px;margin:0 auto}.games-nav{color:var(--text);flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:28px;font-size:.95em;display:flex}.games-nav a{color:var(--text)}.games-intro{color:var(--muted);margin-bottom:20px;font-size:14px}.games-rules{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:4px;margin-bottom:20px;padding:14px 18px;font-size:14px;line-height:1.65}.games-rules strong{color:var(--text);font-weight:600}.games-rules ul{margin:6px 0 0;padding-left:20px}.games-rules li{margin-bottom:4px}.games-btn{background:var(--surface);color:var(--text);border:1px solid var(--text);cursor:pointer;border-radius:3px;padding:6px 14px;font-family:inherit;font-size:.92em;transition:background .1s,color .1s}.games-btn:hover:not(:disabled){background:#f0f0f0}.games-btn.amber{border-color:var(--accent);color:var(--accent)}.games-btn.amber:hover:not(:disabled){background:var(--accent-soft)}.games-btn:disabled{opacity:.4;cursor:not-allowed}.games-btn.active{background:var(--text);color:var(--bg)}.games-panel{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:14px 16px}.games-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px;font-size:11px;font-weight:500}.games-value{color:var(--text);font-size:15px}.games-value.accent{color:var(--accent)}.games-value.error{color:var(--error)}.games-row{flex-wrap:wrap;gap:18px;display:flex}.games-win-banner{border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent);text-align:center;border-radius:4px;margin:18px 0;padding:14px 18px;font-weight:600}.lobby-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;display:grid}.lobby-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:4px;padding:0;text-decoration:none;transition:all .15s;display:block;overflow:hidden}.lobby-card:hover{border-color:var(--text);text-decoration:none;transform:translateY(-2px);box-shadow:0 4px 16px #00000014}@media (max-width:720px){.lobby-grid{grid-template-columns:repeat(2,1fr);gap:10px}.games-root{padding:30px 16px 50px}}.vp-layout{grid-template-columns:1fr 220px;align-items:start;gap:24px;display:grid}.vp-grid{background:var(--border);border:1px solid var(--border);border-radius:4px;gap:2px;width:fit-content;padding:2px;display:grid}.vp-cell{background:var(--surface);cursor:pointer;justify-content:center;align-items:center;width:48px;height:48px;transition:background .1s;display:flex;position:relative}.vp-cell:hover{background:#f4f4f0}.vp-cell.fixed{background:#f0f0eb}.vp-cell.source{background:#f0f6ed}.vp-cell.receiver{background:#fdf4e6}.vp-cell.receiver.lit{background:#ffe8c2}.vp-hand{flex-direction:column;gap:8px;display:flex}.vp-hand-item{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:3px;align-items:center;gap:10px;padding:8px 12px;transition:all .1s;display:flex}.vp-hand-item:hover{border-color:var(--muted)}.vp-hand-item.selected{border-color:var(--accent);background:var(--accent-soft)}.vp-hand-item.empty{opacity:.35;cursor:not-allowed}.vp-hand-count{color:var(--accent);margin-left:auto;font-weight:600}.vp-pulse{background:var(--accent);width:10px;height:10px;box-shadow:0 0 10px var(--accent);pointer-events:none;z-index:3;border-radius:50%;position:absolute}.nc-layout{grid-template-columns:300px 1fr;align-items:start;gap:20px;display:grid}.nc-mcu{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:16px}.nc-mcu h3{margin-top:0}.nc-pins{grid-template-columns:1fr 1fr;gap:12px;margin:10px 0;display:grid}.nc-pin-col{flex-direction:column;gap:4px;display:flex}.nc-pin{border:1px solid var(--border);background:var(--bg);border-radius:2px;justify-content:space-between;padding:4px 8px;font-family:Menlo,Courier New,monospace;font-size:12px;display:flex}.nc-pin.match{border-color:var(--success);color:var(--success)}.nc-pin.miss{border-color:var(--error);color:var(--error)}.nc-regs{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.nc-editor{flex-direction:column;gap:12px;display:flex}.nc-editor-wrap{border:1px solid var(--border);background:var(--surface);border-radius:3px;min-height:320px;display:flex;overflow:hidden}.nc-gutter{color:var(--muted);text-align:right;-webkit-user-select:none;user-select:none;white-space:pre;background:#f4f4f0;min-width:44px;padding:10px 8px;font-family:Menlo,Courier New,monospace;font-size:13px;line-height:1.55}.nc-gutter .current{color:var(--accent);font-weight:600}.nc-code{background:var(--surface);color:var(--text);resize:none;border:none;outline:none;flex:1;padding:10px 12px;font-family:Menlo,Courier New,monospace;font-size:13px;line-height:1.55}.nc-test-row{border:1px solid var(--border);background:var(--surface);border-radius:2px;justify-content:space-between;margin-bottom:4px;padding:6px 10px;font-family:Menlo,monospace;font-size:12px;display:flex}.nc-test-row.pass{border-color:var(--success);color:var(--success);background:#f4faf2}.nc-test-row.fail{border-color:var(--error);color:var(--error);background:#fbf3f3}.nc-tutorial{background:var(--surface);border:1px solid var(--border);border-radius:4px;margin-bottom:16px;padding:16px 18px;font-size:13.5px;line-height:1.7}.nc-tutorial h3{color:var(--text);text-transform:none;letter-spacing:0;margin-top:0;font-size:14px;font-weight:600}.nc-tutorial details{margin-top:10px}.nc-tutorial summary{cursor:pointer;color:var(--accent);-webkit-user-select:none;user-select:none;padding:4px 0;font-weight:500}.nc-tutorial summary:hover{text-decoration:underline}.nc-tutorial table{border-collapse:collapse;width:100%;margin-top:10px;font-family:Menlo,monospace;font-size:12px}.nc-tutorial td{vertical-align:top;color:var(--text);padding:4px 10px 4px 0}.nc-tutorial td:first-child{color:var(--accent);white-space:nowrap;width:120px;font-weight:600}.nc-goal{background:var(--accent-soft);border:1px solid var(--accent);color:var(--text);border-radius:3px;margin-bottom:14px;padding:10px 14px;font-size:14px}.nc-goal strong{color:var(--accent)}.sw-layout{grid-template-columns:200px 1fr 200px;align-items:start;gap:16px;display:grid}.sw-tray{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:14px}.sw-tray h3{margin-top:0}.sw-tray-item{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:3px;justify-content:space-between;align-items:center;margin-bottom:6px;padding:7px 10px;font-size:13px;display:flex}.sw-tray-item.selected{border-color:var(--accent);background:var(--accent-soft)}.sw-tray-item.empty{opacity:.35;cursor:not-allowed}.sw-board-wrap{background:var(--surface);border:1px solid var(--border);border-radius:4px;justify-content:center;align-items:center;min-height:500px;display:flex;overflow:hidden}.sw-hex{cursor:pointer;transition:opacity .1s}.wb-layout{grid-template-columns:1fr 220px;align-items:start;gap:20px;display:grid}.wb-board-wrap{background:var(--surface);border:1px solid var(--border);border-radius:4px;width:fit-content;padding:12px}.wb-svg{display:block}.wb-cell{fill:#f4f4f0;stroke:var(--border);stroke-width:1px}.wb-cell.valid-move{fill:#fdf4e6;stroke:var(--accent)}.wb-wall{stroke:var(--border);stroke-width:4px;stroke-linecap:round}.wb-wall.placed{stroke:var(--accent)}.wb-wall.preview{stroke:var(--accent);opacity:.5}.wb-wall.invalid{stroke:var(--error);opacity:.7}.wb-pawn-p1{fill:var(--text)}.wb-pawn-p2{fill:var(--accent)}
