@font-face{font-family:Cinzel;src:url(/fonts/cinzel.ttf) format("truetype");font-weight:400 900;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}:root{color-scheme:dark;--gold:#bca577;--gold-light:#e5d2ad;--ink:#151a14;--muted:#c1b69f}*{box-sizing:border-box}body{margin:0;background:#111610;color:#eee5d3;font-family:Inter,system-ui,sans-serif}::selection{background:#53613c;color:#fff3dc}button{font:inherit;cursor:pointer;color:inherit;min-height:44px;touch-action:manipulation;transition:background-color .15s,color .15s,border-color .15s}button:focus-visible,summary:focus-visible{outline:2px solid #e2ca93;outline-offset:4px}button:disabled{cursor:not-allowed}a,button{-webkit-tap-highlight-color:transparent}button:active:not(:disabled){filter:brightness(.95)}a{text-underline-offset:4px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.game-icon{display:block;width:22px;height:22px;flex-shrink:0;color:inherit}.royal-frame{position:relative;border:1px solid #817554;border-radius:2px;background:#20261c;box-shadow:none}.battle-page{max-width:1680px;margin:auto;padding:0 18px}.battle-session{gap:24px;min-height:56px;font-size:13px;color:#c1b69f}.battle-session,.session-menu{display:flex;align-items:center}.session-menu{gap:5px;padding:8px 0;border:0;background:none;color:#e0ceb0}.session-menu .game-icon{width:16px;height:16px}.menu-short{display:none}.session-level strong{font-weight:600;color:#eee3cd}.session-tools{display:flex;gap:4px;align-items:center;margin-left:auto}.session-tools button{display:grid;place-items:center;min-width:44px;min-height:44px;padding:10px;background:transparent;border-color:transparent}.session-tools button:hover{background:#2c3425}.session-tools button[aria-pressed=false]{color:#bbb098}.session-tools button[aria-pressed=true]{color:#ead7af}.battle-shell{border:1px solid #5d573e}.battle-scene,.battle-shell{position:relative;overflow:hidden}.battle-scene{background:#455158}.landscape-layer{position:absolute;left:0;top:0;pointer-events:none}.landscape-layer [data-parallax]{will-change:transform}.viewport{overflow-x:auto;position:relative;scrollbar-width:thin;scrollbar-color:#a79570 #171d15;overscroll-behavior-x:contain}.landscape-layer,.viewport>svg{display:block;width:100%;min-width:1200px;height:auto}.royal-hud{position:absolute;top:12px;left:12px;right:12px;z-index:3;display:grid;grid-template-columns:minmax(190px,1fr) minmax(290px,380px) minmax(190px,1fr);grid-gap:clamp(16px,3vw,60px);gap:clamp(16px,3vw,60px);align-items:start;pointer-events:none}.health{position:relative;display:flex;align-items:center;height:58px;min-width:0}.health.player{grid-column:1;grid-row:1;padding-left:44px}.health.enemy{grid-column:3;grid-row:1;padding-right:44px;flex-direction:row-reverse}.herald{position:absolute;width:72px;height:76px;left:-3px;top:-6px;z-index:2;-webkit-clip-path:polygon(9% 6%,42% 2%,50% 0,60% 3%,93% 7%,97% 18%,94% 69%,85% 84%,50% 99%,14% 85%,7% 69%,3% 18%);clip-path:polygon(9% 6%,42% 2%,50% 0,60% 3%,93% 7%,97% 18%,94% 69%,85% 84%,50% 99%,14% 85%,7% 69%,3% 18%)}.enemy .herald{left:auto;right:-3px}.health-frame{position:relative;background:#182015;border:1px solid #baa270;height:34px;width:100%;overflow:hidden}.health-fill{height:100%;background:#3b5c27;transition:width .15s linear}.enemy .health-fill{background:#832c23;margin-left:auto}.health-frame strong{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding-left:16px;color:#fff3db}.enemy .health-frame strong{padding-left:0;padding-right:16px}.resource-frame{grid-column:2;grid-row:1;display:grid;grid-template-columns:1.12fr 1fr 1fr;padding:10px 12px;background:#151c13f5;border-color:#73674c}.resource{display:flex;justify-content:center;align-items:center;gap:8px;min-width:0}.resource+.resource{border-left:1px solid #7d735347}.resource .game-icon{width:22px;height:22px;color:#d4bd8d}.resource strong{font-size:21px;font-weight:600;line-height:1.15;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.resource strong span{font-size:14px;color:#c9bea8}.resource small{display:block;color:#c9bea8;font-size:11px;margin-top:3px}.resource.gold strong{color:#f0d49a}.battle-clock{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);padding:7px 12px;background:#111a13eb;font-size:11px;white-space:nowrap;color:#e1d5bc;pointer-events:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.camera{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #5d573e;background:#171e15;padding:0 12px;gap:12px}.camera button{border:0;background:none;color:#ded0b2;font-size:12px;padding:8px 0;min-height:44px}.camera span{font-size:12px;color:#bbb198}.command-deck{padding:14px 18px 12px;background:#1b2118;border-bottom:1px solid #514a34}.route-line{display:flex;align-items:center;gap:14px;margin-bottom:12px}.route-label{font-size:12px;color:#c0b59e}.route-buttons{display:flex;gap:4px;padding:0;border:0;background:none}.route-buttons button{display:flex;align-items:center;justify-content:center;gap:7px;background:none;border:1px solid transparent;border-radius:2px;padding:8px 12px;font-size:13px;min-height:44px;color:#d7cbb2}.route-buttons .game-icon{width:17px;height:17px}.route-buttons button[aria-pressed=true]{background:#34412b;border-color:#a98e59;color:#f3e6ca}.route-buttons small{font-size:11px;color:#d0c7b5;padding-left:3px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.deck-actions{display:grid;grid-template-columns:minmax(0,1fr) 170px;grid-gap:20px;gap:20px;align-items:stretch}.recruitment-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px}.unit-card{display:grid;grid-template-columns:70px minmax(0,1fr);grid-template-rows:auto auto auto;align-items:center;grid-gap:3px 10px;gap:3px 10px;padding:6px 4px;min-width:0;text-align:left;border:0;background:transparent;border-radius:2px}.unit-card:hover:not(:disabled){background:#2b3424}.portrait-wrap{grid-column:1;grid-row:1/4;width:70px;height:88px;position:relative;overflow:hidden;background:#333d2b;border:0}.portrait{display:block;width:100%;height:100%}.card-symbol{position:absolute;left:0;bottom:0;padding:3px;background:#162015ed}.card-symbol .game-icon{width:16px;height:16px;color:#e6d6b7}.card-name{grid-row:1;align-self:end;font-size:13px;line-height:1.4;color:#f0e6d2}.card-name,.card-price{grid-column:2;font-weight:600}.card-price{grid-row:2;display:flex;gap:5px;align-items:center;font-size:18px;color:#efd39b;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.3}.card-price .game-icon{width:16px;height:16px}.card-hint{grid-column:2;grid-row:3;align-self:start;font-size:11px;color:#c2b69f;line-height:1.4}.unit-card:disabled .portrait-wrap{filter:saturate(.5) brightness(.75)}.unit-card:disabled .card-name{color:#c4b79e}.unit-card:disabled .card-price{color:#cbbb99}.unit-card:disabled .card-hint{color:#c6b799}.limit-badge{position:absolute;bottom:4px;left:0;right:0;background:#172015f2;color:#e4d3ab;font-size:10px;padding:3px;text-align:center}.orders{flex-direction:column;gap:8px}.order,.orders{display:flex;justify-content:center}.order{align-items:center;gap:10px;min-height:44px;padding:10px;font-size:17px;font-weight:600;background:#2c3327;color:#efe3ca;border-color:#6f7256}.order .game-icon{width:20px;height:20px}.order.attack{background:#513025}.order.defend{background:#2e3c30}.order:hover:not(:disabled){border-color:#ccb588}.order.active{border-color:#e3c38a;background:#715038;color:#fff0d4}.order.defend.active{background:#44563b}.order:disabled{opacity:.65}.reinforcements{margin:16px 0 0;padding-top:12px;border-top:1px solid #5d573e}.reinforcements header{margin-bottom:8px}.reinforcements h2{font-size:12px;font-weight:400;color:#c1b69f;margin:0}.reinforcement-cards{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.reinforcement-card{display:flex;align-items:center;text-align:left;padding:4px;gap:10px;min-width:0;border:0;background:none}.reinforcement-card:hover:not(:disabled){background:#2b3424}.reinforcement-portrait{display:block;width:48px;height:56px;flex-shrink:0;overflow:hidden}.reinforcement-portrait>svg{display:block;width:100%;height:100%}.reinforcement-description{display:flex;flex:1 1;min-width:0;flex-direction:column;gap:3px}.reinforcement-description strong{font-size:13px;font-weight:600;color:#e6dbc3}.reinforcement-description small{font-size:11px;color:#c1b69f}.unlock-status{display:flex;align-items:center;gap:5px;font-size:11px;color:#d2c2a2;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.unlock-status .game-icon{width:13px;height:13px}.unlock-progress{display:block;height:2px;background:#0c120ae0;max-width:220px;width:100%;overflow:hidden}.unlock-progress>span{display:block;height:100%;background:#ad9461}.reinforcement-card.locked .reinforcement-portrait{filter:saturate(.4) brightness(.75)}.reinforcement-card .card-price{font-size:18px;padding-right:5px}.reinforcement-card.unlocked .unlock-status{color:#d2e0b6}.reinforcement-card:disabled .card-price{color:#cbbb99}.deck-foot{display:flex;align-items:center;gap:16px;margin-top:10px;min-height:44px}.message{margin:0;flex:1 1;font-size:12px;line-height:1.5;color:#d0c3a9}.underground-count{font-size:11px;color:#c1b69f;white-space:nowrap}.restart{border:0;background:none;padding:8px 0;min-height:44px;color:#d8c6a1;font-size:12px;white-space:nowrap}.game-footer{padding:8px 0 14px;font-size:12px;color:#c2b49b}.game-footer details{max-width:700px}.game-footer summary{cursor:pointer;min-height:44px;align-content:center;color:#d0bf9d}.game-footer details p{font-size:13px;line-height:1.7;color:#d3c6ab;text-align:left;padding:12px;background:#1b2417;margin:4px 0 0}.result{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;background:#0b130be8;padding:24px}.result-panel{text-align:center;padding:32px;max-width:440px;width:100%;background:#1d2718;border:0}.result h2{font-family:Cinzel,Georgia,serif;font-size:29px;font-weight:500;margin:0 0 12px;color:#eddbb5}.result p{font-size:14px;line-height:1.6;color:#d3c4a7}.result button{margin-top:12px;padding:12px 24px;font-size:16px;border-color:#bca577}@media(max-width:1050px){.royal-hud{grid-template-columns:minmax(140px,1fr) 290px minmax(140px,1fr);gap:14px;left:9px;right:9px}.health{height:50px}.herald{width:60px;height:64px}.health-frame strong{font-size:14px}.health-frame{height:30px}.resource-frame{padding:9px 8px}.resource{gap:6px}.resource strong{font-size:18px}.resource .game-icon{width:18px;height:18px}.resource small{font-size:10px}.deck-actions{grid-template-columns:1fr 145px;gap:12px}.unit-card{grid-template-columns:56px 1fr;gap:3px 7px}.portrait-wrap{width:56px;height:82px}.card-name{font-size:12px}.card-hint{font-size:10px}}@media(max-width:700px){.battle-page{padding:0 6px}.battle-session{min-height:50px;gap:12px;font-size:12px}.difficulty-caption,.menu-long{display:none}.menu-short{display:inline}.session-tools{gap:0}.session-tools button{padding:10px;min-width:44px;min-height:44px}.session-tools .game-icon{width:19px;height:19px}.landscape-layer,.viewport>svg{min-width:1300px}.royal-hud{top:8px;left:7px;right:7px;grid-template-columns:1fr 1fr;gap:7px 14px}.resource-frame{grid-row:1;grid-column:1/-1;max-width:350px;justify-self:center;width:100%;padding:8px 10px}.health.player{grid-column:1;grid-row:2;padding-left:27px}.health.enemy{grid-column:2;grid-row:2;padding-right:27px}.health{height:34px}.herald{width:45px;height:49px;top:-4px}.health-frame{height:27px}.health-frame strong{font-size:12px;padding-left:7px}.enemy .health-frame strong{padding-right:7px}.resource strong{font-size:18px}.resource strong span{font-size:12px}.resource small{font-size:10px}.resource .game-icon{width:20px;height:20px}.battle-clock{font-size:10px;bottom:8px;padding:6px 9px}.camera{padding:0 9px}.camera span{display:none}.camera button{font-size:11px}.command-deck{padding:12px 8px 8px}.route-line{gap:8px;margin-bottom:12px}.route-buttons{flex:1 1}.route-buttons button{padding:7px 9px;font-size:12px;flex:1 1}.route-buttons .game-icon{width:15px;height:15px}.route-label{font-size:11px}.deck-actions{display:flex;flex-direction:column;gap:12px}.orders{order:-1;display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.order{min-height:46px;font-size:17px}.recruitment-cards{gap:6px}.unit-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0;gap:4px}.portrait-wrap{width:100%;height:70px;max-width:110px}.card-name{font-size:12px;min-height:32px;display:flex;align-items:center;justify-content:center;align-self:stretch;line-height:1.3}.card-price{font-size:17px}.card-hint{font-size:10px;line-height:1.4;min-height:28px;align-self:stretch}.card-symbol{padding:3px}.card-symbol .game-icon{width:14px;height:14px}.limit-badge{font-size:9px}.reinforcements{margin-top:14px;padding-top:10px}.reinforcement-cards{gap:8px}.reinforcement-card{gap:6px;padding:0;align-items:flex-start}.reinforcement-portrait{width:36px;height:44px}.reinforcement-description strong{font-size:12px}.reinforcement-description small{display:none}.unlock-status{font-size:10px;gap:3px;line-height:1.4}.unlock-status .game-icon{display:none}.reinforcement-card .card-price{font-size:14px;gap:3px;padding:0}.reinforcement-card .card-price .game-icon{width:12px;height:12px}.deck-foot{flex-wrap:wrap;gap:0 12px;margin-top:10px}.message{flex-basis:100%;font-size:11px;line-height:1.5;min-height:32px;margin:0}.underground-count{flex:1 1;font-size:11px}.restart{font-size:11px}.game-footer,.game-footer details p{font-size:12px}.result-panel{padding:24px 18px}.result h2{font-size:24px}}@media(max-width:360px){.battle-session{gap:8px}.resource-frame{padding:8px 5px}.resource strong{font-size:16px}.resource small{font-size:9px}.resource{gap:5px}.resource .game-icon{width:17px;height:17px}.health-frame strong{font-size:10px}.card-name{font-size:11px}.card-hint{font-size:10px}.portrait-wrap{height:64px}.reinforcement-portrait{display:none}.reinforcement-description{min-width:0}.battle-clock{font-size:9px}.route-buttons button{font-size:11px;padding:7px 6px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.player-flag{transform:none!important}}@media(min-width:1260px){.camera{display:none}}