:root{--bg:#f4f1ea;--panel:#fff;--text:#1f2328;--muted:#6b7280;--border:#ddd6c8;--accent:#2e7d32;--accent-text:#fff;--warn:#ef6c00;--danger:#c62828;--current:#fff7d6;--radius:10px;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#17191c;--panel:#22252a;--text:#e8e6e3;--muted:#9aa0a6;--border:#3a3f46;--current:#3a3420}}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1,h2,h3{margin:0 0 .5em}h2{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:1rem}button{font:inherit;border:1px solid var(--border);background:var(--accent);color:var(--accent-text);cursor:pointer;border-radius:8px;padding:.55em 1em}button:disabled{opacity:.45;cursor:not-allowed}button.ok{background:var(--accent)}button.warn{background:var(--warn)}button.danger{background:var(--danger)}button.link{color:var(--muted);background:0 0;border:none;padding:0 .4em;text-decoration:underline}input,select{font:inherit;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:8px;padding:.5em .7em}.muted{color:var(--muted)}.small{font-size:.8em}.error{color:var(--danger);margin:0}.row{flex-wrap:wrap;align-items:center;gap:.5em;display:flex}.spread{justify-content:space-between}.center-page{place-items:center;min-height:100vh;padding:16px;display:grid}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);width:min(420px,100%);padding:24px}.panel.wide{width:min(640px,100%)}.form{flex-direction:column;gap:14px;display:flex}.form label{flex-direction:column;gap:4px;display:flex}.code-input{letter-spacing:.4em;text-align:center;font-size:2rem}.big-code{letter-spacing:.2em;text-align:center;font-size:4rem;font-weight:700}.game-layout{grid-template:"header header header"48px"left board right"1fr"footer footer footer"/280px 1fr 300px;min-width:1024px;height:100vh;display:grid;position:relative}.game-layout>header{background:var(--panel);border-bottom:1px solid var(--border);grid-area:header;justify-content:space-between;align-items:center;padding:0 16px;display:flex}.game-layout>.left,.game-layout>.right{background:var(--panel);padding:16px;overflow-y:auto}.game-layout>.left{border-right:1px solid var(--border);grid-area:left}.game-layout>.right{border-left:1px solid var(--border);flex-direction:column;grid-area:right;gap:12px;display:flex}.game-layout>.board-area{grid-area:board;place-items:center;display:grid;position:relative;overflow:hidden}.game-layout>footer{background:var(--panel);border-top:1px solid var(--border);grid-area:footer;padding:12px 16px}.game-layout.is-paused>:not(.pause-overlay):not(.toast){opacity:.35;pointer-events:none}.pause-overlay{z-index:10;place-items:center;display:grid;position:absolute;inset:0}.pause-banner{background:var(--panel);border:2px solid var(--border);border-radius:var(--radius);padding:20px 40px;font-size:1.6rem;font-weight:600}.badge{background:var(--border);border-radius:999px;padding:2px 8px;font-size:.8em}.badge-open{color:#1b5e20;background:#c8e6c9}.badge-reconnecting,.badge-connecting{color:#8a4b00;background:#ffe0b2}.chip{vertical-align:middle;border-radius:50%;width:12px;height:12px;display:inline-block}.players{margin:0;padding:0;list-style:none}.players li{border-radius:6px;align-items:center;gap:8px;padding:6px 8px;display:flex}.players li.current{background:var(--current)}.players .name{flex:1}.players .turn{color:var(--muted);font-size:.75em}.log{flex:1;min-height:120px;font-size:.9em;overflow-y:auto}.log-line{border-bottom:1px solid var(--border);padding:3px 0}.finance dl{grid-template-columns:1fr auto;gap:6px 12px;margin:0 0 12px;display:grid}.finance dd{text-align:right;margin:0}.finance .strong{font-weight:700}.card{background:var(--panel);border-radius:var(--radius);border:3px solid;width:330px;box-shadow:0 10px 34px #00000059}.card-category{color:#fff;justify-content:space-between;align-items:center;padding:6px 12px;font-size:.85em;font-weight:600;display:flex}.card-body{flex-direction:column;gap:8px;padding:12px 14px;display:flex}.card-body h3,.card-body p{margin:0}.card-numbers{gap:4px;margin:0;display:grid}.card-numbers div{border-bottom:1px dashed var(--border);justify-content:space-between;padding-bottom:3px;display:flex}.card-numbers dd{margin:0;font-weight:700}.card-chip{color:#fff;border:none;box-shadow:0 4px 14px #0000004d}.sell{border-top:1px solid var(--border);flex-direction:column;gap:6px;padding-top:8px;display:flex}.sell-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sell-row .qty{width:70px}button.link.light{color:#fff;opacity:.85}.negative{color:var(--danger)}.modal-backdrop{z-index:30;background:#00000073;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:var(--radius);border:1px solid var(--border);width:min(760px,100%);max-height:90vh;padding:18px 20px;overflow-y:auto}.modal-head{justify-content:space-between;align-items:center;display:flex}.sheet{flex-direction:column;gap:14px;display:flex}.sheet-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.sheet h3{border-bottom:2px solid var(--border);padding-bottom:4px;font-size:.9rem}.sheet-row{justify-content:space-between;align-items:center;gap:8px;padding:3px 0;font-size:.92em;display:flex}.sheet-row.strong{border-top:1px solid var(--border);font-weight:700}.sheet-cashflow{background:color-mix(in srgb, var(--accent) 18%, transparent);border-radius:8px;justify-content:space-between;align-items:center;padding:10px 14px;font-size:1.1em;display:flex}.sheet-cashflow.negative{background:color-mix(in srgb, var(--danger) 18%, transparent)}.money-input{align-items:center;gap:4px;display:inline-flex}.money-input input{width:96px;padding:.3em .5em}.money-input button,.small-button{padding:.3em .7em;font-size:.9em}button.secondary{background:var(--panel);color:var(--text);width:100%;margin-top:12px}.finance .cash{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.finance .cash b{font-size:1.4rem}.finance h3{color:var(--muted);margin:12px 0 4px;font-size:.85rem}.exit-progress .bar{background:var(--border);border-radius:4px;height:8px;margin-top:4px;overflow:hidden}.exit-progress .bar div{background:var(--accent);height:100%;transition:width .4s}ul.plain{margin:0;padding:0;font-size:.9em;list-style:none}.clickable{cursor:pointer}.players li.clickable:hover,.overview tr.clickable:hover{outline:1px solid var(--border)}.game-layout>.board-area{padding:12px}.board{aspect-ratio:1;max-width:100%;height:100%;position:relative}.board svg{width:100%;height:100%;display:block}.board .cell{stroke:var(--bg);stroke-width:3px}.board .cell:hover{filter:brightness(1.15)}.board-center{fill:var(--panel);stroke:var(--border);stroke-width:2px}.board-title{text-anchor:middle;letter-spacing:.15em;fill:var(--muted);opacity:.35;font-size:34px;font-weight:700}.token{stroke:#fff;stroke-width:3px;filter:drop-shadow(0 2px 3px #00000073)}.token-me{stroke:#111}.token-label{text-anchor:middle;pointer-events:none;font-size:15px;font-weight:700}.board-middle{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:10px;width:46%;height:46%;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.board-middle>*{pointer-events:auto}.board-loading{color:var(--muted)}.landing{background:var(--panel);border-radius:var(--radius);border:3px solid;max-width:70%;padding:8px 14px;animation:.25s ease-out landing-in;position:absolute;top:0;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #0000002e}@keyframes landing-in{0%{opacity:0;transform:translate(-50%,-8px)}}.legend{background:var(--panel);border-radius:8px;padding:4px 6px;font-size:.85em;position:absolute;bottom:0;left:0}.legend ul{margin:6px 0 0;padding:0;list-style:none}.dice-row{perspective:700px;gap:18px;display:flex}.die-slot{--die-size:54px;--die-half:27px;width:var(--die-size);height:var(--die-size);position:relative}.die-shadow{background:radial-gradient(closest-side,#00000073,#0000);border-radius:50%;height:12px;position:absolute;bottom:-10px;left:4px;right:4px}.die-flight,.die{transform-style:preserve-3d;position:absolute;inset:0}.die-face,.die-core{border-radius:12px;position:absolute;inset:0}.die-face{backface-visibility:hidden;background:radial-gradient(circle at 30% 25%,#fff 0%,#fff0 55%),linear-gradient(145deg,#fdfcf8,#e6e0d2);grid-template:repeat(3,1fr)/repeat(3,1fr);padding:8px;display:grid;box-shadow:inset 0 0 0 1px #00000014,inset -3px -4px 8px #0000001f}.die-core{background:#e9e3d6;border-radius:4px}.die-face span{border-radius:50%;place-self:center;width:10px;height:10px}.die-face .pip{background:radial-gradient(circle at 35% 30%,#4a4f57,#111418 70%);box-shadow:inset 0 1px 2px #0009,0 1px #ffffffb3}.face-1 .pip{background:radial-gradient(circle at 35% 30%,#e0565b,#a3171c 70%);width:14px;height:14px}.segmented{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.segmented button{background:var(--panel);color:var(--text);border:none;border-radius:0;min-width:42px}.segmented button.active{background:var(--accent);color:var(--accent-text)}.icon-button{background:0 0;border:none;padding:2px 6px;font-size:1.2rem}.winner{font-size:1.5rem;font-weight:700;position:absolute;top:24px}.actions{flex-wrap:wrap;align-items:center;gap:8px;min-height:42px;display:flex}.actions .qty{width:90px}.request{color:var(--muted);margin-left:auto}.approvals{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.approvals li{border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.host-controls{gap:8px;display:flex}.overview{border-collapse:collapse;width:100%;font-size:.85em}.overview td,.overview th{text-align:right;padding:4px}.overview td:first-child{text-align:left}.overview tr.current{background:var(--current)}.games{padding-left:18px}.toast{background:var(--danger);color:#fff;z-index:20;cursor:pointer;border-radius:8px;padding:10px 18px;position:fixed;bottom:90px;left:50%;transform:translate(-50%)}.presence{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.presence.on{background:#43a047;box-shadow:0 0 0 2px #43a04740}.presence.off{border:1.5px solid var(--muted);background:0 0}.host-footer{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.act-for{border-left:1px solid var(--border);align-items:center;gap:8px;margin-left:auto;padding-left:16px;display:flex}.log-filter{padding:.3em .5em;font-size:.85em}.approvals input{padding:.3em .5em}.sound{position:relative}.sound-panel{z-index:25;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;width:280px;padding:12px 14px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 30px #0000004d}.sound-panel hr{border:none;border-top:1px solid var(--border);margin:2px 0}.slider{grid-template-columns:1fr 110px 38px;align-items:center;gap:8px;font-size:.9em;display:grid}.slider input{width:100%;padding:0}@media (width<=1280px){.game-layout{grid-template-columns:240px 1fr 250px}.game-layout>.left,.game-layout>.right{padding:12px;font-size:.92em}.game-layout>.board-area{padding:8px}.host-controls .label{display:none}.host-controls button{min-width:44px;font-size:1.1em}.overview{font-size:.78em}.overview td,.overview th{padding:4px 2px}}.profession-icon{vertical-align:middle;object-fit:contain;line-height:1;display:inline-block}.exit-ready{color:var(--accent);margin:6px 0 0;font-size:13px;font-weight:600}.welcome{text-align:center;flex-direction:column;align-items:center;gap:12px;font-size:18px;display:flex}.players .turn.offer,.offer-note{color:var(--warn);font-weight:600}.loan-offer{flex-wrap:wrap;align-items:center;gap:8px;font-weight:600;display:inline-flex}.lend{border-top:1px solid var(--border);margin-top:16px;padding-top:12px}.lend h3{margin:0 0 8px}.lend input[type=number]{width:110px}.lend .qty{width:60px}
