@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;600;700&family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
:root{font-family:'Noto Sans SC',sans-serif;color:#e5eeec;background:#142b35;font-synthesis:none;--gold:#dfba72;--muted:#8fa7ad;--tile:38px}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 45% 10%,#25424a55,transparent 70%)}button{font:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #dfba72;outline-offset:4px}button{touch-action:manipulation}h1,h2,h3,p{margin:0}.header{max-width:1320px;margin:auto;padding:27px 42px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ffffff12}.brand{display:flex;align-items:center;gap:14px}.brand-mark{color:var(--gold);font-size:48px;line-height:1}.brand h1{font-family:'Noto Serif SC',serif;font-size:25px;letter-spacing:6px}.brand p{font-size:10px;letter-spacing:2.5px;color:var(--muted);margin-top:6px}.header-actions{display:flex;gap:24px}.quiet{background:none;border:0;color:#c0cece;font-size:14px;padding:10px 0}.quiet:hover{color:var(--gold)}.quiet>span:first-child:not(:last-child){margin-right:6px}main{max-width:1240px;margin:auto;padding:30px 32px 0}.game-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}.eyebrow{font-size:12px;letter-spacing:3px;color:var(--gold);margin-bottom:9px}h2{font-family:'Noto Serif SC',serif;font-weight:500;font-size:27px;letter-spacing:2px}.round-label{display:flex;gap:16px;align-items:center;font-size:14px;color:#d7e1df}.round-label>span{font-family:Georgia,serif;font-size:44px;color:var(--gold);line-height:1}.round-label small{display:block;color:var(--muted);font-size:12px;margin-top:6px}.market{background:#1c3640;border:1px solid #36515a;border-radius:16px;padding:20px 26px 0;box-shadow:0 12px 30px #07182020}.section-head{display:flex;justify-content:space-between;align-items:center}h3{font-size:16px;font-weight:600}.section-head h3 span{font-size:10px;letter-spacing:2px;font-weight:400;margin-left:12px;color:var(--muted)}.phase{border:1px solid #78958a50;background:#a5cabc0d;color:#c5dfcf;font-size:12px;padding:5px 11px;border-radius:20px}.factories{display:flex;justify-content:space-around;gap:12px;padding:22px 25px 25px}.factory-wrap{text-align:center}.factory{width:128px;height:128px;border-radius:50%;background:#e6e2d6;border:5px solid #d9d5c9;box-shadow:0 0 0 1px #ebe6d777,0 8px 12px #071c2940,inset 0 0 0 3px #23465422;display:grid;grid-template-columns:repeat(2,38px);gap:5px;align-content:center;justify-content:center;transition:opacity .2s}.factory.empty{opacity:.23}.factory-no{display:block;margin-top:10px;color:#98afb3;font-family:Georgia,serif;font-size:12px;letter-spacing:2px}.tile{display:inline-flex;align-items:center;justify-content:center;width:var(--tile);height:var(--tile);border-radius:5px;flex-shrink:0;border:1px solid #ffffff45;box-shadow:inset 0 2px 1px #ffffff55,inset 0 -3px 0 #00000020,0 2px 3px #07152038;position:relative;color:#fff;font-size:27px;line-height:1;font-family:Georgia,serif;transition:transform .16s,outline .16s}.tile.c0{background:#2584b6;color:#b7e4f0}.tile.c1{background:#e5b34a;color:#8b601b}.tile.c2{background:#cd6258;color:#ffe1c1}.tile.c3{background:#2b3c4d;color:#c9bc93}.tile.c4{background:#eeead9;color:#42959c}.tile.c5{background:#f4e3b4;color:#34565a;font-size:21px;font-weight:bold}.tile .motif{pointer-events:none}.tile.c0 .motif{font-size:.9em}.tile.c1 .motif{font-size:1.1em}.tile.c2 .motif{font-size:1.1em}.tile.c4 .motif{font-size:1.15em}button.tile:not(:disabled):hover{transform:translateY(-4px);outline:2px solid #fff3d2;z-index:1}button.tile.selected{outline:3px solid var(--gold);transform:translateY(-3px)}.center-area{border-top:1px solid #ffffff12;min-height:81px;display:flex;align-items:center;gap:22px;padding:16px 0}.center-label{flex-shrink:0}.center-label strong{font-size:14px;font-weight:500}.center-label small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.center-tiles{display:flex;flex-wrap:wrap;align-items:center;gap:7px;flex:1;--tile:32px}.center-tiles .tile{font-size:23px}.center-empty{font-size:13px;color:#718f99;margin-left:10px}.center-note{font-size:11px;color:#8fa7ad;line-height:1.8;text-align:right}.board-layout{display:grid;grid-template-columns:1.35fr 1fr;gap:22px;margin-top:22px}.player-panel{background:#eeeade;color:#293d42;border:1px solid #f8f4e8;border-radius:14px;padding:24px 28px}.player-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px}.player-title{display:flex;align-items:center;gap:12px}.avatar{width:40px;height:40px;display:grid;place-items:center;background:#285461;color:#eee7d6;border-radius:50%;font-family:'Noto Serif SC',serif;font-size:17px}.player-title h3{font-size:17px}.player-title p{font-size:12px;color:#7c8580;margin-top:5px}.score{display:flex;gap:7px;align-items:baseline}.score strong{font-family:Georgia,serif;font-size:38px;font-weight:400}.score span{font-size:11px;color:#7c8580}.instruction{background:#dfe4d9;border:1px solid #ccd5c7;padding:10px 12px;border-radius:6px;color:#526656;font-size:13px;margin-bottom:18px;min-height:42px}.instruction b{color:#2c5c55}.board-labels{display:grid;grid-template-columns:1fr 27px 1fr;margin-bottom:10px;color:#7d8986;font-size:11px;letter-spacing:1px}.board-labels>span:first-child{text-align:right}.board-labels>span:last-child{text-align:center}.board-row{display:grid;grid-template-columns:1fr 27px 1fr;align-items:center;margin-top:5px}.pattern{display:flex;gap:5px;justify-content:flex-end;border:0;background:transparent;padding:2px;border-radius:5px;position:relative}.slot{display:inline-flex;width:var(--tile);height:var(--tile);border-radius:4px;border:1px solid #b5bbae70;background:#d8dacd77;flex-shrink:0}.pattern.legal{background:#84a99738;outline:1px dashed #508575}.pattern.legal:hover{background:#84a99777;outline:2px solid #508575}.pattern.blocked{opacity:.45}.transfer{color:#acb0a3;text-align:center;font-size:15px}.wall-row{display:flex;gap:5px;padding:2px}.ghost{opacity:.16;box-shadow:none;filter:saturate(.65);border-color:#8b979480}.wall-row .tile:not(.ghost){animation:placed .4s ease}.floor-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#718076;margin-top:20px;margin-bottom:10px}.floor-head small{font-size:10px;margin-left:9px;color:#939b8f}.text-btn{border:0;background:transparent;font-size:12px;color:#527a75;padding:4px}.text-btn:disabled{color:#a2aaa0}.floor{display:flex;gap:8px}.floor-item{text-align:center}.floor-item small{display:block;font-size:10px;color:#9b8f7a;margin-bottom:5px}.floor .slot{border:1px dashed #b8b7a6;background:#e3dfd2}.floor .tile{font-size:25px}.opponent-panel{border:1px solid #405660;border-radius:14px;padding:22px 25px;background:#1b343e}.opponent-panel .player-title p{color:#839da5}.opponent-panel .score span{color:#91a3a7}.avatar.ai{color:var(--gold);background:#344951;font-size:25px}.ai-badge{font-size:10px;font-weight:400;border:1px solid #617780;padding:2px 5px;border-radius:3px;margin-left:4px;color:#a1b5ba}.compact{--tile:27px}.compact .tile{font-size:20px}.compact .board-row,.compact .board-labels{grid-template-columns:1fr 22px 1fr}.compact .pattern,.compact .wall-row{gap:4px}.compact .slot{border-color:#67818a55;background:#263f49}.compact .ghost{opacity:.17;filter:none}.compact .board-labels{color:#8ba1a7}.compact .transfer{color:#52707b}.opponent-panel .floor-head{color:#8ba1a7;margin-top:14px}.compact-floor{--tile:27px;gap:6px}.compact-floor .slot{border-color:#59727a;background:#263f49}.compact-floor .tile{font-size:20px}.compact-floor .floor-item small{color:#a39d88}.notes{padding:20px 5px 0}.notes h3{font-size:13px;color:#b0c0c2;margin-bottom:12px}.notes h3 span{float:right;font-size:11px;color:#6f8b94;font-weight:400}.log{font-size:12px;color:#94aab0;display:flex;gap:9px;align-items:center;margin:10px 0;line-height:1.7}.log-dot{height:6px;width:6px;border-radius:50%;background:var(--gold);flex-shrink:0}.log-dot.ai{background:#6b858d}.mini-swatch{display:inline-block;width:8px;height:8px;border-radius:2px;margin:0 4px}.first-badge{font-size:10px;color:#917443;border:1px solid #b6a27570;padding:2px 5px;border-radius:3px;margin-left:5px}footer{display:flex;justify-content:space-between;color:#75909a;font-size:11px;padding:26px 2px;letter-spacing:.5px}footer b{margin:0 7px;font-weight:400}footer i{font-style:normal;color:#4e6d77;margin:0 8px}dialog{background:#eeeade;color:#293d42;border:0;border-radius:18px;padding:36px;max-width:500px;width:calc(100% - 32px);box-shadow:0 30px 100px #0007}dialog::backdrop{background:#061b27c9;backdrop-filter:blur(5px)}.dialog-close{position:absolute;right:15px;top:12px;border:0;background:none;font-size:26px;color:#718076}.dialog-kicker{color:#8b734a;letter-spacing:3px;font-size:11px;margin-bottom:12px}dialog h2{font-size:26px;margin-bottom:20px}dialog p{font-size:14px;line-height:1.9;margin:12px 0}dialog ol{padding-left:22px;font-size:14px;line-height:1.9}dialog li{padding:5px 0}.primary{width:100%;border:0;border-radius:7px;background:#285461;color:#fff;padding:14px;margin-top:20px;font-size:14px}.primary:hover{background:#376a77}.secondary{background:none;border:1px solid #9aa8a0;color:#47645e;width:100%;padding:11px;margin-top:10px;border-radius:7px}.results{display:flex;gap:15px}.result-card{flex:1;background:#e0dfd2;border-radius:8px;padding:17px;text-align:center}.result-card strong{display:block;font-size:38px;font-family:Georgia,serif;margin:10px}.result-card small{display:block;font-size:12px;line-height:1.8;color:#6c7c70}dialog a{color:#3c716e;font-size:12px}.primary:focus-visible{outline-color:#377579}@keyframes placed{from{transform:scale(.85)}to{transform:scale(1)}}@media(min-width:1250px){.player-panel{--tile:42px}.factory{width:138px;height:138px}.factories{padding-top:25px;padding-bottom:24px}.compact{--tile:30px}}
@media(max-width:1000px){main{padding:25px 24px 0}.header{padding:23px 25px}.board-layout{grid-template-columns:1fr}.player-panel{--tile:48px}.board{max-width:590px;margin:auto}.opponent-panel{--tile:34px}.compact{--tile:34px}.opponent-panel .board{max-width:460px}.compact-floor{justify-content:center}.opponent-panel .floor-head{max-width:460px;margin:18px auto 12px}.factory{width:110px;height:110px}.factories{padding-left:0;padding-right:0}.notes{padding:20px 6px}.player-panel{padding:24px 32px}.floor{justify-content:center}}
@media(max-width:640px){.header{padding:19px 18px}.brand h1{font-size:20px;letter-spacing:3px}.brand-mark{font-size:37px}.brand p{font-size:8px;letter-spacing:1.5px}.header-actions{gap:14px}.quiet{font-size:12px}.header-actions #restart span{display:none}main{padding:24px 12px 0}.game-heading{align-items:flex-start;margin:0 5px 22px;gap:10px}h2{font-size:19px;letter-spacing:0;line-height:1.6}.eyebrow{font-size:10px;letter-spacing:2px}.round-label{gap:7px;font-size:11px}.round-label>span{font-size:32px}.round-label small{font-size:9px;max-width:74px}.market{padding:16px 12px 0}.section-head h3{font-size:14px}.section-head h3 span{display:none}.factories{display:grid;grid-template-columns:repeat(6,1fr);gap:15px 8px;padding:18px 0}.factory-wrap{grid-column:span 2}.factory-wrap:nth-child(4){grid-column:2 / span 2}.factory{margin:auto;width:92px;height:92px;grid-template-columns:repeat(2,29px);--tile:29px;gap:4px;border-width:3px}.factory .tile{font-size:21px}.factory-no{font-size:10px;margin-top:6px}.center-area{gap:12px}.center-note{display:none}.center-label strong{font-size:12px}.center-label small{font-size:9px}.center-empty{font-size:11px;max-width:160px}.center-tiles{--tile:28px;gap:5px}.center-tiles .tile{font-size:20px}.player-panel{padding:19px 12px;--tile:clamp(22px,6.9vw,38px)}.player-title h3{font-size:15px}.player-title p{font-size:10px}.avatar{width:33px;height:33px;font-size:14px}.score strong{font-size:32px}.instruction{font-size:12px}.board-row,.board-labels{grid-template-columns:1fr 19px 1fr}.pattern,.wall-row{gap:3px;padding:1px}.tile{font-size:21px;border-radius:3px}.slot{border-radius:3px}.floor{gap:7px}.floor-head small{font-size:9px;margin-left:5px}.opponent-panel{padding:20px 14px}.compact{--tile:clamp(22px,6.9vw,34px)}.compact .pattern,.compact .wall-row{gap:3px}.compact .board-row,.compact .board-labels{grid-template-columns:1fr 19px 1fr}footer{display:block;text-align:center;line-height:2.3;padding-top:20px}footer>span{display:block}.board-layout{gap:18px;margin-top:18px}dialog{padding:30px 24px}.first-badge{font-size:9px}.result-card{padding:12px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
[hidden]{display:none!important}.network{position:sticky;top:0;z-index:10;background:#e8d8ab;color:#354a48;padding:13px 24px;text-align:center;font-size:14px;overflow-wrap:anywhere}.lobby{max-width:980px;padding:52px 28px 70px;margin:auto}.lobby-heading{text-align:center;margin-bottom:32px}.lobby-heading h2{font-size:34px;margin-bottom:16px}.lobby-heading>p:last-child{font-size:16px;color:#a8bdc2;line-height:1.8}.lobby-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.lobby-card{padding:30px;border:1px solid #405660;border-radius:16px;background:#1c3640}.lobby-card h3{font-size:21px;margin-bottom:24px}.lobby-card label{display:block;font-size:14px;color:#b8c9cb;margin:20px 0 8px}.lobby-card input,.lobby-card select{display:block;width:100%;border:1px solid #536b71;border-radius:7px;background:#132c36;color:#e8eeee;padding:13px 14px;font:inherit;font-size:16px;min-width:0}.lobby-card input::placeholder{color:#809da5}.lobby-card input:focus,.lobby-card select:focus{outline:2px solid var(--gold);outline-offset:2px}.lobby-card .primary{background:#dfba72;color:#243b42;font-weight:600;font-size:16px}.lobby-card .secondary{background:transparent;border-color:#93aaa8;color:#d6e4df}.primary:disabled{opacity:.4}.solo-link{display:block;margin:25px auto 0;font-size:14px}.room-card{max-width:660px;margin:auto}.room-code-line{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.room-code-line small{display:block;color:#9fb5ba;font-size:13px;margin-bottom:8px}.room-code-line strong{font-family:monospace;font-size:26px;letter-spacing:3px;color:var(--gold)}.room-code-line button{width:auto;margin:0;padding:12px;font-size:14px}.members{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:28px 0}.member{display:flex;align-items:center;gap:12px;padding:15px;border:1px solid #526a713f;border-radius:9px;min-width:0}.member strong{display:block;font-size:16px;overflow-wrap:anywhere}.member small{display:block;font-size:12px;color:#9db3b8;margin-top:5px}.member.vacant{opacity:.45;border-style:dashed}.member .avatar{flex-shrink:0}.room-footnote{font-size:12px!important;color:#8aa2aa;line-height:1.9;margin-top:14px;text-align:center}.waiting-host{text-align:center;color:var(--gold);font-size:16px;padding:15px}.room-strip{display:flex;gap:20px;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff20;padding:0 2px 18px;margin-bottom:25px;font-size:14px;color:#a7bfc3}.room-strip b{font-family:monospace;margin-left:12px;letter-spacing:2px;color:var(--gold)}.room-strip .text-btn{color:#dfba72;font-size:14px}#opponents .opponent-panel+.opponent-panel{margin-top:18px}.active-player{border-color:#bdad75;box-shadow:0 0 0 1px #bdad7533}.factories.many{display:grid;grid-template-columns:repeat(5,1fr);justify-items:center;gap:18px}.factories.many .factory{width:105px;height:105px;--tile:32px;grid-template-columns:repeat(2,32px)}.factories.many .tile{font-size:24px}.results{flex-wrap:wrap}.results .result-card{min-width:120px}.player-title{min-width:0}.player-title h3{overflow-wrap:anywhere}.phase{max-width:240px;overflow-wrap:anywhere}.player-panel{align-self:start}.header-actions{gap:20px}
@media(max-width:640px){.header-actions{gap:10px}.quiet{font-size:12px}.lobby{padding:30px 16px 50px}.lobby-heading h2{font-size:27px}.lobby-heading>p:last-child{font-size:14px}.lobby-grid{grid-template-columns:1fr;gap:18px}.lobby-card{padding:23px}.lobby-card h3{font-size:19px}.room-code-line{flex-direction:column;align-items:flex-start}.room-code-line strong{font-size:24px}.members{grid-template-columns:1fr}.member{padding:12px}.room-strip{flex-wrap:wrap;gap:10px;font-size:12px}.room-strip .text-btn{padding:0;font-size:12px}.factories.many{grid-template-columns:repeat(3,1fr);gap:14px 4px}.factories.many .factory-wrap,.factories.many .factory-wrap:nth-child(4){grid-column:auto}.factories.many .factory{width:88px;height:88px;--tile:28px;grid-template-columns:repeat(2,28px)}.phase{max-width:150px;font-size:11px}.brand h1{font-size:18px;letter-spacing:2px}.brand-mark{font-size:30px}.brand{gap:8px}.network{font-size:12px}.lobby-heading .eyebrow{font-size:12px}}
.turn-banner{position:sticky;top:12px;z-index:5;display:flex;align-items:center;gap:16px;padding:18px 22px;margin-bottom:20px;border:2px solid #d9b776;border-radius:12px;background:#f0dfb6;color:#3f3520;box-shadow:0 5px 20px #07182040}.turn-icon{display:grid;place-items:center;width:40px;height:40px;flex-shrink:0;border:1px solid currentColor;border-radius:50%;font-size:24px;font-weight:700}.turn-copy{flex:1;min-width:0}.turn-copy strong{display:block;font-size:21px;line-height:1.4}.turn-copy p{font-size:14px;line-height:1.6;margin-top:5px;overflow-wrap:anywhere}.turn-order{display:flex;flex-wrap:wrap;gap:7px;max-width:40%;justify-content:flex-end}.turn-player{padding:6px 10px;font-size:13px;border:1px solid #76624344;border-radius:6px;overflow-wrap:anywhere}.turn-player.current{background:#493c26;color:#fff5de;border-color:#493c26;font-weight:600}.turn-banner[data-turn="yours"]{background:#cbeadf;border-color:#77c0a8;color:#163e34}.turn-banner[data-turn="yours"] .turn-player.current{background:#245c4c;border-color:#245c4c;color:#f0fff9}.turn-banner[data-turn="complete"],.turn-banner[data-turn="syncing"]{background:#dce5e8;color:#2a414a;border-color:#9cb6c0}.market[data-turn="waiting"] button.tile{opacity:.55;cursor:not-allowed;box-shadow:inset 0 1px 1px #ffffff55}.market[data-turn="waiting"] .phase{background:#f0dfb6;color:#493c26;border-color:#d9b776;font-weight:600;font-size:14px}.player-panel[data-turn="yours"]{box-shadow:0 0 0 2px #77c0a8}.instruction[data-turn="waiting"]{background:#f0dfb6;border-color:#d0af72;color:#594a2d;font-size:14px;line-height:1.8}.instruction[data-turn="waiting"] b{color:#493c26}.opponent-panel.active-player{border:2px solid #dfba72}.opponent-panel.active-player .player-title p{color:#f2cd88;font-size:14px;font-weight:600}body:has(#network:not([hidden])) .turn-banner{top:64px}@media(max-width:760px){.turn-banner{flex-wrap:wrap;padding:14px;gap:10px;top:8px}.turn-copy strong{font-size:18px}.turn-copy p{font-size:13px}.turn-icon{width:32px;height:32px;font-size:19px}.turn-order{max-width:none;width:100%;justify-content:flex-start;gap:5px}.turn-player{font-size:12px;padding:4px 7px}.turn-copy{flex-basis:calc(100% - 48px)}}
/* Compact gameplay: your board is first in both reading and visual order. */
body:has(#game-content:not([hidden])) .header{padding:10px 24px}
body:has(#game-content:not([hidden])) .brand p{display:none}
body:has(#game-content:not([hidden])) .brand-mark{font-size:32px}
#game-content{padding:12px 24px 0}
#game-content .room-strip{padding-bottom:8px;margin-bottom:10px;gap:10px}
#game-content .turn-banner{position:relative;top:auto;gap:10px;padding:10px 14px;margin-bottom:12px;flex-wrap:wrap}
#game-content .turn-icon{width:30px;height:30px;font-size:18px}
#game-content .turn-copy{flex:1;flex-basis:180px}
#game-content .turn-copy strong{font-size:16px}
#game-content .turn-copy p{display:none}
#game-content .round-label{gap:7px;font-size:12px}
#game-content .round-label>span{font-size:27px}
#game-content .round-label small{margin-top:2px;font-size:11px;max-width:none}
#game-content .turn-order{max-width:none;width:auto;gap:4px}
#game-content .turn-player{font-size:12px;padding:4px 7px}
#game-content .board-layout{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:14px;margin-top:0;align-items:start}
#game-content .player-panel{padding:14px 16px;--tile:clamp(29px,3.1vw,38px);min-width:0}
#game-content .player-heading{margin-bottom:10px}
#game-content .score strong{font-size:30px}
#game-content .instruction{padding:7px 10px;margin-bottom:10px;min-height:34px;font-size:12px;line-height:1.5}
#game-content .board-labels{margin-bottom:6px}
#game-content .board-row{margin-top:3px}
#game-content .floor-head{margin-top:10px;margin-bottom:6px}
#game-content .market{padding:14px 14px 0;min-width:0}
#game-content .section-head h3 span{display:none}
#game-content .factories,#game-content .factories.many{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 6px;padding:12px 0;justify-items:center}
#game-content .factory-wrap,#game-content .factory-wrap:nth-child(4){grid-column:auto}
#game-content .factory,#game-content .factories.many .factory{width:92px;height:92px;--tile:32px;grid-template-columns:repeat(2,32px);gap:4px;border-width:3px;margin:auto}
#game-content .factory .tile{font-size:23px}
#game-content .factory-no{margin-top:4px;font-size:10px}
#game-content .center-area{min-height:58px;padding:10px 0;gap:10px}
#game-content .center-note,#game-content .center-label small{display:none}
#game-content .center-empty{font-size:12px;margin-left:0}
#game-content #opponents{grid-column:1 / -1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;min-width:0}
#game-content #opponents .opponent-panel{margin:0;padding:12px;min-width:0}
#game-content .compact{--tile:clamp(20px,2vw,27px)}
#game-content .compact .pattern,#game-content .compact .wall-row{gap:3px}
#game-content .compact .board-row,#game-content .compact .board-labels{grid-template-columns:1fr 16px 1fr}
#game-content .compact-floor{--tile:25px;justify-content:flex-start}
#game-content .opponent-panel .floor-head{margin:10px 0 6px}
#game-content .notes{padding:4px 0}
#game-content .notes h3{margin-bottom:6px}
#game-content .log{margin:6px 0;line-height:1.5}
#game-content footer{padding:12px 0;justify-content:flex-end}
@media(max-width:900px){
 #game-content{padding:10px 12px 0}
 #game-content .board-layout{grid-template-columns:minmax(0,1fr)}
 #game-content .player-panel{--tile:clamp(22px,6.5vw,38px)}
 #game-content .board{max-width:510px}
 #game-content .factories,#game-content .factories.many{grid-template-columns:repeat(5,minmax(0,1fr))}
 #game-content #opponents{grid-template-columns:repeat(2,minmax(0,1fr))}
 #game-content .compact{--tile:clamp(20px,3vw,27px)}
}
@media(max-width:560px){
 body:has(#game-content:not([hidden])) .header{padding:8px 12px;gap:8px;flex-wrap:wrap}
 body:has(#game-content:not([hidden])) .header-actions{gap:12px}
 #game-content .turn-banner{padding:8px 10px;gap:8px}
 #game-content .turn-copy{flex-basis:120px}
 #game-content .turn-order{flex-basis:100%;justify-content:flex-start}
 #game-content .player-panel{padding:12px 10px}
 #game-content .player-title{gap:8px}
 #game-content .floor{gap:6px}
 #game-content .factories,#game-content .factories.many{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 4px}
 #game-content #opponents{grid-template-columns:minmax(0,1fr)}
 #game-content .compact{--tile:clamp(22px,6.5vw,30px)}
}
