/* Traditional centred table: six-tile rivers grow outward from the hub. */
.table{--river-tile:clamp(9px,1.6cqw,19px);--river-height:calc(var(--river-tile)*1.32);--river-gap:2px;--river-span:calc(var(--river-tile)*6 + 10px);--river-edge:calc(var(--river-span)/2 + 4px);--river-cy:50%}
.table .discpool.p0,.table .discpool.p1,.table .discpool.p2,.table .discpool.p3{display:grid;grid-template-columns:repeat(6,var(--river-tile))!important;grid-template-rows:none!important;grid-auto-rows:var(--river-height);gap:2px;width:var(--river-span)!important;height:auto!important;right:auto!important;bottom:auto!important;transform-origin:0 0;box-shadow:none;padding:0;border:0}
.table .discpool .tile.small{display:inline-flex!important;width:var(--river-tile);height:var(--river-height);min-width:0;box-sizing:border-box}
.table .discpool.p0{left:calc(50% - var(--river-span)/2)!important;top:calc(var(--river-cy) + var(--river-edge))!important;transform:none!important}
.table .discpool.p1{left:calc(50% - var(--river-edge))!important;top:calc(var(--river-cy) - var(--river-span)/2)!important;transform:rotate(90deg)!important}
.table .discpool.p2{left:calc(50% + var(--river-span)/2)!important;top:calc(var(--river-cy) - var(--river-edge))!important;transform:rotate(180deg)!important}
.table .discpool.p3{left:calc(50% + var(--river-edge))!important;top:calc(var(--river-cy) + var(--river-span)/2)!important;transform:rotate(-90deg)!important}
.table .discpool:after,.table .discpool:before{content:none!important}
.table .hub{left:50%;top:var(--river-cy);transform:translate(-50%,-50%);width:var(--river-span);height:var(--river-span);padding:5px!important;gap:2px;z-index:2}
.table .hub strong{font-size:clamp(20px,3cqh,30px)}.table .hub>span{font-size:6px}.table .hub #turnIndicator{font-size:7px;line-height:1.2;margin-top:3px}.table .hub .bonus-info{display:none}
.runner:nth-child(1),.runner:nth-child(3){left:50%;right:auto;transform:translateX(-50%)}
.seat.top{left:50%;transform:translateX(-50%)}.own-melds{left:50%;transform:translateX(-50%)}
@media(min-width:721px){.table{--river-tile:clamp(9px,min(1.6cqw,2.4cqh),19px)}}
@media(max-width:720px){
 .table{--river-tile:clamp(8px,min(2.8cqw,2.8cqh),13px)}
 .runner{width:72px;height:56px;grid-template-columns:16px minmax(0,1fr);gap:3px;padding:4px}.runner .portrait{width:16px;height:20px}.runner .runner-name{font-size:8px;white-space:normal;line-height:1.1;overflow-wrap:anywhere}.runner .runner-sub{font-size:6px}.runner .runner-score{font-size:10px;margin-top:3px}.runner .ready-tag{left:3px;bottom:2px;width:20px;max-width:20px;box-sizing:border-box;font-size:5px!important;line-height:1!important;letter-spacing:0;padding:1px 0!important}
 .runner:nth-child(2),.runner:nth-child(4){width:48px;height:72px;display:flex;flex-direction:column;gap:2px;padding:3px;text-align:center}.runner:nth-child(2){left:3px}.runner:nth-child(4){right:3px}.runner:nth-child(2) .runner-sub,.runner:nth-child(4) .runner-sub{font-size:5px}.runner:nth-child(2) .runner-score,.runner:nth-child(4) .runner-score{font-size:8px;margin-top:2px}.runner:nth-child(2) .ready-tag,.runner:nth-child(4) .ready-tag{left:50%;transform:translateX(-50%);bottom:2px}.runner:nth-child(2) .portrait,.runner:nth-child(4) .portrait{width:12px;height:15px}
 .table .hub{padding:2px!important;gap:1px}.table .hub strong{font-size:20px}.table .hub>span{font-size:5px}.table .hub #turnIndicator{font-size:5px;margin-top:2px}
 .table .discpool .tile.small .num{font-size:9px}.table .discpool .tile.small .symbol{font-size:5px}
 .runner[data-ceo="2"] .rival-melds{left:calc(100% + 5px);right:auto;top:0;bottom:auto;transform:none;display:grid;grid-template-columns:repeat(2,max-content);gap:2px}
 .own-melds{left:auto;right:calc(50% + 42px);bottom:6px;transform:none;display:grid;grid-template-columns:repeat(2,max-content);gap:2px}
 .runner[data-ceo="1"] .rival-melds{left:0;right:auto;top:auto;bottom:calc(100% + 7px);transform:none;grid-template-columns:max-content;gap:2px}.runner[data-ceo="3"] .rival-melds{right:0;left:auto;top:calc(100% + 7px);bottom:auto;transform:none;grid-template-columns:max-content;gap:2px}
 .rival-meld .tile.small,.own-melds .tile.small{width:8px;height:11px}.rival-meld .tile.small .num,.own-melds .tile.small .num{font-size:7px}.rival-meld small,.own-melds .meld-label{font-size:4px}.own-melds .meld>.tile+.tile{margin-left:1px}
 .stock-market{width:83px;max-width:83px;padding:4px;top:6px;left:5px}.stock-market .stock-chart{height:20px}.stock-quotes small{font-size:5px}.stock-quotes b{font-size:7px}.objective-card{left:auto;right:5px;top:auto;bottom:6px;width:83px;max-width:83px;padding:4px!important}.objective-card>span{font-size:5px!important}.objective-card>strong{font-size:7px!important}
 .seat.top{display:none}.seat.west{left:3px}.seat.east{right:3px}
 .runner.you .ceo-turn{left:calc(100% + 4px);right:auto;top:50%;bottom:auto;transform:translateY(-50%);max-width:75px}.runner[data-ceo="2"] .ceo-turn,body:has(#stockMarket:not([hidden])) .runner[data-ceo="2"] .ceo-turn{left:auto;right:calc(100% + 4px);top:50%;bottom:auto;transform:translateY(-50%);max-width:75px}.runner[data-ceo="1"] .ceo-turn,.runner[data-ceo="3"] .ceo-turn{left:0;right:auto;top:calc(100% + 3px);bottom:auto;transform:none;max-width:48px;flex-wrap:wrap;font-size:5px;padding:2px}
 .runner .ceo-turn b{font-size:5px}.runner .decision-timer{min-width:25px;font-size:8px;padding:1px 2px}
}
@media(min-width:721px) and (max-height:650px){
 .table{--river-tile:clamp(6px,3cqh,11px)}.table .hub{padding:2px!important;gap:0}.table .hub strong{font-size:18px}.table .hub>span{font-size:4px}.table .hub #turnIndicator{font-size:5px}
 .runner[data-ceo="2"] .rival-melds{left:calc(100% + 6px);right:auto;top:50%;transform:translateY(-50%);display:grid;grid-template-columns:repeat(2,max-content);gap:2px}.own-melds{left:auto;right:calc(50% + 56px);bottom:6px;transform:none;display:grid;grid-template-columns:repeat(2,max-content);gap:2px}
}
@media(min-width:721px){.runner[data-ceo="2"] .rival-melds{left:calc(100% + 7px);right:auto;top:0;bottom:auto;transform:none;display:grid;grid-template-columns:repeat(2,max-content);gap:3px}.own-melds{left:auto;right:calc(50% + var(--ceo-card-w)/2 + 7px);bottom:var(--ceo-inset);transform:none;display:grid;grid-template-columns:repeat(2,max-content);gap:3px}}
@media(max-width:720px){.table{--river-tile:clamp(8px,min(2.7cqw,2.6cqh),13px)}.runner[data-ceo="1"] .rival-melds,.runner[data-ceo="3"] .rival-melds{grid-template-columns:repeat(2,max-content)}}
@media(min-width:721px) and (max-height:500px){.table{--river-tile:clamp(4px,2.4cqh,7px)}.runner:nth-child(1),.runner:nth-child(3){height:24px;padding:2px;gap:4px}.runner:nth-child(1) .portrait,.runner:nth-child(3) .portrait{width:13px;height:16px}.runner:nth-child(1) .runner-sub,.runner:nth-child(3) .runner-sub{display:none}.runner:nth-child(1) .runner-score,.runner:nth-child(3) .runner-score{font-size:8px;margin:1px 0 0}.runner:nth-child(1) .runner-name,.runner:nth-child(3) .runner-name{font-size:7px}.runner .ready-tag{width:22px;font-size:5px!important;bottom:1px}.table .discpool .tile.small .num{font-size:6px}.table .discpool .tile.small .symbol{font-size:3px}.table .hub strong{font-size:14px}.table .hub>span{display:none}.table .hub #turnIndicator{font-size:4px}.own-melds{right:calc(50% + 57px);bottom:6px}}
@media(max-width:720px){
 .runner,.runner:nth-child(2),.runner:nth-child(4){width:64px;height:56px;display:grid;grid-template-columns:12px minmax(0,1fr);gap:3px;padding:3px;text-align:left}
 .runner .portrait,.runner:nth-child(2) .portrait,.runner:nth-child(4) .portrait{width:12px;height:16px}.runner .runner-name{font-size:7px}.runner .runner-score,.runner:nth-child(2) .runner-score,.runner:nth-child(4) .runner-score{font-size:9px}.runner .runner-sub,.runner:nth-child(2) .runner-sub,.runner:nth-child(4) .runner-sub{font-size:5px}
 .runner .ready-tag,.runner:nth-child(2) .ready-tag,.runner:nth-child(4) .ready-tag{left:2px;transform:none;bottom:2px;width:17px;max-width:17px;font-size:4px!important}
 .table{--river-tile:clamp(8px,min(2.5cqw,2.4cqh),13px)}.own-melds{right:calc(50% + 38px)}
 .runner .ceo-call-anchor{left:3px!important;right:auto!important;width:12px!important;max-width:12px!important}.runner .ceo-expression svg{width:12px;height:12px}
}
@media(min-width:721px) and (min-height:501px) and (max-height:650px){.table{--river-tile:clamp(6px,1.8cqh,8px)}}
@media(min-width:721px) and (max-height:500px){.table{--river-tile:3.5px}}
@media(min-width:721px){.runner.you .ceo-turn{left:calc(100% + 8px);right:auto;top:50%;bottom:auto;transform:translateY(-50%)}.runner[data-ceo="2"] .ceo-turn,body:has(#stockMarket:not([hidden])) .runner[data-ceo="2"] .ceo-turn{left:auto;right:calc(100% + 8px);top:50%;bottom:auto;transform:translateY(-50%)}}

/* Settlement overview fits one screen; the complete audit is a separate view. */
#modal:has(.deal-presentation){width:min(1100px,96vw);height:min(760px,96dvh)}
.deal-presentation .settlement-details{overflow:visible;flex:0 0 auto;padding:8px 20px}
.deal-presentation .settlement-hero{padding:8px 16px}.deal-presentation .settlement-hero .result-brand{height:34px;margin:0 auto 4px}.deal-presentation .settlement-hero .neon-hand-logo{height:30px;width:46px}
.deal-presentation .settlement-hero h2{font-size:24px;margin:5px 0}.deal-presentation .settlement-kicker{font-size:7px}.deal-presentation .settlement-hero>p{font-size:8px!important;line-height:1.3!important}
.deal-presentation .winning-reveal{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;justify-content:center;padding:10px 20px}
.deal-presentation .reveal-portfolio{padding:5px 0 12px;gap:8px;align-content:center}.deal-presentation .reveal-position>.tile{width:clamp(26px,4vw,48px);height:clamp(40px,6vw,70px)}.deal-presentation .reveal-position .num{font-size:28px}.deal-presentation .reveal-position .symbol{font-size:16px}.deal-presentation .reveal-position .dragon-logo{width:36px;height:46px}
.deal-presentation .settlement-capital{margin:0;padding:0 0 6px}.deal-presentation .settlement-capital strong{font-size:25px}.deal-presentation .score-summary{margin:6px 0;font-size:11px}
.result-highlights{display:flex;flex-wrap:wrap;gap:5px 14px;line-height:1.5}.result-highlights>span{font-size:9px;color:var(--p-muted)}.result-highlights b{color:var(--p-accent);margin-left:4px}
.deal-presentation .result-footer{padding:8px 20px}.deal-presentation .settlement-footnote{padding:3px;font-size:7px!important}.result-audit-details .contract-receipts{margin:8px 0}.result-audit-details .stock-receipt,.result-audit-details .signature-receipt{padding:8px;margin:8px 0}
@media(max-width:720px){
 .deal-presentation .settlement-hero{padding:6px 10px}.deal-presentation .settlement-kicker,.deal-presentation .completion-caption,.deal-presentation .settlement-footnote{display:none}.deal-presentation .settlement-hero h2{font-size:20px;line-height:1.1}.deal-presentation .settlement-hero>p{font-size:7px!important}.deal-presentation .winning-reveal{padding:8px 10px}.deal-presentation .reveal-ceo{gap:7px;margin-bottom:5px}.deal-presentation .reveal-ceo>div>span{display:none}.deal-presentation .reveal-ceo h3{font-size:12px}.deal-presentation .reveal-ceo p{font-size:8px!important}.deal-presentation .reveal-ceo canvas{width:21px;height:25px}
 .deal-presentation .reveal-position>.tile{width:28px;height:43px}.deal-presentation .reveal-position .num{font-size:20px}.deal-presentation .reveal-position .symbol{font-size:10px}.deal-presentation .reveal-position .dragon-logo{width:23px;height:32px}.deal-presentation .reveal-portfolio{gap:6px;padding-bottom:10px}.deal-presentation .reveal-position>small{font-size:5px}
 .deal-presentation .settlement-details{padding:6px 10px}.deal-presentation .settlement-capital strong{font-size:20px}.deal-presentation .settlement-capital>div>span{font-size:6px}.deal-presentation .score-summary{font-size:10px}.result-highlights>span{font-size:7px}.result-highlights{gap:3px 8px}.deal-presentation .result-footer{padding:7px 10px;gap:6px}.deal-presentation .result-footer button{font-size:9px;padding:7px;min-height:36px}
}
@media(max-height:500px){
 .deal-presentation>.settlement-screen{display:grid;grid-template-columns:minmax(0,1fr) 230px;grid-template-rows:auto minmax(0,1fr) auto}
 .deal-presentation .settlement-hero{grid-column:1/-1;padding:4px 12px}.deal-presentation .settlement-hero .result-brand{display:none}.deal-presentation .settlement-hero h2{font-size:18px;margin:2px 0}.deal-presentation .settlement-hero>p,.deal-presentation .settlement-kicker{display:none}
 .deal-presentation .winning-reveal{grid-column:1;grid-row:2;padding:6px 10px}.deal-presentation .settlement-details{grid-column:2;grid-row:2;align-self:center;padding:8px}.deal-presentation .settlement-capital{grid-template-columns:1fr 1fr;gap:7px}.deal-presentation .settlement-capital>div:first-child{grid-column:1/-1}.deal-presentation .settlement-capital strong{font-size:19px}.deal-presentation .result-footer{grid-column:1/-1;grid-row:3;padding:5px 12px}.deal-presentation .completion-caption,.deal-presentation .settlement-footnote{display:none}.deal-presentation .reveal-position>.tile{width:24px;height:37px}.deal-presentation .reveal-position .num{font-size:17px}.deal-presentation .reveal-position .symbol{font-size:9px}.deal-presentation .reveal-position .dragon-logo{width:21px;height:28px}.deal-presentation .reveal-portfolio{gap:6px}.result-highlights{gap:3px 8px}.result-highlights>span{font-size:8px}.deal-presentation .result-footer button{min-height:32px;font-size:10px}
}
/* Event-led micro animations: bounded inside existing surfaces, never interactive. */
.hand,.compact-shop,.shop-offer{position:relative}.set-circuit{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:6}.set-circuit path{fill:none;stroke:var(--p-accent);stroke-width:1.5;stroke-linecap:round;stroke-dasharray:1;filter:drop-shadow(0 0 2px var(--p-accent))}
.winning-seal{position:absolute;inset:-2px;border:1px solid #fff2a7;box-shadow:0 0 7px #ffe08e55;pointer-events:none;border-radius:1px}
.joker-projection{position:absolute;top:30%;left:50%;translate:-50% 0;min-width:80%;padding:3px 2px;background:#111229ed;border:1px solid #d5bcff;color:#fff3c3;font:700 8px/1.2 monospace;text-align:center;white-space:nowrap;opacity:0;pointer-events:none;z-index:8}
.purchase-seal{position:absolute;right:8px;top:calc(50% - 10px);border:1px solid #ffe88f;padding:3px 6px;background:#151229;color:#ffe88f;font:bold 11px/1 monospace;letter-spacing:1px;pointer-events:none;z-index:5}.purchase-light{position:absolute;width:4px;height:4px;background:#fff1b3;box-shadow:0 0 6px #ffe88f;border-radius:1px;pointer-events:none;z-index:5}
.stock-quotes .quote-value{position:relative;display:block;overflow:hidden;line-height:1.2;height:1.2em}.stock-quotes .quote-current{display:block;line-height:1.2;gap:0}.quote-changed{animation:none}.quote-changed .quote-value:before{content:attr(data-previous);position:absolute;left:0;top:0;animation:quote-old-up .3s ease-out both}.quote-changed .quote-current{animation:quote-new-up .3s ease-out both}.quote-down .quote-value:before{animation-name:quote-old-down}.quote-down .quote-current{animation-name:quote-new-down}.quote-changed:after{content:'↗';position:absolute;right:0;bottom:-5px;font-size:6px;animation:quote-trace .45s ease-out both;pointer-events:none}.quote-down:after{content:'↘'}.stock-quotes>span{position:relative}
@keyframes quote-old-up{to{translate:0 -100%;opacity:0}}@keyframes quote-new-up{from{translate:0 100%;opacity:0}to{translate:0 0;opacity:1}}@keyframes quote-old-down{to{translate:0 100%;opacity:0}}@keyframes quote-new-down{from{translate:0 -100%;opacity:0}to{translate:0 0;opacity:1}}@keyframes quote-trace{0%{opacity:0;translate:-2px 2px}30%{opacity:.8}100%{opacity:0;translate:2px -2px}}
.bonus-shimmer:after{background:linear-gradient(110deg,transparent 46%,#bdfaff08 48%,#e6ffff75 50%,#bdfaff08 52%,transparent 54%);animation:quiet-tile-glint 9s ease-in-out infinite;animation-delay:var(--glint-delay,0s)}.factor-3 .bonus-shimmer:after{background:linear-gradient(110deg,transparent 42%,#ffcc4f99 47%,transparent 50%,#ffe7a855 54%,transparent 58%);animation:quiet-tile-glint 8s ease-in-out infinite;animation-delay:var(--glint-delay,0s)}
@keyframes quiet-tile-glint{0%,78%{translate:-65% 0;opacity:0}81%{opacity:.6}94%{translate:65% 0;opacity:.6}97%,100%{translate:65% 0;opacity:0}}
.new-hand-scan{position:absolute;top:5%;bottom:5%;width:8px;background:linear-gradient(90deg,transparent,#d5ffff33,transparent);pointer-events:none;opacity:0;z-index:7}
@media(prefers-reduced-motion:reduce){.set-circuit,.winning-seal,.joker-projection,.purchase-seal,.purchase-light,.new-hand-scan{display:none!important}.quote-changed .quote-current,.quote-changed .quote-value:before,.quote-changed:after{animation:none!important}.quote-changed .quote-value:before,.quote-changed:after{display:none}.bonus-shimmer:after,.factor-3 .bonus-shimmer:after{animation:none!important;translate:0 0;opacity:.15}}

.portrait-timer{display:none}
/* Portrait uses the same clockwise six-column rivers as the desktop table. */
@media(max-width:720px) and (orientation:portrait){
 body{grid-template-rows:44px minmax(0,1fr)}main{padding:4px;--river-units:13.92;--river-reserve:184px}
 main:has(.discpool .tile:nth-child(19)){--river-units:16.56}
 main:has(.discpool .tile:nth-child(25)){--river-units:19.2;--river-reserve:196px}
 main:has(.discpool .tile:nth-child(31)){--river-units:21.84}
 main:has(.discpool .tile:nth-child(37)){--river-units:24.48}
 .game-column{grid-template-rows:minmax(0,1fr) 166px}.left-panel{inset:4px 4px 188px;container-type:size}
 .table,.left-panel{--river-tile:min(24px,calc((100cqw - var(--river-reserve))/var(--river-units)),calc((100cqh - 154px)/var(--river-units)));--river-height:calc(var(--river-tile)*1.32);--river-span:calc(var(--river-tile)*6 + 10px);--river-edge:calc(var(--river-span)/2 + 4px)}
 .table{bottom:18px}.table-wrap{padding-bottom:18px}.competition-bar{height:18px;font-size:8px}
 .table .hub{width:var(--river-span);height:var(--river-span);padding:4px!important;gap:2px}.table .hub strong{font-size:25px;margin:2px 0}.table .hub #turnIndicator{font-size:8px;line-height:1.2;margin:2px 0}.table .hub small{font-size:6px}.table .hub>span{font-size:6px}
 .table .discpool .tile.small{border-bottom-width:2px}.table .discpool .tile.small .num{font-size:clamp(10px,calc(var(--river-tile)*.72),18px)}.table .discpool .tile.small .symbol{font-size:calc(var(--river-tile)*.4)}
 .table .discpool .dragon-logo{width:90%;height:90%}.table .discpool .joker-pixel{width:100%;height:100%}
 .runner:nth-child(1){bottom:5px}.runner:nth-child(3){top:5px}
 .runner:nth-child(2),.runner:nth-child(4){top:50%;transform:translateY(-50%)}.runner:nth-child(2){left:5px}.runner:nth-child(4){right:5px}
 .runner[data-ceo="1"] .rival-melds,.runner[data-ceo="3"] .rival-melds{top:calc(100% + 5px);bottom:auto;transform:none;grid-template-columns:repeat(2,max-content);gap:1px}.runner[data-ceo="1"] .rival-melds{left:0;right:auto}.runner[data-ceo="3"] .rival-melds{right:0;left:auto}
 .runner[data-ceo="2"] .rival-melds{left:calc(100% + 5px);top:65px}.own-melds{right:calc(50% + 37px);bottom:5px}
 .rival-meld{padding:1px!important;min-height:0}.rival-meld>span{line-height:0}.rival-meld small{line-height:1;margin-bottom:1px}.rival-melds{grid-auto-rows:18px}.runner .ready-tag{overflow:hidden}
 .stock-market{left:4px;top:4px;width:116px;max-width:116px;padding:6px}.stock-market .stock-chart{height:28px}.stock-quotes small{font-size:8px}.stock-quotes b{font-size:10px}
 .objective-card{right:4px;left:auto;top:4px;bottom:auto;width:92px;max-width:92px;padding:6px!important}.objective-card>span{font-size:7px!important}.objective-card>strong{font-size:10px!important}
 .seat.west,.seat.east{display:none}.hand-panel{height:166px;grid-template-rows:24px 100px 34px;padding:3px 5px;gap:0}
 .hand{grid-template-rows:46px 46px;gap:4px;padding:3px 0 0}.hand .tile{height:46px}.hand .tile .num{font-size:25px}.hand .tile .symbol{font-size:12px}
 .hand-top .eyebrow{font-size:8px}.hand-tools{gap:2px}.hand-tools .quiet{font-size:8px!important;padding:3px;min-height:24px}
 .actions p{font-size:8px;max-width:43%;max-height:30px;overflow:hidden}.actions button{min-height:30px;padding:4px 6px;font-size:10px}.toast{bottom:174px}
 header .brand .neon-hand-logo{height:30px}header .wind-card strong{font-size:10px}header .wind-card .eyebrow{font-size:5px}header #buildTab{font-size:8px!important;padding:0 3px}
 html[data-instructions=true] .game-column{grid-template-rows:minmax(0,1fr) 166px}html[data-instructions=true] .left-panel{bottom:188px}
 html[data-instructions=true] .coach-bar{position:absolute;left:6px;right:52%;bottom:5px;height:29px;padding:2px;gap:2px;z-index:16}.coach-bar strong{display:none}.coach-bar p{font-size:8px;-webkit-line-clamp:2;line-height:1.2}.coach-bar button{font-size:7px;min-height:24px;padding:2px}.coach-bar #coachHint{display:none}html[data-instructions=true] .actions>p{visibility:hidden}
}

@media(max-width:720px) and (orientation:portrait){
 .runner .ceo-turn{display:none!important}.table .hub .portrait-timer:not([hidden]){display:block;font-size:17px;min-width:56px;padding:4px 6px;margin:2px 0 0}
 .runner[data-ceo="2"] .rival-melds{left:calc(100% + 20px);top:65px}
 .own-melds{left:5px;right:auto;grid-auto-rows:18px;height:37px;gap:1px}.own-melds .meld{line-height:0}.own-melds .meld-label{line-height:1}
}

@media(max-width:720px) and (orientation:portrait){.table .hub{gap:1px;padding:2px!important}.table .hub small{display:none}.table .hub strong{font-size:22px;margin:0}.table .hub #turnIndicator{margin:1px 0}}

/* A visible owner rail ties each compact set dock to its CEO. */
@media(max-width:720px){
 .rival-melds:before,.own-melds:not(:empty):before{content:attr(data-owner);grid-column:1/-1;display:block;color:var(--owner-colour,var(--p-accent));font-size:8px;font-weight:bold;line-height:12px;letter-spacing:.4px;border-bottom:1px solid currentColor}
 .rival-melds,.own-melds{border-left:2px solid var(--owner-colour,var(--p-accent));padding-left:3px}
 .runner:has(.ceo-expression) .portrait{visibility:visible}
 .runner .ceo-call-anchor{width:76px!important;max-width:76px!important;left:50%!important;right:auto!important;top:auto!important;bottom:calc(100% + 7px)!important;transform:translateX(-50%)}
 .runner[data-ceo="1"] .ceo-call-anchor{left:-1px!important;transform:none}.runner[data-ceo="3"] .ceo-call-anchor{left:auto!important;right:-1px!important;transform:none}
 .runner[data-ceo="2"] .ceo-call-anchor{top:calc(100% + 5px)!important;bottom:auto!important}
 .runner.you .ceo-call-anchor{left:calc(100% + 6px)!important;top:50%!important;bottom:auto!important;transform:translateY(-50%)}
 .ceo-expression{position:relative;width:76px;min-height:38px;max-height:38px;display:flex;flex-direction:row;gap:4px;padding:5px;background:var(--p-header);border:1px solid var(--p-accent);box-shadow:0 3px 12px #0009;pointer-events:none}
 .ceo-expression:after{content:'';position:absolute;bottom:-5px;left:12px;width:7px;height:7px;background:var(--p-header);border-right:1px solid var(--p-accent);border-bottom:1px solid var(--p-accent);transform:rotate(45deg)}
 .runner[data-ceo="2"] .ceo-expression:after{top:-5px;bottom:auto;left:32px;transform:rotate(225deg)}.runner.you .ceo-expression:after{left:-5px;top:14px;bottom:auto;transform:rotate(135deg)}
 .runner .ceo-expression svg{width:24px;height:24px}.ceo-expression strong{display:block;font-size:8px;line-height:1.15;text-align:left;overflow-wrap:anywhere}
}
@media(max-width:720px) and (orientation:portrait){
 .runner[data-ceo="1"] .rival-melds,.runner[data-ceo="3"] .rival-melds{top:calc(100% + 20px);grid-template-rows:12px;grid-auto-rows:18px}
 .runner[data-ceo="2"] .rival-melds{grid-template-rows:12px;grid-auto-rows:18px}
 .own-melds{left:auto;right:calc(50% + 38px);height:auto;grid-template-rows:12px;grid-auto-rows:18px}
}
@media(max-width:720px) and (orientation:portrait){
 .table{--hub-span:max(80px,var(--river-span));--river-edge:calc(var(--hub-span)/2 + 4px);--river-cy:52%}
 .table .hub{width:var(--hub-span);height:var(--hub-span)}.table .hub strong{font-size:20px}.table .hub>span:not(.portrait-timer):not(.escrow){display:none}
}
@media(max-width:720px) and (orientation:portrait){
 .runner[data-ceo="1"] .rival-melds,.runner[data-ceo="3"] .rival-melds{top:calc(100% + 50px)}
 .runner[data-ceo="1"] .rival-melds:after,.runner[data-ceo="3"] .rival-melds:after{content:'';position:absolute;left:-2px;top:-49px;height:48px;border-left:1px solid var(--owner-colour);opacity:.5;pointer-events:none}
}

/* Shared hand-tile silhouette and a distinct Ready threat state. */
:root{--hand-tile-aspect:4 / 5}
.hand .tile{height:auto;aspect-ratio:var(--hand-tile-aspect)}
.runner.ceo-ready{border-color:#ff3b60!important;animation:ready-ceo-pulse 1.9s ease-in-out infinite}
@keyframes ready-ceo-pulse{0%,100%{box-shadow:inset 0 0 12px #ff244c18,0 0 5px #ff244c35;background-color:#190d22}50%{box-shadow:inset 0 0 20px #ff244c42,0 0 15px #ff244c88;background-color:#3a1029}}
html[data-ready-mode=true] .hand-panel{border-color:#ff4669;box-shadow:inset 0 2px #ff4669,0 -5px 22px #ff244c25}
html[data-ready-mode=true] .hand .tile.ready-candidate{outline:2px solid #ffd66b;outline-offset:1px}
@media(max-width:720px){
 .runner.ceo-ready{padding-bottom:17px}
 .runner.ceo-ready .ready-tag{left:3px!important;right:3px!important;bottom:3px!important;top:auto!important;transform:none!important;width:auto;max-width:none;height:14px;font-size:10px!important;line-height:14px!important;padding:0!important;color:#fff1f4;background:#b51e40;border:1px solid #ff6a88;letter-spacing:.7px}
 .runner.ceo-ready .portrait{transform:none}.runner.ceo-ready .runner-score{font-size:9px;line-height:1;margin-top:1px}.runner.ceo-ready .runner-name{margin-bottom:1px}
 .riichi-alert strong{font-size:26px;line-height:1.1}.riichi-alert b{font-size:15px;letter-spacing:3px}
 html[data-ready-mode=true] .hand-top .eyebrow{font-size:0}html[data-ready-mode=true] .hand-top .eyebrow:after{content:'READY';font-size:12px;font-weight:bold;letter-spacing:1px;color:#ff6685}
 html[data-ready-mode=true] #ready{font-size:12px;color:#fff1f4;background:#821d39;border-color:#ff6a88}
 html[data-ready-mode=true] .hand .tile:not(.ready-ineligible){padding-bottom:14px}html[data-ready-mode=true] .hand .tile .num{font-size:23px}html[data-ready-mode=true] .hand .tile .symbol{font-size:10px}
}
@media(max-width:720px) and (orientation:portrait){
 :root{--mobile-card-w:calc((100vw - 44px)/7);--mobile-row-h:calc(var(--mobile-card-w)*1.25);--mobile-hand-h:calc(var(--mobile-row-h)*2 + 78px)}
 .game-column,html[data-instructions=true] .game-column{grid-template-rows:minmax(0,1fr) var(--mobile-hand-h)}
 .left-panel,html[data-instructions=true] .left-panel{bottom:calc(var(--mobile-hand-h) + 22px)}
 .hand-panel{height:var(--mobile-hand-h);grid-template-rows:24px calc(var(--mobile-row-h)*2 + 12px) 34px}
 .hand{grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:var(--mobile-row-h) var(--mobile-row-h);justify-content:center;align-items:end;padding-top:7px;gap:4px}
 .hand .tile{height:auto;aspect-ratio:var(--hand-tile-aspect);max-width:none;width:100%}
 .table{--river-cy:53%}.toast{bottom:calc(var(--mobile-hand-h) + 8px)}
}
@media(max-height:520px) and (min-width:600px){.hand .tile{height:auto;max-width:54px;aspect-ratio:var(--hand-tile-aspect)}}
@media(prefers-reduced-motion:reduce){.runner.ceo-ready{animation:none;box-shadow:inset 0 0 12px #ff244c28,0 0 8px #ff244c55}}
@media(max-width:720px) and (orientation:portrait){
 .hand .tile.set-linked,.hand .tile.selected{translate:0 -3px}.hand .tile.selected,.hand .tile:hover{transform:none}
 .runner[data-ceo="2"] .ceo-expression{min-height:32px;max-height:32px;padding:3px}.runner[data-ceo="2"] .ceo-expression svg{width:22px;height:22px}
 .runner[data-ceo="2"] .rival-melds{top:60px}
}
.hand .tile{min-height:0}
@media(max-width:720px){html[data-ready-mode=true] .hand .tile.drawn .symbol{margin-bottom:0}html[data-ready-mode=true] .hand .drawn-tag{display:none}}
@media(max-width:720px) and (orientation:portrait){.hand .tile.drawn.selected,.hand .tile.drawn:hover{transform:none}}
/* Drag target exists only during a deliberate upward tile gesture. */
.hand [data-tile]{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.hand .tile.drag-source{opacity:.25!important}
.hand.discard-drag-layer{position:fixed;display:block;z-index:180;pointer-events:none;padding:0;margin:0;gap:0;filter:drop-shadow(0 6px 10px #0009)}
.hand.discard-drag-layer>.tile{width:100%;height:100%;max-width:none;opacity:1!important;translate:none!important;transform:none!important;animation:none!important;transition:none!important}
.discard-drop-zone{position:fixed;z-index:175;pointer-events:none;display:flex;align-items:flex-end;justify-content:center;padding:5px;border:1px dashed #ffd66b;color:#ffd66b;font:bold 10px monospace;letter-spacing:1px;background:#ffd66b08;text-shadow:0 1px 3px #000,0 0 4px #000;box-shadow:inset 0 0 14px #ffd66b0a}
.discard-drop-zone.drop-hot{border:2px solid #ffd66b;background:#ffd66b18;box-shadow:inset 0 0 16px #ffd66b22,0 0 12px #ffd66b33}
html[data-dragging-discard=true] .ready-preview{visibility:hidden}
.discard-drop-caption{position:absolute;left:0;right:0;top:-18px;text-align:center;white-space:nowrap}
/* Tile Intel has a real wrapping heading; mobile uses the full width for its copy. */
.tile-intel .pill{display:block;width:fit-content;max-width:100%;white-space:normal;line-height:1.45;padding:6px 8px;overflow-wrap:anywhere}
.intel-copy{min-width:0}.intel-tip .touch-hint{display:none}
.own-melds:empty{display:none!important}
@media(max-width:720px){
 .own-melds{border-left:0;padding-left:0}
 .rival-meld .tile.small,.own-melds .tile.small{width:12px;height:17px;border-bottom-width:1px}
 .rival-meld .tile.small .num,.own-melds .tile.small .num{font-size:10px}.rival-meld .tile.small .symbol,.own-melds .tile.small .symbol{font-size:6px;margin-top:0}
 .rival-meld small,.own-melds .meld-label{font-size:5px;line-height:1;margin-bottom:1px}
 .rival-melds,.own-melds{grid-template-rows:10px;grid-auto-rows:27px;gap:1px}
 .rival-melds:before,.own-melds:not(:empty):before{line-height:10px}
 .runner[data-ceo="1"] .ceo-expression,.runner[data-ceo="3"] .ceo-expression{min-height:28px;max-height:28px;padding:3px}.runner[data-ceo="1"] .ceo-expression svg,.runner[data-ceo="3"] .ceo-expression svg{width:20px;height:20px}
 .runner[data-ceo="2"] .rival-melds{top:58px;left:min(calc(100% + 20px),calc(50vw - 94px))}
 .tile-intel-screen .modal-header{padding-right:42px}.tile-intel-screen .modal-header h2{overflow-wrap:anywhere;line-height:1.2}
 .tile-intel{grid-template-columns:62px minmax(0,1fr);gap:10px 12px;align-items:center;margin:12px 0}
 .tile-intel .intel-copy{display:contents}.tile-intel .intel-copy>p{grid-column:1/-1;font-size:11px!important;line-height:1.5!important;margin:0!important}
 .tile-intel .pill{font-size:10px;padding:5px 7px}.intel-art .tile{width:60px;height:82px}.intel-art .num{font-size:32px}.intel-art .symbol{font-size:20px}
 .intel-counts{padding:10px 0;gap:12px;flex-wrap:wrap}.tile-intel-screen>.warning{font-size:10px!important;line-height:1.5!important;margin:10px 0!important}.intel-tip{font-size:10px!important;line-height:1.5!important;margin:8px 0 0!important}
 .intel-tip .touch-hint{display:inline}.intel-tip .pointer-hint{display:none}
}
@media(pointer:coarse){.intel-tip .touch-hint{display:inline}.intel-tip .pointer-hint{display:none}}
.tile[data-kind]{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
@media(max-width:720px){
 .runner[data-ceo] .rival-meld .tile.small{width:12px;height:17px}.runner[data-ceo] .rival-meld .tile.small .num{font-size:10px}
 .runner[data-ceo] .rival-melds{grid-template-rows:10px;grid-auto-rows:27px}
}
@media(max-width:720px){.runner[data-ceo] .rival-meld{padding:0!important}.runner[data-ceo] .rival-melds{grid-auto-rows:25px;gap:1px}}
@media(max-width:720px) and (orientation:portrait){
 .runner[data-ceo="1"],.runner[data-ceo="3"]{--meld-offset:max(22px,calc(var(--river-span)/2 + 3cqh - 20px))}
 .runner[data-ceo="1"] .rival-melds,.runner[data-ceo="3"] .rival-melds{top:calc(100% + var(--meld-offset))}
 .runner[data-ceo="1"] .rival-melds:after,.runner[data-ceo="3"] .rival-melds:after{top:calc(1px - var(--meld-offset));height:calc(var(--meld-offset) - 2px)}
 .own-melds{bottom:0}
}

/* Countdown travels with the active CEO, including portrait phones. */
@media(max-width:720px) and (orientation:portrait){
 .table .hub .portrait-timer:not([hidden]){display:none}
 .runner .ceo-turn{display:flex!important;left:50%!important;right:auto!important;top:calc(100% + 3px)!important;bottom:auto!important;transform:translateX(-50%)!important;flex-wrap:nowrap;width:58px;max-width:58px;min-height:21px;box-sizing:border-box;padding:2px;gap:0;z-index:20}
 .runner .ceo-turn b{display:none}
 .runner .ceo-turn .decision-timer{font-size:14px;line-height:17px;min-width:0;padding:0 2px}
 .runner.you .ceo-turn{top:auto!important;bottom:calc(100% + 4px)!important}
 .runner[data-ceo="2"].ceo-active .ceo-call-anchor{top:calc(100% + 29px)!important}
 .runner[data-ceo="1"] .rival-melds,.runner[data-ceo="3"] .rival-melds{--meld-offset:max(26px,calc(var(--river-span)/2 + 3cqh - 20px))}
 .runner .ceo-turn:has(.decision-timer[hidden]){display:none!important}
}

/* Give the completed hand a readable beat before settling the deal. */
.table-reveal:not([hidden]){animation:winning-table-arrival .55s cubic-bezier(.16,.8,.25,1) both}
.table-reveal.reveal-leaving:not([hidden]){animation:winning-table-exit .36s ease-in both;pointer-events:none}
.deal-presentation.instant-result{animation:winning-result-arrival .38s ease-out both}
@keyframes winning-table-arrival{from{opacity:0;translate:0 14px;scale:.97;filter:brightness(1.5)}to{opacity:1;translate:0 0;scale:1;filter:brightness(1)}}
@keyframes winning-table-exit{from{opacity:1;scale:1}to{opacity:0;scale:1.025}}
@keyframes winning-result-arrival{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}
:root[data-revealing=true] .ceo-turn,:root[data-revealing=true] #callImpact{visibility:hidden}
@media(prefers-reduced-motion:reduce){.table-reveal:not([hidden]),.deal-presentation.instant-result{animation:none!important}}
