:root{--felt:#27382f;--felt-dark:#17231d;--table-edge:#100a07}
body.tabletop{min-height:100vh;background:radial-gradient(ellipse at 50% 20%,#4c2d1d,#2c190f 48%,#160d09);padding-bottom:190px}
.opponent-rail{min-height:96px;display:grid;grid-template-columns:auto minmax(380px,1fr) auto auto;align-items:center;gap:1rem;padding:.65rem 1rem;background:linear-gradient(#211b15,#12100d);border-bottom:5px solid #090706;box-shadow:0 8px 24px #0009;position:relative;z-index:12}.game-mark h1{font-size:1.45rem;white-space:nowrap}.game-mark p{margin:0}.header-actions{display:flex;gap:.5rem;align-items:center}.header-actions a{color:var(--paper);font-size:.78rem}.opponent-rail .player{padding:.55rem .8rem;background:#1c1b17}.opponent-rail .tableau-line{display:none}.opponent-rail .player-heading h2{font-size:.8rem;margin:0}.opponent-rail .resource-row{margin-top:.25rem}.opponent-rail .token{font-size:.7rem;padding:.15rem .35rem}
.tabletop .phase-rail{position:relative;top:auto;justify-content:flex-start;gap:1rem;margin-top:.45rem;padding:.35rem .1rem 0;background:transparent;border:0}.tabletop-main{padding:.75rem 1rem 0;max-width:1600px}.surface-tabs{display:flex;align-items:end;gap:.4rem;padding-left:1rem}.surface-tab{border-radius:.7rem .7rem 0 0;padding:.65rem 1.4rem;background:#17130f;border-bottom:0}.surface-tab.active{background:var(--felt);transform:translateY(1px)}.objective-mini{margin-left:auto;padding:.5rem;color:#bdb397;font-size:.78rem}.objective-mini b{color:var(--gold)}
.table-surface{position:relative;min-height:540px;border:1px solid #6f5335;border-radius:.6rem;background:linear-gradient(135deg,var(--felt),var(--felt-dark));box-shadow:0 10px 0 var(--table-edge),0 16px 30px #000b,inset 0 0 80px #0005;overflow:hidden}.table-surface[hidden]{display:none}.board-toolbar{display:flex;align-items:center;gap:.4rem;padding:.35rem .6rem;background:#101711dd;position:absolute;right:.7rem;top:.7rem;z-index:5;border-radius:.35rem}.board-toolbar button{padding:.3rem .55rem}.board-toolbar span{font-size:.7rem;color:#b9b09a}.board-viewport{height:540px;overflow:hidden;cursor:grab;touch-action:none}.board-viewport.panning{cursor:grabbing}.board-camera{width:1000px;margin:48px auto 0;transform-origin:center;will-change:transform}.tabletop .board{padding:2.3rem;gap:1.2rem;background:linear-gradient(#d2bd8b,#ae8f5f);border:8px solid #967146;border-radius:3% 5% 4% 2%;box-shadow:0 14px 0 #563a22,0 22px 24px #0009,inset 0 0 35px #6a472c88;transform:rotate(-.35deg)}
.tabletop .district{background:#bda474;color:#20150d;border-color:#5e4933;box-shadow:0 5px 10px #3a261999;clip-path:polygon(3% 9%,42% 1%,96% 7%,100% 70%,91% 98%,49% 93%,4% 100%,0 42%)}.tabletop .district:nth-of-type(2){clip-path:polygon(5% 2%,95% 8%,100% 45%,94% 97%,43% 94%,2% 100%,0 25%)}.tabletop .district:nth-of-type(3){clip-path:polygon(2% 7%,56% 1%,98% 10%,93% 92%,55% 100%,4% 94%,0 48%)}.tabletop .district:nth-of-type(4){clip-path:polygon(7% 3%,94% 0,100% 63%,90% 99%,48% 93%,0 100%,3% 33%)}.tabletop .district-controller,.tabletop .district-population small,.tabletop .district-population>b,.tabletop .building-card small{color:#594936}.tabletop .district-population,.tabletop .building-card{background:#e0c99a;color:#24170d}.tabletop .district.riot{background:transparent}.tabletop .worker{border-radius:1px;background:#eee9da;box-shadow:2px 3px 0 #817a6a;transform:none}.tabletop .strike-worker{border:2px solid #b12f20;position:relative}.tabletop .strike-worker:after{content:'⚑';position:absolute;color:#b32016;font-size:.75rem;left:.05rem;top:-.45rem}
#construction-surface,#exchange-surface,#influence-surface{overflow:auto;padding:1rem}.tabletop .markets{margin:0;background:transparent;border:0}.exchange-heading{text-align:center;margin:1rem}.exchange-market{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;max-width:1000px;margin:2rem auto}.commodity-lot{min-height:220px;padding:1rem;display:grid;align-content:space-between;text-align:center;background:#d7c28f;color:#23170d;border:5px double #60452c;border-radius:.5rem;box-shadow:0 12px 18px #0008}.commodity-mark{font-size:3rem;color:#563c27}.commodity-lot .button-row{justify-content:center}
.action-tray{position:fixed;z-index:20;left:50%;bottom:174px;transform:translateX(-50%);width:min(720px,92vw);max-height:46vh;overflow:auto;padding:.8rem 1rem;background:linear-gradient(#33291e,#1b1712);border:2px solid #a57d42;border-radius:.8rem .8rem 0 0;box-shadow:0 -10px 30px #0009}.player-table{position:fixed;z-index:15;bottom:0;left:0;right:0;min-height:178px;padding:.7rem 1rem;background:linear-gradient(#211a13,#100c09);border-top:7px solid #0b0806;box-shadow:0 -10px 30px #0009}.player-table .player{max-width:calc(100% - 150px);padding:.65rem}.ledger-drawer{position:absolute;right:1rem;bottom:1rem;width:130px}.ledger-drawer[open]{width:min(520px,85vw);background:#211e18;padding:.8rem;border:1px solid var(--gold)}.ledger-drawer .log{max-height:220px}
body.push-active:before{display:none}.push-active .dice{justify-content:center}.push-active .die{width:78px;height:78px;border-radius:14px;box-shadow:4px 7px 0 #0a0705;font-size:1.8rem}
@media(max-width:900px){body.tabletop{padding-bottom:230px}.opponent-rail{grid-template-columns:1fr auto}.opponent-rail #opponent-panel{grid-column:1/-1}.game-mark{display:none}.objective-mini{display:none}.exchange-market{grid-template-columns:repeat(2,1fr)}.player-table{min-height:220px}.action-tray{bottom:216px}.board-camera{margin-left:-80px}.tabletop .board{grid-template-columns:repeat(2,430px)}}

/* Canvas city plan with semantic district controls floating above it. */
.board-camera{width:1040px;height:680px;margin:-12px auto 0;position:relative;filter:drop-shadow(0 16px 13px #000b)}
#city-map{position:absolute;inset:0;width:1040px;height:680px;border-radius:18px;box-shadow:0 14px 0 #563a22}
.tabletop .board{position:absolute;inset:38px 38px 50px;padding:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:22px 28px;background:none;border:0;box-shadow:none;transform:none}
.tabletop .board .map-lines{display:none}
.tabletop .district{min-height:0;background:#e4d3aaa8;box-shadow:0 5px 10px #3a261966;backdrop-filter:blur(1px)}

/* Map refinement: districts become labels and piece summaries, not panels. */
.tabletop .district{background:transparent;border:0;box-shadow:none;backdrop-filter:none;clip-path:none;padding:.65rem;overflow:visible}
.tabletop .district:hover,.tabletop .district:focus-visible{background:#f1ddb026;outline:3px solid #f1d588;transform:none}
.tabletop .district.selected{outline:4px solid #f1d588;outline-offset:-5px;background:#ffe5a51c}
.tabletop .district h3{display:inline-flex;background:#e5d2a9e8;color:#281a10;padding:.28rem .5rem;margin:.2rem 0;border:1px solid #5b432c;box-shadow:2px 3px 0 #4c3522;max-width:80%}
.tabletop .district-controller{display:inline-block;background:#24180dcc;color:#f0d9aa;padding:.16rem .4rem;border-radius:2px}
.tabletop .district .zone-track{display:none}
.tabletop .district-population{position:absolute;top:3.2rem;right:.6rem;width:165px;grid-template-columns:1fr 1fr;background:#ead9bddd;border:1px solid #685139;padding:.35rem;box-shadow:2px 3px 0 #60442c}
.tabletop .district-population>span:nth-child(2){display:none}.tabletop .district-population>b{grid-column:1/-1;font-size:.62rem}
.tabletop .district .property-stack{position:absolute;left:.7rem;right:.7rem;bottom:.65rem;display:flex;gap:.25rem;align-items:end;overflow:hidden;min-height:46px}
.tabletop .district .building-card{width:88px;min-width:88px;min-height:45px;padding:.3rem;background:#ead7afe8;border:1px solid #5b432c;border-top:4px solid #66513b;border-left-width:1px;box-shadow:2px 4px 5px #36231599;display:block;font-size:.62rem;transform:rotate(-1deg)}
.tabletop .district .building-card:nth-child(even){transform:rotate(1deg)}.tabletop .district .building-card.owner-human{border-top-color:var(--player-human)}.tabletop .district .building-card.owner-ai{border-top-color:var(--player-ai)}.tabletop .district .building-card small{font-size:.54rem}.tabletop .district .staff-track{margin-top:.2rem}.tabletop .district .staff-slot{width:.48rem;height:.48rem}
.tabletop .district .neutral-card{border-style:dashed}.tabletop .district .ruin-card{background:#45251fe8;color:#ffc3ae}
.action-tray{left:auto;right:1rem;transform:none;width:min(430px,38vw);max-height:38vh;border-radius:.8rem 0 0 0}.push-active .action-tray{left:50%;right:auto}
@media(max-width:900px){.action-tray{left:50%;right:auto;transform:translateX(-50%);width:92vw}.tabletop .district-population{width:140px}.tabletop .district .property-stack{display:none}}

/* Expanded map world: overview fits the whole board; zoom reveals districts. */
.table-surface{height:clamp(540px,calc(100vh - 350px),960px);min-height:540px}.board-viewport{height:100%}
.board-camera{width:1405px;height:1120px;margin:-180px auto 0}
#city-map{width:1405px;height:1120px}
.tabletop .board{inset:78px 55px 70px 72px;gap:26px 25px;pointer-events:none}
.tabletop .district-population{display:none}

/* District buttons remain accessible hit regions; all visible state is Canvas. */
.tabletop .district>*{display:none!important}
.tabletop .district,.tabletop .district:hover,.tabletop .district:focus-visible,.tabletop .district.selected{background:transparent;box-shadow:none;outline:0;border:0}
.tabletop .district{pointer-events:none}
body.tabletop.placement-active .board{pointer-events:auto}
body.tabletop.placement-active .district{pointer-events:auto;cursor:pointer}
body.tabletop.labor-district-selection .board{pointer-events:auto}
body.tabletop.labor-district-selection .district{pointer-events:auto;cursor:pointer}
body.tabletop.labor-district-selection .map-inspect-target,body.tabletop.labor-district-selection .map-property-action{pointer-events:none}
body.tabletop.labor-district-selection .district:after{content:"Choose district";position:absolute;left:50%;top:50%;z-index:9;transform:translate(-50%,-50%);padding:.55rem .85rem;background:#17120ee8;border:2px solid #efc33f;border-radius:5px;color:#f7d86e;font:700 .74rem/1 Georgia,serif;letter-spacing:.08em;text-transform:uppercase;opacity:0;transition:opacity .15s ease,transform .15s ease;pointer-events:none}
body.tabletop.labor-district-selection .district:hover:after,body.tabletop.labor-district-selection .district:focus-within:after{opacity:1;transform:translate(-50%,-50%) scale(1.04)}
body.tabletop.labor-district-selection .district:not(:has(.building-card)):after{content:"Unclaimed · skipped";border-color:#716552;color:#9e9585}
.tabletop .district:nth-of-type(1){clip-path:polygon(0 7%,88% 0,100% 20%,96% 91%,78% 100%,0 92%)}
.tabletop .district:nth-of-type(2){clip-path:polygon(3% 8%,22% 0,94% 8%,100% 78%,91% 100%,0 91%,4% 21%)}
.tabletop .district:nth-of-type(3){clip-path:polygon(5% 0,91% 7%,100% 89%,12% 100%,0 70%)}
.tabletop .district:nth-of-type(4){clip-path:polygon(0 7%,91% 10%,100% 0,95% 100%,3% 100%)}
.map-property-action{position:absolute;z-index:3;width:78px;height:82px;padding:0;background:transparent!important;border:0!important;box-shadow:none!important;outline:0!important;pointer-events:auto}.map-property-action:hover,.map-property-action:focus,.map-property-action:focus-visible{background:transparent!important;border:0!important;box-shadow:none!important;outline:0!important}.property-foundry{left:42px;top:71px}.property-lantern{left:671px;top:71px}.property-riverhook{left:58px;top:533px}.property-market{left:698px;top:532px}
.city-tooltip{position:absolute;z-index:8;width:430px;display:grid;grid-template-columns:170px 1fr;gap:.9rem;padding:.8rem;background:#17130ff2;border:3px solid #d6bd88;border-radius:12px;box-shadow:0 18px 45px #000d;color:#ead9b8}.city-tooltip:before{content:"";position:absolute;width:18px;height:18px;background:#17130f;border-left:3px solid #d6bd88;border-bottom:3px solid #d6bd88;transform:rotate(45deg)}.tooltip-foundry{left:160px;top:72px}.tooltip-foundry:before{left:-12px;top:38px}.tooltip-lantern{left:805px;top:72px}.tooltip-lantern:before{left:-12px;top:38px}.tooltip-riverhook{left:160px;top:500px}.tooltip-riverhook:before{left:-12px;top:38px}.tooltip-market{left:805px;top:500px}.tooltip-market:before{left:-12px;top:38px}.city-tooltip-art{width:170px;height:170px;border:6px solid #d8cdb6;border-radius:10px;box-shadow:0 0 0 2px #625b50,0 10px 18px #0009}.city-tooltip h3{margin:.2rem 0;font-size:1.3rem}.city-tooltip p{color:#c9b995}.city-tooltip-copy>button{display:block;width:100%;margin-top:.6rem}.city-tooltip-close{position:absolute;right:.35rem;top:.25rem;z-index:2;width:30px;height:30px;padding:0;border:0;background:transparent;color:#e8d8b8;font-size:1.5rem;box-shadow:none}
.district-placement-target{position:absolute;z-index:7;margin:0;background:#e7c86920;border:4px solid #f0cf67;border-radius:18px;box-shadow:inset 0 0 45px #f0cf672c;color:#fff3bf}.district-placement-target:hover,.district-placement-target:focus-visible{background:#e7c8693d;outline:3px solid #fff0ad}.district-placement-target span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:.55rem .8rem;background:#1a130de8;border:1px solid #e7c869;white-space:nowrap}.district-placement-target:disabled{opacity:.3;filter:grayscale(1)}.target-foundry{left:0;top:0;width:49%;height:49%}.target-lantern{right:0;top:0;width:49%;height:49%}.target-riverhook{left:0;bottom:0;width:49%;height:49%}.target-market{right:0;bottom:0;width:49%;height:49%}

.action-tray.tray-hidden{display:none}
.player-table{min-height:210px}
#human-panel{display:grid;grid-template-columns:minmax(420px,.7fr) minmax(620px,2.3fr);gap:.75rem;align-items:stretch}
.player-table .player{max-width:none;min-width:420px}
.player-table .player .tableau-line{display:none}
.player-actions{min-width:0;display:flex;align-items:stretch;gap:.55rem;overflow:visible;padding-bottom:.25rem}.player-actions>.hand-group{flex:1}
.player-actions>.selected-summary,.player-actions>.action-group,.player-actions>p{min-width:190px;margin:0;padding:.55rem;background:#17130f;border:1px solid #534632}
.player-actions>.hand-group{min-width:310px;height:190px;max-height:190px;padding:2px!important;overflow:visible;background:transparent;border:0}
.player-actions>.hand-group.gangster-bid-active{height:216px;max-height:216px;padding-top:30px!important;overflow:visible;position:relative}
.player-actions>.hand-group.gangster-bid-active:before{content:"Choose Gangsters to commit · Select cards below, then confirm your bid";position:absolute;z-index:20;left:0;top:0;padding:7px 14px 7px 20px;background:#4a1716;border:1px solid #b98c32;border-radius:7px 7px 7px 0;box-shadow:0 5px 14px #000a;color:#f3d469;font:700 .67rem/1 Georgia,serif;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.player-actions>.hand-group.gangster-bid-active:after{content:"";position:absolute;z-index:19;left:16px;top:24px;border:8px solid transparent;border-top-color:#b98c32;transform:translateY(1px)}
.gangster-bid-active>.building-hand-card,.gangster-bid-active>.official-hand-card{opacity:.28;filter:grayscale(.65);pointer-events:none}
.player-actions .unified-hand{align-items:flex-start;align-content:flex-start;gap:8px!important}.player-actions .unified-hand>.hand-card,.player-actions .unified-hand>.official-hand-card{flex:0 0 200px;width:200px;height:186px;margin:0!important}.player-actions button{margin:.15rem}
.next-phase-card{flex:0 0 185px;min-height:145px;margin-left:auto!important;display:grid;align-content:center;justify-items:start;text-align:left;padding:1rem!important;border:2px solid #e1bc61!important;border-radius:9px!important}.next-phase-card span{font-size:.68rem;text-transform:uppercase}.next-phase-card strong{font-size:1.15rem}.next-phase-card b{font-size:2rem;justify-self:end}
#card-inspector-layer{position:relative;z-index:30}.hand-card-inspector{position:fixed;left:clamp(165px,var(--anchor-x),calc(100vw - 165px));bottom:220px;transform:translateX(-50%);width:290px;max-height:calc(100vh - 250px);overflow:auto;background:#18130f;border:4px solid #c69a4a;border-radius:15px;box-shadow:0 20px 45px #000e;color:#eadfc8}.hand-card-inspector:after{content:"";position:absolute;left:50%;bottom:-12px;width:20px;height:20px;transform:translateX(-50%) rotate(45deg);background:#18130f;border-right:4px solid #c69a4a;border-bottom:4px solid #c69a4a}.inspector-art{display:block;width:100%;height:225px;border-bottom:4px solid #c69a4a}.inspector-body{padding:.85rem}.inspector-body h3{margin:.15rem 0 .55rem;font-size:1.45rem}.inspector-body p{line-height:1.35}.flavor-text{font-style:italic;color:#c8b898}.rules-text{padding:.65rem;background:#ead9b8;color:#2b1b11;border-radius:5px}.inspector-actions{display:grid;gap:.4rem;margin-top:.7rem}.inspector-actions button{width:100%;margin:0}.passive-card-note{margin:0;color:#d8c58f}.card-inspector-close{position:absolute;z-index:2;right:.45rem;top:.45rem;width:32px;height:32px;padding:0;border-radius:50%;background:#17110ddd;color:#fff0cf;font-size:1.4rem}
.city-tooltip,.district-placement-target{pointer-events:auto}.labor-split{display:grid;grid-template-columns:1fr 1fr;margin-top:.7rem;border-radius:6px;overflow:hidden}.labor-split>span{display:grid;gap:.15rem;padding:.55rem;background:#686b6b;color:#fff}.labor-split>span+span{background:#8a4f2d}.labor-split strong{font-size:1.5rem}.labor-split small{line-height:1.2}.ownership-line{font-size:.8rem}.inspection-stat{display:flex;align-items:baseline;gap:.5rem;margin-top:.7rem;padding:.65rem;background:#666b69;border-radius:6px}.inspection-stat strong{font-size:1.8rem}.inspection-stat.danger{background:#742e26}
.card-detail-facts{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;margin-top:.7rem}.card-detail-facts span{display:grid;align-content:start;gap:.15rem;min-height:3.4rem;padding:.45rem;background:#30271f;border:1px solid #68533b;border-radius:5px;font-size:.76rem;line-height:1.25}.card-detail-facts b{color:#d7ad5e;font-size:.65rem;letter-spacing:.06em;text-transform:uppercase}
.map-inspect-target{position:absolute;z-index:4;transform:translate(-50%,-50%);margin:0;padding:0;background:transparent!important;border:0!important;box-shadow:none!important;pointer-events:auto}.map-inspect-target:hover,.map-inspect-target:focus,.map-inspect-target:focus-visible{background:transparent!important;box-shadow:0 0 0 2px #f0d37a!important;outline:0}.building-inspect-target{width:72px;height:78px}.pool-inspect-target{width:122px;height:92px}.strike-inspect-target{width:112px;height:76px}
#labor-frame-layer{position:fixed;inset:var(--labor-play-top,0px) var(--labor-play-right,0px) var(--labor-play-bottom,210px) var(--labor-play-left,0px);z-index:22;display:grid;place-items:center;padding:clamp(1rem,4vw,4rem);background:#100b07a8;backdrop-filter:blur(2px)}#labor-frame-layer[hidden]{display:none}.labor-frame{width:min(900px,94%);max-height:90%;overflow:auto;padding:1.25rem;background:linear-gradient(145deg,#2b241a,#15120e);border:8px solid #7b5730;outline:2px solid #d0ac69;border-radius:16px;box-shadow:0 22px 55px #000e,inset 0 0 35px #0008;color:#eadfc7}.labor-frame-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;padding-bottom:.75rem;border-bottom:1px solid #766043}.labor-frame-heading h2{margin:0;font-size:1.65rem}.labor-frame-heading p{margin:0;color:#c8b994}.labor-instruction{color:#cfc1a3}.labor-frame form{display:grid;grid-template-columns:repeat(2,minmax(250px,1fr));gap:.55rem}.labor-frame .allocation{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.65rem;background:#211c16;border:1px solid #5d4d38}.labor-frame .allocation small{display:block}.labor-frame .labor-preview{grid-column:1/-1}.labor-frame .labor-commit{grid-column:1/-1;justify-self:end;min-width:240px;padding:.8rem}.labor-frame.rolling{width:min(760px,94%);text-align:center}.labor-frame.rolling .turn-guide{text-align:left}.labor-frame.rolling .dice{justify-content:center}.labor-frame.rolling .die{width:76px;height:76px;border-radius:12px}.labor-frame.rolling>button{margin:.35rem;padding:.7rem 1rem}@media(max-width:760px){.labor-frame form{grid-template-columns:1fr}.labor-frame .labor-preview,.labor-frame .labor-commit{grid-column:1}}
#labor-frame-layer.labor-dossier-layer{padding:1rem 2rem 3.8rem;background:#050504e8!important;backdrop-filter:blur(3px)!important}
.labor-dossier{box-sizing:border-box;width:min(880px,94%);max-height:100%;overflow:auto;padding:2rem;background:#171513;border:2px solid #d5a62e;border-radius:22px;box-shadow:0 24px 70px #000f,inset 0 0 38px #0008;color:#e8dfd1}
.labor-step-tracker>p{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;margin:0 0 1.3rem;color:#e9bd3f;font:700 .72rem/1 Georgia,serif;letter-spacing:.18em;text-align:center;text-transform:uppercase}.labor-step-tracker>p span{height:1px;background:#574224}.labor-step-tracker ol{display:grid;grid-template-columns:repeat(5,1fr);margin:0;padding:0;list-style:none}.labor-step-tracker li{position:relative;display:grid;grid-template-columns:36px 1fr;grid-template-rows:38px auto;align-items:center;color:#8f8980}.labor-step-tracker li b{z-index:2;display:grid;place-items:center;width:32px;height:32px;border:2px solid #503a21;border-radius:50%;background:#24211e;font:700 .85rem/1 Georgia,serif}.labor-step-tracker li i{height:1px;margin:0 .65rem;background:#503a21}.labor-step-tracker li:last-child{grid-template-columns:36px}.labor-step-tracker li:last-child i{display:none}.labor-step-tracker li>span{grid-column:1/-1;padding-right:1rem;font:700 .7rem/1 Georgia,serif;letter-spacing:.08em;text-transform:uppercase}.labor-step-tracker li.active{color:#edc13d}.labor-step-tracker li.active b{border-color:#fff3cc;background:#efc13e;color:#17120d;box-shadow:0 0 0 1px #efc13e}.labor-step-tracker li.active i{background:repeating-linear-gradient(90deg,#efc13e 0 5px,transparent 5px 10px)}.labor-step-tracker li.complete b{border-color:#a97e2a;color:#e3b743;font-size:0}.labor-step-tracker li.complete b:after{content:"✓";font-size:.9rem}.labor-step-tracker li.complete i{background:#a97e2a}
.labor-dossier-panel{margin-top:2rem;padding:2.3rem clamp(1.2rem,5vw,4rem);background:#1c1917;border:1px solid #47341b;border-radius:14px;box-shadow:inset 0 0 28px #0007;text-align:center}.labor-dossier-panel h2{margin:0;color:#fff9ef;font:700 32px/1.15 Georgia,serif}.labor-turn-badge{display:inline-block;margin:1rem 0;padding:.55rem 1rem;background:#651012;border:1px solid #bf2628;border-radius:5px;color:#f4e6df;font-size:.78rem;text-transform:uppercase}.labor-ornament{display:grid;grid-template-columns:120px 8px 120px;align-items:center;justify-content:center;gap:12px;margin:1rem}.labor-ornament i{height:2px;background:#b98c27}.labor-ornament b{width:8px;height:8px;background:#edbe34;transform:rotate(45deg)}.labor-dossier-panel>p{max-width:690px;margin:1.7rem auto;color:#bdb0a0;font:1rem/1.55 Georgia,serif}.labor-dossier-action{padding:.8rem 1.25rem!important;background:#efc13e!important;border:2px solid #fff0b9!important;border-radius:8px!important;box-shadow:0 4px 0 #72591e!important;color:#211b10!important;font-weight:800!important;letter-spacing:.05em;text-transform:uppercase}.labor-dossier-action:hover,.labor-dossier-action:focus-visible{background:#ffda64!important;transform:translateY(-1px)}.labor-show-board{position:absolute;left:50%;bottom:clamp(.7rem,2vh,1.3rem);transform:translateX(-50%);padding:.55rem 1rem!important;background:#28221d!important;border:1px solid #645441!important;color:#cfc2ae!important}.labor-show-board:hover,.labor-show-board:focus-visible{border-color:#d5a62e!important;color:#f3d370!important}
#labor-frame-layer.labor-board-mode{display:block;padding:0;background:transparent;backdrop-filter:none;pointer-events:none}.labor-board-prompt{position:absolute;z-index:30;left:50%;bottom:clamp(.7rem,2vh,1.3rem);transform:translateX(-50%);display:flex;align-items:center;gap:.8rem;padding:.65rem 1rem;background:#17130ff2;border:2px solid #d7aa34;border-radius:8px;box-shadow:0 8px 24px #000c;color:#eee3d2;pointer-events:none}.labor-board-prompt span{color:#d9ae39;font-size:.67rem;letter-spacing:.1em;text-transform:uppercase}.labor-board-prompt strong{font:700 1rem/1 Georgia,serif}.labor-board-prompt small{color:#aaa092}
.labor-board-return{top:auto;bottom:clamp(.7rem,2vh,1.3rem);pointer-events:auto;cursor:pointer}.labor-board-return:hover,.labor-board-return:focus-visible{background:#282016;outline:2px solid #f1c94f}
.labor-control-overview{width:min(1180px,96%);padding:1.7rem;background:#171513;border:2px solid #b88c27;border-radius:20px;box-shadow:0 24px 70px #000f,inset 0 0 38px #0008;color:#e8dfd1}.control-overview-grid{display:grid;grid-template-columns:minmax(0,2.15fr) minmax(300px,1fr);gap:1rem;margin-top:1.35rem}.labor-mini-map{position:relative;min-height:0;margin:0;aspect-ratio:var(--district-ratio,1.295);background-image:linear-gradient(#00000008,#00000008),var(--district-map);background-size:100% 100%;background-position:center;border:2px solid #795a26;border-radius:9px;box-shadow:inset 0 0 24px #0009;overflow:hidden}.labor-mini-map.district-foundry{--district-ratio:1.295}.labor-mini-map.district-lantern{--district-ratio:1.298}.labor-mini-map.district-riverhook{--district-ratio:1.230}.labor-mini-map.district-market{--district-ratio:1.237}.labor-mini-map figcaption{position:absolute;z-index:6;left:1rem;top:1rem;padding:.4rem .8rem;background:#a52b30;color:#f8e4dc;font:.7rem/1 Georgia,serif;letter-spacing:.17em;text-transform:uppercase}.mini-building{box-sizing:border-box;position:absolute;z-index:4;left:var(--x);top:var(--y);transform:translate(-50%,-50%);display:block;width:12.7%;height:11.8%;background:#1b140f;border:3px solid #8f8166;border-radius:5px;box-shadow:0 5px 9px #000b;overflow:hidden}.mini-building>i{display:block;width:100%;height:100%}.mini-building small{position:absolute;left:0;right:0;bottom:0;padding:.13rem;background:#100b08e8;color:#f3e3c4;font-size:.43rem;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-building.owner-human{border-color:var(--player-human)}.mini-building.owner-ai{border-color:var(--player-ai)}.mini-building.neutral{border-color:#bbb3a1;filter:saturate(.7)}.mini-worker-pool,.mini-strike-track{box-sizing:border-box;position:absolute;z-index:5;left:var(--worker-x);top:var(--worker-y);transform:translate(-50%,-50%);display:grid;align-content:center;gap:.22rem;width:18.5%;min-height:16%;padding:.36rem .48rem;background:#e5d5b8;border:2px solid #4f3c28;box-shadow:0 3px 8px #0008;color:#291b11;text-transform:uppercase}.mini-strike-track{left:var(--strike-x);top:var(--strike-y);width:18.7%}.mini-worker-pool b,.mini-strike-track b{font:700 .58rem/1 Georgia,serif}.mini-worker-pool small,.mini-strike-track small{font-size:.46rem}.mini-worker-pool .worker-dots,.mini-strike-track>span{display:flex;gap:4px}.mini-worker-pool .worker,.mini-strike-track .worker{width:12px;height:12px}.mini-district-name{position:absolute;z-index:5;left:1.25rem;bottom:1.1rem;padding:.45rem .65rem;background:linear-gradient(90deg,#100c09e8,#100c0988,transparent);color:#fff8eb;font:700 1.65rem/1 Georgia,serif;text-shadow:0 2px 3px #000}.passive-standings{display:flex;flex-direction:column;gap:.75rem;padding:1rem;background:#120f0d;border:1px solid #5a4934;border-radius:9px}.passive-standings h3{margin:0 0 .25rem;padding-bottom:.75rem;border-bottom:1px solid #534124;color:#dfb83f;font:700 .78rem/1.2 Georgia,serif;letter-spacing:.14em;text-transform:uppercase}.passive-standing{display:grid;grid-template-columns:1fr auto;align-items:start;gap:.7rem;min-height:108px;padding:1rem;background:#201c18;border:1px solid #4f4436;border-radius:8px}.passive-standing.human{border-left:4px solid var(--player-human)}.passive-standing.ai{border-left:4px solid var(--player-ai)}.passive-standing.ineligible{opacity:.58}.passive-standing>div>strong{font-size:.86rem}.passive-standing p{margin:.42rem 0 0;color:#a99d8d;font-size:.7rem;line-height:1.45}.standing-total{display:grid;place-items:center;width:42px;height:42px;border:2px solid #e4b92f;border-radius:50%;color:#f0c63e;font:700 1rem/1 Georgia,serif}.bid-live-equation{align-self:center;display:flex;align-items:center;gap:.32rem;padding:.45rem .55rem;border:1px solid #765d25;border-radius:7px;background:#15120c;color:#e9bd3f;font:700 .85rem/1 Georgia,serif;white-space:nowrap}.bid-live-equation i{color:#8f8165;font-style:normal}.bid-live-equation strong{display:grid;place-items:center;min-width:30px;height:30px;border:2px solid #e4b92f;border-radius:50%;color:#ffe168}.bid-live-equation.concealed strong{display:none}.bid-instruction{margin:0;padding:.7rem;background:#2b1b12;border:1px dashed #b88c27;color:#d7c7a8;font-size:.72rem;line-height:1.4}.bid-instruction strong{display:block;margin-bottom:.2rem;color:#f0c84b}.passive-standings>.labor-dossier-action{width:100%;margin-top:auto;font-family:Georgia,serif;letter-spacing:.1em}
.labor-results-dossier{box-sizing:border-box;width:min(1040px,96%);max-height:100%;overflow:auto;padding:1.5rem;background:#171513;border:2px solid #c2972d;border-radius:20px;box-shadow:0 24px 70px #000f,inset 0 0 38px #0008;color:#e8dfd1}.bid-results-heading{text-align:center;margin:1.8rem 0 1rem}.bid-results-heading h2{margin:0;color:#fff8ed;font:700 1.75rem/1.15 Georgia,serif}.bid-results-heading p{margin:.4rem 0;color:#8f8578}.bid-results-list{display:grid;gap:.45rem}.bid-result-row{display:grid;grid-template-columns:38px minmax(190px,1fr) minmax(130px,auto) 52px;align-items:center;gap:.75rem;min-height:92px;padding:.7rem .9rem;background:#1e1a17;border:1px solid #463d32;border-radius:8px}.bid-result-row.winner{background:#252014;border-color:#a77e20;box-shadow:inset 3px 0 #e5b632}.result-rank{display:grid;place-items:center;width:34px;height:34px;border-radius:6px;background:#39322a;color:#aaa095;font-size:.72rem}.winner .result-rank{background:#e6b735;color:#251a0b}.result-player{display:grid;gap:.25rem}.result-player strong{color:#e9dfcf;font-size:.9rem}.winner .result-player strong{color:#ebbd35}.result-player small{color:#9f9486;font-size:.68rem}.result-gangsters{display:flex;justify-content:flex-end;gap:.35rem}.result-gangster{position:relative;display:block;width:48px;height:62px;overflow:hidden;background:#140a08;border:2px solid #a82824;border-radius:5px;box-shadow:0 3px 7px #000b}.result-gangster i{display:block;width:100%;height:43px}.result-gangster b,.result-gangster small{position:absolute;left:2px;right:2px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-gangster b{bottom:9px;color:#f0dfcc;font-size:.42rem}.result-gangster small{bottom:1px;color:#e6b62f;font:700 .42rem/1 sans-serif}.result-gangster.cancelled{filter:grayscale(.75);opacity:.62}.result-gangster.cancelled:after{content:"×";position:absolute;inset:0;display:grid;place-items:center;background:#2b0b0b88;color:#ffb3aa;font:700 2rem/1 sans-serif}.no-gangsters{color:#81786d;font-size:.68rem;font-style:italic}.result-total{display:grid;place-items:center;width:44px;height:44px;border:2px solid #8c806c;border-radius:50%;color:#d5c8b3}.winner .result-total{border-color:#e7b834;color:#ebbd35}.bid-winner-action{display:grid;width:100%;gap:.35rem;margin-top:.65rem;padding:1.25rem!important;background:#edbe36!important;border:0!important;color:#23190d!important;text-align:center}.bid-winner-action strong{font:700 1.05rem/1.2 Georgia,serif}.bid-winner-action span{font:.62rem/1 sans-serif;letter-spacing:.2em;text-transform:uppercase}.bid-winner-action:hover,.bid-winner-action:focus-visible{background:#ffd65b!important}
.labor-allocation-dossier{box-sizing:border-box;width:min(1280px,98%);max-height:100%;overflow:auto;padding:1.2rem;background:#171513;border:2px solid #a97f28;border-radius:20px;box-shadow:0 24px 70px #000f,inset 0 0 38px #0008;color:#e8dfd1}.allocation-overview-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(360px,1fr);gap:1rem;margin-top:1rem}.workforce-allocation{display:flex;flex-direction:column;min-height:0;padding:1rem;background:#110f0d;border:1px solid #594731;border-radius:9px}.workforce-allocation h3,.workforce-allocation h4{margin:0;color:#dfb83f;font:700 .78rem/1 Georgia,serif;letter-spacing:.18em;text-transform:uppercase}.workforce-allocation h3{padding-bottom:.75rem;border-bottom:1px solid #594731}.workforce-allocation h4{margin:.85rem 0 .55rem}.allocation-counts{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;margin-top:.75rem}.allocation-counts span{display:flex;align-items:center;gap:.55rem;padding:.65rem .8rem;border:1px solid;border-radius:7px;font-size:.65rem;text-transform:uppercase}.allocation-counts b{font-size:1.35rem}.allocation-counts .available{background:#16331bc9;border-color:#2f713a;color:#83b98b}.allocation-counts .striking{background:#3a1516c9;border-color:#762526;color:#cc6866}.workforce-allocation form{display:flex;min-height:0;flex-direction:column;gap:.45rem}.allocation-building{padding:.62rem .7rem;background:#1e1a17;border:1px solid #463c31;border-radius:7px}.allocation-building header{display:flex;justify-content:space-between;gap:.6rem}.allocation-building header strong{font-size:.8rem}.allocation-building header small{color:#b07d28;font-size:.56rem;text-transform:uppercase}.allocation-building.housing header small{color:#5eb266}.allocation-building.civic header small{color:#6f9bd0}.allocation-slot-group{display:flex;align-items:center;gap:.38rem;margin-top:.5rem}.allocation-slot-group>small{color:#9b9185;font-size:.62rem}.allocation-slot-group>b{margin-left:.2rem;color:#a99d8c;font-size:.57rem;font-weight:400}.allocation-worker{width:27px!important;height:27px;padding:0!important;background:#25221c!important;border:2px solid #59472d!important;border-radius:5px!important;box-shadow:none!important}.allocation-worker.safe.filled{background:#488e52!important;border-color:#83c88a!important;box-shadow:inset 0 0 0 5px #244b2a!important}.allocation-worker.risk{border-color:#754c22!important}.allocation-worker.risk.filled{background:#a76525!important;border-color:#d49445!important;box-shadow:inset 0 0 0 5px #593417!important}.allocation-worker:disabled{opacity:.35}.allocation-worker.minimum-locked:disabled{opacity:1;cursor:default}.allocation-none{display:block;margin-top:.45rem;color:#8f867b;font-size:.65rem}.workforce-allocation .labor-preview{margin:.2rem 0;grid-template-columns:1fr 1fr}.workforce-allocation .labor-preview div{padding:.35rem}.workforce-allocation .labor-preview span{font-size:.58rem}.workforce-allocation .labor-preview strong{font-size:.7rem}.workforce-allocation .labor-commit{width:100%;margin-top:auto}.mini-card-staff{position:absolute;z-index:3;left:3px;right:3px;bottom:14px;display:flex;gap:2px}.mini-card-staff i{width:7px;height:7px;background:#34302b;border:1px solid #aaa49a}.mini-card-staff i.filled{background:#e3e0d6}.mini-card-staff i.risk{border-color:#d38a3d}.mini-card-staff i.risk.filled{background:#d88e3d}
.labor-roll-dossier{box-sizing:border-box;width:min(1080px,97%);max-height:100%;overflow:auto;padding:1.35rem 1.6rem;background:#171513;border:2px solid #c3972d;border-radius:20px;box-shadow:0 24px 70px #000f,inset 0 0 38px #0008;color:#e8dfd1}.push-heading{margin:1.5rem 0 .9rem;text-align:center}.push-heading h2{margin:0;color:#fff8ed;font:700 1.85rem/1.15 Georgia,serif}.push-heading p{margin:.45rem 0;color:#9d9385}.push-stats{display:flex;justify-content:center;gap:1rem;margin-bottom:1rem}.push-stats>span{display:flex;align-items:center;gap:.55rem;min-height:60px;padding:.6rem 1rem;background:#1d1a17;border:1px solid #4b4033;border-radius:7px;color:#b7ad9f;font-size:.73rem}.push-stats b{color:#edbd35;font-size:1rem}.push-stats i{width:17px;height:17px;border-radius:50%;background:#3d3933;border:1px solid #585148}.push-stats i.remaining{background:#e7b637;border-color:#f5ce5c}.push-results-layout{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:.8rem}.push-results,.push-legend{padding:1rem;background:#1d1a17;border:1px solid #494034;border-radius:8px}.push-results h3,.push-legend h3{margin:0 0 .8rem;color:#d7a933;font:700 .68rem/1 Georgia,serif;letter-spacing:.18em;text-align:center;text-transform:uppercase}.push-dice{display:flex;min-height:170px;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap}.roll-empty{margin:auto;color:#82796e;font:italic .85rem/1.4 Georgia,serif}.push-die-result{position:relative;display:grid!important;justify-items:center;gap:.35rem;width:126px!important;padding:.55rem!important;background:#211d18!important;border:1px solid #4b4439!important;border-radius:9px!important;color:#e9dfd0!important;box-shadow:none!important}.push-die-result.resource{border-color:#375f39!important}.push-die-result.strike{border-color:#762d28!important}.push-die-result .illustrated-die{width:96px;height:94px}.push-die-result strong{color:#e5dfd1;font-size:.78rem}.push-die-result.resource strong{color:#66b76d}.push-die-result.strike strong{color:#d54d47}.push-die-result small{font-size:.62rem}.push-die-result.held{outline:2px solid #e8bb3c;outline-offset:2px}.die-lock-mark{position:absolute;right:-9px;top:-13px;width:36px;height:36px;background:url('../assets/die-lock.png') center/contain no-repeat;filter:drop-shadow(0 2px 3px #000)}.push-legend ul{display:grid;gap:.55rem;margin:0;padding:0;list-style:none}.push-legend li{display:grid;grid-template-columns:39px 1fr;align-items:center;gap:.5rem}.push-legend .illustrated-die{width:38px;height:38px;border-radius:4px}.push-legend b{font-size:.64rem}.push-legend small{display:block;margin-top:.15rem;color:#5eaa64;font-size:.55rem}.push-legend li:last-child small{color:#ce4942}.push-results>p{margin:.7rem 0 0;color:#8f8578;font-size:.64rem;text-align:center}.push-actions{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-top:1rem}.push-actions>button{min-height:82px!important;font:700 .75rem/1 Georgia,serif!important;letter-spacing:.18em;text-transform:uppercase}.push-actions>button:first-child{background:#1d1a17!important;border:1px solid #5b5144!important;color:#cfc5b5!important}.push-actions button:disabled{opacity:.4!important;cursor:not-allowed!important;transform:none!important}
.labor-production-dossier{box-sizing:border-box;width:min(1120px,97%);max-height:100%;overflow:auto;padding:1.3rem 1.6rem;background:#171513;border:2px solid #c3972d;border-radius:20px;box-shadow:0 24px 70px #000f,inset 0 0 38px #0008;color:#e8dfd1}.production-results-heading{margin:1.15rem 0 .9rem;text-align:center}.production-results-heading h2{margin:0;color:#fff8ed;font:700 1.7rem/1.15 Georgia,serif}.production-results-heading p{margin:.4rem 0;color:#8f8578}.production-results-grid{display:grid;grid-template-columns:minmax(0,2.7fr) minmax(230px,1fr);gap:.8rem}.production-ledger,.workforce-results{padding:.9rem;background:#1d1a17;border:1px solid #494034;border-radius:8px}.production-ledger h3,.workforce-results h3,.workforce-results h4{margin:0 0 .7rem;color:#d7a933;font:700 .67rem/1 Georgia,serif;letter-spacing:.18em;text-transform:uppercase}.production-ledger table{width:100%;border-collapse:separate;border-spacing:0 .35rem}.production-ledger th,.production-ledger td{padding:.48rem;text-align:center;background:#151310;color:#91887c;font-size:.73rem}.production-ledger th:first-child{text-align:left}.production-ledger thead th{padding:.15rem .48rem;background:transparent;color:#8f8578;font-size:.58rem}.production-ledger thead .sprite{width:22px;height:22px;border:1px solid #70634f;border-radius:50%}.production-ledger tbody tr.controller>*{border-top:1px solid #876a24;border-bottom:1px solid #876a24}.production-ledger tbody tr.controller th{border-left:1px solid #876a24;color:#e3b638}.production-ledger tbody tr.controller td:last-child{border-right:1px solid #876a24}.production-ledger td.gain{color:#66ae69}.production-ledger .resource-total{color:#e2b63a;font-weight:800}.push-summary{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:.35rem;padding:.65rem;border-top:1px solid #4a4033;font-size:.63rem}.push-summary>b{color:#bc842c;text-transform:uppercase}.push-summary .good{color:#60ad67}.push-summary .bad{color:#d44e47}.push-summary .relief{color:#78a46d}.workforce-result{display:flex;align-items:center;justify-content:space-between;margin:.55rem 0;padding:.65rem .75rem;border:1px solid;border-radius:7px}.workforce-result span{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.15rem .7rem}.workforce-result b{grid-column:2;color:#bcb2a4;font-size:.63rem}.workforce-result strong{grid-row:1/3;color:inherit;font-size:1.25rem}.workforce-result em{font-size:.7rem;font-style:normal}.workforce-result.workers{background:#17351dc9;border-color:#33713d;color:#68b772}.workforce-result.strikers{background:#3a1516c9;border-color:#762526;color:#d65a53}.workforce-results h4{margin-top:.85rem;padding-top:.7rem;border-top:1px solid #4a4033;font-size:.58rem}.workforce-results>p{display:flex;justify-content:space-between;gap:.5rem;margin:.35rem 0;padding:.45rem;background:#161310;color:#8f8578;font-size:.62rem}.workforce-results>p b{color:#c2b8a8}.workforce-results .good{color:#62ae68}.workforce-results .bad{color:#d64f48}.production-next{width:100%;margin-top:.85rem;padding:1rem!important;background:#edbe36!important;border:0!important;color:#23190d!important;font:700 .9rem/1 Georgia,serif!important}.production-next:hover,.production-next:focus-visible{background:#ffd65b!important}
.push-roll-recap{display:flex;align-items:center;gap:1rem;margin-top:.85rem;padding:.7rem .9rem;background:#1d1a17;border:1px solid #494034;border-radius:8px}.push-roll-recap header{display:grid;flex:0 0 150px;gap:.2rem}.push-roll-recap header b{color:#c08c31;font:700 .65rem/1 Georgia,serif;letter-spacing:.16em;text-transform:uppercase}.push-roll-recap header small{color:#8f8578;font-size:.58rem}.final-dice-recap{display:flex;flex:0 0 auto;align-items:start;gap:.55rem;flex-wrap:wrap}.final-die{display:grid;flex:0 0 48px;justify-items:center;gap:.25rem;color:#a99e8e;font-size:.55rem}.final-die .illustrated-die{width:48px;height:48px;border-radius:5px}.recap-resolution{margin-left:auto;max-width:250px;color:#80aa75;font-size:.62rem;text-align:right}
.labor-riot-dossier{box-sizing:border-box;width:min(1180px,98%);max-height:100%;overflow:auto;padding:1.25rem 1.5rem;background:#171513;border:3px solid #d64b3c;border-radius:20px;box-shadow:0 24px 70px #000f,inset 0 0 38px #310605;color:#e8dfd1}.riot-alert{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem;margin:1rem 0;padding:.8rem 1rem;background:#54130f;border:1px solid #c94636;border-radius:9px}.riot-alert>span{color:#ffd747;font-size:1.5rem}.riot-alert h2{margin:0;color:#f05243;font:700 1.55rem/1 Georgia,serif;text-transform:uppercase}.riot-alert p{margin:.35rem 0 0;color:#c8aaa0;font-size:.72rem}.riot-alert>b{display:grid;place-items:center;width:52px;height:52px;border:2px solid #f15a4b;border-radius:50%;background:#b93831;color:#fff;font-size:1.2rem}.riot-alert>b small{font-size:.42rem;text-transform:uppercase}.riot-resolution-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(340px,1fr);gap:1rem}.riot-building-picker{padding:1rem;background:#120f0d;border:1px solid #554439;border-radius:9px}.riot-building-picker h3{margin:0;color:#d95648;font:700 .72rem/1 Georgia,serif;letter-spacing:.16em;text-transform:uppercase}.riot-building-picker>p{color:#9e9285;font-size:.7rem}.riot-building-picker>div{display:grid;gap:.55rem}.riot-building-choice{display:grid!important;grid-template-columns:28px 1fr auto;align-items:center;gap:.65rem;width:100%;padding:.7rem!important;background:#211d19!important;border:1px solid #4e4439!important;color:#d7cdbd!important;text-align:left}.riot-building-choice>b{display:grid;place-items:center;width:25px;height:20px;border-radius:12px;background:#edbd39;color:#24180a;font-size:.68rem}.riot-building-choice span{display:grid;gap:.2rem}.riot-building-choice small{color:#998e80;font-size:.6rem}.riot-building-choice em{padding:.3rem .5rem;background:#c6423b;color:#fff;font-size:.52rem;font-style:normal;text-transform:uppercase}.riot-building-choice.selected{background:#511a16!important;border:2px solid #df4d40!important}.riot-confirm{display:grid!important;width:100%;gap:.2rem;margin-top:.8rem;padding:.75rem!important;background:#c33d39!important;color:#fff!important}.riot-confirm strong{font:700 1rem/1 Georgia,serif}.riot-confirm small{font-size:.55rem}.riot-confirm:disabled{opacity:.35}.mini-building.riot-candidate{overflow:visible;border-color:#e0ad2d}.mini-building.riot-candidate.selected{border-color:#ed4c3e;box-shadow:0 0 0 3px #ed4c3e,0 6px 12px #000}.riot-candidate-number{position:absolute;z-index:8;left:-8px;top:-9px;display:grid;place-items:center;width:25px;height:22px;border:2px solid #17120d;border-radius:50%;background:#edbd39;color:#1d1409;font-size:.7rem}.mini-building.riot-candidate small,.mini-building.riot-candidate>i,.mini-building.riot-candidate .mini-card-staff{overflow:hidden}
@media(max-width:760px){.push-results-layout,.production-results-grid{grid-template-columns:1fr}.push-actions{grid-template-columns:1fr}.production-ledger{overflow-x:auto}.push-roll-recap{align-items:flex-start;flex-direction:column}.push-roll-recap header{flex-basis:auto}.recap-resolution{margin-left:0;text-align:left}}
@media(max-width:900px){.riot-resolution-grid{grid-template-columns:1fr}.labor-riot-dossier{overflow:auto}}
@media(max-width:700px){.labor-dossier{padding:1rem}.labor-dossier-panel{margin-top:1rem;padding:1.4rem 1rem}.labor-step-tracker li{grid-template-columns:28px 1fr}.labor-step-tracker li:last-child{grid-template-columns:28px}.labor-step-tracker li b{width:26px;height:26px}.labor-step-tracker li>span{font-size:.57rem}.labor-ornament{grid-template-columns:70px 7px 70px}.labor-board-prompt{width:max-content;max-width:94%;flex-wrap:wrap;justify-content:center}}
@media(max-width:900px){.labor-control-overview{max-height:88%;overflow:auto}.control-overview-grid{grid-template-columns:1fr}.labor-mini-map{min-height:420px}.passive-standings{display:grid;grid-template-columns:1fr 1fr}.passive-standings h3,.passive-standings>.labor-dossier-action{grid-column:1/-1}}
@media(max-height:850px){#labor-frame-layer.labor-dossier-layer{padding:.65rem 1.2rem 3.2rem}.labor-dossier{padding:.8rem 1.2rem}.labor-step-tracker>p{margin-bottom:.45rem}.labor-step-tracker li{grid-template-rows:32px auto}.labor-step-tracker li b{width:27px;height:27px}.labor-dossier-panel{margin-top:.65rem;padding:1rem 1.5rem}.labor-dossier-panel h2{font-size:32px}.labor-turn-badge{margin:.55rem 0;padding:.4rem .75rem}.labor-ornament{margin:.55rem}.labor-dossier-panel>p{margin:.75rem auto;line-height:1.4}.labor-dossier-action{padding:.62rem 1rem!important}.labor-show-board,.labor-board-prompt{bottom:.5rem;padding:.4rem .8rem!important}.labor-control-overview{max-height:100%;overflow:auto;padding:.9rem}.control-overview-grid{margin-top:.65rem}.labor-mini-map{max-height:410px}.passive-standing{min-height:82px;padding:.7rem}}
@media(max-height:850px){.labor-results-dossier{padding:.8rem 1.1rem}.bid-results-heading{margin:.7rem 0}.bid-result-row{min-height:72px}.bid-winner-action{padding:.8rem!important}}
@media(max-width:700px){.bid-result-row{grid-template-columns:34px 1fr 46px}.result-gangsters{grid-column:2/-1;justify-content:flex-start}.result-total{grid-column:3;grid-row:1}.labor-results-dossier{padding:.8rem}}
@media(max-width:950px){.allocation-overview-grid{grid-template-columns:1fr}.labor-allocation-dossier{max-height:100%}.workforce-allocation{overflow:visible}}
@media(max-height:850px){.labor-allocation-dossier{padding:.7rem}.allocation-overview-grid{margin-top:.55rem}.workforce-allocation{padding:.65rem}.allocation-building{padding:.42rem .55rem}.allocation-worker{width:23px!important;height:23px}.workforce-allocation h4{margin:.5rem 0 .35rem}}
.labor-start-grid,.control-ledger,.production-report{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin:1rem 0}.district-start-card,.control-player{display:grid;gap:.3rem;padding:1rem;text-align:left;background:#211c16;border:1px solid #7a6343;color:#eadfc7}.district-start-card b,.control-player strong{font-size:1.15rem}.district-start-card small,.control-player small{color:#c8b994}.control-player.human{border-left:5px solid var(--player-human)}.control-player.ai{border-left:5px solid var(--player-ai)}.gangster-commitments{display:flex;flex-wrap:wrap;gap:.6rem;margin:.75rem 0}.gangster-commitments label{display:grid;grid-template-columns:auto 48px 1fr;align-items:center;gap:.45rem;width:min(250px,100%);padding:.4rem;background:#17120e;border:1px solid #65463a}.gangster-commitments .sprite{width:48px;height:48px;border-radius:5px}.gangster-commitments small{grid-column:3;color:#c8b994}.contest-winner,.unrest-report,.recovery-result{padding:1rem;background:#2c2117;border:1px solid #9b7441}.unrest-report{min-height:150px;background-color:#3b1c17;background-size:cover;background-position:center 42%;text-shadow:0 2px 4px #000}.recovery-result{display:grid;place-items:center;gap:.5rem}.recovery-result .die{width:110px;height:110px;border-radius:14px}.recovery-actions{display:flex;justify-content:center;gap:.75rem;margin-top:1rem}@media(max-width:650px){.labor-start-grid,.control-ledger,.production-report{grid-template-columns:1fr}}
@media(max-width:1000px){#human-panel{display:block}.player-actions{margin-top:.5rem}}

/* Keep the card's primary interaction reachable when the inspector scrolls. */
#card-inspector-layer{position:fixed;left:0;top:0;width:0;height:0;z-index:100;pointer-events:auto}
.hand-card-inspector{z-index:101;display:flex;flex-direction:column;overflow:hidden}
.hand-card-inspector{pointer-events:auto}
.hand-card-inspector .inspector-art{flex:0 0 min(225px,34vh)}
.hand-card-inspector .inspector-body{min-height:0;overflow:auto}
.hand-card-inspector .inspector-actions{position:sticky;z-index:2;bottom:-.85rem;margin:.7rem -.85rem -.85rem;padding:.65rem .85rem .85rem;background:linear-gradient(#18130f00,#18130f 22%);border-radius:0 0 10px 10px}
@media(max-height:700px){.hand-card-inspector{bottom:16px;max-height:calc(100vh - 32px)}.hand-card-inspector .inspector-art{flex-basis:min(190px,34vh)}}
.politician-hand-card.exhausted{transform:rotate(7deg);filter:saturate(.45) brightness(.72)}

/* Gangsters use a secretive, blood-red card treatment distinct from Officials. */
.gangster-inspector{width:330px;max-height:calc(100vh - 235px);padding:18px;background:#21100d;border:2px solid #a82424;border-radius:24px;box-shadow:0 22px 55px #000f,0 0 0 1px #35100f inset;color:#eee4dc}
.gangster-inspector:before{content:"";position:absolute;inset:18px;border:1px dashed #b42626;border-radius:15px;pointer-events:none}
.gangster-inspector:after{display:none}
.gangster-inspector .card-inspector-close{right:25px;top:25px;background:#160b09e8;border:1px solid #b52a27;color:#f2c847}
.gangster-inspector-art{position:relative;z-index:1;display:block;flex:0 0 auto;width:100%;aspect-ratio:1;border:3px solid #bd2c29;border-radius:13px;box-shadow:0 0 0 2px #591715,inset 0 0 18px #0009}
.gangster-inspector-art .gangster-power{left:12px;top:12px;width:56px;height:56px;font-size:1.45rem}
.gangster-inspector-body{position:relative;z-index:1;min-height:0;overflow:auto;padding:1rem .4rem .1rem;text-align:center}
.gangster-kicker{margin:0;color:#cf382f;font:400 .82rem/1 Georgia,serif;letter-spacing:.24em;text-transform:uppercase}
.gangster-inspector-body h3{margin:.42rem 0;color:#fff7ed;font:700 2rem/1.05 Georgia,serif;text-shadow:0 2px 2px #000}
.gangster-divider{display:grid;grid-template-columns:1fr 8px 1fr;align-items:center;gap:9px;margin:.8rem 1.25rem}.gangster-divider i{height:1px;background:#a62724}.gangster-divider b{width:8px;height:8px;background:#c13730}
.gangster-ability{margin:.55rem 0;padding:.85rem .7rem;background:#120908;border:1px solid #8f1e1e;border-radius:7px;color:#ddd3cd;font-size:.95rem;line-height:1.45}
.gangster-inspector .inspector-actions{position:static;margin:.75rem 0 0;padding:0;background:none}.gangster-use{padding:.72rem!important;background:#4d0808!important;border:0!important;color:#e8bd3e!important;font:700 .95rem/1 Georgia,serif!important;letter-spacing:.17em;text-transform:uppercase}.gangster-use:hover,.gangster-use:focus-visible{background:#70110f!important;color:#ffe074!important}

.official-inspector{width:330px;max-height:calc(100vh - 235px);padding:18px;background:#1a0f1f;border:2px solid #684076;border-radius:24px;box-shadow:0 22px 55px #000f,0 0 0 1px #2c1733 inset;color:#eee7f0}
.official-inspector:before{content:"";position:absolute;inset:18px;border:1px dashed #825091;border-radius:15px;pointer-events:none}.official-inspector:after{display:none}.official-inspector .card-inspector-close{right:25px;top:25px;background:#160d1ae8;border:1px solid #8c5a9b;color:#f2cf4a}.official-inspector-art{position:relative;z-index:1;display:block;flex:0 0 auto;width:100%;aspect-ratio:1;border:3px solid #71447e;border-radius:13px;box-shadow:0 0 0 2px #351a3e,inset 0 0 18px #0008}.official-inspector-art .official-power{left:12px;top:12px;width:56px;height:56px;font-size:1.45rem}.official-inspector-body{position:relative;z-index:1;min-height:0;overflow:auto;padding:1rem .4rem .1rem;text-align:center}.official-kicker{margin:0;color:#c291cf;font:400 .82rem/1 Georgia,serif;letter-spacing:.24em;text-transform:uppercase}.official-inspector-body h3{margin:.42rem 0;color:#fff8ef;font:700 1.8rem/1.05 Georgia,serif;text-transform:uppercase;text-shadow:0 2px 2px #000}.official-divider{display:grid;grid-template-columns:1fr 8px 1fr;align-items:center;gap:9px;margin:.8rem 1.25rem}.official-divider i{height:1px;background:#a37a3b}.official-divider b{width:8px;height:8px;background:#d5ad3f}.official-ability{margin:.55rem 0;padding:.85rem .7rem;background:#100914;border:1px solid #60366d;border-radius:7px;color:#ddd5df;font-size:.95rem;line-height:1.45}.official-inspector .inspector-actions{position:static;margin:.75rem 0 0;padding:0;background:none}.official-inspector .inspector-actions button{padding:.72rem!important;background:#3b1945!important;border:1px solid #8b5999!important;color:#f0ce4d!important;font:700 .86rem/1 Georgia,serif!important;letter-spacing:.08em;text-transform:uppercase}.official-inspector .passive-card-note{margin:0;padding:.65rem;color:#d9c6dd}.official-inspector.exhausted{filter:saturate(.55)}

.official-shop-card{position:relative;display:flex;flex-direction:column;padding:10px!important;background:#160c20!important;border:2px solid #664077!important;border-radius:20px!important;box-shadow:0 14px 24px #000b,0 0 0 1px #2c1733 inset!important;color:#eee7f0}.official-shop-card:before{content:"";position:absolute;inset:7px;border:1px solid #87559a;border-radius:14px;pointer-events:none}.official-shop-art{position:relative;display:block;width:100%;aspect-ratio:1;min-height:0;border:2px solid #87559a;border-radius:11px;box-shadow:0 0 0 2px #351a3e;overflow:hidden}.official-shop-clout,.official-shop-price{position:absolute;z-index:2;top:9px;display:grid;place-items:center;width:43px;height:43px;margin:0;border:3px solid #d7ae39;border-radius:50%;background:#150c20;color:#f2ce48;font:700 1.05rem/1 Georgia,serif;box-shadow:0 2px 5px #000c}.official-shop-clout{left:9px}.official-shop-price{right:9px}.official-shop-copy{position:relative;z-index:1;display:flex;flex:1;flex-direction:column;padding:.8rem .45rem .35rem;text-align:center}.official-shop-copy>p:first-child{margin:0;color:#bf87ce;font:400 .68rem/1 Georgia,serif;letter-spacing:.23em;text-transform:uppercase}.official-shop-copy h3{margin:.35rem 0;color:#fff8ef;font:700 1.15rem/1.05 Georgia,serif}.official-shop-copy .official-divider{margin:.55rem .7rem}.official-shop-ability{flex:1;margin:.15rem 0 .65rem!important;padding:.65rem;background:#100914;border:1px solid #60366d;border-radius:7px;color:#ddd5df!important;font-size:.78rem;line-height:1.4}.official-shop-copy button{width:100%;margin:0;padding:.7rem!important;background:#32173e!important;border:1px solid #765087!important;color:#f0ce4d!important;font:700 .78rem/1 Georgia,serif!important;letter-spacing:.1em;text-transform:uppercase}

/* Building cards share one portrait dossier and one compact board/hand face. */
.building-shop-card{position:relative;padding:10px!important;background:#28150d!important;border:2px solid #a95f18!important;border-radius:20px!important;box-shadow:0 14px 24px #000c,0 0 0 1px #4a260f inset!important}.building-shop-card.housing{background:#102319!important;border-color:#326d51!important}.building-shop-card:before{content:"";position:absolute;z-index:2;inset:7px;border:1px solid #b86b22;border-radius:14px;pointer-events:none}.building-shop-card.housing:before{border-color:#3c7a5d}.building-shop-card .card-art{position:relative;height:auto;aspect-ratio:1;background-size:cover;background-position:center;border:3px solid #bd6b20;border-radius:12px}.building-shop-card.housing .card-art{border-color:#3f805f}.building-shop-cost,.building-shop-output{position:absolute;z-index:3;top:9px;padding:.4rem .55rem;background:#17100bdc;border:2px solid #bc792e;border-radius:999px;color:#fff0cf;font:700 .7rem/1 Georgia,serif;text-shadow:0 2px 2px #000}.building-shop-cost{left:9px}.building-shop-output{right:9px}.building-shop-card .card-copy{display:flex;flex-direction:column;min-height:265px;padding:1rem .65rem .55rem;background:transparent;color:#f7efe6;text-align:center}.building-shop-card .card-tier{color:#daa13b!important;font:400 .72rem/1 Georgia,serif;letter-spacing:.22em;text-transform:uppercase}.building-shop-card.housing .card-tier{color:#62bd8e!important}.building-shop-card .card-copy>strong{margin:.45rem 0;font:700 1.35rem/1.05 Georgia,serif}.building-shop-card .market-price{display:none}.building-shop-card .card-facts{display:grid;gap:.25rem;padding:.8rem 0;border-top:1px solid #8b531d;color:#ded1c5!important}.building-shop-card .upgrade-preview{margin:.1rem 0 .8rem;background:transparent;border:0;color:#ac9382}.building-shop-card .card-copy button{margin-top:auto;padding:.8rem!important;background:#9c5b20!important;color:#fff0d4!important;font:700 .9rem/1 Georgia,serif!important;letter-spacing:.15em;text-transform:uppercase}.building-shop-card.housing .card-copy button{background:#245b42!important}

.building-detail-inspector{width:340px;max-height:calc(100vh - 40px);padding:18px;background:#28150d;border:2px solid #b7651c;border-radius:25px;box-shadow:0 22px 55px #000f;color:#f1e7dc}.building-detail-inspector.housing{background:#102319;border-color:#367858}.building-detail-inspector:before{content:"";position:absolute;inset:16px;border:1px solid #a65b1b;border-radius:16px;pointer-events:none}.building-detail-inspector.housing:before{border-color:#377459}.building-detail-inspector:after{display:none}.building-detail-inspector .card-inspector-close{right:25px;top:25px}.building-detail-art{position:relative;z-index:1;display:block;width:100%;aspect-ratio:1;background-size:cover;background-position:center;border:3px solid #bd6b20;border-radius:13px;box-shadow:0 0 0 2px #51270f;overflow:hidden}.building-detail-inspector.housing .building-detail-art{border-color:#438365;box-shadow:0 0 0 2px #173e2c}.building-output-badge{position:absolute;z-index:3;right:9px;top:9px;padding:.35rem .55rem;background:#160e09dc;border:2px solid #b46d28;border-radius:999px;color:#fff2da;font:700 .68rem/1 Georgia,serif;text-shadow:0 2px 2px #000}.building-detail-body{position:relative;z-index:1;padding:1rem .45rem .1rem;text-align:center}.building-detail-body>p:first-child{margin:0;color:#dda13e;font:400 .75rem/1 Georgia,serif;letter-spacing:.24em;text-transform:uppercase}.building-detail-inspector.housing .building-detail-body>p:first-child{color:#63bd8d}.building-detail-body h3{margin:.45rem 0;color:#fff8ef;font:700 1.8rem/1.05 Georgia,serif}.building-detail-divider{display:grid;grid-template-columns:1fr 8px 1fr;align-items:center;gap:9px;margin:.8rem}.building-detail-divider i{height:1px;background:#a86723}.building-detail-divider b{width:8px;height:8px;background:#dda335;transform:rotate(45deg)}.building-detail-rules,.building-detail-staff{margin:.35rem 0;color:#e1d5ca;line-height:1.4}.building-detail-upgrade{margin:.65rem 0;color:#ad9585}.building-detail-meta{margin:.45rem 0;padding:.55rem;background:#160e09;border:1px solid #704019;border-radius:6px;color:#dacdbf}

.building-hand-card{border:5px solid #b86820!important;border-radius:15px!important;box-shadow:0 9px 16px #000b!important}.building-hand-card.housing{border-color:#3c7659!important}.building-hand-card>span{z-index:2;padding:1.8rem .55rem .5rem;background:linear-gradient(transparent,#100b08ed 52%);text-align:center}.building-hand-card>span b{font:700 1rem/1.05 Georgia,serif;text-transform:uppercase}.building-hand-card>span small{font-size:.55rem;text-transform:uppercase;letter-spacing:.06em}.building-hand-card>.building-output-badge{font-size:.62rem}

.tabletop .district .compact-building-card{position:relative;width:108px;min-width:108px;height:92px;padding:0;background:#140d09;border:4px solid #a95f1b;border-radius:9px;overflow:hidden}.tabletop .district .compact-building-card.housing{border-color:#37765a}.compact-building-card>.sprite{position:absolute;inset:0;width:100%;height:100%;background-size:cover;background-position:center}.compact-building-card>span{position:absolute;z-index:2;left:3px;right:3px;bottom:3px;padding:.25rem;background:#100b08e8;text-align:center}.compact-building-card>span b{display:block;color:#f7e8d1;font:700 .52rem/1 Georgia,serif;text-transform:uppercase}.compact-building-card>span small{display:none}.compact-building-card>em{position:absolute;z-index:2;right:3px;top:3px;padding:.18rem .25rem;background:#100b08d9;border-radius:5px;color:#fff;font:700 .42rem/1 Georgia,serif}.compact-building-card>.staff-track{position:absolute;z-index:3;left:4px;top:4px}

/* Readability pass for Labor result screens; dimensions and spacing stay unchanged. */
.labor-results-dossier .bid-results-heading p,.labor-production-dossier .production-results-heading p{font-size:.9rem}.labor-results-dossier .result-rank{font-size:.8rem}.labor-results-dossier .result-player strong{font-size:1rem}.labor-results-dossier .result-player small,.labor-results-dossier .no-gangsters{font-size:.76rem}.labor-results-dossier .result-total{font-size:1rem}.labor-results-dossier .bid-winner-action strong{font-size:1.12rem}.labor-results-dossier .bid-winner-action span{font-size:.68rem}.labor-production-dossier .production-ledger h3,.labor-production-dossier .workforce-results h3,.labor-production-dossier .workforce-results h4{font-size:.75rem}.labor-production-dossier .production-ledger th,.labor-production-dossier .production-ledger td{font-size:.82rem}.labor-production-dossier .production-ledger thead th{font-size:.66rem}.labor-production-dossier .push-summary{font-size:.72rem}.labor-production-dossier .workforce-result b{font-size:.72rem}.labor-production-dossier .workforce-result em{font-size:.78rem}.labor-production-dossier .workforce-results>p{font-size:.7rem}.labor-production-dossier .push-roll-recap header b{font-size:.72rem}.labor-production-dossier .push-roll-recap header small{font-size:.65rem}.labor-production-dossier .final-die{font-size:.63rem}.labor-production-dossier .recap-resolution{font-size:.7rem}

/* Final Construction shop hierarchy. */
.building-shop-card.civic{background:#0b1728!important;border-color:#365c8b!important;box-shadow:0 14px 24px #000c,0 0 0 1px #172b46 inset!important}.building-shop-card.civic:before{border-color:#5275a2}.building-shop-card.civic .card-art{border-color:#547dab}.building-shop-card.civic .card-tier{color:#e0ba43!important}.building-shop-card.civic .card-copy button{background:#365b80!important;color:#f2c94c!important}.building-shop-card .building-shop-copy{min-height:230px;padding:.85rem .55rem .45rem}.building-shop-card.civic .building-shop-copy{min-height:210px}.building-shop-card .building-shop-copy>strong{font-size:1.45rem}.building-shop-divider{display:grid;grid-template-columns:1fr 7px 1fr;align-items:center;gap:8px;margin:.3rem .45rem .75rem}.building-shop-divider i{height:1px;background:#9b6725}.building-shop-divider b{width:7px;height:7px;background:#d9a232;transform:rotate(45deg)}.building-shop-card.housing .building-shop-divider i{background:#47745c}.building-shop-card.civic .building-shop-divider i{background:#47698f}.building-shop-rule{min-height:2.8em;margin:0!important;color:#dfd4ca!important;font-size:.78rem;line-height:1.45}.building-shop-card.civic .building-shop-rule{padding:.7rem;background:#101e31;border:1px solid #49698c;border-radius:7px;text-align:left}.building-shop-upgrade{margin:.35rem 0 .75rem!important;color:#ae9786!important;font-size:.68rem}.building-shop-card .building-shop-cost,.building-shop-card .building-shop-output{max-width:72%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.building-shop-card.civic .building-shop-cost{border-color:#6d87a5}
/* Player-board resource ledger. */
.tabletop .player-board-card{overflow:hidden;padding:.8rem!important;background:#171411;border:2px solid #896a25!important;border-radius:14px;box-shadow:0 8px 20px #0008;color:#eee7da}
.tabletop .player-board-card .player-heading{align-items:center;gap:1rem}
.tabletop .player-board-card .player-heading h2{margin:0;color:#fffaf0;font:700 1.45rem/1 Georgia,serif;text-transform:uppercase}
.tabletop .player-board-card.human .player-heading h2{color:var(--player-human)}
.tabletop .player-board-card.ai .player-heading h2{color:var(--player-ai)}
.player-score-pills{display:flex;gap:.45rem;margin-left:auto}
.player-score-pills>span{display:inline-flex;align-items:center;justify-content:center;min-width:72px;padding:.42rem .65rem;border:1px solid #856621;border-radius:999px;background:#211b12;color:#e7ddca;font:700 .78rem/1 sans-serif}
.player-score-pills .clout-score{color:#f0c43f}
.player-score-pills .control-score{font-size:.78rem;color:#e7ddca}
.tabletop .player-board-card .resource-row{display:grid;grid-template-columns:repeat(5,minmax(62px,1fr));gap:.4rem;margin-top:.75rem}
.tabletop .player-board-card .resource-row .token{position:relative;display:grid;grid-template-columns:38px 1fr;align-items:center;gap:.35rem;min-width:0;height:58px;padding:.35rem .45rem;border:1px solid #494139;border-radius:8px;background:#201c18;color:#f1e8da}
.tabletop .player-board-card .resource-row .token.money-token{border-color:#69551f}
.tabletop .player-board-card .resource-row .token.coal{border-color:#593b29}
.tabletop .player-board-card .resource-row .token.cement{border-color:#56585b}
.tabletop .player-board-card .resource-row .token.steel{border-color:#384d59}
.tabletop .player-board-card .resource-row .token.textiles{border-color:#513746}
.tabletop .player-board-card .resource-row .token .sprite{grid-row:1;width:38px;height:38px;border:0;border-radius:50%;filter:drop-shadow(0 2px 3px #000)}
.tabletop .player-board-card .resource-row .token>b{display:block;width:auto;height:auto;color:#f7efe3;font:700 1.35rem/1 Georgia,serif}
.tabletop .player-board-card .resource-row .token>small{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.tabletop .player-board-card .phase-rail{justify-content:center;margin:.75rem -.8rem -.8rem;padding:.55rem .8rem;border-top:1px solid #443a2d}
.tabletop .player-board-card .phase-step{font:400 .67rem/1 Georgia,serif;letter-spacing:.12em}
.tabletop .player-board-card .phase-step.active{padding:.25rem .5rem;border:1px solid #936f20;border-radius:6px;background:#402f12;color:#e9bd39}
.opponent-rail .player-board-card{padding:.45rem .65rem!important}
.opponent-rail .player-board-card .player-heading h2{font-size:.85rem}
.opponent-rail .player-board-card .player-score-pills>span{min-width:58px;padding:.3rem .45rem;font-size:.66rem}
.opponent-rail .player-board-card .resource-row{grid-template-columns:repeat(5,minmax(52px,1fr));gap:.3rem;margin-top:.35rem}
.opponent-rail .player-board-card .resource-row .token{grid-template-columns:25px 1fr;height:34px;padding:.2rem .3rem}
.opponent-rail .player-board-card .resource-row .token .sprite{width:25px;height:25px}
.opponent-rail .player-board-card .resource-row .token>b{font-size:.9rem}
@media(max-width:700px){.tabletop .player-board-card .resource-row{grid-template-columns:repeat(5,minmax(52px,1fr))}.tabletop .player-board-card .resource-row .token{grid-template-columns:30px 1fr;padding:.25rem}.tabletop .player-board-card .resource-row .token .sprite{width:30px;height:30px}.player-score-pills>span{min-width:58px;padding:.35rem .45rem}}

/* Opponent public-card board. Gangsters remain a concealed count; Officials are inspectable. */
.opponent-rail .player-board-card{display:grid;grid-template-columns:minmax(300px,1fr) auto;column-gap:.65rem;align-items:center}
.opponent-rail .player-board-card .player-heading,.opponent-rail .player-board-card .resource-row{grid-column:1}
.opponent-public-cards{grid-column:2;grid-row:1/3;display:flex;align-self:stretch;gap:.4rem;padding-left:.65rem;border-left:1px solid #443a2d}
.opponent-officials{display:flex;align-items:center;gap:.3rem;min-width:132px}
.opponent-officials>span,.opponent-hidden-cards>span{color:#aa9c88;font:.55rem/1 Georgia,serif;letter-spacing:.1em;text-transform:uppercase}
.opponent-official{position:relative;width:42px;height:52px;margin:0;padding:2px!important;overflow:hidden;background:#1a0f1f!important;border:1px solid #765087!important;border-radius:6px!important;box-shadow:0 3px 6px #0008!important}
.opponent-official .sprite{display:block;width:100%;height:100%;background-size:cover;background-position:center}
.opponent-official>b{position:absolute;left:2px;top:2px;display:grid;place-items:center;width:16px;height:16px;border:1px solid #e3b936;border-radius:50%;background:#170d1c;color:#f2cc45;font-size:.58rem}
.opponent-official>small{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.opponent-official:hover,.opponent-official:focus-visible{border-color:#e0b840!important;outline:1px solid #e0b840;transform:translateY(-1px)}
.opponent-official.exhausted{filter:grayscale(.65) brightness(.65)}
.empty-public-cards{color:#71685d;font-size:.62rem;white-space:nowrap}
.opponent-hidden-cards{display:grid;grid-template-columns:auto auto;align-content:center;align-items:center;gap:.15rem .35rem;min-width:70px;padding:.35rem .5rem;background:#211411;border:1px solid #5d2924;border-radius:7px}
.opponent-hidden-cards>span{grid-column:1/-1}
.opponent-hidden-cards>b{color:#e8c94f;font:700 1.15rem/1 Georgia,serif}
.opponent-hidden-cards>small{color:#8f8174;font-size:.58rem}
@media(max-width:1100px){.opponent-rail .player-board-card{grid-template-columns:1fr}.opponent-public-cards{grid-column:1;grid-row:auto;margin-top:.4rem;padding:.4rem 0 0;border-top:1px solid #443a2d;border-left:0}.opponent-rail{min-height:150px}}

/* Horizontal opponent ledger. */
.opponent-rail{min-height:96px;grid-template-columns:minmax(0,1fr) auto auto;padding:.45rem 1rem}
.opponent-rail .game-mark{display:none}
.opponent-rail #opponent-panel{min-width:0}
.opponent-rail .player-board-card{display:grid;grid-template-columns:auto minmax(330px,445px) minmax(280px,1fr);align-items:center;gap:0;max-width:none!important;min-height:70px;padding:.45rem .8rem!important;border-color:#4b4031!important;border-radius:11px}
.opponent-rail .player-board-card .player-heading{grid-column:1;display:flex;min-width:345px;padding:0 1.1rem 0 .2rem}
.opponent-rail .player-board-card .player-heading h2{font-size:1.35rem;white-space:nowrap;text-transform:none}
.opponent-rail .player-score-pills{gap:.35rem}
.opponent-rail .player-score-pills>span{min-width:auto;padding:.34rem .5rem;background:#282011;border:0;font-size:.7rem}
.opponent-rail .player-board-card .resource-row{grid-column:2;display:flex;align-items:center;gap:.85rem;height:54px;margin:0;padding:0 1.1rem;border-left:1px solid #443a2d;border-right:1px solid #443a2d}
.opponent-rail .player-board-card .resource-row .token{display:grid;grid-template-columns:30px auto;width:auto;height:auto;padding:0;background:transparent;border:0!important}
.opponent-rail .player-board-card .resource-row .token .sprite{width:30px;height:30px}
.opponent-rail .player-board-card .resource-row .token>b{font-size:1.1rem}
.opponent-public-cards{grid-column:3;grid-row:1;display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr);align-self:center;gap:.55rem;padding:0 0 0 1.1rem;border:0}
.opponent-hidden-cards,.opponent-officials{box-sizing:border-box;display:flex;align-items:center;gap:.55rem;height:48px;min-width:0;padding:.3rem .55rem;border-radius:7px;background:#201816}
.opponent-hidden-cards{border:1px solid #652b26}
.opponent-hidden-cards>.sprite{flex:0 0 36px;width:36px;height:36px;border:1px solid #a63e36;border-radius:5px}
.opponent-hidden-cards>span,.opponent-officials>span{display:grid;gap:.08rem}
.opponent-hidden-cards>span>b,.opponent-officials>span>b{color:#eadfce;font:700 1rem/1 Georgia,serif}
.opponent-hidden-cards>span>small,.opponent-officials>span>small{color:#817568;font-size:.58rem}
.opponent-officials{border:1px solid #503259;background:#1d1720}
.opponent-official-stack{display:flex;flex:0 0 auto;align-items:center;min-width:36px}
.opponent-official{flex:0 0 36px;width:36px;height:36px;margin:0 0 0 -12px;padding:0!important;border-color:#765087!important;border-radius:5px!important}
.opponent-official:first-child{margin-left:0}
.opponent-official .sprite,.empty-official-art{display:block;width:100%;height:100%;background-size:cover;background-position:center}
.opponent-official:hover,.opponent-official:focus-visible{z-index:20;transform:translateY(-3px) scale(1.08)}
.empty-official-art{width:36px;height:36px;opacity:.35;border:1px solid #765087;border-radius:5px}
@media(max-width:1250px){.opponent-rail .player-board-card{grid-template-columns:auto minmax(300px,1fr)}.opponent-rail .player-board-card .player-heading{min-width:315px}.opponent-rail .player-board-card .resource-row{grid-column:2;border-right:0}.opponent-public-cards{grid-column:1/-1;grid-row:2;margin-top:.4rem;padding:.4rem 0 0;border-top:1px solid #443a2d}.opponent-rail{min-height:142px}}

/* Compact top navigation and opponent board. */
.opponent-rail{grid-template-columns:64px minmax(0,1fr) 68px auto;gap:.65rem;min-height:78px;padding:.35rem .75rem}
.game-logo{box-sizing:border-box;display:grid;grid-template-columns:1fr auto 1fr;place-items:center;width:58px;height:58px;padding:.3rem;border:2px solid #a77a24;border-radius:12px;background:radial-gradient(circle,#352714,#15110d 70%);box-shadow:inset 0 0 0 2px #100c08,0 4px 10px #0009;color:#f0c64b;font:700 1.2rem/1 Georgia,serif}
.game-logo i{color:#a9372d;font-size:.8rem;font-style:normal}
.opponent-rail .player-board-card{grid-template-columns:auto minmax(290px,410px) minmax(230px,330px);min-height:58px;padding:.32rem .65rem!important}
.opponent-rail .player-board-card .player-heading{min-width:300px;padding-right:.8rem}
.opponent-rail .player-board-card .player-heading h2{font-size:1.15rem}
.opponent-rail .player-board-card .resource-row{height:44px;gap:.65rem;padding:0 .8rem}
.opponent-rail .player-board-card .resource-row .token{grid-template-columns:26px auto}
.opponent-rail .player-board-card .resource-row .token .sprite{width:26px;height:26px}
.opponent-rail .player-board-card .resource-row .token>b{font-size:1rem}
.opponent-public-cards{grid-template-columns:repeat(2,minmax(105px,1fr));gap:.4rem;padding-left:.8rem}
.opponent-hidden-cards,.opponent-officials{height:40px;padding:.2rem .4rem}
.opponent-hidden-cards>.sprite,.opponent-official,.empty-official-art{width:30px;height:30px;flex-basis:30px}
.opponent-official{margin-left:-10px}
.status{box-sizing:border-box;display:grid;place-content:center;width:68px;height:58px;padding:.25rem;border:1px solid #655332;border-radius:9px;background:#1d1914;text-align:center}
.labor-show-board{z-index:5;min-height:48px}
.status span{color:#a99b84;font:.58rem/1 Georgia,serif;letter-spacing:.06em;text-transform:uppercase}
.status strong{margin-top:.2rem;color:#efc548;font:700 .72rem/1 Georgia,serif}
.status small{margin-top:.18rem;color:#bd483d;font-size:.48rem;text-transform:uppercase}
.game-menu{position:relative;z-index:40}
.game-menu summary{display:flex;align-items:center;justify-content:center;gap:.35rem;min-width:68px;height:40px;padding:0 .65rem;border:1px solid #5b4d3b;border-radius:7px;background:#211c17;color:#d9cdbb;font:700 .68rem/1 sans-serif;cursor:pointer;list-style:none;text-transform:uppercase}
.game-menu summary::-webkit-details-marker{display:none}.game-menu[open] summary{border-color:#b58a31;color:#f1cb55}
.game-menu-popover{position:absolute;right:0;top:calc(100% + .4rem);display:grid;min-width:175px;padding:.35rem;background:#181410;border:1px solid #705a37;border-radius:7px;box-shadow:0 10px 25px #000d}
.game-menu-popover button,.game-menu-popover a{box-sizing:border-box;width:100%;margin:0;padding:.65rem .75rem;background:transparent!important;border:0!important;border-radius:4px;color:#e2d7c6!important;font:600 .72rem/1.2 sans-serif;text-align:left;text-decoration:none}
.game-menu-popover button:hover,.game-menu-popover button:focus-visible,.game-menu-popover a:hover,.game-menu-popover a:focus-visible{background:#34291b!important;color:#f1c64b!important}
@media(max-width:1250px){.opponent-rail{grid-template-columns:56px minmax(0,1fr) 68px auto;min-height:118px}.game-logo{width:52px;height:52px}.opponent-rail .player-board-card{grid-template-columns:auto minmax(280px,1fr)}.opponent-public-cards{grid-column:1/-1;grid-row:2;margin-top:.25rem;padding:.25rem 0 0;border-top:1px solid #443a2d}}

/* Supplied wordmark and denser opponent information rail. */
.opponent-rail{grid-template-columns:150px minmax(0,1fr) 82px auto;min-height:72px;gap:.55rem;padding:.25rem .65rem}
.game-logo{display:flex;width:144px;height:58px;padding:0;border:0;border-radius:0;background:none;box-shadow:none}
.game-logo img{display:block;width:100%;height:100%;object-fit:contain}
.opponent-rail .player-board-card{grid-template-columns:auto minmax(260px,390px) minmax(205px,290px);min-height:50px;padding:.2rem .5rem!important;border-radius:9px}
.opponent-rail .player-board-card .player-heading{min-width:275px;padding-right:.55rem}
.opponent-rail .player-board-card .player-heading h2{font-size:1rem}
.opponent-rail .player-score-pills{gap:.2rem}
.opponent-rail .player-score-pills>span{padding:.25rem .38rem;font-size:.62rem}
.opponent-rail .player-board-card .resource-row{height:38px;gap:.48rem;padding:0 .6rem}
.opponent-rail .player-board-card .resource-row .token{grid-template-columns:22px auto;gap:.2rem}
.opponent-rail .player-board-card .resource-row .token .sprite{width:22px;height:22px}
.opponent-rail .player-board-card .resource-row .token>b{font-size:.88rem}
.opponent-public-cards{grid-template-columns:repeat(3,max-content);justify-content:start;gap:.25rem;padding-left:.5rem}
.opponent-building-cards,.opponent-hidden-cards,.opponent-officials{box-sizing:border-box;height:42px;gap:.38rem;padding:.18rem .35rem}
.opponent-building-cards{display:flex;align-items:center;min-width:0;border:1px solid #685039;border-radius:7px;background:#211a13;color:#eadfce}
.opponent-building-cards>.sprite,.opponent-hidden-cards>.sprite,.opponent-official,.empty-official-art{width:32px;height:32px;flex-basis:32px}
.opponent-building-cards>span,.opponent-hidden-cards>span,.opponent-officials>span{display:grid;gap:.04rem;color:#aa9c88;font:.5rem/1 Georgia,serif;letter-spacing:.08em;text-transform:uppercase}
.opponent-building-cards>span{min-width:1.2rem;justify-items:start;text-align:left}
.opponent-building-cards>span>b,.opponent-hidden-cards>span>b,.opponent-officials>span>b{color:#eadfce;font-size:.95rem}
.opponent-building-cards>span>small,.opponent-hidden-cards>span>small,.opponent-officials>span>small{font-size:.53rem}
.opponent-building-cards:hover,.opponent-building-cards:focus-visible,.opponent-building-cards[aria-expanded="true"]{border-color:#d6a65e;outline:2px solid #d6a65e}
.opponent-officials:has(.opponent-official):hover,.opponent-officials:has(.opponent-official):focus-within,.opponent-officials:has(.opponent-official[aria-expanded="true"]){border-color:#d6a65e;outline:2px solid #d6a65e}
.opponent-official:hover,.opponent-official:focus-visible{transform:none;outline:0;border-color:#765087!important}
.opponent-building-cards.empty{opacity:.55}
.opponent-official{margin-left:-8px}
.status{width:82px;height:64px;padding:.35rem;border-color:#84692e}
.status span{font-size:.65rem}.status strong{font-size:.82rem}.status small{font-size:.52rem}
@media(max-width:1250px){.opponent-rail{grid-template-columns:125px minmax(0,1fr) 82px auto;min-height:102px}.game-logo{width:120px;height:50px}.opponent-rail .player-board-card{grid-template-columns:auto minmax(245px,1fr)}.opponent-rail .player-board-card .player-heading{min-width:260px}.opponent-public-cards{grid-column:1/-1;grid-row:2;margin-top:.15rem;padding:.15rem 0 0;border-top:1px solid #443a2d}}

.opponent-rail .player-board-card .player-heading{display:grid;grid-template-columns:1fr;justify-items:start;align-content:center;gap:.28rem;min-width:132px}
.opponent-rail .player-board-card .player-heading h2{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}
.opponent-rail .player-score-pills{margin:0}
@media(max-width:1250px){.opponent-rail .player-board-card .player-heading{min-width:132px}}

/* Align top-bar containers without stretching the opponent ledger. */
.opponent-rail{grid-template-columns:150px minmax(24px,1fr) auto 82px auto}
.opponent-rail #opponent-panel{grid-column:3;justify-self:end;width:max-content;max-width:100%}
.opponent-rail .player-board-card{box-sizing:border-box;width:max-content;height:64px;min-height:64px}
.status{grid-column:4;height:64px}
.game-menu{grid-column:5}
.game-menu summary{box-sizing:border-box;height:64px}
@media(max-width:1250px){.opponent-rail{grid-template-columns:125px minmax(16px,1fr) auto 82px auto;min-height:72px}.opponent-rail #opponent-panel{grid-column:3}.opponent-rail .player-board-card{grid-template-columns:auto minmax(245px,360px) minmax(190px,260px);height:64px}.opponent-public-cards{grid-column:3;grid-row:1;margin:0;padding:0 0 0 .6rem;border-top:0}.status{grid-column:4}.game-menu{grid-column:5}}
@media(max-width:980px){.opponent-rail{grid-template-columns:105px minmax(0,1fr) 76px auto;min-height:118px}.game-logo{width:100px}.opponent-rail #opponent-panel{grid-column:2;justify-self:stretch;width:auto}.opponent-rail .player-board-card{grid-template-columns:auto minmax(220px,1fr);width:100%;height:auto;min-height:64px}.opponent-public-cards{grid-column:1/-1;grid-row:2;margin-top:.15rem;padding:.15rem 0 0;border-top:1px solid #443a2d}.status{grid-column:3}.game-menu{grid-column:4}}

/* Keep resources legible while the three opponent hand controls stay compact. */
.opponent-rail .player-board-card .resource-row{height:48px;gap:.52rem}
.opponent-rail .player-board-card .resource-row .token{grid-template-columns:30px auto;gap:.25rem}
.opponent-rail .player-board-card .resource-row .token .sprite{width:30px;height:30px}
.opponent-rail .player-board-card .resource-row .token>b{font-size:1rem}
.opponent-building-cards,.opponent-hidden-cards,.opponent-officials{height:42px;padding:.18rem .35rem}
.opponent-building-cards>.sprite,.opponent-hidden-cards>.sprite,.opponent-official,.empty-official-art{width:32px;height:32px;flex-basis:32px}
.opponent-official{margin-left:-10px}
.opponent-building-cards>span>b,.opponent-hidden-cards>span>b,.opponent-officials>span>b{font-size:.95rem}
.opponent-building-cards>span>small,.opponent-hidden-cards>span>small,.opponent-officials>span>small{font-size:.53rem}

/* Match the human player board's resource-tile treatment. */
.opponent-rail .player-board-card .resource-row{display:grid;grid-template-columns:repeat(5,minmax(58px,1fr));gap:.3rem;height:48px}
.opponent-rail .player-board-card .resource-row .token{box-sizing:border-box;display:grid;grid-template-columns:28px auto;gap:.25rem;height:40px;padding:.22rem .32rem;background:#201c18;border:1px solid #494139!important;border-radius:7px}
.opponent-rail .player-board-card .resource-row .token.money-token{border-color:#69551f!important}
.opponent-rail .player-board-card .resource-row .token.coal{border-color:#593b29!important}
.opponent-rail .player-board-card .resource-row .token.cement{border-color:#56585b!important}
.opponent-rail .player-board-card .resource-row .token.steel{border-color:#384d59!important}
.opponent-rail .player-board-card .resource-row .token.textiles{border-color:#513746!important}
.opponent-rail .player-board-card .resource-row .token .sprite{width:28px;height:28px}

/* Size the opponent ledger from its visible contents. */
.opponent-rail .player-board-card{
  width:max-content;
  height:auto;
  min-height:0;
  grid-template-columns:max-content max-content max-content;
}
.opponent-rail .player-board-card .player-heading{min-width:0;width:max-content}
.opponent-rail .player-board-card .resource-row{width:max-content}
.opponent-public-cards{width:max-content}
.opponent-official:hover,.opponent-official:focus,.opponent-official:focus-visible{
  z-index:auto;
  transform:none!important;
  outline:0!important;
  border-color:#765087!important;
  background:#1a0f1f!important;
  box-shadow:0 3px 6px #0008!important;
}
@media(max-width:980px){
  .opponent-rail .player-board-card{width:100%;grid-template-columns:auto minmax(220px,1fr)}
  .opponent-rail .player-board-card .resource-row{width:auto}
}

.tabletop .player-board-card .phase-rail{justify-content:flex-start}

.labor-recovery-feedback{min-height:58px;display:flex;align-items:center;padding:.7rem .8rem;border:1px solid #5b5852;border-radius:7px;background:#292825;color:#c7c4bc;font-size:.8rem;line-height:1.4}
.labor-recovery-feedback.recovery{background:#16331b;border-color:#397d45;color:#a0d9a7}
.labor-recovery-feedback.risk{background:#3a1918;border-color:#95443e;color:#efaaa0}
.quell-cancel{position:absolute;z-index:9;left:50%;top:45%;transform:translate(-50%,-50%);padding:1rem;background:#211b14;border:2px solid #d5b46b;color:#fff0cb;pointer-events:auto}
/* The district targets use the same map interaction as building placement. */

.building-detail-inspector .inspector-actions{position:static;min-width:0;margin:.75rem 0;padding:0;background:none;border-radius:0}
.building-detail-inspector .inspector-actions button{box-sizing:border-box;min-width:0;max-width:100%;padding:.7rem .6rem;white-space:normal;overflow-wrap:anywhere;line-height:1.35;background:#663b19;border:1px solid #b97832;color:#fff0cf}
.building-detail-inspector.housing .inspector-actions button{background:#204c35;border-color:#438365}

.map-building-inspector .building-detail-body{padding:.8rem .45rem .35rem}
.map-building-inspector .building-detail-body h3{margin:.15rem 0 .65rem;font-size:1.65rem}
.building-upgrade-benefit{margin:.5rem 0;color:#dec9af;font-size:.82rem;line-height:1.45}
.building-worker-strip{display:flex;margin-top:1rem;border:1px solid #a16c35;border-radius:6px;overflow:hidden;background:#1c130c}
.building-worker-slot{flex:1;min-width:0;display:grid;justify-items:center;gap:.5rem;padding:.6rem .2rem}
.building-worker-slot+.building-worker-slot{border-left:1px solid #80552d}
.building-worker-slot span{font:700 .62rem/1.2 Georgia,serif;color:#d9c7a9}
.building-worker-slot.overwork{background:#4b2d193d}
.worker-cube-space{display:block;width:25px;height:25px;border:2px solid #b7a98d;border-radius:3px;background:#0f0d0a;box-shadow:inset 0 2px 4px #0008}
.overwork .worker-cube-space{border-color:#b87840}
.worker-cube-space.occupied{background:#e2ddcf;box-shadow:inset 0 0 0 3px #999384,1px 2px 3px #0008}
.map-building-inspector.housing .building-worker-strip{border-color:#438365;background:#11291d}

.map-building-inspector .building-output-badge{top:auto;bottom:9px;right:9px}

.map-building-inspector.owner-human{border:3px solid var(--player-human)}
.map-building-inspector.owner-ai{border:3px solid var(--player-ai)}

/* District order stays visible throughout each Labor dossier. */
.labor-progress-layout{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;width:min(1400px,100%);height:100%;min-height:0}
.labor-progress-content{display:grid;place-items:center;min-width:0;min-height:0;height:100%}
.labor-progress-content>section{box-sizing:border-box;width:100%;max-height:100%;overflow:auto}
.labor-district-progress{align-self:center;position:relative;z-index:1}
.labor-district-progress ol{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.district-progress-tab{display:grid;justify-items:center;gap:7px;padding:10px 6px;background:#16130f;border:1px solid #494031;border-right:0;border-radius:7px 0 0 7px;color:#9b9180;text-align:center}
.district-progress-tab>span{width:100%;padding-bottom:6px;border-bottom:1px solid currentColor;font:700 .57rem/1.3 sans-serif;letter-spacing:.09em;text-transform:uppercase}
.district-progress-tab>strong{font:400 .8rem/1.25 Georgia,serif}
.district-progress-tab>b{display:grid;place-items:center;width:20px;height:20px;border:1px solid currentColor;border-radius:50%;font:700 .65rem/1 Georgia,serif}
.district-progress-tab.completed{color:#88a76b;background:#1a2015}
.district-progress-tab.active{color:#f2cc48;background:#2b2411}
.district-progress-tab.current{border:2px solid #e9bd38;border-right:0;box-shadow:-3px 0 14px #d5a82c25}
.district-progress-tab.active>b{background:#e9bd38;color:#251b09}
.district-progress-tab.riot{color:#ed7766;border-color:#a8362d;background:#32100e}
.district-progress-tab.riot.current{border-color:#f2c448}
@media(max-width:850px){.labor-progress-layout{grid-template-columns:88px minmax(0,1fr)}.district-progress-tab{padding:8px 4px}.district-progress-tab>strong{font-size:.7rem}.labor-progress-content .allocation-overview-grid,.labor-progress-content .control-overview-grid,.labor-progress-content .riot-resolution-grid{grid-template-columns:1fr}}
@media(max-height:650px){.district-progress-tab{padding:5px;gap:4px}.district-progress-tab>b{width:16px;height:16px}}

.riot-spread-report{margin:1rem 0;padding:.8rem 1rem;background:#301713;border:1px solid #a44e35;border-radius:8px;color:#efceae}
.riot-spread-report h3{margin:0;color:#f29976;font:700 1rem/1.2 Georgia,serif}.riot-spread-report>p{margin:.35rem 0 .65rem;font-size:.8rem}
.riot-spread-report ol{display:grid;gap:.5rem;margin:0;padding:0;list-style:none}.riot-spread-report li{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem 1rem;padding:.5rem;background:#1e100c;border-radius:4px;font-size:.85rem}.riot-spread-report li>strong{color:#ffb088;margin-left:auto}.riot-spread-report em{color:#ffdb7c;font-style:normal;font-weight:bold}
