@import"https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700;800&family=Noto+Serif+TC:wght@600;700;900&display=swap";:root{font-family:Noto Sans TC,Microsoft JhengHei,sans-serif;color:#f3ead7;background:#05090a;font-synthesis:none;--gold: #d9bd78;--panel: rgba(5, 18, 23, .93);--line: rgba(202, 166, 91, .38)}*{box-sizing:border-box}button{font:inherit}html,body,#root{margin:0;width:100%;height:100%;overflow:hidden}body{min-width:320px;min-height:100vh;-webkit-font-smoothing:antialiased;background:#020506}button:focus-visible{outline:2px solid #fff2b8;outline-offset:2px}.game-shell{width:100vw;height:100dvh;min-height:390px;position:relative;overflow:hidden;isolation:isolate;background:#081014}.game-shell:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;box-shadow:inset 0 0 90px 34px #000000db}.battlefield-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-2;background:#20281f url(/assets/battlefield-bg.png) center/cover no-repeat;filter:brightness(.68) saturate(.78) contrast(1.08);transform:scale(1.03)}.top-hud{position:absolute;inset:0 0 auto;height:clamp(66px,10.7vh,106px);z-index:30;display:flex;justify-content:center;pointer-events:none}.menu-button{pointer-events:auto;position:absolute;left:3.6%;top:14%;width:clamp(54px,5.8vw,88px);aspect-ratio:1.05;border:1px solid var(--line);border-radius:12px;background:#080f11e6;color:#f8edd1;display:grid;place-items:center;box-shadow:0 5px 18px #0009}.team-banner{position:absolute;top:0;width:34%;height:88%;display:flex;align-items:center;justify-content:center;gap:clamp(16px,2.4vw,42px);padding:0 6%;font:700 clamp(15px,1.25vw,24px)/1 "Noto Serif TC",serif;pointer-events:auto;box-shadow:0 5px 18px #0008}.team-banner.blue{left:18.5%;background:linear-gradient(105deg,#092444f5,#0c4f8eeb);clip-path:polygon(0 0,100% 0,87% 100%,12% 100%)}.team-banner.red{right:18.5%;flex-direction:row-reverse;background:linear-gradient(255deg,#461110f5,#952721eb);clip-path:polygon(0 0,100% 0,88% 100%,13% 100%)}.initiative-portraits{display:flex;align-items:center;gap:clamp(2px,.5vw,8px)}.mini-portrait{position:relative;width:clamp(42px,4.25vw,68px);aspect-ratio:1;border-radius:50%;border:2px solid #8d7549;background:#132329;box-shadow:0 3px 8px #000a;transition:transform .18s ease}.mini-portrait img{width:100%;height:100%;object-fit:cover;object-position:top center;border-radius:inherit}.mini-portrait span{position:absolute;left:-4px;bottom:-5px;min-width:20px;height:20px;padding:0 4px;border-radius:50%;background:#061116;border:1px solid #e3cc8d;display:grid;place-items:center;font:700 11px/1 sans-serif}.mini-portrait.active{transform:translateY(5px) scale(1.09);box-shadow:0 0 0 3px #f8dc7d,0 0 22px #ffe07f88}.mini-portrait.down{filter:grayscale(1) brightness(.5)}.round-display{pointer-events:auto;position:absolute;z-index:4;top:0;left:50%;transform:translate(-50%);width:clamp(92px,10vw,152px);min-height:99%;background:#070f11f5;border:1px solid var(--line);border-top:0;border-radius:0 0 17px 17px;display:flex;flex-direction:column;justify-content:center;align-items:center;box-shadow:0 8px 16px #000b}.round-display b{font:800 clamp(20px,1.9vw,32px)/1.1 "Noto Serif TC",serif;color:#fff4d2}.round-display span{font-weight:700;font-size:clamp(11px,1vw,16px);color:#e4d4ad;margin-top:5px}.round-display svg{color:var(--gold)}.hud-card{background:var(--panel);border:1px solid var(--line);border-radius:11px;box-shadow:0 8px 25px #0009,inset 0 0 28px #18484a1a;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hud-card h2{margin:0;color:#f1e2b9;font:800 clamp(16px,1.35vw,23px)/1.2 "Noto Serif TC",serif}.left-hud{position:absolute;z-index:20;left:3.6%;top:18%;width:clamp(178px,16vw,272px);display:flex;flex-direction:column;gap:clamp(9px,1.6vh,17px)}.victory-card{padding:clamp(13px,1.4vw,21px)}.victory-card p{margin:10px 0 0;font-size:clamp(12px,1vw,17px);line-height:1.45;color:#f2f2ea}.secondary-button,.gold-button{border:1px solid rgba(215,181,105,.48);border-radius:11px;background:#0d1617f0;color:#f3e6c4;min-height:clamp(39px,5vh,54px);padding:0 18px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:9px;box-shadow:0 5px 12px #0008;cursor:pointer}.secondary-button:hover,.gold-button:hover{border-color:var(--gold);color:#fff7df}.legend-card{padding:clamp(13px,1.3vw,20px)}.legend-card ul{list-style:none;padding:0;margin:13px 0 0;display:grid;gap:clamp(5px,.75vh,9px)}.legend-card li{display:flex;align-items:center;gap:10px;font-size:clamp(10px,.86vw,15px)}.legend-swatch{width:21px;height:21px;border-radius:2px;border:1px solid currentColor;display:inline-block;flex:0 0 auto}.legend-swatch.move{color:#67db70;background:#3ca34caa}.legend-swatch.difficult{color:#ffd84d;background:#b1932faa}.legend-swatch.blocked{color:#e45858;background:#913838aa}.legend-swatch.half{color:#84d7e8;background:#3c7786cc}.legend-swatch.three-quarter{color:#4e9be7;background:#285f97cc}.legend-swatch.hidden{color:#aaa;background:#4b4f50cc}.memory-ring{width:21px;height:21px;border:2px dashed #eee;border-radius:50%;display:inline-block}.board-stage{position:absolute;z-index:5;left:19.5%;right:18.5%;top:12.7%;bottom:14.5%;display:grid;place-items:center;overflow:hidden}.board-grid{position:relative;display:grid;grid-template-columns:repeat(18,1fr);grid-template-rows:repeat(12,1fr);width:calc(min(66vw,119vh) * var(--board-scale));aspect-ratio:18/12;transition:width .22s ease;filter:drop-shadow(0 12px 28px #0008)}.grid-cell{border:1px solid rgba(198,208,191,.25);background:#373f3529;position:relative;padding:0;min-width:0;min-height:0}.grid-cell:not(:disabled){cursor:pointer}.grid-cell.terrain-void{background:#000000a3;border:0;pointer-events:none}.grid-cell.terrain-difficult{background:#b1953045;border-color:#ffd95094}.grid-cell.terrain-wall{background:#7e232394;border-color:#d85757ae}.grid-cell.terrain-half{background:#2e6b7794;border-color:#72d1e4bc}.grid-cell.terrain-three-quarter{background:#265089a6;border-color:#569fefc9}.grid-cell.reachable{background:#2aae4666;border-color:#69f17ed1;box-shadow:inset 0 0 8px #46e5642e}.grid-cell.reachable:hover{background:#6ed1498a;box-shadow:inset 0 0 0 2px #effb6d}.terrain-cost{position:absolute;right:3px;bottom:1px;color:#ffe87c;font-size:9px;font-weight:800}.unit-token{align-self:center;justify-self:center;position:relative;z-index:10;width:82%;aspect-ratio:1;padding:0;border-radius:50%;border:3px solid var(--unit-theme);background:#101b1b;box-shadow:0 0 0 3px #0009,0 7px 10px #000a;transition:transform .18s ease,filter .18s ease}.unit-token img{width:100%;height:100%;object-fit:cover;object-position:top center;border-radius:50%;display:block}.unit-token.blue{box-shadow:0 0 0 3px #198ee9,0 7px 10px #000a}.unit-token.red{box-shadow:0 0 0 3px #e34838,0 7px 10px #000a}.unit-token:hover,.unit-token.selected{transform:translateY(-3px) scale(1.08);z-index:15}.unit-token.active{animation:activePulse 1.8s ease-in-out infinite}.unit-token.legal-target{box-shadow:0 0 0 4px #ff4438,0 0 20px #ff4f42d9;animation:targetPulse 1s ease-in-out infinite}.unit-token.memory{opacity:.45;filter:grayscale(.7) contrast(.8);border-style:dashed}.unit-token.down{filter:grayscale(1) brightness(.4);transform:rotate(90deg) scale(.85)}.token-hp{position:absolute;right:-6px;bottom:-5px;min-width:20px;height:20px;border-radius:10px;padding:0 4px;background:#0b1416;border:1px solid #f1d996;color:#fff;display:grid;place-items:center;font-size:10px;font-weight:800}.memory-eye{position:absolute;left:-5px;top:-5px;width:20px;height:20px;border-radius:50%;background:#080b0c;display:grid;place-items:center;color:#ddd}@keyframes activePulse{50%{filter:drop-shadow(0 0 8px #74dcff)}}@keyframes targetPulse{50%{transform:scale(1.09)}}.right-hud{position:absolute;z-index:20;right:3.7%;top:16%;width:clamp(188px,14.5vw,250px);min-height:58%;padding:clamp(14px,1.25vw,21px);display:flex;flex-direction:column}.character-heading{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid rgba(216,186,119,.24)}.character-heading img{width:clamp(66px,5.6vw,92px);height:clamp(66px,5.6vw,92px);border-radius:50%;border:2px solid #b8944b;object-fit:cover;object-position:top center}.character-heading h2{font-size:clamp(18px,1.45vw,25px)}.character-heading p{margin:5px 0 0;font-size:clamp(9px,.76vw,13px);color:#d5d0c4;line-height:1.35}.stat-row{display:flex;justify-content:space-between;align-items:center;margin-top:clamp(10px,1.3vh,16px);font-size:clamp(13px,1vw,18px)}.stat-row b{color:#fff}.hp-track{height:9px;border-radius:8px;background:#1a2424;overflow:hidden;margin-top:6px}.hp-track i{display:block;height:100%;border-radius:inherit;background:#36d45b;transition:width .3s ease}.cover-note{margin-top:13px;padding:8px 9px;border:1px solid #46697a;border-radius:7px;background:#172e39;display:flex;align-items:center;gap:7px;font-size:12px}.status-section{margin-top:16px;padding-top:14px;border-top:1px solid rgba(216,186,119,.24);flex:1}.status-section h3{margin:0;color:#e8ca80;font:700 clamp(13px,1vw,17px)/1.2 "Noto Serif TC",serif}.status-section p{margin:10px 0;font-size:clamp(11px,.85vw,14px)}.wide{width:100%}.bottom-actions{position:absolute;z-index:30;inset:auto 3.7% 2.2%;height:clamp(62px,11.2vh,105px);display:flex;align-items:stretch;gap:clamp(14px,2vw,32px)}.bottom-actions button{color:#f2ead9;background:#041116f2;border:1px solid rgba(194,159,82,.36);border-radius:11px;box-shadow:0 6px 14px #000a;cursor:pointer}.bottom-actions button:disabled{opacity:.42;cursor:not-allowed}.end-turn-button{width:clamp(132px,13vw,210px);display:flex;align-items:center;justify-content:center;gap:10px;color:#f4dc96!important;background:linear-gradient(#3b2c12,#201708)!important;border:2px solid #98743b!important;font:800 clamp(14px,1.3vw,23px)/1 "Noto Serif TC",serif!important}.action-group{flex:1;display:grid;grid-template-columns:repeat(5,minmax(68px,1fr));gap:7px}.action-group button,.utility-group button{min-width:0;padding:7px 5px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;position:relative}.action-group button span,.utility-group button span{font-size:clamp(10px,1vw,17px)}.action-group button svg,.utility-group button svg{color:#e4d5ad}.action-group button.active{background:linear-gradient(#0c4779,#072641);border-color:#54b5ff;box-shadow:0 0 0 1px #54b5ff,0 0 16px #118de566}.action-group button.active svg,.action-group button.active span{color:#92d3ff}.action-group small{position:absolute;right:7px;top:5px;font-size:9px;color:#86cdfb}.utility-group{width:clamp(156px,17vw,276px);display:grid;grid-template-columns:1fr 1fr;gap:7px}.ability-drawer{position:absolute;z-index:40;left:33%;bottom:14%;width:clamp(330px,36vw,560px);padding:10px}.drawer-heading{display:flex;justify-content:space-between;align-items:center;padding:4px 6px 10px;color:#f1d995;font-weight:800}.drawer-heading>span{display:flex;align-items:center;gap:8px}.icon-button{border:0;color:#eee;background:transparent;display:grid;place-items:center;cursor:pointer}.ability-drawer>button{width:100%;border:1px solid rgba(206,174,102,.25);border-radius:8px;background:#0b1b20;color:#eee;padding:10px;display:flex;align-items:center;gap:10px;text-align:left;margin-top:7px}.ability-drawer>button>span{flex:1;display:grid;gap:3px}.ability-drawer small{color:#b9c0bc;font-size:11px}.ability-drawer em{color:#d9be79;font-style:normal;font-size:10px}.modal-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;background:#000608c7;display:grid;place-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:24px}.modal-card{width:min(470px,92vw);max-height:86vh;overflow:auto;position:relative;background:#07161b;border:1px solid rgba(215,177,94,.58);border-radius:15px;box-shadow:0 22px 70px #000,inset 0 0 36px #15576c1c;padding:27px}.modal-close{position:absolute;right:14px;top:14px}.modal-kicker{color:#d4b46b;text-transform:uppercase;letter-spacing:.14em;font-size:11px;font-weight:800;margin-bottom:7px}.modal-card h2{margin:0;font:800 27px/1.25 "Noto Serif TC",serif;color:#f5e7c2}.modal-card>p{color:#bac2bf;line-height:1.6;font-size:14px}.gold-button{background:linear-gradient(#4a3819,#251a0a);border-color:#b68e46;margin-top:17px}.gold-button:disabled{opacity:.4;cursor:not-allowed}.game-menu-modal{width:min(390px,92vw)}.game-menu-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-top:16px}.game-menu-grid button{width:100%;justify-content:flex-start}.roster-modal{width:min(680px,92vw)}.roster-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}.roster-grid button{border:1px solid #32454a;border-radius:10px;min-height:80px;padding:8px;background:#0b1a1f;color:#fff;display:flex;align-items:center;gap:10px;text-align:left}.roster-grid button.selected{border-color:#e1bd66;background:#19251f}.roster-grid img{width:62px;height:62px;object-fit:cover;object-position:top center;border-radius:50%}.roster-grid span{flex:1;font-weight:800}.roster-grid small{display:block;margin-top:4px;font-size:10px;color:#aeb8b4;font-weight:400}.info-list{margin-top:18px;border-top:1px solid #263b3f}.info-list p{margin:0;padding:11px 0;border-bottom:1px solid #263b3f;color:#d9dfdc}.detail-hero{display:flex;align-items:center;gap:18px}.detail-hero img{width:110px;height:110px;border-radius:50%;object-fit:cover;object-position:top center;border:2px solid #bd9850}.detail-hero p{margin:5px 0;color:#bfc6c2}.detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0}.detail-stats span{border:1px solid #294047;border-radius:8px;padding:11px;display:flex;justify-content:space-between}.detail-modal h3{color:#d8bc78}.log-modal ol{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:7px}.log-modal li{display:flex;gap:10px;align-items:center;padding:10px;border-radius:8px;background:#0d2025;color:#d9dfdc;font-size:13px}.log-modal li span{width:25px;height:25px;border-radius:50%;background:#27383b;display:grid;place-items:center;color:#d7bd7b;flex:0 0 auto}.dice-modal{text-align:center;width:min(430px,92vw)}.dice-target{margin:8px 0 14px!important}.d20{width:108px;height:108px;margin:9px auto 14px;position:relative;display:grid;place-items:center;color:#c99e4f}.d20 span{position:absolute;width:56px;height:56px;border-radius:50%;background:#112831;border:2px solid #d9bd78;display:grid;place-items:center;font:900 28px/1 "Noto Serif TC",serif;color:#fff1bd}.d20.rolling{animation:diceRoll .17s linear infinite}@keyframes diceRoll{to{transform:rotate(360deg) scale(1.06)}}.dice-equation{display:flex;justify-content:center;align-items:center;gap:12px;font-size:19px}.dice-equation span{min-width:44px;padding:7px;background:#10242a;border-radius:6px}.dice-equation strong{color:#f8db80;font-size:27px}.outcome{margin:15px 0 3px;font:900 24px/1.2 "Noto Serif TC",serif}.outcome.hit{color:#75e58f}.outcome.miss{color:#ee756b}.damage-result{margin-top:15px;display:flex;flex-direction:column;color:#d5c9a8}.damage-result strong{font-size:46px;color:#ffcf65}.handoff-screen{position:fixed;z-index:120;top:0;right:0;bottom:0;left:0;background:#07141a url(/assets/battlefield-bg.png) center/cover no-repeat;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.handoff-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#020a0de6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.handoff-screen>*{position:relative;z-index:1}.handoff-emblem{width:94px;height:94px;border-radius:50%;border:2px solid #d3b66d;display:grid;place-items:center;color:#d3b66d;box-shadow:0 0 30px #d3b6633}.handoff-screen p{margin:25px 0 0;color:#aebcba}.handoff-screen h2{margin:5px 0;font:900 36px/1.2 "Noto Serif TC",serif}.handoff-screen.blue h2{color:#74c6ff}.handoff-screen.red h2{color:#f18176}.handoff-screen span{color:#ded6c1}.handoff-screen .gold-button{min-width:210px}.portrait-warning{display:none}@media(max-width:1100px)and (orientation:landscape){.left-hud{left:1.7%;width:164px;top:17%}.right-hud{right:1.7%;width:180px;top:15%;min-height:59%}.board-stage{left:19%;right:18%}.bottom-actions{left:1.7%;right:1.7%;gap:8px}.team-banner{width:36%}.team-banner.blue{left:15.5%}.team-banner.red{right:15.5%}.legend-card ul{gap:4px}.legend-swatch,.memory-ring{width:16px;height:16px}.character-heading img{width:52px;height:52px}.character-heading{gap:7px;padding-bottom:7px}.status-section{margin-top:8px;padding-top:8px}.stat-row{margin-top:7px}.action-group{gap:4px}.action-group button span,.utility-group button span{font-size:10px}.bottom-actions svg{width:22px;height:22px}}@media(max-height:530px)and (orientation:landscape){.left-hud{top:17.5%;gap:6px}.legend-card{padding:9px 11px}.legend-card ul{margin-top:7px}.victory-card{padding:9px 11px}.victory-card p{margin-top:5px}.right-hud{padding:10px}.secondary-button{min-height:34px}.bottom-actions{bottom:1.2%}.board-stage{bottom:15.2%}}@media(orientation:portrait){.game-shell>*:not(.portrait-warning){visibility:hidden}.portrait-warning{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:30px;color:#efdfb3;background:#071419 url(/assets/battlefield-bg.png) center/cover no-repeat}.portrait-warning:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#030b0ee0}.portrait-warning>*{position:relative}.portrait-warning h2{margin:17px 0 6px;font:800 26px/1.2 "Noto Serif TC",serif}.portrait-warning p{margin:0;color:#bfc8c5}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.battlefield-backdrop{filter:brightness(.76) saturate(.8) contrast(1.07)}.grid-cell.terrain-void{background:transparent}@media(max-height:530px)and (orientation:landscape){.left-hud{top:15.5%;gap:4px}.left-hud h2{font-size:13px}.legend-card{padding:7px 9px}.legend-card ul{margin-top:5px;gap:2px}.legend-card li{font-size:9px;gap:6px}.legend-card svg{width:13px;height:13px}.legend-swatch,.memory-ring{width:12px;height:12px}.victory-card{padding:7px 9px}.victory-card p{margin-top:3px;font-size:9px}.right-hud{top:13.5%;bottom:15.5%;min-height:0;padding:8px}.character-heading img{width:44px;height:44px}.character-heading h2{font-size:14px}.character-heading p{font-size:8px}.stat-row{margin-top:4px;font-size:11px}.hp-track{height:6px;margin-top:3px}.status-section{margin-top:5px;padding-top:5px}.status-section h3{font-size:11px}.status-section p{margin:4px 0;font-size:9px}.secondary-button{min-height:29px;font-size:10px}}.grid-cell.transform-option{background:#34bb8050;border-color:#6cffc8;box-shadow:inset 0 0 0 2px #6cffc899,0 0 12px #24d99588}.grid-cell.transform-selected{background:#e8c65570;border-color:#fff2a2;box-shadow:inset 0 0 0 3px #ffe47c,0 0 18px #ffe47caa}.unit-token[style*="span 2"]{width:88%;height:88%;aspect-ratio:auto;border-radius:24%;overflow:visible}.unit-token[style*="span 2"] img{border-radius:22%}.sanctuary-retarget-panel{border-color:#73cbff;box-shadow:0 0 18px #42aee855}.unit-token.legal-target{animation:none!important}.unit-token.legal-target:hover,.unit-token.legal-target:focus-visible{transform:translateY(-2px) scale(1.05)}.legend-swatch.spell{color:#69d7ff;background:#237ba4aa}.grid-cell.spell-range{background:#1f84b054;border-color:#63d7ffc7;box-shadow:inset 0 0 8px #48c9ff30;cursor:crosshair}.grid-cell.area-range{background:#7c4ec05c;border-color:#be89ffcc;box-shadow:inset 0 0 10px #c37cff2b;cursor:crosshair}.grid-cell.spell-range:hover,.grid-cell.area-range:hover{box-shadow:inset 0 0 0 2px #fff0a3,inset 0 0 12px #5edaff66}.action-preview{position:absolute;z-index:28;left:50%;top:12.8%;transform:translate(-50%);min-width:270px;max-width:42vw;min-height:32px;padding:7px 14px;border:1px solid #64c9ee8a;border-radius:17px;background:#061c25f0;color:#d9f5ff;display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px;box-shadow:0 6px 18px #000a}.action-preview span{color:#f2d689;margin-left:5px}.resource-strip{margin-top:10px;padding:7px 8px;border:1px solid rgba(214,176,91,.36);border-radius:7px;background:#3d2c1161;color:#f0d88f;font-size:11px;line-height:1.35}.ability-drawer{max-height:min(66vh,620px);overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#8c733d #0b1b20}.ability-drawer>button:disabled{opacity:.56;cursor:not-allowed}.ability-drawer .support-note{color:#e3a576;font-weight:700}.d20-row{display:flex;align-items:center;justify-content:center;gap:12px;min-height:118px}.d20-row .d20{margin:3px 0 8px;transition:opacity .26s ease,filter .26s ease,transform .26s ease}.d20-row.rolling .d20{animation:diceRoll .17s linear infinite}.d20-row.rolling .d20:nth-child(2){animation-direction:reverse}.d20.chosen{transform:scale(1.1);filter:drop-shadow(0 0 12px #ffd96d);opacity:1}.d20.chosen span{color:#fff6cd;border-color:#ffe48a;background:#294857;box-shadow:0 0 18px #e7bd55a0}.d20.discarded{opacity:.28;filter:grayscale(.75);transform:scale(.88)}.roll-mode-label{display:inline-flex;padding:5px 10px;border-radius:14px;background:#102a35;color:#9fdff6;font-size:11px}.dice-dc{margin:8px 0!important;color:#d9c58e!important;font-size:12px!important}.effect-dice{width:150px;min-height:126px;margin:10px auto;color:#c99e4f;display:flex;flex-direction:column;align-items:center;justify-content:center}.effect-dice strong{color:#fff0b5;font-size:23px}.effect-dice.rolling{animation:diceRoll .17s linear infinite}.reaction-button{min-height:42px;margin-top:10px;border:1px solid #70b7df;border-radius:9px;background:linear-gradient(#173c52,#0b2230);color:#d9f3ff;font-weight:800;cursor:pointer}.favored-result{color:#f1d576!important;font-size:12px!important}.damage-result small{margin-top:4px;color:#9ec2cf}@media(max-height:530px)and (orientation:landscape){.action-preview{top:13.5%;min-height:24px;padding:4px 10px;font-size:9px}.ability-drawer{left:25%;bottom:15%;width:50vw;max-height:64vh}.ability-drawer>button{padding:6px 8px;margin-top:4px}.ability-drawer small{font-size:9px}.resource-strip{margin-top:5px;padding:4px 6px;font-size:9px}}.board-stage{touch-action:none;user-select:none;-webkit-user-select:none;overscroll-behavior:contain}.board-stage *,.board-stage img{user-select:none;-webkit-user-select:none;-webkit-user-drag:none}.board-stage.zoomed{cursor:grab}.board-stage.dragging{cursor:grabbing}.board-stage.dragging *{pointer-events:none}.board-grid{transform:translate3d(var(--pan-x, 0px),var(--pan-y, 0px),0);transition:width .22s ease,transform 70ms linear;will-change:width,transform}.grid-cell.area-selected{background:#e8ab368a!important;border-color:#ffe38b!important;box-shadow:inset 0 0 0 2px #fff2b2,0 0 14px #dc9e33!important}.unit-token.area-target{box-shadow:0 0 0 4px #d88cff,0 0 25px #a84dff!important}.action-preview button{margin-left:7px;padding:4px 10px;border:1px solid #d5b66d;border-radius:13px;background:#241e13;color:#f7dfa1;font-weight:800;cursor:pointer}.area-confirm-panel{position:absolute;z-index:29;left:50%;bottom:15.5%;transform:translate(-50%);min-width:390px;padding:9px 12px;display:flex;align-items:center;gap:9px;box-shadow:0 8px 26px #000c}.area-confirm-panel div{flex:1;display:flex;flex-direction:column}.area-confirm-panel b{color:#ffe5a0}.area-confirm-panel span{color:#a9cbd5;font-size:11px}.area-confirm-panel button{min-height:34px;padding:6px 12px}.back-button{min-height:42px;margin-top:9px;border:1px solid #66828d;border-radius:9px;background:linear-gradient(#162c35,#0b1b21);color:#d2e2e7;font-weight:800;cursor:pointer}.back-button.wide{width:100%}.confirm-copy{color:#b7d0d7!important;font-size:12px!important}@media(max-height:530px)and (orientation:landscape){.area-confirm-panel{bottom:14.5%;min-width:330px;padding:5px 8px}.area-confirm-panel button{min-height:28px;padding:4px 8px;font-size:10px}.action-preview button{padding:2px 7px;font-size:9px}}.grid-cell.area-preview{background:#ab6ce561!important;border-color:#e1b8ffeb!important;box-shadow:inset 0 0 0 1px #f1d7ff,inset 0 0 13px #c06cff66!important}.unit-token.area-preview-target{box-shadow:0 0 0 3px #b978db,0 0 18px #a44bdd!important}.move-reset-button{position:absolute;z-index:30;left:21%;bottom:15.6%;min-height:38px;padding:7px 13px;border:1px solid #dfbd70;border-radius:8px;background:linear-gradient(#342b19,#17140d);color:#ffe4a1;display:inline-flex;align-items:center;gap:7px;font-weight:850;box-shadow:0 6px 18px #000b;cursor:pointer}.move-reset-button:hover{border-color:#ffe3a0;background:linear-gradient(#47391e,#211a0e)}.area-confirm-panel span{max-width:215px}@media(max-height:530px)and (orientation:landscape){.move-reset-button{left:24.5%;bottom:14.8%;min-height:29px;padding:4px 8px;font-size:9px}.grid-cell.area-preview{box-shadow:inset 0 0 0 1px #f1d7ff!important}}.downed-turn-notice{position:absolute;z-index:31;left:50%;top:13%;transform:translate(-50%);min-width:310px;padding:8px 14px;border:1px solid #c75f61;border-radius:9px;background:#2f0c10f2;color:#ffd4d0;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 8px 24px #000b}.downed-turn-notice b{color:#ff9b96}.downed-turn-notice span{color:#e9c4c1;font-size:11px}.action-group button:disabled{filter:grayscale(.72);opacity:.42;cursor:not-allowed}.passive-detail-list{display:grid;gap:7px;margin-top:6px}.passive-detail-list article{padding:8px 10px;border:1px solid rgba(105,173,192,.25);border-radius:7px;background:#0a222a94;display:grid;gap:3px}.passive-detail-list b{color:#f0d78f;font-size:12px}.passive-detail-list span{color:#b9d0d6;font-size:11px;line-height:1.45}@media(max-height:530px)and (orientation:landscape){.downed-turn-notice{top:13.5%;min-width:265px;padding:5px 9px;font-size:10px}.downed-turn-notice span{font-size:9px}.passive-detail-list article{padding:5px 7px}}.grid-cell.move-route{background:#3ac5f957!important;border-color:#9af0ff!important;box-shadow:inset 0 0 0 2px #e6fcff,inset 0 0 14px #22b8e480!important;z-index:2}.grid-cell.manual-route{background:#ffba466b!important;border-color:#ffe29a!important;box-shadow:inset 0 0 0 2px #fff1bd,inset 0 0 14px #e89d2480!important}.move-route-step{position:absolute;top:2px;right:2px;display:grid;width:17px;height:17px;place-items:center;border-radius:50%;background:#09293c;border:1px solid #dffbff;color:#fff;font-size:10px;font-weight:800;line-height:1}.manual-route .move-route-step{background:#5b3709;border-color:#fff0be}.move-confirm-panel{z-index:35}.move-confirm-panel button:disabled{cursor:not-allowed;opacity:.42}.setup-shell{min-height:100vh;display:grid;place-items:center;padding:34px;background:radial-gradient(circle at 50% 0%,#183b4b,#07131d 52%,#03070b);color:#f6ead0}.setup-card{width:min(1120px,100%);max-height:calc(100vh - 68px);overflow:auto;padding:30px;border:1px solid #8e7240;background:#07131df5}.setup-card h1{margin:8px 0;font-size:clamp(26px,3.2vw,42px)}.setup-card>p{color:#c9d5d5;max-width:760px}.setup-progress{display:flex;gap:12px;margin-bottom:22px;color:#7e9399;font-weight:800}.setup-progress span{border-bottom:2px solid transparent;padding-bottom:6px}.setup-progress .active{color:#ffe7a6;border-color:#dfb755}.setup-roster{max-height:none;margin:22px 0}.setup-mode-tabs{display:flex;gap:10px;margin:18px 0 12px}.setup-mode-tabs button,.map-plan button{border:1px solid #546c72;background:#102731;color:#d9e8e6;border-radius:7px;padding:9px 12px}.setup-mode-tabs button.active{border-color:#dfb755;color:#ffe7a6;background:#3c2f18}.map-builder{display:grid;grid-template-columns:minmax(210px,.72fr) 1.4fr;gap:16px;margin:16px 0}.tile-library{display:grid;gap:8px}.tile-library button{text-align:left;border:1px solid #42606a;color:#e6f2ef;background:#102631;border-radius:8px;padding:11px}.tile-library button:disabled{opacity:.45}.tile-library b,.tile-library span,.map-plan article b,.map-plan article span{display:block}.tile-library span,.map-plan article span{margin-top:4px;color:#91afb0;font-size:12px}.map-plan{display:grid;grid-template-columns:repeat(5,minmax(105px,1fr));gap:8px}.map-plan article{min-height:126px;padding:10px;border:1px dashed #597176;background:#0a1a23;border-radius:8px}.map-plan article.placed{border-style:solid;border-color:#be9950;background:#172c2e}.map-plan small{display:block;color:#9db2b1;font-size:11px;margin-bottom:9px}.map-plan article>div{display:grid;gap:5px;margin-top:11px}.map-plan button{width:100%;padding:5px;font-size:11px}.connection-note{color:#9fb8b9;font-size:13px}.initiative-results{display:grid;gap:10px;margin:20px 0}.initiative-results article{display:grid;gap:5px;padding:13px;border-left:3px solid #d9af51;background:#0c2029}.initiative-results span{color:#e8ca81}.initiative-results small{color:#b7c9c7}.initiative-results strong{color:#fff0bc}.placement-banner{position:fixed;z-index:28;top:110px;left:50%;transform:translate(-50%);width:min(470px,56vw);padding:14px 18px;text-align:center;border-color:#d6ab4c}.placement-banner span,.placement-banner b,.placement-banner p{display:block}.placement-banner span{color:#ddbc72;font-size:12px}.placement-banner b{margin:4px 0;font-size:20px}.placement-banner p{margin:0;color:#c6d6d3;font-size:12px}@media(max-width:760px),(max-height:520px){.setup-shell{padding:12px;place-items:start center}.setup-card{max-height:none;padding:18px}.map-builder{grid-template-columns:1fr}.map-plan{grid-template-columns:repeat(5,minmax(92px,1fr));overflow-x:auto}.setup-roster{grid-template-columns:repeat(2,minmax(190px,1fr))}.placement-banner{top:64px;width:min(500px,76vw)}}.terrain-composer{grid-template-columns:minmax(255px,.8fr) 1.5fr;align-items:start}.tile-tier{display:grid;gap:6px;padding:8px 0 12px;border-bottom:1px solid #29434b}.tile-tier:last-child{border:0}.tile-tier h3{margin:0;color:#e6c879;font-size:13px}.tile-library .tile-tier>button{display:flex;align-items:center;gap:9px;padding:8px}.terrain-tile-preview{display:grid;flex:0 0 auto;width:54px;aspect-ratio:1;overflow:hidden;border:1px solid #7c8a83;background:#304239}.terrain-tile-preview.small{width:40px}.terrain-tile-preview.large{width:66px}.terrain-tile-preview i{border:.5px solid #ffffff18}.preview-normal{background:#587957}.preview-difficult{background:#9b8842}.preview-wall{background:#2e3434}.preview-half{background:#64878b}.preview-three-quarter{background:#425b82}.composer-hint{margin:0 0 8px;color:#b7c8c3;font-size:13px}.map-preview-canvas{min-height:400px;grid-template-columns:repeat(3,1fr)!important;grid-template-rows:repeat(2,1fr);padding:14px;overflow:visible;background:radial-gradient(circle at 50% 45%,#163333,#091923 70%);border:1px solid #8b7644}.map-preview-canvas article{min-height:130px;padding:6px;border:2px dashed #b79a52;background:#0d2630;transition:.16s}.map-preview-canvas article.placed{border-style:solid;background:#143031}.map-preview-canvas article.small{transform:scale(.82)}.map-preview-canvas article.large{transform:scale(1.08);z-index:1}.map-preview-canvas article>div{display:grid;justify-items:center;gap:4px;height:100%;cursor:grab}.map-preview-canvas article>div:active{cursor:grabbing}.map-preview-canvas .terrain-tile-preview{width:58px}.map-preview-canvas article.small .terrain-tile-preview{width:45px}.map-preview-canvas article.large .terrain-tile-preview{width:72px}.map-preview-canvas small,.map-preview-canvas span{font-size:10px;color:#afc3bd}.map-preview-canvas b{font-size:12px;color:#f4dfaa}.map-preview-canvas nav{display:flex;gap:4px}.map-preview-canvas nav button{padding:4px 6px;border:1px solid #607575;border-radius:5px;background:#0b1e27;color:#dbe5da;font-size:10px}@media(max-width:760px),(max-height:520px){.terrain-composer{grid-template-columns:1fr}.tile-library{grid-template-columns:repeat(3,minmax(185px,1fr));overflow-x:auto}.tile-tier{min-width:185px}.map-preview-canvas{min-height:310px}.map-preview-canvas article{min-height:95px}}@media(max-width:760px),(max-height:520px){.free-library{flex-direction:column;max-height:none;overflow:hidden}.free-library-scroll{display:flex;gap:8px;max-height:180px;overflow:auto}.free-library-scroll>button{min-width:150px}.free-library .free-auto-button{min-height:44px}}.free-composer{display:grid;grid-template-columns:230px 1fr;gap:14px;margin-top:16px}.free-library{max-height:560px;overflow:auto;padding:12px;border:1px solid #7b6638;background:#091822}.free-library h2,.free-library h3{margin:0 0 8px}.free-library h3{color:#e5c36c;font-size:13px}.free-library section{display:grid;gap:6px;margin-bottom:12px}.free-library button{padding:9px;text-align:left;border:1px solid #405a62;background:#102832;color:#e8f0e5}.free-library button.selected{outline:2px solid #e8ba4e}.free-library button span{display:block;color:#91afb0;font-size:11px}.free-workspace{min-width:0}.free-workspace header,.free-workspace footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;background:#0b202a}.free-workspace header span.valid{color:#83df86}.free-workspace header span.invalid{color:#ef7068}.free-canvas{position:relative;height:540px;overflow:hidden;border:2px solid #886e38;background-color:#06141d;background-image:linear-gradient(#31505a55 1px,transparent 1px),linear-gradient(90deg,#31505a55 1px,transparent 1px);background-size:18px 18px}.free-tile{position:absolute;display:grid;border:2px solid #e6c05b;box-shadow:0 0 15px #e6c05b55;cursor:grab}.free-tile.ghost{opacity:.45;border-color:#ed6862}.free-tile i{border:.5px solid #ffffff16}.free-tile .terrain-normal{background:#587957}.free-tile .terrain-difficult{background:#a98d43}.free-tile .terrain-wall{background:#333b3c}.free-tile .terrain-half{background:#668d91}.free-tile .terrain-three-quarter{background:#45608a}@media(max-width:760px),(max-height:520px){.free-composer{grid-template-columns:1fr}.free-library{display:flex;gap:8px;max-height:180px;overflow:auto}.free-library section{min-width:150px}.free-canvas{height:360px}}.map-port{position:absolute;z-index:5;width:14px;height:14px;border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 12px currentColor,0 0 20px #fff8}.free-tile.ghost{opacity:.55;pointer-events:none}.tile-corner-controls{position:absolute;z-index:8;top:-30px;right:-2px;display:flex;gap:3px}.tile-corner-controls button{width:25px;height:25px;border:1px solid #e4bd58;border-radius:50%;background:#102834;color:#ffe5a1;font-weight:900}.free-tile:hover{outline:2px solid #f0c95b;z-index:7}.free-workspace header .invalid{color:#ff7770}.free-workspace header .valid{color:#91e98e}.free-composer{grid-template-columns:minmax(210px,260px) 1fr}.free-library{display:flex;flex-direction:column;gap:10px;overflow:hidden}.free-library-scroll{min-height:0;overflow:auto;display:grid;gap:6px;padding-right:2px;scrollbar-color:#8c733d #0b1b20}.free-library-scroll h2{margin:0 0 8px}.free-library .free-auto-button{flex:0 0 auto;width:100%;min-height:52px;display:inline-flex;justify-content:center;text-align:center}.free-library button{position:relative;display:grid;gap:4px;min-height:62px}.free-library button em{display:flex;gap:5px;margin-top:2px;font-style:normal}.free-library button em i{width:10px;height:10px;border:1px solid #fff9;border-radius:50%;box-shadow:0 0 9px currentColor}.free-canvas{min-height:560px;cursor:crosshair;-webkit-user-select:none;user-select:none;touch-action:none}.free-tile{z-index:3;-webkit-user-select:none;user-select:none}.free-tile.valid.ghost{opacity:.62;border-color:#86ef8a;box-shadow:0 0 22px #79ea7b88}.free-tile.invalid.ghost{opacity:.5;border-color:#ff6d66;box-shadow:0 0 22px #ff6d6688}.free-tile.ghost{pointer-events:none;z-index:6}.map-port{width:16px;height:16px;border:2px solid #fff;box-shadow:0 0 10px currentColor,0 0 22px currentColor,0 0 2px #fff inset}.map-port.linked{animation:portPulse 1s ease-in-out infinite alternate}@keyframes portPulse{0%{transform:translate(-50%,-50%) scale(1)}to{transform:translate(-50%,-50%) scale(1.25)}}.tile-corner-controls{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.tile-corner-controls button{position:absolute;z-index:9;width:28px;height:28px;display:grid;place-items:center;border:1px solid #e4bd58;border-radius:50%;background:#102834;color:#ffe5a1;font-size:16px;font-weight:900;pointer-events:auto}.tile-corner-controls .rotate{top:-17px;left:-17px}.tile-corner-controls .mirror{top:-17px;right:-17px}.tile-corner-controls .remove{right:-17px;bottom:-17px}.snap-hint{position:absolute;z-index:10;padding:4px 8px;border:1px solid #e4bd58;border-radius:6px;background:#07151dcc;color:#ffe5a1;font-size:12px;pointer-events:none}.link-spark{position:absolute;z-index:7;width:24px;height:24px;border:2px solid #e9cf75;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 20px #f4cf55;pointer-events:none}.free-tile.moving{z-index:8;cursor:grabbing;opacity:.8}.free-tile:not(.ghost){cursor:grab}.free-tile.invalid:not(.ghost){border-color:#ff6d66;box-shadow:0 0 18px #ff6d6688}.free-tile.valid:not(.ghost){border-color:#e6c05b}.free-tile.ghost.valid{cursor:none}.board-grid{grid-template-columns:repeat(var(--board-cols, 18),minmax(0,1fr));grid-template-rows:repeat(var(--board-rows, 12),minmax(0,1fr));width:calc(min(66vw,calc(72vh * var(--board-aspect, 1.5))) * var(--board-scale, 1));aspect-ratio:var(--board-aspect, 1.5)}.free-tile-art,.board-tile-art{width:100%;height:100%;object-fit:cover;transform-origin:center;pointer-events:none;-webkit-user-select:none;user-select:none}.free-tile-art{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.free-tile>i,.free-tile .map-port,.free-tile .tile-corner-controls{position:relative;z-index:1}.free-tile>i{background:transparent!important;box-shadow:inset 0 0 0 1px #e8f4e030}.free-tile>i.terrain-difficult{background:#d6b43d29!important}.free-tile>i.terrain-wall{background:#79262247!important}.free-tile>i.terrain-half{background:#449eae29!important}.free-tile>i.terrain-three-quarter{background:#406fb233!important}.board-tile-art{z-index:0;align-self:stretch;justify-self:stretch;min-width:0;min-height:0;border-radius:2px}.board-grid.has-tile-art .grid-cell{position:relative;z-index:1;background:#ffffff06;border-color:#e9f4e03d}.board-grid.has-tile-art .grid-cell.terrain-normal{background:#507e4c14}.board-grid.has-tile-art .grid-cell.terrain-difficult{background:#d6b43d2e}.board-grid.has-tile-art .grid-cell.terrain-wall{background:#80242461}.board-grid.has-tile-art .grid-cell.terrain-half{background:#3685943d}.board-grid.has-tile-art .grid-cell.terrain-three-quarter{background:#325b9a4d}.board-grid.has-tile-art .unit-token{z-index:12}.free-canvas-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:8px 10px;background:#081a23;border-left:2px solid #886e38;border-right:2px solid #886e38}.free-canvas-toolbar button{border:1px solid #7b6638;border-radius:8px;background:#102834;color:#f5dfaa;padding:5px 10px}.free-canvas-toolbar span{min-width:46px;color:#9fbec2;text-align:right;font-size:12px}.free-canvas{background-image:none!important;cursor:grab}.free-canvas.panning{cursor:grabbing}.free-canvas-world{position:absolute;left:0;top:0;width:1440px;height:1080px;transform:translate3d(var(--composer-pan-x, 0px),var(--composer-pan-y, 0px),0) scale(var(--composer-zoom, 1));transform-origin:0 0;background-image:linear-gradient(#31505a55 1px,transparent 1px),linear-gradient(90deg,#31505a55 1px,transparent 1px);background-size:18px 18px}.free-tile{box-sizing:border-box;overflow:visible}.free-tile>i{position:relative;z-index:1;min-width:0;min-height:0;aspect-ratio:1 / 1}.free-tile .map-port{position:absolute!important;z-index:7}.free-tile .tile-corner-controls{position:absolute!important;top:0;right:0;bottom:0;left:0;z-index:8}.free-tile .tile-corner-controls button{font-size:0}.free-tile .tile-corner-controls .rotate:before{content:"↻";font-size:15px}.free-tile .tile-corner-controls .mirror:before{content:"⇋";font-size:15px}.free-tile .tile-corner-controls .remove:before{content:"×";font-size:18px}.board-grid.has-tile-art.terrain-info-visible .grid-cell{border-color:#e6f8e657}.board-grid.has-tile-art.terrain-info-visible .grid-cell.terrain-normal{background:#23602d33}.board-grid.has-tile-art.terrain-info-visible .grid-cell.terrain-difficult{background:#c48e1870;box-shadow:inset 0 0 0 1px #ffdc5b59}.board-grid.has-tile-art.terrain-info-visible .grid-cell.terrain-wall{background:#7618189e;box-shadow:inset 0 0 0 1px #ff746461}.board-grid.has-tile-art.terrain-info-visible .grid-cell.terrain-half{background:#2984976b;box-shadow:inset 0 0 0 1px #6ee0f44d}.board-grid.has-tile-art.terrain-info-visible .grid-cell.terrain-three-quarter{background:#23529f80;box-shadow:inset 0 0 0 1px #75aeff52}.board-grid.has-tile-art.terrain-info-visible .terrain-cost{display:inline-grid;place-items:center;min-width:15px;height:15px;border-radius:999px;background:#171204c7;color:#ffe678;font-weight:900;text-shadow:0 1px 2px #000}.board-grid.has-tile-art.terrain-info-hidden .grid-cell.terrain-normal,.board-grid.has-tile-art.terrain-info-hidden .grid-cell.terrain-difficult,.board-grid.has-tile-art.terrain-info-hidden .grid-cell.terrain-wall,.board-grid.has-tile-art.terrain-info-hidden .grid-cell.terrain-half,.board-grid.has-tile-art.terrain-info-hidden .grid-cell.terrain-three-quarter{background:#ffffff04;box-shadow:none}.board-grid.has-tile-art.terrain-info-hidden .terrain-cost{display:none}@media(max-width:900px)and (orientation:landscape){:root{font-size:14px}html,body,#root{width:100%;height:100%;overflow:hidden}body{min-height:100dvh}.setup-shell{width:100vw;height:100dvh;min-height:0;padding:max(6px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));place-items:stretch;overflow:hidden}.setup-card{width:100%;height:100%;max-height:none;min-height:0;padding:10px 12px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.setup-progress{position:sticky;z-index:4;top:-10px;gap:10px;margin:-2px 0 6px;padding:6px 0 4px;background:#07131dfa;font-size:12px}.setup-progress span{padding-bottom:3px}.setup-title-row{align-items:center;gap:10px}.setup-title-row h1,.setup-section-heading h1{margin:2px 0 0;font-size:22px;line-height:1.05}.setup-title-row .modal-kicker,.setup-section-heading .modal-kicker{font-size:9px}.roster-count{min-width:52px;font-size:20px}.setup-roster{height:150px;margin:8px 0;grid-template-rows:repeat(2,1fr);grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(146px,27vw);gap:6px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;overscroll-behavior-inline:contain;scrollbar-width:thin}.setup-roster button{min-height:68px;padding:5px 7px;scroll-snap-align:start}.setup-roster img{width:48px;height:48px}.setup-roster span{font-size:14px}.setup-roster small{margin-top:2px;font-size:9px;line-height:1.2}.setup-options{grid-template-columns:1fr 1fr;gap:7px;margin:7px 0}.setup-options button{min-height:48px;padding:5px 9px;gap:7px}.setup-options button svg{width:20px;height:20px}.setup-options button b{font-size:14px}.setup-options button small{font-size:9px}.setup-start{min-height:44px;margin-top:4px;font-size:14px}.setup-section-heading{margin-bottom:5px}.setup-section-heading .secondary-button{min-height:44px}.setup-card:has(.free-composer){overflow:hidden}.free-composer{height:calc(100% - 67px);min-height:0;margin-top:5px;grid-template-columns:1fr;grid-template-rows:70px minmax(0,1fr);gap:7px}.free-library{min-width:0;max-height:none;padding:5px;flex-direction:row;align-items:stretch;gap:6px}.free-library-scroll{flex:1;display:flex;gap:6px;overflow-x:auto;overflow-y:hidden;padding:0 2px 2px 0}.free-library-scroll h2{display:none}.free-library-scroll>button{flex:0 0 136px;min-width:136px;min-height:56px;padding:5px 7px}.free-library button b{font-size:13px}.free-library button span{font-size:9px}.free-library button em{margin:0}.free-library .free-auto-button{flex:0 0 116px;width:116px;min-height:56px;margin:0;padding:5px 8px;font-size:12px}.free-workspace{min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto}.free-workspace header,.free-workspace footer{min-height:34px;padding:5px 8px;font-size:11px}.free-canvas-toolbar{min-height:38px;padding:3px 6px}.free-canvas-toolbar button{min-width:44px;min-height:32px;padding:3px 8px}.free-canvas{height:auto;min-height:0;touch-action:none}.tile-corner-controls button{width:44px;height:44px;border-width:2px}.tile-corner-controls .rotate{top:-24px;left:-24px}.tile-corner-controls .mirror{top:-24px;right:-24px}.tile-corner-controls .remove{right:-24px;bottom:-24px}.initiative-results{max-height:calc(100dvh - 132px);grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:8px 0;overflow:auto}.initiative-results article{min-width:0;padding:8px;gap:3px}.initiative-results b{font-size:12px}.initiative-results small{font-size:10px}.initiative-results strong{font-size:11px}.setup-footer-actions{position:sticky;bottom:-10px;padding:5px 0 2px;background:#07131dfa}.setup-footer-actions button{min-height:44px}.game-shell{width:100vw;height:100dvh;min-height:0}.top-hud{height:56px}.menu-button{left:max(6px,env(safe-area-inset-left));top:6px;width:44px;height:44px;aspect-ratio:auto;border-radius:9px}.menu-button svg{width:25px;height:25px}.team-banner{top:0;width:42%;height:54px;gap:7px;padding:0 8%;font-size:13px}.team-banner.blue{left:10%}.team-banner.red{right:10%}.initiative-portraits{gap:2px}.mini-portrait{width:35px;border-width:1px}.mini-portrait span{min-width:17px;height:17px;font-size:9px}.round-display{width:82px;min-height:56px;height:56px;border-radius:0 0 11px 11px}.round-display b{font-size:17px}.round-display span{margin-top:2px;font-size:9px}.round-display svg{width:14px;height:14px}.board-stage{left:max(2px,env(safe-area-inset-left));right:max(2px,env(safe-area-inset-right));top:56px;bottom:64px}.board-grid{width:calc(min(96vw,calc(79dvh * var(--board-aspect, 1.5))) * var(--board-scale, 1));max-width:none;max-height:none}.left-hud{z-index:23;left:max(6px,env(safe-area-inset-left));top:62px;width:174px}.victory-card{padding:6px 8px}.victory-card h2{font-size:13px}.team-score{margin-top:3px;display:flex;gap:8px}.team-score span,.team-score b{font-size:10px}.team-score b{display:inline}.right-hud{z-index:23;right:max(6px,env(safe-area-inset-right));top:62px;width:174px;min-height:0;max-height:82px;padding:6px 8px;display:grid;grid-template-columns:1fr 58px;grid-template-rows:42px 24px;gap:3px 7px;overflow:hidden}.right-hud .character-heading{min-width:0;padding:0;border:0;gap:6px}.right-hud .character-heading img{width:38px;height:38px}.right-hud .character-heading h2{margin:0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right-hud .character-heading p,.right-hud .stat-row{display:none}.right-hud .character-heading+.stat-row{display:flex;grid-column:1;grid-row:2;margin:0;font-size:11px}.right-hud .hp-track{grid-column:2;grid-row:1;align-self:center;height:7px;margin:0}.right-hud .resource-strip,.right-hud .cover-note,.right-hud .status-section{display:none}.right-hud>.secondary-button{grid-column:2;grid-row:2;min-height:24px;height:24px;padding:0 5px;border-radius:6px;font-size:10px}.bottom-actions{left:max(6px,env(safe-area-inset-left));right:max(6px,env(safe-area-inset-right));bottom:max(4px,env(safe-area-inset-bottom));height:56px;gap:6px}.action-group{order:1;grid-template-columns:repeat(3,minmax(72px,1fr));gap:6px}.end-turn-button{order:2;width:min(124px,22vw);min-width:104px;min-height:52px;padding:0 8px;gap:5px;font-size:14px!important}.bottom-actions button{min-height:52px;border-radius:9px}.action-group button{padding:4px 6px}.action-group button span{font-size:14px}.action-group button svg{width:23px;height:23px}.action-group small{top:3px;right:5px;font-size:9px}.placement-banner{top:58px;width:min(340px,52vw);padding:5px 10px}.placement-banner span{font-size:9px}.placement-banner b{margin:1px 0;font-size:14px}.placement-banner p{font-size:9px}.action-preview,.downed-turn-notice{top:58px;max-width:54vw;min-width:0;padding:5px 9px;font-size:10px}.action-preview span{font-size:9px}.action-preview button{min-width:44px;min-height:32px;margin-left:3px}.move-reset-button{left:max(8px,env(safe-area-inset-left));bottom:68px;min-height:44px}.area-confirm-panel{bottom:66px;width:min(620px,calc(100vw - 16px));min-width:0;padding:5px 7px}.area-confirm-panel button{min-width:44px;min-height:44px}.ability-drawer{left:max(6px,env(safe-area-inset-left));bottom:66px;width:min(560px,calc(100vw - 12px));max-height:calc(100dvh - 128px);padding:7px}.ability-drawer>button{min-height:44px;padding:6px 8px;margin-top:4px}.ability-drawer small{font-size:10px}.ability-drawer em{max-width:82px;font-size:9px;text-align:right}.drawer-heading{padding:2px 4px 5px}.icon-button{min-width:44px;min-height:44px}.modal-backdrop{padding:max(5px,env(safe-area-inset-top)) max(7px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left))}.modal-card{width:min(640px,96vw);max-height:calc(100dvh - 10px);padding:14px 16px;overscroll-behavior:contain}.modal-close{top:6px;right:6px;min-width:44px;min-height:44px}.modal-card h2{font-size:21px}.modal-card>p{margin:5px 0;font-size:12px;line-height:1.35}.game-menu-modal{width:min(340px,96vw);padding:8px 12px}.game-menu-modal .modal-kicker{margin-bottom:2px}.game-menu-modal h2{font-size:18px}.game-menu-grid{grid-template-columns:minmax(0,1fr);gap:3px;margin-top:6px}.game-menu-grid button{min-height:38px;padding:3px 10px;font-size:11px;justify-content:flex-start}.detail-hero img{width:66px;height:66px}.detail-stats{margin:8px 0;gap:5px}.detail-stats span{padding:6px 8px;font-size:11px}.detail-modal h3{margin:8px 0 3px;font-size:13px}.passive-detail-list{grid-template-columns:1fr 1fr}.dice-modal{width:min(570px,96vw)}.d20-row{min-height:80px}.d20,.d20-row .d20{width:78px;height:78px;margin:0}.d20 span{width:46px;height:46px;font-size:22px}.dice-equation{gap:6px;font-size:15px}.dice-equation span{min-width:38px;padding:5px}.dice-equation strong{font-size:21px}.outcome{margin-top:6px;font-size:19px}.effect-dice{min-height:82px;margin:2px auto}.handoff-screen{padding:max(8px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.handoff-emblem{width:62px;height:62px}.handoff-emblem svg{width:36px;height:36px}.handoff-screen p{margin-top:8px}.handoff-screen h2{font-size:25px}.handoff-screen .gold-button{min-height:44px;margin-top:10px}}@media(max-width:700px)and (orientation:landscape){.team-banner strong{display:none}.team-banner{width:39%;padding:0 6%}.team-banner.blue{left:13%}.team-banner.red{right:13%}.mini-portrait{width:32px}.left-hud,.right-hud{transform:scale(.9)}.left-hud{transform-origin:top left}.right-hud{transform-origin:top right}.action-group button span{font-size:13px}.end-turn-button{min-width:100px;width:100px}}.placement-banner{pointer-events:none}@media(max-width:900px)and (orientation:landscape){.setup-card:has(.free-composer){display:grid;grid-template-rows:25px 38px minmax(0,1fr);overflow:hidden}.setup-card:has(.free-composer) .setup-progress{position:static;margin:0;padding:2px 0}.setup-card:has(.free-composer) .setup-section-heading{min-height:0;margin:0}.setup-card:has(.free-composer) .setup-section-heading .secondary-button{min-height:34px;height:34px}.setup-card:has(.free-composer) .free-composer{height:auto;min-height:0;grid-template-rows:60px minmax(0,1fr)}.setup-card:has(.free-composer) .free-workspace header{min-height:27px}.setup-card:has(.free-composer) .free-canvas-toolbar{min-height:32px}.setup-card:has(.free-composer) .free-canvas-toolbar button{min-height:28px}.setup-card:has(.free-composer) .free-workspace footer{min-height:32px}}.battle-tools{position:absolute;z-index:31;display:grid;grid-template-columns:1fr;gap:4px;padding:4px;border:1px solid rgba(202,166,91,.32);border-radius:10px;background:#051217e6;box-shadow:0 7px 20px #0009}.battle-tools button{min-width:44px;min-height:44px;padding:5px 8px;border:1px solid rgba(194,159,82,.3);border-radius:8px;background:#081b22f2;color:#eee3ca;display:inline-flex;align-items:center;justify-content:flex-start;gap:7px;cursor:pointer}.battle-tools button span{font-size:11px}@media(max-width:900px)and (orientation:landscape){.team-score{display:grid;grid-template-columns:1fr;gap:1px}.team-score span{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px}.battle-tools{display:grid;position:absolute;z-index:31;left:max(6px,env(safe-area-inset-left));right:auto;top:110px;bottom:auto;width:174px;grid-template-columns:1fr;gap:2px;padding:2px;border-radius:9px}.battle-tools button{width:100%;min-width:0;min-height:44px;padding:4px 8px;justify-content:flex-start;gap:7px;border-radius:7px}.battle-tools button span{font-size:11px;white-space:nowrap}.bottom-actions{justify-content:space-between;pointer-events:none}.bottom-actions>*{pointer-events:auto}.end-turn-button{order:1}.action-group{order:2;flex:0 0 min(60vw,510px);width:min(60vw,510px)}}@media(max-width:700px)and (orientation:landscape){.battle-tools{width:157px}.action-group{flex-basis:min(62vw,414px);width:min(62vw,414px)}}@media(min-width:901px)and (orientation:landscape){.team-score{display:grid;grid-template-columns:1fr;gap:3px}.team-score span{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px}.battle-tools{display:grid;position:absolute;z-index:31;left:3.7%;right:auto;top:calc(18% + 108px);bottom:auto;width:164px;grid-template-columns:1fr;gap:4px;padding:4px}.battle-tools button{width:100%;min-width:0;min-height:44px;padding:5px 8px;justify-content:flex-start;gap:7px}.battle-tools button span{font-size:11px;white-space:nowrap}.bottom-actions{justify-content:space-between;pointer-events:none}.bottom-actions>*{pointer-events:auto}.end-turn-button{order:1}.action-group{order:2;flex:0 0 min(54vw,660px);width:min(54vw,660px)}}@media(min-width:901px)and (max-width:1100px)and (orientation:landscape){.battle-tools{left:1.7%;top:calc(17% + 100px)}}.ai-setup-panel{margin:10px 0;border:1px solid rgba(196,159,82,.38);border-radius:12px;background:#05141db8;padding:9px}.mode-switch,.team-choice,.speed-choice{display:flex;align-items:center;gap:7px}.mode-switch>button,.team-choice button,.speed-choice button{min-height:44px;padding:7px 14px;border:1px solid rgba(184,153,86,.4);border-radius:9px;background:#0b222c;color:#e9e1cf;cursor:pointer}.mode-switch>button{flex:1;font-weight:800}.mode-switch button.selected,.team-choice button.selected,.speed-choice button.selected{border-color:#e1bd64;background:linear-gradient(180deg,#164c72,#0b304e);box-shadow:inset 0 0 0 1px #4cabec88}.team-choice button.red.selected{background:linear-gradient(180deg,#7b2b2b,#481919);box-shadow:inset 0 0 0 1px #ef6d6688}.ai-setup-options{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;margin-top:9px;align-items:stretch}.team-choice,.speed-choice{flex-wrap:wrap;align-content:center}.team-choice span,.speed-choice span{flex-basis:100%;color:#b8c9c9;font-size:11px}.ai-profile-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.ai-profile-list button{min-height:58px;padding:7px 9px;text-align:left;border:1px solid #36505a;border-radius:9px;background:#102934;color:#eee3ca;cursor:pointer}.ai-profile-list button.selected{border-color:#e1bd64;box-shadow:inset 0 0 0 1px #e1bd6466,0 0 12px #e1bd6422}.ai-profile-list b,.ai-profile-list small{display:block}.ai-profile-list b{font-size:13px}.ai-profile-list small{margin-top:3px;color:#aebfc1;font-size:10px;line-height:1.25}.ai-turn-status{position:absolute;z-index:39;top:106px;left:50%;transform:translate(-50%);width:min(510px,48vw);min-height:64px;padding:8px 10px;display:flex;align-items:center;gap:7px;border-color:#4da5dc;box-shadow:0 8px 26px #000b,0 0 18px #2587c533}.ai-turn-status.paused{border-color:#d0a648}.ai-turn-status>div{flex:1;min-width:0;display:grid;gap:1px}.ai-turn-status small{color:#80c9ef;font-size:10px}.ai-turn-status b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15px}.ai-turn-status span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#c6d4d5;font-size:10px}.ai-turn-status button{min-width:58px;min-height:44px;border:1px solid #816b3c;border-radius:8px;background:#122833;color:#f3e6c7;cursor:pointer}.persistence-warning{position:absolute;z-index:50;top:92px;right:18px;max-width:300px;padding:7px 10px;border:1px solid #d4a63d;border-radius:8px;background:#2d210b;color:#ffe7a4;font-size:11px}.victory-result{position:fixed;z-index:90;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;gap:10px;text-align:center;background:#01080cdb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#f5ead0}.victory-result b{font-family:Georgia,serif;font-size:clamp(30px,5vw,64px)}.victory-result span{color:#c8d3d3}.victory-result button{min-width:180px;min-height:48px;border:1px solid #d0a64c;border-radius:9px;background:#4b3511;color:#fff0c9;font-weight:900;cursor:pointer}@media(max-width:900px)and (orientation:landscape){.ai-setup-panel{margin:5px 0;padding:5px}.mode-switch>button{min-height:36px;padding:4px 9px;font-size:12px}.ai-setup-options{grid-template-columns:auto minmax(310px,1fr) auto;gap:5px;margin-top:5px}.team-choice,.speed-choice{gap:3px}.team-choice button,.speed-choice button{min-height:36px;padding:3px 7px;font-size:11px}.team-choice span,.speed-choice span{font-size:9px}.ai-profile-list{display:flex;gap:4px;overflow-x:auto}.ai-profile-list button{flex:0 0 138px;min-height:42px;padding:4px 6px}.ai-profile-list b{font-size:10px}.ai-profile-list small{font-size:8px}.setup-card:has(.ai-setup-options) .setup-roster{height:112px}.ai-turn-status{top:58px;width:min(390px,55vw);min-height:50px;padding:4px 6px}.ai-turn-status small{font-size:8px}.ai-turn-status b{font-size:12px}.ai-turn-status span{font-size:8px}.ai-turn-status button{min-width:48px;min-height:44px;padding:3px;font-size:10px}.persistence-warning{top:58px;right:5px;max-width:220px;font-size:9px}}.setup-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px;margin:16px 0 14px;padding:12px;border:1px solid rgba(142,114,64,.72);border-radius:12px;background:linear-gradient(135deg,#0f2731e6,#06151eeb);box-shadow:inset 0 1px #ffebb80a,0 8px 22px #0004}.setup-options:before{content:"自訂開局";grid-column:1 / -1;color:#f5deb0;font-family:Georgia,serif;font-size:16px;font-weight:800;letter-spacing:.04em}.setup-options button{position:relative;min-height:74px;display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;padding:11px 12px;border:1px solid #36515a;border-radius:10px;background:linear-gradient(180deg,#102a35,#0a1e27);color:#ece3cf;text-align:left;cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease,box-shadow .16s ease}.setup-options button:hover{border-color:#b89449;transform:translateY(-1px)}.setup-options button:focus-visible{outline:2px solid #66c6ed;outline-offset:2px}.setup-options button>svg:first-child{color:#d9b658;filter:drop-shadow(0 0 7px #d9b65855)}.setup-options button>span{display:grid;gap:3px;min-width:0}.setup-options button b{color:#f6ead0;font-size:15px;line-height:1.1}.setup-options button small{color:#9fb8b9;font-size:11px;line-height:1.25}.setup-options button:after{content:"關閉";align-self:center;padding:4px 7px;border:1px solid #516870;border-radius:999px;color:#9db1b4;font-size:10px;font-weight:800;white-space:nowrap}.setup-options button.selected{border-color:#e1bd64;background:linear-gradient(180deg,#174766,#0b2a40);box-shadow:inset 0 0 0 1px #5cb4e666,0 0 15px #3d92bc22}.setup-options button.selected:after{content:"已啟用";border-color:#75d4b4;background:#173d3b;color:#a5f1cf}.setup-options button.selected>svg:last-child{display:none}@media(max-width:900px)and (orientation:landscape){.setup-options{gap:6px;margin:7px 0;padding:6px;border-radius:9px}.setup-options:before{font-size:12px}.setup-options button{min-height:54px;grid-template-columns:22px minmax(0,1fr) auto;gap:6px;padding:6px 8px}.setup-options button>svg:first-child{width:19px;height:19px}.setup-options button b{font-size:12px}.setup-options button small{font-size:9px}.setup-options button:after{padding:3px 5px;font-size:8px}}.ai-profile-list>select{min-width:150px;border:1px solid #45606a;border-radius:8px;background:#102934;color:#eee3ca;padding:6px}.ai-settings-launch{border-color:#b99347!important;background:linear-gradient(180deg,#493715,#241b0c)!important;text-align:center!important;font-weight:800}.ai-profile-list .ai-settings-launch small{display:none}@media(max-width:900px)and (orientation:landscape){.ai-profile-list>select{flex:0 0 138px;min-width:138px;font-size:10px}.ai-profile-list .ai-settings-launch{flex-basis:126px}}.ai-editor-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;background:#02080de8;display:grid;place-items:center;padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));color:#eee3c8}.ai-editor{width:min(1120px,100%);height:min(760px,100%);display:grid;grid-template-rows:auto auto 1fr auto;overflow:hidden;border:1px solid #987330;background:#07151d}.ai-editor header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid #57451f}.ai-editor header h2{margin:2px 0;font-size:24px}.ai-editor header p,.ai-editor header small{margin:0;color:#b7b2a6}.ai-editor-close{width:44px;height:44px;font-size:28px}.ai-editor-library{display:grid;grid-template-columns:minmax(240px,1fr) auto auto;gap:8px;padding:8px 14px;background:#0b202a}.ai-editor-library .ai-setting-field{grid-template-columns:70px 1fr}.ai-editor-body{min-height:0;display:grid;grid-template-columns:180px 1fr}.ai-editor-body>nav{display:flex;flex-direction:column;padding:8px;border-right:1px solid #354751;gap:4px}.ai-editor-body>nav button{text-align:left;min-height:40px}.ai-editor-body>nav .selected{background:#125482;border-color:#44adf2}.ai-editor-body>main{min-width:0;padding:16px 20px;overflow:hidden}.ai-settings-page{height:100%;overflow:hidden}.ai-settings-page h3{margin:0 0 12px;color:#f2d786}.ai-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px}.ai-setting-field{display:grid;grid-template-columns:minmax(110px,.7fr) minmax(130px,1.3fr) auto;align-items:center;gap:8px;min-width:0}.ai-setting-field>span{font-weight:700}.ai-setting-field small{grid-column:2/-1;color:#9aaeb7}.ai-setting-field select,.ai-setting-field input,.ai-setting-field textarea{width:100%;min-height:38px;background:#0b2631;color:#f4eddc;border:1px solid #45606a;border-radius:6px;padding:6px}.ai-setting-field textarea{height:72px;resize:none}.ai-setting-field output{color:#e6c76e;min-width:70px}.priority-strength{max-width:500px;margin-bottom:10px}.priority-list{display:grid;gap:6px;max-width:700px}.priority-list>div{display:grid;grid-template-columns:36px 1fr 44px 44px;gap:6px;align-items:center}.priority-list b{text-align:center;color:#e9cc77}.priority-list select{min-height:40px;background:#0b2631;color:#fff;border:1px solid #45606a}.priority-list button{height:40px}.ai-safety-note,.ai-setting-summary{border:1px solid #35505b;background:#0a2029;padding:12px;border-radius:8px;display:flex;flex-direction:column;gap:6px}.ai-safety-note b{color:#5fd69a}.ai-setting-check{display:flex;align-items:center;gap:8px}.expert-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px 12px}.expert-grid .ai-setting-field{grid-template-columns:1fr 70px}.ai-editor footer{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid #57451f;min-height:58px}.ai-editor footer>span{color:#70d6a0}.ai-editor footer>div{display:flex;gap:8px}.ai-editor footer button{min-height:40px}.ai-editor footer .primary{background:#8b641c;color:#fff4ce}.ai-editor footer .danger{color:#ff9292}.ai-editor-mobile-nav{display:none}@media(max-width:900px)and (orientation:landscape){.ai-editor-backdrop{padding:4px}.ai-editor{height:100%;width:100%;grid-template-rows:auto auto auto 1fr auto}.ai-editor header{padding:5px 10px}.ai-editor header h2{font-size:17px}.ai-editor header p{display:none}.ai-editor-library{grid-template-columns:1fr auto auto;padding:4px 8px}.ai-editor-library .ai-setting-field>span{display:none}.ai-editor-library .ai-setting-field{grid-template-columns:1fr}.ai-editor-library button{min-height:36px}.ai-editor-mobile-nav{display:grid;grid-template-columns:44px 1fr 44px;gap:4px;padding:3px 8px}.ai-editor-mobile-nav select{background:#102c38;color:#fff;border:1px solid #4d7888}.ai-editor-body{display:block}.ai-editor-body>nav{display:none}.ai-editor-body>main{height:100%;padding:6px 10px}.ai-settings-page h3{font-size:15px;margin:0 0 4px}.ai-settings-grid{gap:5px 12px}.ai-setting-field{grid-template-columns:105px 1fr auto;gap:4px;font-size:12px}.ai-setting-field select,.ai-setting-field input,.ai-setting-field textarea{min-height:32px;padding:3px}.priority-strength{margin-bottom:4px}.priority-list{grid-template-columns:1fr 1fr;max-width:none;gap:3px 10px}.priority-list>div{grid-template-columns:24px 1fr 36px 36px}.priority-list select,.priority-list button{height:34px;min-height:34px}.expert-grid{grid-template-columns:repeat(4,1fr);gap:3px 8px}.expert-grid .ai-setting-field{grid-template-columns:1fr 52px;font-size:10px}.expert-grid .ai-setting-field input{height:28px;min-height:28px}.page-hint{display:none}.ai-editor footer{padding:4px 8px;min-height:44px;font-size:11px}.ai-editor footer button{min-height:34px}.ai-editor-close{width:38px;height:38px}}.ai-config-file-input{display:none}.ai-editor footer>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-config-share-actions{padding-right:8px;border-right:1px solid #57451f}.ai-config-share-actions button{border-color:#426d7b;background:#0d2a35;color:#d9edf0;white-space:nowrap}@media(max-width:900px)and (orientation:landscape){.ai-editor footer{gap:5px}.ai-editor footer>div{gap:4px}.ai-config-share-actions{padding-right:5px}.ai-editor footer button{padding:3px 6px;font-size:10px}}.replay-viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:180;display:grid;grid-template-rows:54px 1fr 58px;background:#02080d;color:#f1e6cf;overflow:hidden}.replay-viewer>header,.replay-viewer>footer{display:flex;align-items:center;justify-content:space-between;padding:6px max(12px,env(safe-area-inset-right)) 6px max(12px,env(safe-area-inset-left));background:#071720;border-color:#8f6e2f;z-index:4}.replay-viewer>header{border-bottom:1px solid #8f6e2f}.replay-viewer>header>div{display:grid}.replay-viewer>header small{color:#c6a95f}.replay-viewer>header b{font-size:18px}.replay-viewer button{min-height:44px;border:1px solid #8c7137;border-radius:8px;background:#102833;color:#f3e7ca;padding:6px 14px;font-weight:800}.replay-stage{position:relative;min-height:0;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 50% 40%,#18303b,#030b10 72%);cursor:grab}.replay-stage.dragging{cursor:grabbing}.replay-world{position:absolute;left:50%;top:50%;display:grid;transform-origin:center;box-shadow:0 0 0 2px #3a8dbe,0 16px 50px #000c;background:#14252c}.replay-tile-art{width:100%;height:100%;object-fit:fill;z-index:0;pointer-events:none}.replay-cell{z-index:1;border-right:1px solid #b9d4dc38;border-bottom:1px solid #b9d4dc38;background:#14303a20}.replay-cell.terrain-void{background:#07131c;opacity:.9}.replay-cell.terrain-difficult{background:#9b792d38}.replay-cell.blocking{background:#7924244a}.replay-routes{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:5;overflow:visible;pointer-events:none}.replay-routes polyline{fill:none;stroke-width:.12;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 .12px #fff)}.replay-routes polyline.blue{stroke:#5bc6ff}.replay-routes polyline.red{stroke:#ff726b}.replay-routes marker path{fill:#f8df87}.replay-unit{position:absolute;z-index:6;width:min(4.6%,46px);aspect-ratio:1;border:2px solid #aaa;border-radius:50%;transform:translate(-50%,-50%);background:#0b1920;box-shadow:0 3px 9px #000}.replay-unit.blue{border-color:#43b8ff}.replay-unit.red{border-color:#ff625c}.replay-unit.acting{box-shadow:0 0 0 3px #f5d56f,0 0 18px #f5d56f}.replay-unit.down{filter:grayscale(1);opacity:.55}.replay-unit img{width:100%;height:100%;object-fit:cover;border-radius:50%}.replay-unit span{position:absolute;right:-5px;bottom:-4px;display:grid;place-items:center;min-width:18px;height:18px;padding:0 3px;border-radius:9px;background:#071219;border:1px solid #d5bd75;color:#fff;font-size:10px}.replay-turn-card{position:absolute;z-index:8;max-height:206px;overflow:auto;padding:10px;border:1px solid #a88742;border-radius:10px;background:#071820ee;box-shadow:0 10px 28px #000b;pointer-events:auto}.replay-turn-card.blue{border-left:4px solid #43b8ff}.replay-turn-card.red{border-left:4px solid #ff625c}.replay-turn-card small{color:#c7ac67}.replay-turn-card h2{margin:1px 0 6px;font-size:18px}.replay-turn-card ol{margin:0;padding-left:18px;display:grid;gap:5px}.replay-turn-card li{font-size:12px}.replay-turn-card li b,.replay-turn-card li span{display:block}.replay-turn-card li span{color:#a9c0c5;font-size:10px}.replay-deltas{display:grid;gap:2px;margin-top:7px;padding-top:6px;border-top:1px solid #38505a;color:#e1c875;font-size:10px}.replay-viewer>footer{border-top:1px solid #8f6e2f;justify-content:center;gap:18px}.replay-viewer>footer button{min-width:130px}.replay-viewer>footer button:last-child{background:#624515}.victory-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:9px}.victory-actions button{min-width:160px}.victory-actions .replay-primary{background:#164c72;border-color:#5cbdf1}@media(max-width:900px)and (orientation:landscape){.replay-viewer{grid-template-rows:44px 1fr 48px}.replay-viewer>header{padding:2px 8px}.replay-viewer>header small{font-size:8px}.replay-viewer>header b{font-size:13px}.replay-viewer button{min-height:40px;padding:4px 9px;font-size:11px}.replay-turn-card{max-height:190px;padding:7px}.replay-turn-card h2{font-size:14px}.replay-turn-card li{font-size:10px}.replay-viewer>footer{gap:10px;padding:3px 8px}.replay-viewer>footer button{min-width:105px}.replay-unit{width:min(5.2%,34px)}}@media(max-width:900px)and (orientation:landscape){html,body,#root{position:fixed;top:0;right:0;bottom:0;left:0;width:100dvw;height:100dvh;min-height:0;overflow:hidden!important;overscroll-behavior:none;touch-action:none;-webkit-text-size-adjust:100%}.setup-shell,.game-shell,.modal-backdrop,.handoff-screen{overscroll-behavior:none}.setup-card:not(:has(.free-composer)){height:100%;padding:6px 8px;overflow:hidden}.setup-card:not(:has(.free-composer)) .setup-progress{position:static;min-height:19px;margin:0 0 3px;padding:2px 0;font-size:10px}.setup-card:not(:has(.free-composer)) .setup-title-row{min-height:31px}.setup-card:not(:has(.free-composer)) .setup-title-row h1{margin:1px 0;font-size:19px}.setup-card:not(:has(.free-composer)) .setup-title-row .modal-kicker{font-size:8px}.setup-card:not(:has(.free-composer)) .roster-count{min-width:40px;font-size:17px}.setup-card:not(:has(.free-composer)) .setup-roster{height:98px;margin:4px 0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));grid-auto-flow:row;grid-auto-columns:auto;gap:4px;overflow:hidden}.setup-card:not(:has(.free-composer)) .setup-roster button{min-height:0;padding:3px 5px;gap:5px}.setup-card:not(:has(.free-composer)) .setup-roster img{width:34px;height:34px}.setup-card:not(:has(.free-composer)) .setup-roster span{min-width:0;font-size:11px;line-height:1}.setup-card:not(:has(.free-composer)) .setup-roster small{display:none}.setup-card:not(:has(.free-composer)) .setup-roster button>svg{width:15px;height:15px}.setup-card:not(:has(.free-composer)) .setup-options{margin:4px 0;padding:4px;gap:4px}.setup-card:not(:has(.free-composer)) .setup-options:before{font-size:10px}.setup-card:not(:has(.free-composer)) .setup-options button{min-height:42px;grid-template-columns:18px minmax(0,1fr) auto;gap:5px;padding:5px 6px}.setup-card:not(:has(.free-composer)) .setup-options button>svg:first-child{width:17px;height:17px}.setup-card:not(:has(.free-composer)) .setup-options button b{font-size:11px}.setup-card:not(:has(.free-composer)) .setup-options button small{display:none}.setup-card:not(:has(.free-composer)) .setup-options button:after{padding:3px 5px;font-size:8px}.setup-card:not(:has(.free-composer)) .setup-start{min-height:38px;margin-top:2px;font-size:12px}.setup-card:has(.ai-setup-options) .ai-setup-panel{margin:3px 0;padding:4px}.setup-card:has(.ai-setup-options) .mode-switch>button{min-height:31px;padding:3px 7px;font-size:11px}.setup-card:has(.ai-setup-options) .ai-setup-options{grid-template-columns:82px minmax(0,1fr) 68px;gap:4px;margin-top:4px}.setup-card:has(.ai-setup-options) .team-choice,.setup-card:has(.ai-setup-options) .speed-choice{gap:2px}.setup-card:has(.ai-setup-options) .speed-choice{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.setup-card:has(.ai-setup-options) .speed-choice span{grid-column:1 / -1}.setup-card:has(.ai-setup-options) .speed-choice button{min-width:0}.setup-card:has(.ai-setup-options) .team-choice span,.setup-card:has(.ai-setup-options) .speed-choice span{font-size:8px}.setup-card:has(.ai-setup-options) .team-choice button,.setup-card:has(.ai-setup-options) .speed-choice button{min-height:26px;padding:2px 4px;font-size:9px}.setup-card:has(.ai-setup-options) .ai-profile-list{gap:3px;overflow:hidden}.setup-card:has(.ai-setup-options) .ai-profile-list button{flex:1 1 0;min-width:0;min-height:38px;padding:3px 5px}.setup-card:has(.ai-setup-options) .ai-profile-list b{font-size:9px;white-space:nowrap}.setup-card:has(.ai-setup-options) .ai-profile-list small{display:none}.setup-card:has(.ai-setup-options) .setup-roster{height:82px}.initiative-results{max-height:none;margin:4px 0;overflow:hidden}.initiative-results article{min-height:38px;padding:4px 6px}.initiative-results small{display:none}.setup-footer-actions{position:static;padding:2px 0}.modal-card{overflow:hidden}.ability-drawer{max-height:calc(100dvh - 126px);overflow:hidden}.ability-drawer>button{min-height:34px;padding:4px 6px}.board-stage,.free-canvas{touch-action:none}}.setup-roster-title{min-height:36px;margin:0;display:flex;align-items:center}.setup-roster-title h1{margin:0;font-size:clamp(22px,2.5vw,32px);line-height:1}@media(min-width:901px)and (orientation:landscape){.setup-shell{width:100vw;height:100dvh;min-height:0;padding:clamp(12px,2.2vh,22px);overflow:hidden}.setup-card:has(.setup-roster){width:min(1120px,100%);height:100%;max-height:none;min-height:0;padding:clamp(14px,2.2vh,22px);overflow:hidden;display:flex;flex-direction:column}.setup-card:has(.setup-roster) .setup-roster-title{flex:0 0 36px}.setup-card:has(.setup-roster) .ai-setup-panel{flex:0 0 auto;margin:6px 0;padding:7px}.setup-card:has(.setup-roster) .mode-switch>button{min-height:38px;padding:5px 12px}.setup-card:has(.setup-roster) .ai-setup-options{gap:6px;margin-top:5px}.setup-card:has(.setup-roster) .team-choice button,.setup-card:has(.setup-roster) .speed-choice button{min-height:34px;padding:4px 8px}.setup-card:has(.setup-roster) .ai-profile-list button{min-height:48px;padding:5px 7px}.setup-card:has(.setup-roster) .setup-roster{flex:1 1 auto;min-height:280px;max-height:none;margin:7px 0;gap:6px 9px;grid-template-rows:repeat(5,minmax(0,1fr))}.setup-card:has(.setup-roster) .setup-roster button{min-height:0;padding:5px 8px}.setup-card:has(.setup-roster) .setup-roster img{width:52px;height:52px}.setup-card:has(.setup-roster) .setup-options{flex:0 0 auto;gap:6px 9px;margin:6px 0;padding:7px}.setup-card:has(.setup-roster) .setup-options:before{font-size:13px}.setup-card:has(.setup-roster) .setup-options button{min-height:56px;grid-template-columns:28px minmax(0,1fr) auto;gap:8px;padding:7px 9px}.setup-card:has(.setup-roster) .setup-options button b{font-size:13px}.setup-card:has(.setup-roster) .setup-options button small{font-size:10px}.setup-card:has(.setup-roster) .setup-start{flex:0 0 44px;min-height:44px;margin-top:4px}}@media(max-width:900px)and (orientation:landscape){.setup-card:not(:has(.free-composer)) .setup-roster-title{min-height:25px;height:25px}.setup-card:not(:has(.free-composer)) .setup-roster-title h1{margin:0;font-size:17px}}.unit-token{--team-color: #7c8c92;box-sizing:border-box;border-color:var(--team-color)!important;box-shadow:0 0 0 3px #03090ce0,0 0 0 5px var(--team-color),0 7px 12px #000c!important}.unit-token.blue{--team-color: #39b9ff;background-color:#071d2b}.unit-token.red{--team-color: #ff625b;background-color:#2a0d0d}.unit-token.selected{outline:3px solid #ffe08a;outline-offset:5px;box-shadow:0 0 0 3px #03090ce6,0 0 0 5px var(--team-color),0 0 18px 7px #ffd25e85!important}.unit-token.active{box-shadow:0 0 0 3px #03090ce6,0 0 0 5px var(--team-color),0 0 20px 7px #ffde7e94!important}.unit-token.legal-ally-target,.unit-token.area-ally-target,.unit-token.area-preview-ally-target{outline:4px double #69f5a1;outline-offset:5px;box-shadow:0 0 0 3px #03090ce6,0 0 0 5px var(--team-color),0 0 20px 8px #3aed8b9e!important}.unit-token.legal-enemy-target,.unit-token.area-enemy-target,.unit-token.area-preview-enemy-target{outline:4px dashed #ffcf70;outline-offset:5px;box-shadow:0 0 0 3px #03090ce6,0 0 0 5px var(--team-color),0 0 22px 8px #ff483ab8!important}.unit-token.area-preview-ally-target,.unit-token.area-preview-enemy-target{opacity:.9}.unit-token.legal-target:hover,.unit-token.legal-target:focus-visible{transform:translateY(-2px) scale(1.07);filter:brightness(1.16)}.action-preview.targeting-allies{border-color:#69f5a1e6;box-shadow:0 6px 18px #000a,inset 0 0 0 1px #69f5a13d}.action-preview.targeting-allies span{color:#8ff8b8}.action-preview.targeting-enemies{border-color:#ff705ceb}.action-preview.targeting-enemies span{color:#ffbd8a}.action-preview.targeting-area span{color:#e5c4ff}@media(prefers-reduced-motion:no-preference){.unit-token.legal-enemy-target{animation:enemyTargetPulse 1.2s ease-in-out infinite!important}.unit-token.legal-ally-target{animation:allyTargetPulse 1.5s ease-in-out infinite!important}}@keyframes enemyTargetPulse{50%{filter:brightness(1.2) drop-shadow(0 0 7px rgba(255,85,64,.88))}}@keyframes allyTargetPulse{50%{filter:brightness(1.15) drop-shadow(0 0 6px rgba(72,244,145,.7))}}@media(max-height:530px)and (orientation:landscape){.unit-token{border-width:2px}.unit-token.selected,.unit-token.legal-ally-target,.unit-token.legal-enemy-target,.unit-token.area-ally-target,.unit-token.area-enemy-target{outline-width:3px;outline-offset:3px}.action-preview span{white-space:nowrap}}
