:root{color-scheme:dark;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}html,body{margin:0;padding:0;background:radial-gradient(ellipse at top,#1a2238,#0b0d13 60%) fixed;color:#e8eaf0;min-height:100vh}#root{min-height:100vh}button{background:linear-gradient(180deg,#232a3a,#181c28);color:#e8eaf0;border:1px solid #2f3648;padding:6px 12px;border-radius:6px;font:inherit;cursor:pointer;transition:transform .05s ease,filter .1s ease}button:hover:not(:disabled){filter:brightness(1.15)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}input,select{background:#1a1d26;color:#e8eaf0;border:1px solid #2a2e3a;padding:6px 10px;border-radius:6px;font:inherit}label{display:inline-flex;flex-direction:column;gap:4px;font-size:12px;color:#9aa0ad}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#1a1d26;padding:1px 6px;border-radius:4px}.landing{max-width:760px;margin:64px auto;padding:0 16px}.landing h1{font-size:42px;margin:0;letter-spacing:-.01em}.landing .tagline{color:#9aa0ad;margin:8px 0 32px}.landing .cards{display:grid;grid-template-columns:1fr 1fr;gap:16px}.landing .card{background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #232a3a;border-radius:12px;padding:20px;box-shadow:0 8px 20px #00000040}.landing .card h2{font-size:18px;margin:0 0 8px}.landing .card p{margin:0 0 12px;color:#9aa0ad}.landing .card form{display:flex;flex-direction:column;gap:12px}.error{color:#ff8c8c;margin-top:12px}.error.toast{position:fixed;bottom:16px;right:16px;background:#2a1414;border:1px solid #4a1c1c;padding:8px 12px;border-radius:8px}.loading{display:grid;place-items:center;min-height:60vh;gap:6px;color:#9aa0ad}.loading .status{font-size:12px}.lobby{max-width:760px;margin:32px auto;padding:0 16px;display:grid;gap:16px}.lobby .room-header{display:flex;justify-content:space-between;align-items:center}.lobby .room-header h1{margin:0;font-size:24px}.lobby .room-header .status{color:#9aa0ad;font-size:12px}.seats h2{font-size:14px;color:#9aa0ad;margin:0 0 8px;text-transform:uppercase;letter-spacing:.08em}.seats ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.seats .seat{display:flex;align-items:center;gap:10px;background:#131722;border:1px solid #232a3a;padding:10px 12px;border-radius:8px}.seats .seat .dot{display:inline-block;width:12px;height:12px;border-radius:50%}.seats .seat .name{flex:1}.seats .empty{color:#6c7281;font-style:italic;padding:8px}.seats .spectators{color:#9aa0ad;margin-top:8px;font-size:12px}.badge{font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:2px 6px;border-radius:4px;background:#232a3a;color:#c9cdd6}.badge.host{background:#4a3a1a;color:#d6cc8a}.badge.ready{background:#1a4a30;color:#8ad6a8}.badge.not-ready{background:#4a3a1a;color:#d6cc8a}.badge.you{background:#1a3a6e;color:#c8d6f4}.badge.turn{background:#4a1a4a;color:#d68ad6}.badge.bot{background:#2c3a4a;color:#8aaad6}.badge.resp-accepted{background:#1a4a30;color:#8ad6a8}.badge.resp-declined{background:#4a2222;color:#d68a8a}.badge.resp-counter{background:#3a3a1a;color:#d6cc8a}.badge.resp-pending{background:#2a2e3a;color:#9aa0ad}.kick{font-size:10px;padding:2px 6px;background:#2a1414;border:1px solid #4a1c1c;color:#ff8c8c}.add-bot{margin-top:8px;background:linear-gradient(180deg,#1c4a2c,#14241a);border:1px solid #2a4a30;color:#8ad6a8}.join,.controls{background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #232a3a;padding:16px;border-radius:12px}.join h2,.controls h2{font-size:14px;color:#9aa0ad;margin:0 0 12px;text-transform:uppercase;letter-spacing:.08em}.join form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.controls .row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.controls .hint{color:#9aa0ad;font-size:12px;margin-top:8px}.game{display:grid;gap:12px;padding:16px 16px 132px}.game-header{display:flex;gap:16px;align-items:center;justify-content:space-between;background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #232a3a;border-radius:10px;padding:10px 16px}.header-meta h1{font-size:16px;margin:0}.room-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#d6cc8a;letter-spacing:.06em}.turn-indicator{color:#9aa0ad;font-size:12px;display:inline-flex;gap:8px;margin-top:4px}.turn-indicator .sep{opacity:.5}.dice-area{display:inline-flex;align-items:center}.dice-pair{display:inline-flex;align-items:center;gap:8px;background:transparent;border:0;padding:6px 10px;border-radius:10px;color:inherit;font:inherit;cursor:default;position:relative}.dice-pair.clickable{cursor:pointer;background:#ffeb781a;border:1px solid rgba(255,235,120,.45);animation:dice-pulse 1.6s ease-in-out infinite}.dice-pair.clickable:hover{filter:brightness(1.15)}.dice-pair.clickable:active{transform:translateY(1px)}.dice-pair:disabled{cursor:default}.dice-pair.dice-idle.rollable .die.idle{opacity:1}.dice-roll-hint,.dice-reroll-hint{font-size:10px;color:#f4e6a4;letter-spacing:.06em;text-transform:uppercase;margin-left:4px}.dice-reroll-hint{color:#9aa0ad;opacity:.75}@keyframes dice-pulse{0%,to{box-shadow:0 0 #ffeb7800}50%{box-shadow:0 0 0 6px #ffeb7826}}.die{filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))}.die.idle{opacity:.55}.dice-sum{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;font-size:18px;color:#d6cc8a;background:#1a1d26;border:1px solid #2a2e3a;padding:4px 10px;border-radius:6px}.dice-sum.red{color:#ff8c8c;border-color:#4a1c1c}.game-body{display:grid;grid-template-columns:240px 1fr 260px;gap:12px;align-items:start}@media(max-width:1100px){.game-body{grid-template-columns:1fr}}.players{display:flex;flex-direction:column;gap:8px}.player-card{background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #232a3a;border-radius:10px;padding:10px 12px;font-size:12px;display:grid;gap:4px}.player-card.current{outline:2px solid #5a7ed6;outline-offset:-1px}.player-head{display:flex;align-items:center;gap:8px}.player-dot{display:inline-block;width:10px;height:10px;border-radius:50%}.player-name{font-weight:600}.player-vp{color:#d6cc8a;font-weight:600;display:flex;gap:6px;align-items:center}.player-vp .award{font-size:14px}.player-stats,.player-pieces{display:flex;gap:10px;color:#9aa0ad}.hand-mini{transform:scale(.55);transform-origin:top left;height:56px;overflow:hidden}.hand-mini .hand-fan{padding:0}.board-area{background:radial-gradient(ellipse at top,#1a2540,#0d1525 80%);border:1px solid #232a3a;border-radius:14px;padding:12px;display:grid;place-items:center;position:relative;box-shadow:0 10px 24px #00000059}.events{background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #232a3a;border-radius:10px;padding:12px;font-size:12px;max-height:540px;overflow:auto}.events h3{margin:0 0 6px;font-size:12px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.08em}.events ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.events .muted{color:#6c7281}.spectating{color:#9aa0ad;font-size:12px;padding:4px}.action-panel{display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #232a3a;border-radius:10px;padding:10px;margin-top:10px;font-size:13px;width:100%}.action-panel.hint{color:#d6cc8a}.action-panel button:disabled{opacity:.4}.action-panel .bank-trade-mini{display:inline-flex;gap:4px;align-items:center}.action-panel .bank-trade-mini select{padding:4px 6px}.waiting{margin-top:8px;color:#9aa0ad;font-size:13px;font-style:italic}.winner-banner{background:linear-gradient(180deg,#4a3a1a,#2a2614);border:1px solid #6a5424;color:#f4e6a4;padding:14px 18px;border-radius:10px;font-size:16px;text-align:center}.resource-card{position:relative;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4));-webkit-user-select:none;user-select:none}.resource-card.clickable{cursor:pointer}.resource-card.clickable:hover{transform:translateY(-3px);transition:transform .1s ease}.resource-card.selected{transform:translateY(-10px)}.resource-card.dimmed{opacity:.4}.hand-fan{display:inline-flex;align-items:flex-end;padding:0 16px;min-height:96px}.hand-fan .resource-card{margin-left:-22px}.hand-fan .resource-card:first-child{margin-left:0}.empty-hand{color:#6c7281;font-style:italic;font-size:12px;padding:28px}.my-hand-area{position:fixed;bottom:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;padding:8px;background:linear-gradient(180deg,#0d111a00,#0d111ad9 30%);pointer-events:none}.my-hand-area>*{pointer-events:auto}.my-hand-label{font-size:10px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.1em;margin-bottom:2px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#080a10c7;display:grid;place-items:center;z-index:100}.modal{background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #2a3144;border-radius:12px;padding:22px;max-width:720px;width:92%;box-shadow:0 18px 40px #00000080}.modal h2{margin:0 0 6px}.modal p{margin:0 0 12px;color:#9aa0ad;font-size:13px}.modal-foot{display:flex;align-items:center;justify-content:space-between;margin-top:14px;gap:12px}.card-row{display:flex;flex-wrap:wrap;gap:8px;padding:8px;min-height:84px;background:#0d1018;border:1px solid #1f2535;border-radius:8px}.card-row.tiny{gap:4px;padding:4px;min-height:auto}.trade-modal.compact{max-width:560px}.trade-modal.compact .modal-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}.trade-modal.compact .modal-head h2{margin:0;font-size:18px}.trade-modal.compact .modal-sub{color:#9aa0ad;font-size:11px}.trade-builder{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:start;background:#0d1018;border:1px solid #1f2535;border-radius:10px;padding:10px}.trade-column{display:flex;flex-direction:column;gap:4px}.trade-col-head{font-size:10px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.08em;padding:0 4px 4px;border-bottom:1px solid #1f2535;margin-bottom:4px}.trade-divider{display:flex;align-items:center;justify-content:center;font-size:22px;color:#6c7281;padding:0 6px}.trade-row{display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:8px;padding:3px 4px;border-radius:6px;font-size:12px}.trade-row:hover{background:#ffffff08}.trade-glyph{font-size:16px;text-align:center}.trade-res-name{color:#c9cdd6;text-transform:capitalize}.trade-counter{display:inline-flex;align-items:center;gap:4px;background:#1a1d26;border:1px solid #2a2e3a;border-radius:6px;padding:1px}.trade-counter button{background:transparent;border:0;color:#c9cdd6;width:22px;height:22px;padding:0;font-size:14px;font-weight:700;border-radius:4px}.trade-counter button:hover:not(:disabled){background:#2a2e3a}.trade-counter .trade-num{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;min-width:18px;text-align:center;font-weight:700;color:#f4e6a4}.trade-hint{grid-column:2 / 4;font-size:9px;color:#6c7281;letter-spacing:.04em;margin-top:-2px;margin-left:0}.trade-preview{margin:10px 0 4px;padding:8px 12px;background:#0d1018;border:1px solid #1f2535;border-radius:8px;font-size:13px;text-align:center;color:#c9cdd6}.bundle-summary{display:inline-flex;flex-wrap:wrap;gap:4px 8px;align-items:center;color:#f4e6a4}.bundle-summary.empty{color:#6c7281;font-style:italic}.bundle-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;border:1px solid var(--res-color, #2a2e3a);background:#ffffff0a;font-size:12px}.bundle-chip .bundle-num{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;color:#f4e6a4}.bundle-chip .bundle-glyph{font-size:14px;line-height:1}.bundle-chip .bundle-word{color:#c9cdd6;font-size:11px;letter-spacing:.04em}.bundle-sep{color:#6c7281;margin:0 -2px}.toast-line{display:flex;gap:8px;align-items:baseline;padding:2px 4px;font-size:12px}.toast-line .toast-label{font-size:10px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.08em;min-width:60px}.trade-modal{max-width:880px}.trade-workspace{display:flex;flex-direction:column;gap:14px}.trade-zones{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:stretch}.trade-arrow{display:flex;align-items:center;justify-content:center;font-size:32px;color:#6c7281}.drop-zone{background:#0d1018;border:2px dashed #2a3144;border-radius:12px;padding:12px;min-height:130px;display:flex;flex-direction:column;gap:8px;transition:border-color .1s ease,background .1s ease}.drop-zone.over{border-color:#ffeb78;background:#ffeb780f}.zone-label{font-size:11px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.08em}.zone-hint{font-size:11px;color:#6c7281;font-style:italic}.bundle-stack{display:flex;gap:24px;align-items:flex-end;flex-wrap:wrap;flex:1;padding:4px 6px}.bundle-stack.empty{color:#6c7281;font-style:italic;font-size:12px;align-items:center;justify-content:center}.pile{position:relative}.pile-card{position:absolute;filter:drop-shadow(0 2px 3px rgba(0,0,0,.4))}.pile-card.removable{cursor:pointer}.pile-card.removable:hover{transform:translateY(-2px);transition:transform .08s ease}.pile-card:last-child{z-index:10}.pile-count{position:absolute;bottom:-16px;left:50%;transform:translate(-50%);font-size:11px;font-weight:700;color:#d6cc8a;background:#1a1d26;border:1px solid #2a2e3a;padding:1px 6px;border-radius:4px}.pile-extra{position:absolute;top:0;right:-12px;font-size:10px;color:#9aa0ad;font-weight:700}.trade-sources{display:flex;flex-direction:column;gap:10px;background:#0d1018;border:1px solid #1f2535;border-radius:10px;padding:10px}.source-row{display:flex;align-items:center;gap:12px}.source-label{font-size:10px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.08em;min-width:144px}.source-cards{display:flex;gap:6px;flex:1;flex-wrap:wrap}.source-card{position:relative;cursor:grab;-webkit-user-select:none;user-select:none}.source-card.dimmed{cursor:not-allowed}.source-card:active:not(.dimmed){cursor:grabbing}.source-card:hover:not(.dimmed){transform:translateY(-2px);transition:transform .08s ease}.source-count{position:absolute;bottom:-10px;left:50%;transform:translate(-50%);font-size:10px;font-weight:700;color:#d6cc8a;background:#1a1d26;border:1px solid #2a2e3a;padding:1px 6px;border-radius:4px}.source-count.empty{color:#6c7281;border-color:#2a2e3a;background:#14161f}.bundle-label{font-size:10px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}.toast-bundles{display:flex;align-items:center;gap:12px;padding:6px 4px}.toast-bundle{flex:1}.toast-bundle .bundle-stack{gap:18px}.toast-arrow{font-size:18px;color:#6c7281}.toast-note{font-size:10px;color:#d68a8a;margin-top:6px;font-style:italic}.resp-row{padding:6px;border-radius:6px}.resp-row.resp-accepted{background:#1a4a3040}.resp-row.resp-counter{background:#3a3a1a40}.counter-detail{display:inline-flex;align-items:center;gap:6px}.counter-detail .bundle-stack{gap:16px;padding:2px}.trade-toast{position:fixed;top:80px;right:16px;background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #2a3144;border-radius:10px;padding:12px;width:320px;z-index:50;box-shadow:0 10px 24px #0006}.trade-toast .toast-head{font-size:13px;margin-bottom:8px}.trade-toast .toast-body{display:flex;flex-direction:column;gap:6px;font-size:11px}.trade-toast .toast-foot{display:flex;gap:6px;margin-top:10px;justify-content:flex-end}.trade-toast .muted{color:#6c7281}.trade-waiting{margin-top:10px;background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #2a3144;border-radius:10px;padding:12px;font-size:12px;width:100%}.response-list{list-style:none;padding:0;margin:8px 0;display:flex;flex-direction:column;gap:6px}.response-list li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.response-list .name{font-weight:600;min-width:80px}.counter-summary{display:inline-flex;align-items:center;gap:4px}.counter-grid{margin-top:8px}.counter-grid>div+div{margin-top:8px}.not-found{padding:64px}.mode-hint{background:#ffeb781f;border:1px solid rgba(255,235,120,.45);color:#f4e6a4;padding:8px 12px;border-radius:8px;margin-top:8px;font-size:13px;text-align:center;width:100%}.chat-panel{position:fixed;bottom:16px;right:16px;width:280px;background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #2a3144;border-radius:10px;box-shadow:0 8px 20px #0006;z-index:30;display:flex;flex-direction:column;font-size:12px}.chat-panel.closed{width:120px}.chat-head{display:flex;align-items:center;gap:6px;padding:8px 10px;cursor:pointer;border-bottom:1px solid #2a3144;-webkit-user-select:none;user-select:none}.chat-panel.closed .chat-head{border-bottom:none}.chat-head>span:first-child{flex:1;text-transform:uppercase;letter-spacing:.08em;font-size:11px;color:#9aa0ad}.chat-count{font-size:10px;padding:1px 6px;border-radius:4px;background:#232a3a;color:#c9cdd6}.chat-toggle{color:#6c7281}.chat-list{max-height:240px;overflow-y:auto;padding:8px 10px;display:flex;flex-direction:column;gap:4px}.chat-empty{color:#6c7281;font-style:italic;padding:4px 0}.chat-msg{display:flex;gap:6px}.chat-msg .chat-from{color:#d6cc8a;font-weight:600;flex-shrink:0;max-width:60px;overflow:hidden;text-overflow:ellipsis}.chat-msg.mine .chat-from{color:#8aaad6}.chat-msg .chat-text{color:#e8eaf0;word-break:break-word;flex:1}.chat-input{display:flex;gap:4px;padding:8px;border-top:1px solid #2a3144}.chat-input input{flex:1;min-width:0}.chat-input button{padding:4px 8px}.connection-banner{position:sticky;top:0;z-index:40;text-align:center;padding:6px 12px;font-size:12px;letter-spacing:.06em}.connection-banner.conn-connecting{background:#1a3a6e;color:#c8d6f4}.connection-banner.conn-closed{background:#4a3a1a;color:#d6cc8a}.connection-banner.conn-error{background:#4a1c1c;color:#ff8c8c}.eog-modal{max-width:760px}.eog-title{font-size:32px;margin:0;text-align:center}.eog-table{width:100%;border-collapse:collapse;margin:12px 0}.eog-table th,.eog-table td{text-align:center;padding:6px 8px;border-bottom:1px solid #232a3a}.eog-table th{font-size:11px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.eog-table tbody tr.winner-row{background:#ffeb7814}.eog-table td.total{font-weight:700;color:#d6cc8a;font-size:16px}.eog-table .player-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}.turn-timer{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;background:#1a1d26;border:1px solid #2a2e3a;padding:4px 10px;border-radius:6px;color:#c9cdd6;margin-left:8px}.turn-timer.warning{color:#ff8c8c;border-color:#4a1c1c;background:#2a1414}.turn-timer.muted{opacity:.5}.game-options{background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #232a3a;padding:16px;border-radius:12px}.game-options h2{font-size:14px;color:#9aa0ad;margin:0 0 12px;text-transform:uppercase;letter-spacing:.08em}.opts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 16px}.dev-modal{max-width:720px}.picker-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.picker-side{background:#0d1018;border:1px solid #1f2535;border-radius:10px;padding:10px}.picker-cards{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.picker-monop{justify-content:center;padding:12px 0}.app-loading{min-height:100vh;background:#0d1117}.password-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0d1117;padding:16px}.password-gate-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px;background:#161b22;border:1px solid #232a35;border-radius:12px;padding:24px}.password-gate-card h1{margin:0;font-size:24px}.password-gate-card p{margin:0;color:#9aa0ad}.password-gate-card input{background:#0d1117;border:1px solid #2a323d;border-radius:6px;color:#e6edf3;padding:10px 12px;font-size:14px}.password-gate-card button{background:#2f6feb;color:#fff;border:0;border-radius:6px;padding:10px 12px;font-weight:600;cursor:pointer}.password-gate-card button:disabled{opacity:.5;cursor:not-allowed}.password-gate-error{color:#ff8c8c;font-size:13px}.share-input{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;padding:10px 12px;border-radius:6px;border:1px solid #2a323d;background:#0d1117;color:#e6edf3;font-size:13px}.row{display:flex;gap:8px;margin-top:12px}.hint{color:#9aa0ad;font-size:13px;margin-top:12px}.hint code{background:#0d1117;padding:2px 6px;border-radius:4px;color:#e6edf3}.quick-trade{display:flex;gap:8px;align-items:center;padding:10px 12px;background:#0d1117;border-radius:8px;margin-bottom:12px}.quick-trade .quick-label{font-size:12px;color:#9aa0ad;font-weight:600;margin-right:4px}.quick-trade .quick-arrow{color:#9aa0ad}.quick-trade select{background:#161b22;border:1px solid #2a323d;color:#e6edf3;border-radius:4px;padding:4px 6px;font-size:13px}.quick-trade button{background:#2f6feb;color:#fff;border:0;padding:6px 14px;border-radius:4px;cursor:pointer;font-weight:600;font-size:13px}.quick-trade button:disabled{opacity:.4;cursor:not-allowed}.bot-config{display:inline-flex;gap:4px;margin-left:4px}.bot-config select{background:#0d1117;border:1px solid #2a323d;color:#e6edf3;border-radius:4px;padding:2px 4px;font-size:11px}.side-panel{background:linear-gradient(180deg,#1a1f2e,#131722);border:1px solid #232a3a;border-radius:10px;padding:8px 10px;font-size:12px}.panel-title{font-size:10px;color:#9aa0ad;text-transform:uppercase;letter-spacing:.1em;margin-bottom:6px}.bank-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}.bank-cell{display:flex;justify-content:space-between;align-items:center;padding:2px 6px;border-radius:4px;border-left:3px solid var(--res-color, #2a2e3a);background:#0d1018}.bank-cell .bank-name{color:#c9cdd6;font-size:11px}.bank-cell .bank-count{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;color:#f4e6a4;font-size:12px}.vp-status{display:flex;align-items:baseline;gap:6px;padding:6px 8px;border-radius:6px;background:#0d1018;margin-bottom:6px}.vp-status .vp-now{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:22px;font-weight:800;color:#f4e6a4}.vp-status .vp-of{color:#9aa0ad;font-size:12px}.vp-status .vp-todo{color:#c9cdd6;font-size:11px;margin-left:auto}.vp-status .vp-win{color:#8ad6a8;font-size:11px;margin-left:auto;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.vp-paths{font-size:10px;color:#9aa0ad;padding:0 4px 6px;border-bottom:1px solid #1f2535;margin-bottom:4px}.vp-paths .vp-path{line-height:1.55}.build-guide .build-row{display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:4px;padding:4px 0;border-bottom:1px solid #1f2535}.build-guide .build-row:last-child{border-bottom:none}.build-icon{font-size:12px}.build-name{color:#c9cdd6;font-size:11px}.build-row.afford .build-name{color:#8ad6a8;font-weight:600}.build-row.miss .build-name{color:#9aa0ad}.build-pips{display:inline-flex;gap:2px;flex-wrap:wrap}.pip-resource{display:inline-block;width:10px;height:14px;border-radius:2px;border:1px solid #2a2e3a}.pip-resource.have{box-shadow:0 0 4px currentColor}.pip-resource.missing{opacity:.25;background:transparent!important}.res-brick{--res-color: #b86136}.res-wood{--res-color: #2c7239}.res-sheep{--res-color: #82c473}.res-wheat{--res-color: #e8b942}.res-ore{--res-color: #7a8294}.pip-resource.res-brick.have{background:#b86136;color:#b86136;border-color:#6e2e16}.pip-resource.res-wood.have{background:#2c7239;color:#2c7239;border-color:#1c4a23}.pip-resource.res-sheep.have{background:#82c473;color:#82c473;border-color:#558c45}.pip-resource.res-wheat.have{background:#e8b942;color:#e8b942;border-color:#a8801d}.pip-resource.res-ore.have{background:#7a8294;color:#7a8294;border-color:#525a72}.pip-resource.res-brick{border-color:#6e2e16}.pip-resource.res-wood{border-color:#1c4a23}.pip-resource.res-sheep{border-color:#558c45}.pip-resource.res-wheat{border-color:#a8801d}.pip-resource.res-ore{border-color:#525a72}.secret-vp{color:#d6a5f4;font-weight:600;margin-left:6px}.secret-vp strong{color:#f4e6a4}.open-turn-trade-btn{margin-left:12px;background:linear-gradient(180deg,#2a4a7a,#182a4a);border:1px solid #4a6aaa;color:#c8d6f4;padding:3px 10px;border-radius:14px;font-size:11px;letter-spacing:.04em;cursor:pointer}.open-turn-trade-btn:hover{filter:brightness(1.15)}.open-turn-banner{margin-top:6px;padding:6px 10px;font-size:12px;background:linear-gradient(180deg,#2a3a6e,#14224a);border:1px solid #4a6aaa;border-radius:8px;color:#c8d6f4}.check-opt{flex-direction:row!important;align-items:center!important;gap:6px!important}.check-opt input[type=checkbox]{margin:0}body.theme-dopamine{background:radial-gradient(ellipse at top,#2d1a4a,#0e0a25 70%) fixed}body.theme-dopamine .game-header,body.theme-dopamine .player-card,body.theme-dopamine .events,body.theme-dopamine .action-panel,body.theme-dopamine .side-panel,body.theme-dopamine .modal,body.theme-dopamine .trade-waiting,body.theme-dopamine .chat-panel,body.theme-dopamine .trade-toast{background:linear-gradient(180deg,#2a1f4a,#1a1230);border-color:#4a3a8a}body.theme-dopamine .board-area{background:radial-gradient(ellipse at top,#2d1a5a,#0e0a25 80%);border-color:#4a3a8a;box-shadow:0 10px 32px #8c50dc4d}body.theme-dopamine button{background:linear-gradient(180deg,#4a3aaa,#2a1f7a);border-color:#6a55d6;color:#f4e6ff}body.theme-dopamine .winner-banner{background:linear-gradient(180deg,#c47a1a,#6a3a1a);border-color:#f4b842;color:#fff8c4;animation:dopamine-shine 2s ease-in-out infinite}body.theme-dopamine .player-card.current{outline-color:#f4e6a4;box-shadow:0 0 18px #f4e6a440}body.theme-dopamine .dice-pair.clickable{background:#f48af42e;border-color:#f48af4}@keyframes dopamine-shine{0%,to{filter:brightness(1)}50%{filter:brightness(1.18)}}.global-toggles{position:fixed;top:12px;right:12px;z-index:200;display:flex;gap:8px}.global-toggles button{box-shadow:0 4px 14px #0006}.sound-toggle-fixed,.theme-toggle-fixed{z-index:200;background:linear-gradient(180deg,#232a3a,#181c28);border:1px solid #2f3648;color:#c9cdd6;padding:6px 12px;border-radius:8px;font-size:12px;letter-spacing:.05em;cursor:pointer;box-shadow:0 4px 14px #0006}.sound-toggle-fixed,.theme-toggle-fixed{background:linear-gradient(180deg,#232a3a,#181c28);border:1px solid #2f3648;color:#c9cdd6;padding:6px 12px;border-radius:8px;font-size:12px;letter-spacing:.05em;cursor:pointer}.sound-toggle-fixed:hover,.theme-toggle-fixed:hover{filter:brightness(1.15)}body.theme-dopamine .theme-toggle-fixed,body.theme-dopamine .sound-toggle-fixed{background:linear-gradient(180deg,#f4a83a,#c47a1a);color:#1a1a1a;border-color:#f4d68a;font-weight:700;box-shadow:0 4px 18px #f4a83a73}.theme-toggle-wrap{position:relative}.theme-toggle-fixed{display:inline-flex;align-items:center;gap:8px}.theme-toggle-label{font-weight:600}.theme-toggle-caret{opacity:.65;font-size:10px}.theme-swatch{display:inline-flex;gap:2px;padding:2px;background:#00000040;border-radius:4px}.theme-swatch-dot{width:8px;height:8px;border-radius:2px;display:inline-block}.theme-menu{position:absolute;top:calc(100% + 6px);right:0;margin:0;padding:6px;list-style:none;background:linear-gradient(180deg,#1d2230,#131722);border:1px solid #2f3648;border-radius:10px;box-shadow:0 12px 32px #0000008c;min-width:240px;z-index:210}.theme-menu li{margin:0}.theme-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;background:transparent;border:1px solid transparent;border-radius:6px;color:#d8dde8;cursor:pointer;text-align:left;font-size:12px;letter-spacing:.02em}.theme-menu-item:hover{background:#ffffff0d;border-color:#2f3648}.theme-menu-item.active{background:#78a0ff1a;border-color:#4a6abf}.theme-menu-text{display:flex;flex-direction:column;flex:1}.theme-menu-label{font-weight:700}.theme-menu-desc{color:#8893a8;font-size:11px}.theme-menu-check{color:#6ae0a0;font-weight:800}body.theme-dopamine-max{background:radial-gradient(ellipse at top,#4a0a6a,#1a0040,#050015) fixed}body.theme-dopamine-max .game-header,body.theme-dopamine-max .player-card,body.theme-dopamine-max .events,body.theme-dopamine-max .action-panel,body.theme-dopamine-max .side-panel,body.theme-dopamine-max .modal,body.theme-dopamine-max .trade-waiting,body.theme-dopamine-max .chat-panel,body.theme-dopamine-max .trade-toast{background:linear-gradient(180deg,#2a0a5a,#16003a);border-color:#ff2dd6;box-shadow:0 0 0 1px #ff2dd640,0 8px 22px #ff2dd62e}body.theme-dopamine-max .board-area{background:radial-gradient(ellipse at top,#3a0a6a,#0a0020 80%);border-color:#ff2dd6;box-shadow:0 0 28px #ff2dd659}body.theme-dopamine-max button{background:linear-gradient(180deg,#ff2dd6,#7a00aa);border-color:#ff8ae6;color:#fff;text-shadow:0 0 4px rgba(255,255,255,.4)}body.theme-dopamine-max .winner-banner{background:linear-gradient(180deg,#ffd400,#ff2dd6);border-color:#fff;color:#16003a;animation:dopamine-shine 1.2s ease-in-out infinite}body.theme-dopamine-max .player-card.current{outline-color:#ffd400;box-shadow:0 0 22px #ffd40080}body.theme-dopamine-max .dice-pair.clickable{background:#ff2dd640;border-color:#ff2dd6}body.theme-dopamine-max .theme-toggle-fixed,body.theme-dopamine-max .sound-toggle-fixed{background:linear-gradient(180deg,#ff2dd6,#7a00aa);color:#fff;border-color:#ffd400;font-weight:800;box-shadow:0 0 18px #ff2dd699}body.theme-night{background:linear-gradient(180deg,#0c1018,#060a10) fixed;color:#b5bcc8}body.theme-night .game-header,body.theme-night .player-card,body.theme-night .events,body.theme-night .action-panel,body.theme-night .side-panel,body.theme-night .modal,body.theme-night .trade-waiting,body.theme-night .chat-panel,body.theme-night .trade-toast{background:#11161e;border-color:#1d2530;color:#b5bcc8}body.theme-night .board-area{background:#0a0e14;border-color:#1d2530;box-shadow:0 8px 22px #0009}body.theme-night button{background:linear-gradient(180deg,#1e2632,#131820);border-color:#2a3340;color:#b5bcc8}body.theme-night .winner-banner{background:linear-gradient(180deg,#2a3a4a,#1a242e);border-color:#3a5060;color:#d4dde6}body.theme-night .player-card.current{outline-color:#6ab0d8;box-shadow:0 0 12px #6ab0d833}body.theme-night .dice-pair.clickable{background:#78a0c81a;border-color:#5a7892}body.theme-night .theme-toggle-fixed,body.theme-night .sound-toggle-fixed{background:linear-gradient(180deg,#1a2230,#0e131c);color:#8a96a8;border-color:#2a3340;box-shadow:none}body.theme-mono{background:#1a1a1a fixed;color:#d8d8d8}body.theme-mono .game-header,body.theme-mono .player-card,body.theme-mono .events,body.theme-mono .action-panel,body.theme-mono .side-panel,body.theme-mono .modal,body.theme-mono .trade-waiting,body.theme-mono .chat-panel,body.theme-mono .trade-toast{background:#242424;border-color:#404040;color:#d8d8d8}body.theme-mono .board-area{background:#161616;border-color:#404040;box-shadow:0 8px 22px #000000b3}body.theme-mono button{background:linear-gradient(180deg,#3a3a3a,#222);border-color:#555;color:#e6e6e6}body.theme-mono .winner-banner{background:linear-gradient(180deg,#d8d8d8,#888);border-color:#fff;color:#111}body.theme-mono .player-card.current{outline-color:#fff;box-shadow:0 0 12px #ffffff2e}body.theme-mono .dice-pair.clickable{background:#ffffff1a;border-color:#d8d8d8}body.theme-mono .theme-toggle-fixed,body.theme-mono .sound-toggle-fixed{background:linear-gradient(180deg,#3a3a3a,#1a1a1a);color:#e6e6e6;border-color:#555;box-shadow:none}
