:root{font-family:Hiragino Kaku Gothic ProN,Yu Gothic,Meiryo,sans-serif;color:#f8efd7;background:#92bfc3;font-synthesis:none;--ink:#243e39;--gold:#f3ce7d;--panel:#23453fee}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;height:100dvh;margin:0;overflow:hidden;overscroll-behavior:none}body,button,a,input{touch-action:manipulation}button{font:inherit;cursor:pointer;color:inherit;border:1px solid #f8e3ad35;background:#355b50;min-height:44px;border-radius:12px;padding:8px 13px;font-weight:700}button:hover{filter:brightness(1.08)}button:active{transform:translateY(1px)}button:focus-visible,a:focus-visible{outline:3px solid #fff0b0;outline-offset:2px}button:disabled{opacity:.43;cursor:default}button.gold{background:linear-gradient(#ffdda0,#edbd63);color:#3f3824;border-color:#fee6b4;box-shadow:0 4px #97783e}button.small{min-width:44px;padding:5px 10px}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}[hidden]{display:none!important}#game-shell{height:100%;display:grid;grid-template-rows:78px minmax(0,1fr) 160px;position:relative;background:radial-gradient(ellipse at 45% 35%,#c1ddcb 0,#99c3c4 55%,#7ca8b4)}#hud{display:flex;align-items:center;gap:18px;margin:14px 22px 0;z-index:4}.brand{color:#2c4d43;font-size:14px;letter-spacing:.12em;font-weight:900;line-height:1.5;margin-right:auto}.brand b{display:block;font-size:20px;letter-spacing:0}.hud-pill{height:58px;padding:8px 17px;background:var(--panel);border-radius:14px;box-shadow:0 4px 14px #355f4920;white-space:nowrap}.hud-pill small{font-size:12px;color:#bcd0bd;display:block;letter-spacing:.06em}.hud-pill strong{font-size:22px;letter-spacing:.02em}.asset strong{color:var(--gold);font-variant-numeric:tabular-nums}.controls{display:flex;gap:5px}.controls button{background:#f4f0da;color:#344f46;border:0;box-shadow:0 2px #739180;height:44px}.hp strong{color:#f5a699}#world{position:relative;min-height:0;overflow:hidden;touch-action:none}#world>canvas{display:block;width:100%;height:100%;touch-action:none}.node-hit{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;min-height:44px;padding:0;border:0;border-radius:50%;background:transparent;z-index:2;color:#fff0c0;font-size:20px;text-shadow:0 1px 3px #4c6b3b;touch-action:none}.node-hit:hover,.node-hit.selected{background:#ffed9240;box-shadow:0 0 0 2px #fff0a5}.node-hit.occupied{transform:translate(-50%,-70%);height:54px}.node-hit.charged:after{content:"◆";font-size:12px;color:#fff5a0;position:absolute;bottom:0;left:18px;filter:drop-shadow(0 0 4px #fff499)}#stage-label{position:absolute;top:6px;left:25px;z-index:3;pointer-events:none;color:#325443}#stage-label strong{font-size:18px;letter-spacing:.08em}#stage-label small{display:block;font-size:12px;margin-top:5px;color:#4b7561}#base-labels{position:absolute;inset:0;pointer-events:none}.base-label{position:absolute;transform:translate(-50%,-50%);font-size:12px;font-weight:700;border-radius:8px;padding:3px 6px;background:#244a42d9;white-space:nowrap}#toast{position:absolute;top:13%;left:50%;transform:translate(-50%);max-width:85%;padding:10px 18px;background:#24473def;color:#fff4d4;border:1px solid #dec88970;border-radius:12px;z-index:12;text-align:center;pointer-events:none;font-size:14px;transition:opacity .2s;opacity:0}#toast.show{opacity:1}#pause-overlay{position:absolute;inset:0;display:grid;place-items:center;background:#1c3e3a55;color:#fff;font-size:28px;z-index:3;pointer-events:none;letter-spacing:.3em}#dock{margin:0 22px 14px;border-radius:20px;background:var(--panel);padding:10px 14px;z-index:5;display:grid;grid-template-columns:minmax(430px,1fr) 310px;gap:15px;box-shadow:0 7px 25px #36594135;border:1px solid #f5e2b036}.roster{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.hero{padding:5px 3px;position:relative;background:#3b6051;border:1px solid #cce1ba30;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:13px}.hero img{width:48px;height:48px;object-fit:cover;object-position:center;border-radius:50%;background:#eadac0}.hero .emoji{font-size:32px;line-height:42px}.hero b{font-size:12px;white-space:nowrap}.hero small{font-size:12px;color:#e8d6a2}.hero.active{background:#617b50;border-color:#f3d58e;box-shadow:inset 0 0 0 1px #edca73}.dock-left{display:flex;flex-direction:column;gap:7px;min-width:0}#selection-bar{height:24px;display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:12px;color:#d4dfc5}#selection-bar button{min-height:24px;padding:1px 9px;font-size:12px;background:transparent}.dock-right{display:flex;flex-direction:column;gap:7px;justify-content:center;min-width:0}#forecast{display:flex;gap:8px;align-items:center;font-size:12px;min-height:31px;color:#d4dfc5}#forecast button{font-size:21px;min-height:32px;padding:0 5px;background:#49675680;border:0;min-width:32px}#forecast-label{margin-right:auto}#wave-button{width:100%;min-height:45px;font-size:16px;display:flex;align-items:center;justify-content:space-between;gap:8px}#wave-button small{font-size:12px;font-weight:400}#progress{height:4px;background:#ffffff17;border-radius:3px;overflow:hidden}#progress>i{display:block;height:100%;background:var(--gold);transition:width .2s}#action-panel{position:absolute;right:25px;top:83px;width:235px;padding:15px;background:#23453ff2;border:1px solid #e1cf994f;border-radius:16px;z-index:8;box-shadow:0 6px 18px #264d4530}#action-panel h3{font-size:16px;margin:0 0 8px}#action-panel p{font-size:12px;line-height:1.6;color:#d5dfc7;margin:6px 0}#action-panel .row{display:flex;gap:6px;margin-top:8px}#action-panel .row button{flex:1;font-size:12px;padding:7px 4px}.gauge{display:flex;gap:4px;height:10px;margin:9px 0 6px}.gauge span{flex:1;background:#ffffff18;border-radius:4px;overflow:hidden}.gauge i{height:100%;display:block;background:#edcb77}.gauge-label{font-size:12px;display:flex;justify-content:space-between}.close{float:right;background:transparent;border:0;padding:0;min-height:30px;width:30px;color:#d4dfca}.ult{background:#be9344;width:100%;margin-top:8px;font-size:13px}#priority{font-size:12px;margin-top:6px;width:100%;min-height:34px}.modal-backdrop{position:absolute;inset:0;z-index:30;background:#19372bbf;backdrop-filter:blur(8px);display:grid;place-items:center;padding:20px}.modal{background:#294b40;border:1px solid #e7d39b70;padding:24px;border-radius:20px;max-width:600px;width:100%;box-shadow:0 20px 80px #09272070}.modal h2{margin:0 0 15px;color:#f3d994;font-size:22px}.modal p{font-size:14px;line-height:1.8;color:#e0e7d6}.modal .row{display:flex;gap:10px;margin-top:15px}.modal .row>*{flex:1;text-align:center}.modal label{display:flex;gap:10px;align-items:center;font-size:14px;margin:10px 0}.modal input{flex:1;min-width:0;accent-color:#e8c273}.modal a{color:#f3d994}.modal .result-amount{font-size:36px;font-weight:900;color:#f6d184;margin:18px 0}.modal .note{font-size:12px;color:#adccb4}.modal .share{display:block;background:#151f1c;border:1px solid #c2d1b550;border-radius:12px;padding:14px;text-align:center;font-size:16px;font-weight:700}.pager{display:flex;justify-content:space-between;align-items:center;margin-top:15px;font-size:12px}#title-screen{position:absolute;inset:0;z-index:15;display:flex;align-items:center;padding:5vw;background:linear-gradient(90deg,#193c31f5,#234633f0 36%,#22483526 77%)}.title-copy{max-width:520px;width:48%;position:relative}.title-eyebrow{font-size:12px;letter-spacing:.24em;color:#c7d8bb}.title-copy h1{font-weight:900;line-height:1.3;font-size:clamp(28px,4.5vw,60px);color:#f8df9c;margin:16px 0 20px;letter-spacing:.01em;text-shadow:0 4px 0 #182f20}.title-copy h1 span{font-size:1.3em;color:#f4c668}.title-copy>p{font-size:14px;color:#d6e2ca;line-height:1.9;margin:15px 0 20px}.mode-select{display:flex;gap:9px}.mode-select button{flex:1;text-align:left;padding:12px 14px;background:#315443;border-color:#c9d6b04a}.mode-select button.active{background:#ecd298;color:#2b4432;border-color:#f7e6bd}.mode-select small{display:block;font-size:12px;margin-top:3px;opacity:.8}#start{width:100%;margin-top:18px;min-height:54px;font-size:18px}#resume{margin-top:10px;width:100%}.title-footer{display:flex;justify-content:space-between;gap:12px;margin-top:18px;align-items:center;color:#c2d3b7;font-size:12px}.title-footer button{font-size:12px;min-height:34px;background:transparent;padding:3px 6px;border:0}.title-art{position:absolute;width:44%;height:72%;right:3%;top:14%;object-fit:contain;filter:drop-shadow(0 18px 14px #233e3840)}.title-badge{position:absolute;right:12%;bottom:9%;font-size:12px;letter-spacing:.14em;color:#244638;background:#f4dfa4;padding:9px 18px;border-radius:30px}.floating-money{position:absolute;pointer-events:none;z-index:7;font-weight:700;color:#ffed97;text-shadow:0 2px 2px #254d38;font-size:13px;animation:money 1.1s forwards}.floating-money.loss{color:#ffe7e4;background:#a44840e8;border-radius:7px;padding:5px}@keyframes money{0%{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,-140%)}}#diagnostics{position:absolute;left:10px;bottom:5px;font-size:12px;color:#335642;pointer-events:none}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#23453f;z-index:99}@media(max-width:1000px){#hud{gap:9px;margin:9px 12px 0}.brand{font-size:12px}.brand b{font-size:16px}.hud-pill{padding:7px 12px}.hud-pill strong{font-size:19px}#dock{margin:0 12px 10px;grid-template-columns:minmax(330px,1fr) 230px;gap:10px;padding:9px}.hero img{width:40px;height:40px}#game-shell{grid-template-rows:72px minmax(0,1fr) 145px}#action-panel{right:13px;top:77px;width:220px}.controls{gap:3px}.controls button{padding:5px 8px}#stage-label{left:15px}.title-copy h1{font-size:35px}}@media(orientation:portrait){#game-shell{grid-template-rows:105px minmax(0,1fr) 205px}#hud{margin:7px 9px 0;display:grid;grid-template-columns:1fr 1.7fr 1fr;grid-template-rows:48px 40px;gap:5px}.brand{display:none}.hud-pill{height:48px;padding:4px 8px}.hud-pill strong{font-size:18px}.hud-pill small{font-size:12px}.controls{grid-column:1/4;justify-content:flex-end;align-items:center}.controls button{height:38px;min-height:38px}.controls:before{content:"資産防衛 TD２";margin-right:auto;color:#2d5446;font-size:13px;font-weight:900}#dock{margin:0 8px 8px;display:flex;flex-direction:column;gap:5px;padding:8px 9px;border-radius:16px}.dock-left,.roster{gap:4px}.hero{min-height:81px;gap:0}.hero img{width:38px;height:38px}.hero b{font-size:12px;letter-spacing:-.07em}.hero small{font-size:12px}#selection-bar{height:20px}#forecast{min-height:26px;gap:6px}#forecast button{font-size:18px;min-height:26px}#wave-button{min-height:39px;font-size:14px}.dock-right{gap:4px}#stage-label{left:12px;top:0}#stage-label strong{font-size:14px}#stage-label small{font-size:12px;margin-top:2px}#action-panel{width:calc(100% - 24px);inset:auto 12px 212px;padding:9px 12px}#action-panel h3{margin:0;font-size:14px}#action-panel p{margin:2px 0;font-size:12px}#action-panel .gauge{margin:4px 0;height:6px}#action-panel .row{margin-top:5px;display:inline-flex;width:60%}#action-panel .ult{width:37%;float:right;margin-top:5px;min-height:44px;padding:5px}#priority{min-height:26px;margin-top:3px;padding:2px}#action-panel .gauge-label{font-size:12px}.modal-backdrop{padding:13px}.modal{padding:18px}.modal h2{font-size:20px}.modal p{font-size:14px;line-height:1.7}.modal .result-amount{font-size:29px}#title-screen{padding:22px;background:linear-gradient(0deg,#1d3d31,#264b3beb 57%,#264b3b20);align-items:flex-end}.title-copy{width:100%;max-width:none;z-index:2}.title-copy h1{font-size:30px;margin:8px 0 10px}.title-copy>p{font-size:12px;line-height:1.6;margin:8px 0 12px}.title-eyebrow{font-size:12px}.title-art{width:77%;height:42%;right:4%;top:1%;object-position:center}.title-badge{display:none}.mode-select button{padding:8px 12px;font-size:14px}.mode-select small{font-size:12px}#start{margin-top:12px;min-height:45px;font-size:16px}.title-footer{margin-top:8px}.node-hit{width:40px;height:40px;min-height:40px}.node-hit.occupied{height:45px}#diagnostics{font-size:12px}}@media(orientation:landscape)and (max-height:600px){#game-shell{grid-template-rows:55px minmax(0,1fr) 104px}#hud{margin:5px 10px 0;gap:8px}.brand{font-size:12px}.brand b{font-size:14px}.hud-pill{height:45px;padding:3px 10px}.hud-pill strong{font-size:17px}.hud-pill small{font-size:12px}#dock{margin:0 8px 5px;padding:5px 8px;gap:9px;grid-template-columns:minmax(340px,1fr) 205px;border-radius:12px}.hero{flex-direction:row;flex-wrap:wrap;gap:0;padding:3px;min-height:58px}.hero img{width:31px;height:31px}.hero b{font-size:12px}.hero small{width:100%;font-size:12px}.roster{gap:4px}.dock-left{gap:2px}#selection-bar{height:18px}#forecast{min-height:24px}#forecast button{min-height:24px;font-size:18px}#wave-button{min-height:36px;padding:4px 8px;font-size:14px}#action-panel{top:58px;width:220px;padding:8px 10px}#action-panel p{font-size:12px;line-height:1.3;margin:3px 0}#action-panel .gauge{margin:4px 0;height:6px}#action-panel .row{margin-top:3px}.ult{min-height:34px;margin-top:3px}#priority{min-height:28px;margin-top:2px}#stage-label{top:1px}#stage-label strong{font-size:14px}#stage-label small{display:none}#title-screen{padding:20px 5vw}.title-copy{width:48%}.title-copy h1{font-size:28px;margin:7px 0}.title-copy>p{margin:7px 0;font-size:12px;line-height:1.5}.title-art{height:85%;top:7%}.title-eyebrow{font-size:12px}.mode-select button{padding:7px 10px;font-size:14px}.mode-select small{font-size:12px}#start{min-height:42px;margin-top:10px;font-size:16px}#resume{min-height:34px;margin-top:7px;padding:5px}.title-footer{margin-top:8px}.modal{padding:14px;max-width:630px}.modal h2{font-size:19px;margin-bottom:7px}.modal p{font-size:13px;line-height:1.55;margin:7px 0}.modal .row{margin-top:9px}.modal .result-amount{margin:8px 0;font-size:30px}.pager{margin-top:6px}.node-hit{width:40px;height:40px;min-height:40px}.node-hit.occupied{height:44px}}#world>svg{display:block;width:100%;height:100%;touch-action:none}.title-copy h1{font-size:clamp(28px,3.35vw,46px);word-break:keep-all;overflow-wrap:normal}.title-copy h1 span{font-size:1.15em}#game-shell[data-phase=title] #hud,#game-shell[data-phase=title] #dock,#game-shell[data-phase=title] #stage-label,#game-shell[data-phase=title] #base-labels{visibility:hidden}@media(orientation:portrait){.title-copy h1{font-size:27px}}@media(orientation:landscape)and (max-height:600px){.title-copy h1{font-size:26px}}.node-hit span{pointer-events:none}.node-hit:active{transform:translate(-50%,-50%)}.node-hit.occupied:active{transform:translate(-50%,-70%)}@media(orientation:landscape)and (max-height:600px){#wave-detail{display:none}#wave-action{white-space:nowrap}#wave-button{justify-content:center}}#game-shell{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);grid-template-rows:70px minmax(0,1fr) 116px;background:radial-gradient(ellipse at 50% 35%,#d8ecd3,#abd1ce 65%,#92baca)}#dock{margin-bottom:10px;padding:8px 12px;grid-template-columns:minmax(0,1fr) 270px}#selection-bar{height:18px}.hero{flex-direction:row;flex-wrap:wrap;padding:3px 5px;gap:3px}.hero b{font-size:12px}.hero small{width:100%;text-align:center}.hero-portrait{display:block;width:42px;height:42px;flex-shrink:0}.hero.unaffordable{opacity:.52}.availability{position:absolute;right:4px;top:2px;font-size:12px;color:#ffe0a4}.hero-portrait,.title-doll,.doll-picture{background-repeat:no-repeat}#roster-toggle{display:none}.doll-overlay{position:absolute;pointer-events:none;transform:translate(-50%)}.doll-picture{position:absolute;width:100%;height:100%;bottom:100%;transform-origin:50% 95%;will-change:transform}.doll-overlay[data-tier="1"]{--charge:#56bfff}.doll-overlay[data-tier="2"]{--charge:#ffd04f}.doll-overlay[data-tier="3"]{--charge:#ff5367}.doll-overlay[data-tier="1"] .doll-picture{filter:drop-shadow(0 0 2px var(--charge)) drop-shadow(0 0 3px var(--charge))}.doll-overlay[data-tier="2"] .doll-picture{filter:drop-shadow(0 0 2px var(--charge)) drop-shadow(0 0 5px var(--charge))}.doll-overlay[data-tier="3"] .doll-picture{filter:drop-shadow(0 0 3px var(--charge)) drop-shadow(0 0 7px var(--charge))}.charge-marker{position:absolute;left:50%;transform:translate(-50%,-80%);min-width:22px;height:18px;line-height:16px;text-align:center;padding:0 4px;border-radius:7px;background:var(--charge);border:1px solid #fff6d5;color:#213632;font-size:12px;font-weight:900;box-shadow:0 1px 5px #24403680}.doll-overlay[data-tier="3"] .charge-marker{color:#fff}.enemy-health{position:absolute;left:50%;transform:translate(-50%);width:clamp(25px,65%,66px);height:5px;background:#433e3899;border-radius:3px;box-shadow:0 0 0 1px #fff5cc99;overflow:hidden}.enemy-health b{display:block;background:#8fe28e;height:100%;width:calc(var(--hp)*100%)}.enemy-health.barrier b{background:#fbd471}.scenery-doll{z-index:1!important}.node-hit{z-index:600}.base-label,#base-labels{z-index:590}#stage-label{z-index:601}#toast{z-index:700}#pause-overlay{z-index:650}.floating-money{z-index:620}.skill-ring{position:absolute;border:3px solid;border-radius:50%;transform:translate(-50%,-50%);z-index:580;pointer-events:none;box-shadow:0 0 12px currentColor}.maximum-flash:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse,transparent 35%,#ff8f8566);pointer-events:none;z-index:590;animation:maximum .7s forwards}@keyframes maximum{0%{opacity:1}to{opacity:0}}.title-art{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);align-content:center;gap:0;height:auto;aspect-ratio:1.1;top:19%}.title-doll{display:block;aspect-ratio:1;width:120%;align-self:center;filter:drop-shadow(0 9px 5px #24463833)}.gauge span:nth-child(1) i{background:#56bfff}.gauge span:nth-child(2) i{background:#ffd04f}.gauge span:nth-child(3) i{background:#ff5367}#action-panel[data-tier="1"] .ult{background:#277faa}#action-panel[data-tier="2"] .ult{background:#b98b29}#action-panel[data-tier="3"] .ult{background:#be4551}@media(orientation:landscape)and (max-height:600px){#game-shell{grid-template-rows:50px minmax(0,1fr) 73px}#hud{margin-top:3px}.hud-pill{height:43px}#dock{margin:0 6px 4px;padding:4px 7px;grid-template-columns:minmax(0,1fr) 176px;gap:7px}#selection-bar{display:none}.roster{display:flex;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;gap:4px}.hero{flex:0 0 79px;min-height:59px;padding:2px;gap:0;justify-content:center}.hero-portrait{width:30px;height:30px}.hero b,.hero small{font-size:12px}#forecast{min-height:19px}#forecast button{min-height:20px;font-size:16px}#wave-button{min-height:32px;font-size:12px}.dock-right{gap:2px}#progress,#stage-label small{display:none}.title-art{top:9%;width:43%;max-height:88%}#action-panel{top:54px}}@media(orientation:portrait){#game-shell{grid-template-rows:95px minmax(0,1fr) 67px}#hud{grid-template-rows:44px 38px;margin:5px 8px 0}.hud-pill{height:44px}#dock{position:relative;display:grid;grid-template-columns:116px minmax(0,1fr);gap:8px;margin:0 6px 5px;padding:5px 7px;align-items:center;overflow:visible}#roster-toggle{display:block;min-height:47px;font-size:13px;padding:5px}.dock-left{display:none;position:absolute;left:0;right:0;bottom:calc(100% + 6px);background:#294e43f7;border:1px solid #dfd3a16b;padding:10px;border-radius:16px;box-shadow:0 -8px 25px #304b3c33}.drawer-open .dock-left{display:flex}.roster{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.hero{min-height:67px;flex-direction:row}.hero-portrait{width:38px;height:38px}.hero small{width:100%}#selection-bar{height:22px}.dock-right{gap:2px}#forecast{min-height:18px}#forecast button{min-height:20px;font-size:16px;padding:0 4px}#wave-button{min-height:29px;font-size:12px;padding:4px 6px}#wave-detail,#progress{display:none}#action-panel{bottom:calc(75px + env(safe-area-inset-bottom));max-width:380px;left:12px;width:calc(100% - 24px)}#stage-label{top:0}.title-art{top:2%;right:13%;width:72%;aspect-ratio:1.5;max-height:38%}.title-doll{width:105%}.title-copy{padding-bottom:env(safe-area-inset-bottom)}}@media(prefers-reduced-motion:reduce){.maximum-flash:after{animation-duration:.1s}.floating-money{animation:none}}.doll-overlay{transform:none;z-index:auto}.charge-marker{z-index:605}.enemy-health{z-index:602}.scenery-doll{z-index:auto!important}.scenery-doll .doll-picture{z-index:1!important}#pause-overlay{background:#24443730;font-size:19px;align-items:start;padding-top:40px}#world>.software-effects{position:absolute;inset:0;pointer-events:none;z-index:580}.doll-overlay:before{content:"";position:absolute;left:25%;top:-4px;width:50%;height:7px;background:#344b3545;border-radius:50%;filter:blur(2px);pointer-events:none;z-index:2}#game-shell{grid-template-columns:minmax(0,1fr) clamp(144px,16vw,180px);grid-template-rows:62px minmax(0,1fr);grid-template-areas:"hud hud" "world dock";gap:6px;padding:max(8px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}#hud{grid-area:hud;display:grid;grid-template-columns:minmax(120px,1fr) auto auto auto auto;grid-template-rows:1fr;gap:8px;margin:0;padding:0;min-width:0;z-index:5;align-items:center}.brand{display:none}.hud-pill{height:50px;padding:6px 12px;min-width:0;white-space:nowrap}.hud-pill.hp{grid-column:2;grid-row:1}.hud-pill.asset{grid-column:3;grid-row:1}.hud-pill:not(.hp):not(.asset){grid-column:4;grid-row:1}.hud-pill small{font-size:12px;letter-spacing:0}.hud-pill strong{font-size:clamp(16px,1.8vw,22px)}.controls{grid-column:5;grid-row:1;gap:4px;justify-content:flex-end}.controls:before{content:none}.controls button{min-width:42px;height:42px;min-height:42px;padding:4px 7px;font-size:14px}#stage-label{position:static;grid-column:1;grid-row:1;min-width:0;padding:4px 2px;pointer-events:none;color:#233f36;background:none}#stage-label strong{display:block;font-size:14px;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#stage-label small{display:block;font-size:12px;color:#345244;margin-top:3px}#world{grid-area:world;isolation:isolate;z-index:0;min-width:0;min-height:0;overflow:hidden;border-radius:14px}#dock{grid-area:dock;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:8px;margin:0;padding:8px;border-radius:14px;min-width:0;min-height:0;z-index:4;background:#284c43;box-shadow:0 3px 12px #264d4526}#roster-toggle,#selection-bar{display:none!important}.dock-left,.drawer-open .dock-left{position:static;display:flex;order:2;flex:1;min-height:0;gap:0;padding:0;background:none;border:0;border-radius:0;box-shadow:none}.roster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));width:100%;height:100%;gap:6px;overflow:visible;align-items:stretch}.hero{display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:center;gap:2px;min-height:44px;min-width:0;flex:auto;padding:3px 2px;background:#f2e8c9;border:2px solid #d9dfb2;color:#294a3c;filter:brightness(1.06);opacity:1}.hero b,.hero .availability{display:none}.hero small{width:auto;max-width:100%;font-size:14px;color:#294a3c;line-height:1.15;white-space:nowrap}.hero-portrait{width:clamp(40px,8vh,76px);height:auto;aspect-ratio:1;max-width:100%;flex-shrink:1}.hero.active{background:#fff1b8;border-color:#efb62f;box-shadow:inset 0 0 0 1px #fff9dc,0 0 7px #ffdb6360}.hero.unaffordable,.hero:disabled{filter:grayscale(.85) brightness(.65);opacity:.7}.hero:hover:not(:disabled){filter:brightness(1.15)}.dock-right{display:contents}#forecast{order:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:0;font-size:14px}#forecast-label{margin:0;white-space:nowrap}#enemy-icons{display:flex;flex-wrap:wrap;justify-content:center;gap:3px;min-width:0}#forecast button{width:30px;min-width:30px;min-height:30px;height:30px;padding:0;font-size:20px;border-radius:8px}#wave-button{order:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex-shrink:0;min-width:0;width:100%;min-height:46px;padding:6px 3px;margin:0;font-size:14px;line-height:1.2;box-shadow:0 2px #97783e}#wave-action{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center}#wave-detail{display:block;font-size:12px}#progress{display:none}#action-panel{position:absolute;z-index:800;width:136px;max-width:calc(100% - 12px);right:auto;bottom:auto;padding:6px;background:#244b40;border:1px solid #f3d892;border-radius:12px;box-shadow:0 3px 10px #17362b55;transform:none}#action-panel.expanded{width:188px}.quick-head{display:flex;align-items:center;gap:3px;height:28px;margin-bottom:5px}.quick-head .hero-portrait{width:24px;height:24px;flex-shrink:0}#quick-level{font-size:12px;white-space:nowrap;margin-right:auto}.quick-head button{width:25px;min-width:25px;min-height:28px;height:28px;border:0;padding:0;border-radius:7px;font-size:16px;background:#3b6152}.quick-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.quick-buttons button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:100%;min-height:48px;margin:0;padding:2px;border-radius:8px;float:none}.quick-buttons b{font-size:22px;line-height:1.1}.quick-buttons small{font-size:13px;line-height:1.25}#upgrade{background:#d7ad49;color:#233e32}#action-panel .ult{background:#397c94;font-size:14px}#action-panel[data-tier="2"] .ult{background:#bc8c20}#action-panel[data-tier="3"] .ult{background:#bc3c51}#extra-actions{border-top:1px solid #d8dfbd40;margin-top:7px;padding-top:6px}#extra-actions h3{font-size:14px;margin:0}#extra-actions p{font-size:12px;margin:4px 0;line-height:1.4}#extra-actions button{display:block;width:100%;min-height:32px;font-size:12px;margin:4px 0 0;padding:4px}.modal-backdrop{z-index:1000;isolation:isolate}.modal{max-height:100%;overflow-y:auto;overscroll-behavior:contain;background:#294b40}.modal h2{padding-right:20px}.modal p{font-size:14px}#title-screen{z-index:900}#toast{top:8px;max-width:calc(100% - 16px);font-size:14px;padding:8px 12px}.node-hit{width:44px;height:44px;min-height:44px}.node-hit.occupied{height:48px}.base-label{font-size:12px}@media(orientation:landscape)and (max-height:500px){#game-shell{grid-template-rows:50px minmax(0,1fr);gap:4px}#hud{gap:5px;grid-template-columns:minmax(90px,1fr) auto auto auto auto}.hud-pill{height:44px;padding:4px 9px}.hud-pill strong{font-size:17px}.controls{gap:3px}.controls button{min-width:38px;min-height:38px;height:38px;padding:3px 5px}#dock{gap:5px;padding:6px}.roster{gap:4px}.hero-portrait{width:clamp(30px,9vh,48px)}.hero small{font-size:13px}#forecast{gap:1px}#forecast button{width:28px;min-width:28px;min-height:28px;height:28px;font-size:18px}#wave-button{min-height:40px}#wave-detail{display:none}.modal-backdrop{padding:10px}}@media(orientation:portrait){#game-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:90px minmax(0,1fr) 112px;grid-template-areas:"hud" "world" "dock";gap:4px}#hud{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:44px 40px;gap:4px}.hud-pill{height:44px;padding:5px 10px}.hud-pill.hp{grid-column:1;grid-row:1}.hud-pill.asset{grid-column:2;grid-row:1}.hud-pill:not(.hp):not(.asset){grid-column:3;grid-row:1}.hud-pill strong{font-size:16px;letter-spacing:0}.hud-pill small{font-size:12px}#stage-label{grid-column:1;grid-row:2;padding:2px 0}#stage-label strong{font-size:14px}#stage-label small{font-size:12px;white-space:nowrap}.controls{grid-column:2/4;grid-row:2;gap:3px}.controls button{width:40px;min-width:40px;height:38px;min-height:38px;padding:3px;font-size:14px}#dock{display:grid;grid-template-columns:minmax(0,1fr) 128px;grid-template-rows:62px 34px;grid-template-areas:"roster roster" "forecast wave";padding:5px;gap:4px;border-radius:12px}.dock-left,.drawer-open .dock-left{grid-area:roster;display:block;height:62px;width:100%}.roster{grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:1fr;gap:3px}.hero{min-height:62px;padding:2px 0;gap:0;border-radius:9px}.hero-portrait{width:40px;height:40px;max-width:100%}.hero small{font-size:12px}#forecast{grid-area:forecast;flex-direction:row;justify-content:flex-start;gap:4px;overflow:hidden;font-size:12px}#enemy-icons{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;gap:2px}#forecast button{width:28px;min-width:28px;min-height:30px;height:30px;font-size:18px;flex-shrink:0}#wave-button{grid-area:wave;min-height:34px;height:34px;font-size:12px;padding:2px;line-height:1.1}#wave-detail{display:none}#action-panel{bottom:auto;right:auto;max-width:calc(100% - 12px)}}#action-panel .quick-buttons .ult{width:100%;float:none;min-height:48px;margin:0;padding:2px}@media(orientation:portrait){#hud{grid-template-columns:repeat(12,minmax(0,1fr))}.hud-pill.hp{grid-column:1/4}.hud-pill.asset{grid-column:4/10}.hud-pill:not(.hp):not(.asset){grid-column:10/13}#stage-label{grid-column:1/6}.controls{grid-column:6/13}}#action-panel,#action-panel.expanded{background:none;border:0;box-shadow:none;padding:0;pointer-events:none;max-width:none;min-height:0}#action-panel .quick-head,#action-panel .quick-buttons{display:contents}#quick-portrait,#quick-level{display:none}#action-panel button{pointer-events:auto}#action-panel #upgrade,#action-panel #skill,#action-panel #close-action,#action-panel #more-actions{position:absolute;width:44px;min-width:44px;min-height:44px;height:44px;margin:0;padding:2px;border-radius:12px;box-shadow:0 2px 4px #18372e70;border:1px solid #fff1bb99}#action-panel #skill{left:calc(50% - 22px);top:0}#action-panel #upgrade{right:0;top:45%}#action-panel #close-action{left:0;top:45%;background:#eef4e8;color:#284c43;font-size:22px}#action-panel #more-actions{left:0;bottom:0;height:32px;min-height:32px;background:#355b50}#action-panel .quick-buttons small{font-size:11px}#action-panel .quick-buttons b{font-size:19px}#extra-actions{position:absolute;width:180px;right:0;background:#244b40;border:1px solid #daca95;border-radius:10px;padding:8px;pointer-events:auto;z-index:2}.node-hit.occupied:hover,.node-hit.occupied.selected{background:none;box-shadow:none}.tower-level{position:absolute;left:50%;top:2px;transform:translate(-50%);font-size:clamp(10px,1.2vw,12px);line-height:15px;white-space:nowrap;color:#fff5d8;text-shadow:0 1px 2px #1b3827,1px 0 2px #1b3827;background:#234531ba;border-radius:4px;padding:0 3px;z-index:590}.buff-aura{position:absolute;left:12%;top:-8px;width:76%;height:13px;border-radius:50%;border:2px solid var(--buff);box-shadow:0 0 5px var(--buff),inset 0 0 3px var(--buff);background:transparent;z-index:3}.buff-icon{position:absolute;left:50%;transform:translate(-50%,-105%);width:30px;height:30px;border-radius:50%;color:var(--buff);background:#183d32e8;opacity:var(--buff-alpha);z-index:605}.buff-icon svg{position:absolute;inset:0;fill:none;stroke-width:3;transform:rotate(-90deg)}.buff-track{stroke:#f4eed22d}.buff-countdown{stroke:var(--buff);stroke-linecap:round}.buff-icon b{position:absolute;inset:0;display:grid;place-items:center;font-size:18px;line-height:1}.doll-overlay .doll-picture{filter:none!important}.doll-overlay[data-buff-tier="1"] .doll-picture,.doll-overlay[data-buff-tier="2"] .doll-picture,.doll-overlay[data-buff-tier="3"] .doll-picture{filter:drop-shadow(0 0 var(--buff-strength) var(--buff)) drop-shadow(0 0 2px var(--buff))!important;opacity:1!important}.enemy-doll[data-hit=true] .doll-picture{filter:brightness(2.8)!important}#world>.combat-effects{position:absolute;inset:0;pointer-events:none;z-index:580}.skill-ring{max-width:90px;max-height:55px;z-index:3}#dock .dock-left,#dock .roster{min-height:0}#dock .hero{min-height:0;overflow:hidden}#dock .hero-portrait{flex:0 1 auto;min-height:0;object-fit:contain}@media(orientation:landscape){#dock{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) 42px;gap:5px}#dock #forecast{grid-row:1;min-height:0}#dock .dock-left{grid-row:2;display:block;height:100%}#dock #wave-button{grid-row:3;height:42px;min-height:42px;font-size:12px}#dock #wave-detail{display:none}#dock .hero{height:100%;padding:2px;gap:0}#dock .hero-portrait{width:min(62px,8vh);height:min(62px,8vh);max-height:calc(100% - 16px)}#dock .hero small{line-height:14px;font-size:12px}}@media(orientation:landscape)and (max-height:420px){#game-shell{grid-template-columns:minmax(0,1fr) 126px;grid-template-rows:44px minmax(0,1fr);padding:4px 6px;gap:3px}#hud{grid-template-columns:minmax(90px,1fr) auto auto auto auto;gap:4px}.hud-pill{height:40px;padding:3px 7px}.hud-pill strong{font-size:15px}.hud-pill small{font-size:10px}.controls button{min-width:34px;height:34px;min-height:34px;font-size:12px}#stage-label strong{font-size:12px}#stage-label small{font-size:10px}#dock{padding:4px;gap:3px;grid-template-rows:24px minmax(0,1fr) 32px}#dock #forecast{flex-direction:row;gap:0}#dock #forecast-label{font-size:9px}#dock #enemy-icons{gap:0}#dock #forecast button{width:20px;min-width:20px;height:22px;min-height:22px;font-size:15px}#dock #wave-button{min-height:32px;height:32px;font-size:10px}#dock .roster{gap:3px}#dock .hero-portrait{width:32px;height:32px}#dock .hero small{font-size:11px;line-height:12px}}#diagnostics:not(:empty){position:absolute;right:5px;top:5px;z-index:700;background:#183d32d9;padding:3px 6px;border-radius:5px;font-size:11px;color:#fff;pointer-events:none}.controls #speed{white-space:nowrap;width:auto;min-width:48px}#title-screen{background:#153f44 url(/title-illustration.webp) center/cover no-repeat;padding:4vw}#title-art{display:none}.title-copy{width:43%;max-width:600px}.title-copy h1{font-size:clamp(26px,3.2vw,49px);text-shadow:0 3px 4px #123435}.title-copy>p{color:#fff6d5;text-shadow:0 1px 3px #123435}.title-badge{right:5%;bottom:3%}#asset-guide{display:inline-block;min-height:0;line-height:1;height:auto;padding:0 3px;margin:0;background:transparent;border:0;color:#f7d78c;font-size:10px;vertical-align:baseline}.asset-guide{width:100%;border-collapse:collapse;font-size:13px}.asset-guide th,.asset-guide td{padding:9px 5px;text-align:left;border-bottom:1px solid #b7caae50}.asset-guide thead{color:#ffe1a1}.asset-guide .reached{background:#74905c35}#bonus-feed{position:absolute;right:8px;bottom:8px;z-index:610;border-radius:8px;background:#264c40e8;color:#ffe7a1;padding:5px 9px;pointer-events:none;font-size:12px}@media(orientation:portrait){#title-screen{padding:22px;align-items:flex-end;background-image:linear-gradient(0deg,#123d3e,#123d3ef5 38%,#123d3e00 72%),url(/title-illustration.webp);background-size:cover,160% auto;background-position:center,right top;background-repeat:no-repeat}.title-copy{width:100%}.title-copy h1{font-size:29px}.title-copy>p{font-size:13px;margin:8px 0}.title-eyebrow{font-size:10px}.mode-select button{font-size:13px}.asset-guide{font-size:12px}}@media(orientation:landscape)and (max-height:500px){#title-screen{padding:12px 4vw}.title-copy{width:46%}.title-copy h1{font-size:23px;line-height:1.15;margin:5px 0}.title-copy>p{font-size:11px;margin:5px 0}.title-eyebrow{font-size:10px}.title-footer{margin-top:4px}.mode-select button{padding:5px 8px;min-height:42px;font-size:12px}.mode-select small{font-size:10px}#start{min-height:36px;margin-top:7px;padding:5px}#resume{min-height:28px;margin-top:4px}.title-badge{font-size:9px}}#game-shell{touch-action:pan-y}#world,#hud,#dock,#action-panel{touch-action:none}.modal{touch-action:pan-y}.modal input,.modal textarea{font-size:16px}#restore-view{position:fixed;z-index:2147483647;transform-origin:0 0;min-height:32px;padding:4px 8px;font-size:11px;background:#254d43ed;color:#fff0bd;border:1px solid #f5d787;border-radius:8px;touch-action:none;opacity:.8}#restore-view.zoomed{opacity:1;min-height:44px;background:#ffe19c;color:#254238;font-weight:700}#action-panel #remove{position:absolute;bottom:0;left:calc(50% - 26px);width:52px;min-height:32px;height:32px;padding:2px;font-size:12px;background:#f0e4bb;color:#28483e;border:1px solid #fff4cf;border-radius:9px}#action-panel #remove[hidden]{display:none}#share-text{width:100%;min-height:120px}#share-device,#share-copy{margin:5px;min-height:44px}#action-panel #upgrade,#action-panel #close-action{top:calc((100% - 44px)*.45)}#hud{grid-template-columns:minmax(90px,1fr) 74px auto auto auto auto}#hud #restore-view{position:static;grid-column:2;grid-row:1;min-width:0;width:74px;height:36px;line-height:1.2;font-size:10px;opacity:1;transform:none}#hud .hp{grid-column:3}#hud .asset{grid-column:4}#hud .hud-pill:not(.hp):not(.asset){grid-column:5}#hud .controls{grid-column:6}@media(orientation:portrait){#hud{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:3px}#hud .hp{grid-column:1/4}#hud .asset{grid-column:4/10}#hud .hud-pill:not(.hp):not(.asset){grid-column:10/13}#hud #stage-label{grid-column:1/5;grid-row:2}#hud #stage-label strong{font-size:11px}#hud #stage-label small{font-size:10px}#hud #restore-view{grid-column:5/7;grid-row:2;width:100%;font-size:9px;padding:2px;white-space:nowrap}#hud .controls{grid-column:7/13;grid-row:2;gap:2px}#hud .controls button{width:31px;min-width:31px;padding:2px;font-size:12px}#hud .controls #speed{min-width:40px}}#share-x{display:flex;align-items:center;justify-content:center;min-height:52px;position:relative;z-index:1;pointer-events:auto;touch-action:manipulation}#restore-view,#hud #restore-view{white-space:nowrap;word-break:keep-all;letter-spacing:0;padding-left:2px;padding-right:2px}.home-vault{position:absolute;transform:translate(-50%,-100%);z-index:550;object-fit:contain;pointer-events:none;filter:drop-shadow(0 3px 2px #1b36254d)}.home-vault[hidden]{display:none}.base-label{z-index:610;white-space:nowrap;font-size:11px}#hud #restore-view{white-space:nowrap!important;font-size:10px!important;min-width:58px;line-height:1!important}@media(orientation:portrait){#hud #stage-label{grid-column:1/4}#hud #restore-view{grid-column:4/7}}.base-label{transform:translate(-50%);pointer-events:none}
