*{box-sizing:border-box}html,body{margin:0;height:100%;background:#102e32;color:#eef0da;font:15px/1.5 Arial,sans-serif}body{overflow:hidden}button,input,select{font:inherit}button{cursor:pointer;border:1px solid #557471;background:#234e50;color:#f6f3df;padding:9px 13px;border-radius:8px;min-height:44px;font-weight:700}button:hover{background:#36676a}button:disabled{opacity:.45;cursor:default}.primary{background:#e5bd65;color:#182e30;border-color:#e5bd65}.primary:hover{background:#f5d180}input,select{border:1px solid #577670;color:#fff;background:#142d32;border-radius:7px;padding:10px;min-height:44px;max-width:100%;width:100%}input::placeholder{color:#91aaa2}input[inputmode=numeric],.digits{direction:ltr;unicode-bidi:isolate}.muted{color:#a8c1b3;font-size:13px}.brand{font-family:Georgia,serif;font-size:20px;line-height:1.15;color:#ead198;direction:ltr;flex-shrink:0}.brand small{display:block;font:10px Arial,sans-serif;letter-spacing:2px;color:#a8c1b3;text-transform:uppercase;margin-top:5px}.topbar{height:68px;padding:10px 22px;display:flex;align-items:center;gap:14px;background:#102e32;border-bottom:1px solid #42605b}.topbar .spacer{flex:1}.topbar button{font-size:12px}.status{font-size:12px;color:#b2caba}.chip{padding:4px 9px;border-radius:20px;background:#274a46;font-size:12px}.home{height:100dvh;overflow:auto;background:radial-gradient(ellipse at 80% 30%,#30675e,#102e32 65%)}.hero{max-width:1060px;margin:0 auto;padding:50px 24px;display:grid;grid-template-columns:1.1fr 1fr;gap:50px;align-items:center}.hero h1{font:clamp(40px,6vw,70px)/1.06 Georgia,serif;color:#ead198;margin:18px 0}.hero p{color:#bccec1;max-width:470px;font-size:17px}.eyebrow{text-transform:uppercase;letter-spacing:3px;color:#e5bd65;font-size:11px}.card{background:#183e40;border:1px solid #42635d;border-radius:15px;padding:22px;box-shadow:0 20px 50px #081b2544}.card h2{margin:0 0 12px;color:#e9d9aa;font-size:20px}label{display:block;font-size:13px;color:#b9cbbf;margin-bottom:12px}label input,label select{display:block;margin-top:5px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row>*{min-width:0}.forms{display:grid;gap:18px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.passive{padding:10px;border-inline-start:3px solid #e5bd65;color:#d8e2cd;font-size:13px;background:#214948;margin-bottom:14px}.saved{padding:8px 0;display:grid;gap:8px}.saved button{text-align:start}.lobby-layout{display:grid;grid-template-columns:1fr 330px;gap:24px;max-width:1100px;margin:30px auto;padding:0 22px;height:calc(100dvh - 140px);overflow:auto}.seats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.seat{display:flex;gap:12px;padding:14px;background:#1b4140;border:1px solid #4a665c;border-radius:12px}.seat h3{font-size:15px;margin:0}.seat p{margin:4px 0}.portrait{width:48px;height:48px;display:inline-block;flex-shrink:0;image-rendering:pixelated;background-image:url('/assets/pixel/crew-portraits.png');background-size:600% 100%;background-position:0 50%;border:2px solid #d6bc76;border-radius:8px;background-color:#3d5750}.portrait.extra{background-image:url('/assets/board/new-portraits.png');background-size:400% 100%}.seat .content{flex:1}.invite-code{font:700 25px monospace;letter-spacing:4px;color:#e5bd65}.game{height:calc(100dvh - 68px);display:grid;grid-template-columns:minmax(0,1fr) 330px;grid-template-rows:minmax(0,1fr);gap:0}.board-region{position:relative;overflow:hidden;min-width:0;background:#284947}.viewport{position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:grab;direction:ltr;background:radial-gradient(ellipse,#527764,#224946 75%)}.viewport.dragging{cursor:grabbing}.map{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;direction:ltr}.tile{position:absolute;border:3px solid #21483f;background:#648473;border-radius:9px;overflow:visible}.tile:nth-child(2n){background:#739680}.tile-art{display:block;position:absolute;width:64px;height:64px;left:13px;top:1px;padding:0;background-image:url('/assets/board/city-tiles.png');background-size:1000% 600%;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none}.tile-name{position:absolute;bottom:3px;left:3px;right:3px;font-size:8px;line-height:1.1;max-height:22px;overflow:hidden;color:#102f2d;text-align:center;font-weight:700}.tile-index{position:absolute;top:2px;left:3px;color:#d2e3c3;font:7px monospace;z-index:1}.tile.owner{border-color:var(--owner-color,#e9bd62)}.tile.selected{box-shadow:0 0 0 3px #e7ce79;z-index:1}.tokens{position:absolute;inset:0;pointer-events:none}.token{position:absolute;width:22px;height:27px;margin-left:2px;margin-top:40px;background:var(--token-color);border:2px solid white;box-shadow:0 3px 2px #16323288;border-radius:50% 50% 40% 40%;color:#152e32;display:grid;place-items:center;font:bold 12px Arial;transition:left .24s linear,top .24s linear;z-index:5}.token.me{outline:2px solid #ead077;outline-offset:2px}.board-tools{position:absolute;top:14px;left:14px;right:14px;display:flex;gap:7px;justify-content:space-between;pointer-events:none}.board-tools .row{pointer-events:auto}.board-tools button{background:#173a38e8;font-size:12px;box-shadow:0 3px 10px #10252f44}.board-tools .active{border-color:#efcc70}.camera-hint{position:absolute;bottom:16px;left:18px;font-size:11px;color:#d7dfc5;background:#173b35cd;padding:7px 10px;border-radius:6px;pointer-events:none}.turn-banner{position:absolute;top:70px;left:18px;color:#efdeb0;background:#173a38e6;padding:7px 12px;border-radius:7px;font-size:13px;pointer-events:none}.side{min-height:0;display:flex;flex-direction:column;background:#102e32;border-inline-start:1px solid #45685b}.players{display:flex;gap:7px;padding:12px;overflow:auto;flex-shrink:0;border-bottom:1px solid #42635d}.player-mini{min-width:82px;padding:6px 8px;border:1px solid #48645b;border-radius:8px;position:relative}.player-mini.active{background:#365648;border-color:#e5bd65}.player-mini strong{font-size:11px;display:block;white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis}.player-mini span{font-size:12px;color:#e6cd90}.player-mini i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--token-color);margin-inline-end:5px}.decision{padding:16px;overflow:auto;max-height:52%;flex-shrink:0;border-bottom:1px solid #42635d}.decision h2{font-size:18px;color:#e9d19a;margin:0 0 8px}.decision p{margin:6px 0 12px}.decision .row button{flex:1}.die-row{display:flex;gap:12px;align-items:center;margin:10px 0}.die{width:55px;height:55px;border-radius:10px;background:#f1e5bd;color:#193b3b;display:grid;place-items:center;font-size:35px;box-shadow:0 4px 0 #b79d67}.die.rolling{animation:tumble .15s infinite alternate}.bank-fields{margin-top:12px;padding-top:10px;border-top:1px solid #42635d}.bank-fields .row{margin-top:7px}.bank-fields button{font-size:12px;padding:8px}.bank-fields input{margin-top:6px}.property-list{font-size:12px;padding:8px 0;color:#b9cdb9;max-height:110px;overflow:auto}.feed-tabs{display:flex;padding:6px 10px;gap:6px}.feed-tabs button{flex:1;font-size:12px;background:transparent;min-height:38px}.feed-tabs button.active{border-color:#d7b661;background:#244d46}.feed{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:4px 16px;font-size:12px}.feed p{margin:6px 0;padding:6px 0;border-bottom:1px solid #345750;overflow-wrap:anywhere}.feed b{color:#e5cc94}.chat-form{display:flex;gap:6px;padding:10px;border-top:1px solid #42635d}.chat-form input{font-size:13px}.chat-form button{font-size:12px}.empty{padding:12px;color:#afc3b4;font-size:13px}dialog{background:#173d3e;color:#eef0da;border:1px solid #6b8470;border-radius:16px;padding:24px;width:min(460px,calc(100vw - 24px));max-height:90dvh;overflow:auto}dialog::backdrop{background:#071b25aa}dialog h2{margin-top:0;color:#e6cc95}dialog .row{margin-bottom:14px}dialog button[aria-pressed=true]{background:#d8b45d;color:#152f32}dialog input[type=range]{padding:0;width:100%}dialog .setting{margin:16px 0;border-top:1px solid #42635d;padding-top:16px}.toggle{display:flex;gap:10px;align-items:center}.toggle input{width:18px;height:18px;min-height:0}.close-row{display:flex;justify-content:flex-end}#notice{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#ecce86;color:#183731;padding:10px 18px;border-radius:8px;z-index:50;max-width:90%;box-shadow:0 4px 20px #061a22aa;display:none}#notice.visible{display:block}:root[dir=rtl] body,:root[dir=rtl] button,:root[dir=rtl] input,:root[dir=rtl] select{font-family:Vazirmatn,Tahoma,sans-serif;letter-spacing:normal}:root[dir=rtl] .hero h1{font-family:Vazirmatn,Tahoma,sans-serif;line-height:1.5;font-size:48px}:root[dir=rtl] .tile-name{font-family:Vazirmatn,Tahoma,sans-serif;direction:rtl;font-size:9px}.danger{background:#593b3c;border-color:#a67861}@keyframes tumble{from{transform:rotate(-18deg)}to{transform:rotate(18deg)}}@media(prefers-reduced-motion:reduce){.token{transition:none}.die.rolling{animation:none}}@media(max-width:800px){.topbar{padding:8px 12px;gap:7px}.brand{font-size:16px}.brand small{font-size:8px}.topbar button{padding:7px;font-size:11px}.status{display:none}.game{grid-template-columns:minmax(0,1fr) 280px}.hero{gap:22px;padding-top:24px}.lobby-layout{grid-template-columns:1fr}.seats{grid-template-columns:1fr 1fr}}@media(max-width:600px){.topbar{height:60px}.chip{font-size:10px;padding:4px 6px}.topbar .home-button{display:none}.hero{grid-template-columns:1fr;padding:26px 18px}.hero h1{font-size:46px}.hero p{font-size:15px}.forms{gap:14px}.game{height:calc(100dvh - 60px);grid-template-columns:1fr;grid-template-rows:minmax(200px,1fr) minmax(230px,46%)}.side{border-inline-start:0;border-top:1px solid #45685b;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-template-rows:54px minmax(0,1fr) 48px}.players{grid-column:1/-1;padding:5px;gap:4px}.player-mini{min-width:68px;padding:3px 7px}.player-mini strong{font-size:10px}.decision{grid-column:1;grid-row:2/4;max-height:none;padding:10px;border-inline-end:1px solid #42635d;border-bottom:0}.decision h2{font-size:15px}.decision p{font-size:12px}.decision button{font-size:12px;padding:7px}.die{width:40px;height:40px;font-size:27px}.die-row{margin:7px 0;gap:8px}.feed-tabs{grid-column:2;grid-row:2;padding:0 5px;height:39px;align-self:start;z-index:1;background:#102e32}.feed-tabs button{font-size:10px;padding:3px;min-height:34px}.feed{grid-column:2;grid-row:2;padding:40px 8px 5px;font-size:11px}.chat-form{grid-column:2;grid-row:3;padding:4px;gap:3px}.chat-form input{font-size:11px;padding:5px;min-height:38px}.chat-form button{font-size:10px;padding:5px;min-height:38px}.board-tools{top:10px;left:10px;right:10px;gap:4px}.board-tools button{font-size:10px;padding:7px;min-height:40px}.turn-banner{top:61px;font-size:11px;left:10px}.camera-hint{font-size:9px;bottom:8px;left:10px}.lobby-layout{padding:0 12px;margin:15px auto;height:calc(100dvh - 90px)}.seats{grid-template-columns:1fr}.card{padding:16px}.bank-fields .row{gap:4px}.bank-fields button{font-size:10px}.passive{font-size:12px}}
.tile-art{width:100%;height:100%;left:0;top:0}.tile-name{color:#fff;background:#102e32d9;border-radius:3px;padding:2px 1px;bottom:2px}.tile-index{background:#102e32cc;border-radius:2px;padding:1px 2px}.tile{padding:0}
.token{width:26px;height:30px;margin-top:25px;border-radius:5px;background:var(--token-color);display:block;padding:1px}.token .portrait{width:20px;height:24px;border:0;border-radius:3px;display:block}.token small{position:absolute;top:27px;left:-8px;display:block;max-width:50px;width:50px;font:7px Arial,sans-serif;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:white;background:#153d35e0;border-radius:2px;padding:1px}
.map-card{border:1px solid #6c8063;padding:16px;border-radius:12px;background:#173f39;margin:24px 0}.map-card h2{font:24px Georgia,serif;margin:8px 0 14px;color:#e6d09a}:root[dir=rtl] .map-card h2{font-family:var(--locale-font,Vazirmatn),Tahoma,sans-serif;font-weight:600;line-height:1.6;letter-spacing:normal}.map-card p{font-size:13px;margin-bottom:6px}.map-card input{width:18px;min-height:18px;height:18px}.map-preview{display:flex;gap:8px;direction:ltr}.preview-frame{display:block;width:80px;height:80px;position:relative;overflow:hidden;border:2px solid #769774;border-radius:7px;flex:1;max-width:100px}.preview-frame .tile-art{width:100%;height:100%;left:0;top:0}
@media(max-width:600px){.topbar{gap:4px}}

/* Spacious circuit and attached captions; dimensions come from geometry.js. */
html,body{background:#0b2028}.card,.seat{background:#132e35}.board-column{min-width:0;min-height:0;display:flex;flex-direction:column}.board-region{flex:2 1 0;min-height:180px;background:#081e26}.viewport{background:radial-gradient(ellipse at 50% 45%,#1b3740,#091f28 80%)}.map{background:transparent}.route-links{position:absolute;inset:0;overflow:visible;pointer-events:none;direction:ltr}.route-links marker path{fill:#c7b47c;shape-rendering:crispEdges}.route-link{stroke:#a89f72;stroke-width:2;fill:none;opacity:.75;shape-rendering:crispEdges}.tile,.tile:nth-child(2n),.tile:hover{background:transparent;border:0;border-radius:8px;overflow:hidden;box-shadow:0 4px 12px #03131d77;padding:0;text-align:start;min-height:0}.tile-image{display:block;position:relative;width:100%;border:2px solid #5b7371;border-radius:8px 8px 0 0;overflow:hidden}.tile-image .tile-art{width:100%;height:100%;left:0;top:0;padding:0}.tile.owner .tile-image{border-color:var(--owner-color)}.tile.selected{box-shadow:0 0 0 3px #e7ce79,0 4px 12px #03131d77}.tile-caption{display:block;width:100%;padding:7px 8px;background:#102833;color:#e5e8d9;border:1px solid #3c5358;border-top:0;border-radius:0 0 8px 8px;font-size:11px;line-height:1.4;overflow:hidden;direction:ltr}.tile-caption .tile-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;position:static;max-height:none;height:32px;overflow:hidden;line-height:16px;color:#f0dfb2;font-size:12px;background:none;padding:0;text-align:start;font-weight:700}.owner-name{unicode-bidi:isolate;overflow-wrap:anywhere}.tile-index{font-size:9px;top:3px;left:3px;z-index:2}.token{margin:0;box-shadow:0 3px 4px #021b2588}.token small{background:#0a2228e8}.tile-caption[dir=rtl]{direction:rtl;text-align:right}:root[dir=rtl] .tile-caption .tile-name{font-size:12px;line-height:16px;letter-spacing:normal}:root[dir=rtl] .tile-caption{font-family:var(--locale-font,Vazirmatn),Tahoma,sans-serif}.assets-panel{flex:1 1 0;min-height:120px;background:#0b222c;border-top:1px solid #38505a;padding:12px 16px;overflow:auto}.assets-heading{display:flex;gap:12px;justify-content:space-between;align-items:center;margin-bottom:8px}.assets-heading h2{font-size:16px;color:#e5d39f;margin:0}.assets-heading h2 span{font-size:12px;color:#95b4a9}.assets-heading p{font-size:11px;color:#94b4a7;margin:0}.asset-strip{display:flex;gap:9px;overflow-x:auto;padding:4px 2px 8px}.asset-thumb{width:106px;min-width:106px;min-height:0;height:134px;padding:7px;background:#132f39;border-color:#48606a;flex-shrink:0}.asset-thumb:hover,.asset-thumb:focus-visible{border-color:#e0c06c;background:#1b3b43;outline:2px solid #e0c06c;outline-offset:1px}.asset-art{display:block;width:88px;height:88px;image-rendering:pixelated;border-radius:5px;margin:0 auto 4px}.asset-thumb>span:last-child{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:11px;line-height:15px;height:30px}.asset-preview{position:fixed;width:320px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:auto;z-index:60;background:#102a34;color:#edf0df;border:1px solid #91a37d;border-radius:12px;box-shadow:0 10px 40px #04131de0;padding:15px;pointer-events:none}.asset-preview[hidden]{display:none}.asset-preview h2{font-size:16px;margin:0 0 8px;color:#ecd49e}.asset-preview p{font-size:11px;margin:7px 0}.asset-metrics{margin:10px 0}.asset-metrics>div{display:flex;align-items:start;gap:12px;justify-content:space-between;padding:5px 0;border-bottom:1px solid #37505a;font-size:12px}.asset-metrics dt{color:#bbcdc2}.asset-metrics dd{margin:0;color:#f0ddae;text-align:end}.history-note{padding:8px;background:#394033;border-radius:6px;font-size:12px;color:#e9dbb4}.unread-badge{display:inline-block;min-width:20px;border-radius:12px;padding:1px 6px;margin-inline-start:3px;background:#e5bd65;color:#102e32;font-size:11px;line-height:18px}
@media(max-width:600px){.game{grid-template-rows:minmax(320px,60%) minmax(230px,1fr)}.board-region{flex:1;min-height:180px}.assets-panel{flex:none;height:86px;min-height:86px;padding:4px 8px;overflow:hidden}.assets-heading{margin-bottom:1px}.assets-heading h2{font-size:11px}.assets-heading h2 span{font-size:10px}.assets-heading p{display:none}.asset-strip{gap:5px;padding:1px 0 4px}.asset-thumb{width:68px;min-width:68px;height:62px;padding:2px}.asset-art{width:42px;height:42px;margin-bottom:1px}.asset-thumb>span:last-child{font-size:8px;line-height:12px;height:12px;-webkit-line-clamp:1}.unread-badge{font-size:9px;min-width:16px;padding:0 4px}.asset-preview{max-height:calc(100dvh - 16px)}}
.auto-end{position:relative;overflow:hidden;background:#89723b;color:#101f26;isolation:isolate}.auto-end::before{content:'';position:absolute;left:0;top:0;bottom:0;width:var(--turn-progress,0%);background:#f1cc75;z-index:-1;pointer-events:none}.auto-end bdi,.auto-end span{position:relative}.end-remaining{display:block;font-size:11px;font-weight:400;margin-top:2px;unicode-bidi:isolate}@media(prefers-reduced-motion:reduce){.auto-end::before{transition:none}}

/* Compact titles; property figures live in the board detail popover. */
.tile-caption{padding:4px 6px;border-bottom:1px solid #38515b;font-size:10px}
.tile-caption .tile-name,:root[dir=rtl] .tile-caption .tile-name{display:block;height:19px;min-height:0;margin:0;font-size:10px;line-height:19px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;text-align:center}
.tile:focus-visible{outline:3px solid #f0d58b;outline-offset:3px;z-index:2}
.tile-popover{position:fixed;margin:0;width:280px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:auto;z-index:60;background:#102a34;color:#edf0df;border:1px solid #91a37d;border-radius:12px;box-shadow:0 10px 40px #04131de0;padding:14px}
.tile-popover[hidden]{display:none}.tile-popover h2{font-size:16px;color:#ecd49e;margin:0 0 8px}.tile-popover p{font-size:12px;margin:6px 0}.tile-popover button{font-size:12px;min-height:44px}.tile-popover .owner-name{overflow-wrap:anywhere}
.side .decision,.side .feed,.side .players{scrollbar-width:thin;scrollbar-color:#81978b #112832;overscroll-behavior:contain}
.side .decision::-webkit-scrollbar,.side .feed::-webkit-scrollbar,.side .players::-webkit-scrollbar{width:10px;height:10px}
.side .decision::-webkit-scrollbar-track,.side .feed::-webkit-scrollbar-track,.side .players::-webkit-scrollbar-track{background:#112832}
.side .decision::-webkit-scrollbar-thumb,.side .feed::-webkit-scrollbar-thumb,.side .players::-webkit-scrollbar-thumb{background:#81978b;border:2px solid #112832;border-radius:8px}
.side .decision::-webkit-scrollbar-thumb:hover,.side .feed::-webkit-scrollbar-thumb:hover,.side .players::-webkit-scrollbar-thumb:hover{background:#c1b782}

.asset-finances{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px 12px;margin:0 0 5px;color:#bfd1c5}.asset-finances>div{min-width:0}.asset-finances dt{font-size:11px;line-height:15px}.asset-finances dd{margin:0;font-size:14px;line-height:18px;color:#f0ddae;font-weight:700;overflow-wrap:anywhere}.asset-finances bdi{margin:0}.valuation-note{font-size:10px;line-height:14px;color:#95b4a9;margin:0 0 6px}
@media(max-width:600px){.assets-panel{height:192px;min-height:192px}.asset-finances{grid-template-columns:repeat(3,minmax(0,1fr));gap:2px 8px;margin-bottom:3px}.asset-finances dt{font-size:10px;line-height:13px}.asset-finances dd{font-size:12px;line-height:15px}.valuation-note{font-size:9px;line-height:12px;margin-bottom:3px}}

/* Player-colored frames stay centered on portraits; nameplates occupy two columns. */
.token{width:24px;height:28px;margin:-1px;padding:0;background:transparent;border:3px solid var(--token-color);border-radius:5px;outline:0;box-shadow:0 3px 3px #020b12bf;z-index:5}
.token .portrait{width:18px;height:22px;border:0;border-radius:1px;background-color:transparent;margin:0;box-shadow:none}
.token.me{outline:0}.token small{width:56px;max-width:56px;left:-17px;top:-20px;padding:2px;font:10px/12px Arial,sans-serif;background:#07151e;color:#fff5d6;border:0;border-radius:2px}
.token.active-turn{border-color:var(--token-color);z-index:8}
.token::before{content:'';position:absolute;top:-4px;left:6px;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #07151e}
:root[dir=rtl] .token small{font-family:var(--locale-font,Vazirmatn),Tahoma,sans-serif}

.assets-panel,.asset-strip{scrollbar-width:thin;scrollbar-color:#81978b #112832}.assets-panel::-webkit-scrollbar,.asset-strip::-webkit-scrollbar{width:10px;height:10px}.assets-panel::-webkit-scrollbar-track,.asset-strip::-webkit-scrollbar-track{background:#112832}.assets-panel::-webkit-scrollbar-thumb,.asset-strip::-webkit-scrollbar-thumb{background:#81978b;border:2px solid #112832;border-radius:8px}

/* Wallet/header remain fixed; only the property strip scrolls. */
.assets-panel{display:flex;flex-direction:column;overflow:hidden}.asset-finances,.valuation-note,.assets-heading{flex-shrink:0}.assets-heading{margin-bottom:4px}.asset-strip{flex:1;min-height:0;overflow-x:auto;overflow-y:hidden;align-items:flex-start;padding:2px 2px 6px}.asset-thumb{height:102px;padding:6px}.asset-art{width:64px;height:64px;margin-bottom:2px}.asset-thumb>span:last-child{font-size:10px;line-height:12px;height:24px}
@media(max-width:600px){.assets-heading{margin-bottom:1px}.asset-strip{padding:1px 0 4px}.asset-thumb{height:62px;padding:2px}.asset-art{width:42px;height:42px;margin-bottom:1px}.asset-thumb>span:last-child{font-size:8px;line-height:12px;height:12px}}

#app.game-mode{height:100dvh;display:grid;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden}.game-mode .game{height:auto;min-height:0}
.header-players{display:flex;gap:6px;min-width:0;overflow-x:auto;overflow-y:hidden;padding:5px 14px;background:#0c2630;border-bottom:1px solid #42635d;scrollbar-width:thin;scrollbar-color:#81978b #112832}
.header-players .player-mini{min-width:100px;max-width:140px;min-height:40px;text-align:start;padding:4px 8px;flex-shrink:0;background:#183a3d}.header-players .player-mini.active{background:#365648;border-color:#f0d58b;box-shadow:inset 0 0 0 1px #f0d58b}.header-players .player-mini.self strong::after{content:'●';font-size:7px;margin-inline-start:4px;color:#f0d58b}.header-players .player-mini span{font-size:10px}.header-players .player-mini:focus-visible{outline:2px solid #f0d58b;outline-offset:-2px}.player-popover .asset-finances{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:600px){.game-mode .side{grid-template-rows:minmax(0,1fr) 48px}.game-mode .decision{grid-row:1/3}.game-mode .feed-tabs,.game-mode .feed{grid-row:1}.game-mode .chat-form{grid-row:2}.header-players{padding:4px 8px;gap:4px}.header-players .player-mini{min-width:92px;min-height:40px;padding:3px 6px}.game-mode .game{grid-template-rows:minmax(372px,60%) minmax(180px,1fr)}}

.player-header{display:flex;align-items:stretch;min-width:0;background:#0c2630;border-bottom:1px solid #42635d}.player-header .header-players{flex:1;min-width:0;border:0}.statistics-button{flex-shrink:0;margin:5px 10px 5px 0;font-size:11px;padding:5px 8px}.ranking-row{padding:8px 10px;margin:8px 0;background:#102a34;border:1px solid #42635d;border-radius:8px}.ranking-row h3{font-size:14px;overflow-wrap:anywhere;margin:0 0 6px;color:#ecd49e}.ranking-row h3 small{font-size:10px;margin-inline-start:8px;color:#bfd1c5}.city-ranking .asset-finances{grid-template-columns:repeat(3,minmax(0,1fr))}.city-counts{font-size:12px}#city-statistics{width:min(680px,calc(100vw - 24px))}
@media(max-width:600px){.statistics-button{max-width:95px;margin:4px 6px 4px 0;font-size:10px;line-height:14px}.ranking-row{padding:7px}.ranking-row h3{font-size:12px}#city-statistics{padding:16px}.game-mode .asset-thumb{height:62px}}

@media(max-width:600px){.game-mode .game{overflow-y:auto}}

.assets-panel{overflow:clip}
@media(min-width:601px){.asset-thumb{display:grid;grid-template-rows:minmax(0,1fr) 24px;gap:2px;height:100%;max-height:102px}.asset-art{width:auto;height:100%;max-width:64px;max-height:64px;aspect-ratio:1;margin:0 auto}}

/* One main header row, including the horizontally scrollable roster. */
#app.game-mode{grid-template-rows:auto minmax(0,1fr)}.brand-short,.menu-compact{display:none}.game-topbar{height:auto;min-height:68px;gap:6px;flex-wrap:nowrap;min-width:0}.game-topbar .brand{flex-shrink:0}.game-topbar .header-players{flex:1;min-width:64px;padding:2px;gap:4px;border:0;background:transparent}.game-topbar>button{flex-shrink:0;padding:7px 8px;min-width:32px}.game-topbar .header-players .player-mini{min-width:90px;max-width:120px}.profile-heading{display:flex;gap:10px;align-items:center;margin-bottom:10px}.profile-heading .portrait{width:48px;height:48px;flex-shrink:0}.profile-heading>div{min-width:0;flex:1}.profile-heading h2,.profile-heading h3{margin:0;overflow-wrap:anywhere}.profile-heading p{margin:3px 0;font-size:11px}.ranking-row .profile-heading{margin-bottom:6px}
.bank-visit{margin:10px 0;padding:12px;border:1px solid #d7b661;border-radius:8px;background:#1f413c}.bank-visit h3{font-size:16px;margin:0 0 8px;color:#f0d58b}.bank-balances{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:8px 0}.bank-balances dt{font-size:11px;color:#bed0c1}.bank-balances dd{margin:0;font-weight:700;color:#f0d58b}.bank-operations{display:grid;gap:6px}.bank-operations>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px}.bank-operations small{grid-column:1/-1;font-size:10px;color:#becbbd}.bank-visit details{font-size:11px;margin-top:8px}.bank-visit summary{cursor:pointer}.bank-visit details p{margin:4px 0}.draw-paused{padding:8px;background:#254b43;border-radius:6px}.game-topbar button.drawing{border-color:#f0d58b;background:#365648}
#lottery-details{width:min(650px,calc(100vw - 24px))}.lottery-odds{width:100%;border-collapse:collapse;font-size:12px}.lottery-odds td,.lottery-odds th{padding:6px;border-bottom:1px solid #42635d;text-align:start}.lottery-result article{padding:8px;border:1px solid #42635d;border-radius:8px;margin:8px 0}.lottery-result h4{margin:0;font-size:13px;overflow-wrap:anywhere}.lottery-result ul{padding-inline-start:20px;font-size:12px;margin:6px 0}.own-tickets{overflow-wrap:anywhere;font-size:12px}.reel-digits{display:flex;justify-content:center;gap:10px;margin:12px 0}.reel-digit{display:grid;place-items:center;width:64px;height:76px;background:#081c25;border:2px solid #d7b661;border-radius:8px;font:bold 44px/1 monospace;color:#f2d483;overflow:hidden}.reel-digit.spinning{animation:reel-shift .18s linear infinite}@keyframes reel-shift{0%{text-shadow:0 -45px #f2d48388,0 45px #f2d48388}50%{transform:translateY(1px);text-shadow:0 -30px #f2d48355,0 30px #f2d48355}100%{text-shadow:0 -45px #f2d48388,0 45px #f2d48388}}@media(prefers-reduced-motion:reduce){.reel-digit.spinning{animation:none}}
@media(max-width:900px){.game-topbar .status{display:none}.game-topbar .brand{font-size:14px}.game-topbar .brand small{font-size:8px}.game-topbar .menu-full{display:none}.game-topbar .menu-compact{display:inline}.game-topbar>button{min-width:32px;padding:5px}.game-topbar .chip{font-size:10px}}
@media(max-width:600px){.game-topbar{min-height:60px;padding:6px 8px;gap:4px}.game-topbar .brand-full,.game-topbar .brand small,.game-topbar .chip{display:none}.game-topbar .brand-short{display:inline;font-size:11px}.game-topbar .brand{width:30px;flex-basis:30px}.game-topbar>button{min-width:28px;min-height:44px;padding:3px;font-size:14px}.game-topbar .header-players{min-width:60px}.game-topbar .header-players .player-mini{min-width:80px;max-width:98px;padding:3px 5px}.game-topbar .player-mini span{font-size:9px}.bank-visit{padding:7px}.bank-visit h3{font-size:13px}.bank-balances{font-size:11px}.reel-digit{width:56px;height:66px;font-size:38px}#lottery-details{padding:16px}}

.wheel-mini{display:block;background:#102a34;width:100%;height:100%;padding:6px}.fortune-wheel{display:block;width:100%;height:100%}.wheel-track{position:relative;max-width:300px;aspect-ratio:1;margin:12px auto;touch-action:none;user-select:none}.wheel-pointer{position:absolute;top:-8px;left:50%;transform:translateX(-50%);z-index:1;color:#fff5d6;font-size:24px;text-shadow:0 2px 2px #07151e}.wheel-track #wheel-rotor{width:100%;height:100%;transform-origin:center}#wheel-details{width:min(460px,calc(100vw - 24px))}.wheel-result{padding:8px;background:#254b43;border-radius:6px}.wheel-track svg text{font-family:Arial,Vazirmatn,sans-serif}.die.multiple{width:auto;min-width:55px;height:auto;min-height:55px;display:flex;flex-wrap:wrap;justify-content:center;gap:3px;padding:5px;font-size:26px}.die.multiple small{flex-basis:100%;font-size:10px;text-align:center;line-height:14px}.trade-card{padding:8px;margin:8px 0;border:1px solid #42635d;border-radius:7px;background:#14343b}.trade-card h3{font-size:13px;margin:0 0 5px;color:#ecd49e}.trade-card p{font-size:11px}.trade-card button{font-size:11px;padding:5px;min-height:38px}.trade-card input{font-size:12px;padding:6px;min-height:38px}.trade-card label{font-size:11px;margin:6px 0}.trade-paused{padding:6px;background:#394033}.feed-tabs{gap:3px}.feed-tabs button{padding-inline:5px}
@media(max-width:600px){.board-tools .row{gap:4px}.board-tools button{padding:5px;font-size:9px}.feed-tabs button{font-size:9px;padding:2px}.wheel-track{max-width:270px}.trade-card{padding:6px}.die.multiple{font-size:22px;min-height:44px}}
.duel-tile-art{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
#duel-details{width:min(640px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:16px}
.duel-arena{position:relative;width:100%;height:310px;background:url('/assets/board/duel-arena.png') center 60%/cover;image-rendering:pixelated;border:2px solid #d9b477;border-radius:8px;direction:ltr;overflow:hidden}
.duelist{position:absolute;bottom:12px;width:45%;display:flex;flex-direction:column;align-items:center;gap:6px}
.duelist-0{left:1%}.duelist-1{right:1%}
.duel-nameplate{display:flex;gap:6px;align-items:center;justify-content:space-between;width:100%;padding:5px 8px;background:#102a34ed;border:1px solid #d9b477;border-radius:6px;color:#fff;line-height:1.2;min-width:0}
.duel-nameplate>bdi{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.duel-nameplate .duel-score{flex:none}
.duel-sprite{display:block;width:170px;height:170px;background-image:var(--duelist-sheet,url('/assets/board/duelist-sprites.png'));background-size:300% 100%;background-position:0 0;image-rendering:pixelated}
.duelist-1 .duel-sprite{transform:scaleX(-1)}
.duelist[data-frame=fire] .duel-sprite{background-position:50% 0}.duelist[data-frame=recoil] .duel-sprite{background-position:100% 0}
.duel-signal{min-height:36px;text-align:center;font-size:24px;font-weight:bold;margin:8px 0;color:#ffe2a1}.duel-signal.go{color:#b7f5ae;background:#163f32;border:2px solid #b7f5ae;border-radius:8px}
.duel-fire{width:100%;min-height:64px;font-size:23px;touch-action:manipulation}.duel-warning{font-weight:bold;color:#ffe2a1}.duel-stake{margin:6px 0}.duel-result{font-weight:bold}
.board-tools .row{flex-wrap:wrap}
@media(max-width:480px){#duel-details{padding:12px}.duel-arena{height:245px}.duel-sprite{width:125px;height:125px}.duel-nameplate{font-size:12px}.duel-signal{font-size:21px}#duel-details p{margin:7px 0}}
.duel-score{color:#ffe2a1;font-size:18px;white-space:nowrap}
.duel-range{height:130px;position:relative;border:2px solid #d9b477;background:repeating-linear-gradient(90deg,#142f35 0,#142f35 32%,#36504c 33%,#142f35 34%);border-radius:7px;overflow:hidden;direction:ltr;margin:6px 0}
.duel-cartridge{--target-size:80px;--target-inset:6px;position:absolute;left:calc((100% / 3)*var(--target-zone) + var(--target-size)/2 + var(--target-inset) + (100% / 3 - var(--target-size) - 2*var(--target-inset))*var(--target-offset));top:calc(var(--target-size)/2 + var(--target-inset) + (100% - var(--target-size) - 2*var(--target-inset))*var(--target-y));transform:translate(-50%,-50%);width:var(--target-size);height:var(--target-size);min-width:0;min-height:0;margin:0;padding:0;display:block;border:0;border-radius:0;background:transparent;box-shadow:none;touch-action:manipulation}
.duel-cartridge:hover,.duel-cartridge:active,.duel-cartridge:disabled{background:transparent;border:0;box-shadow:none;opacity:1}.duel-cartridge[hidden]{display:none!important}.duel-cartridge:focus-visible{outline:3px solid #b7f5ae;outline-offset:2px}
.cartridge-image{display:block;width:auto;height:92.5%;position:absolute;left:50%;top:50%;object-fit:contain;image-rendering:pixelated;pointer-events:none;transform:translate(-50%,-50%) rotate(45deg)}
.duel-observer-ranges{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12px}.duel-range.miniature{height:70px}.miniature .duel-cartridge{--target-size:28px;--target-inset:2px;pointer-events:none}
@media(max-width:480px){.duel-score{font-size:16px}.duel-range{height:120px}.duel-warning{font-size:13px}.duel-arena{height:265px}}

.wheel-symbols{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:8px 0;font-size:12px}.wheel-symbols span{display:flex;align-items:center;gap:6px}.wheel-symbols svg{width:22px;height:22px;flex:none}.lottery-winner bdi,.lottery-next bdi{overflow-wrap:anywhere}.lottery-next{border-top:1px solid #42635d;padding-top:8px;margin-top:12px}.personal-tickets{margin-top:8px}.personal-tickets .own-tickets{font-size:11px;overflow-wrap:anywhere}

.audio-status-list{display:grid;gap:8px}.audio-status-list>div{display:grid;grid-template-columns:minmax(70px,1fr) minmax(0,2fr);gap:12px}.audio-status-list dt{font-weight:bold}.audio-status-list dt,.audio-status-list dd{font-size:14px;overflow-wrap:anywhere}.audio-status-list dd{margin:0}

.ticket-stepper{display:flex;align-items:center;gap:12px;margin:8px 0}.ticket-stepper button{min-width:48px;min-height:48px;font-size:22px}.ticket-stepper output{min-width:56px;text-align:center;font-size:24px;font-weight:bold;padding:6px;border:1px solid #668978;border-radius:8px}.ticket-total{font-weight:bold;font-size:15px}

.choice-segments{border:0;padding:0;margin:10px 0;min-width:0}.choice-segments legend{font-size:14px;margin-bottom:6px}.segment-row{display:grid;grid-template-columns:repeat(var(--segment-count),minmax(0,1fr));width:100%}.segment-row>button{min-width:0;min-height:48px;border-radius:0;margin:0;font-size:17px;border:1px solid #668978;position:relative}.segment-row>button+button{margin-left:-1px}.segment-row>button:first-child{border-radius:8px 0 0 8px}.segment-row>button:last-child{border-radius:0 8px 8px 0}.segment-row>button.is-selected{background:#e4c787;color:#102a34;border-color:#f8e3ac;font-weight:bold;z-index:1}.segment-row>button:disabled{opacity:.4}.segment-row>button:focus-visible{outline:3px solid #b7f5ae;outline-offset:2px;z-index:2}
.decision-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:8px;align-items:stretch;margin:10px 0}.decision-actions>button{min-width:0;width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.35;min-height:48px;padding-inline:10px}.duel-confirm{width:100%;min-height:48px}.duel-result-fields{margin:12px 0}.duel-result-fields>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:5px 0;border-bottom:1px solid #42635d}.duel-result-fields dt{font-size:14px;overflow-wrap:anywhere}.duel-result-fields dd{margin:0;font-weight:bold;font-size:18px}.duel-instruction{margin:4px 0;font-size:15px;line-height:1.45}.duel-signal:empty{display:none}
.decision-actions>.stock-tile-summary{display:contents}.decision-actions>.stock-tile-summary>p{grid-column:1/-1;margin:0 0 3px}.decision-actions>.stock-tile-summary>button{min-width:0;min-height:48px}

/* Fast native taps retain browser pan/pinch; map and wheel keep their own gestures. */
html,body,button,a,input,select,textarea,label,[role="spinbutton"]{touch-action:manipulation}
.personal-tickets{margin-block:14px;min-width:0}.personal-tickets h3{font-size:14px;margin:0 0 8px;color:#e6cc95}
.ticket-badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:9px;margin:0;padding:4px 6px;list-style:none;max-height:160px;overflow:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
.ticket-badges:focus-visible{outline:2px solid #e6cc95;outline-offset:3px}
.ticket-badge{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center;min-width:0;min-height:42px;padding:8px 7px;background:#e6cc95;color:#163c37;border:1px solid #b49355;border-radius:3px;box-shadow:0 2px 0 #071b25;text-align:center}
.ticket-badge::before,.ticket-badge::after{content:"";position:absolute;top:calc(50% - 4px);width:8px;height:8px;border-radius:50%;background:#12343a;border:1px solid #b49355;z-index:-1}.ticket-badge::before{left:-5px}.ticket-badge::after{right:-5px}
.ticket-badge strong{display:block;width:100%;font-size:22px;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:2px}
@media(max-width:600px){.ticket-badges{max-height:min(140px,22dvh)}.personal-tickets{margin-block:10px}.ticket-badge strong{font-size:20px}}

:root[dir=rtl] .brand{font-family:Vazirmatn,Tahoma,sans-serif}

.tile.teleport-selected{outline:3px solid #73f6df;outline-offset:3px}.teleport-confirm{width:100%;min-height:48px;margin-top:6px}.teleport-consequence{font-size:12px}.detention-badge,.prison-status{color:#f5cc89}.token.detained{border-style:dashed}.token{transform-origin:center;}.token.teleport-ripple::after{content:"";position:absolute;inset:-14px;border:3px dotted #8afbe5;box-shadow:0 0 0 6px #946de555;border-radius:50%;pointer-events:none;animation:portal-ripple .45s ease-out infinite}@keyframes portal-ripple{from{transform:scale(.5);opacity:1}to{transform:scale(1.4);opacity:.1}}@media(prefers-reduced-motion:reduce){.token.teleport-ripple::after{animation:none}}

.teleport-map-controls{position:absolute;inset-inline:10px;bottom:30px;z-index:6;background:#102e32eb;border:1px solid #73cdc2;border-radius:8px;padding:8px;display:flex;align-items:center;gap:10px;max-width:calc(100% - 20px);font-size:12px}.teleport-map-controls[hidden]{display:none}.teleport-map-controls span{min-width:0;overflow-wrap:anywhere}.teleport-map-controls button{flex:none;min-height:48px}

.mobile-mode .teleport-map-controls{bottom:var(--teleport-tools-clearance,126px);inset-inline:12px;max-width:calc(100% - 24px)}

#app:not(.mobile-mode)~#duel-details>.duel-range:not(.miniature){width:min(100%,440px);margin-inline:auto}

/* BOARD-19 touch controls retain precise local drafts across state updates. */
.avatar-choice{padding:0;border:0;min-width:0;margin:12px 0}.avatar-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:7px}.avatar-card{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:90px;gap:4px;padding:8px;min-width:0;overflow-wrap:anywhere}.avatar-card small{font-size:11px}.avatar-card .portrait{flex:none}.is-selected{background:#343f38!important;border-color:#eec56a!important;box-shadow:inset 0 0 0 1px #eec56a}.avatar-card:disabled{opacity:.5}.joined-controls{display:flex;align-items:center;gap:0;direction:ltr}.joined-controls button{min-width:56px;min-height:44px}.joined-controls input{min-width:0;flex:1;margin:0 6px;min-height:44px}.touch-amount{min-width:0;margin:12px 0}.touch-amount label{display:flex;justify-content:space-between;gap:8px}.touch-amount output{font-size:20px;color:#eec56a}.amount-presets,.bank-operation-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:7px}.bank-operation-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.bank-operation-choices>div{min-width:0}.bank-operation-choices button,.amount-presets button,.bank-submit{width:100%;min-height:44px;overflow-wrap:anywhere}.bank-operation-choices small{display:block;font-size:11px;line-height:1.5}.puzzle-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;width:100%}.puzzle-choices button{min-height:48px;font-size:23px}.arithmetic{display:inline-block;font-size:22px;white-space:nowrap}.sale-confirmation .row>*{flex:1;min-height:44px}button,input[type=range]{touch-action:manipulation}button:focus-visible,input:focus-visible{outline:3px solid #88b4ed;outline-offset:2px}.bank-visit{display:block!important}.forms,.forms form,.trade-card{min-width:0}
#app:not(.mobile-mode)~#duel-details>.duel-range:not(.miniature){width:min(100%,320px);height:110px;margin-inline:auto}

.decision-actions>.puzzle-choices,.decision-actions>.puzzle-choices+button{grid-column:1/-1}

/* Original flat pixel faces; all existing light die-container rules are retained. */
.die-face-slot{display:block;width:100%;height:100%;position:relative;line-height:inherit}.pixel-die{display:block;position:absolute;width:calc(100% - 12px);height:calc(100% - 12px);left:50%;top:50%;transform:translate(-50%,-50%);color:#102225;image-rendering:pixelated;shape-rendering:crispEdges}.die-interior{fill:#f1e5bd}.die-pip{fill:currentColor}.die.multiple .die-face-slot{width:1em;height:1.5em;flex:none}.die.multiple .pixel-die{width:1em;height:1em}.die-idle{font-size:inherit}
.money-badge{--money-edge:#77c77b;--money-fill:#183d2c;position:fixed;z-index:1000;pointer-events:none;padding:7px 14px;background:var(--money-edge);border:0;border-radius:0;box-shadow:none;clip-path:polygon(0 6px,3px 6px,3px 3px,6px 3px,6px 0,calc(100% - 6px) 0,calc(100% - 6px) 3px,calc(100% - 3px) 3px,calc(100% - 3px) 6px,100% 6px,100% calc(100% - 6px),calc(100% - 3px) calc(100% - 6px),calc(100% - 3px) calc(100% - 3px),calc(100% - 6px) calc(100% - 3px),calc(100% - 6px) 100%,6px 100%,6px calc(100% - 3px),3px calc(100% - 3px),3px calc(100% - 6px),0 calc(100% - 6px));isolation:isolate;color:#bcf7a7;font:700 20px/1.1 ui-monospace,Consolas,monospace;white-space:nowrap;font-variant-numeric:tabular-nums;direction:ltr;animation:money-float 1.2s ease-out both}.money-badge::before{content:"";position:absolute;inset:2px;z-index:-1;background:var(--money-fill);clip-path:polygon(0 6px,3px 6px,3px 3px,6px 3px,6px 0,calc(100% - 6px) 0,calc(100% - 6px) 3px,calc(100% - 3px) 3px,calc(100% - 3px) 6px,100% 6px,100% calc(100% - 6px),calc(100% - 3px) calc(100% - 6px),calc(100% - 3px) calc(100% - 3px),calc(100% - 6px) calc(100% - 3px),calc(100% - 6px) 100%,6px 100%,6px calc(100% - 3px),3px calc(100% - 3px),3px calc(100% - 6px),0 calc(100% - 6px))}.money-badge::after{content:"";position:absolute;left:7px;top:8px;width:2px;height:2px;background:currentColor;box-shadow:2px 0 0 currentColor,0 2px 0 currentColor;opacity:.55}.money-payment{--money-edge:#eb8f8a;--money-fill:#482b2c;color:#ffb3a8}.money-badge[hidden]{display:none}.money-badge.is-static{animation:money-still 1.2s linear both}[data-money-value].money-up{color:#91e69a!important}[data-money-value].money-down{color:#ff9696!important}@keyframes money-float{0%{opacity:0;transform:translateY(0)}12%{opacity:1}40%{opacity:.72}70%{opacity:.35}100%{opacity:0;transform:translateY(-76px)}}@keyframes money-still{0%,70%{opacity:1}100%{opacity:0}}@media(prefers-reduced-motion:reduce){.money-badge{animation:money-still 1.2s linear both}}
.roster-portrait{display:none}#app:not(.mobile-mode) .header-players .player-mini{display:flex;align-items:center;gap:6px;min-width:136px;max-width:156px;min-height:46px;padding:3px 6px}#app:not(.mobile-mode) .header-players .roster-portrait{display:inline-block;width:38px;height:38px;flex:none}#app:not(.mobile-mode) .header-players .roster-text{display:block;min-width:0;text-align:start;overflow:hidden}#app:not(.mobile-mode) .header-players .roster-text strong{max-width:100%}#app:not(.mobile-mode) .header-players .roster-text>span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#app:not(.mobile-mode) .game-topbar{height:68px;min-height:68px;padding-block:8px}#app:not(.mobile-mode) .game-topbar .header-players{padding-block:0;scrollbar-width:none}#app:not(.mobile-mode) .game-topbar .header-players::-webkit-scrollbar{display:none;width:0;height:0}

/* Original local art only: one repeated compositor layer under the whole map. */
#viewport{isolation:isolate}#map{z-index:1}.board-backdrop{position:absolute;left:0;top:0;width:calc(100% + var(--backdrop-period));height:calc(100% + var(--backdrop-period));z-index:0;pointer-events:none;opacity:.28;background-image:url('/assets/board/lantern-canal-v1.webp');background-repeat:repeat;background-size:var(--backdrop-period) var(--backdrop-period);image-rendering:pixelated;will-change:transform}@media(prefers-reduced-motion:reduce){.board-backdrop{transform:none!important}}

/* Align the two home columns while retaining the single-column phone layout. */
@media(min-width:601px){.hero{align-items:start}}

/* One native scrollbar theme; the deliberate desktop roster hide stays specific. */
*{scrollbar-width:thin;scrollbar-color:#81978b #112832}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track,*::-webkit-scrollbar-corner{background:#112832}
*::-webkit-scrollbar-thumb{background:#81978b;border:2px solid #112832;border-radius:8px}
*::-webkit-scrollbar-thumb:hover{background:#c1b782}

/* Keep the existing scroll surfaces and direct duel children; pin only the header. */
dialog{--popup-padding:24px;padding-block-start:0}
#duel-details{--popup-padding:16px;padding:0 16px 16px}
.tile-popover{--popup-padding:14px;--popup-surface:#102a34;padding-block-start:0}
dialog>.popup-header,.tile-popover>.popup-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 calc(-1 * var(--popup-padding)) 14px;padding:10px var(--popup-padding);background:var(--popup-surface,#173d3e);border-bottom:1px solid #42635d}
.popup-header h2{flex:1;min-width:0;margin:0;font-size:20px;line-height:1.5;overflow-wrap:anywhere}
dialog .popup-close,.tile-popover .popup-close{flex:none;width:48px;height:48px;min-height:48px;padding:0;font-size:28px;line-height:1;display:grid;place-items:center}
.popup-close span{pointer-events:none}
@media(max-width:760px),(max-width:1000px) and (max-height:500px){dialog .popup-header h2{font-size:22px}}

/* Bankruptcy keeps seat controls readable while dimming the retained identity. */
.bankruptcy-badge{display:inline-block;color:#ffaaa6;font-size:10px;line-height:1.3;font-weight:700;margin-inline-start:4px}.bankrupt .portrait{filter:grayscale(1);opacity:.55}.player-mini.bankrupt,.ranking-row.bankrupt,.final-player.bankrupt{border-color:#985b60}.token.bankrupt{opacity:.55!important;filter:grayscale(1)}.token.bankrupt small{color:#ffaaa6}.spectator-note{color:#ffaaa6;border-inline-start:3px solid #985b60;padding-inline-start:10px}.survivor-result{font-weight:700}.roster-text .bankruptcy-badge{font-size:9px}

/* Exchange amounts and history stay inside the established popup scroll surface. */
/* Pan gestures must not become native label selection or image dragging. */
#viewport,#map,#map *,.board-region .camera-hint,.board-region .turn-banner{user-select:none;-webkit-user-select:none}#map img{-webkit-user-drag:none}#viewport input,#viewport textarea,#viewport select,#viewport [contenteditable]{user-select:text;-webkit-user-select:text}#viewport button:not(.tile),#viewport a{user-select:auto;-webkit-user-select:auto}
#stock-details{width:min(760px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain}
#stock-details button{min-height:44px}#stock-details bdi{overflow-wrap:anywhere}#stock-details .popup-header{margin-block-end:18px}.stock-quote{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;padding:14px;background:#102a34;border:1px solid #647969}.stock-quote strong{font-size:22px;overflow-wrap:anywhere}.stock-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stock-stats>div{min-width:0;padding:10px;background:#12323a}.stock-stats dd{margin:4px 0 0;font-weight:700;overflow-wrap:anywhere}.stock-ranges,.stock-operations{display:flex;flex-wrap:wrap;gap:8px;margin-block:14px}.stock-ranges button[aria-pressed=true],.stock-operations button[aria-pressed=true]{border-color:#f4d780;background:#31564b;color:#fff5d6}.stock-chart{margin:0;direction:ltr}.stock-chart svg{display:block;width:100%;height:auto;background:#102a34;border:1px solid #647969}.stock-chart text{fill:#cfd6c8;font:11px monospace}.stock-grid{stroke:#33504f;stroke-width:1}.stock-line{fill:none;stroke:#e5c67a;stroke-width:2;vector-effect:non-scaling-stroke}.stock-dot{fill:#e5c67a}.stock-chart figcaption{font-size:12px;line-height:1.5;overflow-wrap:anywhere;margin-block:8px}.stock-trading{border-block-start:1px solid #647969;margin-block-start:18px;padding-block-start:6px}.stock-preview{overflow-wrap:anywhere}.stock-tile-summary button{width:100%}
@media(max-width:760px),(max-width:1000px) and (max-height:500px){#stock-details{box-sizing:border-box;width:calc(100vw - 12px);max-width:none;max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 12px);margin:6px auto;padding-inline:14px;padding-block-end:max(16px,env(safe-area-inset-bottom));--popup-padding:14px}.stock-quote strong{font-size:20px}.stock-ranges{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.stock-ranges button{min-width:0}.stock-stats{gap:6px}.stock-stats>div{padding:8px}#stock-details .touch-amount{min-width:0}#stock-details .joined-controls input{min-width:0}}

html[dir=rtl] .stock-chart figcaption{direction:rtl;text-align:right}
.asset-finances dd,.asset-metrics dd{overflow-wrap:anywhere;min-width:0}

/* BOARD-35: approved transparent icons, accessible compact commands and wallet bar. */
.ui-icon{display:inline-block;width:24px;height:24px;flex:none;vertical-align:middle;image-rendering:pixelated;pointer-events:none;user-select:none}
.ui-command{display:inline-flex;align-items:center;justify-content:center;gap:8px;position:relative}.ui-command .control-label{min-width:0;overflow-wrap:anywhere}
.topbar .desktop-control.icon-control{width:44px;height:44px;min-width:44px;min-height:44px;padding:9px;flex:none}.desktop-control.icon-control .control-label{display:none}
#app:not(.mobile-mode) .map-command{min-width:44px;min-height:44px;width:44px;padding:9px}#app:not(.mobile-mode) .map-command .control-label{display:none}
.ui-command[aria-pressed=true]::before,.ui-feed-tab[aria-pressed=true]::before{content:'';position:absolute;bottom:3px;left:6px;right:6px;height:3px;background:#f4e4b3;border-radius:0}
.ui-command:focus-visible,.ui-feed-tab:focus-visible{outline:3px solid #b7f5ae;outline-offset:2px}
.ui-feed-tab{position:relative;display:flex;align-items:center;justify-content:center;gap:6px}#app:not(.mobile-mode) .ui-feed-tab{min-height:44px;min-width:44px}#app:not(.mobile-mode) .ui-feed-tab .control-label{display:none}
.ui-feed-tab .unread-badge{margin:0;min-width:18px}.mobile-menu-grid .menu-command{min-height:48px;justify-content:flex-start;text-align:start;padding:10px;gap:10px}.mobile-menu-grid .control-label{display:inline}
.command-tooltip{position:fixed;z-index:100;max-width:min(280px,calc(100vw - 16px));padding:8px 10px;background:#071b25;color:#f4e4b3;border:1px solid #b69d67;border-radius:5px;box-shadow:0 3px 10px #0008;font-size:13px;line-height:1.5;pointer-events:none;overflow-wrap:anywhere}.command-tooltip[hidden]{display:none}
#assets .wallet-finances{background:#123039;border:1px solid #38505a;border-radius:6px}#assets .wallet-finances dt{display:flex;align-items:center;gap:5px}#assets .wallet-finances .ui-icon{width:20px;height:20px}#assets .metric-label{min-width:0;overflow-wrap:anywhere}#assets .asset-strip{border-top:1px solid #38505a;padding-top:10px}
#app:not(.mobile-mode) #assets .wallet-finances{grid-template-columns:repeat(8,minmax(0,1fr));gap:0;padding:10px 0;margin-bottom:8px}#app:not(.mobile-mode) #assets .wallet-finances>div{min-width:0;padding-inline:8px;display:grid;grid-template-rows:1fr auto}#app:not(.mobile-mode) #assets .wallet-finances>div+div{border-inline-start:1px solid #42605b}#app:not(.mobile-mode) #assets .wallet-finances dt{font-size:12px;line-height:18px;min-height:36px}#app:not(.mobile-mode) #assets .wallet-finances dd{font-size:16px;line-height:22px;margin-top:5px}
@media(max-width:1100px){#app:not(.mobile-mode).game-mode .game{grid-template-rows:minmax(0,1fr) auto}#app:not(.mobile-mode) .board-column{display:contents}#app:not(.mobile-mode) .board-region{grid-column:1;grid-row:1;min-height:0}#app:not(.mobile-mode) .side{grid-column:2;grid-row:1;min-height:0}#app:not(.mobile-mode) #assets{grid-column:1/-1;grid-row:2;min-height:0;max-height:32dvh;flex:none}}
#app.mobile-mode .feed-tabs .ui-feed-tab{flex-direction:column;gap:4px;padding:7px 4px;min-height:64px}#app.mobile-mode .ui-feed-tab .control-label{min-width:0;max-width:100%;overflow-wrap:anywhere;line-height:1.4}#app.mobile-mode .ui-feed-tab .unread-badge{position:absolute;top:7px;inset-inline-end:4px;min-width:18px}
#app:not(.mobile-mode) #assets .wallet-finances>div{grid-template-rows:54px 1fr}

/* BOARD-38: integrate the compact desktop wallet summary into the assets panel. */
#app:not(.mobile-mode) #assets{padding-block-start:0}
#app:not(.mobile-mode) #assets .wallet-finances{background:#102e32;border:0;border-bottom:1px solid #38505a;border-radius:0;margin:0 -16px 4px;padding:5px 16px 6px}
#app:not(.mobile-mode) #assets .wallet-finances>div{display:flex;flex-direction:column;justify-content:space-between;gap:2px;padding-inline:8px}
#app:not(.mobile-mode) #assets .wallet-finances dt{min-height:0;line-height:20px}
#app:not(.mobile-mode) #assets .wallet-finances dd{margin-top:0;line-height:19px}
#app:not(.mobile-mode) #assets .asset-strip{border-top:0;padding-top:4px}

/* BOARD-39: show property thumbnails with full-bleed, undistorted scene art. */
#app:not(.mobile-mode) #assets .asset-thumb{display:flex;flex-direction:column;gap:0;width:106px;min-width:106px;height:140px;max-height:none;padding:0;overflow:hidden;text-align:center}
#app:not(.mobile-mode) #assets .asset-art{width:100%;height:auto;max-width:none;max-height:none;aspect-ratio:159/168;margin:0;border-radius:0;flex:none}
#app:not(.mobile-mode) #assets .asset-thumb>span:last-child{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;height:auto;padding:3px 5px;border-top:1px solid #48606a;background:#102833;text-align:center;font-size:10px;line-height:12px}
@media(max-height:760px){#app:not(.mobile-mode) #assets .asset-thumb{width:64px;min-width:64px;height:88px}#app:not(.mobile-mode) #assets .asset-thumb>span:last-child{padding:1px 3px;font-size:9px;line-height:11px}}

/* BOARD-40: a quiet inner shadow seats the map below the surrounding panels. */
#viewport::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(to bottom,rgba(0,7,13,.57),transparent 9%,transparent 91%,rgba(0,7,13,.46)),linear-gradient(to right,rgba(0,7,13,.50),transparent 8%,transparent 92%,rgba(0,7,13,.50));box-shadow:inset 0 0 0 1px rgba(0,0,0,.44),inset 0 4px 8px rgba(0,0,0,.26)}

/* Home resume rows keep status and ownership actions separate. */
.saved-city{display:flex;align-items:stretch;gap:7px;min-width:0}.saved-city .saved-resume{display:block;flex:1;min-width:0;background:#234e50}.saved-line{display:flex;align-items:center;gap:8px;min-width:0}.saved-status{display:inline-flex;align-items:center;gap:4px;flex:none;color:#e9c678;font-size:11px}.saved-status-icon{flex:none;image-rendering:pixelated}.saved-city-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-players{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#c3d1c1;font-weight:400;font-size:11px;margin-top:3px}.saved-delete{flex:none;display:grid;place-items:center;width:44px;padding:8px;color:#f4b0a5;background:#593b3c}.saved-delete:hover{background:#78494a}.home-footer{max-width:1060px;margin:0 auto;padding:18px 24px 30px;border-top:1px solid #42635d;color:#a5bcb2;font-size:11px;text-align:center}#rules p{text-align:justify;text-align-last:start;line-height:1.8}

/* Desktop roster portraits share the player card frame with the labels. */
#app:not(.mobile-mode) .game-topbar .header-players .player-mini{height:48px;min-height:48px;padding:0;gap:0;align-items:stretch;overflow:hidden}
/* Draw the active seat's inner gold edge above its full-bleed portrait. */
#app:not(.mobile-mode) .game-topbar .header-players .player-mini.active{box-shadow:none}
#app:not(.mobile-mode) .game-topbar .header-players .player-mini.active::after{content:"";position:absolute;inset:0;border:1px solid #f0d58b;border-radius:inherit;pointer-events:none;z-index:1}
#app:not(.mobile-mode) .game-topbar .header-players .roster-portrait{display:block;width:auto;height:46px;min-width:0;min-height:46px;aspect-ratio:2/3;border:0;border-radius:0;margin:0;box-shadow:none}
#app:not(.mobile-mode) .game-topbar .header-players .roster-portrait.extra{width:auto;aspect-ratio:3/4}
#app:not(.mobile-mode) .game-topbar .header-players .roster-text{display:flex;flex-direction:column;justify-content:center;padding:2px 6px;min-width:0;border-inline-start:1px solid #668078}

/* A player popover uses one full-height header portrait and one divider. */
.player-popover>.popup-header{height:74px;min-height:74px;padding:0;gap:0;justify-content:flex-start}
.player-popover-avatar{height:74px;flex:none;display:flex}
.player-popover-avatar .portrait{display:block;height:100%;width:auto;aspect-ratio:2/3;flex:none;border:0;border-radius:0;margin:0;box-shadow:none}
.player-popover-avatar .portrait.extra{aspect-ratio:3/4}
.player-popover-identity{flex:1;min-width:0;align-self:stretch;display:flex;flex-direction:column;justify-content:center;padding:4px 8px;border-inline-start:1px solid #668078}
.player-popover .popup-header .player-popover-identity h2{flex:none;min-width:0;font-size:18px;line-height:1.2;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.player-popover-identity p{margin:3px 0 0;font-size:11px;line-height:1.35;color:#c1d0c0;overflow-wrap:anywhere}
.player-popover>.popup-header .popup-close{margin-inline:8px}

/* Duel opponents use the compact, edge-to-edge portrait treatment of the player strip. */
.duel-target-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
.duel-target-card.avatar-card{position:relative;display:flex;flex-direction:row;align-items:stretch;justify-content:flex-start;width:100%;height:74px;min-height:74px;min-width:0;gap:0;padding:0;overflow:hidden;text-align:start;line-height:1.2;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.duel-target-card .portrait{display:block;flex:none;min-width:0;margin:0;border:0;border-radius:0;box-shadow:none;image-rendering:pixelated}
.duel-target-copy{display:flex;flex:1;min-width:0;flex-direction:column;justify-content:center;gap:3px;padding:4px 6px;border-inline-start:1px solid #668078;overflow-wrap:anywhere}
.duel-target-identity{display:block;font-size:12px;line-height:1.2}
.duel-target-identity strong{font-size:13px}
.duel-target-identity small{font-size:11px;color:#d4e0d1}
.duel-target-worth{display:block;font-size:11px;line-height:1.2;color:#e8d69b}
.duel-target-card.is-selected{box-shadow:none}
.duel-target-card.is-selected::after{content:"";position:absolute;inset:0;border:1px solid #f0d58b;border-radius:inherit;pointer-events:none}
#duel-proposal>button.is-selected,#duel-response>button.is-selected{color:#fff3cf}
@media(max-width:359px){.duel-target-copy{padding-inline:2px}.duel-target-worth{font-size:9.5px;letter-spacing:-.1px;white-space:nowrap}}

/* City ranking keeps portraits and the decisive numbers visible; details expand on demand. */
.city-ranking .ranking-row{display:block;padding:0;overflow:hidden}
.ranking-summary{display:flex;align-items:stretch;min-height:84px;cursor:pointer;list-style:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.ranking-summary::-webkit-details-marker{display:none}
.ranking-summary .portrait{display:block;flex:none;margin:0;border:0;border-radius:0;box-shadow:none;image-rendering:pixelated}
.ranking-primary{display:flex;min-width:0;flex:1;flex-direction:column;justify-content:center;gap:3px;padding:5px 10px;padding-inline-end:30px;border-inline-start:1px solid #526c67}
.ranking-title{display:flex;align-items:center;flex-wrap:wrap;gap:4px;color:#ecd49e;font-size:16px;line-height:1.15;overflow-wrap:anywhere}
.ranking-title strong{min-width:0}
.ranking-profession{font-size:12px;color:#c2d2c5}
.ranking-worth{font-size:12px;color:#c2d2c5}
.ranking-worth bdi{font-size:15px;font-weight:700;color:#f1dba5}
.ranking-summary{position:relative}
.ranking-summary::after{content:'+';position:absolute;inset-inline-end:10px;top:50%;transform:translateY(-50%);color:#e9d08b;font:700 22px/1 monospace}
.ranking-row[open] .ranking-summary::after{content:'−'}
.ranking-summary:focus-visible{outline:2px solid #f0d58b;outline-offset:-2px}
.ranking-expanded{padding:10px 12px 12px;border-top:1px solid #49625c}
.ranking-expanded .asset-finances{margin:0}
.ranking-properties{margin-top:12px;padding-top:9px;border-top:1px solid #49625c}
.ranking-properties h4{margin:0 0 8px;color:#ebd49c;font-size:12px}
.ranking-property-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}
.ranking-property-card{min-width:0;margin:0;border:1px solid #49625c;border-radius:6px;overflow:hidden;background:#142f37}
.ranking-property-art{display:block;width:100%;aspect-ratio:159/168;image-rendering:pixelated}
.ranking-property-card figcaption{padding:4px 3px;border-top:1px solid #49625c;color:#efdfb6;text-align:center;font-size:10px;line-height:1.2;min-height:29px;overflow-wrap:anywhere}
@media(max-width:600px){.ranking-title{font-size:15px}.ranking-primary{padding-inline-end:26px}.ranking-property-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}}
.sale-rate{margin:9px 0 6px;color:#c5d6c5;font-size:12px;line-height:1.5}

/* Lobby seats use the same full-bleed, undistorted character portraits. */
.lobby-layout .seat{height:124px;min-width:0;gap:0;padding:0;align-items:stretch;overflow:hidden}
.lobby-layout .seat>.portrait{display:block;flex:none;margin:0;border:0;border-radius:0;box-shadow:none;image-rendering:pixelated}
.lobby-layout .seat>.content{display:flex;min-width:0;flex:1;flex-direction:column;justify-content:center;padding:7px 10px;border-inline-start:1px solid #61786a}
.lobby-layout .seat h3{line-height:1.2;overflow-wrap:anywhere}
.lobby-layout .seat p{font-size:12px;line-height:1.35;margin:3px 0}
.lobby-layout .seat p:last-child{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.lobby-layout .seat>button{align-self:center;flex:none;margin:4px;min-width:36px;padding:5px}

/* Character choices share the full-bleed portrait layout at desktop and phone widths. */
:is(.home,.lobby-layout) .avatar-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
:is(.home,.lobby-layout) .avatar-card{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;min-width:0;min-height:0;padding:0;overflow:hidden;text-align:center}
:is(.home,.lobby-layout) .avatar-card .portrait{display:block;width:100%;height:auto;aspect-ratio:2/3;flex:none;margin:0;border:0;border-radius:0;background-repeat:no-repeat;image-rendering:pixelated}
:is(.home,.lobby-layout) .avatar-card .portrait.extra{aspect-ratio:3/4}
:is(.home,.lobby-layout) .avatar-card>span:not(.portrait){display:flex;align-items:center;justify-content:center;flex:1;min-height:40px;padding:5px 3px;border-top:1px solid #48606a;background:#102833;font-size:12px;line-height:1.3;overflow-wrap:anywhere}
:is(.home,.lobby-layout) .avatar-card.is-selected>span:not(.portrait){background:#343f38;color:#ffe1a1}
:is(.home,.lobby-layout) .avatar-card small{display:block;padding:2px 3px;background:#102833;font-size:10px;line-height:1.3}

/* Repeated player portraits keep one visual column width. Crop only the lower
   clothing area of taller 2:3 sprites; never stretch either sprite sheet. */
.ranking-summary{--portrait-frame-width:63px;--portrait-frame-height:84px;--portrait-second-row:-94.5px}
.duel-target-card{--portrait-frame-width:55.5px;--portrait-frame-height:74px;--portrait-second-row:-83.25px}
.lobby-layout .seat{--portrait-frame-width:93px;--portrait-frame-height:124px;--portrait-second-row:-139.5px}
:is(.ranking-summary,.duel-target-card,.lobby-layout .seat)>.portrait{width:var(--portrait-frame-width);height:var(--portrait-frame-height);aspect-ratio:auto;background-size:300% auto!important;background-position-y:0!important}
:is(.ranking-summary,.duel-target-card,.lobby-layout .seat)>.portrait.portrait-lower-row{background-position-y:var(--portrait-second-row)!important}
:is(.ranking-summary,.duel-target-card,.lobby-layout .seat)>.portrait.extra{background-size:400% auto!important}

.property-upgrade{padding:12px;border:1px solid #4c7475;border-radius:8px;margin-block:12px}.property-upgrade h3{margin-block:0 10px}.property-upgrade>button{width:100%}.property-level{color:#e9c56e;white-space:nowrap}.asset-thumb .property-level{display:block}.lap-status{font-size:.85em}

.trade-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-block:12px}.trade-card button{min-height:48px;padding:10px 12px;font-size:14px;line-height:1.35;white-space:normal;overflow-wrap:anywhere;min-width:0}.trade-card .trade-submit{width:100%;margin-block:8px 0}.trade-actions>.trade-submit{margin:0}.trade-card .joined-controls button{flex:none;width:56px}.amount-presets:empty{display:none}.sale-confirmation .row>*{min-height:48px}#sale-open{width:100%;min-height:48px;margin-block-start:12px}
.trade-card button{height:48px;padding:6px 10px;line-height:1.2}

.property-card-label{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:0;max-width:100%}.property-card-name{min-width:0;overflow-wrap:anywhere}.property-upgrade-badge{display:inline-flex;flex:none;width:16px;height:18px;align-items:center;justify-content:center;vertical-align:middle}.property-upgrade-badge svg{display:block;flex:none;image-rendering:pixelated}.tile-name>.property-card-label{width:100%}

html.duel-locked,html.duel-locked body{overscroll-behavior:none;touch-action:none}#duel-details.duel-input-locked[open]{display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:none;touch-action:none;max-height:calc(100dvh - 16px - env(safe-area-inset-top) - env(safe-area-inset-bottom));user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#duel-details.duel-input-locked .duel-range,#duel-details.duel-input-locked .duel-cartridge{touch-action:none}#duel-details.duel-input-locked>.popup-header .popup-close,#duel-details.duel-input-locked>details,#duel-details.duel-input-locked>.duel-stake,#duel-details.duel-input-locked>.duel-proposal-summary{display:none}#duel-details.duel-input-locked>.duel-arena{height:clamp(64px,calc(100dvh - 390px - env(safe-area-inset-top) - env(safe-area-inset-bottom)),240px);flex:none}#duel-details.duel-input-locked>.duel-range,#duel-details.duel-input-locked>.duel-signal,#duel-details.duel-input-locked>.duel-instruction,#duel-details.duel-input-locked>.popup-header{flex:none}

@media(max-height:500px){#duel-details.duel-input-locked .duel-sprite{display:none}#duel-details.duel-input-locked .duelist{bottom:14px}}

.duel-arena>.duelist{top:8px;justify-content:flex-end}.duel-arena>.duelist>.duel-nameplate{position:absolute;top:0;inset-inline:0}

/* Silent observer amounts track the pawn in viewport pixels, independently of camera zoom. */
#viewport>.token-money-badge{position:absolute;z-index:5;font-size:14px;line-height:18px;padding:5px 10px;max-width:120px;overflow:hidden;text-overflow:ellipsis}

/* Private chat controls retain quiet presentation and ordinary touch targets. */
.feed .chat-sender{display:inline-flex;align-items:center;max-width:100%;min-height:48px;padding:0 4px;margin:0;border:0;border-radius:3px;background:transparent;box-shadow:none;color:#ecd49e;font-size:inherit;font-weight:700;text-align:start;overflow-wrap:anywhere;white-space:normal;vertical-align:middle}
.feed .chat-sender:hover,.feed .chat-sender:focus-visible{text-decoration:underline;background:#ffffff0b}
.player-moderation-actions{margin-top:12px;padding-top:12px;border-top:1px solid #42635d}
.player-moderation-actions .subtle-moderation,.chat-muted-players .subtle-moderation{min-height:48px;background:transparent;border:0;box-shadow:none;padding:8px;font-size:12px;text-decoration:underline;text-underline-offset:3px;max-width:100%;white-space:normal;overflow-wrap:anywhere}
.chat-muted-players{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 0 12px;margin-bottom:12px;border-bottom:1px solid #42635d;font-size:12px}
.moderation-dialog{--popup-padding:16px;box-sizing:border-box;width:min(460px,calc(100vw - 24px));padding:0 16px 16px;max-height:calc(100dvh - 32px);overflow:auto}
.moderation-dialog p,.moderation-dialog blockquote{overflow-wrap:anywhere}
.moderation-dialog blockquote{margin:12px 0;padding:12px;border-inline-start:3px solid #78958a;background:#0b2530;max-height:160px;overflow:auto;white-space:pre-wrap}
.moderation-dialog label{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.moderation-dialog select,.moderation-dialog textarea{font:inherit;width:100%;min-width:0;padding:12px;color:#edf0df;background:#0b2530;border:1px solid #66867a;border-radius:6px}
.moderation-dialog select{min-height:48px}.moderation-dialog textarea{resize:vertical}
.moderation-actions{display:flex;gap:8px;margin-top:12px;align-items:stretch;flex-wrap:wrap}
.moderation-actions>button{flex:1 1 160px;min-height:48px;margin:0;white-space:normal}
.moderation-status{margin-top:12px;color:#d5e7bd;min-height:1.5em}

/* Property trade editors use a bounded stepper, without a range input. */
.trade-card{padding:16px}.trade-card .trade-quote{font-size:17px;color:#f1d49b}.trade-valuation,.trade-range{line-height:1.6;overflow-wrap:anywhere}.trade-valuation bdi{color:#f0d7a2;font-weight:bold}.trade-range{color:#b6cbbd;font-size:12px}.trade-stepper{display:grid;grid-template-columns:48px minmax(0,1fr) 48px;gap:8px;align-items:center;margin:12px 0;direction:ltr}.trade-stepper>button{width:48px;min-width:48px;min-height:48px;padding:4px;font-size:14px}.trade-stepper>div{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;text-align:center;direction:var(--locale-direction,ltr)}.trade-stepper>div>span{font-size:12px;line-height:1.5}.trade-stepper output{font-size:22px;line-height:1.4;overflow-wrap:anywhere;max-width:100%}:root[dir=rtl] .trade-stepper>div{direction:rtl}.trade-counter{margin-top:12px;border-top:1px solid #416259}.trade-counter summary{cursor:pointer;min-height:48px;padding:12px 0;box-sizing:border-box;list-style-position:inside;color:#c3d5c6;font-size:13px}.trade-counter[open]{padding-bottom:4px}.trade-card .trade-counter .trade-submit{margin-top:12px}.trade-card .trade-actions button{height:auto;min-height:48px}.mobile-mode .trade-card{padding:16px}.trade-counter summary:focus-visible{outline:3px solid #88b4ed;outline-offset:2px}

#startup-splash{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;background:#102e32;color:#f0d79b;pointer-events:none}#startup-splash img{object-fit:contain;width:120px;height:120px}#startup-splash strong{font-size:26px}

.play-guide{line-height:1.85;text-align:start}.play-guide .guide-section{margin:24px 0}.play-guide .guide-section h3{color:#e7cc8f;margin:0 0 12px;font-size:18px}.play-guide ul{padding-inline-start:22px;margin:12px 0}.play-guide li{padding-inline-start:3px;margin:0 0 10px}.play-guide .voting-current{padding:12px;border:1px solid #567369;border-radius:8px}.play-guide .guide-section:first-child{margin-top:12px}
