:root{--gold: #e8c060;--gold-dark: #8a6420;--panel: rgba(28, 20, 12, .82);--panel-edge: #b88a34;--text: #f4e6c4;--hp: #4fbf3a;--hp-low: #d8462d;--font-display: "Cinzel", "Trajan Pro", "Palatino Linotype", Georgia, serif;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#1b2a14;color:var(--text);font-family:var(--font-display);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}#game{position:fixed;top:0;right:0;bottom:0;left:0}#game canvas{display:block;width:100%;height:100%;touch-action:none}.hidden{display:none!important}#hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}.panel{position:absolute;background:linear-gradient(180deg,rgba(52,38,22,.92),var(--panel));border:2px solid var(--panel-edge);border-radius:6px;box-shadow:0 0 0 2px #0009,inset 0 0 10px #0009;padding:6px 10px;text-shadow:0 1px 2px #000}.hero{top:calc(10px + var(--safe-top));left:calc(10px + var(--safe-left));width:min(260px,42vw)}.hero-name{font-weight:800;color:var(--gold);letter-spacing:.08em;font-size:14px;margin-bottom:4px;text-transform:uppercase}.bar{position:relative;height:16px;background:#1a0f08;border:1px solid #000;border-radius:3px;overflow:hidden}.bar .fill{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;background:linear-gradient(180deg,#7be05f,var(--hp) 50%,#2f8a22);transition:width .12s linear}.bar .fill.low{background:linear-gradient(180deg,#f07a5c,var(--hp-low) 50%,#8f2414)}.bar span{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-family:system-ui,sans-serif;font-weight:700;color:#fff;text-shadow:0 1px 2px #000}.wave{top:calc(10px + var(--safe-top));left:50%;transform:translate(-50%);text-align:center;min-width:150px}#wave-label{font-weight:800;color:var(--gold);font-size:16px;letter-spacing:.06em}#wave-timer{font-size:11px;font-family:system-ui,sans-serif;opacity:.9}.gold{top:calc(56px + var(--safe-top));right:calc(10px + var(--safe-right));display:flex;align-items:center;gap:6px;font-size:18px;font-weight:800;color:var(--gold)}.coin-icon{width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff4b0,#f0c040 45%,#9a6a10);border:1px solid #5a3a00;display:inline-block}.cs{display:inline-flex;align-items:center;gap:3px;margin-left:8px;font-size:13px;color:var(--text);opacity:.9}.cs-icon{font-size:12px}.sys-buttons{position:absolute;top:calc(10px + var(--safe-top));right:calc(10px + var(--safe-right));display:flex;gap:6px;pointer-events:auto}button.sys{width:38px;height:38px;border-radius:6px;border:2px solid var(--panel-edge);background:var(--panel);color:var(--gold);font-size:15px;font-family:system-ui,sans-serif;cursor:pointer;box-shadow:0 0 0 2px #0009}button.sys.off{opacity:.45}button.sys.active{background:#5a4218}button.sys.has-changes{position:relative}button.sys.has-changes:after{content:"";position:absolute;top:3px;right:3px;width:8px;height:8px;border-radius:50%;background:#ff9a3a;box-shadow:0 0 0 1px #000}button.special{position:absolute;right:calc(22px + var(--safe-right));bottom:calc(22px + var(--safe-bottom));width:92px;height:92px;border-radius:50%;pointer-events:auto;cursor:pointer;border:3px solid var(--gold);background:radial-gradient(circle at 40% 35%,#6a4fd8,#2d1a78 60%,#150a3a);box-shadow:0 0 0 3px #000,0 6px 14px #0009,inset 0 0 18px #a08cff80;color:#fff;overflow:hidden;padding:0;touch-action:manipulation;transition:transform .08s}button.special:active{transform:scale(.94)}button.special.armed{border-color:#fff6a0;box-shadow:0 0 0 3px #000,0 0 24px 6px #ffe678cc,inset 0 0 18px #fff0a0cc;animation:pulse .8s ease-in-out infinite}button.special.cooling{filter:grayscale(.7) brightness(.7)}.special-icon{font-size:38px;line-height:1;display:block;margin-top:-6px;text-shadow:0 0 10px #ffe680}.special-label{position:absolute;bottom:12px;left:0;right:0;text-align:center;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}.special-cd{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:800;font-family:system-ui,sans-serif;color:#fff;text-shadow:0 2px 4px #000}@keyframes pulse{50%{transform:scale(1.06)}}.hint{position:absolute;left:50%;bottom:calc(26px + var(--safe-bottom));transform:translate(-50%);background:var(--panel);border:1px solid var(--panel-edge);border-radius:6px;padding:6px 12px;font-size:13px;font-family:system-ui,sans-serif;opacity:0;transition:opacity .3s;white-space:nowrap;max-width:70vw;overflow:hidden;text-overflow:ellipsis}.hint.show{opacity:1}.banner{position:absolute;left:0;right:0;top:30%;text-align:center;font-size:clamp(28px,7vw,60px);font-weight:800;color:var(--gold);letter-spacing:.08em;text-shadow:0 0 2px #000,0 3px 0 #5a3a00,0 6px 18px rgba(0,0,0,.8);opacity:0;transform:scale(.8);transition:opacity .35s,transform .35s;text-transform:uppercase}.banner small{display:block;font-size:.35em;color:var(--text);letter-spacing:.15em;margin-top:4px}.banner.show{opacity:1;transform:scale(1)}#damage-vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,transparent 55%,rgba(200,20,10,.55));opacity:0;transition:opacity .25s}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#140e068c,#050402e0);padding:16px;z-index:10}.card{max-width:560px;width:100%;max-height:100%;overflow-y:auto;background:linear-gradient(180deg,#3a2a16,#1f160b);border:3px solid var(--panel-edge);border-radius:10px;box-shadow:0 0 0 3px #000,0 20px 50px #000000b3,inset 0 0 30px #000000b3;padding:20px 24px;text-align:center}.card h1{margin:0 0 4px;color:var(--gold);font-size:clamp(24px,5.5vw,38px);font-weight:800;letter-spacing:.05em;text-shadow:0 2px 0 #5a3a00,0 4px 10px #000}.tagline{margin:0 0 12px;opacity:.85;font-size:14px}.controls{text-align:left;margin:0 0 10px;padding-left:18px;font-family:system-ui,sans-serif;font-size:14px;line-height:1.5}.controls b{color:var(--gold)}.keys{font-family:system-ui,sans-serif;font-size:11px;opacity:.65;margin:0 0 14px}.stats{font-family:system-ui,sans-serif;font-size:15px;line-height:1.8;margin:10px 0 16px}.stats b{color:var(--gold)}button.primary{font-family:var(--font-display);font-weight:800;font-size:18px;letter-spacing:.08em;text-transform:uppercase;color:#2a1a00;background:linear-gradient(180deg,#ffe08a,#e0a830 55%,#a8741a);border:2px solid #5a3a00;border-radius:6px;padding:10px 34px;cursor:pointer;box-shadow:0 0 0 2px #000,0 4px #5a3a00}button.primary:active{transform:translateY(2px);box-shadow:0 0 0 2px #000,0 2px #5a3a00}@media(max-height:480px){.card{padding:12px 16px}.controls{font-size:12px;line-height:1.35}.tagline{margin-bottom:6px}button.special{width:76px;height:76px}.special-icon{font-size:30px}}.tuning{position:fixed;top:0;left:0;bottom:0;z-index:40;width:min(340px,94vw);display:flex;flex-direction:column;background:#161009f0;border-right:2px solid var(--panel-edge);box-shadow:6px 0 24px #0009;font-family:system-ui,sans-serif;font-size:13px;color:var(--text);padding:calc(8px + var(--safe-top)) 10px calc(8px + var(--safe-bottom)) calc(10px + var(--safe-left));touch-action:pan-y}.tuning input,.tuning textarea{-webkit-user-select:text;user-select:text;font-family:system-ui,sans-serif}.ttop{display:flex;align-items:center;gap:6px}.ttitle{flex:1;font-family:var(--font-display);font-weight:800;font-size:17px;color:var(--gold);letter-spacing:.05em}.tstatus{font-size:11px;opacity:.75;margin:4px 0 6px;min-height:14px}.tbtn{font:600 12px system-ui,sans-serif;color:var(--text);cursor:pointer;background:#3a2a16;border:1px solid var(--panel-edge);border-radius:5px;padding:6px 9px}.tbtn:active{background:#5a4218}.tbtn.danger{border-color:#b8553a}.tbtn.close{padding:6px 10px}.tbtn.small{padding:4px 8px;margin-top:4px}.tsearch{width:100%;padding:7px 9px;margin-bottom:6px;border-radius:5px;border:1px solid #6a5028;background:#120c06;color:var(--text);font-size:13px}.texport{width:100%;margin-bottom:6px;background:#120c06;color:var(--text);border:1px solid #6a5028;border-radius:5px;font:11px ui-monospace,monospace}.tbody{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-right:2px}.tsection{border:1px solid #4a3820;border-radius:6px;margin-bottom:6px;background:#281c0e99}.tsection>summary{cursor:pointer;padding:8px 10px;font-family:var(--font-display);font-weight:800;color:var(--gold);letter-spacing:.04em;list-style:none;-webkit-user-select:none;user-select:none}.tsection>summary::-webkit-details-marker{display:none}.tsection>summary:before{content:"▸ ";display:inline-block;width:1em}.tsection[open]>summary:before{content:"▾ "}.tsection-body{padding:2px 10px 8px}.trow{padding:6px 0;border-top:1px solid rgba(184,138,52,.15)}.trow:first-child{border-top:none}.thead{display:flex;align-items:center;gap:6px}.thead>label{flex:1;min-width:0}.trow.modified .thead>label{color:#ffb648;font-weight:700}.trow .treset{visibility:hidden}.trow.modified .treset,.twave .treset,.tsection[data-id=tools] .treset{visibility:visible}.tnote{margin-left:6px;font-size:10px;font-weight:600;color:#9fc4ff;background:#3c64aa40;border-radius:3px;padding:1px 4px;white-space:nowrap}.thint{font-size:11px;opacity:.6;margin-top:2px}.tvalue{font-variant-numeric:tabular-nums;min-width:40px;text-align:right}.tnum{width:68px;padding:4px 5px;border-radius:4px;border:1px solid #6a5028;background:#120c06;color:var(--text);font-size:13px;text-align:right;font-variant-numeric:tabular-nums}.treset{width:26px;height:26px;flex:none;border-radius:4px;border:1px solid #6a5028;background:#2a1d0e;color:var(--gold);cursor:pointer;font-size:14px;line-height:1;padding:0}.treset:disabled{opacity:.3}.tuning input[type=range]{width:100%;margin:6px 0 0;accent-color:#e8b04a;height:22px}.tcheck{display:flex;align-items:center;gap:8px;padding:6px 0;cursor:pointer}.tcheck.inline{padding:0}.tcheck input{width:18px;height:18px;accent-color:#e8b04a}.tcolor{width:44px;height:28px;padding:0;border:1px solid #6a5028;border-radius:4px;background:none}.tactions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}.twaves{margin-top:6px}.twave{display:grid;grid-template-columns:1fr 58px 58px 58px 26px;gap:4px;align-items:center;margin-bottom:4px}.twave.head{font-size:10px;opacity:.6;text-align:center;margin-bottom:2px}.twave .tnum{width:100%}.special-key{display:none;position:absolute;top:10px;right:14px;font:800 11px system-ui,sans-serif;color:#2a1a00;background:var(--gold);border-radius:3px;padding:1px 4px;box-shadow:0 1px #5a3a00}@media(hover:hover)and (pointer:fine){.special-key{display:block}}.hero-level{color:var(--text);font-size:12px;margin-left:4px;opacity:.9}.panel.wave{display:flex;align-items:center;gap:8px;text-align:left;min-width:0;padding:5px 10px 5px 6px}.wave-text{min-width:110px}#wave-sub{font-size:11px;font-family:system-ui,sans-serif;opacity:.9;white-space:nowrap}.sundial{position:relative;width:38px;height:38px;flex:none}.sundial-fill{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2px solid var(--panel-edge);box-shadow:inset 0 0 6px #000000b3}.sundial-face{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:repeating-conic-gradient(from -3deg,rgba(42,22,0,.75) 0deg 6deg,transparent 6deg 30deg);-webkit-mask:radial-gradient(circle,transparent 56%,#000 58%);mask:radial-gradient(circle,transparent 56%,#000 58%)}.sundial-hand{position:absolute;left:50%;top:4px;width:3px;height:15px;margin-left:-1.5px;background:#2a1600;border-radius:2px;transform-origin:50% 15px;box-shadow:0 0 2px #ffe6a0cc}.sundial:after{content:"";position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--gold);border:1px solid #2a1600}.boss{top:calc(64px + var(--safe-top));left:50%;transform:translate(-50%);width:min(300px,46vw);padding:4px 8px 5px}.boss-name{font-size:12px;font-weight:800;color:#ff9a7a;letter-spacing:.05em;margin-bottom:3px;text-align:center}.boss-name span{color:var(--text);font-weight:600;opacity:.85}.boss-hp{height:12px}.boss-hp .fill{background:linear-gradient(180deg,#ff8a6a,#d8402a 50%,#7a1a10)}.siege{margin-top:3px;font:700 11px system-ui,sans-serif;color:#ffd060;text-align:center;animation:siegepulse .8s ease-in-out infinite}@keyframes siegepulse{50%{color:#fff3b0}}.combo{position:absolute;top:calc(98px + var(--safe-top));right:calc(12px + var(--safe-right));font-weight:800;font-size:18px;color:#ffe070;letter-spacing:.04em;text-shadow:0 0 2px #000,0 2px 0 #5a3a00,0 3px 8px rgba(0,0,0,.7);opacity:0;transition:opacity .25s;white-space:nowrap;transform-origin:right center;pointer-events:none}.combo.show{opacity:1}.combo.pop{animation:combopop .3s ease-out}.combo.broke{color:#ff7a5a;animation:combobreak .5s ease-out}@keyframes combopop{0%{transform:scale(1.5)}to{transform:scale(1)}}@keyframes combobreak{0%{transform:translate(0)}20%{transform:translate(-6px) rotate(-4deg)}40%{transform:translate(6px) rotate(3deg)}60%{transform:translate(-3px)}to{transform:none}}button.levelup{position:absolute;right:calc(126px + var(--safe-right));bottom:calc(26px + var(--safe-bottom));width:66px;height:66px;border-radius:50%;pointer-events:auto;cursor:pointer;padding:0;border:3px solid #7a6a4a;color:var(--text);background:radial-gradient(circle at 40% 35%,#4a5a3a,#253020 60%,#121a0e);box-shadow:0 0 0 3px #000,0 5px 12px #0009;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05;font-family:var(--font-display);touch-action:manipulation;filter:grayscale(.6) brightness(.8);transition:transform .08s}button.levelup:active{transform:scale(.94)}button.levelup.affordable{filter:none;border-color:#9fe06a;box-shadow:0 0 0 3px #000,0 0 16px 3px #96e65a99}.lv-arrow{font-size:18px;color:#b8f080}.lv-text{font-size:12px;font-weight:800}.lv-cost{font:700 11px system-ui,sans-serif;color:var(--gold)}button.levelup .special-key{top:2px;right:2px}.banner.count{font-size:clamp(60px,16vw,140px)}@media(max-height:480px){button.levelup{width:58px;height:58px;right:calc(104px + var(--safe-right));bottom:calc(20px + var(--safe-bottom))}.boss{top:calc(56px + var(--safe-top))}.combo{top:calc(90px + var(--safe-top))}}
