@import url('data:text/css,');
:root{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#e8eee6;background:#101b2b;font-synthesis:none;color-scheme:dark;--ink:#101b2b;--panel:#162335;--line:#9bafa229;--muted:#a9b8b5;--gold:#ebd2a1;--accent:#c6ed8b}
*{box-sizing:border-box}body{margin:0;overscroll-behavior:none}button{font:inherit;cursor:pointer;color:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.45}button:focus-visible{outline:3px solid #d8f1bb;outline-offset:3px}button{border:1px solid var(--line);background:#233346;border-radius:9px;min-height:44px}button:hover:not(:disabled){filter:brightness(1.12)}[hidden]{display:none!important}h1,h2,h3,p{margin:0}button strong{font-weight:700}small{font-size:11px;color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:2.5px;color:#afc1b2;font-weight:700}.primary-button{background:#d6e4b8;border-color:#eff5db;color:#1f352e;font-weight:750;padding:0 20px;box-shadow:0 3px 0 #090f2033;min-height:46px}.primary-button span{font-size:24px;padding-left:10px;line-height:1}.ghost-button{background:transparent;padding:0 18px}.small-button{padding:0 12px;font-size:12px;background:#19283b;white-space:nowrap}.icon-button{width:44px;height:44px;flex-shrink:0;background:#1c2b3f;font-size:23px}.danger-button{background:#482e37;border-color:#d49a7933;color:#edc4b4;padding:0 15px}.muted{color:var(--muted)}.divider{height:1px;background:var(--line);margin:14px 0}
.campaign{max-width:1460px;margin:auto;padding:34px 38px 24px;min-height:100svh;background:radial-gradient(ellipse at 70% 0,#3a4c4b55,transparent 55%)}.campaign-head{display:flex;gap:16px;align-items:center}.campaign-head>button{margin-left:auto}.campaign-head h1{font-size:30px;letter-spacing:4px;line-height:1.25}.campaign-head h1 span{display:block;font-size:15px;font-weight:450;letter-spacing:6px;color:#c6d6c6}.brandmark{width:48px;height:64px;display:flex;gap:5px;align-items:center;transform:skewY(-12deg)}.brandmark span{height:41px;width:10px;border:1px solid #dfe9be;background:#99ad8b44}.brandmark span:nth-child(2){height:60px;background:#d8e6b975}.intro{display:grid;grid-template-columns:1.2fr 1fr;gap:70px;align-items:center;margin:30px 0}.intro h2{font-size:23px;font-weight:650;margin-bottom:10px}.intro p{font-size:14px;line-height:1.65;color:#b4c3bd;max-width:600px}.campaign-note{border-left:2px solid #adc99466;padding:8px 18px;background:linear-gradient(90deg,#afc88e08,transparent)}.campaign-note strong{font-size:13px;color:#dfebce}.campaign-note p{font-size:12px;margin-top:5px}.map-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:15px}.map-card{grid-column:span 2;overflow:hidden;background:linear-gradient(140deg,#20313e,#152133);border-radius:13px;border:1px solid #b9c2a835;position:relative;padding:0;text-align:left;transition:border-color .2s}.map-card:nth-child(4),.map-card:nth-child(5){grid-column:span 3}.map-card:disabled{opacity:.68}.map-card canvas{display:block;width:100%;aspect-ratio:2.32;object-fit:cover}.map-art{overflow:hidden;border-bottom:1px solid #a4b6a132;position:relative}.map-art:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 40%,#142232aa)}.map-number{position:absolute;left:15px;top:13px;font-size:11px;letter-spacing:1.5px;border:1px solid #e2e8cf55;padding:6px 8px;border-radius:5px;background:#152237aa;z-index:1}.map-info{padding:15px 17px}.map-info h3{font-size:20px;margin-bottom:2px;letter-spacing:.3px;color:var(--map-accent)}.map-sub{font-size:11px;color:#c0cfc5;letter-spacing:.4px}.map-demand{font-size:11px;color:#9faeb0;margin-top:11px;white-space:normal}.map-progress{margin:12px 0 9px;height:3px;background:#8daaa22d;border-radius:2px}.map-progress i{display:block;height:100%;background:var(--map-accent);border-radius:2px}.map-bottom{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#b0c2b7;min-height:20px}.map-bottom strong{color:#e2edce;font-size:12px}.campaign-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:22px;font-size:10px;color:#97a6a8}.campaign-footer>div{display:flex;gap:7px}
.game-view{height:100svh;display:grid;grid-template-rows:61px minmax(0,1fr) 64px;max-width:1920px;margin:auto;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.game-header{display:flex;align-items:center;gap:12px;padding:7px 12px;border-bottom:1px solid var(--line);background:#132135}.level-title{display:flex;flex-direction:column;min-width:130px}.level-title span{font-size:9px;color:#afbfbb;letter-spacing:1.3px;text-transform:uppercase}.level-title strong{font-size:19px;color:var(--accent);letter-spacing:.5px}.resources{display:flex;justify-content:center;gap:27px;flex:1}.resources>div{display:grid;grid-template-columns:auto auto;column-gap:6px;align-items:baseline}.resources span{font-size:9px;letter-spacing:1.1px;color:#a6b9b4}.resources strong{font-size:21px;font-variant-numeric:tabular-nums;letter-spacing:.2px}.resources>div:nth-child(2) strong{color:var(--gold)}.resources i{font-style:normal;font-size:10px;color:var(--gold)}.header-actions{display:flex;gap:7px}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 224px;min-height:0}.battlefield{display:grid;grid-template-rows:35px minmax(0,1fr) 36px;min-width:0;min-height:0;background:#101c2c}.field-info,.field-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 15px;border-bottom:1px solid #adc0a817;color:#b7c8bc;font-size:11px}.field-info{background:#18293b}.field-info>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-button{border:0;background:transparent;min-height:32px;font-size:11px;padding:0 5px;color:#d4dfb6;white-space:nowrap}.field-foot{border-top:1px solid #adc0a817;border-bottom:0;color:#b1c1b9;font-size:10px;background:#152334}.field-foot>span:last-child{white-space:nowrap;color:#c9d9ad}.canvas-wrap{position:relative;min-height:0;overflow:hidden}#board{display:block;width:100%;height:100%;touch-action:none;user-select:none}.toast{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);padding:12px 18px;font-size:12px;border-radius:8px;background:#172b3beb;box-shadow:0 5px 20px #040c2055;border:1px solid #bfd39c75;pointer-events:none;max-width:90%;width:max-content;text-align:center;color:#edf1ce}.side-panel{background:linear-gradient(155deg,#1c2b3e,#152234);border-left:1px solid var(--line);padding:13px 11px;overflow:auto;min-height:0;scrollbar-width:thin}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.panel-heading h2{font-size:14px;letter-spacing:.3px}.panel-heading button{min-height:44px;width:44px;font-size:20px;background:transparent;border:0}.panel-eyebrow{font-size:9px;color:#a7bbb0;letter-spacing:1.5px;font-weight:700;margin:0 0 10px}.tower-list{display:grid;gap:6px}.tower-card{min-height:67px;width:100%;padding:2px 8px 2px 2px;display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:1px;text-align:left;background:#26364880;border-color:#a6b8ad22;border-radius:8px}.tower-card.active{background:#43503d66;border-color:var(--tower-color)}.tower-card.unaffordable{color:#a5b1ad}.tower-card canvas{pointer-events:none;flex-shrink:0}.tower-card strong{display:block;font-size:12px;line-height:1.25;color:var(--tower-color)}.tower-card small{display:block;font-size:9px;line-height:1.5;white-space:normal;color:#a6b8b1;margin-top:3px}.tower-card .price{font-size:12px;font-weight:750;color:var(--gold)}.panel-tip{font-size:10px;line-height:1.6;color:#a6b8b1;margin:12px 3px 3px}.panel-portrait{display:flex;align-items:center;justify-content:center;gap:5px;min-height:94px;background:radial-gradient(ellipse,#e2cbaa12,transparent);border:1px solid #acbaa621;border-radius:9px;margin-bottom:12px}.panel-portrait canvas{width:83px!important;height:83px!important}.panel-portrait>div{padding-right:5px}.panel-portrait h3{font-size:16px;color:var(--tower-color);line-height:1.15}.panel-portrait small{font-size:10px;line-height:1.5;display:block}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.stats-grid>div{background:#10213199;padding:8px 9px;border:1px solid #9fbcb31c;border-radius:6px}.stats-grid span{display:block;font-size:9px;letter-spacing:.6px;color:#a5b6b0}.stats-grid strong{font-size:16px;line-height:1.5;font-variant-numeric:tabular-nums}.stats-grid strong small{font-size:10px;margin-left:2px}.stats-detail{font-size:11px;line-height:1.5;color:#c0cbbb;margin:-4px 2px 12px}.target-row{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:13px}.target-row button{font-size:10px;min-height:44px;padding:0 3px;background:#1d3041}.target-row button.active{background:#425846;border-color:#c4df9e;color:#edf5d0}.target-row button:nth-child(4),.target-row button:nth-child(5){grid-column:span 1}.upgrade-button{width:100%;min-height:52px;display:flex;align-items:center;justify-content:space-between;padding:9px 11px;background:#33483e;border-color:#b8d39766;text-align:left;margin-bottom:7px}.upgrade-button strong{font-size:12px}.upgrade-button small{display:block;font-size:10px;margin-top:3px;color:#b9ccb9}.upgrade-button span{color:#ebd2a1;font-size:12px;font-weight:700;margin-left:6px;white-space:nowrap}.branch-button{background:#243748;min-height:79px}.branch-button small{line-height:1.5;max-width:145px}.sell-button{width:100%;font-size:11px;margin-top:7px;background:#412e34;border-color:#b9957440;color:#ddc2b1}.build-button{width:100%;min-height:51px;margin-top:7px;font-size:12px}.cancel-build{width:100%;margin-top:7px;font-size:11px;background:transparent}.build-instruction{font-size:11px;line-height:1.6;color:#b5c9b8;background:#aaca910a;border:1px solid #aec18e2b;padding:11px;border-radius:8px}.action-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border-top:1px solid var(--line);background:#142135}.ability-group{display:flex;gap:7px}.ability-button{min-height:46px;display:flex;align-items:center;gap:9px;padding:4px 12px 4px 8px;text-align:left;font-size:12px;background:#233548;min-width:105px}.ability-button small{display:block;font-size:10px;line-height:1.5;color:#bccbbd}.ability-button.aiming{border-color:#ffe0a0;background:#61533c}.ability-symbol{width:24px;height:24px;position:relative;flex-shrink:0}.meteor-symbol{border-radius:50%;width:19px;height:19px;margin:0 3px;background:radial-gradient(circle at 35% 35%,#ffe7ad,#c7784e 70%);box-shadow:-4px -3px 0 #fbd08729}.meteor-symbol:after{content:"";position:absolute;left:-5px;top:-4px;width:16px;height:3px;background:#f0bb7850;transform:rotate(45deg);border-radius:10px}.time-symbol{border:2px solid #b4dce6;border-radius:50%}.time-symbol:before{content:"";position:absolute;width:2px;height:9px;background:#b4dce6;left:10px;top:3px;transform:rotate(-20deg);transform-origin:bottom}.time-symbol:after{content:"";position:absolute;width:6px;height:2px;background:#b4dce6;left:10px;top:11px}.ward-symbol{border:2px solid #e8d8ab;border-radius:4px 4px 10px 10px;width:20px;height:24px;margin:0 2px;background:#dacc9722}.ward-symbol:after{content:"";position:absolute;left:7px;top:4px;width:2px;height:12px;background:#e8d8ab}.bottom-tools{display:flex;gap:5px}.bottom-tools #motion{font-size:10px}.action-bar>.primary-button{min-width:178px;font-size:12px}
dialog{border:1px solid #b4cba76b;border-radius:16px;padding:0;color:#e9f0df;background:linear-gradient(140deg,#213747,#17263c);box-shadow:0 22px 80px #020c2299;max-width:min(760px,calc(100vw - 32px));width:620px;max-height:calc(100svh - 36px);overflow:auto}dialog::backdrop{background:#06111ccc;backdrop-filter:blur(5px)}.modal-inner{padding:27px 30px}.modal-inner h2{font-size:27px;letter-spacing:.2px;color:#e9eccd;margin:5px 0 12px}.modal-inner>p{font-size:13px;line-height:1.7;color:#becfc1;margin-bottom:14px}.modal-heading{display:flex;justify-content:space-between;align-items:center}.modal-heading>button{font-size:24px;width:44px;background:transparent;border:0}.modal-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.modal-actions button{flex:1;padding:0 15px;font-size:13px}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:17px 0}.help-item{border:1px solid #acbaa62b;background:#14253899;border-radius:8px;padding:13px}.help-item strong{display:block;font-size:13px;color:#d4e6b9;margin-bottom:6px}.help-item p{font-size:11px;line-height:1.65;color:#b7c8bc}.enemy-list{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:12px 0}.enemy-item{display:flex;gap:11px;align-items:center;padding:7px 10px;background:#12233980;border-radius:7px}.enemy-item canvas{width:45px;height:60px;flex-shrink:0}.enemy-item strong{font-size:12px;display:block}.enemy-item p{font-size:10px;line-height:1.5;color:#b1c4b9;margin-top:3px}.boss-card{display:flex;gap:18px;align-items:center;padding:15px;background:#d7c28d09;border:1px solid #d7c28d47;border-radius:10px}.boss-card canvas{width:95px;height:120px;flex-shrink:0}.boss-card h3{font-size:18px;color:#edd9b1}.boss-card p{font-size:12px;line-height:1.7;color:#becbbd;margin-top:7px}.result-stats{display:flex;gap:12px;justify-content:space-between;margin:20px 0}.result-stats>div{background:#152b3899;border-radius:8px;border:1px solid #b7c8a42c;padding:12px 17px;flex:1}.result-stats strong{display:block;font-size:22px;color:#e8d9b6}.result-stats span{font-size:10px;color:#b1c7bb}.result-emblem{height:70px;display:flex;align-items:center;justify-content:center;margin-top:2px}.result-emblem>div{width:52px;height:62px;border:2px solid #cedcac;background:#cfdfa325;border-radius:9px 9px 23px 23px;transform:rotate(-4deg);position:relative;box-shadow:0 0 30px #dfe4a219}.result-emblem>div:after{content:"";position:absolute;border:1px solid #f0ebc8;width:15px;height:30px;top:12px;left:16px;transform:rotate(45deg)}.result-emblem.loss>div{border-color:#d8a28f;background:#dba18915;box-shadow:none}
@media(min-width:1450px){.play-layout{grid-template-columns:minmax(0,1fr) 258px}.side-panel{padding:15px}.tower-card{min-height:76px}.tower-card strong{font-size:14px}.tower-card small{font-size:10px}.tower-card .price{font-size:14px}}
@media(max-width:1080px) and (orientation:landscape){.play-layout{grid-template-columns:minmax(0,1fr) 210px}.side-panel{padding:10px 8px}.tower-card{min-height:61px;grid-template-columns:47px minmax(0,1fr) auto}.tower-card canvas{width:47px!important;height:47px!important}.tower-card strong{font-size:11px}.tower-card small{font-size:8px}.ability-button{padding-right:8px;min-width:98px}.bottom-tools #motion{max-width:91px;white-space:normal;line-height:1.2}.resources{gap:20px}.campaign{padding:25px 29px}.intro{margin:23px 0;gap:40px}.map-card canvas{aspect-ratio:2.6}.map-info{padding:12px 15px}.map-info h3{font-size:18px}.map-demand{margin-top:8px}.map-progress{margin-top:10px}}
@media(orientation:portrait){.game-view{height:100svh;grid-template-rows:67px minmax(0,1fr) 112px}.play-layout{display:flex;flex-direction:column;overflow:hidden}.battlefield{flex:none;height:calc((100vw - 0px)*.634 + 70px);max-height:62%;width:100%}.side-panel{border-left:0;border-top:1px solid var(--line);flex:1;width:100%;padding:12px 16px}.tower-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.tower-card{grid-template-columns:45px minmax(0,1fr);padding-right:5px;min-height:68px;position:relative}.tower-card canvas{width:45px!important;height:45px!important}.tower-card strong{font-size:11px;padding-right:2px}.tower-card small{font-size:8px;line-height:1.4}.tower-card .price{position:absolute;bottom:4px;right:6px;font-size:10px}.panel-heading{margin-bottom:5px}.panel-tip{margin-top:6px}.side-panel:has(.selection){display:grid;grid-template-columns:190px minmax(0,1fr);gap:10px}.selection{display:contents}.selection>.panel-heading{grid-column:1/-1}.selection>.panel-portrait{grid-column:1;grid-row:2;min-height:74px;margin:0}.selection>.stats-grid{grid-column:1;grid-row:3/6;margin:0;align-content:start;gap:5px}.selection>.stats-detail{grid-column:2;margin:0}.selection>.target-section{grid-column:2}.selection>.upgrade-section{grid-column:2}.selection>.build-instruction,.selection>.build-controls{grid-column:2}.selection>.sell-button{grid-column:2;margin-top:0}.selection .target-row{grid-template-columns:repeat(5,1fr);margin-bottom:0}.selection .upgrade-button{min-height:44px;margin-bottom:4px}.selection .branch-button{min-height:60px}.selection .branch-button small{max-width:none}.action-bar{display:grid;grid-template-columns:1fr auto;grid-template-rows:48px 44px;padding:7px 12px;gap:5px 10px}.ability-group{grid-column:1;grid-row:1;gap:6px}.ability-button{flex:1;min-width:0;justify-content:center}.bottom-tools{grid-row:2;grid-column:1;justify-content:space-between}.bottom-tools button{flex:1}.action-bar>.primary-button{grid-column:2;grid-row:1/3;min-width:150px;max-width:200px;min-height:93px;padding:0 13px}.resources{gap:18px}.resources>div{display:block;text-align:center}.resources span{display:block;font-size:8px}.resources strong{font-size:18px}.level-title{min-width:125px}.campaign{padding:28px 24px}.intro{gap:25px;margin:25px 0}.map-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.map-card,.map-card:nth-child(4),.map-card:nth-child(5){grid-column:span 1}.map-card:nth-child(5){grid-column:span 2}.map-card canvas{aspect-ratio:2.2}.map-card:nth-child(5) canvas{aspect-ratio:3.6}.campaign-footer{flex-wrap:wrap}.campaign-footer>span:last-child{width:100%;text-align:center}.help-grid{gap:8px}.modal-inner{padding:22px}}
@media(max-width:650px){.game-header{gap:7px;padding:7px}.level-title{min-width:95px}.level-title strong{font-size:15px}.level-title span{font-size:7px}.resources{gap:9px}.resources strong{font-size:15px}.icon-button{width:44px}.header-actions{gap:4px}.tower-list{grid-template-columns:repeat(2,minmax(0,1fr))}.field-info,.field-foot{padding:0 9px;font-size:9px}.field-foot span:last-child{font-size:8px}.action-bar>.primary-button{min-width:118px;font-size:11px}.ability-button{padding:4px 5px;font-size:10px;gap:4px}.ability-symbol{transform:scale(.8)}.bottom-tools .small-button{font-size:10px;padding:0 6px}.campaign-head h1{font-size:22px}.campaign-head h1 span{font-size:12px;letter-spacing:4px}.brandmark{display:none}.campaign-head .ghost-button{padding:0 10px;font-size:11px}.intro{grid-template-columns:1fr;gap:15px}.intro p{font-size:12px}.intro h2{font-size:21px}.map-info{padding:12px}.map-info h3{font-size:17px}.map-demand{font-size:10px}.map-bottom{font-size:9px}.side-panel:has(.selection){grid-template-columns:140px minmax(0,1fr);gap:8px}.panel-portrait canvas{width:60px!important;height:60px!important}.panel-portrait h3{font-size:13px}.target-row button{font-size:8px}.stats-grid strong{font-size:14px}.stats-grid>div{padding:6px}.enemy-list,.help-grid{grid-template-columns:1fr}.boss-card{padding:10px;gap:9px}.boss-card canvas{width:70px;height:100px}.modal-inner{padding:18px}.modal-inner h2{font-size:22px}.result-stats{gap:7px}.result-stats>div{padding:10px}.result-stats strong{font-size:18px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none!important}}

/* Continuation: checkpoint entry and readable touch targets. */
.continue-card{display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid #bad29861;border-radius:11px;padding:15px 18px;background:linear-gradient(115deg,#344a3e,#1b2e3b);margin-bottom:18px}.continue-card strong{font-size:15px;color:#e4edcf}.continue-card p{font-size:11px;color:#b6c8b9;margin-top:5px}.continue-card .primary-button{font-size:12px;flex-shrink:0}
body.playing{overflow:hidden}.battlefield{grid-template-rows:44px minmax(0,1fr) 36px}.preview-button{min-height:44px}.map-bottom{gap:12px}.map-bottom>span{line-height:1.45}.map-bottom>strong{white-space:nowrap}.panel-portrait{--tower-color:inherit}.build-hint{line-height:1.4}.field-foot>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.enemy-item canvas,.boss-card canvas{display:block;flex-shrink:0}.panel-heading h2{line-height:1.4}.side-panel button:disabled{opacity:.58}.ability-button:disabled{opacity:.6}
@media(orientation:portrait){.battlefield{height:calc(100vw*.634 + 80px)}.continue-card{padding:13px}.field-foot{font-size:10px}}
@media(max-width:650px){.continue-card{gap:10px}.continue-card strong{font-size:12px}.continue-card .primary-button{padding:0 11px}.field-foot{font-size:9px}.field-foot>span:last-child{max-width:40%;overflow:hidden;text-overflow:ellipsis}}
@media(orientation:portrait) and (min-width:651px){
 .selection>.stats-detail{grid-column:2;grid-row:2;align-self:start;margin-top:0}
 .selection>.target-section{grid-column:2;grid-row:2;align-self:end}
 .selection>.upgrade-section{grid-column:2;grid-row:3;display:grid;grid-template-columns:1fr 1fr;gap:5px}
 .selection>.upgrade-section>.panel-eyebrow{grid-column:1/-1;margin:0 0 2px}
 .selection>.upgrade-section>.upgrade-button:not(.branch-button){grid-column:1/-1}
 .selection .branch-button{min-height:78px;margin-bottom:0}
 .selection>.build-controls{grid-column:2;grid-row:4}
 .selection>.sell-button{grid-column:2;grid-row:5;min-height:44px}
 .selection>.stats-grid{grid-row:3/6}
 .selection>.panel-portrait{min-height:87px}
 .selection>.build-controls>.build-button{margin:0;min-height:44px}
}
