:root{color:#f4f5ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;background:#080d20;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{margin:0}button,select,input,textarea{font:inherit}button,a{touch-action:manipulation}#app{background:radial-gradient(at 0 0,#26395c88,#0000 60%),radial-gradient(at 100% 90%,#5c265166,#0000 65%),#080d20;width:100%;height:100dvh;position:relative;overflow:hidden}#battlefield{touch-action:none;position:absolute;inset:0}canvas{touch-action:none;display:block}#ui{pointer-events:none;position:absolute;inset:0}.scrim{padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));pointer-events:auto;background:#060b1ee8;justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow:auto}.panel{text-align:center;background:radial-gradient(at 50% 0,#334c7777,#0000 60%),linear-gradient(150deg,#14223f,#211b3b);border:2px solid #6f75a7;border-radius:26px;width:min(100%,540px);max-height:calc(100dvh - 24px);padding:26px 30px;position:relative;overflow:auto;box-shadow:0 8px #030918,0 0 0 5px #0d1429,0 25px 80px #0008}.brand{letter-spacing:2px;color:#efce83;justify-content:center;align-items:center;gap:8px;font-size:10px;font-weight:800;display:flex}.brand img{object-fit:contain;width:32px;height:32px}.eyebrow{color:#bac9e0;letter-spacing:2.5px;margin:16px 0 8px;font-size:10px;font-weight:800}h1{letter-spacing:-1px;color:#fff5c7;text-shadow:0 3px #ad691d,0 6px #60352b,0 8px #080d20;margin:12px 0 18px;font-family:Arial Black,Arial,sans-serif;font-size:clamp(40px,8vw,64px);font-weight:1000;line-height:1;transform:skewY(-2deg)}h1 em{color:#ffda55;font-style:normal}p{line-height:1.5}.tagline{color:#b7c8df;margin:8px 0 20px;font-size:13px}button{pointer-events:auto;color:#eff7ff;letter-spacing:.5px;cursor:pointer;background:linear-gradient(#344369,#253151);border:1px solid #7686b0;border-bottom:4px solid #07142b;border-radius:11px;min-height:46px;padding:10px 14px;font-size:12px;font-weight:850;box-shadow:0 2px #020719}button:hover{filter:brightness(1.16)}button:active{border-bottom-width:2px;transform:translateY(2px)}button:disabled{opacity:.35;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline-offset:3px;outline:3px solid #83f3ff}.primary{color:#382911;text-shadow:0 1px #fff9;background:linear-gradient(#fff095,#ffce45);border-color:#ffe7a4 #ffe7a4 #a3621f;width:100%;min-height:50px;font-size:15px}.selected{color:#ffe485;background:linear-gradient(#635631,#3b3540);border-color:#fadb64}.mode-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.choice-row{color:#b8c9dc;justify-content:space-between;align-items:center;margin:16px 0 12px;font-size:12px;display:flex}select{color:#eff7ff;background:#101b32;border:1px solid #566887;border-radius:8px;min-height:44px;padding:9px 12px}.level-grid{grid-template-columns:repeat(5,1fr);gap:7px;display:grid}.level-grid button{min-height:54px;padding:6px 2px;font-size:20px}.level-grid small{letter-spacing:1px;margin-top:4px;font-size:7px;display:block}.map-name{margin:15px 0 4px;font-size:15px;font-weight:800}.hint{color:#c1cde1;min-height:36px;margin:6px 0 16px;font-size:12px}.menu-bottom{justify-content:center;gap:7px;margin-top:14px;display:flex}.menu-bottom button{flex:1;padding:10px 5px;font-size:10px}.local-note{color:#b5bdd3;margin:14px 0 0;font-size:10px}.stack{gap:10px;display:grid}.battle-header{top:max(12px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));position:absolute;right:180px}.battle-header .eyebrow{margin:0 0 5px;font-size:9px;display:block}.battle-header strong{font-size:14px;display:block}.battle-header #scoreline{color:#ced9e8;margin-top:6px;font-size:11px;display:block}.battle-toolbar{top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));gap:8px;display:flex;position:absolute}.battle-toolbar button{min-width:66px;min-height:44px;padding:8px;font-size:10px}.battle-header>div{background:#080e22dd;border-radius:10px;padding:10px}footer{bottom:max(12px,env(safe-area-inset-bottom));text-align:center;position:absolute;left:12px;right:12px}.powers{justify-content:center;gap:10px;display:flex}.powers button{min-width:128px}#status{color:#e9f1fa;background:#080e22e8;border-radius:10px;max-width:520px;margin:0 auto 8px;padding:8px 14px;font-size:12px}#lesson{text-align:center;background:#122844f2;border:1px solid #7ed5e4;border-radius:14px;padding:16px;font-size:14px;line-height:1.5;position:absolute;top:115px;left:16px;right:16px}#lesson .primary{pointer-events:auto;margin-top:12px}#debug{z-index:4;background:#000d;padding:10px;font-size:10px;position:absolute;top:110px;left:12px}.result-title{margin:14px 0 6px;font-size:clamp(46px,10vw,76px)}.stars{justify-content:center;align-items:center;gap:4px;margin:12px -8px 8px;display:flex}.medal{flex:1;max-width:130px}.medal span{color:#424967;text-shadow:0 4px #0a1025;font-size:clamp(68px,19vw,114px);line-height:1.1;display:block}.medal.earned span{color:#ffd447;text-shadow:0 3px #fff1a4,0 7px #9c5a18,0 10px #050b20;filter:drop-shadow(0 0 12px #f7b62733);animation:.5s ease-out both star-pop}.medal:nth-child(2) span{animation-delay:.15s;transform:scale(1.13)}.medal:nth-child(3) span{animation-delay:.3s}.medal small{letter-spacing:1px;color:#c5cee0;margin-top:10px;font-size:8px;display:block}.result-level{color:#c4cfe2;margin:18px 0 8px;font-size:11px}.score-big{font-variant-numeric:tabular-nums;color:#fff;font-size:44px;font-weight:900}.score-big small{letter-spacing:2px;color:#f9d477;font-size:9px;display:block}.result-time{margin:12px 0;font-size:22px;font-weight:800}.result-time span{color:#b7c5db;letter-spacing:1.5px;margin-top:4px;font-size:8px;display:block}details{text-align:left;background:#0a142966;border-radius:10px;margin:12px 0;padding:12px;font-size:12px}summary{cursor:pointer;color:#c5d8eb}.breakdown{grid-template-columns:1fr auto;gap:8px;margin-top:12px;font-size:11px;display:grid}.result-actions{grid-template-columns:1fr 1fr;gap:9px;display:grid}.result-actions .primary,.result-actions #share{grid-column:1/-1}.settings{text-align:left;gap:12px;margin:25px 0;display:grid}.settings label{justify-content:space-between;align-items:center;gap:14px;min-height:36px;font-size:13px;display:flex}.settings input[type=range]{width:52%}.settings input[type=checkbox]{width:22px;height:22px}.manual{text-align:left;color:#ccd9e9;font-size:13px}.record-list{text-align:left;max-height:45vh;font-size:13px;overflow:auto}.celebration{pointer-events:none;z-index:10;position:absolute;inset:0;overflow:hidden}.balloon{background:var(--color);border:2px solid #fff6;border-radius:50%;width:35px;height:45px;animation:6s ease-in both balloon-rise;position:absolute;bottom:-100px;box-shadow:inset -6px -8px 8px #0003,inset 5px 5px 6px #fff3}.balloon:after{content:"";background:#ddd8;width:1px;height:60px;position:absolute;top:100%;left:50%}.confetti{background:var(--color);width:7px;height:20px;animation:4.5s linear both confetti-fall;position:absolute;top:-40px}@keyframes balloon-rise{to{transform:translate(25px,-120vh)rotate(8deg)}}@keyframes confetti-fall{to{transform:translate(-30px,110vh)rotate(620deg)}}@keyframes star-pop{0%{opacity:0;translate:0 -15px}to{opacity:1;translate:0}}.reduced-motion *{transition:none!important;animation:none!important}.high-contrast .panel{background:#050913;border-color:#fff}.high-contrast #status{background:#000}.high-contrast button{border-color:#fff}textarea{width:100%;min-height:100px}@media (max-width:420px){.panel{padding:20px 18px}.menu-panel h1{font-size:46px}.result-title{font-size:54px}.stars{margin-inline:0}.medal small{font-size:7px}.brand{font-size:9px}.battle-header{right:166px}.battle-header strong{font-size:12px}.battle-toolbar{gap:5px}.battle-toolbar button{min-width:62px}.menu-panel .eyebrow{margin-top:10px}.tagline{margin-bottom:14px}.hint{font-size:11px}.score-big{font-size:38px}}@media (max-height:700px){.panel{padding:16px 20px}.menu-panel h1{margin:8px 0;font-size:38px}.brand img{width:24px;height:24px}.tagline{margin:6px 0 10px}.eyebrow,.choice-row{margin:8px 0}.hint{margin:6px 0 10px}.level-grid button{min-height:46px}.local-note{margin-top:8px}.result-title{font-size:44px}.medal span{font-size:68px}.score-big{font-size:32px}.result-time{margin:6px 0}}@media (prefers-reduced-motion:reduce){.celebration,.medal span{animation:none!important}}.editor{pointer-events:auto;background:#0b1426;padding:16px;position:absolute;inset:0;overflow:auto}.editor-head{justify-content:space-between;align-items:center;max-width:1100px;margin:auto;display:flex}.editor-head h2{color:#ffda55;letter-spacing:2px}.editor-layout{grid-template-columns:minmax(180px,1fr) minmax(250px,360px);gap:24px;max-width:1100px;margin:auto;display:grid}.editor-board{justify-content:center;align-items:flex-start;display:flex}.editor-board svg{touch-action:none;border:2px solid #7487a1;width:auto;max-width:100%;height:calc(100dvh - 110px)}.editor-tools{gap:10px;padding-bottom:30px;display:grid}.editor-tools label{color:#c1d4e8;gap:5px;font-size:12px;display:grid}.editor-tools input,.editor-tools textarea{color:#fff;background:#14243b;border:1px solid #657c9c;border-radius:7px;width:100%;min-width:0;padding:10px}.editor-tools textarea{min-height:60px}.editor-row{gap:8px;display:flex}.editor-row>*{flex:1;min-width:0}.editor-tools select{width:100%}#selection{gap:10px;display:grid}#validation{color:#ffda55;font-size:12px}.level-grid{max-height:185px;padding:3px;overflow:auto}@media (orientation:landscape) and (min-width:600px){.battle-header{width:calc(50vw - 28.125dvh - 32px);top:18px;left:16px;right:auto}.battle-toolbar{flex-wrap:wrap;max-width:calc(50vw - 28.125dvh - 32px);right:16px}footer{width:calc(50vw - 28.125dvh - 32px);bottom:16px;left:auto;right:16px}.powers{flex-wrap:wrap}.powers button{flex:1;min-width:0}#lesson{width:calc(50vw - 28.125dvh - 32px);max-height:calc(100dvh - 140px);font-size:12px;top:120px;left:16px;right:auto;overflow:auto}#debug{white-space:pre-wrap;max-width:24vw;top:100px}}@media (max-width:600px){.editor-layout{grid-template-columns:1fr;gap:12px}.editor-board svg{height:55dvh}.editor-head h2{font-size:18px}}.install-row{margin-top:10px}.install-row button{background:0 0;min-height:36px;font-size:9px}.editor-board{align-self:start;position:sticky;top:0}@media (orientation:portrait) and (max-height:740px){#battlefield{top:80px;bottom:100px}}.studio-return{color:#dfc780;pointer-events:auto;margin-top:10px;padding:10px;font-size:11px;display:inline-block}.menu-panel .brand{letter-spacing:2.5px;margin:2px 0 22px;font-size:13px}.menu-panel .brand img{width:46px;height:46px}.menu-panel h1{margin-top:0}.result-actions #card{grid-column:1/-1}.boss-status{text-align:center;color:#ffe38c;pointer-events:none;background:#201c32eb;border:1px solid #d1aa65;border-radius:8px;padding:8px;font-size:10px;font-weight:800;position:absolute;top:90px;left:12px;right:12px}@media (max-height:500px){.boss-status{font-size:9px;top:12px;left:30%;right:30%}}.boss-portrait{filter:drop-shadow(0 8px 12px #0005);width:170px;height:170px;margin:10px auto;display:block}.title-actions{gap:14px;margin:24px 0;display:grid}.title-actions .primary{letter-spacing:2px;min-height:70px;font-size:23px}.mode-cards{gap:12px;margin:22px 0;display:grid}.mode-cards button{min-height:76px;font-size:17px}.mode-cards small{letter-spacing:0;color:#c4d5ed;margin-top:7px;font-size:11px;font-weight:400;display:block}.setup-title{overflow-wrap:normal;font-size:clamp(30px,7vw,46px)}.setup-panel #back,.setup-panel #level-select,.mode-panel #back{width:100%;margin-top:14px}.setup-panel .map-name{font-size:16px}.setup-panel .hint{line-height:1.65}.setup-panel .level-grid{max-height:260px;padding:4px;overflow-y:auto}@media (max-height:650px){.title-actions{gap:10px;margin:16px 0}.title-actions .primary{min-height:58px}.mode-cards{gap:8px;margin:14px 0}.mode-cards button{min-height:64px}}.role-guide p{min-height:48px;padding-left:54px;position:relative}.role-symbol{background:#56dafa;border:2px solid #fff;width:34px;height:34px;position:absolute;top:6px;left:4px}.role-symbol.normal{border-radius:50%}.role-symbol.attack{clip-path:polygon(50% 0,100% 100%,0 100%)}.role-symbol.defense{clip-path:polygon(50% 0,93% 23%,86% 68%,50% 100%,14% 68%,7% 23%)}.role-symbol.mortar{clip-path:polygon(50% 0,98% 35%,79% 91%,21% 91%,2% 35%)}.role-symbol.command{clip-path:polygon(50% 0,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%)}
