:root{--bg: #14110f;--panel: #1e1915;--panel-2: #2a231d;--line: #3a3129;--text: #ece4d7;--muted: #a89b8a;--light: #efd9b4;--dark: #b58863;--accent: #8b5cf6;--accent-2: #c4b5fd}*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:radial-gradient(1200px 600px at 50% -10%,#2a221c 0%,transparent 60%),radial-gradient(900px 500px at 100% 100%,#1b1512 0%,transparent 55%),var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}.app{max-width:1180px;margin:0 auto;padding:22px 18px 44px}.topbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}.topbar h1{margin:0;font-size:21px;font-weight:650;letter-spacing:.01em}.topbar h1 span{color:var(--accent-2)}.turn{padding:6px 12px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line);font-size:13px;color:#e8ddcc}.seed{margin-left:auto;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px;align-items:start}.board-panel{min-width:0}.board-shell{border-radius:12px;overflow:hidden;background:#201a15;box-shadow:0 24px 70px #0000008c,0 0 0 1px #ffffff08}.board-svg{display:block;width:100%;height:auto}.sq{cursor:pointer}.sq.light{fill:var(--light)}.sq.dark{fill:var(--dark)}.hl-last,.hl-selected,.hl-ghost-choice,.hl-pending{pointer-events:none}.hl-last{fill:#eab3084d}.hl-selected{fill:#8b5cf661}.hl-ghost-choice{fill:#8b5cf69e;stroke:#ddd6fe;stroke-width:5}.hl-pending{fill:#8b5cf633;stroke:var(--accent-2);stroke-width:4;animation:pendingPulse 1.15s ease-in-out infinite}@keyframes pendingPulse{0%,to{opacity:.55}50%{opacity:1}}.links,.pieces,.markers,.coords{pointer-events:none}.ghost-link{stroke:var(--accent);stroke-width:3;stroke-dasharray:7 7;opacity:.55}.ghost-frame{fill:none;stroke:var(--accent-2);stroke-width:2.4;stroke-dasharray:6 5;opacity:.95}.piece{font-family:Times New Roman,"DejaVu Serif",Georgia,serif;font-size:58px;text-anchor:middle;dominant-baseline:central;-webkit-user-select:none;user-select:none}.piece.w{fill:#fbf4e6;stroke:#2a1f16;stroke-width:1.4;paint-order:stroke}.piece.b{fill:#241b12;stroke:#e9ddc7;stroke-width:1.1;paint-order:stroke}.ghost-piece{opacity:.42}.piece-img{pointer-events:none}.dot-quiet{fill:#1854308c}.ring-capture{fill:none;stroke:#961e1eb8;stroke-width:5}.ring-ghost{fill:none;stroke:var(--accent);stroke-width:5;stroke-dasharray:7 5}.dot-quantum{fill:none;stroke:var(--accent-2);stroke-width:3}.dot-quantum.first{fill:var(--accent);stroke:var(--accent-2)}.coord{font-size:13px;font-family:ui-sans-serif,system-ui,sans-serif;-webkit-user-select:none;user-select:none}.coord.on-light{fill:#5537199e}.coord.on-dark{fill:#faf0dc94}.message{margin:14px 2px 0;min-height:22px;font-size:14px;color:#e8ddcc}.message b{color:var(--accent-2);font-weight:650}.actions{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.hint{color:var(--muted);font-size:13px;padding:7px 0}button{appearance:none;border:1px solid #4a3d31;background:linear-gradient(#3a3027,#2b241d);color:var(--text);padding:8px 14px;border-radius:9px;font:inherit;font-size:13px;cursor:pointer;transition:border-color .15s ease,transform .06s ease,filter .15s ease}button:hover{border-color:var(--accent);filter:brightness(1.08)}button:active{transform:translateY(1px)}button.primary{background:linear-gradient(#6d4bd8,#5434b4);border-color:#7c5cff}button.ghost{background:transparent}.side{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 14px 10px}.side h2{margin:0 0 10px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.log{list-style:none;margin:0;padding:0;max-height:560px;overflow-y:auto;display:flex;flex-direction:column;gap:4px;font-size:12.5px;line-height:1.35}.log li{padding:5px 8px;border-radius:6px;background:#262019;color:#d9cebd}.log li.quantum{color:var(--accent-2);background:#2a2236}.log li.quantum-strike{color:#f0b37e;background:#33261c}.log li.resolve{color:#b9a7f7}.log li.pass{color:#d2b273}.log li.gameover{background:#3a2a1a;color:#f6d68c;font-weight:650}.log li.muted{color:var(--muted);background:transparent}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#0a0806b8;display:flex;align-items:center;justify-content:center;padding:20px}.modal{width:min(360px,92vw);background:var(--panel);border:1px solid #4a3d31;border-radius:14px;padding:18px;box-shadow:0 30px 90px #000000a6}.modal h3{margin:0 0 14px;font-size:16px}.promo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.promo-grid button{font-family:Times New Roman,"DejaVu Serif",Georgia,serif;font-size:26px;padding:8px 0}.promo-grid button img{display:block;width:46px;height:46px;margin:0 auto}.modal .cancel{margin-top:12px;width:100%}@media(max-width:900px){.layout{grid-template-columns:1fr}.side{order:2}.log{max-height:260px}}[hidden]{display:none!important}.screen{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;background:#0c0a08d1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.screen-card{width:min(420px,100%);background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:24px;display:flex;flex-direction:column;gap:14px;box-shadow:0 30px 90px #000000a6}.screen-card h1{margin:0;font-size:24px}.screen-card h1 span{color:var(--accent-2)}.screen-lead{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.screen-actions{display:flex;flex-direction:column;gap:10px;margin-top:6px}.field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.field input{padding:10px 12px;border-radius:9px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:inherit;text-transform:uppercase}.field input#online-name{text-transform:none}.field input:focus{outline:1px solid var(--accent-2)}.online-or{text-align:center;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.online-error{font-size:12px;color:#f2b8b8;background:#c850501f;border:1px solid rgba(200,80,80,.35);border-radius:9px;padding:8px 10px;word-break:break-word}.waiting-players{display:flex;flex-direction:column;gap:8px}.waiting-player{display:flex;align-items:center;gap:8px;font-size:13px}.online-top{display:flex;align-items:center;gap:12px;margin-left:auto}.room-code{font-size:12px;color:var(--muted);letter-spacing:.06em}.connection{font-size:11px;color:var(--muted)}.connection:before{content:"●";margin-right:5px;font-size:8px}.connection[data-state=open]{color:#86dca8}.connection[data-state=connecting]{color:#e4c76c}.connection[data-state=closed]{color:#e59292}.players{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 12px}.player-card{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--line);border-radius:11px;background:var(--panel);min-width:0}.player-card.active{border-color:var(--accent-2);box-shadow:0 0 0 1px var(--accent-2)}.player-card.offline{opacity:.65}.player-dot{width:12px;height:12px;border-radius:50%;border:1px solid #5a4a3a;flex:0 0 auto}.player-card.w .player-dot{background:#f0dfc0}.player-card.b .player-dot{background:#2a2520;border-color:#77685a}.player-info{display:flex;flex-direction:column;min-width:0}.player-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.player-info b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-state{margin-left:auto;font-size:11px;color:var(--muted)}.player-card.active .player-state{color:var(--accent-2)}.online-menu-actions{display:flex;flex-direction:column;gap:8px}.online-menu-actions .hint{margin:0 0 4px}@media(max-width:900px){.players{grid-template-columns:1fr}.online-top{width:100%;margin-left:0}}
