:root{--bg: #0e1726;--bg-2: #14213a;--felt: #123a2e;--board: #f3ead6;--board-line: #d8caa8;--ink: #1d2433;--ink-soft: #55607a;--paper: #fbf6ea;--gold: #d9b45b;--gold-2: #f0d488;--panel: #172440;--panel-2: #1e2f52;--panel-line: #2c3f68;--text: #eaf0ff;--text-dim: #9aa8c8;--danger: #e6584d;--good: #4bd08a;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--radius: 12px;--serif: "Iowan Old Style", "Palatino Linotype", "Georgia", "Times New Roman", serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);color:var(--text);background:radial-gradient(1200px 800px at 50% -10%,#1b2c4d 0%,transparent 60%),linear-gradient(160deg,#0c1322,#0e1726 60%,#0a101c);-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}h1,h2,h3{font-family:var(--serif);font-weight:600;letter-spacing:.2px}.btn{border:1px solid var(--panel-line);background:linear-gradient(180deg,var(--panel-2),var(--panel));color:var(--text);padding:10px 16px;border-radius:10px;font-size:14px;font-weight:600;transition:transform .08s ease,filter .15s ease,box-shadow .15s ease;box-shadow:0 2px #00000059}.btn:hover:not(:disabled){filter:brightness(1.15);transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,var(--gold-2),var(--gold));color:#2a2110;border-color:#b8923f}.btn.danger{background:linear-gradient(180deg,#f0756a,var(--danger));color:#2a0f0d;border-color:#b83b32}.btn.ghost{background:transparent;box-shadow:none}.btn.small{padding:6px 10px;font-size:12px;border-radius:8px}:focus-visible{outline:3px solid var(--gold-2);outline-offset:2px}.center-wrap{min-height:100%;display:grid;place-items:center;padding:24px}.card-panel{width:min(560px,100%);background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--panel-line);border-radius:18px;box-shadow:var(--shadow);padding:28px}.logo{text-align:center;margin-bottom:6px}.logo .mark{font-family:var(--serif);font-size:clamp(34px,6vw,52px);background:linear-gradient(180deg,var(--gold-2),var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:1px}.logo .sub{color:var(--text-dim);font-size:13px;letter-spacing:3px;text-transform:uppercase}.field{margin:14px 0}.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px;text-transform:uppercase;letter-spacing:1px}.input{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--panel-line);background:#0f1830;color:var(--text);font-size:15px}.input.code{letter-spacing:6px;text-transform:uppercase;font-weight:700;text-align:center;font-size:22px}.row{display:flex;gap:10px;flex-wrap:wrap}.row.tight{gap:6px}.grow{flex:1}.token-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.token-chip{border:1px solid var(--panel-line);background:#0f1830;border-radius:10px;padding:10px 4px;text-align:center;font-size:24px;position:relative;transition:transform .1s ease}.token-chip .cap{display:block;font-size:10px;color:var(--text-dim);margin-top:2px}.token-chip.selected{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold) inset}.token-chip.disabled{opacity:.3;cursor:not-allowed}.divider{height:1px;background:var(--panel-line);margin:20px 0}.muted{color:var(--text-dim);font-size:13px}.err{color:var(--danger);font-size:13px;margin-top:8px}.roomcode-display{font-family:var(--serif);font-size:40px;letter-spacing:10px;color:var(--gold-2);text-align:center;padding:10px;background:#0f1830;border-radius:12px;border:1px dashed var(--panel-line)}.lobby-players{display:flex;flex-direction:column;gap:8px;margin:14px 0}.lobby-player{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;background:#0f1830;border:1px solid var(--panel-line)}.dot{width:12px;height:12px;border-radius:50%;flex:none}.game{display:grid;grid-template-columns:300px 1fr 320px;grid-template-rows:100vh;gap:12px;padding:12px;max-width:1600px;margin:0 auto}.col{min-height:0;display:flex;flex-direction:column;gap:12px;overflow:hidden}.board-col{align-items:center;justify-content:center}.panel{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--panel-line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;min-height:0}.panel h3{margin:0 0 8px;font-size:14px;color:var(--gold-2);letter-spacing:.5px}.scroll{overflow-y:auto}.board-frame{position:relative;width:min(92vh,100%);aspect-ratio:1;background:linear-gradient(135deg,#1b3a2e,#0f2a20);border-radius:16px;padding:2.2%;box-shadow:var(--shadow),inset 0 0 60px #0006;border:2px solid #0a1a13}.board{position:relative;width:100%;height:100%;display:grid;grid-template-columns:repeat(11,1fr);grid-template-rows:repeat(11,1fr);background:var(--board);border:2px solid var(--ink);border-radius:6px;overflow:hidden}.space{border:1px solid var(--board-line);background:var(--board);position:relative;display:flex;flex-direction:column;padding:3px;min-width:0;font-size:9px;color:var(--ink);overflow:hidden}.space .band{height:20%;min-height:10px;margin:-3px -3px 3px;border-bottom:1px solid rgba(0,0,0,.25)}.space.left .band,.space.right .band{height:auto;width:20%;min-width:10px;margin:-3px;border:none}.space.left{flex-direction:row}.space.right{flex-direction:row-reverse}.space.top{flex-direction:column-reverse}.space.top .band{margin:3px -3px -3px;border-top:1px solid rgba(0,0,0,.25);border-bottom:none}.space .nm{font-weight:700;line-height:1.05;text-transform:uppercase;letter-spacing:.2px;font-size:8px}.space .px{margin-top:auto;font-weight:700;color:var(--ink-soft)}.space .glyph{font-size:18px;margin:auto}.space.corner{align-items:center;justify-content:center;text-align:center;background:linear-gradient(135deg,#efe4c9,#e6d8b6)}.space.owned-flag{box-shadow:inset 0 0 0 2px currentColor}.space .owner-pip{position:absolute;top:2px;right:2px;width:8px;height:8px;border-radius:50%;border:1px solid rgba(0,0,0,.4)}.space .houses{position:absolute;bottom:1px;left:0;right:0;display:flex;justify-content:center;gap:1px}.pip-house{width:5px;height:5px;background:var(--good);border:.5px solid #12331f;border-radius:1px}.pip-hotel{width:9px;height:5px;background:var(--danger);border:.5px solid #3a100c;border-radius:1px}.space.mortgaged{filter:grayscale(.7) brightness(.9)}.space.mortgaged:after{content:"MTG";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-weight:800;font-size:9px;color:#b4281ebf;transform:rotate(-18deg)}.space.highlight{animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:inset 0 0 0 2px var(--gold)}50%{box-shadow:inset 0 0 0 4px var(--gold-2)}}.board-center{position:absolute;top:12%;right:12%;bottom:12%;left:12%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;transform:rotate(-45deg);pointer-events:none}.board-center .mark{font-family:var(--serif);font-size:clamp(20px,4vw,40px);color:#123a2e;text-align:center;line-height:1;text-shadow:1px 1px 0 rgba(255,255,255,.5)}.board-center .mark small{display:block;font-size:40%;letter-spacing:4px;color:#2a5a48}.token{position:absolute;width:4.4%;height:4.4%;border-radius:50%;display:grid;place-items:center;font-size:15px;transform:translate(-50%,-50%);transition:left .16s linear,top .16s linear;box-shadow:0 2px 5px #00000080;border:2px solid rgba(255,255,255,.85);z-index:5}.dice-row{display:flex;gap:10px;justify-content:center}.die{width:40px;height:40px;border-radius:9px;background:linear-gradient(150deg,#fff,#dfe3ea);color:#16213a;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:5px;box-shadow:0 4px 10px #0006,inset 0 -3px 6px #0000001f}.die.rolling{animation:tumble .5s ease}@keyframes tumble{0%{transform:rotate(0) scale(1)}25%{transform:rotate(-90deg) scale(1.15)}50%{transform:rotate(120deg) scale(.95)}75%{transform:rotate(300deg) scale(1.1)}to{transform:rotate(360deg) scale(1)}}.die .pip{width:7px;height:7px;background:#16213a;border-radius:50%;align-self:center;justify-self:center}.roster{display:flex;flex-direction:column;gap:8px}.pcard{border:1px solid var(--panel-line);border-radius:10px;padding:8px 10px;background:#101c38;position:relative}.pcard.turn{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.pcard.bankrupt{opacity:.45;filter:grayscale(.6)}.pcard .top{display:flex;align-items:center;gap:8px}.pcard .nm{font-weight:700;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pcard .cash{font-variant-numeric:tabular-nums;font-weight:700;color:var(--gold-2)}.pcard .meta{display:flex;justify-content:space-between;font-size:11px;color:var(--text-dim);margin-top:3px}.chips{display:flex;flex-wrap:wrap;gap:3px;margin-top:6px}.chip{width:16px;height:10px;border-radius:2px;border:1px solid rgba(0,0,0,.3)}.chip.rail,.chip.util{width:12px;border-radius:50%}.badge{font-size:9px;padding:1px 5px;border-radius:6px;background:var(--panel-line);color:var(--text-dim)}.badge.jail{background:#4a1f1f;color:#ffb3ad}.status-dot{width:8px;height:8px;border-radius:50%}.status-dot.on{background:var(--good)}.status-dot.off{background:var(--danger)}.log{display:flex;flex-direction:column-reverse;gap:4px;font-size:12px;line-height:1.35}.log .entry{padding:3px 6px;border-radius:6px;border-left:2px solid var(--panel-line);color:var(--text-dim)}.log .entry.money{border-color:var(--gold);color:#e7ddc2}.log .entry.jail{border-color:var(--danger)}.log .entry.trade{border-color:#6aa9ff}.log .entry.card{border-color:#b98cff}.log .entry.win{border-color:var(--good);color:var(--good);font-weight:700}.log .entry.bankrupt{border-color:var(--danger);color:#ffb3ad}.actionbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.actionbar .turn-name{font-weight:700;margin-right:auto}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#060a14b8;display:grid;place-items:center;z-index:50;padding:20px}.modal{width:min(560px,100%);max-height:88vh;overflow-y:auto;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--panel-line);border-radius:16px;box-shadow:var(--shadow);padding:22px}.modal h2{margin:0 0 12px;color:var(--gold-2)}.deed{border-radius:10px;overflow:hidden;border:1px solid var(--ink);background:var(--paper);color:var(--ink)}.deed .deed-band{padding:8px 12px;color:#fff;text-align:center;font-family:var(--serif);font-size:16px;text-shadow:0 1px 2px rgba(0,0,0,.4)}.deed .deed-body{padding:12px 14px;font-size:13px}.deed .deed-row{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px dotted #cbb}.gamecard{perspective:1000px}.gamecard-inner{border-radius:14px;padding:26px 22px;text-align:center;color:#fff;animation:flip .6s ease;box-shadow:var(--shadow)}.gamecard-inner.fortune{background:linear-gradient(145deg,#7b3fb5,#4a2079)}.gamecard-inner.ledger{background:linear-gradient(145deg,#1f7a55,#0f4a33)}.gamecard .kind{font-family:var(--serif);font-size:22px;letter-spacing:2px;margin-bottom:10px}.gamecard .text{font-size:16px;line-height:1.4}@keyframes flip{0%{transform:rotateY(90deg);opacity:0}to{transform:rotateY(0);opacity:1}}.auction-players{display:flex;flex-direction:column;gap:6px;margin:12px 0}.auction-p{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;background:#0f1830;border:1px solid var(--panel-line)}.auction-p.active{border-color:var(--gold)}.auction-p.out{opacity:.4}.trade-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.trade-side{background:#0f1830;border:1px solid var(--panel-line);border-radius:10px;padding:10px}.prop-toggle{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:6px;font-size:12px;cursor:pointer}.prop-toggle input{accent-color:var(--gold)}.prop-toggle.on{background:#d9b45b26}.banner{position:fixed;top:10px;left:50%;transform:translate(-50%);padding:8px 16px;border-radius:20px;z-index:60;font-size:13px;font-weight:600;box-shadow:var(--shadow)}.banner.warn{background:#4a3a12;color:var(--gold-2)}.banner.err{background:#4a1616;color:#ffb3ad}:root.cb .space .band:after{content:attr(data-cb);color:#fff;font-size:7px;font-weight:800;display:grid;place-items:center;height:100%;mix-blend-mode:difference}@media (max-width: 1100px){.game{grid-template-columns:1fr;grid-template-rows:auto auto auto;height:auto}.col{overflow:visible}.board-frame{width:min(96vw,96vh)}.side-scroll{max-height:40vh}}
