:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#edf8f5;background:#0c2229;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:1px solid #53776d;background:#173735ed;border-radius:9px;padding:10px 15px;transition:background .2s,border .2s,transform .2s}button:hover{background:#315c51;border-color:#a0f2d7}button:active{transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #a5ffe2;outline-offset:3px}header{height:72px;position:absolute;z-index:5;top:0;left:0;right:0;padding:18px 25px;display:flex;align-items:center;gap:15px;background:linear-gradient(#0b1d25e8,transparent);pointer-events:none}header>*{pointer-events:auto}header a{color:#9acec4;text-decoration:none;font-size:24px}.brand{font-size:18px;letter-spacing:3px}.brand b{color:#7ceac5}.brand small{display:block;font-size:8px;letter-spacing:2px;color:#7d9d9e;margin-top:4px}nav{margin-left:auto;display:flex;gap:8px}nav button{font-size:11px;padding:8px 12px}#shards{color:#ffd68d;margin-left:7px}#stage{position:relative;height:100dvh;min-height:760px;overflow:hidden}#viewport{position:absolute;inset:0}canvas{display:block;touch-action:none}.world-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.world-labels button{pointer-events:auto}.world-title{width:420px;text-align:center;pointer-events:none;text-shadow:0 3px 14px #051515}.world-title small{color:#acdac9;font-size:9px;letter-spacing:3px}.world-title h1{font-size:27px;font-weight:500;letter-spacing:-1px;margin:7px 0}.world-title p{font-size:11px;color:#9ec9c4;margin:0}.world-hud{display:flex;align-items:center;justify-content:center;gap:22px;padding:10px 20px;border:1px solid #6c95835c;border-radius:6px;background:linear-gradient(120deg,#172e2cf2,#27443eef);box-shadow:0 5px 20px #051a1880;font-size:10px;color:#a3c5bc;white-space:nowrap;pointer-events:none}.world-hud b{color:#f2fff9;font-size:19px;margin-left:5px}.world-hud .gold,.world-hud .gold b{color:#ffce7b}#storm{font-size:8px;color:#ceae77}.world-shop{width:235px;padding:12px;background:#102d2be8;border:1px solid #6e9c81;border-radius:12px;box-shadow:0 10px 40px #02120c88}.world-shop:before{content:'THE TOWER FOUNDRY';display:block;text-align:center;font-size:8px;letter-spacing:2px;color:#aac8b8;margin-bottom:10px}.tower-card{display:grid;grid-template-columns:30px 1fr auto;gap:8px;align-items:center;text-align:left;width:100%;padding:12px 9px;margin:6px 0;background:#173b36;border-color:#395e50}.tower-card.selected{border-color:var(--color);box-shadow:inset 0 0 22px #7af4cf15}.tower-icon{font-size:26px;color:var(--color)}.tower-card strong{font-size:12px;font-weight:600}.tower-card small{display:block;color:#a8c5b8;font-size:9px;line-height:1.5;margin-top:4px}.price{font-size:11px;color:#edc381}.world-selection{width:205px;padding:12px;background:#153332f2;border:1px solid #87c3a6;border-radius:10px;box-shadow:0 8px 25px #0007;pointer-events:auto}.world-selection[hidden]{display:none}.world-selection p{font-size:12px;margin:0}.world-selection small{display:block;color:#a5c9bd;font-size:10px;margin-top:5px}.world-selection button{font-size:10px;padding:7px 9px;margin:8px 3px 0 0}.world-launch{width:230px;padding:12px;background:#13312bec;border:1px solid #658c74;border-radius:12px;text-align:center}.world-launch button{width:100%;margin:5px 0;font-size:12px}.primary{background:#a0e8bd;color:#143629;border-color:#b7f8d7;font-weight:650}.primary:hover{background:#c3ffe0}#forecast{font-size:10px;color:#aecdbb;line-height:1.6;margin-bottom:8px}#pulse{color:#abdcfa;border-color:#4b7c8c;background:#173343}#pulse small{font-size:9px;color:#7ea7b9;margin-left:5px}#streak{color:#bad7c4;font-size:8px;letter-spacing:1.4px;margin:9px 0 2px}.controls{position:absolute;bottom:13px;left:0;right:0;text-align:center;font-size:9px;letter-spacing:1px;color:#7eb5ab;pointer-events:none}#toast{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);font-size:25px;color:#c6ffe7;text-shadow:0 2px 15px #000;pointer-events:none;opacity:0;transition:opacity .2s;white-space:nowrap}.modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;background:#061611ce;backdrop-filter:blur(9px);padding:22px}.modal[hidden]{display:none}.dialog{width:min(850px,100%);max-height:90dvh;overflow:auto;border:1px solid #64917a;border-radius:19px;background:linear-gradient(130deg,#1c3933,#112c30);padding:30px;box-shadow:0 25px 100px #0009}.dialog>small{font-size:9px;letter-spacing:3px;color:#9de5c2}.dialog h2{font-size:33px;font-weight:500;letter-spacing:-1px;margin:13px 0}.dialog>p{font-size:13px;color:#b3cbbc;line-height:1.8;margin:0 0 20px}.dialog button{margin-top:10px}.rewards{display:flex;gap:12px}.reward{flex:1;text-align:left;padding:22px;min-height:145px}.reward strong{display:block;color:#c1ffe0;font-size:18px;margin-bottom:12px}.reward small{font-size:12px;line-height:1.7;color:#bed3c7}.tree-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.branch h3{text-align:center;color:#e3c58d;font-size:11px;letter-spacing:2px;margin:5px 0 10px}.tree-node{display:block;text-align:left;position:relative;width:100%;min-height:105px;margin:15px 0!important;padding:12px;background:#1b3b36}.tree-node+.tree-node:before{content:'↓';position:absolute;left:50%;top:-21px;color:#799e81;pointer-events:none}.tree-node.locked{opacity:.5}.tree-node.owned{border-color:#d8bd77}.tree-node strong{display:block;font-size:12px;color:#d6f2dd}.tree-node small{display:block;font-size:10px;line-height:1.6;color:#a6c9b8;margin:6px 0}.node-price{font-size:9px;color:#e7c582}.tree-footer{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:12px}.tree-footer select{background:#173c31;color:#def4df;border:1px solid #648d6b;border-radius:8px;padding:8px}.tree-footer p{font-size:10px;color:#a3c8b5;margin:0}.floating-number{font-size:12px;color:#ffd981;pointer-events:none;text-shadow:0 2px 4px #000;white-space:nowrap}.floating-number.chain{color:#abffe0;font-size:16px}.secondary{background:transparent;color:#a3ccb9}@media(max-width:760px){header{padding:12px 10px;gap:7px;height:60px}.brand{font-size:11px;letter-spacing:1px}.brand small{font-size:6px;letter-spacing:1px}nav{gap:4px}nav button{padding:7px;font-size:9px}#tree{font-size:0}#tree:first-letter{font-size:12px}#shards{font-size:10px;margin-left:1px}#stage{height:100dvh;min-height:880px}.world-title{width:320px}.world-title h1{font-size:20px}.world-title p{font-size:9px}.world-hud{padding:7px 10px;gap:12px;font-size:8px}.world-hud b{font-size:15px}.world-shop{display:flex;gap:4px;width:345px;padding:7px}.world-shop:before{display:none}.tower-card{display:block;text-align:center;width:25%;padding:6px 4px;margin:0}.tower-icon{font-size:22px;display:block}.tower-card strong{font-size:10px}.tower-card small{display:none}.price{font-size:10px;display:block;margin-top:4px}.world-launch{width:335px;padding:8px;display:grid;grid-template-columns:1fr 1fr;gap:4px}#forecast{grid-column:1/-1;font-size:9px;margin:0}#streak{grid-column:1/-1;font-size:7px;margin:0}.world-launch button{font-size:10px;padding:9px;margin:0}.world-launch #pulse small{display:none}.controls{font-size:7px;bottom:8px;letter-spacing:0}.world-selection{width:178px;padding:10px}.tree-grid{gap:8px}.tree-node{min-height:120px;padding:8px}.tree-node strong{font-size:10px}.tree-node small{font-size:9px}.dialog{padding:20px}.dialog h2{font-size:26px}.dialog>p{font-size:11px}.rewards{flex-direction:column}.reward{min-height:0;padding:15px}.reward strong{font-size:16px;margin-bottom:8px}.tree-footer{gap:5px}.branch h3{font-size:9px}}

.socket-target{width:32px;height:32px;padding:0;background:transparent;border:0;border-radius:50%;box-shadow:none}.socket-target:hover{background:#c8ffe81a;outline:1px solid #b7ffe6}.socket-target:focus-visible{outline:2px solid #c8ffe8}

.tree-node:disabled{opacity:.8}.tree-node.locked:disabled{opacity:.65}

#enemy-roster{font-size:8px;line-height:1.6;color:#b7c8ba;margin-bottom:5px}#score{font-size:10px;letter-spacing:1px;color:#f0d495;margin-top:5px}.tower-card{padding:8px 9px}.tower-card small{font-size:9px;line-height:1.35}.help-tips{display:grid;grid-template-columns:1fr 1fr;gap:12px 25px}.help-tips p{font-size:12px;color:#b3cbbc;line-height:1.7;margin:0 0 8px}.help-tips strong{display:block;color:#d1ffe0;margin-bottom:4px}.board-controls{display:flex;justify-content:space-between;align-items:center;gap:12px}.board-controls label{font-size:12px}.scoreboard select,.scoreboard input{font:inherit;background:#14342f;color:#e4fbea;border:1px solid #658c74;border-radius:8px;padding:9px}.board-status{font-size:12px;line-height:1.6;color:#b9d9c8;min-height:20px}.board-list{max-height:38dvh;overflow:auto}.board-list table{width:100%;border-collapse:collapse;font-size:13px}.board-list caption{text-align:left;font-size:10px;color:#ddb877;letter-spacing:1px;margin-bottom:8px}.board-list th{text-align:left;font-size:10px;color:#a6bfb2;position:sticky;top:0;background:#17352f}.board-list th,.board-list td{padding:10px 6px;border-bottom:1px solid #38584b}.board-list td:nth-child(3){color:#ffe09a;font-variant-numeric:tabular-nums}.score-form{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin-top:15px}.score-form label{font-size:10px;color:#bddcca}.score-form input{display:block;margin-top:5px;width:210px}.score-form button{margin:0}.scoreboard input:focus-visible,.scoreboard select:focus-visible{outline:2px solid #a5ffe2;outline-offset:2px}@media(max-width:760px){.world-shop{width:345px}.tower-card{width:16.666%;padding:6px 2px}.tower-card strong{font-size:9px}.tower-icon{font-size:20px}.world-launch #enemy-roster,.world-launch #score{grid-column:1/-1;font-size:7px;margin:0}.help-tips{grid-template-columns:1fr;gap:7px}.help-tips p{font-size:11px}.board-list table{font-size:11px}.board-list th,.board-list td{padding:9px 4px}.score-form input{width:170px}.board-controls{gap:6px}.board-controls select{padding:6px;font-size:11px}}
.world-shop{width:240px}.tower-card{padding:7px 8px;margin:4px 0}.tower-card small{line-height:1.25;font-size:9px}.world-shop:before{margin-bottom:8px}@media(min-width:761px) and (max-height:850px){.tower-card{padding:6px 8px}.tower-card small{font-size:8px;line-height:1.2}.world-shop{padding:8px;width:235px}.world-launch{padding:9px}.world-launch button{padding:8px}}@media(max-width:760px){.world-shop{width:345px;padding:7px}.tower-card{padding:6px 2px;margin:0}}
.world-labels{z-index:1}
@media(max-width:760px){#stage{min-height:700px}.controls{display:none}}
@media(max-width:760px){.world-shop{width:min(345px,calc(100vw - 20px))}.world-launch{width:min(335px,calc(100vw - 24px))}}

@media(max-width:760px){.tower-card{font-size:10px;line-height:1.1}.tower-card .price{margin-top:2px}}

@media(max-width:760px) and (max-height:759px){.world-launch{gap:2px;padding:6px}.world-launch button{padding:7px}.world-shop{padding:5px}}

@media(max-width:760px) and (max-height:759px){.world-title h1{font-size:16px;margin:0}.world-title small,.world-title p{display:none}}

.mastery-badge{color:#f0d49a!important;line-height:1.5}.world-selection .mastery-ready{display:block;width:100%;margin:8px 0 0;background:#324732;border-color:#d7bc78;color:#f7e6b8}.mastery-choices{gap:18px}.mastery-choice{border-color:var(--mastery-color);min-height:220px;position:relative}.mastery-choice strong{color:var(--mastery-color);margin-top:12px}.mastery-icon{color:var(--mastery-color);font-size:34px}.mastery-cost{display:block;color:#dfca94;font-size:9px;letter-spacing:2px;margin-top:18px}.mastery-choice:hover{box-shadow:inset 0 0 30px #daf9d512}.mastery-choices small{display:block}@media(max-width:760px){.mastery-choices{gap:10px}.mastery-choice{min-height:0}.mastery-icon{font-size:25px}.mastery-choice strong{margin-top:7px}.mastery-cost{margin-top:12px}.world-selection .mastery-badge{font-size:9px}}
