/* The play surface is bounded by the viewport; only content panes scroll. */
.workspace .board-wrap,.editor-workspace .board-wrap { aspect-ratio:4/3; }
.workspace .tile,.editor-workspace .tile { width:58px; height:58px; }
.workspace .tile.corner,.editor-workspace .tile.corner { width:72px; height:72px; }
.editor-workspace { height:100dvh; min-height:0; max-width:none; padding:12px 18px; display:grid; grid-template-rows:auto minmax(0,1fr); gap:10px; overflow:hidden; }
.editor-workspace .topbar { margin:0; }
.editor-workspace .topbar h1 { font-size:1.6rem; margin:0; }
.editor-workspace .editor-layout { min-height:0; align-items:stretch; grid-template-columns:minmax(0,1fr) 300px; grid-template-rows:32px minmax(0,1fr); gap:8px 12px; }
.editor-map-tools { grid-column:1; grid-row:1; display:flex; align-items:center; gap:6px; }
.editor-map-tools small { color:var(--muted); font-size:.7rem; }
.editor-map-viewport { min-width:0; min-height:0; grid-column:1; grid-row:2; overflow:auto; overscroll-behavior:contain; }
.editor-map-surface { position:relative; margin:0 auto; }
.editor-workspace .editor-board-wrap { position:absolute; left:0; top:0; min-width:0; transform-origin:top left; }
.editor-workspace .editor-panel { position:static; grid-column:2; grid-row:1 / 3; min-height:0; overflow:auto; padding:14px; }
.editor-workspace .editor-panel ol { font-size:.78rem; }
@media(max-width:700px) {
 .editor-workspace { padding:6px; }
 .editor-workspace .topbar { flex-wrap:wrap; }
 .editor-workspace .editor-layout { grid-template-columns:minmax(0,1fr); grid-template-rows:32px minmax(0,1fr) 180px; }
 .editor-workspace .editor-panel { grid-column:1; grid-row:3; }
 .editor-map-tools small { display:none; }
}
.workspace { --side-panel-width:320px; --map-panel-gap:8px; height:100dvh; min-height:0; max-width:none; padding:12px 18px; display:grid; grid-template-rows:auto minmax(0,1fr); gap:10px; overflow:hidden; }
.workspace .topbar { margin:0; min-height:40px; gap:10px; }
.workspace .brand { font-size:1rem; }
.workspace .topbar-actions { gap:6px; }
.workspace .game-layout { min-height:0; grid-template-columns:var(--side-panel-width) minmax(0,var(--map-column-width,1fr)) var(--side-panel-width); gap:var(--map-panel-gap); align-items:stretch; margin-inline:auto; max-width:100%; }
.workspace .game-panel { min-height:0; height:100%; display:grid; gap:10px; align-content:stretch; overflow:hidden; }
.workspace .left-panel { grid-template-rows:auto minmax(0,1fr); }
.workspace .right-panel { grid-template-rows:auto minmax(90px,1fr); }
.workspace .panel { padding:12px; border-radius:14px; min-width:0; }
.workspace h3 { font-size:1.05rem; }
.workspace .roster-list { margin-top:6px; gap:2px; }
.workspace .roster-row { font-size:.8rem; padding:5px; gap:5px; }
.workspace .roster-row strong { font-size:.75rem; }
.roster-assets { display:block; color:var(--muted); font-size:.63rem; margin-top:2px; }
.workspace .active-captain { background:#cbaa4a20; outline:1px solid #e8c45d; }
.workspace .chat { min-height:0; display:grid; grid-template-rows:auto minmax(0,1fr) auto; overflow:hidden; }
.workspace .chat-feed { height:auto; min-height:0; max-height:none; overflow-y:auto; }
.workspace .chat header { margin-bottom:6px; }
.workspace .chat-message { font-size:.8rem; }
.workspace #chat-form { min-width:0; gap:5px; }
.workspace #chat-form input { min-width:0; }
.workspace #chat-form button { padding:8px; }
.workspace .map-column { position:relative; min-height:0; grid-template-rows:32px minmax(0,1fr) 184px; gap:8px; overflow:hidden; }
.workspace .game-board-scroll { min-width:0; min-height:0; overflow:auto; padding:0; overscroll-behavior:contain; }
.map-surface { position:relative; margin:0 auto; }
.workspace .board-wrap { position:absolute; left:0; top:0; min-width:0; transform-origin:top left; }
.workspace .board { overflow:visible; }
.workspace .map-tools { display:flex; gap:5px; align-items:center; min-width:0; }
.workspace-button,.holding-tabs button,.side-close { color:var(--ink); border:1px solid var(--line); border-radius:7px; background:#082a30; cursor:pointer; padding:5px 9px; font:inherit; font-size:.75rem; }
.workspace-button:hover,.holding-tabs button:hover { border-color:var(--gold); }
.workspace-button.selected,.holding-tabs button.selected { background:#e7c571; color:#1f2423; border-color:#ffe4a4; }
.map-hint { font-size:.65rem; color:var(--muted); margin-left:auto; }
#map-scale { width:38px; text-align:center; font-size:.75rem; }
.workspace .holdings-panel { min-height:0; display:grid; grid-template-rows:auto auto minmax(0,1fr); gap:6px; padding:8px; }
.workspace .holdings-panel > header { grid-row:1; }
.workspace .holdings-panel h3 { font-size:.9rem; }
.holding-tabs { grid-row:2; display:flex; gap:4px; min-width:0; overflow-x:auto; scrollbar-width:thin; padding-bottom:3px; }
.holding-tabs button { white-space:nowrap; border-bottom:3px solid var(--group,#c5ad71); font-size:.68rem; }
#holding-filter { background:#082a30; color:var(--ink); border:1px solid var(--line); border-radius:6px; padding:3px; font-size:.72rem; }
.workspace .holdings-groups { min-height:0; margin:0; display:block; overflow:auto; }
.workspace .holdings-groups details { border:0; }
.workspace .holdings-groups summary { display:none; }
.workspace .holdings-groups details > div { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); padding:0; gap:5px; }
.workspace .holdings-groups.all-groups { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); align-content:start; gap:6px; }
.workspace .holdings-groups.all-groups details { border-top:3px solid var(--group); padding:5px; }
.workspace .holdings-groups.all-groups summary { display:block; padding:3px; font-size:.7rem; pointer-events:none; }
.workspace .holdings-groups button { padding:5px; }
.workspace .holding-row { min-width:0; }
.workspace .holdings-groups button span { font-size:.72rem; }
.workspace .holdings-groups button small { font-size:.64rem; }
.workspace .holdings-groups .quick-build button { width:30px; padding:0; }
.holding-empty { font-size:.8rem; color:var(--muted); margin:6px; }
.workspace [hidden] { display:none !important; }
.workspace .turn-card { max-height: min(62dvh,490px); overflow-y:auto; }
.workspace .turn-card h2 { font-size:1.2rem; margin:3px 0; }
.workspace .turn-card > p { font-size:.75rem; margin:4px 0; }
.workspace .own-balance { display:flex; justify-content:space-between; gap:5px; font-size:.75rem; padding:5px 0; }
.own-balance strong { color:#f7d988; }
#persistent-clock { color:#ffe4a4; font-weight:800; white-space:nowrap; }
.workspace .personal-roll { display:flex; justify-content:space-between; align-items:center; padding-top:6px; margin-top:5px; }
.workspace .personal-roll small { font-size:.6rem; }
.workspace .dice { margin:0; gap:4px; }
.workspace .die { width:30px; height:30px; font-size:1.1rem; border-radius:6px; }
.workspace .personal-jail-cards { padding:5px; margin-top:6px; font-size:.68rem; }
.workspace .bank-stock { margin:5px 0; padding:5px; font-size:.68rem; }
.workspace .bank-stock small { font-size:.6rem; }
.workspace .turn-actions,.workspace .jail-actions { gap:5px; margin-top:6px; }
.workspace .turn-card .btn { min-height:34px; padding:7px; font-size:.78rem; }
.workspace .turn-card .purchase { padding-top:5px; }
.workspace .purchase p,.workspace .debt-card p { font-size:.73rem; margin:5px 0; }
.incoming-notice { width:100%; padding:7px; margin-top:6px; color:#ffebac; background:#84661f45; border:1px solid #cba54e; border-radius:7px; cursor:pointer; font-size:.75rem; }
.workspace .log { display:grid; grid-template-rows:auto auto minmax(0,1fr); min-height:0; overflow:hidden; }
.workspace .log h3 { grid-row:1; margin:0; }
.log-filters { grid-row:2; display:flex; gap:4px; margin-top:6px; }
.workspace .log ol { min-height:0; max-height:none; overflow:auto; font-size:.76rem; margin:6px 0 0; padding-left:17px; overscroll-behavior:contain; }
.workspace .log li.same-move { margin-bottom:0; border-radius:6px 6px 0 0; }
.workspace .log li.same-move + li { padding-top:2px; font-size:.68rem; opacity:.8; }
.workspace .workspace-dialog { position:absolute; z-index:50; inset:40px 0 auto auto; transform:none; width:min(var(--side-panel-width),100%); max-width:none; max-height:calc(100% - 52px); margin:0; padding:0; overflow:auto; color:var(--ink); border:1px solid #bca164; border-radius:13px; background:#06272bf5; box-shadow:0 8px 32px #0009; }
.workspace .workspace-dialog h2 { font-size:1.5rem; margin:0; }
.workspace .workspace-dialog .eyebrow { font-size:.62rem; margin:0; }
.workspace .workspace-dialog .trade-card,.workspace .workspace-dialog .player-details { padding:12px; }
.workspace .workspace-dialog header { position:sticky; top:0; background:#06272b; z-index:3; padding:8px 0; margin-bottom:6px; }
.workspace .captain-businesses,.workspace .captain-journal,.workspace .trade-list { max-height:none; overflow:visible; }
.workspace .trade-tabs { display:flex; gap:5px; margin-bottom:8px; }
.workspace .trade-layout h3 { display:none; }
.workspace .trade-builder { align-items:start; grid-template-columns:minmax(0,1fr); }
.workspace .trade-arrow { display:none; }
.workspace .trade-port-list { max-height:190px; overflow:auto; }
.workspace .trade-port-list label { font-size:.75rem; }
.workspace .trade-builder fieldset > label { font-size:.73rem; margin-top:6px; }
.workspace .new-trade input,.workspace .new-trade select { min-height:32px; }
.workspace .trade-footer { position:sticky; bottom:-12px; background:#06272b; z-index:2; padding:8px 0; border-top:1px solid var(--line); }
.trade-balance { font-size:.72rem; color:#f2d58b; line-height:1.4; }
.workspace .trade-footer .btn { min-height:34px; margin-top:5px; padding:6px; }
.workspace .trade-note { font-size:.7rem; }
.workspace .auction-info { font-size:12px; line-height:1.3; color:#f8e6b7; }
.bid-presets { display:flex; gap:5px; }
.side-switches,.side-close { display:none; }
.workspace.has-inspector .game-layout { grid-template-columns:var(--side-panel-width) minmax(0,var(--map-column-width,1fr)) var(--side-panel-width); }
.workspace.has-inspector .right-panel > .log { display:none; }
.workspace.has-inspector .turn-card .personal-roll,.workspace.has-inspector .turn-card .personal-jail-cards,.workspace.has-inspector .turn-card .bank-stock { display:none; }
.workspace.has-inspector .turn-card { max-height:38dvh; }
.persistent-extend { padding:0 6px; background:#e7c571; color:#082a30; border:0; border-radius:5px; cursor:pointer; }
.workspace .right-panel > .workspace-dialog[open] { position:relative; inset:auto; width:100%; min-height:0; height:100%; max-height:none; grid-row:2; border-radius:12px; }
.workspace .right-panel .workspace-dialog .trade-card { min-height:100%; }
.workspace .right-panel .workspace-dialog header { top:-12px; }
.workspace .right-panel .trade-port-list { max-height:140px; }
@media(max-width:1200px) {
 .workspace .game-layout { grid-template-columns:minmax(0,var(--map-column-width,1fr)) var(--side-panel-width); }
 .workspace .left-panel { display:none; }
 .workspace.has-inspector .game-layout { grid-template-columns:minmax(0,var(--map-column-width,1fr)) var(--side-panel-width); }
 .side-switches { display:flex; gap:4px; }
 .side-switches [data-side="right"] { display:none; }
 .workspace[data-side="left"] .left-panel { display:grid; position:fixed; z-index:70; top:65px; bottom:12px; left:12px; width:min(var(--side-panel-width),calc(100% - 24px)); height:auto; padding:0; background:#06272b; border:1px solid var(--line); border-radius:12px; }
 .workspace[data-side="left"] .left-panel .side-close { display:block; position:absolute; right:6px; top:3px; z-index:4; }
 .map-hint { display:none; }
}
@media(max-width:980px) {
 .workspace .map-column { order:0; }
 .workspace .right-panel { order:0; grid-template-columns:1fr; }
 .workspace .left-panel { grid-template-columns:1fr; }
 .workspace .left-panel .chat { min-height:0; grid-template-rows:auto minmax(0,1fr) auto; }
 .workspace .left-panel .chat-feed { min-height:0; height:auto; }
}
@media(max-width:700px) {
 .workspace { padding:6px; gap:5px; }
 .workspace .game-layout { grid-template-columns:minmax(0,1fr); }
 .workspace.has-inspector .game-layout { grid-template-columns:minmax(0,1fr); }
 .workspace .topbar { flex-wrap:wrap; min-height:30px; }
 .workspace .topbar .brand,.workspace .room-code { display:none; }
 .workspace .topbar-actions { flex-direction:row; flex-wrap:wrap; }
 .workspace .topbar-actions .btn { padding:5px 7px; min-height:30px; font-size:.7rem; }
 .workspace .right-panel { display:none; }
 .side-switches [data-side="right"] { display:block; }
 .workspace[data-side="right"] .right-panel { display:grid; position:fixed; z-index:70; top:65px; right:6px; bottom:8px; width:min(var(--side-panel-width),calc(100% - 12px)); height:auto; padding:0; background:#06272b; border:1px solid var(--line); border-radius:12px; }
 .workspace[data-side="right"] .right-panel .side-close { display:block; position:absolute; right:6px; top:3px; z-index:4; }
 .workspace .map-column { grid-template-rows:30px minmax(0,1fr) 160px; }
 .workspace .trade-builder { grid-template-columns:minmax(0,1fr); gap:5px; }
 .workspace .trade-arrow { display:none; }
 .workspace .workspace-dialog { inset:35px 0 auto; width:100%; max-height:calc(100% - 40px); }
}
