@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,700;9..144,900&family=Public+Sans:wght@500;700&family=JetBrains+Mono:wght@500;700&display=swap";@keyframes hud-tile-pulse-gold{0%,to{stroke-width:6;opacity:.85}50%{stroke-width:11;opacity:1}}@keyframes hud-tile-pulse-mine{0%,to{stroke-width:8;opacity:.95}50%{stroke-width:14;opacity:1}}.hud-tile-pulse-gold{animation:hud-tile-pulse-gold 1.4s ease-in-out infinite}.hud-tile-pulse-mine{animation:hud-tile-pulse-mine 1.1s ease-in-out infinite}@keyframes hud-dice-glow{0%,to{box-shadow:0 0 #ffd1668c,inset 0 -3px #0000001f,0 4px 10px #0006}50%{box-shadow:0 0 0 12px #ffd16600,inset 0 -3px #0000001f,0 4px 10px #0006}}.hud-dice-widget{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:18;display:flex;gap:16px;padding:16px 18px;pointer-events:auto;user-select:none}.hud-dice-widget.clickable{cursor:pointer}.hud-dice-widget.clickable .hud-die{animation:hud-dice-glow 1.6s ease-in-out infinite}.hud-die{width:64px;height:64px;border-radius:12px;background:#f4ead0;border:3px solid #b08740;display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;padding:8px;box-shadow:inset 0 -3px #0000001f,0 4px 10px #0006;position:relative}.hud-die-pip{background:#1a1410;border-radius:50%;width:10px;height:10px;align-self:center;justify-self:center}.hud-dice-label{position:absolute;bottom:-22px;left:50%;transform:translate(-50%);font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;letter-spacing:.12em;color:#f4d8a0;text-transform:uppercase;text-shadow:0 1px 0 rgba(0,0,0,.6);white-space:nowrap}@keyframes hud-money-float{0%{transform:translate(-50%) scale(.7);opacity:0}15%{transform:translate(-50%,-8px) scale(1.1);opacity:1}85%{transform:translate(-50%,-40px) scale(1);opacity:1}to{transform:translate(-50%,-60px) scale(.95);opacity:0}}.hud-money-float{position:fixed;z-index:60;pointer-events:none;font-family:JetBrains Mono,ui-monospace,monospace;font-weight:800;font-size:22px;letter-spacing:.04em;text-shadow:0 2px 0 rgba(0,0,0,.6),0 0 12px rgba(0,0,0,.4);animation:hud-money-float 1.5s ease-out 1 forwards}.hud-money-float.pos{color:#c5e88a}.hud-money-float.neg{color:#e8a39c}@keyframes hud-slide-down{0%{transform:translate(-50%,-80px);opacity:0}to{transform:translate(-50%);opacity:1}}.hud-slide-down{animation:hud-slide-down .32s cubic-bezier(.2,.9,.2,1.05) 1 both}@keyframes hud-slide-in-right{0%{transform:translate(60px);opacity:0}to{transform:translate(0);opacity:1}}.hud-slide-in-right{animation:hud-slide-in-right .32s cubic-bezier(.2,.9,.2,1.05) 1 both}@keyframes toast-life{0%{transform:translateY(-32px);opacity:0}8%{transform:translateY(0);opacity:1}90%{transform:translateY(0);opacity:1}to{transform:translateY(-10px);opacity:0}}.toast-stack{position:fixed;top:64px;left:50%;transform:translate(-50%);z-index:55;display:flex;flex-direction:column;gap:6px;align-items:center;pointer-events:none;max-width:min(640px,92vw)}.toast-item{font-family:var(--serif, "Fraunces", Georgia, serif);font-size:15px;font-weight:700;letter-spacing:.01em;border-radius:4px;padding:8px 16px;box-shadow:0 10px 28px #0000008c,inset 0 1px #ffffff0f;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;animation:toast-life 3.5s ease-out 1 forwards}.toast-item.tone-cream{background:linear-gradient(180deg,#1a2433f0,#0d1a26f0);color:#f4ead0;border:1.5px solid #b08740}.toast-item.tone-blue{background:linear-gradient(180deg,#1c3250f5,#12243af5);color:#d8e4f0;border:1.5px solid #5a82b4}.toast-item.tone-green{background:linear-gradient(180deg,#1c462cf5,#12321ef5);color:#d8f0d4;border:1.5px solid #5aa86b}.toast-item.tone-red{background:linear-gradient(180deg,#6b1418,#3a0a0d);color:#f4d8a0;border:1.5px solid #c9962b}.toast-item .toast-pname{font-weight:800;text-shadow:0 0 1px rgba(0,0,0,.85),0 1px 0 rgba(0,0,0,.55);padding:0 1px}@keyframes hud-debt-pulse{0%,to{box-shadow:0 0 #e43c3c73,0 6px 18px #0000008c}50%{box-shadow:0 0 0 16px #e43c3c00,0 6px 18px #0000008c}}.hud-debt-banner{animation:hud-debt-pulse 1.3s ease-in-out infinite}@keyframes hud-auction-turn-pulse{0%,to{box-shadow:0 0 #c9962b8c,0 10px 24px #00000080}50%{box-shadow:0 0 0 14px #c9962b00,0 10px 24px #00000080}}.hud-auction-myturn{animation:hud-auction-turn-pulse 1.2s ease-in-out infinite}:root{--table: #0d1a26;--table-deep: #06101a;--parchment: #e9dcb9;--parchment-dark: #d4c39a;--cream: #f4ead0;--ink: #1a1410;--ink-2: #3a2a1a;--brass: #b08740;--brass-deep: #7a5a24;--bg: #0d1a26;--surface: #1a2433;--surface-2: #243246;--line: #2d3e54;--muted: #8aa0ac;--accent: #b08740;--gold: #d4a35c;--teal: #2d5240;--bad: #a4302a;--good: #2d5240;--neutral: #b08740;--r: 4px;--shadow: 0 1px 0 rgba(0,0,0,.3), 0 12px 24px -10px rgba(0,0,0,.6);--serif: "Fraunces", Georgia, "Times New Roman", serif;--sans: "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);font-size:14px;line-height:1.4;color:var(--cream);background:radial-gradient(ellipse 60% 40% at 50% 45%,#1a2a3a 0%,transparent 70%),radial-gradient(ellipse 80% 80% at 50% 50%,var(--table) 0%,var(--table-deep) 100%);background-attachment:fixed}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");z-index:1}#root{position:relative;z-index:2}button{font:inherit;background:var(--brass);color:var(--ink);border:1px solid var(--brass-deep);border-radius:var(--r);padding:8px 14px;cursor:pointer;font-family:var(--sans);font-weight:700;letter-spacing:.02em;transition:transform 80ms ease,background .12s ease,opacity .12s ease}button:hover:not(:disabled){background:var(--gold);transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:disabled{opacity:.4;cursor:not-allowed}button.secondary{background:transparent;color:var(--cream);border:1px solid var(--line)}button.secondary:hover:not(:disabled){background:#ffffff0f;border-color:var(--brass)}button.accent{background:var(--brass);color:var(--ink)}button.gold{background:var(--gold);color:var(--ink)}button.teal{background:#3a6e54;color:var(--cream);border-color:#2d5240}button.danger{background:var(--bad);color:var(--cream);border-color:#7a1d28}.tab-row{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:10px}button.tab{background:transparent;color:var(--muted);border:1px solid transparent;border-bottom:none;border-radius:4px 4px 0 0;padding:6px 14px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-family:var(--sans);margin-bottom:-1px;position:relative;cursor:pointer;transition:color .12s ease,background .12s ease,border-color .12s ease}button.tab:hover:not(:disabled){color:var(--cream);background:#ffffff0a;transform:none}button.tab.active{color:var(--gold);background:#b087401a;border-color:var(--line);border-bottom:1px solid rgba(13,26,38,.96)}button.tab.active:after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--brass)}input,select,textarea{font:inherit;background:var(--surface);color:var(--cream);border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;font-family:var(--sans)}input:focus,select:focus{outline:1px solid var(--brass)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px;box-shadow:var(--shadow)}.row{display:flex;gap:8px;align-items:center}.col{display:flex;flex-direction:column;gap:8px}.spacer{flex:1}.tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:2px;background:var(--surface-2);font-size:11px;color:var(--cream);font-family:var(--mono);letter-spacing:.04em;border:1px solid var(--line)}.tag.heat{background:#3a1a1a;color:#e8a39c;border-color:#5a2a28}.tag.inf{background:#1a2a3a;color:#8ab4d4;border-color:#2a3a4a}.tag.cash{background:#1a2a1a;color:#8ac49a;border-color:#2a3a2a}.h1{font-family:var(--serif);font-size:32px;font-weight:900;letter-spacing:-.02em;color:var(--cream)}.h2{font-family:var(--serif);font-size:17px;font-weight:700;letter-spacing:-.01em;color:var(--cream)}.small{font-size:12px;color:var(--muted)}.app{display:grid;grid-template-rows:auto 1fr auto;height:100vh;overflow:hidden}.topbar,.page-bottom-footer{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#0d1a26d9;backdrop-filter:blur(8px)}.topbar{border-bottom:1px solid var(--line)}.page-bottom-footer{border-top:1px solid var(--line);justify-content:flex-end}.match{display:grid;grid-template-rows:1fr auto;grid-template-areas:"scene" "hotbar";gap:8px;padding:8px;height:100%;min-height:0;overflow:hidden;position:relative}.match .scene{grid-area:scene}.scene-roster{position:absolute;top:8px;left:8px;width:min(340px,42vw);z-index:12;max-height:calc(100% - 16px);overflow-y:auto;pointer-events:none}.scene-roster>*{pointer-events:auto}.scene-roster .panel{background:#0d1a26f5;backdrop-filter:blur(6px)}.scene-top-right{position:absolute;top:8px;right:8px;width:min(420px,38vw);z-index:12;max-height:calc(100% - 16px);overflow-y:auto;pointer-events:none;display:flex;flex-direction:column;gap:8px}.scene-top-right>*{pointer-events:auto}.scene-top-right .panel{background:#0d1a26f5;backdrop-filter:blur(6px)}.scene-bottom-right{position:absolute;bottom:8px;right:8px;width:min(420px,38vw);z-index:12;max-height:calc(70vh - 16px);overflow-y:auto;pointer-events:none;display:flex;flex-direction:column;gap:8px}.scene-bottom-right>*{pointer-events:auto}.scene-bottom-right .panel{background:#0d1a26f5;backdrop-filter:blur(6px);padding:12px 14px}.scene-top-center{position:absolute;top:120px;left:50%;transform:translate(-50%);width:min(440px,70vw);z-index:14;max-height:calc(100% - 140px);overflow-y:auto;pointer-events:none;display:flex;flex-direction:column;gap:8px;align-items:stretch}.scene-top-center>*{pointer-events:auto}.scene-top-center .panel{background:#0d1a26f5;backdrop-filter:blur(6px)}.scene{background:transparent;border-radius:var(--r);position:relative;min-height:0;overflow:hidden;display:grid;place-items:center}.hotbar{grid-area:hotbar;display:grid;grid-template-columns:auto 1fr auto 2fr;align-items:center;gap:14px;padding:10px 14px;background:#0d1a26f5;backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:6px;min-height:56px;width:calc(100% - 428px)}.hotbar-toggle{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2);color:var(--cream);cursor:pointer;font:inherit;font-size:12px;font-weight:700;letter-spacing:.02em;transition:background .12s ease,border-color .12s ease}.hotbar-toggle:hover{background:#ffffff0f;border-color:var(--brass)}.hotbar-toggle.on{background:#b087402e;border-color:var(--brass);color:var(--gold)}.hotbar-toggle .toggle-dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.hotbar-toggle.on .toggle-dot{background:var(--gold);box-shadow:0 0 6px #d4a35cb3}.hotbar-status{line-height:1.2}.hotbar-status-line{font-size:14px}.hotbar-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}.dice-pair{display:flex;gap:6px;align-items:center}.dice-pair.muted{opacity:.35}.card{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);padding:10px}.card.good{border-left:4px solid var(--good)}.card.bad{border-left:4px solid var(--bad)}.card.neutral{border-left:4px solid var(--neutral)}.bars{display:flex;height:14px;border-radius:99px;overflow:hidden;background:var(--surface-2);border:1px solid var(--line)}.bars .b-good{background:#2d5240}.bars .b-neutral{background:#b08740}.bars .b-bad{background:#a4302a}.log{font-family:var(--mono);font-size:11px;color:var(--cream)}.log .ent{padding:2px 0;border-bottom:1px dashed var(--line)}.players-strip{display:flex;gap:6px;flex-wrap:wrap}.player-chip{display:flex;gap:6px;padding:6px 8px;border-radius:var(--r);border:1px solid var(--line);background:var(--surface)}.player-chip .dot{width:10px;height:10px;border-radius:50%}.player-chip.active{outline:2px solid var(--brass)}.market-row{display:grid;grid-template-columns:1fr 80px auto;gap:6px;align-items:center;padding:4px 0;border-bottom:1px dashed var(--line)}.toast{position:fixed;top:12px;right:12px;background:var(--ink);color:var(--cream);padding:8px 12px;border-radius:var(--r);border:1px solid var(--brass);box-shadow:var(--shadow);z-index:50}.tutorial-backdrop{position:fixed;inset:0;background:#06101ab3;z-index:40;display:grid;place-items:center}.tutorial-card{background:var(--surface);padding:18px;border-radius:var(--r);max-width:480px;border:1px solid var(--brass-deep)}.home{display:flex;flex-direction:column;align-items:center;height:100%;padding:16px;overflow-y:auto;gap:16px}.home:before,.home:after{content:"";flex:1 0 0;min-height:0}.home .card{width:min(440px,92vw);padding:20px;background:var(--surface);border-color:var(--brass-deep)}.home .logo{width:280px;height:auto}.code-pill{font-family:var(--mono);font-size:22px;letter-spacing:4px;background:var(--brass);color:var(--ink);padding:6px 14px;border-radius:2px;font-weight:700}@media (max-width: 800px){.scene-roster{width:min(280px,60vw)}.scene-top-right,.scene-bottom-right{width:min(320px,70vw)}.scene-top-center{width:min(360px,88vw)}.hotbar{width:100%}}@keyframes flow-dash{0%{stroke-dashoffset:0}to{stroke-dashoffset:-24}}@keyframes pulse-ring{0%{r:34;opacity:.85}50%{r:38;opacity:.4}to{r:34;opacity:.85}}@keyframes pulse-arrow{0%,to{opacity:.6}50%{opacity:1}}.board-flow{animation:flow-dash .9s linear infinite}.board-ring{animation:pulse-ring 1.6s ease-in-out infinite}.board-next-arrow{animation:pulse-arrow 1.2s ease-in-out infinite}@keyframes mascot-pulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:.35;transform:scale(1.18)}}.mascot-pulse{animation:mascot-pulse 1.1s ease-in-out infinite;transform-origin:center;transform-box:fill-box}.money{font-family:var(--mono);letter-spacing:.01em}.money-lg{font-family:var(--mono);font-size:18px;font-weight:700;letter-spacing:.02em;color:var(--cream)}.player-name{font-size:16px;font-weight:700;letter-spacing:.01em}.mini-bar{height:6px;border-radius:3px;background:#00000059;border:1px solid rgba(176,135,64,.25);overflow:hidden}.mini-bar>.fill{height:100%;transition:width .22s ease,background .22s ease}.mini-bar-label{font-size:10px;font-family:var(--mono);letter-spacing:.08em;color:var(--muted);text-transform:uppercase}@keyframes endturn-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-3px)}20%,40%,60%,80%{transform:translate(3px)}}.endturn-shake{animation:endturn-shake .6s cubic-bezier(.36,.07,.19,.97) both}.debt-panel{border:2px solid var(--bad);box-shadow:0 0 0 1px #a4302a66,0 8px 20px -10px #a4302a99;animation:debt-pulse 2.2s ease-in-out infinite}@keyframes debt-pulse{0%,to{box-shadow:0 0 0 1px #a4302a66,0 8px 20px -10px #a4302a99}50%{box-shadow:0 0 0 2px #a4302ab3,0 8px 24px -8px #a4302ad9}}.roster-row{display:flex;flex-direction:column;gap:6px;padding:10px 12px 10px 14px;border-radius:var(--r);border:1px solid var(--line);background:var(--surface);cursor:pointer;text-align:left;font:inherit;color:inherit;position:relative;transition:background .12s ease,border-color .12s ease,box-shadow .22s ease;width:100%}.roster-row:hover:not(:disabled){background:#ffffff0a}.roster-row.active{border-color:var(--brass);background:#b087401a;box-shadow:inset 4px 0 0 var(--brass),0 8px 22px -10px #b087408c}.roster-row .roster-head{display:flex;align-items:center;gap:10px}.roster-row .roster-head .roster-name{min-width:0;flex:1}.roster-row .roster-cash{font-family:var(--mono);font-size:22px;font-weight:800;letter-spacing:-.01em;color:var(--cream);line-height:1}.roster-row .roster-body{display:grid;grid-template-columns:minmax(0,auto) 1fr;grid-template-rows:auto auto;column-gap:14px;row-gap:6px;align-items:center}.roster-row .roster-body>.roster-cash{grid-column:1;grid-row:1}.roster-row .roster-body>.roster-senators{grid-column:1;grid-row:2}.roster-row .roster-body>.roster-stat.heat{grid-column:2;grid-row:1}.roster-row .roster-body>.roster-stat.influence{grid-column:2;grid-row:2}.roster-row .roster-stat{display:flex;flex-direction:column;gap:3px;min-width:0}.roster-row .roster-senators{display:inline-flex;align-items:baseline;gap:4px;font-family:var(--mono);font-size:13px;color:var(--cream);line-height:1}.roster-row .roster-senators-icon{font-size:14px;color:var(--brass)}.roster-row .roster-senators-count{font-weight:700}.rent-ladder{display:flex;flex-direction:column;font-size:12px}.rent-ladder-head{display:grid;grid-template-columns:1fr auto auto;gap:12px;padding:6px 10px 4px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px dashed var(--line)}.rent-ladder-head>span:nth-child(2),.rent-ladder-head>span:nth-child(3){text-align:right;font-family:var(--mono)}.rent-ladder-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;padding:6px 10px;align-items:center;border-bottom:1px solid rgba(255,255,255,.04);position:relative}.rent-ladder-row:last-child{border-bottom:none}.rent-ladder-row.current{background:#b0874029;box-shadow:inset 3px 0 0 var(--brass)}.rent-ladder-row.current .rent-ladder-label{color:var(--gold);font-weight:700}.rent-ladder-tier{display:inline-flex;align-items:center;gap:8px;min-width:0}.rent-ladder-marker{font-size:10px;color:var(--muted);width:10px;text-align:center}.rent-ladder-row.current .rent-ladder-marker{color:var(--brass)}.rent-ladder-label{font-family:var(--sans);letter-spacing:.01em}.rent-ladder-amount{font-family:var(--mono);font-weight:700;text-align:right;min-width:56px;display:inline-flex;align-items:baseline;justify-content:flex-end;gap:6px}.rent-monopoly-active{color:var(--cream)}.rent-monopoly-dim{color:var(--muted);opacity:.5}.rent-ladder-current-tag{font-size:8px;font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;padding:1px 4px;border-radius:2px;background:#b0874040;color:var(--gold);font-weight:700}.rent-ladder-current-tag.gold{background:var(--brass);color:var(--ink)}.market-grid{display:grid;grid-template-columns:minmax(72px,1fr) 56px 52px 52px 56px;column-gap:6px;row-gap:2px;align-items:center;font-size:12px}.market-grid>.row-strong{font-weight:700}.market-grid>.right{text-align:right}.market-grid>.mono{font-family:var(--mono)}.market-grid .head{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border-bottom:1px dashed var(--line);padding-bottom:3px;margin-bottom:3px}.popover{position:absolute;z-index:80;background:var(--surface);border:1px solid var(--brass-deep);border-radius:var(--r);padding:10px 12px;box-shadow:var(--shadow);min-width:220px}.popover-backdrop{position:fixed;inset:0;z-index:79}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.die3d-stage{width:36px;height:36px;perspective:220px;display:inline-block}.die3d-cube{position:relative;width:36px;height:36px;transform-style:preserve-3d;transition:transform .38s cubic-bezier(.2,.8,.2,1);will-change:transform}.die3d-cube.rolling{animation:die3d-tumble .6s cubic-bezier(.3,.7,.3,1)}.die3d-stage.idle .die3d-cube{animation:die3d-wobble 4.2s ease-in-out infinite}.die3d-face{position:absolute;inset:0;width:36px;height:36px;background:var(--cream);border:1px solid var(--ink);border-radius:6px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:5px;gap:2px;box-shadow:inset 0 0 0 1px #b0874059;backface-visibility:hidden}.die3d-pip{width:5px;height:5px;border-radius:50%;background:var(--ink);place-self:center;box-shadow:inset 0 -1px #ffffff26}.die3d-front{transform:translateZ(18px)}.die3d-back{transform:rotateY(180deg) translateZ(18px)}.die3d-right{transform:rotateY(90deg) translateZ(18px)}.die3d-left{transform:rotateY(-90deg) translateZ(18px)}.die3d-top{transform:rotateX(90deg) translateZ(18px)}.die3d-bottom{transform:rotateX(-90deg) translateZ(18px)}@keyframes die3d-tumble{0%{transform:rotateX(0) rotateY(0) rotate(0)}to{transform:rotateX(360deg) rotateY(360deg) rotate(180deg)}}@keyframes die3d-wobble{0%,to{transform:rotateX(-20deg) rotateY(25deg)}50%{transform:rotateX(-12deg) rotateY(35deg)}}
