:root{font-family:'Trebuchet MS','Segoe UI',system-ui,sans-serif;color:#f6f0db;background:#101c2b;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-width:320px;overflow-x:hidden}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}.hidden{display:none!important}
.app{min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(circle at 50% 25%,#324960 0,#15253a 58%,#101b2a 100%)}
.topbar{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px clamp(16px,3vw,46px);background:linear-gradient(180deg,#263a51,#17283e);border-bottom:3px solid #c39452;box-shadow:0 4px 20px #0b1425aa;z-index:2}
.brand{display:flex;align-items:center;gap:10px;letter-spacing:1px;font-size:clamp(17px,1.65vw,26px);font-weight:900;white-space:nowrap}.brand b{color:#f7cc6c}.brand-gem{font-size:32px;color:#9febff;text-shadow:0 0 16px #72d8f8}
.resources{display:flex;gap:10px}.resource{height:46px;min-width:94px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid #7c847a;background:#101f31;border-radius:10px;box-shadow:inset 0 2px 0 #ffffff14}.resource span{font-size:21px}.resource strong{font-size:19px;font-weight:900}.resource small{opacity:.62}.lives span{color:#ff7b7b}.gold span{color:#f5c861;text-shadow:0 0 8px #f5c861}.wave span{color:#a5d6fa}.top-actions{display:flex;gap:7px}.icon-button{height:46px;min-width:46px;padding:0 10px;background:#31465e;color:#f8ecd2;border:1px solid #71819a;border-radius:10px;font-size:22px;font-weight:900;box-shadow:0 3px 0 #101e32}.icon-button:hover,.icon-button:focus-visible{background:#496789}
.game-shell{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:16px;padding:16px;position:relative}.battlefield{position:relative;width:min(100%,calc((100vh - 190px)*1.765));max-width:1200px;aspect-ratio:1200/680;border:6px solid #d8ad69;border-radius:18px;box-shadow:0 0 0 4px #664d36,0 18px 40px #071421b0;overflow:hidden;flex-shrink:1}.battlefield canvas{display:block;width:100%;height:100%;touch-action:manipulation;cursor:pointer}
.side-panel{align-self:center;width:256px;flex:0 0 256px;max-height:calc(100vh - 175px);overflow:auto;padding:22px 17px 17px;position:relative;background:linear-gradient(145deg,#334965,#1b2b41);border:2px solid #bf965e;border-radius:16px;box-shadow:0 12px 27px #071421a8}.panel-close{position:absolute;right:10px;top:4px;border:0;color:#dfe9ec;background:none;font-size:27px}.panel-kicker,.eyebrow{color:#f8c979;font-weight:900;font-size:11px;letter-spacing:2px}.side-panel h2{font-size:22px;margin:8px 0 1px}.panel-icon{font-size:41px;margin-top:12px}.panel-copy,.panel-hint{color:#c7d4df;font-size:13px;line-height:1.4}.panel-hint{margin-bottom:0}.level{font-size:12px;color:#b2e6f5;font-weight:900;letter-spacing:1px;margin:7px 0 18px}.stat{border-top:1px solid #ffffff22;padding:9px 2px;display:flex;justify-content:space-between;color:#cbd5dd;font-size:14px}.stat strong{color:#fff}.tower-choice{width:100%;display:flex;align-items:center;gap:8px;margin:10px 0;padding:9px 7px;text-align:left;border:1px solid #78919d;border-radius:10px;background:#425875;color:#fff;box-shadow:0 3px 0 #16283a}.tower-choice:not(:disabled):hover{background:#557293}.tower-choice:disabled{filter:grayscale(.6)}.choice-icon{font-size:25px}.choice-text{flex:1;display:flex;flex-direction:column;line-height:1.25}.choice-text strong{font-size:13px}.choice-text small{font-size:11px;color:#bfd4de}.tower-choice b{font-size:12px;color:#f7d372;white-space:nowrap}
.primary-button,.secondary-button{border-radius:10px;padding:12px 19px;border:1px solid #fff4bd;font-weight:900;letter-spacing:.2px;white-space:nowrap}.primary-button{background:linear-gradient(#f5d78a,#dea957);color:#3a2a22;box-shadow:0 4px 0 #8c6035,0 5px 12px #0004}.primary-button:not(:disabled):hover{filter:brightness(1.08);transform:translateY(-1px)}.primary-button:active,.secondary-button:active{transform:translateY(2px);box-shadow:none}.secondary-button{background:#34495f;color:#f4e6ce;border-color:#7b91a0;box-shadow:0 4px 0 #172638}.full{width:100%;margin-top:13px}.big{display:block;width:100%;font-size:17px;min-height:52px;margin:14px auto}.text-button{border:0;background:none;color:#b9dbea;font-weight:800;margin:8px auto 0;display:block;padding:7px 14px}.text-button:hover{text-decoration:underline}
.bottom-bar{min-height:86px;padding:10px clamp(16px,3vw,46px);background:#18293c;border-top:3px solid #c39452;display:flex;align-items:center;justify-content:space-between;gap:16px;z-index:2}.map-name{display:flex;align-items:center;gap:11px}.map-name>span{color:#f4d478;font-size:30px}.map-name div{display:flex;flex-direction:column}.map-name strong{font-size:16px;letter-spacing:1px}.map-name small{color:#bdd0d7;font-size:12px}.wave-controls{display:flex;align-items:center;gap:16px}.wave-controls>span{color:#f3d688;font-weight:900;white-space:nowrap}.tower-legend{display:flex;gap:8px}.tower-legend span{border:1px solid #637483;border-radius:8px;background:#263d52;padding:9px 10px;font-weight:800;font-size:12px;white-space:nowrap}.tower-legend b{color:#ffdb79;margin-left:4px}
.wave-banner{position:absolute;left:50%;top:12%;transform:translateX(-50%);padding:9px 25px;color:#fff6da;background:#21384bdc;border:2px solid #f2c676;border-radius:10px;font-size:27px;font-weight:900;letter-spacing:2px;white-space:nowrap;box-shadow:0 8px 20px #0006;pointer-events:none;animation:banner .3s ease-out}@keyframes banner{from{opacity:0;transform:translate(-50%,-15px)}to{opacity:1;transform:translate(-50%,0)}}
.tutorial{position:absolute;bottom:13px;left:50%;transform:translateX(-50%);width:min(550px,90%);background:#1a324be8;border:2px solid #f3ce7e;border-radius:12px;padding:12px 18px;text-align:center;font-size:15px;font-weight:800;box-shadow:0 5px 20px #0008}.tutorial button{border:0;background:none;color:#cce3eb;text-decoration:underline;margin-top:4px;font-size:12px}.portrait-hint{display:none}
.overlay{position:fixed;inset:0;z-index:10;background:radial-gradient(circle at center,#152e4670,#091523e8),#0a182b75;display:flex;align-items:center;justify-content:center;padding:20px}.overlay-card{width:min(440px,100%);max-height:95vh;overflow:auto;text-align:center;padding:30px 35px;background:linear-gradient(150deg,#344d67,#17283e 72%);border:3px solid #d4a45d;border-radius:22px;box-shadow:0 0 0 6px #091a2a,0 24px 60px #000b}.overlay-card h1{font-size:clamp(36px,5vw,52px);line-height:1.03;letter-spacing:1px;margin:8px 0 15px;text-shadow:0 4px 0 #11243a}.overlay-card h1 span{color:#ffdc88}.overlay-card p{color:#d7e3e8;line-height:1.45;font-size:17px}.emblem{margin:auto;width:72px;height:72px;display:grid;place-items:center;background:radial-gradient(#aeeaff,#3292bb);border:3px solid #f7d989;box-shadow:0 0 25px #7de3ff80;border-radius:18px;transform:rotate(45deg);font-size:37px;color:#fff}.emblem::first-letter{transform:rotate(-45deg)}.emblem.danger{background:#a94c53;box-shadow:0 0 25px #ff777780}.eyebrow{margin-top:23px}.stars{font-size:45px;letter-spacing:5px;color:#ffd477;text-shadow:0 3px 12px #f4a84666}.result-grid{display:flex;justify-content:center;gap:7px;margin:17px 0}.result-grid span{flex:1;background:#15283d;border:1px solid #697d86;border-radius:9px;padding:10px 5px;font-size:11px;color:#b9cbd7}.result-grid strong{display:block;color:#fff1c6;font-size:20px}.menu-record{font-size:13px;color:#f8d785;margin-top:13px}.setting-row{display:flex;align-items:center;justify-content:space-between;text-align:left;gap:15px;padding:12px 3px;border-bottom:1px solid #ffffff26;font-weight:800}.setting-row input{position:absolute;opacity:0}.switch{position:relative;display:block;width:49px;height:27px;background:#526274;border-radius:20px;transition:.2s}.switch:before{content:'';position:absolute;width:21px;height:21px;top:3px;left:3px;border-radius:50%;background:#e9e7d9;transition:.2s}.setting-row input:checked+.switch{background:#58a587}.setting-row input:checked+.switch:before{transform:translateX(22px)}.setting-row:focus-within{outline:2px solid #f3ce7e}.debug{position:fixed;z-index:30;top:80px;right:4px;width:130px;display:flex;flex-wrap:wrap;gap:3px}.debug button{font-size:10px;padding:3px}
@media(max-width:1220px){.game-shell{flex-direction:column;padding:9px}.battlefield{width:min(100%,calc((100vh - 222px)*1.765))}.side-panel{position:absolute;right:18px;bottom:18px;width:240px;max-height:min(72%,480px);z-index:3;background:linear-gradient(145deg,#344b68f2,#1b2b41f5)}.tower-legend{display:none}}
@media(max-width:700px){.topbar{min-height:52px;padding:4px 8px;gap:4px}.brand{font-size:13px;gap:3px}.brand-gem{font-size:19px}.resources{gap:3px}.resource{min-width:48px;height:34px;gap:2px;border-radius:6px}.resource span{font-size:14px}.resource strong{font-size:13px}.resource small{font-size:10px}.top-actions{gap:3px}.icon-button{height:34px;min-width:34px;padding:0 4px;font-size:15px;border-radius:6px}.game-shell{padding:5px;gap:3px}.battlefield{border-width:3px;border-radius:7px;width:min(100%,calc((100vh - 121px)*1.765))}.bottom-bar{min-height:58px;padding:4px 9px}.map-name>span{font-size:19px}.map-name strong{font-size:11px}.map-name small{font-size:9px}.wave-controls{gap:5px}.wave-controls>span{font-size:11px}.wave-controls .primary-button{padding:8px 9px;font-size:11px}.side-panel{right:6px;bottom:6px;width:205px;padding:18px 9px 9px;max-height:88%;border-radius:10px}.side-panel h2{font-size:17px}.panel-icon{display:none}.tower-choice{margin:5px 0;padding:5px}.choice-icon{font-size:20px}.panel-copy,.panel-hint{font-size:11px}.stat{padding:5px 2px;font-size:12px}.full{margin-top:7px;padding:7px}.tutorial{bottom:3px;width:min(460px,85%);font-size:11px;padding:4px 8px}.tutorial button{font-size:10px}.wave-banner{font-size:17px;padding:5px 13px}.overlay-card{padding:20px 23px}.overlay-card h1{font-size:34px}.overlay-card p{font-size:14px}.emblem{width:52px;height:52px;font-size:26px}.eyebrow{margin-top:13px}.big{min-height:42px;margin:8px auto}}
@media(max-width:650px) and (orientation:portrait){.portrait-hint{display:flex;position:absolute;inset:0;background:#13283be8;align-items:center;justify-content:center;text-align:center;padding:18px;font-size:19px;font-weight:900;line-height:1.5;z-index:5}.battlefield{width:100%}}
@media(max-height:500px) and (orientation:landscape){.overlay{padding:5px}.overlay-card{width:min(440px,70vw);max-height:96vh;padding:7px 20px;border-radius:16px}.overlay-card .emblem{display:none}.overlay-card .eyebrow{margin-top:0;font-size:10px}.overlay-card h1{font-size:29px;line-height:1;margin:4px 0}.overlay-card p{font-size:13px;line-height:1.2;margin:5px 0}.overlay-card .big{min-height:36px;margin:6px auto;padding:5px;font-size:14px}.overlay-card .text-button{margin:0 auto;padding:3px}.overlay-card .stars{font-size:28px}.overlay-card .result-grid{margin:4px 0}.overlay-card .result-grid span{padding:4px;font-size:10px}.overlay-card .result-grid strong{font-size:15px}.overlay-card .setting-row{padding:5px 3px;font-size:12px}.overlay-card .switch{height:21px;width:40px}.overlay-card .switch:before{width:17px;height:17px;top:2px;left:2px}.overlay-card .setting-row input:checked+.switch:before{transform:translateX(19px)}}

/* Phase 1.5 feedback and readable compact controls. */
button{touch-action:manipulation;transition:transform .1s ease,filter .15s ease,background-color .15s ease}
button:not(:disabled):active{transform:scale(.95)}
button:focus-visible{outline:3px solid #ffe398;outline-offset:2px}
.wave-stack{display:flex;flex-direction:column;align-items:center;gap:3px}
.wave-progress{display:block;width:66px;height:5px;border-radius:5px;background:#5a7182;overflow:hidden}
.wave-progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,#71d4aa,#f6df89);border-radius:5px;transition:width .18s linear}
.resource.wave{min-width:102px}.resource.lives.danger{border-color:#e77f83}.resource.lives.danger span{animation:heart-pulse 1.3s ease-in-out infinite}
.resource.gold{position:relative}.gold-gain{animation:gold-gain .36s ease-out}.gold-spend{animation:gold-spend .3s ease-out}.life-hit{animation:life-hit .42s ease-out}
.gold-error{animation:life-hit .42s ease-out; border-color:#f58c81; color:#ffaaa0}
.primary-button.unaffordable{color:#9e4740}
.active-speed{background:#537d85;border-color:#a8e7d8;color:#f1ffe5}
.game-toast{position:absolute;top:20%;left:50%;transform:translateX(-50%);z-index:2;background:#203e54e8;border:2px solid #edce89;border-radius:9px;padding:8px 17px;color:#ffe5a0;font-size:18px;font-weight:900;text-shadow:0 2px 2px #10263c;pointer-events:none;white-space:nowrap;animation:toast-in .22s ease-out}
.wave-banner{animation:wave-in 1.2s ease-out both}
.wave-preview{display:block;max-width:245px;color:#dce8e8;font-size:12px;font-weight:800;white-space:nowrap}
.tower-legend button{min-height:44px;border:1px solid #637483;border-radius:8px;background:#263d52;color:#f2ebd9;padding:8px 11px;font-weight:800;font-size:12px;white-space:nowrap;box-shadow:0 3px 0 #101f2d}
.tower-legend button:hover,.tower-legend button.armed{background:#3e6871;border-color:#bbebdf}
.tower-legend button b{color:#ffdb79;margin-left:4px}.tower-legend button em{font-style:normal}
.tower-legend button.unaffordable{opacity:.62}.tower-legend button.unaffordable b,.tower-choice.unaffordable b{color:#ff9a91}
.choice-row{display:flex;align-items:center;gap:6px;margin:9px 0}.choice-row .tower-choice{margin:0;min-height:53px;flex:1}
.info-button{flex:0 0 33px;min-height:48px;background:#384f69;border:1px solid #8aa1a5;border-radius:9px;color:#d9f2f7;font-size:20px;font-weight:900}
.info-button:hover{background:#55758a}.tower-choice.unaffordable{opacity:.8;filter:grayscale(.15)}
.confirm-box{margin-top:10px;padding:10px;background:#152c40;border:1px solid #dcb574;border-radius:10px;text-align:center;display:flex;flex-direction:column;gap:6px;font-size:13px}
.confirm-box span{color:#f5d988}.confirm-box>div{display:flex;gap:7px}.confirm-box button{flex:1;padding:7px 4px;font-size:12px}
.panel-enter{animation:panel-enter .22s ease-out}.card-enter{animation:card-enter .3s ease-out}
.tutorial-focus{animation:tutorial-focus 1.4s ease-in-out infinite}
.overlay-card .stars span{display:inline-block;opacity:0;animation:star-pop .45s cubic-bezier(.15,1.6,.3,1) forwards}
.overlay-card:has(.stars){box-shadow:0 0 0 6px #091a2a,0 0 70px #eac56e52,0 24px 60px #000b}
.overlay-card:has(.result-grid) .result-grid{flex-wrap:wrap}.overlay-card:has(.result-grid) .result-grid span{min-width:44%}
.setting-row select{background:#243b51;color:#f3ead7;border:1px solid #93a8a7;border-radius:8px;padding:7px;font:inherit;font-size:13px}
.settings-note{min-height:14px;font-size:11px;color:#ffdc8f}
.loading-track{height:9px;margin:22px 0 10px;background:#172c40;border:1px solid #9cb4a4;border-radius:10px;overflow:hidden}.loading-track span{display:block;height:100%;width:100%;background:linear-gradient(90deg,#8dd9bd,#ffe29a);transform-origin:left;animation:loading-progress .34s ease-out both}
.debug{width:165px;max-height:calc(100dvh - 86px);overflow-y:auto;background:#102436d9;padding:5px;border:1px solid #9dadb3;border-radius:8px}.debug-metrics{width:100%;font-size:11px;line-height:1.35;color:#e6f7de}
@keyframes gold-gain{40%{transform:translateY(-4px) scale(1.08);box-shadow:0 0 18px #f7d77f77}}
@keyframes gold-spend{45%{transform:translateY(3px);filter:brightness(1.25)}}
@keyframes life-hit{25%{transform:translateX(-4px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}
@keyframes heart-pulse{50%{transform:scale(1.18)}}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,-10px) scale(.93)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes wave-in{0%{opacity:0;transform:translate(-50%,-14px) scale(.83)}28%{opacity:1;transform:translate(-50%,0) scale(1.05)}68%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,8px) scale(1)}}
@keyframes panel-enter{from{opacity:.6;transform:translateY(11px)}to{opacity:1;transform:translateY(0)}}
@keyframes card-enter{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@keyframes star-pop{from{opacity:0;transform:scale(.4) rotate(-20deg)}to{opacity:1;transform:scale(1) rotate(0)}}
@keyframes tutorial-focus{50%{box-shadow:0 0 0 4px #ffe9949c,0 0 15px #ffe99488}}
@keyframes loading-progress{from{transform:scaleX(.06)}to{transform:scaleX(1)}}
@media(max-width:1220px){.tower-legend{display:flex}.map-name small{display:none}.wave-preview{max-width:150px;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:900px){.wave-preview{display:none}.tower-legend button{padding:5px;min-width:49px}.tower-legend button em{display:none}.tower-legend button b{display:block;margin:0;font-size:10px}.map-name{min-width:120px}}
@media(max-width:700px){.bottom-bar{padding-left:max(7px,env(safe-area-inset-left));padding-right:max(7px,env(safe-area-inset-right))}.topbar{padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right))}.tower-legend{display:flex;gap:3px}.tower-legend button{min-width:43px;min-height:44px;padding:2px;font-size:16px}.tower-legend button b{font-size:9px}.map-name{display:none}.wave-controls>span{font-size:10px}.wave-controls .primary-button{min-height:44px}.game-toast{font-size:12px;padding:4px 8px}.side-panel{animation:panel-enter .22s ease-out}}
@media(max-width:420px){.wave-controls>span{display:none}.topbar .brand{font-size:10px}.resource{min-width:39px}.tower-legend button{min-width:46px}}
@media(max-height:500px) and (orientation:landscape){.side-panel{bottom:65px;right:max(8px,env(safe-area-inset-right));max-height:calc(100vh - 125px)}.overlay-card:has(.result-grid) .result-grid span{min-width:22%}}
@media(max-height:500px) and (orientation:landscape){.side-panel{padding:8px 8px 9px;max-height:calc(100vh - 123px)}.side-panel h2{margin:2px 0;font-size:17px}.side-panel .panel-copy,.side-panel .panel-hint{display:none}.side-panel .panel-kicker{font-size:9px}.side-panel .panel-icon{display:none}.side-panel .choice-row{margin:3px 0}.side-panel .tower-choice{min-height:43px;padding:3px 5px}.side-panel .choice-icon{font-size:18px}.side-panel .choice-text strong{font-size:11px}.side-panel .choice-text small{font-size:9px}.side-panel .info-button{min-height:43px}.side-panel .stat{padding:3px 2px;font-size:11px}.side-panel .level{margin:1px 0 4px}}
@media(max-height:500px) and (orientation:landscape){.side-panel .secondary-stat{display:none}.side-panel .full{margin-top:5px;padding:6px}.side-panel .panel-copy{display:block;font-size:11px;margin:7px 0}}
.reduced-motion *, .reduced-motion *::before, .reduced-motion *::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
.reduced-motion .wave-banner{animation:none;opacity:1}.reduced-motion .overlay-card .stars span{animation:none;opacity:1}
.topbar,.bottom-bar{padding-left:max(clamp(16px,3vw,46px),env(safe-area-inset-left));padding-right:max(clamp(16px,3vw,46px),env(safe-area-inset-right))}
.info-button{flex-basis:44px;min-width:44px}.panel-close{min-width:40px;min-height:40px}.tutorial button{min-height:32px}
@media(max-width:700px){.icon-button{height:44px;min-width:44px}.topbar{min-height:52px}.topbar,.bottom-bar{padding-left:max(7px,env(safe-area-inset-left));padding-right:max(7px,env(safe-area-inset-right))}}
@media(max-width:420px){.brand span:nth-child(2){display:none}.brand{min-width:20px}.icon-button{min-width:39px;height:39px}}
@media(max-height:500px) and (orientation:landscape){.topbar{min-height:52px;padding-top:4px;padding-bottom:4px}.bottom-bar{min-height:58px;padding-top:4px;padding-bottom:4px}.game-shell{padding:5px}.battlefield{width:min(100%,calc((100vh - 124px)*1.765))}}
/* Phase 2 combat information and five-tower controls. */
.boss-hud{position:absolute;z-index:2;top:9px;left:50%;transform:translateX(-50%);width:min(550px,64%);padding:8px 12px;background:#382f3be8;border:2px solid #e9b26e;border-radius:10px;box-shadow:0 4px 18px #111b28aa;pointer-events:none}
.boss-heading{display:flex;justify-content:space-between;gap:8px;font-weight:900;color:#ffe4af;font-size:14px;letter-spacing:.5px}.boss-heading span:last-child{color:#f6b2a0;font-size:11px}
.boss-track{height:14px;margin-top:5px;position:relative;background:#44242d;border:1px solid #e3ae83;border-radius:9px;overflow:hidden}.boss-track i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#e06759,#f0a06d);transition:width .16s}.boss-hud[data-phase="3"] .boss-track i{background:linear-gradient(90deg,#bf3648,#f66f59)}.boss-marker{position:absolute;top:0;bottom:0;width:2px;background:#fff1c8}.boss-marker.one{left:30%}.boss-marker.two{left:65%}
.next-wave-card{position:absolute;z-index:1;top:8px;left:8px;max-width:270px;padding:8px 11px;background:#1e394ddc;border:1px solid #ddbd83;border-radius:9px;box-shadow:0 3px 12px #14233688;pointer-events:none}.next-wave-card strong{display:block;color:#ffe09e;font-size:13px}.next-wave-card small{display:block;color:#eef5e9;font-size:12px;line-height:1.5}.next-wave-card span{display:inline-block;margin-right:4px}
.target-mode{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #ffffff22;padding:8px 2px;color:#cbd5dd;font-size:14px}.target-mode select{background:#243b51;color:#fff;border:1px solid #93a8a7;border-radius:6px;padding:5px;font:inherit}.status-note{padding:7px 8px;border-radius:6px;background:#8d4d52;color:#fff2d9;font-size:12px;font-weight:900;text-align:center}
.tower-legend{min-width:0;overflow-x:auto;scrollbar-width:thin}.tower-legend button{flex:0 0 auto}
.icon-button.has-upgrades{color:#ffe29e;border-color:#e9ca82}
.upgrade-overlay{position:fixed;inset:0;z-index:14;display:grid;place-items:center;padding:10px;background:#071523d9;backdrop-filter:blur(4px)}
.upgrade-modal{width:min(900px,100%);max-height:calc(100dvh - 20px);overflow:auto;padding:17px 20px 15px;background:linear-gradient(145deg,#304965,#14273e);border:2px solid #d7ac68;border-radius:17px;box-shadow:0 0 0 5px #0b1b2b,0 20px 55px #000a;color:#f6efdb}
.upgrade-heading{text-align:center}.upgrade-heading .eyebrow{margin:0}.upgrade-heading h2{font-size:clamp(22px,3vw,31px);margin:2px 0;color:#ffdf9f;letter-spacing:1px}.upgrade-heading p{margin:2px 0 10px;color:#cbdce0;font-size:13px}
.upgrade-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.upgrade-card{position:relative;min-height:218px;padding:12px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;background:linear-gradient(#314657,#1c3046);border:2px solid #a7b3ac;border-radius:13px;box-shadow:0 5px 12px #06152399}.upgrade-rarity{align-self:flex-end;font-size:10px;letter-spacing:1.5px;font-weight:900;color:#fff2c9}.upgrade-icon{width:46px;height:46px;display:grid;place-items:center;border:2px solid currentColor;border-radius:12px;background:#ffffff13;color:#e6f1e3;font-size:27px;text-shadow:0 0 12px currentColor}.upgrade-name{font-size:18px;line-height:1.05}.upgrade-description{font-size:13px;line-height:1.25;color:#e3e8e9;flex:1}.upgrade-category{font-size:10px;color:#c7d9df;text-transform:uppercase;font-weight:900;letter-spacing:.5px}.upgrade-card-actions{width:100%;display:flex;gap:6px}.upgrade-card-actions button{min-height:37px;border:1px solid #e4c88a;border-radius:7px;background:#e4bd70;color:#273246;font-size:13px;font-weight:900;flex:1}.upgrade-card-actions button:first-child{flex:0 0 38px;background:#314d63;color:#fff}.upgrade-card-actions button:hover{filter:brightness(1.12)}
.rarity-rare{border-color:#75c7e4;box-shadow:0 0 15px #72cbea44}.rarity-rare .upgrade-rarity,.rarity-rare .upgrade-icon{color:#9be0f7}.rarity-epic{border-color:#c99ff4;box-shadow:0 0 20px #be86f35c}.rarity-epic .upgrade-rarity,.rarity-epic .upgrade-icon{color:#dab4ff}.rarity-legendary{border-color:#ffe094;box-shadow:0 0 24px #f5c35f70;background:linear-gradient(#625239,#283748)}.rarity-legendary .upgrade-rarity,.rarity-legendary .upgrade-icon{color:#ffe79d}.upgrade-card.chosen{transform:scale(1.05);z-index:1;box-shadow:0 0 30px #fff1af9c}.upgrade-card:not(.chosen):has(~ .chosen),.upgrade-cards:has(.chosen) .upgrade-card:not(.chosen){opacity:.35;transition:opacity .2s}
.upgrade-footer{display:flex;justify-content:center;gap:9px;flex-wrap:wrap;margin-top:12px}.upgrade-footer button,.upgrade-close{min-height:41px;padding:8px 15px;border-radius:8px;border:1px solid #9ab4b8;background:#2e4961;color:#fff2d9;font-weight:900}.upgrade-footer button:disabled{opacity:.45}.upgrade-close{display:block;margin:12px auto 0}.upgrade-detail{position:relative;margin:10px auto 0;max-width:620px;padding:9px 36px 9px 11px;border:1px solid #d4ba86;border-radius:8px;background:#172c43;font-size:12px}.upgrade-detail strong{display:block;color:#ffe19c;font-size:14px}.upgrade-detail button{position:absolute;right:5px;top:2px;border:0;background:none;color:#fff;font-size:22px}.run-build{margin:12px auto;display:flex;flex-wrap:wrap;justify-content:center;gap:5px}.run-build>strong{width:100%;color:#ffe0a0;letter-spacing:1px;font-size:12px}.run-build span{padding:5px 8px;border:1px solid #7996a4;border-radius:7px;background:#233a51;font-size:12px}.upgrade-modal>.run-build{max-width:720px}.gallery{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));max-height:65vh;overflow:auto}.gallery .upgrade-card{min-height:175px}.gallery .upgrade-description{flex:none}
@media(max-height:500px) and (orientation:landscape){.upgrade-modal{padding:7px 12px;max-height:calc(100dvh - 8px)}.upgrade-heading h2{font-size:20px;margin:0}.upgrade-heading p{font-size:11px;margin:0 0 5px}.upgrade-cards{gap:7px}.upgrade-card{min-height:170px;padding:6px;gap:3px}.upgrade-icon{width:32px;height:32px;font-size:19px;border-radius:7px}.upgrade-name{font-size:14px}.upgrade-description{font-size:11px}.upgrade-category,.upgrade-rarity{font-size:9px}.upgrade-card-actions button{min-height:30px;font-size:11px}.upgrade-footer{margin-top:6px}.upgrade-footer button{min-height:32px;padding:5px 10px;font-size:11px}.upgrade-detail{margin-top:5px;padding-top:4px;padding-bottom:4px}.gallery .upgrade-card{min-height:155px}}
@media(max-width:620px){.upgrade-cards:not(.gallery){display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding:3px 2px 7px}.upgrade-cards:not(.gallery) .upgrade-card{flex:0 0 min(66vw,200px);scroll-snap-align:center}.upgrade-modal{padding:9px}.upgrade-heading p{font-size:11px}.upgrade-footer button{font-size:11px;padding:6px 9px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
.reduced-motion .upgrade-card{transition:none;animation:none}.reduced-motion .upgrade-card.chosen{transform:none}
.upgrade-overlay[data-view="history"]{place-items:center end}.upgrade-overlay[data-view="history"] .upgrade-modal{width:min(370px,100%);max-height:calc(100dvh - 20px)}.upgrade-overlay[data-view="history"] .run-build{justify-content:flex-start;text-align:left}
.upgrade-icon svg{width:28px;height:28px}.run-build svg{width:16px;height:16px;vertical-align:-3px;margin-right:3px;stroke:#ffe2a5}
@media(max-height:500px) and (orientation:landscape){.upgrade-icon svg{width:20px;height:20px}}
@media(max-width:700px){.upgrade-overlay[data-view="history"]{place-items:end center;padding:0}.upgrade-overlay[data-view="history"] .upgrade-modal{width:100%;max-height:72dvh;border-radius:16px 16px 0 0}}
.debug.collapsed{width:auto}.debug.collapsed>*:not([data-debug="toggle"]){display:none}.debug>[data-debug="toggle"]{width:100%;background:#3a5367;color:#fff2d3;border:1px solid #bcaa84;border-radius:5px;font-weight:900}
.evolve-button{background:linear-gradient(110deg,#815ca9,#bd7e4c);border-color:#f0d4a2;box-shadow:0 0 14px #bf9df066}
.evolution-available{text-align:center;margin-top:8px;color:#ffe1a0;font-size:11px;font-weight:900;letter-spacing:1px}
.evolution-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin:12px auto;max-width:760px}
.evolution-card{min-height:235px;padding:15px;display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;color:#f8f3df;background:linear-gradient(#354d61,#172c43);border:2px solid #91aab2;border-radius:14px;cursor:pointer}
.evolution-card:hover,.evolution-card.selected{border-color:#ffe2a1;box-shadow:0 0 24px #e2b87666;transform:translateY(-2px)}
.evolution-card strong{font-size:20px}.evolution-card small{color:#b9dfeb;font-weight:800}.evolution-card>span:not(.evolution-icon){font-size:13px;line-height:1.35;flex:1}.evolution-card b{font-size:12px;color:#d9eaff}.evolution-card em{font-style:normal;color:#ffdb8e;font-size:17px;font-weight:900}
.evolution-icon{width:50px;height:50px;display:grid;place-items:center;font-size:29px;border-radius:50%;color:var(--evo-color);border:2px solid var(--evo-color);background:#101d32;box-shadow:0 0 14px var(--evo-color)}
.evolution-confirm{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap;padding:10px;border:1px solid #d4ba86;border-radius:9px;background:#162c43}.evolution-confirm strong{color:#ffe2a5}.evolution-confirm span{font-size:12px}.evolution-prompt{text-align:center;color:#d9e5e2}
.evolution-comparison{display:flex;gap:7px 13px;justify-content:center;flex-wrap:wrap;width:100%}.evolution-comparison span{color:#ccdae0}.evolution-comparison b{color:#fff2ce}
.guide-list{max-height:62dvh;overflow:auto;display:grid;gap:8px}.guide-item{display:flex;gap:12px;text-align:left;align-items:center;padding:10px;border:1px solid #718894;border-radius:10px;background:#182e45}.guide-item.found{border-color:#d5b875;background:#273a4e}.guide-item>span{font-size:26px;min-width:55px;text-align:center}.guide-item div{display:grid;gap:2px}.guide-item strong{color:#ffe0a1}.guide-item small{font-size:12px;color:#dce8e9}.guide-item em{font-size:11px;color:#9bc8d8;font-style:normal}.encyclopedia-family h3{text-align:left;margin:13px 0 2px;color:#ffe1a4}.encyclopedia-family p{text-align:left;font-size:12px;color:#cbdce0;margin:0 0 7px}
@media(max-width:700px){.upgrade-overlay[data-view="evolving"]{place-items:end center;padding:0}.upgrade-overlay[data-view="evolving"] .upgrade-modal{width:100%;max-height:86dvh;border-radius:18px 18px 0 0}.evolution-cards{gap:6px}.evolution-card{min-height:210px;padding:8px;gap:4px}.evolution-card strong{font-size:15px}.evolution-card>span:not(.evolution-icon){font-size:11px}.evolution-card b{font-size:10px}.evolution-icon{width:35px;height:35px;font-size:21px}}
@media(max-width:700px){.upgrade-overlay[data-view="guide"]{place-items:end center;padding:0}.upgrade-overlay[data-view="guide"] .upgrade-modal{width:100%;max-height:82dvh;border-radius:18px 18px 0 0}.upgrade-overlay[data-view="guide"] .guide-list{max-height:60dvh}}
@media(max-width:900px){.boss-hud{width:min(480px,74%)}.next-wave-card{max-width:175px;padding:4px 6px}.next-wave-card strong{font-size:10px}.next-wave-card small{font-size:10px}.tower-legend{max-width:calc(100vw - 240px)}.tower-legend button{min-width:42px}}
@media(max-width:700px){.boss-hud{top:3px;width:70%;padding:3px 5px;border-width:1px}.boss-heading{font-size:9px}.boss-heading span:last-child{font-size:8px}.boss-track{height:7px;margin-top:2px}.next-wave-card{top:3px;left:3px;max-width:138px;padding:3px 5px}.next-wave-card strong{font-size:9px}.next-wave-card small{font-size:9px}.tower-legend{max-width:calc(100vw - 118px)}.tower-legend button{min-width:38px;min-height:41px}}
.hero-hud{position:absolute;left:10px;bottom:10px;z-index:3;display:flex;align-items:center;gap:8px;width:220px;min-height:64px;padding:7px;background:#172e47ed;border:2px solid #d4b477;border-radius:10px;color:#fff1d6;text-align:left;box-shadow:0 4px 14px #102131aa;cursor:pointer}.hero-hud.selected{border-color:#b8e6ff;box-shadow:0 0 16px #8bd9ff99}.hero-hud.hero-low-hp{border-color:#ed8679;animation:heart-pulse 1.3s infinite}.hero-portrait{display:grid;place-items:center;width:45px;height:45px;flex:0 0 45px;border:2px solid #d8b779;border-radius:8px;background:linear-gradient(140deg,#6789ae,#243b64);font-size:31px;color:#ffe09a}.hero-hud-details{display:grid;gap:3px;flex:1;min-width:0}.hero-hud-details strong{display:flex;justify-content:space-between;font-size:12px}.hero-hud-details b{color:#ffe1a0}.hero-hud-details small{font-size:9px;color:#e7e6d7;white-space:nowrap}.hero-bar{display:block;height:6px;background:#233747;border-radius:6px;overflow:hidden}.hero-bar i{display:block;height:100%;width:0;border-radius:6px;transition:width .1s}.hero-bar.hp i{background:#8ad69a}.hero-bar.xp i{background:#8ecff2}.hero-bar.ult i{background:#f8d77e}.hero-skills{display:flex;gap:5px;align-items:center;margin-left:8px}.hero-skills button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:54px;min-height:52px;border:2px solid #d0b57c;border-radius:9px;background:linear-gradient(#476483,#243b56);color:#fff0c9;font-size:21px;box-shadow:0 3px 0 #0c1928;overflow:hidden;cursor:pointer}.hero-skills button:before{content:'';position:absolute;inset:0;background:conic-gradient(#0c1f30c9 var(--cooldown),transparent 0);pointer-events:none}.hero-skills button small{position:relative;z-index:1;font-size:9px;font-weight:900;white-space:nowrap}.hero-skills button:disabled{filter:grayscale(.65);opacity:.7;cursor:default}.hero-skills button.ready{border-color:#ffe39c;box-shadow:0 0 14px #ffdf8b88}.hero-skills button.targeting{border-color:#9be8ff;background:#416d88}.hero-skills .ultimate-button{border-color:#e8c07c;background:linear-gradient(#85683f,#4f3e38)}.hero-tutorial{position:absolute;bottom:86px;left:10px;z-index:3;display:flex;align-items:center;gap:8px;max-width:340px;padding:8px 10px;background:#1a3650f0;border:1px solid #dfc088;border-radius:8px;color:#fff0d4;font-size:12px;font-weight:700}.hero-tutorial button{min-height:36px;padding:4px 8px;border:1px solid #e1c58d;border-radius:6px;background:#d5b46e;color:#1d3447;font-weight:900}.hero-choice-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:680px;margin:15px auto}.hero-choice-cards button{display:grid;justify-items:center;gap:8px;min-height:185px;padding:15px;border:2px solid #b9d4dc;border-radius:13px;background:linear-gradient(#315575,#1b314b);color:#f8edcf;cursor:pointer}.hero-choice-cards button:hover{border-color:#ffdf9a;box-shadow:0 0 20px #edd39166}.hero-choice-cards span{font-size:36px;color:#ffe0a0}.hero-choice-cards strong{font-size:20px}.hero-choice-cards small{font-size:13px}.hero-select-card{display:grid;justify-items:center;gap:8px;padding:15px;border:1px solid #d8be88;border-radius:12px;background:#1b344d}.hero-select-portrait{display:grid;place-items:center;width:76px;height:76px;border:3px solid #e6c77e;border-radius:14px;background:#486b91;color:#ffe3a0;font-size:50px}.hero-select-card strong{font-size:24px}.hero-select-card small{color:#b9dce8}.hero-select-card p{margin:2px 0}.hero-select-card>div{color:#ffe1a1;font-weight:800}
@media(max-width:900px){.hero-skills{margin-left:3px}.hero-skills button{width:48px;min-height:48px}.tower-legend{max-width:calc(100vw - 390px)}}
@media(max-width:700px){.hero-hud{left:3px;bottom:3px;width:158px;min-height:44px;padding:3px;gap:4px}.hero-portrait{width:34px;height:34px;flex-basis:34px;font-size:23px}.hero-hud-details strong{font-size:9px}.hero-hud-details small{font-size:7px}.hero-bar{height:4px}.hero-skills{position:absolute;right:max(3px,env(safe-area-inset-right));bottom:calc(58px + env(safe-area-inset-bottom));z-index:4;gap:3px}.hero-skills button{width:45px;min-height:48px;font-size:18px}.hero-skills button small{font-size:8px}.hero-tutorial{bottom:53px;left:3px;max-width:260px;font-size:10px;padding:4px}.tower-legend{max-width:calc(100vw - 118px)}.hero-choice-cards button{min-height:130px;padding:7px}.hero-choice-cards span{font-size:25px}.hero-choice-cards strong{font-size:15px}.hero-choice-cards small{font-size:10px}}
.hidden{display:none!important}
.hero-portrait,.hero-select-portrait{overflow:hidden}.hero-portrait img,.hero-select-portrait img{display:block;width:100%;height:100%;object-fit:cover}
@media(max-height:500px) and (orientation:landscape){.overlay-card:has(.hero-select-card){max-height:96dvh;overflow:auto;padding:8px 14px}.overlay-card:has(.hero-select-card) h1{font-size:25px;margin:1px 0 5px}.hero-select-card{gap:3px;padding:7px}.hero-select-portrait{width:53px;height:53px}.hero-select-card strong{font-size:18px}.hero-select-card small,.hero-select-card p,.hero-select-card>div{font-size:11px}.hero-select-card p{margin:1px 0}.hero-select-card .big{min-height:37px;padding:6px}.overlay-card:has(.hero-select-card)>.text-button{min-height:28px;margin-top:4px}}
/* Portrait phones keep the same game flow, with controls outside the map. */
@media(max-width:650px) and (orientation:portrait){
  html,body,.app{width:100%;max-width:100%;overflow-x:hidden}
  .portrait-hint{display:none!important}
  .app{min-height:100dvh}
  .topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:38px 38px;gap:3px 4px;min-height:86px;padding:4px 8px}
  .brand{grid-column:1;grid-row:1;min-width:0;font-size:13px}.brand span:nth-child(2){display:inline;white-space:nowrap}.brand-gem{font-size:18px}
  .top-actions{grid-column:2;grid-row:1;gap:2px}.top-actions .icon-button{min-width:36px;width:36px;height:36px;padding:0;font-size:17px}
  .resources{grid-column:1/-1;grid-row:2;justify-content:center;gap:6px;min-width:0}.resource{height:33px;min-width:80px}.resource.wave{min-width:95px}
  .game-shell{display:flex;align-items:flex-start;justify-content:flex-start;flex:1;min-height:290px;padding:7px 5px;gap:0}
  .battlefield{width:100%;max-width:100%;flex:none;border-width:3px;border-radius:8px;overflow:visible}
  .battlefield canvas{touch-action:none}
  .next-wave-card{top:4px;left:4px;max-width:37%;padding:3px 4px}.next-wave-card strong,.next-wave-card small{font-size:8px}
  .boss-hud{top:3px;width:72%;max-width:72%}
  .hero-hud{left:4px;top:calc(100% + 8px);bottom:auto;width:164px;min-height:48px}.hero-portrait{width:34px;height:34px;flex-basis:34px}
  .hero-hud-details strong{font-size:9px}.hero-hud-details small{font-size:7px}
  .hero-tutorial,.tutorial{left:50%;bottom:54px;transform:translateX(-50%);width:90%;max-width:310px;font-size:10px;z-index:4}
  .side-panel{position:absolute;left:5px;right:5px;top:calc(56.7vw + 69px);bottom:auto;width:auto;height:calc(100% - 56.7vw - 74px);min-height:0;max-height:none;overflow:auto;z-index:4;padding:12px;border-radius:10px}
  .side-panel h2{font-size:18px}.side-panel .panel-copy,.side-panel .panel-hint{font-size:11px}
  .bottom-bar{display:grid;grid-template-columns:1fr;gap:7px;width:100%;min-height:0;padding:8px max(8px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
  .map-name{display:none}.wave-controls{grid-row:1;display:flex;justify-content:space-between;gap:6px;min-width:0}.wave-controls .primary-button{min-height:46px;font-size:12px}.wave-controls>span{font-size:11px}.wave-preview{display:none}
  .hero-skills{position:static;grid-row:2;display:flex;justify-content:space-between;gap:5px;width:100%;margin:0}.hero-skills button{flex:1;min-width:0;width:auto;min-height:52px;font-size:21px}.hero-skills button small{font-size:9px}
  .tower-legend{grid-row:3;display:flex;justify-content:space-between;gap:5px;width:100%;max-width:none;overflow:visible}.tower-legend button{flex:1;min-width:0;min-height:48px;font-size:18px}.tower-legend button b{font-size:10px}
}
@media(max-width:360px) and (orientation:portrait){.brand span:nth-child(2){display:none}.top-actions .icon-button{min-width:36px}.resources{justify-content:space-around}.resource{min-width:70px}.resource.wave{min-width:88px}}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){
  .battlefield{overflow:visible}
  .hero-hud{position:fixed;left:calc(50% - 74px);top:auto;bottom:calc(6px + env(safe-area-inset-bottom));width:148px;min-height:46px;padding:3px;gap:4px;z-index:5}
  .hero-portrait{width:34px;height:34px;flex-basis:34px;font-size:23px}
  .hero-hud-details strong{font-size:9px}.hero-hud-details small{font-size:7px}.hero-bar{height:4px}
  .map-name{display:none}
  .hero-skills{position:absolute;right:max(3px,env(safe-area-inset-right));bottom:calc(58px + env(safe-area-inset-bottom));z-index:4;margin:0}
  .hero-skills button{width:44px;min-height:48px;font-size:18px}.hero-skills button small{font-size:8px}
}
@media(min-width:800px) and (max-width:1000px) and (max-height:500px) and (min-aspect-ratio:2/1) and (orientation:landscape){
  .hero-hud{position:absolute;left:auto;right:calc(100% + 5px);top:8px;bottom:auto;width:154px;min-height:52px}
}
@media(max-width:650px) and (max-height:650px) and (orientation:portrait){
  .side-panel{position:fixed;top:auto;bottom:calc(133px + env(safe-area-inset-bottom));height:min(45dvh,290px);z-index:8}
  .app:has(#waveControls:not(.hidden)) .side-panel{bottom:calc(179px + env(safe-area-inset-bottom))}
}
/* Chapter 1 map: a lightweight illustrated route with touch-sized stage nodes. */
.overlay:has(.world-card){padding:0;background:#0b1b2e}.overlay-card.world-card{width:100vw;max-width:none;height:100dvh;max-height:none;overflow:hidden;border:0;border-radius:0;box-shadow:none;padding:0;text-align:left;background:#152a3c}
.world-header{height:70px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px max(18px,env(safe-area-inset-right)) 8px max(18px,env(safe-area-inset-left));border-bottom:2px solid #d5ae6b;background:#14283c;color:#fff0cf}
.world-header>div{display:grid;justify-items:center;gap:2px}.world-header strong{font-size:19px;letter-spacing:.5px}.world-header small{font-size:13px;color:#ffda80;font-weight:900}
.world-back,.world-settings{min-height:44px;border:1px solid #c5a96f;border-radius:8px;background:#29445f;color:#f9e9c7;font-weight:900;padding:5px 12px}.world-settings{min-width:44px;font-size:21px}
.world-layout{height:calc(100dvh - 70px);position:relative;display:flex;overflow:hidden}.world-scroll{flex:1;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;padding:22px max(24px,calc((100vw - 760px)/2)) 45px;background:radial-gradient(ellipse at 50% 10%,#6b8b78,#344b63 54%,#172f4a);scroll-behavior:smooth}
.world-region{height:265px;position:relative;isolation:isolate;border:2px solid #ffffff50;border-radius:22px;margin:0 0 24px;overflow:hidden;background:linear-gradient(155deg,#a0bb72,#4b8065 70%,#427386);box-shadow:0 12px 27px #07152377,inset 0 0 55px #1b40396b}
.world-region:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 12% 72%,#ffffff3a 0 5px,transparent 6px),radial-gradient(circle at 89% 24%,#ffffff32 0 7px,transparent 8px),repeating-linear-gradient(115deg,transparent 0 52px,#ffffff0c 55px 57px,transparent 60px 110px);pointer-events:none}
.world-region.frozen{background:linear-gradient(145deg,#d9e7e8,#8bb4c9 45%,#466a88)}.world-region.burning{background:linear-gradient(155deg,#9d7865,#6a3c3e 55%,#352e40)}.world-region.haunted{background:linear-gradient(145deg,#4c7267,#30445f 55%,#29294f)}.world-region.storm{background:linear-gradient(145deg,#69859e,#3c537f 55%,#242e5a)}
.world-region.locked{filter:saturate(.45) brightness(.68)}.world-region.perfect{box-shadow:0 0 0 3px #ffe29b,0 0 30px #ffdf8077}
.region-heading{position:relative;z-index:2;display:flex;align-items:center;gap:9px;width:100%;min-height:54px;padding:8px 14px;border:0;background:#10283ab0;color:#fff7d7;text-align:left}.region-heading span{font-size:25px}.region-heading strong{flex:1;text-transform:uppercase;letter-spacing:.6px}.region-heading small{color:#ffe493;font-weight:900}
.world-landmarks{position:absolute;inset:65px 0 auto;text-align:center;font-size:27px;letter-spacing:31px;opacity:.63;pointer-events:none;white-space:nowrap;animation:landmark-drift 7s ease-in-out infinite alternate}@keyframes landmark-drift{to{transform:translateX(5px)}}.world-road{position:absolute;left:13%;right:13%;top:64%;height:18px;border-radius:99px;border:3px dashed #f8dba480;background:#5d59447a;transform:rotate(-5deg)}
.stage-nodes{position:absolute;z-index:2;left:8%;right:8%;bottom:21px;display:flex;justify-content:space-between;align-items:end}.stage-node{display:grid;place-items:center;gap:1px;width:69px;height:86px;border:0;background:none;color:#fff2ce;font-weight:900;cursor:pointer}.stage-node b{display:grid;place-items:center;width:53px;height:53px;border:3px solid #f7df9c;border-radius:50%;background:linear-gradient(#447656,#244b51);box-shadow:0 4px 0 #182c36,0 0 17px #e9da8a8c;font-size:21px}.stage-node small{font-size:10px}.stage-node .node-stars{font-size:15px;letter-spacing:1px;color:#ffdf80}.stage-node.locked b{background:#394658;border-color:#8995a0;box-shadow:none}.stage-node.locked .node-stars{color:#9ea7b0}.stage-node.perfect b{box-shadow:0 0 0 4px #fff3b773,0 0 25px #ffea96}.stage-node.selected b{outline:3px solid #fdf5c5;outline-offset:3px}.stage-node:focus-visible{outline:3px solid #fff2b2;border-radius:12px}
.perfect-flag{position:absolute;right:13px;top:58px;font-size:11px;font-weight:900;color:#ffe89f}.world-detail{position:absolute;z-index:4;right:16px;top:16px;bottom:16px;width:min(335px,35%);overflow:auto;padding:20px;border:2px solid #d1ac74;border-radius:16px;background:#182f46f5;box-shadow:0 8px 28px #071522ba;color:#f5ebd1}.world-detail .eyebrow{margin:4px 0}.world-detail h2{margin:6px 0 12px}.world-detail-close{position:absolute;right:8px;top:5px;min-width:42px;min-height:42px;border:0;background:transparent;color:#fff;font-size:29px}.stage-detail-grid{display:flex;gap:8px}.stage-detail-grid span{flex:1;padding:8px;border-radius:8px;background:#28465f;font-size:12px}.stage-detail-grid b{display:block;color:#ffe19c;font-size:21px}.stage-recommend{font-size:13px!important}.enemy-preview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:9px 0}.enemy-preview span{padding:8px 5px;border-radius:7px;background:#29455f;font-size:11px;font-weight:800}.world-detail .big{font-size:14px}.bestiary-list{max-height:60dvh;overflow:auto;text-align:left}.bestiary-list h2{font-size:16px;color:#ffdf9d}.bestiary-entry{display:flex;gap:10px;align-items:center;padding:8px;border-bottom:1px solid #ffffff2e}.bestiary-entry>span{font-size:24px}.bestiary-entry div{display:grid}.bestiary-entry small{font-size:11px;color:#c9d7df}.bestiary-entry.unknown{opacity:.58}
@media(max-width:700px){.world-header{height:62px;padding:5px max(8px,env(safe-area-inset-right)) 5px max(8px,env(safe-area-inset-left))}.world-header strong{font-size:14px}.world-header small{font-size:11px}.world-back{font-size:11px;padding:4px 7px}.world-layout{height:calc(100dvh - 62px)}.world-scroll{padding:12px 12px 45px}.world-region{height:238px;margin-bottom:15px}.stage-node{width:62px;height:82px}.stage-node b{width:50px;height:50px}.world-landmarks{font-size:22px;letter-spacing:14px}.world-detail{position:absolute;top:auto;left:0;right:0;bottom:0;width:100%;max-height:min(62dvh,410px);padding:12px 16px calc(10px + env(safe-area-inset-bottom));border-radius:17px 17px 0 0}.world-detail h2{font-size:21px}.world-detail .big{min-height:43px}.enemy-preview{grid-template-columns:repeat(3,minmax(0,1fr))}.world-detail p{margin:7px 0}}
@media(max-height:500px) and (orientation:landscape){.overlay-card.world-card{width:100vw;max-height:none;padding:0}.world-region{height:210px}.world-header{height:54px}.world-layout{height:calc(100dvh - 54px)}.world-detail{position:absolute;left:auto;right:0;top:0;bottom:0;width:min(310px,43vw);max-height:none;border-radius:13px 0 0 13px;padding:8px 12px}.world-scroll{padding-top:8px}.world-detail .enemy-preview{grid-template-columns:repeat(2,minmax(0,1fr))}.world-detail h2{font-size:18px;margin:2px 0}.world-detail p{font-size:11px!important}.world-detail .big{min-height:36px}}
.reduced-motion .world-scroll{scroll-behavior:auto}.reduced-motion .world-region.perfect{box-shadow:0 0 0 3px #ffe29b}.reduced-motion .world-landmarks{animation:none}
.chapter-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:5px;margin:9px 0;color:#f8e7ba;font-size:12px}.chapter-summary strong{grid-column:1/-1;color:#ffe39c}.chapter-summary span{padding:5px;border-radius:6px;background:#1b364c}
/* Permanent progression menus share a compact touch layout in both orientations. */
.overlay:has(.kingdom-card){padding:0;background:#0d1d31}.overlay-card.kingdom-card{width:100vw;max-width:none;height:100dvh;max-height:none;overflow:hidden;border:0;border-radius:0;padding:0;background:#12283c;color:#f5ebd0;text-align:left;box-shadow:none;display:flex;flex-direction:column}.kingdom-header{flex:none;display:flex;align-items:center;gap:12px;min-height:62px;padding:7px max(12px,env(safe-area-inset-right)) 7px max(12px,env(safe-area-inset-left));border-bottom:2px solid #cba768;background:#102235}.kingdom-header button{min-width:44px;min-height:44px;border:1px solid #d3b77e;border-radius:9px;background:#25425d;color:#fff0ca;font-size:22px}.kingdom-header div{display:grid;flex:1}.kingdom-header small{font-size:10px;color:#b9cccf;letter-spacing:1px}.kingdom-header strong{font-size:17px;letter-spacing:.6px}.kingdom-header>span{color:#ffdd84;font-size:14px;font-weight:900;white-space:nowrap}.kingdom-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;padding:14px max(14px,calc((100vw - 760px)/2)) calc(22px + env(safe-area-inset-bottom));background:radial-gradient(ellipse at 50% 0%,#31546a,#142b3f 64%,#102235)}.kingdom-scene{position:relative;height:125px;display:grid;place-items:center;overflow:hidden;border:1px solid #ddb976;border-radius:16px;background:linear-gradient(#2e5b78,#547c80 57%,#254e48 58%,#1a3939);box-shadow:inset 0 0 35px #091b36,0 8px 20px #07142399}.scene-sun{position:absolute;top:7px;right:19%;font-size:39px;color:#ffe4a2;text-shadow:0 0 25px #ffe5ab}.scene-castle{position:absolute;bottom:23px;font-size:49px;letter-spacing:-12px;color:#d6c8ac;text-shadow:0 5px #284557,0 0 13px #b2e4ed}.scene-ground{position:absolute;bottom:1px;font-size:17px;letter-spacing:10px;color:#ffe1a1}.kingdom-panel{padding:16px;margin:12px 0;border:1px solid #a38962;border-radius:13px;background:#1b364b;color:#f8ecd1}.kingdom-panel h1{font-size:26px;margin:3px 0 10px}.kingdom-panel p{font-size:13px;color:#d9e0dc}.kingdom-progress{height:12px;overflow:hidden;border-radius:12px;background:#0b1d2e;border:1px solid #b89f70;margin:8px 0}.kingdom-progress span{display:block;height:100%;background:linear-gradient(90deg,#b78655,#ffe2a0)}.kingdom-currencies{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.kingdom-currencies span{padding:9px;border-radius:8px;background:#28465d;font-size:12px}.kingdom-currencies b{display:block;font-size:17px;color:#ffe5a1}.kingdom-links{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.kingdom-links button,.kingdom-tabs button,.research-node,.kingdom-row button{min-height:48px;border:1px solid #bd9c67;border-radius:9px;background:#28445e;color:#fff0cf;font-weight:800;padding:9px;cursor:pointer}.kingdom-links button:first-child{grid-column:1/-1;background:#456451}.kingdom-card .text-button{color:#f4db9b}.kingdom-tabs{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.kingdom-tabs button{min-height:42px;flex:1 1 120px;font-size:13px}.kingdom-tabs button.active{background:#765c3c;color:#fff6d4;border-color:#ffe4a1}.research-list{display:grid;gap:9px}.research-node{display:grid;gap:5px;width:100%;min-height:104px;text-align:left}.research-node strong{font-size:16px}.research-node span:not(.research-tier){font-size:13px;font-weight:500}.research-node small{color:#f9d791}.research-node.locked{opacity:.67;border-color:#718391}.research-node.maxed{border-color:#9ddaac;background:#315948}.research-tier{font-size:10px;letter-spacing:1px;color:#a8d8e5}.research-inspect{position:absolute;z-index:3;left:50%;top:50%;transform:translate(-50%,-50%);width:min(420px,calc(100vw - 28px));max-height:90dvh;overflow:auto;padding:20px;border:2px solid #e7c98a;border-radius:17px;background:#183249;box-shadow:0 0 0 100vmax #071523ba,0 15px 40px #071523;text-align:center}.research-inspect h2{color:#ffe3a4}.research-inspect p{font-size:14px}.kingdom-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:50px;padding:8px;border-bottom:1px solid #ffffff25}.kingdom-row span{display:grid;gap:3px}.kingdom-row small{font-size:11px;color:#d1deda}.kingdom-row strong,.kingdom-row b{color:#ffe2a1}.kingdom-row button{min-width:95px;font-size:12px}.kingdom-row button:disabled{opacity:.55}.collection-list{display:grid;gap:8px}.collection-card{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #788d91;border-radius:9px;background:#1e3b51}.collection-card>b{font-size:30px}.collection-card>div{display:grid;gap:4px}.collection-card small{color:#d0d9d8;font-size:12px}.battle-rewards{margin:9px 0;padding:10px;border:1px solid #e3bc75;border-radius:10px;background:#244458;text-align:left}.battle-rewards>strong,.battle-rewards>small{display:block;color:#ffdf9d}.battle-rewards .kingdom-row{min-height:29px;padding:3px 7px;font-size:12px}.world-stars{border:0;background:transparent;color:#ffdc83;font-weight:900;font-size:13px;min-height:30px;cursor:pointer}
@keyframes reward-rise{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.battle-rewards .kingdom-row{animation:reward-rise .28s ease both}.battle-rewards .kingdom-row:nth-child(3){animation-delay:.08s}.battle-rewards .kingdom-row:nth-child(4){animation-delay:.16s}.reduced-motion .battle-rewards .kingdom-row{animation:none}
@media(max-width:600px){.kingdom-currencies{grid-template-columns:1fr 1fr}.kingdom-currencies span:last-child{grid-column:1/-1}.kingdom-header strong{font-size:14px}.kingdom-panel h1{font-size:23px}.kingdom-tabs button{min-height:44px}}
@media(max-height:500px) and (orientation:landscape){.kingdom-header{min-height:48px}.kingdom-scroll{padding-top:8px}.kingdom-scene{height:85px}.scene-castle{font-size:34px}.kingdom-panel{margin:7px 0;padding:10px}.kingdom-links button{min-height:39px}.research-node{min-height:75px}.kingdom-tabs{margin:6px 0}.research-inspect{padding:12px}}
.kingdom-scene{background:#345a70 url('./assets/kingdom-hub.svg') center/cover no-repeat}
/* Replay modes use the kingdom menu's full-screen scroll layout. */
.mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:6px 0 18px}
.mode-card{display:flex;flex-direction:column;gap:10px;min-height:210px;padding:17px;border:1px solid #c19a64;border-radius:14px;background:linear-gradient(150deg,#294f60,#1b3448 75%);box-shadow:0 7px 18px #08152377}
.mode-card h2{margin:0;color:#ffe0a0;font-size:20px}.mode-card p{flex:1;margin:0;color:#e1e8e2;font-size:13px;line-height:1.4}.mode-card strong{color:#bde3dd;font-size:13px}.mode-card .big{min-height:45px;margin-top:2px;font-size:14px}.mode-card.locked{filter:saturate(.45);opacity:.72}.mode-card.locked .big{background:#4b5b65;color:#e2e4e1;cursor:default}
.mode-record{padding:8px 14px;margin:8px 0;border:1px solid #ffdf90;border-radius:8px;background:#6d502d;color:#fff4d5;font-weight:900;letter-spacing:1px;text-align:center}
.standardized{padding:9px;border-left:3px solid #a5d6d0;background:#254458;color:#dcf4f0!important;font-weight:800}
.hard-toggle{display:flex;align-items:center;gap:9px;min-height:44px;padding:8px 2px;color:#ffe2a1;font-weight:800;font-size:13px;cursor:pointer}.hard-toggle input{width:21px;height:21px;accent-color:#e3b874}
.ascension-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:55dvh;overflow:auto}.ascension-card{display:grid;gap:5px;min-height:106px;padding:12px;border:1px solid #d4aa6d;border-radius:10px;background:#2b475b;color:#f5ead0;text-align:left;cursor:pointer}.ascension-card strong{color:#ffe19a;font-size:15px}.ascension-card small{color:#9ed5d2}.ascension-card span{font-size:12px}.ascension-card:focus-visible,.mode-card button:focus-visible{outline:3px solid #fff1ad;outline-offset:2px}
.tower-legend button.restricted{opacity:.48;filter:grayscale(.7)}
.resource.mode-score{min-width:82px;border-color:#bea273}.resource.mode-score span{color:#ffdf91}.resource.mode-score strong{font-size:15px}
@media(max-width:700px){.resource.mode-score{min-width:70px;padding:0 4px}.resource.mode-score span{font-size:12px}.resource.mode-score strong{font-size:10px}}
@media(max-width:360px) and (orientation:portrait){.resources{gap:3px}.resource{min-width:61px}.resource.wave{min-width:76px}.resource.mode-score{min-width:57px}.resource.mode-score span{display:none}}
.tower-legend{max-width:min(100%,690px);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin}.tower-legend button{flex:none}
@media(max-width:700px){.tower-legend{max-width:100%;justify-content:flex-start;overflow-x:auto;touch-action:pan-x}.tower-legend button{flex:0 0 65px;min-width:65px}.bottom-bar{overflow:hidden}}
@media(max-width:620px){.mode-grid,.ascension-list{grid-template-columns:1fr}.mode-card{min-height:170px}.mode-card h2{font-size:18px}.mode-card .big{min-height:48px}.hard-toggle{font-size:12px}}
@media(max-height:500px) and (orientation:landscape){.mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mode-card{min-height:165px;padding:11px}.mode-card p{font-size:11px}.ascension-list{max-height:43dvh}}
.hero-roster{display:flex;gap:12px;max-width:min(900px,92vw);overflow-x:auto;scroll-snap-type:x mandatory;touch-action:pan-x;margin:10px auto;padding:2px 3px 12px}.hero-roster .hero-select-card{flex:0 0 clamp(235px,29vw,285px);scroll-snap-align:center}.hero-roster .hero-select-card button{min-height:44px}.hero-select-portrait{width:76px;height:76px}.hero-select-portrait img{width:100%;height:100%;object-fit:cover}
@media(max-width:650px){.hero-roster{max-width:94vw}.hero-roster .hero-select-card{flex-basis:min(78vw,270px)}.kingdom-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;touch-action:pan-x}.kingdom-tabs button{flex:0 0 auto;min-width:90px}}

.content-validation{color:#a7e6b8;font-weight:800}.content-validation span{display:block;color:#ffb6a3}

.mission-list{display:grid;gap:10px;padding:8px 0 18px}.mission-card{padding:13px;border:1px solid #7a91a2;border-radius:12px;background:#1c3248;color:#f7e8ce}.mission-card>strong,.mission-card>div>strong{display:block;font-size:15px}.mission-card small{display:block;color:#b6cbd2;font-size:11px;margin:3px 0 8px}.mission-card .kingdom-progress{margin:8px 0}.mission-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.mission-actions span{margin-right:auto;font-weight:800}.mission-actions button,.mission-card .kingdom-row button{min-height:38px;border:1px solid #b8a878;border-radius:8px;background:#30485c;color:#fff4db;font-weight:800;padding:6px 11px}.mission-actions button:disabled,.mission-card .kingdom-row button:disabled{opacity:.55}.goal-filter,.profile-choice{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:10px 0;font-weight:800}.goal-filter select,.profile-choice select{max-width:65%;min-height:40px;border:1px solid #8198a9;border-radius:8px;background:#1d344c;color:#fff4db;padding:6px}.stage-challenges{display:grid;gap:4px;padding:9px 0}.stage-challenges small{display:block;color:#eadfbd;font-size:12px}

.profile-badge{display:grid;gap:3px;margin:9px 0 15px;padding:14px;border:2px solid #c4ad78;border-radius:13px;background:linear-gradient(130deg,#233b52,#344760);text-align:center}.profile-badge b{font-size:22px;color:#ffdfa0}.profile-badge strong{font-size:16px}.profile-badge small{color:#cbd6d8}
.settings-save{margin:10px 0;padding:9px;border:1px solid #839dac;border-radius:9px;background:#142b40}.settings-save p{font-size:12px;margin:0 0 6px}.settings-save .text-button{display:inline-block;min-height:44px;margin:2px 5px;padding:9px 11px;border:1px solid #718e9b;border-radius:8px}.settings-save .settings-note{margin-top:5px}
.settings-details{margin:8px 0 14px;padding:8px;text-align:left;border:1px solid #6f8897;border-radius:8px}.settings-details summary{cursor:pointer;font-size:13px;font-weight:800}.settings-details p{font-size:11px;margin:7px 0}
button:focus-visible,select:focus-visible,.setting-row:focus-within{outline:3px solid #fff2aa;outline-offset:2px}
@media(max-width:700px){.icon-button{min-width:44px;height:44px}.panel-close,.tutorial button,.text-button,.upgrade-card-actions button,.upgrade-footer button,.upgrade-close,.mission-actions button,.mission-card .kingdom-row button{min-height:44px}.tower-legend button{min-height:44px}}
