/* Wide tabletop camera: every space, pawn and building remains interactive. */
.board-viewport{height:var(--map-available-height,560px);max-height:none;aspect-ratio:auto;background:radial-gradient(ellipse at center,#f1bf7240,#30160530 70%)}
.board-canvas{padding:26px 34px;min-height:100%;align-items:center;}
.board-3d{height:calc(var(--board-size,700px)*.80);aspect-ratio:auto;transform:none;}
.board-3d.angled-view{transform:perspective(1100px) rotateX(46deg) rotateZ(-7deg);transform-origin:50% 50%;}
.board-surface{box-shadow:0 7px 0 #0061a5,0 12px 0 #05263f,0 18px 20px #0008,inset 0 0 0 1px #fff;}
.board-inlay{inset:10%;background:radial-gradient(ellipse at 50% 25%,#fff3c9,#cce3cd 70%);box-shadow:inset 0 0 0 .5cqw #bddbcc;}
.board-inlay:before,.board-inlay:after{display:none;}
.city-skyline{left:21%;top:10%;width:58%;filter:drop-shadow(0 1cqw .5cqw #58523555);}
.board-title{left:27%;top:39%;width:46%;height:auto;min-height:23%;padding:1.2cqw .7cqw;transform:rotate(-8deg);}
.board-title>span{font-size:4.3cqw;}.board-title>span b{font-size:7cqw;}.board-title em{font-size:1cqw;white-space:normal;}
.printed-deck{right:16%;bottom:22%;width:14%;height:13%;}.dice-tray{left:30%;bottom:16%;width:31%;gap:5cqw;}
.tile .tile-content{padding:1.2cqw .2cqw .4cqw;}.tile-name{font-size:1.12cqw;line-height:1.12;max-height:44%;}.tile .tile-price{font-size:1.12cqw;}
.tile.side-north .tile-content{transform:none;}
.tile.side-east .tile-content,.tile.side-west .tile-content{transform:none;padding:1.2cqw .2cqw .4cqw;}
.tile .tile-art{height:33%;width:60%;}.tile.corner .tile-art{height:36%;}.tile.corner .tile-name{font-size:1.2cqw;}
.tile.has-buildings{overflow:visible;}.tile.has-buildings .tile-art{visibility:hidden;}
.tile .buildings{bottom:1.6cqw;height:3.3cqw;gap:.08cqw;z-index:7;filter:drop-shadow(.2cqw .35cqw .15cqw #0008);}
.buildings .game-graphic{width:1.65cqw;height:3.1cqw;}.tile .buildings:has(use[href='#piece-hotel']) .game-graphic{width:3cqw;height:3.8cqw;}
.board-token{width:4cqw;height:6.7cqw;z-index:10;filter:drop-shadow(.3cqw .5cqw .2cqw #0009);}
.board-token.active-pawn:after{border:2px solid #fff3a5;box-shadow:0 0 8px #ffdf58;}
.tile.path-step{box-shadow:inset 0 0 0 3px #fff1a5,0 0 18px #ffd459!important;}
@media(min-width:1200px){
 .topbar{min-height:78px;}.game-layout{grid-template-columns:190px minmax(0,1fr) 250px;gap:14px;max-width:2100px;padding:0 14px;margin-top:10px;}
 .board-stage{max-width:none;}.left-rail,.right-rail{max-height:calc(100dvh - 100px);}
 .player-row{min-height:72px;gap:8px;padding:9px 7px;}.player-row .avatar{width:35px;height:43px;}.player-info strong{font-size:12px;}.player-info span{font-size:12px;}
 .turn-banner{padding:12px;}.turn-banner .turn-avatar{display:none;}.turn-copy strong{font-size:14px;}.turn-copy p{font-size:11px;}
 .property-content{padding:12px;}.property-content h2{font-size:18px;}.property-scene{height:90px;}
 .map-card{overflow:hidden;}.map-toolbar{height:38px;}.board-caption{min-height:30px;}
 .action-dock{max-width:1000px;}.bank-panel{padding:12px;}.board-effects{margin-top:8px;}
}
@media(min-width:1600px){.game-layout{grid-template-columns:225px minmax(0,1fr) 280px;gap:18px;}.player-info strong{font-size:14px;}.player-info span{font-size:14px;}}
@media(max-width:1199px){.game-layout{max-width:1200px;}.board-viewport{height:clamp(340px,66vw,650px);max-height:none;}.board-stage{width:100%;max-width:none;}}
@media(max-width:700px){
 .board-viewport{height:clamp(320px,78vw,520px);aspect-ratio:auto;max-height:none;}.board-canvas{padding:18px;}
 .board-3d.angled-view{transform:perspective(1000px) rotateX(28deg) rotateZ(-3deg);}
 .tile-name{font-size:1.25cqw;}.tile .tile-price{font-size:1.2cqw;}.board-token{width:4.5cqw;height:7.2cqw;}
}
@media(prefers-reduced-motion:reduce){.board-token{transition:none;}}

.board-tiles{grid-template-rows:14% repeat(9,minmax(0,1fr)) 14%;}
.tile.side-west .tile-art,.tile.side-east .tile-art{display:none;}
.tile.side-west .tile-name,.tile.side-east .tile-name{max-height:65%;font-size:1.1cqw;}
.tile.side-west .tile-content,.tile.side-east .tile-content{padding:1.05cqw .12cqw .3cqw;}

.tile.has-title .buildings{top:auto;bottom:82%;left:0;width:100%;height:4cqw;align-items:end;z-index:7;filter:drop-shadow(.25cqw .4cqw .15cqw #0008);}
.tile.side-north.has-title .buildings{top:80%;bottom:auto;}
.tile.side-west.has-title .buildings{left:75%;bottom:8%;width:125%;}
.tile.side-east.has-title .buildings{left:-100%;bottom:8%;width:125%;}
.buildings .game-graphic{width:2.1cqw;height:3.5cqw;}.buildings .game-graphic:only-child{width:2.8cqw;height:4cqw;}
.tile.has-title .buildings:has(use[href='#piece-hotel']) .game-graphic{width:4cqw;height:5.2cqw;}
@media(min-width:1200px){.left-rail .turn-banner{display:flex;flex-direction:column;align-items:stretch;gap:9px;}.turn-copy{width:100%;}.turn-banner .turn-balance{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;max-width:none;}.turn-banner .turn-balance>span{max-width:none;width:100%;}.turn-banner #landingMessage:not(:empty){margin-top:0;}}

/* Preserve readable side panels while the board rests on the tabletop. */
@media(min-width:1200px){
 .game-layout{grid-template-columns:240px minmax(0,1fr) 290px;gap:16px;max-width:1800px;padding:0 16px;}
 .board-viewport{height:clamp(320px,calc(100dvh - 255px),590px);max-height:none;}
 .left-rail .turn-banner{display:flex!important;flex-direction:column;align-items:stretch;padding:16px;gap:10px;}
 .turn-copy{min-width:0;max-width:none;width:100%;display:block;}.turn-copy small{white-space:normal;display:block;font-size:10px;line-height:1.4;}
 .turn-copy strong{display:block;white-space:normal;font-size:18px;line-height:1.35;margin-top:5px;overflow-wrap:break-word;}
 .turn-copy p{white-space:normal;max-width:none;width:100%;font-size:12px;line-height:1.5;}
 .turn-banner .turn-balance{padding:0;border:0;text-align:left;display:flex;flex-wrap:wrap;gap:7px;align-items:center;}
 .turn-balance small{font-size:9px;}.turn-balance b{font-size:21px;}.turn-balance>span{display:block;width:100%;font-size:11px;line-height:1.5;}
 .player-row{min-height:82px;padding:11px 10px;gap:10px;}.player-info strong{font-size:14px;}.player-info span{font-size:13px;}
 .property-content{padding:15px;}.property-content h2{font-size:21px;}.property-line{font-size:12px;}.property-scene{height:110px;}
 .left-rail,.right-rail{max-height:calc(100dvh - 103px);}.board-canvas{padding:22px 30px;}
 .map-toolbar{height:40px;}.map-card{box-shadow:0 12px 26px #0007;}.action-dock{max-width:920px;}
}
@media(min-width:1600px){.game-layout{grid-template-columns:260px minmax(0,1fr) 310px;gap:20px;}}

/* A readable result strip, with the distance separated from the two dice. */
#diceResult{display:flex;align-items:center;gap:13px;min-height:48px;padding:8px 14px;border:1px solid #56718b;border-radius:10px;background:linear-gradient(120deg,#142c43ed,#071421f2);box-shadow:inset 0 1px #ffffff14,0 3px 10px #0005;color:#d6e6f4;font-size:10px;letter-spacing:.2px;}
#diceResult .dice-label{display:block;font-size:8px;line-height:1.5;letter-spacing:1.1px;font-weight:800;color:#a9c9e2;}
.dice-pair{display:flex;align-items:center;gap:9px;}.dice-operation{color:#9cb5ce;font-size:17px;font-weight:700;}
#diceResult .die-value{display:grid;place-items:center;width:32px;height:32px;line-height:1;font-size:21px;font-weight:900;border:1px solid #fff4d8;border-radius:7px;background:linear-gradient(145deg,#fffcef,#d8dacd);color:#1c3040;box-shadow:0 3px 0 #889799,inset 0 1px 3px #fff;}
.dice-summary{display:flex;align-items:baseline;gap:7px;padding-left:13px;border-left:1px solid #66839d70;}
#diceResult .dice-total{font-size:28px;line-height:1;font-weight:900;color:#ffd365;text-shadow:0 2px 5px #0006;}
#diceResult small{font-size:12px;letter-spacing:.3px;color:#e0ecf7;font-weight:650;}
#diceResult.is-rolling{border-color:#eac77b;color:#ffe39d;}
@media(max-width:700px){#diceResult{order:3;margin:4px 0 0;flex:1 0 100%;justify-content:center;min-height:48px;}.board-effects{gap:7px;}#diceResult .dice-label{display:block;}}

@media(min-width:1200px){.board-viewport{height:var(--map-available-height,420px);max-height:none;}.board-stage{padding-bottom:var(--turn-dock-clearance,110px);}}

.map-card{position:relative;}.turn-activity{position:absolute;top:52px;left:12px;z-index:20;max-width:min(310px,calc(100% - 24px));padding:10px 13px;border:1px solid #6685a7;border-left:4px solid var(--activity-color,#ffc650);border-radius:10px;background:linear-gradient(135deg,#10253af0,#061422ed);box-shadow:0 5px 18px #0006;backdrop-filter:blur(12px);pointer-events:none;color:#e5eff8;}
.turn-activity[hidden]{display:none;}.turn-activity strong{display:block;font-size:10px;line-height:1.4;letter-spacing:.4px;color:#ffd375;}.turn-activity p{margin:5px 0;font-size:11px;line-height:1.45;}.turn-activity small{font-size:9px;color:#a9c9e1;}
.follow-player-button[aria-pressed="true"]{background:#235f72;border-color:#84d4e3;color:#ddfcff;}.board-canvas{background:radial-gradient(ellipse at 50% 60%,#edb16c22,transparent 65%);}.board-3d{filter:drop-shadow(0 16px 9px #180e09c9);}
@media(max-width:700px){.turn-activity{top:60px;padding:8px 10px;max-width:230px;}.turn-activity strong{font-size:9px;}.turn-activity p{font-size:10px;}.map-tools{gap:2px;}}

.board-viewport{background:linear-gradient(135deg,#6e402527,#1b0f0855),url('../assets/city-office-v1.png') center bottom/180% auto no-repeat;background-color:#452618;}

/* Keep the whole tabletop in the frame during automatic following. */
.board-canvas{height:var(--board-canvas-height,100%);min-height:100%;box-sizing:border-box;}.board-3d{flex-shrink:0;}
.board-viewport:not(.zoomed){overflow:hidden;}
.turn-activity{left:50%;top:50%;transform:translate(-50%,-50%);width:min(290px,45%);max-width:none;text-align:center;padding:11px 14px;background:linear-gradient(135deg,#0b2033f2,#031323f2);border-color:#769bc0;border-left:4px solid var(--activity-color,#ffc650);box-shadow:0 6px 20px #0008;}
@media(max-width:700px){.turn-activity{left:50%;top:50%;width:min(225px,52%);max-width:none;padding:8px 10px;}}

.turn-activity{width:var(--activity-width, min(290px,45%));}
@media(max-height:620px) and (min-width:1200px){.turn-activity{padding:8px 10px;}.turn-activity p{font-size:10px;}.turn-activity small{font-size:8px;}}

.board-canvas{width:var(--board-canvas-width,100%);}
.board-viewport.zoomed .board-3d.angled-view{transform:perspective(calc(var(--board-size,700px)*2.2)) rotateX(46deg) rotateZ(-7deg);}
@media(max-width:700px){.board-viewport.zoomed .board-3d.angled-view{transform:perspective(calc(var(--board-size,700px)*2.2)) rotateX(28deg) rotateZ(-3deg);}}

/* Compact turn notice leaves more room for property labels. */
.turn-activity{width:min(220px,var(--activity-width,45%));padding:6px 9px;border-left-width:3px;border-radius:8px;box-shadow:0 3px 10px #0005;}
.turn-activity strong{font-size:8px;line-height:1.3;letter-spacing:.15px;}
.turn-activity p{font-size:9px;line-height:1.3;margin:3px 0;}
.turn-activity small{font-size:7px;line-height:1.3;}
@media(max-width:700px){.turn-activity{width:min(205px,var(--activity-width,52%));padding:6px 8px;}}

/* Building floor count stays legible without crowding the square. */
.tile .buildings .building-floor-count{position:absolute;right:-.6cqw;bottom:0;padding:.15cqw .4cqw;border-radius:.5cqw;background:#54271f;color:#fff4df;font-size:1.25cqw;font-weight:900;white-space:nowrap;}

.tile .buildings:has(use[href='#piece-building']) .game-graphic{width:4cqw;height:5.2cqw;}

.legend-building{width:7px;height:11px;background:#78b6d7;border-radius:1px;display:inline-block;}
