:root{
  --ink:#f8ead2;--muted:#c9ad8b;--panel:#2b1a13e8;--panel2:#3b2418;
  --line:#795438;--gold:#e8b44f;--accent:#e16f3d;--green:#4f8c64;
  --shadow:0 18px 60px #0b0604aa;--radius:20px;
  --y:#e7bd39;--r:#c9423c;--g:#3f8c59;--b:#7a452a;
}

/* v1.7.0 - final mobile-table lock and readable point-card hierarchy */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;height:100%;overflow:hidden}
body,body.game-active{height:100dvh;min-height:100dvh;overflow:hidden}
body.game-active .topbar{position:relative;flex:0 0 auto}
body.game-active main{height:calc(100dvh - 40px);min-height:0;overflow:hidden}
body.game-active #room{height:100%;min-height:0;overflow:hidden}
.landscape-game-shell{height:auto;min-height:0;overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr) clamp(105px,25dvh,155px)}
.landscape-board{min-height:0;overflow:hidden;grid-template-columns:clamp(48px,6vw,80px) minmax(0,1fr) clamp(96px,12vw,160px)}
.landscape-market,.official-market-lanes,.official-market-lane{min-height:0;overflow:hidden}
.official-card-track{width:100%;margin-inline:auto;justify-content:center}
.official-row-scroll{overflow:hidden}
.point-track{grid-template-columns:repeat(6,minmax(0,var(--v160-card-w)))}
.merchant-track{grid-template-columns:repeat(7,minmax(0,var(--v160-card-w)))}
.personal-zone{height:clamp(105px,25dvh,155px);min-height:0;max-height:155px;grid-template-columns:clamp(160px,22vw,300px) minmax(0,1fr)}
.caravan-capacity-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important;grid-template-rows:repeat(2,minmax(0,1fr))!important}
.personal-zone-right{min-height:0;overflow:hidden}
.hand-row{height:100%;min-height:0;overflow-x:auto!important;overflow-y:hidden!important;overscroll-behavior-inline:contain;touch-action:pan-x}
.hand-row .game-card{aspect-ratio:2/3;height:min(100%,calc(var(--v160-card-w)*1.5));min-height:0;flex:0 0 auto}
.game-card.point{display:grid!important;grid-template-rows:62% 38%!important;padding:4px!important}
.game-card.point .point-cost-top{grid-row:1!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-rows:minmax(0,1fr)!important;align-content:stretch!important;gap:3px!important;padding:5px 3px!important;min-height:0!important;overflow:visible!important;background:linear-gradient(180deg,#f0e7d5,#cbb99b)!important;border:0!important;border-radius:4px 4px 0 0!important}
.game-card.point .point-cost-top.cost-count-1{grid-template-columns:1fr!important}.game-card.point .point-cost-top.cost-count-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.game-card.point .point-cost-chip,.official-card-slot .game-card.point .point-cost-chip{width:100%!important;height:100%!important;min-width:0!important;min-height:17px!important;padding:2px!important;gap:3px!important;border-radius:4px!important;background:#171411e8!important;color:#fff8e9!important}
.game-card.point .point-cost-chip .cube,.official-card-slot .game-card.point .point-cost-chip .cube{width:clamp(10px,1.25vw,15px)!important;height:clamp(10px,1.25vw,15px)!important;flex:0 0 clamp(10px,1.25vw,15px)!important}
.game-card.point .point-cost-chip b,.official-card-slot .game-card.point .point-cost-chip b{font-size:clamp(9px,1.05vw,13px)!important;font-weight:900!important}
.game-card.point .point-score{grid-row:2!important;min-height:0!important;height:100%!important;margin:0!important;padding:2px!important;display:flex!important;align-items:center!important;justify-content:center!important;flex-direction:row!important;gap:3px!important;border-top:1px solid #70583f;background:linear-gradient(180deg,#bea984,#8c7354)!important}
.game-card.point .point-score .point-value,.official-card-slot .game-card.point .point-value{font-size:clamp(18px,2.2vw,28px)!important;line-height:1!important;color:#342116!important}.game-card.point .point-unit{display:inline!important;font-size:clamp(6px,.65vw,9px);font-weight:800;color:#4b3728}
@media (orientation:landscape) and (max-height:620px){body.game-active main{height:calc(100dvh - 34px)}.landscape-game-shell{grid-template-rows:minmax(0,1fr) clamp(105px,25dvh,125px)}.personal-zone{height:clamp(105px,25dvh,125px)}.game-card.point .point-cost-top{padding:3px 2px!important;gap:2px!important}.game-card.point .point-cost-chip,.official-card-slot .game-card.point .point-cost-chip{min-height:15px!important;padding:1px 2px!important}.game-card.point .point-cost-chip .cube,.official-card-slot .game-card.point .point-cost-chip .cube{width:9px!important;height:9px!important;flex-basis:9px!important}.game-card.point .point-cost-chip b,.official-card-slot .game-card.point .point-cost-chip b{font-size:8px!important}}
@media (orientation:landscape) and (max-height:460px){.landscape-game-shell{grid-template-rows:minmax(0,1fr) 105px}.personal-zone{height:105px}.game-hud .turn-banner .subtle,.official-lane-head span{display:none}}
*{box-sizing:border-box}html{min-height:100%;background:#1b0e09}body{margin:0;min-height:100vh;color:var(--ink);font-family:Inter,"Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;background:
radial-gradient(circle at 10% 10%,#7b3c1e55,transparent 35%),radial-gradient(circle at 90% 20%,#b8782840,transparent 30%),linear-gradient(135deg,#1b0e09,#31180e 55%,#1c110d);}
button,input,select{font:inherit}.grain{position:fixed;inset:0;pointer-events:none;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E")}.hidden{display:none!important}
.topbar{position:sticky;top:0;z-index:40;display:flex;justify-content:space-between;align-items:center;padding:14px clamp(16px,4vw,52px);background:#1d100bd9;border-bottom:1px solid #6b432c;backdrop-filter:blur(16px)}.eyebrow{font-size:10px;letter-spacing:.24em;color:var(--gold)}.brand{font-family:Georgia,"Noto Serif SC",serif;font-size:clamp(22px,3vw,32px);font-weight:800}.brand span{font-family:inherit;font-size:.48em;color:var(--muted);font-weight:500;margin-left:8px}.top-actions{display:flex;gap:8px}.ghost,.primary,.danger,.small-btn{border:1px solid #8d6041;border-radius:12px;padding:10px 15px;color:var(--ink);background:#342016;cursor:pointer;transition:.18s}.ghost:hover,.small-btn:hover{border-color:var(--gold);transform:translateY(-1px)}.primary{border-color:#f1b250;background:linear-gradient(135deg,#d96b39,#a64725);font-weight:800;box-shadow:0 5px 24px #ce673d35}.primary:hover{filter:brightness(1.08);transform:translateY(-1px)}.primary:disabled,.ghost:disabled,.small-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.danger{background:#7a2924;border-color:#c95f51}
main{width:min(1540px,100%);margin:auto;padding:clamp(16px,3vw,40px)}.panel{background:linear-gradient(145deg,#3c2419e8,#271711ed);border:1px solid #7d5235;border-radius:var(--radius);box-shadow:var(--shadow)}
.landing{max-width:980px;margin:4vh auto}.hero{padding:clamp(24px,5vw,52px);display:grid;grid-template-columns:auto 1fr;align-items:center;gap:28px}.hero-mark{width:112px;height:112px;border-radius:50%;display:grid;place-items:center;font:700 62px Georgia,serif;background:radial-gradient(circle at 35% 30%,#f8d97a,#bd5a2d 55%,#682415);border:5px double #f2c869;color:#4b170d;box-shadow:0 0 45px #f3a64b44}.kicker{font-size:12px;letter-spacing:.13em;color:var(--gold);text-transform:uppercase}.hero h2{font:700 clamp(30px,5vw,54px)/1.08 Georgia,"Noto Serif SC",serif;margin:5px 0 12px}.hero p{color:var(--muted);line-height:1.75}.entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}.entry-card{padding:28px}.entry-card h3{font:700 25px Georgia,"Noto Serif SC",serif;margin:0 0 20px}.entry-card label{display:block;color:var(--muted);font-size:13px;margin:12px 0}.entry-card input{width:100%;margin-top:7px;padding:13px 14px;border-radius:11px;border:1px solid #775138;background:#1e120d;color:var(--ink);outline:none}.entry-card input:focus{border-color:var(--gold);box-shadow:0 0 0 3px #e8b44f22}.entry-card .primary{width:100%;margin-top:12px}.fan-note{text-align:center;color:#92785f;font-size:12px;margin:18px}
.room-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.room-code{display:flex;align-items:center;gap:12px}.code{font:800 30px ui-monospace,monospace;letter-spacing:.12em;color:#ffe19b}.subtle{color:var(--muted);font-size:13px}.lobby-panel{max-width:900px;margin:5vh auto;padding:30px}.lobby-panel h2{font:700 34px Georgia,"Noto Serif SC",serif;margin:0}.lobby-players{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:25px 0}.lobby-player{padding:18px;border-radius:15px;background:#1c110d;border:1px solid #62452f}.seat-number{color:var(--gold);font-size:12px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#68806b;margin-right:6px}.status-dot.online{background:#5eda86;box-shadow:0 0 10px #5eda86}.lobby-actions{text-align:center}.waiting{color:var(--muted);margin-top:12px}
.turn-banner{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 18px;margin-bottom:14px;border-radius:14px;background:#22130e;border:1px solid #6d492f}.turn-banner.mine{background:linear-gradient(90deg,#61311d,#342016);border-color:#efac53;box-shadow:0 0 24px #eaa2462a}.turn-title{font-weight:800}.end-warning{color:#ffd582;font-size:13px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px}.main-board{min-width:0}.side-board{display:flex;flex-direction:column;gap:14px}.section{padding:16px;margin-bottom:14px}.section-title{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;margin-bottom:12px}.section-title h3{margin:0;font:700 21px Georgia,"Noto Serif SC",serif}.deck-count{font-size:12px;color:var(--muted)}
.player-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:14px}.player-card{position:relative;padding:13px;border-radius:15px;background:#25150f;border:1px solid #69472f;min-width:0}.player-card.active{border-color:var(--gold);box-shadow:0 0 20px #e8b44f28}.player-card.me:after{content:'你';position:absolute;right:8px;top:8px;background:#bd5d33;color:white;border-radius:999px;padding:2px 8px;font-size:10px}.player-name{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:28px}.player-meta{display:flex;gap:10px;color:var(--muted);font-size:11px;margin:5px 0 8px}.spice-line{display:flex;gap:5px;flex-wrap:wrap}.spice{display:inline-flex;align-items:center;gap:3px;border-radius:999px;padding:3px 7px;border:1px solid #ffffff24;font-size:11px;font-weight:800;color:white;text-shadow:0 1px 2px #000}.spice:before{content:'';width:9px;height:9px;border-radius:3px;display:inline-block;background:currentColor;box-shadow:inset 0 1px 2px #fff8}.spice.Y{background:#8b6a13;color:var(--y)}.spice.R{background:#782723;color:#ef6c64}.spice.G{background:#205938;color:#68c987}.spice.B{background:#4d2a1b;color:#c77c50}.spice.zero{opacity:.38}.coin{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;width:22px;height:22px;font-size:10px;font-weight:900;color:#3b2209;border:2px solid #fff5}.coin.gold{background:#e9b63f}.coin.silver{background:#c8ced3}.coin-stack{display:flex;gap:7px;align-items:center}
.card-row{display:grid;grid-template-columns:repeat(6,minmax(135px,1fr));gap:10px;overflow-x:auto;padding:3px 2px 9px}.point-row{grid-template-columns:repeat(5,minmax(145px,1fr))}.game-card{position:relative;min-height:145px;padding:12px;border-radius:14px;border:1px solid #86603f;background:linear-gradient(160deg,#4a2c1d,#24130d);box-shadow:0 8px 22px #0005;cursor:pointer;transition:.18s;overflow:hidden}.game-card:hover{transform:translateY(-3px);border-color:#f1bd67}.game-card.disabled{cursor:not-allowed;opacity:.65}.game-card.disabled:hover{transform:none;border-color:#86603f}.game-card.point{background:linear-gradient(155deg,#3b251d,#16100d);border-color:#9a764f}.game-card .index{position:absolute;top:7px;right:8px;color:#9e8065;font-size:10px}.card-type{color:#e9ba72;font-size:11px;letter-spacing:.05em}.effect{display:flex;align-items:center;justify-content:center;gap:7px;min-height:68px;margin:8px 0;font-weight:900}.effect .arrow{font-size:22px;color:var(--gold)}.cube-group{display:flex;gap:3px;flex-wrap:wrap;justify-content:center;max-width:80px}.cube{width:18px;height:18px;border-radius:4px;border:1px solid #ffffff55;box-shadow:inset 0 2px 3px #fff5,0 2px 3px #0005}.cube.Y{background:var(--y)}.cube.R{background:var(--r)}.cube.G{background:var(--g)}.cube.B{background:var(--b)}.upgrade-icon{font-size:32px;color:#f6c966}.card-foot{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:var(--muted)}.bonus-area{min-height:26px;padding-top:6px;border-top:1px dashed #765339}.fee-dots{position:absolute;left:8px;bottom:7px;display:flex;gap:3px}.fee-dot{width:8px;height:8px;background:#d3a264;border-radius:50%;opacity:.65}.point-value{font:900 32px Georgia,serif;color:#ffe19b}.point-cost{display:flex;justify-content:center;gap:4px;flex-wrap:wrap}.coin-badge{position:absolute;top:6px;left:7px}.affordable{box-shadow:0 0 0 2px #6ed38a55,0 8px 24px #0006}.unaffordable{filter:saturate(.65)}
.hand-row{display:flex;gap:10px;overflow-x:auto;padding:4px 2px 10px}.hand-row .game-card{flex:0 0 150px}.played-mini{display:flex;gap:6px;flex-wrap:wrap}.played-chip{padding:5px 8px;border-radius:8px;background:#25140e;border:1px solid #66442d;font-size:10px;color:var(--muted)}.hand-actions{display:flex;gap:8px;align-items:center}.log{padding:16px}.log-list{max-height:360px;overflow:auto}.log-item{padding:8px 0;border-bottom:1px solid #5d3a2638;color:#d1b89a;font-size:12px;line-height:1.4}.rules-short{font-size:12px;line-height:1.7;color:var(--muted)}.rules-short b{color:var(--ink)}
.scoreboard{padding:18px}.rank-row{display:grid;grid-template-columns:36px 1fr auto;gap:10px;align-items:center;padding:12px;border-bottom:1px solid #60402c}.rank-row:first-of-type{background:#6a3c203d;border-radius:12px}.rank-num{font:900 24px Georgia,serif;color:var(--gold)}.score{font:900 22px Georgia,serif}.score-breakdown{font-size:11px;color:var(--muted);margin-top:4px}.own-points{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.own-point{font-size:10px;padding:4px 7px;background:#1e120d;border-radius:7px;border:1px solid #62442e}
.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px}.modal-backdrop{position:absolute;inset:0;background:#080403c7;backdrop-filter:blur(5px)}.modal-card{position:relative;z-index:1;width:min(560px,100%);max-height:90vh;overflow:auto;padding:25px;border-radius:20px;background:linear-gradient(145deg,#43271a,#23140e);border:1px solid #a36f46;box-shadow:0 25px 90px #000}.modal-close{position:absolute;right:12px;top:10px;border:0;background:none;color:#e9d4b9;font-size:28px;cursor:pointer}.modal h3{margin:0 0 12px;font:700 27px Georgia,"Noto Serif SC",serif}.modal p{color:var(--muted);line-height:1.65}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.choice-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.choice{padding:12px 8px;border-radius:11px;border:1px solid #765139;background:#22140e;color:var(--ink);cursor:pointer}.choice:hover:not(:disabled){border-color:var(--gold)}.choice:disabled{opacity:.35}.step-list{min-height:34px;padding:8px;border-radius:9px;background:#1c100c;color:var(--muted);font-size:12px}.payment-row{display:grid;grid-template-columns:90px 1fr;align-items:center;gap:10px;margin:9px 0}.payment-row select{width:100%;padding:10px;border:1px solid #765139;border-radius:9px;background:#1d110c;color:var(--ink)}.discard-count{font:800 34px Georgia,serif;color:var(--gold);text-align:center}.toast{position:fixed;z-index:150;left:50%;bottom:25px;transform:translateX(-50%);padding:12px 18px;background:#15100d;border:1px solid #a16b42;border-radius:12px;box-shadow:var(--shadow);color:#fff;max-width:min(90vw,520px);text-align:center}.loading{opacity:.65;pointer-events:none}
@media(max-width:1050px){.game-layout{grid-template-columns:1fr}.side-board{display:grid;grid-template-columns:1fr 1fr}.card-row{grid-template-columns:repeat(6,150px)}.point-row{grid-template-columns:repeat(5,155px)}}
@media(max-width:720px){.topbar{padding:10px 13px}.brand{font-size:21px}.brand span{display:none}.top-actions .ghost{padding:8px 10px;font-size:12px}main{padding:12px}.hero{grid-template-columns:1fr;text-align:center}.hero-mark{margin:auto;width:88px;height:88px;font-size:48px}.entry-grid{grid-template-columns:1fr}.room-head{align-items:flex-start;flex-direction:column}.code{font-size:26px}.player-strip{display:flex;overflow-x:auto}.player-card{flex:0 0 190px}.side-board{display:block}.card-row{margin-right:-12px}.section{padding:12px}.game-card{min-height:137px}.turn-banner{align-items:flex-start;flex-direction:column}.modal{padding:8px}.modal-card{padding:21px 16px}.choice-grid{grid-template-columns:repeat(2,1fr)}}
.entry-card select,.ai-lobby-control select{width:100%;margin-top:7px;padding:13px 14px;border-radius:11px;border:1px solid #775138;background:#1e120d;color:var(--ink);outline:none}.entry-card select:focus,.ai-lobby-control select:focus{border-color:var(--gold);box-shadow:0 0 0 3px #e8b44f22}.language-btn{min-width:58px;font-weight:800;color:#ffe19b}.ai-lobby-control{display:flex;align-items:flex-end;gap:10px;padding:14px;margin:18px 0;border:1px solid #62452f;border-radius:14px;background:#1c110d}.ai-lobby-control label{flex:1;color:var(--muted);font-size:13px}.ai-lobby-control select{margin-top:6px}.ai-badge{display:inline-flex;align-items:center;border:1px solid #5ba7a1;background:#173b39;color:#8ee6df;border-radius:999px;padding:1px 6px;font-size:9px;vertical-align:middle}.player-card.ai-player{border-style:dashed}.player-card.me:after{content:'YOU / 你'}
@media(max-width:720px){.top-actions{gap:5px}.language-btn{min-width:48px}.ai-lobby-control{align-items:stretch;flex-direction:column}.ai-lobby-control .small-btn{width:100%}}
.player-card.me:after{display:none}.me-badge{position:absolute;right:8px;top:8px;background:#bd5d33;color:white;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:800}

/* v1.2.0 — physical tabletop layout */
.physical-layout{align-items:start}.physical-table{position:relative;min-width:0;padding:18px;border:1px solid #93613d;border-radius:28px;background:
  linear-gradient(90deg,#ffffff08 1px,transparent 1px) 0 0/44px 100%,
  radial-gradient(ellipse at 50% 48%,#7c4829 0,#5a311e 45%,#3a2117 100%);box-shadow:inset 0 0 0 5px #24130c99,inset 0 0 70px #120805aa,0 22px 70px #0008;overflow:hidden}
.physical-table:before,.physical-table:after{content:"";position:absolute;left:0;right:0;height:2px;background:#c9955d22;box-shadow:0 18px #1b0d0880,0 36px #c9955d13,0 54px #1b0d0866;pointer-events:none}.physical-table:before{top:16%}.physical-table:after{top:67%}
.opponent-zone,.shared-market,.personal-zone{position:relative;z-index:1}.table-zone-label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 2px 10px;color:#f2ce92;font:800 11px/1.2 Inter,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase}.table-zone-label small{font-size:10px;letter-spacing:0;text-transform:none;color:#c7a989;font-weight:500}.table-zone-label.central{justify-content:center;margin:14px 0 8px}.table-zone-label.central span{padding:5px 16px;border-radius:999px;background:#2a160fbb;border:1px solid #93643e;color:#ffd992}
.opponent-zone{padding:4px 8px 18px;border-bottom:1px solid #c58c573c}.opponent-rail{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;max-width:1040px;margin:auto}.opponent-rail.single{grid-template-columns:minmax(230px,430px);justify-content:center}.opponent-seat{position:relative;padding:12px 13px;border-radius:16px 16px 22px 22px;background:linear-gradient(180deg,#24120de8,#170b08e8);border:1px solid #6f4b31;box-shadow:0 10px 24px #16090680;min-width:0}.opponent-seat:before{content:"";position:absolute;left:16px;right:16px;top:-5px;height:7px;border-radius:50%;background:#b07b4a55}.opponent-seat.active{border-color:#f1b85d;box-shadow:0 0 0 2px #f1b85d33,0 12px 28px #160906aa}.seat-cap{display:flex;justify-content:space-between;align-items:center;gap:8px}.seat-order{width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:#5d3925;color:#f8dca8;font:800 10px Georgia,serif}.opponent-seat .player-meta{justify-content:space-between;margin:7px 0}.opponent-seat .spice-line{gap:4px}.opponent-seat .spice{padding:2px 5px;font-size:9px}.opponent-seat .spice:before{width:7px;height:7px}.seat-coins{display:flex;justify-content:space-between;align-items:center;margin-top:8px;color:#cbb091;font-size:10px}
.shared-market{padding:4px 4px 20px}.market-section{position:relative;padding:14px;margin:0 0 12px;border-radius:18px;background:#1b0e09a8;border:1px solid #7e563892;box-shadow:inset 0 12px 32px #0003}.market-section .section-title{margin-bottom:10px}.market-section .section-title h3{font-size:18px}.point-market-section{border-color:#a8794f}.merchant-market-section{border-color:#75503a}.market-coins{flex-wrap:wrap;justify-content:flex-end}
.personal-zone{margin-top:8px;border:2px solid #d6a054;border-radius:24px;background:linear-gradient(145deg,#392117f5,#1c100cf7);box-shadow:0 -10px 38px #16090588,0 0 0 5px #2a160eaa}.personal-zone.active{border-color:#ffd273;box-shadow:0 -12px 42px #16090599,0 0 0 5px #2a160eaa,0 0 32px #f0ae4e35}.personal-zone-head{display:grid;grid-template-columns:minmax(190px,1fr) minmax(390px,1.65fr) minmax(145px,.6fr);gap:16px;align-items:center;padding:16px 18px;border-bottom:1px solid #95633e;background:linear-gradient(90deg,#542e1c99,#2a170faa);border-radius:22px 22px 0 0}.caravan-identity{display:flex;align-items:flex-start;gap:10px}.personal-kicker{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:#d4aa75}.caravan-identity h3{margin:3px 0 0;font:800 21px Georgia,"Noto Serif SC",serif}.me-badge.inline{position:static;display:inline-flex;align-items:center;margin-top:2px;white-space:nowrap}.personal-resource-board{min-width:0}.resource-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px;color:#d9bd9a;font-size:11px}.resource-label b{color:#ffe3ad;font-size:12px}.personal-spice-tray{display:grid;grid-template-columns:repeat(4,minmax(72px,1fr));gap:8px}.spice-bowl{position:relative;min-height:76px;padding:8px 5px 6px;display:grid;grid-template-columns:1fr auto;grid-template-rows:1fr auto;align-items:center;border-radius:50% 50% 42% 42%/32% 32% 62% 62%;border:2px solid #d4a16f80;background:radial-gradient(ellipse at 50% 28%,#fff3 0 12%,transparent 13%),linear-gradient(180deg,#6b422d,#25140e 70%);box-shadow:inset 0 8px 13px #fff1,inset 0 -10px 18px #0008,0 5px 10px #0006;overflow:hidden}.spice-bowl:after{content:"";position:absolute;left:8%;right:8%;top:8px;height:25px;border-radius:50%;background:#150a078c;border:1px solid #f6d09f33}.spice-bowl strong{position:relative;z-index:2;grid-row:1;grid-column:2;font:900 22px Georgia,serif;color:#fff7e8;text-shadow:0 2px 3px #000;margin-right:7px}.spice-bowl small{position:relative;z-index:2;grid-column:1/3;text-align:center;font-size:9px;color:#ead5bc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spice-bowl.empty{opacity:.48}.bowl-cubes{position:relative;z-index:2;height:36px;min-width:42px;margin-left:7px}.bowl-cubes i{position:absolute;width:18px;height:18px;border-radius:3px;border:1px solid #fff6;box-shadow:inset 0 3px 4px #fff5,0 2px 4px #0008;transform:rotate(-8deg)}.bowl-cubes i:nth-child(1){left:2px;top:9px}.bowl-cubes i:nth-child(2){left:17px;top:4px;transform:rotate(9deg)}.bowl-cubes i:nth-child(3){left:23px;top:17px;transform:rotate(-2deg)}.spice-bowl.Y .bowl-cubes i{background:var(--y)}.spice-bowl.R .bowl-cubes i{background:var(--r)}.spice-bowl.G .bowl-cubes i{background:var(--g)}.spice-bowl.B .bowl-cubes i{background:var(--b)}.personal-score-board{display:flex;flex-direction:column;align-items:stretch;justify-content:center}.large-coins{display:flex;gap:9px;margin:1px 0 12px}.large-coins .coin{width:38px;height:38px;font-size:14px;box-shadow:0 5px 10px #0006}.rest-button{width:100%}
.personal-hand{padding:14px 16px 16px}.hand-title{align-items:center;margin-bottom:8px}.hand-title h3{font-size:18px}.personal-hand .hand-row{padding-bottom:12px}.personal-hand .hand-row .game-card{flex-basis:154px}.played-area{display:flex;align-items:flex-start;gap:9px;padding-top:10px;border-top:1px dashed #765039}.played-label{flex:0 0 auto;padding:5px 8px;border-radius:8px;background:#5a3522;color:#e7c49a;font-size:10px}.personal-zone .played-chip .effect{min-height:20px;margin:0}.personal-zone .played-chip .cube{width:11px;height:11px}.personal-zone .played-chip .upgrade-icon{font-size:15px}.personal-zone .played-chip .effect .arrow{font-size:12px}.own-points{padding-top:10px;border-top:1px dashed #765039;color:#d8ba96}

@media(max-width:1180px){.personal-zone-head{grid-template-columns:1fr 1.8fr}.personal-score-board{grid-column:1/3;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}.personal-score-board .resource-label{margin:0}.large-coins{margin:0}.rest-button{width:auto}.physical-table{padding:14px}}
@media(max-width:820px){.physical-table{padding:10px;border-radius:20px}.opponent-rail{display:flex;overflow-x:auto;padding-bottom:5px}.opponent-seat{flex:0 0 210px}.table-zone-label small{display:none}.personal-zone-head{grid-template-columns:1fr;padding:13px}.personal-score-board{grid-column:auto;grid-template-columns:1fr auto}.personal-score-board .resource-label{display:none}.rest-button{grid-column:1/3}.personal-spice-tray{grid-template-columns:repeat(4,minmax(64px,1fr))}.spice-bowl{min-height:70px}.market-section{padding:11px}.market-section .section-title{align-items:flex-start;flex-direction:column}.market-coins{justify-content:flex-start}.personal-hand{padding:12px 10px}.hand-title .subtle{display:none}}
@media(max-width:520px){.personal-spice-tray{grid-template-columns:repeat(2,1fr)}.spice-bowl{min-height:66px}.caravan-identity h3{font-size:18px}.opponent-zone{padding-left:0;padding-right:0}.shared-market{padding-left:0;padding-right:0}.personal-zone{border-radius:18px}.personal-zone-head{border-radius:16px 16px 0 0}.physical-table:before,.physical-table:after{display:none}}

/* v1.3.1 paced AI turns and action replay */
.turn-banner.ai-active{align-items:stretch;gap:16px;border-color:#cf9c4f;background:linear-gradient(135deg,#402512,#21120c)}
.ai-turn-status{min-width:310px;max-width:470px;flex:1;padding:10px 13px;border-radius:15px;background:#140b08c9;border:1px solid #a8753f;box-shadow:inset 0 1px #fff1}
.ai-status-top{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px}.ai-status-top strong{display:block;color:#ffe2a3;font-size:13px}.ai-status-top small{display:block;margin-top:2px;color:#cdb08c;font-size:10px}.ai-status-top>b{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#6d421f;border:1px solid #e2b465;color:#fff0c2;font:900 17px Georgia,serif;box-shadow:0 0 18px #e7a94f3b}
.ai-orb{width:34px;height:34px;display:flex;align-items:center;justify-content:center;gap:3px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffd88b,#8a4d1f 62%,#2c150b);box-shadow:0 0 18px #e6a54c66}.ai-orb i{width:4px;height:4px;border-radius:50%;background:#241208;animation:aiDots 1s infinite ease-in-out}.ai-orb i:nth-child(2){animation-delay:.16s}.ai-orb i:nth-child(3){animation-delay:.32s}
.ai-progress{height:6px;margin:8px 0 5px;border-radius:99px;overflow:hidden;background:#311b10;border:1px solid #7f5432}.ai-progress span{display:block;width:3%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#b8752f,#ffe09a);transition:width .16s linear;box-shadow:0 0 10px #ffc35c88}.ai-pace{font-size:9px;color:#a98d70;text-align:right}
.opponent-seat.thinking{overflow:hidden}.opponent-seat.thinking:after{content:"";position:absolute;inset:-40%;background:conic-gradient(from 0deg,transparent,#f7c66d55,transparent 28%);animation:aiSweep 3s linear infinite;pointer-events:none}.opponent-seat.thinking>*{position:relative;z-index:1}.opponent-seat.action-flash{animation:actorFlash 1.1s ease-in-out 2;border-color:#ffe19a!important;box-shadow:0 0 0 3px #ffce7044,0 0 34px #ffc25c88!important}
.ai-action-replay{position:fixed;z-index:1200;left:50%;bottom:max(16px,env(safe-area-inset-bottom));top:auto;transform:translate(-50%,18px);width:min(760px,calc(100vw - 32px));padding:12px 14px;border-radius:18px;background:linear-gradient(145deg,#2b170ff2,#140b08f7);border:1px solid #e0a657;box-shadow:0 -14px 52px #000b,0 0 35px #e1a24b35;animation:replayIn .36s cubic-bezier(.2,.8,.2,1) forwards;backdrop-filter:blur(12px);pointer-events:none}.ai-action-replay.leaving{animation:replayOut .55s ease forwards}.ai-replay-kicker{margin-bottom:7px;color:#d7a85f;font:800 9px/1.2 Inter,system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase}.ai-replay-main{display:grid;grid-template-columns:112px 1fr;gap:14px;align-items:center}.ai-replay-main h4{margin:0 0 8px;color:#ffe7b8;font:800 16px Georgia,"Noto Serif SC",serif}.ai-replay-card{min-height:82px;padding:10px;border-radius:13px;background:linear-gradient(145deg,#704527,#2a170e);border:1px solid #d5a467;display:grid;place-items:center;box-shadow:0 8px 18px #0007}.ai-replay-card.point strong{font:900 30px Georgia,serif;color:#fff0b7}.ai-replay-card.point>span{font-size:9px;color:#d8b881}.ai-replay-card small{color:#c9a77e}.ai-replay-icon{width:78px;height:78px;margin:auto;display:grid;place-items:center;border-radius:50%;background:#6a3f20;border:1px solid #d9a45b;color:#ffe0a1;font-size:34px}.ai-change>small{display:block;margin-bottom:5px;color:#aa8b6c;font-size:9px}.ai-change-row{display:flex;align-items:center;gap:8px;overflow-x:auto}.ai-change-row .spice-line{flex-wrap:nowrap}.ai-change-row .spice{white-space:nowrap}.change-arrow{color:#efc36f;font-size:20px}
@keyframes aiDots{0%,80%,100%{transform:translateY(0);opacity:.45}40%{transform:translateY(-5px);opacity:1}}@keyframes aiSweep{to{transform:rotate(360deg)}}@keyframes actorFlash{0%,100%{transform:scale(1)}50%{transform:scale(1.035)}}@keyframes replayIn{from{opacity:0;transform:translate(-50%,28px) scale(.96)}to{opacity:1;transform:translate(-50%,0) scale(1)}}@keyframes replayOut{to{opacity:0;transform:translate(-50%,24px) scale(.97)}}
@media(max-width:820px){.turn-banner.ai-active{flex-direction:column}.ai-turn-status{min-width:0;width:100%;max-width:none}.ai-action-replay{bottom:max(10px,env(safe-area-inset-bottom));width:calc(100vw - 20px)}.ai-replay-main{grid-template-columns:86px 1fr}.ai-replay-card{min-height:70px}.ai-change-row .spice{font-size:8px}}
@media(max-width:520px){.ai-action-replay{padding:10px 11px;border-radius:14px}.ai-replay-main{grid-template-columns:1fr}.ai-replay-main h4{font-size:14px;margin-bottom:6px}.ai-replay-kicker{margin-bottom:5px}.ai-replay-card,.ai-replay-icon{display:none}.ai-status-top>b{width:32px;height:32px;font-size:15px}.ai-pace{text-align:left}}
@media(prefers-reduced-motion:reduce){.ai-orb i,.opponent-seat.thinking:after,.opponent-seat.action-flash,.ai-action-replay{animation:none!important}.ai-progress span{transition:none}}


/* v1.4.0 — official physical tabletop setup */
.official-table{background:radial-gradient(ellipse at 50% 42%,#744327 0,#51301f 48%,#321d14 100%);overflow:hidden}
.official-table:before,.official-table:after{display:none}
.official-shared-market{padding:12px 4px 20px}
.official-setup-grid{display:grid;grid-template-columns:112px minmax(0,1fr);gap:16px;align-items:stretch;padding:16px;border:1px solid #b5835654;border-radius:18px;background:#23130dbd;box-shadow:inset 0 0 0 1px #150b0788,inset 0 18px 40px #0004}
.public-supply{display:flex;flex-direction:column;align-items:center;padding:8px 6px 10px;border-right:1px solid #b9855942}.supply-title{margin-bottom:8px;color:#efd2a0;font-size:10px;font-weight:800;letter-spacing:.12em;text-align:center}.public-supply>small{margin-top:8px;color:#9f8469;font-size:8px;text-align:center}.supply-bowls{display:flex;flex-direction:column;gap:8px;width:100%}.supply-bowl{position:relative;display:grid;place-items:center;min-height:84px;padding:8px 5px 6px;border-radius:48% 48% 42% 42%/30% 30% 65% 65%;background:linear-gradient(180deg,#8b6041,#382015 68%,#1b0e09);border:2px solid #d5ad7a70;box-shadow:inset 0 7px 12px #fff2,inset 0 -10px 16px #0009,0 6px 12px #0006;overflow:hidden}.supply-bowl:before{content:"";position:absolute;left:9%;right:9%;top:8px;height:38px;border-radius:50%;background:#170b078f;border:1px solid #f3d5a03d}.supply-bowl span{position:relative;z-index:2;align-self:end;color:#ead2b2;font-size:8px;text-align:center}.supply-cubes{position:relative;z-index:2;width:55px;height:42px}.supply-cubes i{position:absolute;width:19px;height:19px;border-radius:3px;border:1px solid #fff6;box-shadow:inset 0 3px 4px #fff5,0 2px 4px #0008}.supply-cubes i:nth-child(1){left:3px;top:12px;transform:rotate(-9deg)}.supply-cubes i:nth-child(2){left:20px;top:5px;transform:rotate(7deg)}.supply-cubes i:nth-child(3){left:32px;top:18px;transform:rotate(-3deg)}.supply-cubes i:nth-child(4){left:15px;top:22px;transform:rotate(12deg)}.supply-bowl.Y .supply-cubes i{background:var(--y)}.supply-bowl.R .supply-cubes i{background:var(--r)}.supply-bowl.G .supply-cubes i{background:var(--g)}.supply-bowl.B .supply-cubes i{background:var(--b)}
.official-market-lanes{min-width:0;display:flex;flex-direction:column;gap:14px}.official-market-lane{min-width:0;padding:0}.official-lane-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 3px 7px}.official-lane-head h3{margin:0;color:#f0d2a4;font:700 16px Georgia,"Noto Serif SC",serif}.official-lane-head span{color:#aa8d70;font-size:9px}.official-row-scroll{overflow-x:auto;padding:2px 2px 8px;scrollbar-color:#8d603c #24130d}.official-card-track{display:grid;gap:9px;width:max-content;margin-left:auto}.point-track{grid-template-columns:repeat(6,132px)}.merchant-track{grid-template-columns:repeat(7,132px)}.official-card-slot{position:relative;width:132px;min-width:132px}.point-slot,.point-deck-slot{display:grid;grid-template-rows:38px auto;gap:4px}.merchant-slot,.merchant-deck-slot{padding-top:0}.official-card-slot .game-card{width:132px;min-height:178px;border-radius:8px}.official-card-slot .game-card.point{min-height:178px;background:linear-gradient(165deg,#dbc59f,#bda37a 52%,#8e704c);color:#2a1a10;border:2px solid #6f5335;box-shadow:0 7px 12px #0007}.official-card-slot .game-card.point .subtle,.official-card-slot .game-card.point .card-foot{color:#4a3829}.official-card-slot .game-card.point .point-value{color:#5d2d19;text-shadow:0 1px #f3ddb8}.official-card-slot .game-card:not(.point){background:linear-gradient(165deg,#f0e2c1,#d4bd91 58%,#a9804f);color:#29190f;border:2px solid #704c2f;box-shadow:0 7px 12px #0007}.official-card-slot .game-card:not(.point) .card-type{color:#603c22;font-weight:800}.official-card-slot .game-card:not(.point) .card-foot,.official-card-slot .game-card:not(.point) .subtle{color:#513d2b}.official-card-slot .game-card .effect{min-height:78px}.official-card-slot .game-card .index{color:#6a5038}.official-card-slot .bonus-area{min-height:30px;border-top:1px dashed #70543c;color:#503825}.official-card-slot .fee-dot{background:#6d4b2e;opacity:.8}
.coin-space{height:38px}.official-coin-pile{height:38px;display:flex;align-items:center;justify-content:center;gap:5px}.official-coin-pile b{color:#f2dfbd;font-size:10px}.coin-fan{position:relative;width:48px;height:30px}.coin-fan i{position:absolute;top:5px;width:25px;height:25px;border-radius:50%;border:2px solid #fff8;box-shadow:0 3px 5px #0008,inset 0 2px 4px #fff6}.coin-fan i:nth-child(1){left:1px}.coin-fan i:nth-child(2){left:12px}.coin-fan i:nth-child(3){left:23px}.official-coin-pile.gold .coin-fan i{background:#dcae42}.official-coin-pile.silver .coin-fan i{background:#bfc5c9}
.deck-stack{height:178px;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.deck-card-back{position:relative;width:114px;height:164px;border-radius:8px;display:grid;place-items:center;border:3px double #d5b07c;box-shadow:4px 4px 0 #1c0e09,7px 7px 0 #b0906747,0 8px 14px #0008}.deck-card-back:before,.deck-card-back:after{content:"";position:absolute;inset:9px;border:1px solid #dfbd865c;border-radius:5px}.deck-card-back:after{inset:20px;transform:rotate(45deg);border-radius:0}.deck-card-back span{font:900 32px Georgia,serif;color:#e1bf87;z-index:1}.deck-stack.point .deck-card-back{background:linear-gradient(150deg,#c36c3c,#7d2e25)}.deck-stack.merchant .deck-card-back{background:linear-gradient(150deg,#6d4d82,#382849)}.deck-stack>b{position:absolute;right:5px;bottom:4px;min-width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#20120d;border:1px solid #c29863;color:#f3d8a7;font-size:10px}.deck-stack>small{position:absolute;left:50%;bottom:-15px;transform:translateX(-50%);white-space:nowrap;color:#a88a6d;font-size:8px}
.personal-zone{border-radius:16px;background:linear-gradient(145deg,#332019f5,#1a100cf7)}.personal-zone-head{grid-template-columns:minmax(185px,.7fr) minmax(500px,2fr) minmax(135px,.5fr);border-radius:14px 14px 0 0}.personal-spice-tray{display:block}.caravan-card{min-width:0;padding:10px;border-radius:7px;background:linear-gradient(155deg,#c9b595,#9e8767);border:2px solid #594837;box-shadow:inset 0 0 0 2px #e8d7b52b,0 6px 12px #0007;color:#251a12}.caravan-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.caravan-card-top b{font-size:12px}.caravan-capacity-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;min-height:34px;padding:5px;border-radius:5px;background:#604e3b3d;border:1px solid #5b4936}.caravan-cube,.caravan-slot-empty{display:block;aspect-ratio:1;border-radius:3px}.caravan-cube{border:1px solid #fff8;box-shadow:inset 0 3px 4px #fff5,0 2px 4px #0008}.caravan-cube.Y{background:var(--y)}.caravan-cube.R{background:var(--r)}.caravan-cube.G{background:var(--g)}.caravan-cube.B{background:var(--b)}.caravan-slot-empty{border:1px dashed #382c2180;background:#ffffff12}.caravan-count-row{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:7px}.caravan-count{display:flex;align-items:center;gap:3px;min-width:0;padding:3px 4px;border-radius:4px;background:#3a2a1f24;font-size:7px;white-space:nowrap}.caravan-count i{width:8px;height:8px;border-radius:2px}.caravan-count b{margin-left:auto;font-size:9px}.caravan-count.Y i{background:var(--y)}.caravan-count.R i{background:var(--r)}.caravan-count.G i{background:var(--g)}.caravan-count.B i{background:var(--b)}
.opponent-seat{border-radius:8px;background:linear-gradient(180deg,#b6a487,#88745b);border:2px solid #4f3c2c;color:#271b12;box-shadow:0 8px 18px #0007}.opponent-seat:before{display:none}.opponent-seat .player-name,.opponent-seat .seat-coins{color:#261a12}.opponent-seat .status-dot{border:1px solid #2f251b}.opponent-seat .ai-badge{background:#4f3c2c;color:#ead6b5}.opponent-table-pieces{display:grid;grid-template-columns:minmax(0,1fr) 68px;gap:8px;align-items:center;margin-top:8px}.mini-caravan{padding:5px;border-radius:5px;background:#75634d;border:1px solid #4b3b2c}.mini-caravan-grid{display:flex;gap:3px;min-height:22px;align-items:center;flex-wrap:wrap}.mini-caravan .caravan-cube{width:15px;height:15px}.mini-caravan small{display:block;margin-top:3px;color:#e8d8bc;font-size:8px;text-align:right}.opponent-stacks{display:flex;gap:5px}.mini-stack{position:relative;width:31px;height:46px;border-radius:4px;border:1px solid #d2b17e;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:2px 2px 0 #3b2c21}.mini-stack.merchant-back{background:#4f3b63;color:#f4e3ff}.mini-stack.point-back{background:#a95734;color:#fff0dc}.mini-stack b{font-size:11px}.mini-stack small{position:absolute;top:49px;color:#3b2a1e;font-size:6px;white-space:nowrap}.opponent-seat .seat-coins{margin-top:13px}.opponent-seat.active{border-color:#f3cf77;box-shadow:0 0 0 3px #f3cf7747,0 8px 20px #0008}
@media(max-width:1280px){.official-setup-grid{grid-template-columns:96px minmax(0,1fr);gap:10px;padding:12px}.point-track{grid-template-columns:repeat(6,124px)}.merchant-track{grid-template-columns:repeat(7,124px)}.official-card-slot{width:124px;min-width:124px}.official-card-slot .game-card{width:124px}.personal-zone-head{grid-template-columns:1fr 2fr}.personal-score-board{grid-column:1/3;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}}
@media(max-width:820px){.official-setup-grid{grid-template-columns:1fr}.public-supply{border-right:0;border-bottom:1px solid #b9855942}.supply-bowls{display:grid;grid-template-columns:repeat(4,1fr)}.supply-bowl{min-height:70px}.official-card-track{margin-left:0}.point-track{grid-template-columns:repeat(6,126px)}.merchant-track{grid-template-columns:repeat(7,126px)}.official-card-slot{width:126px;min-width:126px}.official-card-slot .game-card{width:126px}.personal-zone-head{grid-template-columns:1fr}.personal-score-board{grid-column:auto}.caravan-capacity-grid{grid-template-columns:repeat(10,24px);overflow-x:auto;justify-content:start}.opponent-seat{flex-basis:220px}}
@media(max-width:520px){.official-setup-grid{padding:8px}.supply-bowls{gap:5px}.supply-bowl{min-height:62px;padding:5px 3px}.supply-cubes{transform:scale(.78)}.official-lane-head{align-items:flex-start;flex-direction:column;gap:2px}.point-track{grid-template-columns:repeat(6,118px)}.merchant-track{grid-template-columns:repeat(7,118px)}.official-card-slot{width:118px;min-width:118px}.official-card-slot .game-card{width:118px;min-height:170px}.deck-card-back{width:104px;height:156px}.caravan-count span{font-size:0}.caravan-count-row{grid-template-columns:repeat(4,1fr)}}

/* v1.5.0 — compact landscape table inspired by premium mobile board-game ergonomics */
:root{
  --land-gap:clamp(5px,.55vw,10px);
  --card-w:clamp(74px,7.6vw,116px);
  --card-h:calc(var(--card-w) * 1.34);
  --dock-h:clamp(132px,21vh,184px);
}
.topbar{padding:7px clamp(10px,2vw,28px);min-height:42px}.eyebrow{display:none}.brand{font-size:clamp(17px,2vw,23px)}.brand span{font-size:.46em}.top-actions{gap:5px}.top-actions .ghost{padding:7px 10px;border-radius:8px;font-size:11px}
main{width:100%;max-width:none;padding:6px 8px 8px}#room{min-width:0}.game-hud{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:stretch;margin-bottom:6px}.game-hud .room-head{margin:0;padding:5px 9px;border:1px solid #6c4932;border-radius:10px;background:#1d100bdd;min-width:154px}.game-hud .room-head>div:first-child{display:flex;align-items:center;gap:7px}.game-hud .room-head>.subtle{display:none}.game-hud .room-head>div:first-child>.subtle{font-size:8px;line-height:1}.game-hud .room-code{gap:5px}.game-hud .code{font-size:16px;letter-spacing:.09em}.game-hud .small-btn{padding:4px 7px;border-radius:6px;font-size:8px}.game-hud .turn-banner{margin:0;min-height:42px;padding:5px 10px;border-radius:10px}.game-hud .turn-title{font-size:12px}.game-hud .turn-banner .subtle{font-size:8px}.game-hud .end-warning{font-size:9px}.game-hud .ai-turn-status{min-width:min(390px,48vw);padding:4px 7px;border-radius:8px}.game-hud .ai-status-top>b{width:27px;height:27px;font-size:13px}.game-hud .ai-status-top strong{font-size:10px}.game-hud .ai-status-top small,.game-hud .ai-pace{font-size:7px}.game-hud .ai-progress{height:3px}
.landscape-game-shell{height:calc(100svh - 105px);min-height:510px;display:flex;flex-direction:column;gap:6px;overflow:hidden}.landscape-board{flex:1;min-height:0;display:grid;grid-template-columns:clamp(132px,14vw,205px) minmax(0,1fr) clamp(74px,8.8vw,126px);gap:var(--land-gap);padding:7px;border:1px solid #8c603e;border-radius:14px;background:radial-gradient(ellipse at 50% 40%,#66402a 0,#3e261b 55%,#24150f 100%);box-shadow:inset 0 0 0 2px #140b077a,0 10px 30px #0007;overflow:hidden}
.compact-zone-title,.market-board-title{height:18px;display:flex;align-items:center;justify-content:center;color:#d6b17e;font-size:8px;letter-spacing:.12em;text-transform:uppercase}.landscape-opponents{min-width:0;display:flex;flex-direction:column;min-height:0}.opponent-rail,.opponent-rail.single{display:flex;flex-direction:column;justify-content:center;gap:5px;min-height:0;flex:1;margin:0;max-width:none}.opponent-seat{display:grid;grid-template-columns:38px minmax(0,1fr);gap:6px;padding:5px;border-radius:9px;background:linear-gradient(135deg,#2d1a13,#170d09);border:1px solid #795238;color:var(--ink);box-shadow:0 4px 10px #0006}.opponent-seat.active{border-color:#f5c467;box-shadow:0 0 0 2px #f1b85d35,0 4px 12px #0008}.seat-avatar{width:36px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;align-self:center;background:radial-gradient(circle at 35% 30%,#d5a76d,#794027 63%,#32160f);border:2px solid #d5a564;color:#fff0d3;font:800 15px Georgia,serif;box-shadow:inset 0 0 0 2px #2a130d,0 3px 7px #0008}.seat-body{min-width:0}.seat-cap{gap:4px}.opponent-seat .player-name{font-size:9px;padding:0;line-height:1.1}.opponent-seat .ai-badge{font-size:6px;padding:1px 4px}.seat-order{width:16px;height:16px;font-size:7px}.opponent-seat .mini-caravan{margin-top:3px;padding:3px;border-radius:4px;background:#0f090770;border:1px solid #5e422e}.opponent-seat .mini-caravan-grid{min-height:10px;gap:2px;flex-wrap:nowrap;overflow:hidden}.opponent-seat .mini-caravan .caravan-cube{width:9px;height:9px;border-radius:2px}.opponent-seat .mini-caravan small{font-size:6px;margin:0;color:#c8a987}.seat-footer{display:flex;align-items:center;gap:3px;margin-top:3px}.mini-stat{height:20px;min-width:25px;padding:1px 3px;border-radius:4px;display:flex;align-items:center;justify-content:center;gap:2px;background:#3d281d;border:1px solid #765138}.mini-stat b{font-size:8px}.mini-stat small{font-size:0}.mini-stat small:before{font-size:6px}.mini-stat.merchant-back small:before{content:'H'}.mini-stat.point-back small:before{content:'P'}.mini-stat.played-stat small:before{content:'U'}.seat-footer .coin-stack{margin-left:auto;gap:2px}.seat-footer .coin{width:17px;height:17px;border-width:1px;font-size:7px}
.landscape-market{min-width:0;min-height:0;display:flex;flex-direction:column;justify-content:center;padding:0 2px}.market-board-title{justify-content:flex-start;padding-left:4px}.official-market-lanes{gap:5px;min-height:0}.official-market-lane{min-height:0}.official-lane-head{height:15px;margin:0 2px 3px;align-items:center}.official-lane-head h3{font:700 10px Georgia,"Noto Serif SC",serif}.official-lane-head span{font-size:6px;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.official-row-scroll{overflow:hidden;padding:0}.official-card-track{display:grid;gap:var(--land-gap);width:100%;margin:0;justify-content:center}.point-track{grid-template-columns:repeat(6,var(--card-w))}.merchant-track{grid-template-columns:repeat(7,var(--card-w))}.official-card-slot{width:var(--card-w);min-width:0}.point-slot,.point-deck-slot{display:block;position:relative}.coin-space{display:none}.official-card-slot .game-card,.official-card-slot .game-card.point{width:var(--card-w);min-height:var(--card-h);height:var(--card-h);padding:6px;border-radius:7px}.official-card-slot .game-card:not(.point){background:linear-gradient(165deg,#dfcba7,#bfa077 62%,#886345);border:1px solid #5d3d27}.official-card-slot .game-card.point{background:linear-gradient(165deg,#e1d0ae,#b89b72 64%,#816042);border:1px solid #5d432d}.official-card-slot .game-card:hover{transform:translateY(-2px)}.official-card-slot .game-card .index{top:3px;right:4px;font-size:6px}.official-card-slot .game-card .card-type{font-size:7px;line-height:1;height:10px;overflow:hidden}.official-card-slot .game-card .effect{min-height:calc(var(--card-h) - 54px);margin:2px 0;gap:3px}.official-card-slot .game-card .effect .arrow{font-size:14px}.official-card-slot .cube-group{gap:2px;max-width:56px}.official-card-slot .cube{width:12px;height:12px;border-radius:3px}.official-card-slot .upgrade-icon{font-size:19px}.official-card-slot .effect strong{font-size:9px}.official-card-slot .game-card .card-foot{font-size:6px;line-height:1}.official-card-slot .bonus-area{position:absolute;left:4px;right:4px;bottom:3px;min-height:15px;padding-top:2px;font-size:6px;white-space:nowrap;overflow:hidden}.official-card-slot .bonus-area .cube{width:8px;height:8px}.official-card-slot .fee-dots{left:4px;bottom:2px;gap:1px}.official-card-slot .fee-dot{width:4px;height:4px}.official-card-slot .point-value{font-size:25px}.official-card-slot .point-cost{gap:2px}.official-card-slot .game-card.point .effect{flex-direction:column;gap:0}.official-card-slot .game-card.point .card-foot{position:absolute;left:5px;right:5px;bottom:4px}.official-coin-pile{position:absolute;z-index:4;top:-3px;left:-4px;height:25px;gap:1px;pointer-events:none}.official-coin-pile b{padding:1px 3px;border-radius:6px;background:#25130edb;font-size:7px}.coin-fan{width:31px;height:22px}.coin-fan i{width:17px;height:17px;top:3px;border-width:1px}.coin-fan i:nth-child(2){left:7px}.coin-fan i:nth-child(3){left:14px}.deck-stack{height:var(--card-h)}.deck-card-back{width:var(--card-w);height:var(--card-h);border-radius:7px}.deck-stack>b{font-size:9px}.deck-stack>small{font-size:6px}
.landscape-tools{min-width:0;display:flex;flex-direction:column;gap:5px;min-height:0}.public-supply{flex:1;padding:5px;border:1px solid #8a5c3c;border-radius:10px;background:#1a0e0ac4}.supply-title{text-align:center;font-size:8px;letter-spacing:.08em}.supply-bowls{display:grid;grid-template-columns:1fr;gap:5px;margin-top:5px}.supply-bowl{min-height:0;aspect-ratio:1.22;border-radius:50%;padding:3px;display:grid;place-items:center;background:radial-gradient(circle at 45% 38%,#8b5a36,#362015 72%);border:1px solid #b9895b}.supply-bowl span{font-size:0}.supply-cubes{display:flex;gap:1px;transform:none}.supply-cubes i{width:10px;height:10px}.public-supply>small{display:block;text-align:center;font-size:6px;margin-top:3px}.compact-drawer{margin:0;border-radius:8px;box-shadow:none;background:#21130ddd}.compact-drawer summary{cursor:pointer;padding:6px 7px;color:#e2bd84;font-size:8px;list-style:none}.compact-drawer summary::-webkit-details-marker{display:none}.compact-drawer summary:after{content:'›';float:right}.compact-drawer[open] summary:after{transform:rotate(90deg)}.compact-drawer .log-list,.compact-drawer .rules-short{position:absolute;right:8px;bottom:calc(var(--dock-h) + 8px);z-index:35;width:min(330px,70vw);max-height:180px;overflow:auto;padding:10px;border:1px solid #95643f;border-radius:10px;background:#1c100cf5;box-shadow:0 14px 36px #000b;font-size:9px}.compact-drawer .log-item{font-size:8px;padding:4px 0}
.personal-zone{flex:0 0 var(--dock-h);min-height:0;margin:0;display:grid;grid-template-columns:clamp(230px,27vw,390px) minmax(0,1fr);border-radius:11px;border:1px solid #c6924e;background:linear-gradient(145deg,#282019,#12100e);box-shadow:0 -5px 20px #0008;overflow:hidden}.personal-zone-head{grid-column:1;grid-row:1;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:'identity score' 'resource resource';gap:5px;padding:7px;border:0;border-right:1px solid #745034;border-radius:0;background:linear-gradient(135deg,#33261c,#17120f)}.caravan-identity{grid-area:identity;align-items:center;gap:6px}.player-avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,#e0b875,#7d4728 65%,#2e160e);border:2px solid #d6a45d;color:#fff1d2;font:800 14px Georgia,serif}.personal-kicker{font-size:6px}.caravan-identity h3{font-size:12px;margin:1px 0}.caravan-identity .player-meta{font-size:6px;margin:2px 0;gap:5px}.personal-resource-board{grid-area:resource;min-width:0}.personal-resource-board>.resource-label{display:none}.personal-score-board{grid-area:score;display:flex;flex-direction:column;align-items:flex-end;gap:4px}.large-coins{display:flex;gap:3px}.large-coins .coin{width:23px;height:23px;font-size:9px}.rest-button{padding:5px 7px;border-radius:6px;font-size:7px;white-space:nowrap}.caravan-card{padding:5px;border-radius:5px}.caravan-card-top{margin-bottom:3px;font-size:6px}.caravan-card-top b{font-size:8px}.caravan-capacity-grid{min-height:22px;padding:3px;gap:2px}.caravan-cube,.caravan-slot-empty{border-radius:2px}.caravan-count-row{margin-top:3px;gap:2px}.caravan-count{padding:1px 2px;font-size:5px}.caravan-count i{width:6px;height:6px}.caravan-count b{font-size:6px}.personal-hand{grid-column:2;grid-row:1;min-width:0;padding:5px 6px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:stretch}.hand-row{display:flex;align-items:center;gap:5px;overflow-x:auto;overflow-y:hidden;padding:1px 1px 5px}.hand-row .game-card{flex:0 0 clamp(62px,6.1vw,86px);width:clamp(62px,6.1vw,86px);min-height:calc(clamp(62px,6.1vw,86px)*1.34);height:calc(clamp(62px,6.1vw,86px)*1.34);padding:5px;border-radius:6px;background:linear-gradient(165deg,#e1cfaa,#b69268);color:#28190f}.hand-row .game-card .card-type{font-size:6px}.hand-row .game-card .index{font-size:5px}.hand-row .game-card .effect{min-height:48px;margin:1px 0}.hand-row .game-card .cube{width:10px;height:10px}.hand-row .game-card .effect .arrow{font-size:12px}.hand-row .game-card .card-foot{font-size:5px;color:#4d3928}.personal-mini-status{width:clamp(76px,9vw,126px);overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:4px}.played-area,.own-points{margin:0;padding:4px;border-radius:6px;background:#0e0a08a6;border:1px solid #59402e;font-size:6px}.played-label{font-size:6px}.played-mini{gap:2px;max-height:35px;overflow:hidden}.played-chip{padding:2px}.played-chip .effect{min-height:0;margin:0}.played-chip .cube{width:7px;height:7px}.played-chip .effect .arrow{font-size:8px}.own-points{display:flex;flex-wrap:wrap;gap:2px}.own-points b{width:100%;font-size:6px}.own-point{padding:2px 4px;border-radius:4px;font-size:7px}
.ai-action-replay{bottom:calc(var(--dock-h) + 10px);width:min(610px,calc(100vw - 220px));padding:9px 11px;border-radius:11px}.ai-replay-kicker{font-size:7px}.ai-replay-main{grid-template-columns:64px 1fr}.ai-replay-main h4{font-size:12px}.ai-replay-card{min-height:58px}.ai-replay-card .cube{width:10px;height:10px}.ai-change-row .spice{font-size:7px;padding:2px 4px}.ai-replay-icon{width:58px;height:58px;font-size:24px}
.rotate-device-hint{display:none}
@media(max-width:1100px){:root{--card-w:clamp(68px,7.5vw,84px);--dock-h:142px}.landscape-board{grid-template-columns:130px minmax(0,1fr) 75px}.brand span{display:none}.market-board-title{display:none}.compact-zone-title{height:12px}.opponent-seat{grid-template-columns:31px minmax(0,1fr)}.seat-avatar{width:29px;font-size:12px}.official-card-slot .game-card .card-type{font-size:6px}.personal-zone{grid-template-columns:260px minmax(0,1fr)}}
@media(max-height:620px) and (orientation:landscape){:root{--card-w:clamp(62px,7vw,78px);--dock-h:116px}.topbar{min-height:34px;padding:4px 9px}.brand{font-size:16px}.top-actions .ghost{padding:5px 7px;font-size:9px}main{padding:3px 5px}.game-hud{margin-bottom:3px;gap:4px}.game-hud .room-head{min-width:128px;padding:3px 6px}.game-hud .room-head>div:first-child>.subtle{display:none}.game-hud .turn-banner{min-height:31px;padding:3px 7px}.game-hud .ai-turn-status{padding:2px 5px}.game-hud .ai-pace{display:none}.game-hud .ai-status-top>b{width:21px;height:21px;font-size:10px}.landscape-game-shell{height:calc(100svh - 72px);min-height:0;gap:3px}.landscape-board{padding:4px;grid-template-columns:118px minmax(0,1fr) 67px}.compact-zone-title{display:none}.opponent-rail{gap:3px}.opponent-seat{grid-template-columns:25px minmax(0,1fr);padding:3px}.seat-avatar{width:24px;font-size:9px;border-width:1px}.opponent-seat .player-name{font-size:7px}.seat-order{width:13px;height:13px;font-size:6px}.opponent-seat .mini-caravan{margin-top:1px;padding:1px}.opponent-seat .mini-caravan-grid{min-height:7px}.opponent-seat .mini-caravan .caravan-cube{width:7px;height:7px}.opponent-seat .mini-caravan small{display:none}.seat-footer{margin-top:1px}.mini-stat{height:14px;min-width:19px}.mini-stat b{font-size:6px}.seat-footer .coin{width:13px;height:13px;font-size:5px}.official-market-lanes{gap:2px}.official-lane-head{height:10px;margin-bottom:1px}.official-lane-head h3{font-size:7px}.official-lane-head span{font-size:5px}.official-card-slot .game-card,.official-card-slot .game-card.point{padding:4px}.official-card-slot .game-card .card-type{display:none}.official-card-slot .game-card .effect{min-height:calc(var(--card-h) - 31px)}.official-card-slot .game-card .card-foot{display:none}.official-card-slot .bonus-area{min-height:11px}.official-card-slot .point-value{font-size:19px}.official-card-slot .cube{width:9px;height:9px}.official-card-slot .upgrade-icon{font-size:15px}.public-supply{padding:3px}.supply-title,.public-supply>small{display:none}.supply-bowls{gap:3px;margin:0}.supply-cubes i{width:7px;height:7px}.compact-drawer summary{padding:4px;font-size:6px}.personal-zone{grid-template-columns:220px minmax(0,1fr)}.personal-zone-head{padding:4px}.player-avatar{width:27px;height:27px;font-size:10px}.caravan-identity h3{font-size:9px}.personal-kicker,.caravan-identity .player-meta{display:none}.caravan-card{padding:3px}.caravan-card-top{margin:0}.caravan-capacity-grid{min-height:17px}.caravan-count-row{display:none}.large-coins .coin{width:18px;height:18px;font-size:7px}.rest-button{padding:3px 5px;font-size:6px}.personal-hand{padding:3px 4px}.hand-row{gap:3px}.hand-row .game-card{flex-basis:56px;width:56px;height:75px;min-height:75px;padding:3px}.hand-row .game-card .card-type,.hand-row .game-card .card-foot{display:none}.hand-row .game-card .effect{min-height:64px}.personal-mini-status{width:64px}.played-area,.own-points{padding:2px}.ai-action-replay{bottom:calc(var(--dock-h) + 4px);width:min(520px,calc(100vw - 150px));padding:6px 8px}.ai-replay-main{grid-template-columns:48px 1fr}.ai-replay-card,.ai-replay-icon{width:45px;height:45px;min-height:45px}.ai-replay-main h4{font-size:9px;margin:0}.ai-change>small{display:none}.ai-change-row .spice{font-size:5px}}
@media(max-width:760px) and (orientation:landscape){.landscape-board{grid-template-columns:104px minmax(0,1fr) 60px}.personal-zone{grid-template-columns:195px minmax(0,1fr)}.game-hud .room-head{min-width:112px}.game-hud .room-head>div:first-child>.subtle{display:none}.game-hud .code{font-size:13px}.game-hud .small-btn{display:none}}
@media(orientation:portrait) and (max-width:900px){.rotate-device-hint{position:fixed;z-index:120;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#160c08f5;color:#f8dfad;text-align:center}.rotate-device-hint strong{font-size:54px}.rotate-device-hint span{font-size:14px}.modal:not(.hidden){z-index:150}}

/* v1.5.1 — phone landscape composition fix
   Target: 16:9 / 19.5:9 mobile landscape. The table fills the usable viewport,
   opponent rail stays narrow, markets remain centered, and the player's dock
   becomes a balanced bottom control strip rather than a large empty panel. */
@media (orientation:landscape) and (max-height:800px){
  :root{
    --card-w:clamp(72px,7.25vw,96px);
    --card-h:calc(var(--card-w) * 1.20);
    --dock-h:clamp(122px,20.5dvh,148px);
    --land-gap:clamp(3px,.42vw,7px);
  }
  html,body{width:100%;height:100%;overflow:hidden}
  body.game-active{min-height:100dvh;background:#170d09}
  body.game-active .grain{opacity:.08}
  body.game-active .topbar{
    position:relative;top:auto;height:36px;min-height:36px;padding:3px max(7px,env(safe-area-inset-right)) 3px max(8px,env(safe-area-inset-left));
    background:#1d100bf2;border-bottom-color:#71472c;backdrop-filter:none
  }
  body.game-active .topbar>div:first-child{display:flex;align-items:center;min-width:0}
  body.game-active .brand{font-size:13px;line-height:1;white-space:nowrap}
  body.game-active .brand #brandSub{display:none}
  body.game-active .top-actions{gap:4px;margin-left:auto}
  body.game-active .top-actions .ghost{height:28px;padding:3px 9px;border-radius:8px;font-size:9px}
  body.game-active main{height:calc(100dvh - 36px);min-height:0;padding:4px 6px 5px;overflow:hidden}
  body.game-active #room{height:100%;min-height:0;display:flex;flex-direction:column}
  .game-hud{flex:0 0 40px;height:40px;grid-template-columns:120px minmax(0,1fr);gap:5px;margin:0 0 4px}
  .game-hud .room-head{min-width:0;height:40px;padding:3px 7px;border-radius:9px}
  .game-hud .room-head>div:first-child>.subtle,.game-hud .room-head>.subtle{display:none}
  .game-hud .room-code{height:100%;justify-content:space-between;gap:4px}
  .game-hud .code{font-size:14px;letter-spacing:.10em}
  .game-hud .small-btn{padding:3px 5px;font-size:7px}
  .game-hud .turn-banner{height:40px;min-height:40px;padding:3px 8px;border-radius:9px}
  .game-hud .turn-title{font-size:11px;line-height:1.05}
  .game-hud .turn-banner .subtle{font-size:7px;line-height:1.05}
  .game-hud .ai-turn-status{min-width:min(330px,44vw);padding:2px 5px}
  .game-hud .ai-status-top>b{width:22px;height:22px;font-size:10px}
  .game-hud .ai-status-top strong{font-size:8px}
  .game-hud .ai-status-top small,.game-hud .ai-pace{font-size:6px}

  .landscape-game-shell{flex:1;height:auto;min-height:0;gap:4px;overflow:hidden}
  .landscape-board{
    flex:1;min-height:0;padding:5px;gap:var(--land-gap);
    grid-template-columns:clamp(78px,8.7vw,104px) minmax(0,1fr) clamp(55px,6.2vw,72px);
    border-radius:11px
  }
  .compact-zone-title,.market-board-title{display:none}
  .landscape-opponents{justify-content:flex-start}
  .opponent-rail,.opponent-rail.single{justify-content:flex-start;gap:4px;padding:0;overflow-y:auto;scrollbar-width:none}
  .opponent-rail::-webkit-scrollbar{display:none}
  .opponent-seat{
    flex:0 0 auto;grid-template-columns:24px minmax(0,1fr);gap:3px;padding:3px;border-radius:7px;
    min-height:54px;max-height:74px
  }
  .opponent-seat.single{max-height:74px}
  .seat-avatar{width:23px;border-width:1px;font-size:9px}
  .seat-cap{gap:2px}
  .opponent-seat .player-name{font-size:7px;line-height:1}
  .opponent-seat .ai-badge{font-size:5px;padding:1px 3px}
  .seat-order{width:12px;height:12px;font-size:5px}
  .opponent-seat .mini-caravan{margin-top:2px;padding:1px 2px;border-radius:3px}
  .opponent-seat .mini-caravan-grid{min-height:8px;gap:1px}
  .opponent-seat .mini-caravan .caravan-cube{width:7px;height:7px;border-radius:1px}
  .opponent-seat .mini-caravan small{display:none}
  .seat-footer{margin-top:2px;gap:2px}
  .mini-stat{height:13px;min-width:17px;padding:0 2px;border-radius:3px}
  .mini-stat b{font-size:6px}
  .mini-stat small:before{font-size:5px}
  .seat-footer .coin-stack{gap:1px}
  .seat-footer .coin{width:12px;height:12px;font-size:5px}

  .landscape-market{justify-content:center;padding:0 1px}
  .official-market-lanes{gap:4px;justify-content:center}
  .official-lane-head{height:12px;margin:0 1px 2px;padding:0 2px}
  .official-lane-head h3{font-size:8px;line-height:1}
  .official-lane-head span{font-size:5px;max-width:46%}
  .official-row-scroll{padding:0;overflow:hidden}
  .official-card-track{gap:var(--land-gap);justify-content:center}
  .official-card-slot .game-card,.official-card-slot .game-card.point{padding:4px;border-radius:6px}
  .official-card-slot .game-card .card-type{display:none}
  .official-card-slot .game-card .index{top:2px;right:3px;font-size:5px}
  .official-card-slot .game-card .effect{min-height:calc(var(--card-h) - 28px);margin:0;gap:2px}
  .official-card-slot .game-card.point .effect{justify-content:center}
  .official-card-slot .game-card .card-foot{display:none}
  .official-card-slot .game-card.point .card-foot{display:none}
  .official-card-slot .point-value{font-size:22px;line-height:.95}
  .official-card-slot .point-cost{gap:1px}
  .official-card-slot .cube{width:9px;height:9px;border-radius:2px}
  .official-card-slot .cube-group{gap:1px;max-width:48px}
  .official-card-slot .effect .arrow{font-size:12px}
  .official-card-slot .upgrade-icon{font-size:16px}
  .official-card-slot .effect strong{font-size:8px}
  .official-card-slot .bonus-area{left:3px;right:3px;bottom:2px;min-height:10px;padding-top:1px;font-size:5px;border-top:0}
  .official-card-slot .bonus-area .cube{width:6px;height:6px}
  .official-card-slot .fee-dots{left:3px;bottom:2px;gap:1px}
  .official-card-slot .fee-dot{width:3px;height:3px}
  .official-coin-pile{top:-4px;left:-3px;height:21px}
  .official-coin-pile b{font-size:6px;padding:1px 2px}
  .coin-fan{width:27px;height:19px}
  .coin-fan i{width:15px;height:15px;top:2px}
  .coin-fan i:nth-child(2){left:6px}.coin-fan i:nth-child(3){left:12px}
  .deck-stack,.deck-card-back{height:var(--card-h)}
  .deck-card-back{width:var(--card-w);border-width:2px}
  .deck-stack>b{right:2px;bottom:2px;min-width:18px;height:18px;font-size:6px}
  .deck-stack>small{display:none}

  .landscape-tools{gap:3px}
  .public-supply{padding:3px;border-radius:8px;display:flex;flex-direction:column;justify-content:center}
  .supply-title,.public-supply>small{display:none}
  .supply-bowls{grid-template-columns:1fr;gap:3px;margin:0}
  .supply-bowl{aspect-ratio:1.18;padding:2px;border-width:1px}
  .supply-cubes{width:auto;height:auto;display:grid;grid-template-columns:repeat(2,7px);gap:1px}
  .supply-cubes i{position:static!important;width:7px;height:7px;transform:none!important;border-radius:2px}
  .compact-drawer summary{padding:3px 4px;font-size:6px}
  .compact-drawer .log-list,.compact-drawer .rules-short{bottom:calc(var(--dock-h) + 6px);right:5px;width:min(300px,72vw);max-height:155px;font-size:8px}

  .personal-zone{
    flex:0 0 var(--dock-h);grid-template-columns:clamp(184px,20.5vw,240px) minmax(0,1fr);
    border-radius:10px
  }
  .personal-zone-head{padding:5px;gap:3px;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:'identity score' 'resource resource'}
  .caravan-identity{gap:4px}
  .player-avatar{width:27px;height:27px;font-size:10px;border-width:1px}
  .personal-kicker{display:none}
  .caravan-identity h3{font-size:9px;margin:0;line-height:1}
  .caravan-identity .player-meta{font-size:5px;margin:1px 0;gap:4px}
  .personal-score-board{gap:2px}
  .large-coins{gap:2px}
  .large-coins .coin{width:17px;height:17px;font-size:6px;border-width:1px}
  .rest-button{padding:3px 5px;font-size:6px;border-radius:5px}
  .caravan-card{padding:3px;border-width:1px}
  .caravan-card-top{margin-bottom:2px;font-size:5px}
  .caravan-card-top b{font-size:7px}
  .caravan-capacity-grid{min-height:19px;padding:2px;gap:1px}
  .caravan-count-row{margin-top:2px;gap:1px}
  .caravan-count{padding:1px;font-size:4px}
  .caravan-count i{width:5px;height:5px}.caravan-count b{font-size:5px}

  .personal-hand{padding:4px;grid-template-columns:minmax(0,1fr) clamp(58px,7vw,82px);gap:4px}
  .hand-row{justify-content:safe center;align-items:center;gap:5px;padding:1px 2px;scroll-snap-type:x proximity}
  .hand-row .game-card{
    flex:0 0 clamp(64px,6.6vw,84px);width:clamp(64px,6.6vw,84px);
    min-height:calc(clamp(64px,6.6vw,84px)*1.20);height:calc(clamp(64px,6.6vw,84px)*1.20);
    padding:4px;scroll-snap-align:center
  }
  .hand-row .game-card .card-type,.hand-row .game-card .card-foot{display:none}
  .hand-row .game-card .index{font-size:5px}
  .hand-row .game-card .effect{min-height:calc(clamp(64px,6.6vw,84px)*1.20 - 10px);margin:0}
  .hand-row .game-card .cube{width:9px;height:9px}
  .hand-row .game-card .effect .arrow{font-size:11px}
  .hand-row .game-card .upgrade-icon{font-size:20px}
  .personal-mini-status{width:auto;min-width:0;gap:3px}
  .played-area,.own-points{padding:3px;font-size:5px}
  .played-label,.own-points b{font-size:5px}
  .played-mini{max-height:29px}
  .played-chip{padding:1px}
  .own-point{padding:1px 3px;font-size:6px}

  .ai-action-replay{bottom:calc(var(--dock-h) + 5px);width:min(500px,calc(100vw - 170px));padding:5px 7px}
  .ai-replay-main{grid-template-columns:42px 1fr}
  .ai-replay-card,.ai-replay-icon{width:39px;height:39px;min-height:39px}
  .ai-replay-main h4{font-size:8px;margin:0}
  .ai-change>small{display:none}
  .ai-change-row .spice{font-size:5px;padding:1px 3px}
}

/* Narrow phones: preserve all seven market columns by shaving side rails first. */
@media (orientation:landscape) and (max-height:800px) and (max-width:980px){
  :root{--card-w:clamp(64px,7vw,78px);--dock-h:122px}
  .landscape-board{grid-template-columns:72px minmax(0,1fr) 50px;padding:3px}
  .game-hud{grid-template-columns:105px minmax(0,1fr)}
  .game-hud .small-btn{display:none}
  .opponent-seat{grid-template-columns:19px minmax(0,1fr);padding:2px}
  .seat-avatar{width:18px;font-size:7px}
  .mini-stat.played-stat{display:none}
  .personal-zone{grid-template-columns:172px minmax(0,1fr)}
  .caravan-count-row{display:none}
  .personal-hand{grid-template-columns:minmax(0,1fr) 54px}
  .hand-row .game-card{flex-basis:58px;width:58px;height:70px;min-height:70px}
  .hand-row .game-card .effect{min-height:62px}
}

/* v1.5.1b — specificity and visual-balance refinements from real phone capture */
@media (orientation:landscape) and (max-height:800px){
  .official-market-lanes{height:100%;display:grid;grid-template-rows:1fr 1fr;gap:0}
  .official-market-lane{display:flex;min-height:0;flex-direction:column;justify-content:center}
  .official-card-slot .game-card.point .effect .subtle{display:none}
  .official-card-slot .bonus-area .subtle{display:none}
  .official-card-slot .bonus-area:has(.subtle){display:none}
  .opponent-rail.single{justify-content:center}
  .opponent-rail.single .opponent-seat{min-height:72px;max-height:88px;grid-template-columns:28px minmax(0,1fr);padding:4px}
  .opponent-rail.single .seat-avatar{width:27px;font-size:10px}
  .personal-hand .hand-row .game-card{
    flex:0 0 clamp(64px,6.6vw,84px);width:clamp(64px,6.6vw,84px);
    min-height:calc(clamp(64px,6.6vw,84px)*1.20);height:calc(clamp(64px,6.6vw,84px)*1.20)
  }
  .personal-hand .hand-row .game-card .effect{min-height:calc(clamp(64px,6.6vw,84px)*1.20 - 10px)}
}
@media (orientation:landscape) and (max-height:800px) and (max-width:980px){
  .personal-hand .hand-row .game-card{flex:0 0 58px;width:58px;height:70px;min-height:70px}
  .personal-hand .hand-row .game-card .effect{min-height:62px}
}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media (orientation:landscape) and (max-height:800px){
  .personal-hand .hand-row .game-card .effect strong{font-size:8px;line-height:1.05;max-width:58px;text-align:center;white-space:normal}
}
.upgrade-compact{display:none}
@media (orientation:landscape) and (max-height:800px){
  .personal-hand .hand-row .game-card .upgrade-full{display:none}
  .personal-hand .hand-row .game-card .upgrade-compact{display:inline;font-size:13px;line-height:1}
}

/* v1.6.0 — locked official-table layout, compact dark mobile landscape */
:root{
  --v160-gap:clamp(3px,.42vw,7px);
  --v160-card-w:clamp(58px,7.45vw,104px);
  --v160-card-h:calc(var(--v160-card-w) * 1.40);
  --v160-dock-h:clamp(94px,17.5dvh,126px);
}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{background:#080706;color:#eee1cd}
body:before{content:"";position:fixed;inset:0;pointer-events:none;background:
  radial-gradient(ellipse at 50% 35%,rgba(99,69,45,.12),transparent 54%),
  linear-gradient(rgba(255,255,255,.012),rgba(255,255,255,0));z-index:-1}
body.game-active{height:100dvh;min-height:100dvh;overflow:hidden;background:#070606}
body.game-active .grain{opacity:.035}
body.game-active .topbar{position:relative;top:auto;height:40px;min-height:40px;padding:4px 10px;background:#0d0b0af5;border-bottom:1px solid #3e3026;backdrop-filter:none}
body.game-active .brand{font-size:14px;color:#e8d9c2;letter-spacing:.02em}
body.game-active .brand #brandSub{display:none}
body.game-active .top-actions{gap:4px}
body.game-active .top-actions .ghost{height:30px;padding:3px 9px;border-radius:7px;background:#171310;border-color:#4a392d;color:#d8c5aa;font-size:9px}
body.game-active main{height:calc(100dvh - 40px);padding:4px 6px 5px;overflow:hidden}
body.game-active #room{height:100%;display:flex;flex-direction:column;min-height:0}
.game-hud{flex:0 0 38px;height:38px;grid-template-columns:112px minmax(0,1fr);gap:4px;margin:0 0 4px}
.game-hud .room-head{height:38px;min-width:0;padding:3px 6px;background:#11100f;border-color:#403329;border-radius:8px}
.game-hud .room-head>div:first-child>.subtle,.game-hud .room-head>.subtle{display:none}
.game-hud .code{font-size:12px;color:#d8b36d;letter-spacing:.08em}
.game-hud .small-btn{padding:3px 5px;font-size:7px;background:#1c1713;border-color:#4d3b2d}
.game-hud .turn-banner{height:38px;min-height:38px;margin:0;padding:3px 7px;border-radius:8px;background:#11100f;border-color:#46372b}
.game-hud .turn-banner.mine{background:linear-gradient(90deg,#272016,#12100e);border-color:#9b7134;box-shadow:0 0 14px #b2812530}
.game-hud .turn-title{font-size:10px}.game-hud .turn-banner .subtle{font-size:6px}
.game-hud .ai-turn-status{min-width:min(285px,42vw);padding:2px 5px;background:#17130f;border-color:#4b392b}
.game-hud .ai-status-top>b{width:21px;height:21px;font-size:9px}.game-hud .ai-status-top strong{font-size:7px}.game-hud .ai-status-top small,.game-hud .ai-pace{font-size:5px}
.landscape-game-shell{flex:1;height:auto;min-height:0;display:flex;flex-direction:column;gap:4px;overflow:hidden}
.landscape-board{flex:1;min-height:0;display:grid;grid-template-columns:clamp(50px,5.9vw,78px) minmax(0,1fr) clamp(92px,11vw,148px);gap:var(--v160-gap);padding:5px;border-radius:10px;border:1px solid #45362b;background:
  radial-gradient(ellipse at 50% 42%,#211b16 0,#12100e 63%,#090807 100%);box-shadow:inset 0 0 0 1px #0008,0 8px 24px #000a;overflow:hidden}
.landscape-supply,.landscape-right-rail{min-width:0;min-height:0;display:flex;flex-direction:column}
.landscape-supply .public-supply{height:100%;flex:1;padding:4px 3px;background:#0e0c0af2;border:1px solid #3e3128;border-radius:8px}
.landscape-supply .supply-title,.landscape-supply .public-supply>small{display:none}
.landscape-supply .supply-bowls{height:100%;display:grid;grid-template-rows:repeat(4,1fr);grid-template-columns:1fr;gap:4px;margin:0}
.landscape-supply .supply-bowl{min-height:0;aspect-ratio:auto;border-radius:50%;padding:2px;background:radial-gradient(circle at 42% 35%,#5d4635,#241b15 67%,#0f0c0a);border:1px solid #66503d;box-shadow:inset 0 0 8px #000c}
.landscape-supply .supply-cubes{display:grid;grid-template-columns:repeat(2,7px);gap:1px;transform:none}
.landscape-supply .supply-cubes i{position:static!important;width:7px;height:7px;transform:none!important;border-radius:2px}
.landscape-market{min-width:0;min-height:0;display:flex;flex-direction:column;justify-content:center;padding:0}
.market-board-title{display:none}
.official-market-lanes{height:100%;display:grid;grid-template-rows:1fr 1fr;gap:1px;min-height:0}
.official-market-lane{min-height:0;display:flex;flex-direction:column;justify-content:center}
.official-lane-head{height:10px;margin:0 1px 1px;padding:0 2px;align-items:center}
.official-lane-head h3{font-size:7px;color:#bca98d;font-family:Inter,"Noto Sans SC",sans-serif;font-weight:700;letter-spacing:.02em}
.official-lane-head span{font-size:5px;color:#766959;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.official-row-scroll{overflow:hidden;padding:0}
.official-card-track{display:grid;width:100%;gap:var(--v160-gap);margin:0;justify-content:center}
.point-track{grid-template-columns:repeat(6,var(--v160-card-w))}.merchant-track{grid-template-columns:repeat(7,var(--v160-card-w))}
.official-card-slot{width:var(--v160-card-w);min-width:0}
.official-card-slot .game-card,.official-card-slot .game-card.point{width:var(--v160-card-w);height:var(--v160-card-h);min-height:var(--v160-card-h);padding:4px;border-radius:5px;box-shadow:0 3px 7px #0009}
.official-card-slot .game-card:not(.point),.hand-row .game-card{background:linear-gradient(165deg,#cdbc9e,#a98d67 67%,#756047);color:#241a13;border:1px solid #594938}
.official-card-slot .game-card.point{background:linear-gradient(165deg,#d3c6ad,#aa9372 68%,#75624c);color:#211914;border:1px solid #5e4d3d}
.official-card-slot .game-card:hover{transform:translateY(-1px)}
.official-card-slot .game-card .card-type,.hand-row .game-card .card-type{display:none}
.official-card-slot .game-card .index,.hand-row .game-card .index{top:2px;right:3px;font-size:5px;color:#665849}
.official-card-slot .game-card .effect{min-height:calc(var(--v160-card-h) - 25px);margin:0;gap:2px}
.official-card-slot .game-card .card-foot,.hand-row .game-card .card-foot{display:none}
.official-card-slot .cube,.hand-row .game-card .cube{width:8px;height:8px;border-radius:2px}
.official-card-slot .cube-group,.hand-row .game-card .cube-group{gap:1px;max-width:43px}
.official-card-slot .effect .arrow,.hand-row .game-card .effect .arrow{font-size:10px}
.official-card-slot .upgrade-icon,.hand-row .game-card .upgrade-icon{font-size:15px}
.official-card-slot .effect strong,.hand-row .game-card .effect strong{font-size:7px}
.official-card-slot .point-value{font-size:19px;color:#4a2b1c}.official-card-slot .game-card.point .effect .subtle{display:none}
.official-card-slot .point-cost{gap:1px}.official-card-slot .bonus-area{left:2px;right:2px;bottom:1px;min-height:8px;padding:0;border:0;font-size:0}.official-card-slot .bonus-area .cube{width:5px;height:5px}.official-card-slot .bonus-area .subtle{display:none}
.official-card-slot .fee-dots{left:2px;bottom:1px;gap:1px}.official-card-slot .fee-dot{width:3px;height:3px}
.official-coin-pile{top:-3px;left:-3px;height:18px}.official-coin-pile b{font-size:5px;padding:1px 2px}.coin-fan{width:23px;height:16px}.coin-fan i{width:12px;height:12px;top:2px}.coin-fan i:nth-child(2){left:5px}.coin-fan i:nth-child(3){left:10px}
.deck-stack,.deck-card-back{height:var(--v160-card-h)}.deck-card-back{width:var(--v160-card-w);border-radius:5px;border-width:1px}.deck-stack>b{right:1px;bottom:1px;min-width:14px;height:14px;font-size:5px}.deck-stack>small{display:none}
.landscape-right-rail{gap:3px}
.landscape-right-rail .landscape-opponents{flex:1;min-height:0;display:flex;flex-direction:column}
.compact-zone-title{height:10px;font-size:6px;color:#8f806d;letter-spacing:.08em}
.opponent-rail,.opponent-rail.single{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:3px;overflow:auto;scrollbar-width:none}
.opponent-rail::-webkit-scrollbar{display:none}
.opponent-seat,.opponent-rail.single .opponent-seat{flex:0 0 auto;display:grid;grid-template-columns:27px minmax(0,1fr);gap:3px;min-height:42px;max-height:58px;padding:3px;border-radius:6px;background:#11100e;border:1px solid #3f3329;box-shadow:none}
.opponent-seat.active{border-color:#b68a42;box-shadow:0 0 0 1px #b68a4238,0 0 12px #b68a4224}
.seat-avatar,.opponent-rail.single .seat-avatar{width:25px;height:100%;min-height:31px;aspect-ratio:auto;border-radius:5px;border:1px solid #66503a;background:linear-gradient(145deg,#2e251d,#15110e);font:800 8px Inter,sans-serif;color:#e1c58d;letter-spacing:.03em}
.seat-avatar.ai-avatar{background:linear-gradient(145deg,#2d291b,#17140d);color:#f0c966;border-color:#796331}
.seat-body{min-width:0}.seat-cap{gap:2px}.opponent-seat .player-name{font-size:6px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0;color:#d8c9b5}.seat-type{font-size:5px;color:#a78d63;margin-top:1px}.seat-order{width:11px;height:11px;font-size:5px;background:#2a2119}
.opponent-seat .mini-caravan{margin-top:2px;padding:1px 2px;border-radius:3px;background:#090807;border-color:#2f2821}.opponent-seat .mini-caravan-grid{min-height:7px;gap:1px}.opponent-seat .mini-caravan .caravan-cube{width:6px;height:6px;border-radius:1px}.opponent-seat .mini-caravan small{display:none}
.seat-footer{margin-top:2px;gap:1px}.mini-stat{height:11px;min-width:15px;padding:0 2px;border-radius:2px;background:#201a15;border-color:#3a3027}.mini-stat b{font-size:5px}.mini-stat small:before{font-size:4px}.seat-footer .coin-stack{gap:1px}.seat-footer .coin{width:11px;height:11px;font-size:4px;border-width:1px}
.rail-tools{display:flex;gap:3px}.rail-tools .compact-drawer{flex:1;background:#11100e;border-color:#3b3027;border-radius:5px}.rail-tools .compact-drawer summary{padding:3px;font-size:5px;text-align:center}.compact-drawer .log-list,.compact-drawer .rules-short{right:5px;bottom:calc(var(--v160-dock-h) + 7px);width:min(300px,75vw);max-height:165px;padding:8px;background:#0d0b0af7;border-color:#4b3c30;font-size:7px}
.personal-zone{flex:0 0 var(--v160-dock-h);min-height:0;display:grid;grid-template-columns:clamp(145px,18vw,230px) minmax(0,1fr);gap:0;margin:0;border-radius:9px;border:1px solid #45372b;background:#0d0c0b;box-shadow:0 -3px 16px #000a;overflow:hidden}
.personal-zone.active{border-color:#8f6b35;box-shadow:0 0 0 1px #9a74362f,0 -3px 18px #000a}
.personal-zone-left{min-width:0;padding:4px 5px;border-right:1px solid #3b3027;background:linear-gradient(135deg,#171411,#0d0c0a)}
.personal-identity-row{height:22px;display:flex;align-items:center;gap:5px;margin-bottom:3px}.personal-identity-row>div:first-child{min-width:0;display:flex;flex-direction:column}.personal-identity-row strong{font-size:8px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.personal-kicker{font-size:5px;color:#9d896d}.personal-identity-row .large-coins{margin-left:auto;gap:2px}.personal-identity-row .large-coins .coin{width:16px;height:16px;font-size:6px;border-width:1px}.rest-button{padding:3px 5px;border-radius:5px;font-size:5px;background:#1d1712;border-color:#4d3b2d}
.personal-resource-board{min-width:0}.caravan-card{padding:3px;border-radius:5px;background:#090807;border:1px solid #3d3128}.caravan-card-top{height:10px;margin:0 0 2px;font-size:5px;color:#9c8970}.caravan-card-top b{font-size:6px;color:#d6ba83}.caravan-capacity-grid{display:grid;grid-template-columns:repeat(5,1fr)!important;grid-template-rows:repeat(2,1fr);min-height:47px;height:47px;padding:3px;gap:3px;overflow:hidden;background:#12100e;border:1px solid #342c25;border-radius:4px}
.caravan-cube,.caravan-slot-empty{width:100%!important;height:100%!important;max-width:none;border-radius:2px}.caravan-slot-empty{background:#0b0a09;border:1px dashed #3b342d}
.caravan-count-row{display:none}
.personal-zone-right{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) clamp(54px,7vw,88px);gap:4px;padding:4px 5px}
.hand-row{min-width:0;display:flex;align-items:center;justify-content:flex-start;gap:4px;overflow-x:auto;overflow-y:hidden;padding:0 1px 2px;scroll-snap-type:x proximity}
.hand-row .game-card{flex:0 0 var(--v160-card-w);width:var(--v160-card-w);height:var(--v160-card-h);min-height:var(--v160-card-h);padding:4px;border-radius:5px;scroll-snap-align:start;box-shadow:0 3px 7px #0009}
.hand-row .game-card .effect{min-height:calc(var(--v160-card-h) - 10px);height:100%;margin:0;gap:2px}
.hand-row .game-card .upgrade-full{display:none}.hand-row .game-card .upgrade-compact{display:inline;font-size:11px}
.personal-mini-status{width:auto;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:3px;overflow:hidden}
.played-area,.own-points{margin:0;padding:3px;border-radius:4px;background:#090807;border:1px solid #342b23;font-size:5px}.played-label,.own-points b{font-size:5px}.played-mini{max-height:26px;gap:1px}.played-chip{padding:1px}.played-chip .cube{width:5px;height:5px}.played-chip .effect{min-height:0;margin:0}.played-chip .upgrade-icon{font-size:8px}.own-point{padding:1px 3px;font-size:6px}
.ai-action-replay{bottom:calc(var(--v160-dock-h) + 6px);left:50%;width:min(430px,calc(100vw - 190px));padding:5px 7px;border-radius:8px;background:#0e0c0af1;border-color:#5f4935;box-shadow:0 7px 24px #000c}.ai-replay-kicker{font-size:5px}.ai-replay-main{grid-template-columns:38px 1fr;gap:6px}.ai-replay-card,.ai-replay-icon{width:36px;height:45px;min-height:45px}.ai-replay-main h4{font-size:7px;margin:0}.ai-change>small{display:none}.ai-change-row .spice{font-size:4px;padding:1px 2px}.ai-change-row .spice:before{width:5px;height:5px}
.table-pulse{animation:tablePulse .65s ease}.receive-glow{animation:receiveGlow .9s ease}.flying-card{position:fixed!important;z-index:190!important;margin:0!important;pointer-events:none!important;transform-origin:center;box-shadow:0 12px 30px #000d,0 0 18px #ddb45b66!important}.action-caption{position:fixed;z-index:195;left:50%;bottom:calc(var(--v160-dock-h) + 10px);transform:translate(-50%,12px);padding:5px 12px;border-radius:999px;background:#17130ff2;border:1px solid #846536;color:#efd49b;font-size:8px;font-weight:800;opacity:0;transition:.22s}.action-caption.show{opacity:1;transform:translate(-50%,0)}
.game-complete-celebration{position:fixed;z-index:220;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#050404d9;opacity:0;transform:scale(1.03);transition:.45s;overflow:hidden}.game-complete-celebration.show{opacity:1;transform:scale(1)}.game-complete-celebration.leaving{opacity:0;transform:scale(1.04)}.game-complete-celebration h2{z-index:2;margin:12px 0 5px;font:800 clamp(22px,4vw,48px) Georgia,"Noto Serif SC",serif;color:#f0d28e;text-shadow:0 0 22px #d5a13a66}.game-complete-celebration p{z-index:2;margin:0;color:#bcae97;font-size:12px}.victory-medallion{z-index:2;width:74px;height:74px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#e0c06b,#7a5925 68%,#25180a);border:3px double #e8c96f;color:#fff0b6;font-size:34px;box-shadow:0 0 46px #d8a83b88;animation:medallionPop 1s ease}.victory-rays{position:absolute;width:520px;height:520px;background:repeating-conic-gradient(from 0deg,#d2a74418 0 8deg,transparent 8deg 18deg);animation:spin 14s linear infinite}.victory-sparkles i{position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:#edcc77;transform:rotate(calc(var(--i)*20deg)) translateY(-120px);animation:spark 1.8s calc(var(--i)*.05s) ease-in-out infinite}
@keyframes tablePulse{50%{filter:brightness(1.13)}}@keyframes receiveGlow{50%{box-shadow:inset 0 0 22px #d6ae5b55,0 0 12px #d6ae5b44}}@keyframes medallionPop{0%{transform:scale(.2) rotate(-35deg);opacity:0}70%{transform:scale(1.12) rotate(5deg)}100%{transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes spark{0%,100%{opacity:.15;transform:rotate(calc(var(--i)*20deg)) translateY(-95px) scale(.5)}50%{opacity:1;transform:rotate(calc(var(--i)*20deg)) translateY(-165px) scale(1.2)}}
.scoreboard{position:fixed;z-index:205;left:50%;top:50%;transform:translate(-50%,-50%);width:min(520px,86vw);max-height:75dvh;overflow:auto;margin:0;padding:18px;background:#0d0b0af7;border-color:#6b5034}
@media (orientation:landscape) and (max-height:520px){
  :root{--v160-card-w:clamp(53px,7.35vw,72px);--v160-dock-h:92px;--v160-gap:3px}
  body.game-active .topbar{height:34px;min-height:34px;padding:2px 7px}body.game-active main{height:calc(100dvh - 34px);padding:3px 4px}.game-hud{height:32px;flex-basis:32px;grid-template-columns:95px minmax(0,1fr);margin-bottom:3px}.game-hud .room-head,.game-hud .turn-banner{height:32px;min-height:32px}.game-hud .turn-banner .subtle,.game-hud .ai-pace{display:none}.game-hud .ai-turn-status{min-width:min(240px,42vw)}
  .landscape-board{grid-template-columns:46px minmax(0,1fr) 92px;padding:3px}.compact-zone-title{display:none}.opponent-seat,.opponent-rail.single .opponent-seat{grid-template-columns:23px minmax(0,1fr);min-height:37px;max-height:46px;padding:2px}.seat-avatar,.opponent-rail.single .seat-avatar{width:21px;min-height:27px;font-size:7px}.seat-type{display:none}.mini-stat.played-stat{display:none}.landscape-supply .supply-cubes{grid-template-columns:repeat(2,6px)}.landscape-supply .supply-cubes i{width:6px;height:6px}
  .official-lane-head{height:8px}.official-card-slot .game-card,.official-card-slot .game-card.point,.hand-row .game-card{padding:3px}.official-card-slot .game-card .effect{min-height:calc(var(--v160-card-h) - 20px)}.official-card-slot .cube,.hand-row .game-card .cube{width:7px;height:7px}.official-card-slot .point-value{font-size:16px}
  .personal-zone{grid-template-columns:135px minmax(0,1fr)}.personal-zone-left{padding:3px 4px}.personal-identity-row{height:18px;margin-bottom:2px}.personal-identity-row strong{font-size:7px}.personal-kicker{display:none}.caravan-capacity-grid{height:39px;min-height:39px;gap:2px}.personal-zone-right{grid-template-columns:minmax(0,1fr) 48px;padding:3px 4px}.rail-tools{display:none}.action-caption{bottom:calc(var(--v160-dock-h) + 6px)}
}
@media (orientation:portrait) and (max-width:900px){.rotate-device-hint{background:#070606fa;color:#e5cfaa}}

/* v1.6.1 — point-card costs stay visible at the top on compact landscape screens */
.game-card.point{display:flex;flex-direction:column}
.game-card.point .point-cost-top{position:relative;z-index:2;flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:4px;min-height:30px;margin:3px 1px 0;padding:4px 3px;border-radius:7px;background:#241b15d9;border:1px solid #6f543b;box-shadow:inset 0 1px 0 #fff1,0 2px 5px #0005}
.game-card.point .point-cost-chip{display:inline-flex;align-items:center;justify-content:center;gap:2px;min-width:25px;height:21px;padding:1px 4px;border-radius:5px;background:#0c0a09b8;border:1px solid #ffffff2b;color:#fff4dc;font:800 12px/1 Inter,"Noto Sans SC",sans-serif;text-shadow:0 1px 2px #000}
.game-card.point .point-cost-chip .cube{width:12px;height:12px;flex:0 0 12px;border-radius:3px}
.game-card.point .point-cost-chip b{font:800 11px/1 Inter,"Noto Sans SC",sans-serif}
.game-card.point .point-score{flex:1;min-height:0!important;margin:0!important;display:flex;flex-direction:column;justify-content:center;align-items:center}
.game-card.point>.index{top:auto!important;right:3px!important;bottom:2px!important}

.official-card-slot .game-card.point .point-cost-top{min-height:22px;margin:1px 0 0;padding:2px 2px;gap:2px;border-radius:4px}
.official-card-slot .game-card.point .point-cost-chip{min-width:19px;height:17px;padding:1px 3px;gap:1px;border-radius:3px;font-size:9px}
.official-card-slot .game-card.point .point-cost-chip .cube{width:9px;height:9px;flex-basis:9px;border-radius:2px}
.official-card-slot .game-card.point .point-cost-chip b{font-size:8px}
.official-card-slot .game-card.point .point-score{min-height:0!important}
.official-card-slot .game-card.point .point-value{font-size:clamp(18px,2.25vw,28px);line-height:.95}

@media (orientation:landscape) and (max-height:620px){
  .official-card-slot .game-card.point .point-cost-top{min-height:19px;margin:0;padding:1px;gap:1px}
  .official-card-slot .game-card.point .point-cost-chip{min-width:16px;height:15px;padding:1px 2px}
  .official-card-slot .game-card.point .point-cost-chip .cube{width:8px;height:8px;flex-basis:8px}
  .official-card-slot .game-card.point .point-cost-chip b{font-size:7px}
  .official-card-slot .game-card.point .point-value{font-size:20px}
}
@media (orientation:landscape) and (max-height:520px){
  .official-card-slot .game-card.point .point-cost-top{min-height:17px}
  .official-card-slot .game-card.point .point-cost-chip{min-width:14px;height:13px;padding:0 2px}
  .official-card-slot .game-card.point .point-cost-chip .cube{width:7px;height:7px;flex-basis:7px}
  .official-card-slot .game-card.point .point-cost-chip b{font-size:6px}
  .official-card-slot .game-card.point .point-value{font-size:17px}
}
.game-card.point .point-cost-top.cost-count-4{gap:2px}
.official-card-slot .game-card.point .point-cost-top.cost-count-4{gap:1px}
@media (orientation:landscape) and (max-height:620px){
  .official-card-slot .game-card.point .point-cost-top.cost-count-4 .point-cost-chip{min-width:12px;padding:0 1px;gap:0}
  .official-card-slot .game-card.point .point-cost-top.cost-count-4 .point-cost-chip .cube{width:6px;height:6px;flex-basis:6px}
  .official-card-slot .game-card.point .point-cost-top.cost-count-4 .point-cost-chip b{font-size:6px}
}
@media (orientation:landscape) and (max-height:520px){
  .official-card-slot .game-card.point .point-cost-top.cost-count-4{gap:1px}
  .official-card-slot .game-card.point .point-cost-top.cost-count-4 .point-cost-chip{min-width:10px;height:12px;padding:0 1px}
  .official-card-slot .game-card.point .point-cost-top.cost-count-4 .point-cost-chip .cube{width:5px;height:5px;flex-basis:5px}
  .official-card-slot .game-card.point .point-cost-top.cost-count-4 .point-cost-chip b{font-size:5px}
}

/* v1.6.2 — point cards: spice requirements occupy the upper section; points are fixed below */
.game-card.point{
  display:grid!important;
  grid-template-rows:minmax(0,1fr) auto!important;
  align-content:stretch;
  padding:4px!important;
}
.game-card.point .point-cost-top{
  grid-row:1;
  align-self:stretch;
  width:100%;
  min-height:0!important;
  margin:0!important;
  padding:5px 3px 4px!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  grid-auto-rows:minmax(18px,1fr);
  place-items:center;
  gap:3px!important;
  border:0!important;
  border-radius:4px 4px 0 0!important;
  background:linear-gradient(180deg,#efe5cf,#cbb99a)!important;
  box-shadow:none!important;
  overflow:hidden;
}
.game-card.point .point-cost-top.cost-count-1{
  grid-template-columns:1fr;
}
.game-card.point .point-cost-top.cost-count-2{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.game-card.point .point-cost-chip{
  width:100%;
  min-width:0!important;
  height:100%!important;
  min-height:18px;
  padding:1px 2px!important;
  display:flex!important;
  align-items:center;
  justify-content:center;
  gap:2px!important;
  border-radius:4px!important;
  background:#1b1713d9!important;
  border:1px solid #ffffff38!important;
  color:#fff7e7!important;
  text-shadow:0 1px 2px #000;
}
.game-card.point .point-cost-chip .cube{
  width:11px!important;
  height:11px!important;
  flex:0 0 11px!important;
  border-radius:2px!important;
  border-color:#fff8!important;
}
.game-card.point .point-cost-chip b{
  font:900 10px/1 Inter,"Noto Sans SC",sans-serif!important;
}
.game-card.point .point-score{
  grid-row:2;
  flex:none!important;
  width:100%;
  min-height:29px!important;
  margin:0!important;
  padding:3px 2px 2px!important;
  display:flex!important;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:0!important;
  border-top:1px solid #745d43;
  border-radius:0 0 4px 4px;
  background:linear-gradient(180deg,#bda985,#8e7556)!important;
}
.game-card.point .point-score .point-value{
  font-size:clamp(20px,2.55vw,30px)!important;
  line-height:.82!important;
  color:#352218!important;
  text-shadow:0 1px 0 #fff6;
}
.game-card.point .point-score .subtle{
  display:none!important;
}
.game-card.point>.index{
  top:2px!important;
  right:3px!important;
  bottom:auto!important;
  z-index:4;
  color:#6c5a47!important;
  font-size:5px!important;
}
.official-card-slot .game-card.point .point-cost-top{
  min-height:0!important;
  padding:4px 2px 3px!important;
  gap:2px!important;
}
.official-card-slot .game-card.point .point-cost-chip{
  min-height:16px!important;
}
.official-card-slot .game-card.point .point-cost-chip .cube{
  width:9px!important;
  height:9px!important;
  flex-basis:9px!important;
}
.official-card-slot .game-card.point .point-cost-chip b{
  font-size:8px!important;
}
.official-card-slot .game-card.point .point-score{
  min-height:25px!important;
  padding:2px 1px!important;
}
.official-card-slot .game-card.point .point-value{
  font-size:clamp(18px,2.2vw,25px)!important;
}
@media (orientation:landscape) and (max-height:520px){
  .official-card-slot .game-card.point .point-cost-top{
    padding:3px 2px 2px!important;
    gap:2px!important;
  }
  .official-card-slot .game-card.point .point-cost-chip{
    min-height:14px!important;
    height:100%!important;
  }
  .official-card-slot .game-card.point .point-cost-chip .cube{
    width:8px!important;
    height:8px!important;
    flex-basis:8px!important;
  }
  .official-card-slot .game-card.point .point-cost-chip b{
    font-size:7px!important;
  }
  .official-card-slot .game-card.point .point-score{
    min-height:22px!important;
  }
  .official-card-slot .game-card.point .point-value{
    font-size:17px!important;
  }
}
