:root{--bg: var(--tg-theme-bg-color, #14121a);--bg2: var(--tg-theme-secondary-bg-color, #221e2b);--text: var(--tg-theme-text-color, #f1ead9);--hint: var(--tg-theme-hint-color, #9a93a6);--button: var(--tg-theme-button-color, #d9a93f);--button-text: var(--tg-theme-button-text-color, #1d1408);--gold: #f0c35a;--danger: #e2574c;--ok: #6fe06a;--radius: 14px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;user-select:none;-webkit-user-select:none}button{font:inherit;color:inherit}h1,h2,h3{margin:0}.screen{min-height:100%;padding:16px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;max-width:520px;margin:0 auto}.screen.center{justify-content:center;align-items:center;text-align:center}.hint{color:var(--hint)}.small{font-size:13px}.error{color:var(--danger)}.accent{color:var(--gold)}.ok{color:var(--ok)}.row{display:flex;gap:8px}.row>*{flex:1}.btn{border:0;border-radius:12px;padding:13px 16px;background:color-mix(in srgb,var(--text) 9%,var(--bg2));font-weight:600;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;touch-action:manipulation}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45}.btn-primary{background:linear-gradient(180deg,color-mix(in srgb,var(--button) 85%,white),var(--button));color:var(--button-text);box-shadow:0 2px color-mix(in srgb,var(--button) 60%,black)}.btn-ghost{background:transparent;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--hint) 40%,transparent)}.btn.big{font-size:18px;padding:15px}.btn-sub{font-size:12px;font-weight:500;opacity:.8}.buttons{display:flex;flex-direction:column;gap:8px;width:100%;max-width:340px}.menu{background:radial-gradient(ellipse at 50% -10%,rgba(240,195,90,.16),transparent 60%)}.menu-head{text-align:center;padding:8px 0 0}.menu{background-size:cover;background-position:center top}.logo-img{width:min(86%,380px);height:auto;filter:drop-shadow(0 4px 14px rgba(0,0,0,.6))}.castle-art{font-size:54px;filter:drop-shadow(0 4px 12px rgba(240,195,90,.35))}.logo{font-family:Georgia,Times New Roman,serif;font-size:30px;color:var(--gold);letter-spacing:.5px;text-shadow:0 2px 0 #5a3d12}.menu-head p{margin:4px 0 0}.card{background:var(--bg2);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px}.card p{margin:0}.mode-head h2{font-family:Georgia,serif;font-size:22px}.mode-head p{margin:4px 0 0}.mode-levels{background:linear-gradient(160deg,rgba(156,28,28,.35),var(--bg2) 65%)}.mode-siege{background:linear-gradient(160deg,rgba(31,107,58,.35),var(--bg2) 65%)}.upgrades-btn{flex-direction:row;justify-content:space-between;background:linear-gradient(160deg,rgba(29,63,138,.4),var(--bg2))}.upgrades-btn .btn-sub{font-size:15px;color:var(--gold);opacity:1}.menu-nav{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:auto}.menu-nav .btn{padding:11px 4px;font-size:14px}.notice{background:color-mix(in srgb,var(--danger) 25%,var(--bg2));border-radius:12px;padding:10px 12px}.topbar{display:flex;align-items:center;gap:8px}.topbar h2{flex:1;font-size:20px}.back{border:0;background:var(--bg2);width:36px;height:36px;border-radius:10px;font-size:24px;line-height:1;cursor:pointer}.tabs{display:flex;background:var(--bg2);border-radius:12px;padding:3px;gap:3px}.tab{flex:1;border:0;background:transparent;padding:8px 4px;border-radius:9px;font-size:14px;cursor:pointer}.tab.active{background:var(--button);color:var(--button-text);font-weight:600}.chapter h3{font-family:Georgia,serif;font-size:17px;margin:6px 0 8px;color:var(--gold)}.level-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.level{aspect-ratio:1;border:0;border-radius:14px;background:var(--bg2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer}.level.boss{box-shadow:inset 0 0 0 2px #c34cff99}.level.locked{opacity:.4}.level-n{font-size:18px;font-weight:700}.level-stars{font-size:11px;color:var(--gold);letter-spacing:-1px}.upgrades{display:flex;flex-direction:column;gap:8px}.upgrade{display:flex;align-items:center;gap:10px;background:var(--bg2);border-radius:12px;padding:10px}.upgrade-icon{font-size:26px;width:36px;text-align:center}.upgrade-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.pips{font-size:12px;color:var(--gold)}.buy{min-width:84px;padding:10px 8px}.leaders{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.leaders li{display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--bg2);border-radius:10px}.leaders li.me{box-shadow:inset 0 0 0 2px var(--gold)}.rank{width:28px;color:var(--hint);font-weight:700}.name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.value{font-weight:600}.achievements{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.achievements li{display:flex;gap:10px;align-items:center;background:var(--bg2);padding:10px 12px;border-radius:10px;opacity:.55}.achievements li.got{opacity:1}.achievements li div{display:flex;flex-direction:column}.ach-icon{font-size:22px}.toggle{display:flex;justify-content:space-between;align-items:center;background:var(--bg2);padding:12px 14px;border-radius:12px}.toggle input{width:22px;height:22px}.result h1{font-family:Georgia,serif;font-size:26px}.big-stars{font-size:44px;color:var(--gold);letter-spacing:4px;text-shadow:0 2px 10px rgba(240,195,90,.4)}.score{font-size:22px;margin:0}.reward{font-size:22px;color:var(--gold);margin:0}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:24px;z-index:10;animation:fadein .2s}.modal-card{background:var(--bg2);border-radius:16px;padding:18px;width:100%;max-width:340px;display:flex;flex-direction:column;gap:10px;text-align:center;border:1px solid rgba(240,195,90,.35)}.modal-card h3{font-family:Georgia,serif;color:var(--gold);font-size:22px}.modal-card p{margin:0;line-height:1.4}.battle{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:#0d0d12;touch-action:none}.field{flex:1;position:relative;min-height:0;overflow:hidden}.field canvas{display:block;touch-action:none}.hud{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:6px;padding:calc(6px + env(safe-area-inset-top)) 8px 6px;font-size:14px;white-space:nowrap;pointer-events:none}.hud>*{pointer-events:auto}.pill{background:#0c0a129e;border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:5px 10px;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.pill b{font-variant-numeric:tabular-nums}.pill.gold b{color:var(--gold)}.wave-pill{overflow:hidden;text-overflow:ellipsis;min-width:0}.hud-space{flex:1}.pill-btn{min-width:38px;height:31px;padding:0 10px;font-weight:700;cursor:pointer}.next-line{position:absolute;top:calc(44px + env(safe-area-inset-top));left:10px;right:10px;font-size:11px;color:#f1ead9bf;text-shadow:0 1px 2px #000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.banner{position:absolute;top:calc(46px + env(safe-area-inset-top));left:50%;transform:translate(-50%);background:#0f0c16d9;border:1px solid rgba(240,195,90,.5);border-radius:12px;padding:8px 14px;text-align:center;display:flex;flex-direction:column;gap:2px;max-width:92%;pointer-events:none;animation:fadein .25s ease-out}.banner b{color:var(--gold);font-family:Georgia,serif}.banner span{font-size:12px;color:var(--hint)}.aim-hint{position:absolute;bottom:8px;left:50%;transform:translate(-50%);background:#0f0c16d9;border:1px solid rgba(240,195,90,.4);border-radius:10px;padding:6px 12px;font-size:13px;white-space:nowrap;pointer-events:none}.over{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:40px;color:var(--gold);text-shadow:0 3px 12px #000;background:#00000059;pointer-events:none;animation:fadein .4s ease-out}@keyframes fadein{0%{opacity:0}}.popup{position:absolute;left:8px;right:8px;background:#1e1a27f5;border:1px solid rgba(240,195,90,.45);border-radius:14px;padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px;box-shadow:0 8px 24px #00000080;animation:fadein .15s ease-out;z-index:3}.popup p{margin:0}.sheet-head{display:flex;align-items:center;gap:8px}.sheet-head b{flex:1}.close{border:0;background:#ffffff14;width:30px;height:30px;border-radius:8px;cursor:pointer}.crest{width:30px;height:34px;border-radius:6px 6px 15px 15px;display:inline-flex;align-items:center;justify-content:center;font-family:Georgia,serif;font-weight:700;flex:none}.tower-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tower-actions .btn{padding:9px 8px;font-size:14px}.tower-actions .btn-primary,.tower-actions p{grid-column:1 / -1}.btn-branch{background:linear-gradient(180deg,#f0c35a40,#f0c35a14);text-align:center}.dock{flex:none;background:linear-gradient(0deg,#17131f,#221c2c);border-top:1px solid rgba(240,195,90,.25);padding:6px 8px calc(8px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.dock-row{display:flex;align-items:stretch;gap:6px;min-height:42px}.spells{display:flex;gap:6px;flex:1}.spell{border:0;border-radius:12px;background:#ffffff14;width:58px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2px;cursor:pointer;touch-action:none}.spell.active{box-shadow:inset 0 0 0 2px var(--gold);background:#f0c35a2e}.spell:disabled{opacity:.45}.spell-icon{font-size:19px;line-height:1.1}.spell-img{width:26px;height:26px;object-fit:contain}.spell-icon.big{font-size:40px}.spell-name{font-size:10px;white-space:nowrap}.wave-btn{border:0;border-radius:12px;padding:4px 12px;background:linear-gradient(180deg,#8a2f2f,#5a1d1d);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:13px;font-weight:600;cursor:pointer}.wave-btn:disabled{opacity:.5}.wave-sub{font-size:11px;color:var(--gold)}.hand{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding-top:4px}.tcard{position:relative;border:2px solid var(--trim);border-radius:12px;background:linear-gradient(180deg,color-mix(in srgb,var(--house) 80%,#000),color-mix(in srgb,var(--house) 35%,#000));height:96px;padding:4px 2px 5px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;cursor:grab;touch-action:none;box-shadow:0 3px #00000073;transition:transform .12s ease-out}.tcard.active{transform:translateY(-8px);box-shadow:0 0 0 2px var(--gold),0 6px 14px #f0c35a59}.tcard.lifted{opacity:.4}.tcard.poor .tcard-art{filter:grayscale(.85) brightness(.7)}.tcard.poor .tcard-cost{background:#6b2a2a;color:#ffb3b3}.tcard.locked{filter:grayscale(1);opacity:.45;justify-content:center}.tcard-art{width:50px;height:auto;margin-bottom:auto;pointer-events:none}.tcard-name{font-size:10.5px;font-weight:700;color:#fff;text-shadow:0 1px 2px #000;white-space:nowrap}.tcard-cost{position:absolute;top:-8px;left:-6px;min-width:28px;height:28px;border-radius:14px;background:radial-gradient(circle at 35% 30%,#ffe9a8,#d29a2e);color:#3a2408;font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 2px 4px #00000080;z-index:1}.tcard-lock{font-size:12px;color:#ddd}.fresh{animation:fresh 1.2s ease-in-out infinite}@keyframes fresh{50%{box-shadow:0 0 0 3px var(--gold),0 0 18px #f0c35ab3}}.drag-ghost{position:fixed;transform:translate(-50%,-50%);pointer-events:none;z-index:20;opacity:.9}.drag-ghost .tcard-art{width:64px}.tutor-bubble{position:fixed;left:12px;right:12px;top:calc(64px + env(safe-area-inset-top));z-index:15;display:flex;gap:10px;align-items:center;background:#faf3e1f7;color:#2b1d0c;border-radius:14px;padding:10px 12px;font-size:14px;line-height:1.35;box-shadow:0 6px 18px #00000073;pointer-events:none;animation:fadein .3s ease-out}.tutor-bubble.bottom{top:auto;bottom:calc(176px + env(safe-area-inset-bottom))}.tutor-owl{font-size:28px}.finger{position:fixed;left:0;top:0;z-index:16;font-size:40px;line-height:1;pointer-events:none;filter:drop-shadow(0 3px 4px rgba(0,0,0,.6));margin:-4px 0 0 -16px}.finger.slide{animation:finger-slide 2.2s ease-in-out infinite}.finger.tap{animation:finger-tap 1.1s ease-in-out infinite}@keyframes finger-slide{0%,12%{transform:translate(var(--fx0),var(--fy0)) scale(1);opacity:0}20%{transform:translate(var(--fx0),var(--fy0)) scale(.9);opacity:1}75%{transform:translate(var(--fx1),var(--fy1)) scale(.9);opacity:1}90%,to{transform:translate(var(--fx1),var(--fy1)) scale(1);opacity:0}}@keyframes finger-tap{0%,to{transform:translate(var(--fx0),var(--fy0)) translateY(8px)}50%{transform:translate(var(--fx0),var(--fy0)) translateY(0) scale(.88)}}
