:root{--bg: #0c0a11;--bg-2: #14111b;--panel: #1a1622;--panel-2: #221d2c;--panel-3: #2b2537;--line: #3a3248;--line-soft: #2a2434;--text: #f1eadb;--text-dim: #b3a9be;--muted: #7f7590;--gold: #e7c278;--gold-2: #b98a3c;--gold-ink: #2a1d08;--dmg: #ff8a4c;--buff: #ffd166;--heal: #5fe3a1;--hurt: #ff5a6a;--common: #b9b1a4;--rare: #5aa8ff;--epic: #c78bff;--radius: 14px;--radius-sm: 10px;--font-display: "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", "Noto Serif JP", "Source Han Serif JP", serif;--font-ui: system-ui, -apple-system, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic UI", sans-serif;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;color:var(--text);font-family:var(--font-ui);font-size:15px;line-height:1.55;background:radial-gradient(120% 60% at 50% -10%,#2b1f3f 0%,transparent 60%),radial-gradient(90% 50% at 50% 115%,#1f1428 0%,transparent 65%),var(--bg);background-attachment:fixed;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;overscroll-behavior-y:none}#app{max-width:480px;margin:0 auto;padding:max(10px,env(safe-area-inset-top)) 16px calc(28px + env(safe-area-inset-bottom))}b{font-weight:700}small{font-size:.78em}.e-dmg{color:var(--dmg)}.e-buff{color:var(--buff)}.e-heal{color:var(--heal)}.e-hurt{color:var(--hurt)}.r-common{--rc: var(--common);--rc-glow: rgba(185, 177, 164, 0)}.r-rare{--rc: var(--rare);--rc-glow: rgba(90, 168, 255, .35)}.r-epic{--rc: var(--epic);--rc-glow: rgba(199, 139, 255, .45)}.gi{display:block;width:100%;height:100%}.icon{filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}button{font:inherit;color:inherit;cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:12px;border:1px solid var(--line);background:linear-gradient(180deg,var(--panel-3),var(--panel-2));color:var(--text);font-weight:600;letter-spacing:.02em;box-shadow:0 1px #ffffff0f inset,0 4px 12px #00000040;transition:transform .08s ease,filter .15s ease,opacity .15s}.btn:active:not(:disabled){transform:translateY(1px) scale(.99);filter:brightness(.95)}.btn:disabled{opacity:.38;cursor:default}.btn.primary{border-color:#f3d79a;background:linear-gradient(180deg,#f4d58f 0%,var(--gold) 45%,var(--gold-2) 100%);color:var(--gold-ink);box-shadow:0 1px #ffffff80 inset,0 6px 20px #e7c27840}.btn.ghost{background:transparent;box-shadow:none;color:var(--text-dim)}.btn.big{width:100%;min-height:56px;font-size:17px;font-family:var(--font-display);letter-spacing:.12em;flex-direction:column;gap:0}.btn.big small{font-family:var(--font-ui);letter-spacing:0;font-weight:600;opacity:.75}.btn.small{min-height:38px;padding:6px 12px;font-size:14px;flex:1}.icon-btn{border:0;background:transparent;color:var(--text-dim);font-size:18px;width:36px;height:36px;border-radius:10px}.icon-btn:active{background:var(--panel-2)}.title-screen{position:relative;min-height:calc(100dvh - 40px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px 8px}.title-glow{position:absolute;inset:10% -20% auto;height:300px;background:radial-gradient(closest-side,rgba(231,194,120,.18),transparent);pointer-events:none}.emblem{position:relative;width:168px;height:168px;animation:float 6s ease-in-out infinite}.emblem-ring{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;animation:spin 60s linear infinite}.emblem-book{position:absolute;top:26%;right:26%;bottom:26%;left:26%;width:48%;height:48%;color:var(--gold);filter:drop-shadow(0 0 18px rgba(231,194,120,.45))}.logo{margin:8px 0 0;font-family:var(--font-display);font-weight:700;font-size:40px;letter-spacing:.14em;line-height:1.2;background:linear-gradient(180deg,#fff3d4,var(--gold) 55%,var(--gold-2));-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 30px rgba(231,194,120,.15)}.logo-sub{display:block;font-family:var(--font-ui);font-size:11px;letter-spacing:.5em;color:var(--muted);-webkit-text-fill-color:var(--muted);margin-bottom:6px}.tagline{margin:14px 0 34px;color:var(--text-dim);font-family:var(--font-display);letter-spacing:.08em}.version{margin-top:28px;font-size:11px;color:var(--muted);letter-spacing:.2em}.game{display:flex;flex-direction:column;gap:12px}.game.shake{animation:shake .32s ease}.progress{display:flex;gap:4px;padding:2px 2px 0}.pip{flex:1;height:4px;border-radius:2px;background:var(--line-soft)}.pip.boss{height:6px;margin-top:-1px;background:#3d2a2a}.pip.done{background:var(--gold-2)}.pip.now{background:var(--gold);box-shadow:0 0 8px var(--gold)}.pip.boss.now{background:var(--hurt);box-shadow:0 0 10px var(--hurt)}.stage{position:relative;padding:10px 14px 14px;border-radius:var(--radius);background:radial-gradient(80% 70% at 50% 45%,rgba(120,90,170,.22),transparent 70%),linear-gradient(180deg,#19141f,#120f17);border:1px solid var(--line-soft);overflow:hidden}.stage.is-boss{border-color:#5a2a33;background:radial-gradient(80% 70% at 50% 45%,rgba(200,60,70,.22),transparent 70%),linear-gradient(180deg,#1d1218,#120c10)}.stage-top{display:flex;align-items:center;justify-content:space-between;height:28px}.stage-count{font-size:11px;letter-spacing:.25em;color:var(--muted)}.stage-count b{color:var(--text);font-size:15px;letter-spacing:.05em}.turn-badge{font-family:var(--font-display);font-size:13px;letter-spacing:.25em;color:var(--gold);opacity:0}.turn-badge.show{animation:badgeIn .5s ease forwards}.enemy{width:140px;height:140px;margin:2px auto 0;transform-origin:50% 90%;animation:breathe 3.2s ease-in-out infinite}.is-boss .enemy{width:170px;height:170px}.enemy-art{width:100%;height:100%;display:block;filter:drop-shadow(0 6px 10px rgba(0,0,0,.7)) drop-shadow(0 0 22px rgba(160,130,255,.18))}.is-boss .enemy-art{filter:drop-shadow(0 6px 10px rgba(0,0,0,.7)) drop-shadow(0 0 26px rgba(255,80,90,.35))}.enemy.hit{animation:hit .28s ease}.enemy.lunge{animation:lunge .36s ease}.enemy.defeated{animation:defeat .7s ease forwards}.enemy-name{margin:2px 0 6px;text-align:center;font-family:var(--font-display);font-size:18px;font-weight:700;letter-spacing:.1em}.boss-tag{display:inline-block;margin-right:8px;padding:1px 7px;border-radius:6px;font-family:var(--font-ui);font-size:10px;letter-spacing:.15em;background:var(--hurt);color:#fff;vertical-align:2px}.enemy-atk{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--text-dim);font-variant-numeric:tabular-nums}.atk-icon{width:14px;height:14px;color:var(--hurt)}.bar{position:relative;height:18px;border-radius:9px;background:#0b090e;border:1px solid var(--line-soft);overflow:hidden}.bar-fill,.bar-lag{position:absolute;inset:0 auto 0 0;border-radius:9px}.bar-lag{background:#f2e6c9;opacity:.55;transition:width .45s ease}.bar-fill{transition:width .22s ease}.bar-enemy .bar-fill{background:linear-gradient(180deg,#ff7b6b,#c8323f)}.bar-player .bar-fill{background:linear-gradient(180deg,#7ff0b8,#2fae74)}.bar-text{position:relative;z-index:1;height:100%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px #000}.bar-max{opacity:.7;font-weight:500}.player{position:relative;display:flex;align-items:center;gap:10px;padding:0 2px}.player .bar{flex:1}.player-label{font-size:11px;letter-spacing:.2em;color:var(--heal);font-weight:700}.player.hurt .bar{animation:hurtFlash .4s ease}.fx{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.stage .fx{top:30px;height:120px}.pop{position:absolute;left:50%;top:40%;transform:translate(calc(-50% + var(--x, 0px)));font-weight:900;font-size:26px;font-variant-numeric:tabular-nums;white-space:nowrap;animation:rise .95s cubic-bezier(.2,.8,.3,1) forwards;pointer-events:none;text-shadow:0 2px 0 rgba(0,0,0,.6),0 0 14px currentColor}.pop.dmg{color:#fff4e6;text-shadow:0 2px 0 #7a2a00,0 0 14px var(--dmg)}.pop.crit{font-size:34px;color:var(--buff)}.pop.heal{color:var(--heal);top:-6px;font-size:18px}.pop.hurt{color:var(--hurt);top:-6px;font-size:20px}.slot .pop{top:-6px;font-size:16px}.pop.buff{color:var(--buff)}.pop.fizz{color:var(--muted);text-shadow:none}.section-label{display:flex;align-items:center;gap:10px;font-size:11px;letter-spacing:.2em;color:var(--muted);margin-bottom:6px}.section-label b{color:var(--text);letter-spacing:0}.section-label .hint{margin-left:auto;letter-spacing:.05em}.arrow-line{flex:1;height:1px;background:linear-gradient(90deg,var(--line),var(--gold-2));position:relative}.arrow-line:after{content:"";position:absolute;right:-1px;top:-3px;border:3.5px solid transparent;border-left:6px solid var(--gold-2)}.slots{display:grid;grid-template-columns:repeat(var(--n, 6),minmax(0,1fr));gap:5px}.slot{position:relative;aspect-ratio:3 / 4;padding:14px 4px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:var(--radius-sm);border:1.5px solid var(--rc, var(--line));background:linear-gradient(180deg,var(--panel-3),var(--panel));box-shadow:0 0 14px var(--rc-glow, transparent),0 3px 8px #00000059;transition:transform .15s ease,box-shadow .15s ease,filter .2s;touch-action:none}.slot .icon{width:74%;height:auto;aspect-ratio:1}.slot-no{position:absolute;top:3px;left:6px;font-size:10px;color:var(--muted);font-weight:700}.slot-val{font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}.slots[style*="--n:7"] .slot-val,.slots[style*="--n:8"] .slot-val{font-size:10px;letter-spacing:-.02em}.slot.empty{border:1.5px dashed var(--line);background:#ffffff04;box-shadow:none;touch-action:manipulation}.slot-plus{color:var(--line);font-size:18px}.slot.selected{transform:translateY(-3px);border-color:var(--gold);box-shadow:0 0 0 2px #e7c27859,0 8px 18px #0006}.slot.firing{transform:translateY(-8px) scale(1.06);border-color:var(--gold);box-shadow:0 0 22px #e7c278b3,0 8px 18px #0006}.slot.fizzle{filter:grayscale(1) brightness(.45);animation:fizz .3s ease}.is-playing .detail,.is-playing .inv{opacity:.35;pointer-events:none}.actions{display:flex;flex-direction:column;gap:8px}.playbar{flex-direction:row}.playbar .btn{flex:1}.result-banner{text-align:center;font-family:var(--font-display);font-size:28px;font-weight:700;letter-spacing:.35em;padding:4px 0 2px;animation:bannerIn .5s ease}.result-banner small{display:block;font-family:var(--font-ui);font-size:12px;letter-spacing:.1em;color:var(--text-dim);font-weight:500}.result-banner.win{color:var(--gold);text-shadow:0 0 20px rgba(231,194,120,.4)}.result-banner.lose{color:var(--hurt);text-shadow:0 0 20px rgba(255,90,106,.4)}.detail{padding:12px 14px;border-radius:var(--radius);background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line-soft);border-top:2px solid var(--rc, var(--line))}.detail-empty{border-top:1px solid var(--line-soft);color:var(--text-dim);font-size:14px;text-align:center;padding:18px 14px}.detail-empty p{margin:0}.detail-empty .sub{margin-top:4px;font-size:12px;color:var(--muted)}.detail-head{display:flex;align-items:center;gap:12px}.detail-icon{width:52px;height:52px;padding:6px;border-radius:12px;border:1.5px solid var(--rc);background:var(--bg-2);box-shadow:0 0 16px var(--rc-glow);flex:none}.detail-name{font-family:var(--font-display);font-size:19px;font-weight:700;letter-spacing:.06em}.chips{display:flex;gap:6px;margin-top:2px}.chip{font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;border:1px solid currentColor;letter-spacing:.05em}.chip.rar-common{color:var(--common)}.chip.rar-rare{color:var(--rare)}.chip.rar-epic{color:var(--epic)}.detail-effect{margin:10px 0 6px;font-weight:700}.rules{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.rules li{position:relative;padding:7px 10px 7px 28px;border-radius:8px;background:#e7c2780f;border:1px solid rgba(231,194,120,.16);font-family:var(--font-display);font-size:14px;line-height:1.5;color:#f3e4c2}.rules li:before{content:"◆";position:absolute;left:10px;top:8px;font-size:10px;color:var(--gold)}.rules li.none{color:var(--text-dim);background:transparent;border-style:dashed;border-color:var(--line)}.rules li.none:before{color:var(--muted)}.detail-actions{display:flex;gap:8px;margin-top:12px}.inv{padding:10px 0 0;border-radius:var(--radius);transition:background .15s}.inv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));gap:8px}.tile{position:relative;aspect-ratio:1;padding:8px 8px 16px;border-radius:12px;border:1.5px solid var(--rc, var(--line));background:linear-gradient(180deg,var(--panel-3),var(--panel));box-shadow:0 0 12px var(--rc-glow, transparent),0 3px 8px #0000004d;-webkit-touch-callout:none;touch-action:manipulation;transition:transform .12s ease,opacity .15s}.tile .icon{width:100%;height:100%}.tile-val{position:absolute;left:0;right:0;bottom:3px;text-align:center;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}.tile-badge{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;border-radius:10px;background:var(--gold);color:var(--gold-ink);font-size:11px;font-weight:900;display:grid;place-items:center;box-shadow:0 2px 6px #0006}.tile.equipped{opacity:.5}.tile.selected{opacity:1;transform:translateY(-2px);border-color:var(--gold);box-shadow:0 0 0 2px #e7c27859}.r-epic.tile,.r-epic.slot:not(.empty){background:linear-gradient(180deg,#33264a,var(--panel))}.log{border-radius:var(--radius);background:#0f0d14;border:1px solid var(--line-soft)}.log-body{max-height:38vh;overflow-y:auto;padding:0 14px 10px;user-select:text;-webkit-user-select:text}.log-turn{padding:8px 0;border-top:1px solid var(--line-soft)}.log-head{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.15em;color:var(--muted)}.log-head b{color:var(--text);letter-spacing:0}.log-turn ul{list-style:none;margin:4px 0;padding:0}.log-turn li{display:flex;gap:8px;align-items:baseline;font-size:14px}.log-turn li span{flex:1}.log-turn li small{color:var(--buff)}.log-turn li.invalid{color:#4e475a}.log-foot{font-size:11px;color:var(--muted)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:flex-end;justify-content:center;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom));background:#06040ab8;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fadeIn .2s ease}.sheet{width:100%;max-width:448px;max-height:92dvh;overflow-y:auto;padding:20px 16px 16px;border-radius:20px;background:linear-gradient(180deg,#221c2c,#16121c);border:1px solid var(--line);box-shadow:0 -10px 40px #00000080;display:flex;flex-direction:column;gap:12px;animation:sheetUp .32s cubic-bezier(.2,.9,.3,1.1)}.sheet-title{margin:0;text-align:center;font-family:var(--font-display);font-size:24px;letter-spacing:.3em;color:var(--gold)}.sheet-sub{margin:-6px 0 4px;text-align:center;color:var(--text-dim);font-size:13px;font-family:var(--font-display)}.sheet-kicker{margin:0;text-align:center;font-size:11px;letter-spacing:.4em;color:var(--muted)}.loot-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.loot-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:26px 6px 14px;border-radius:14px;border:1.5px solid var(--rc);color:var(--text);background:radial-gradient(90% 60% at 50% 35%,var(--rc-glow),transparent 70%),linear-gradient(180deg,var(--panel-3),var(--panel));box-shadow:0 0 20px var(--rc-glow),0 6px 16px #0006;opacity:0;animation:dealIn .45s cubic-bezier(.2,.9,.3,1.2) forwards;animation-delay:calc(var(--d) * .11s + .12s)}.loot-card:active{transform:scale(.97)}.loot-rar{position:absolute;top:7px;font-size:10px;letter-spacing:.2em;font-weight:800;color:var(--rc)}.loot-icon{width:56px;height:56px}.loot-name{font-family:var(--font-display);font-weight:700;font-size:14px;letter-spacing:.04em;line-height:1.3}.r-epic.loot-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.18) 50%,transparent 70%);background-size:250% 100%;animation:shimmer 2.4s ease-in-out infinite}.acquired .detail{border-top-width:2px}.howto-list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;color:var(--text-dim);font-size:14px}.howto-list b{color:var(--text)}.howto-tip{margin:0;font-size:12px;color:var(--muted);text-align:center}.end{align-items:center}.end-sheet{text-align:center;align-items:center}.end-sheet .emblem{width:110px;height:110px}.end-title{margin:0;font-family:var(--font-display);font-size:40px;letter-spacing:.4em;padding-left:.4em}.is-clear .end-title{color:var(--gold);text-shadow:0 0 24px rgba(231,194,120,.5)}.is-over .end-title{color:var(--hurt);text-shadow:0 0 24px rgba(255,90,106,.4)}.stats{width:100%;margin:4px 0 8px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.stats dd small{font-size:11px;color:var(--muted)}.stats div{padding:10px 4px;border-radius:10px;background:var(--bg-2);border:1px solid var(--line-soft)}.stats dt{font-size:10px;color:var(--muted);letter-spacing:.05em}.stats dd{margin:2px 0 0;font-size:18px;font-weight:800;font-variant-numeric:tabular-nums}.end-sheet .btn{width:100%}body.dragging,body.dragging *{cursor:grabbing!important}.drop-hover.slot{border-color:var(--heal)!important;box-shadow:0 0 0 2px #5fe3a180,0 0 18px #5fe3a159!important}.drop-hover.inv{background:#5fe3a10f;outline:1px dashed var(--heal);outline-offset:4px}.drag-ghost{position:fixed;left:0;top:0;z-index:100;pointer-events:none;width:58px;height:58px;margin:-40px 0 0 -29px;padding:8px;border-radius:14px;border:1.5px solid var(--gold);background:#221d2ceb;box-shadow:0 12px 28px #0000008c,0 0 18px #e7c27859}@keyframes float{50%{transform:translateY(-6px)}}@keyframes breathe{50%{transform:scale(1.02,.985)}}@keyframes hit{0%{transform:translate(0);filter:brightness(1)}20%{transform:translate(-6px) scale(.97);filter:brightness(2.2) saturate(.3)}50%{transform:translate(5px)}to{transform:translate(0);filter:brightness(1)}}@keyframes lunge{40%{transform:translateY(12px) scale(1.08)}}@keyframes defeat{to{transform:translateY(10px) scale(.9);opacity:0;filter:brightness(3) blur(2px)}}@keyframes rise{0%{opacity:0;transform:translate(calc(-50% + var(--x, 0px)),8px) scale(.6)}15%{opacity:1;transform:translate(calc(-50% + var(--x, 0px)),-6px) scale(1.15)}30%{transform:translate(calc(-50% + var(--x, 0px)),-10px) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--x, 0px)),-44px) scale(1)}}@keyframes fizz{25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes hurtFlash{0%,to{box-shadow:none}30%{box-shadow:0 0 0 2px var(--hurt),0 0 18px var(--hurt)}}@keyframes shake{25%{transform:translate(-3px,1px)}50%{transform:translate(3px,-1px)}75%{transform:translate(-2px)}}@keyframes badgeIn{0%{opacity:0;transform:translateY(4px);letter-spacing:.6em}to{opacity:1;transform:none}}@keyframes bannerIn{0%{opacity:0;transform:scale(1.2);letter-spacing:.6em}}@keyframes fadeIn{0%{opacity:0}}@keyframes sheetUp{0%{transform:translateY(30px);opacity:0}}@keyframes dealIn{0%{opacity:0;transform:translateY(24px) rotateX(40deg) scale(.9)}to{opacity:1;transform:none}}@keyframes shimmer{0%{background-position:150% 0}to{background-position:-100% 0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.loot-card{opacity:1}}@media(min-width:520px){#app{padding-top:24px}}.hud{display:flex;flex-direction:column;gap:8px}.hud-row{display:flex;align-items:center;gap:10px}.lv{display:flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums}.lv-label{font-size:10px;letter-spacing:.15em;color:var(--muted)}.lv b{font-size:17px;font-family:var(--font-display)}.xp{display:block;width:46px;height:4px;margin-left:4px;border-radius:2px;background:var(--line-soft);overflow:hidden}.xp-fill{display:block;height:100%;background:linear-gradient(90deg,#8f7cff,#c9b8ff)}.gold{display:inline-flex;align-items:center;gap:4px;font-weight:800;color:#ffd98a;font-variant-numeric:tabular-nums}.coin{width:15px;height:15px;color:#ffcb52;flex:none}.hud-btn{position:relative;margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel-2);color:var(--text-dim);font-size:13px;font-weight:700}.hud-btn .gi{width:18px;height:18px;color:#c9b8ff}.hud-btn:disabled{opacity:.4}.hud-btn.has-sp{border-color:#8f7cff;color:var(--text);box-shadow:0 0 14px #8f7cff59;animation:pulse 2s ease-in-out infinite}.sp-badge{position:absolute;top:-7px;right:-7px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:#8f7cff;color:#fff;font-style:normal;font-size:11px;display:grid;place-items:center}.icon-btn:disabled{opacity:.3}.playbar{display:flex;gap:6px}.playbar .btn{flex:1;min-height:40px;padding:8px 10px;font-size:14px;white-space:nowrap}.playbar .btn[data-action=speed]{flex:0 0 64px}.game.is-paused .stage:after{content:"PAUSE";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--font-display);letter-spacing:.5em;color:var(--text-dim);background:#0a080e73}.reward-line{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 14px;font-size:14px;font-weight:700}.xp-gain{color:#c9b8ff}.lvup{width:100%;text-align:center;color:var(--gold);font-family:var(--font-display);letter-spacing:.1em;animation:bannerIn .5s ease}.sheet-head{display:flex;align-items:center;justify-content:center;gap:10px}.sheet-head .sheet-title{flex:1}.sp-count{font-size:13px;color:var(--text-dim)}.sp-count b{font-size:18px;color:#c9b8ff}.tree-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tree-col{display:flex;flex-direction:column;align-items:center;padding:8px 4px;border-radius:14px;background:#ffffff05;border:1px solid var(--line-soft)}.tree-col.b-atk{--bc: #ff8a4c}.tree-col.b-def{--bc: #5fe3a1}.tree-col.b-arc{--bc: #b39bff}.tree-head{font-family:var(--font-display);font-size:18px;color:var(--bc);margin-bottom:6px}.node{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;padding:4px 2px;border:0;background:transparent;border-radius:10px}.node-orb{width:46px;height:46px;padding:9px;border-radius:50%;border:1.5px solid var(--line);background:var(--bg-2);color:var(--muted);transition:all .15s}.node-name{font-size:11px;font-weight:700;line-height:1.3;color:var(--text-dim)}.node-cost{font-size:10px;color:var(--muted)}.node.learned .node-orb{border-color:var(--bc);color:var(--bc);background:color-mix(in srgb,var(--bc) 18%,var(--bg-2));box-shadow:0 0 14px color-mix(in srgb,var(--bc) 45%,transparent)}.node.learned .node-name{color:var(--text)}.node.available .node-orb{border-color:color-mix(in srgb,var(--bc) 60%,var(--line));color:var(--text-dim)}.node.can .node-orb{animation:pulse 2s ease-in-out infinite;border-color:var(--bc)}.node.locked{opacity:.45}.node.sel .node-orb{outline:2px solid var(--gold);outline-offset:3px}.node-link{width:2px;height:10px;background:var(--line)}.tree-info{padding:12px;border-radius:12px;background:var(--bg-2);border:1px solid var(--line-soft);display:flex;flex-direction:column;gap:6px}.tree-info p{margin:0;font-size:14px}.tree-info .sub{font-size:12px;color:var(--text-dim)}.tree-info.muted p{color:var(--text-dim);text-align:center}.tree-info-name{font-family:var(--font-display);font-weight:700;font-size:17px}.tree-info-name small{margin-left:8px;font-family:var(--font-ui);font-size:11px;color:var(--muted)}.shop-overlay{align-items:stretch}.shop{max-height:none;height:100%}.shop-icon{width:30px;height:30px;color:var(--gold)}.shop .sheet-head .gold{font-size:17px}.shop-stock{display:flex;flex-direction:column;gap:10px}.shop-card{padding:12px;border-radius:14px;border:1px solid var(--line-soft);border-left:3px solid var(--rc);background:linear-gradient(180deg,var(--panel-2),var(--panel));display:flex;flex-direction:column;gap:6px}.shop-card .btn{align-self:flex-end;flex:none;min-width:120px}.shop-card.sold{opacity:.45}.chip.appraised{color:#9fd8ff}.services{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.service{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;border-radius:12px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);text-align:center}.service:disabled{opacity:.4}.svc-icon{width:30px;height:30px}.svc-name{font-size:13px;font-weight:700}.svc-desc{font-size:11px;color:var(--text-dim)}.svc-price{margin-top:2px;font-size:13px}.sell{border-radius:12px;border:1px solid var(--line-soft);background:var(--bg-2)}.sell summary{padding:10px 14px;font-size:13px;color:var(--text-dim);cursor:pointer}.sell-list{display:flex;flex-direction:column;gap:6px;padding:0 10px 10px}.sell-row{display:flex;align-items:center;gap:10px}.sell-icon{width:34px;height:34px;padding:4px;border-radius:8px;border:1px solid var(--rc);background:var(--panel);flex:none}.sell-name{flex:1;font-size:14px;display:flex;flex-direction:column;line-height:1.3}.sell-name small{color:var(--muted)}.sell-row .btn{flex:none}.credit-list{margin:0;display:flex;flex-direction:column;gap:12px;text-align:center}.credit-list dt{font-size:11px;color:var(--muted);letter-spacing:.1em}.credit-list dd{margin:2px 0 0;font-family:var(--font-display)}.credit-list small{font-family:var(--font-ui);color:var(--text-dim)}.credits .howto-tip{user-select:text;-webkit-user-select:text}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{box-shadow:0 0 22px #8f7cff8c}}body:has(.game){overflow:hidden}#app:has(.game){height:100dvh;padding-bottom:max(10px,env(safe-area-inset-bottom))}.game{height:100%;gap:8px}.game>*{flex:none}.middle{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:10px;margin:0 -4px;padding:0 4px 6px;mask-image:linear-gradient(180deg,#000 calc(100% - 14px),transparent);-webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 14px),transparent)}.dock{display:flex;flex-direction:column;gap:6px}.dock .btn.big{min-height:52px}.dock-pair{display:flex;gap:8px}.dock-pair .btn{flex:1;min-height:48px}.dock.playbar{flex-direction:row}.hud{gap:6px}.hud-row{gap:8px}.hud-btn{height:32px;padding:0 10px}.mode-tag{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:6px;font-size:10px;font-weight:800;letter-spacing:.12em;color:#9fd8ff;border:1px solid rgba(159,216,255,.4)}.mode-tag .gi{width:12px;height:12px}.stage{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;padding:10px 12px}.enemy,.is-boss .enemy{width:88px;height:88px;margin:0}.is-boss .enemy{width:96px;height:96px}.enemy-side{min-width:0;display:flex;flex-direction:column;gap:4px}.enemy-meta{display:flex;align-items:center;justify-content:space-between}.enemy-side .enemy-name{margin:0;text-align:left;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stage .turn-badge{position:absolute;top:8px;left:50%;transform:translate(-50%)}.stage .turn-badge.show{animation:badgeIn .5s ease forwards}.stage .fx{right:0;bottom:0;left:0;top:0;height:auto}.stage .pop{left:22%;top:30%}.game.is-paused .stage:after{border-radius:inherit}.player{padding:0}.bar{height:16px}.slots-wrap .section-label{margin-bottom:4px}.slot{aspect-ratio:4 / 5;padding-top:12px}.detail{padding:10px 12px}.detail-empty{padding:10px 12px;font-size:13px}.detail-head{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;row-gap:4px;align-items:center}.detail-icon{width:44px;height:44px;padding:5px;grid-row:span 2}.detail-name{font-size:17px;line-height:1.2}.detail-head .detail-effect{grid-column:2;margin:0;font-size:14px}.detail-head .chips{margin:0}.detail-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.detail .rules{margin-top:8px;gap:4px}.rules li{padding:5px 8px 5px 24px;font-size:13px}.rules li:before{left:9px;top:6px}.detail-actions{margin-top:8px}.inv{padding-top:0}.log{padding:8px 12px}.log .log-turn:first-of-type{border-top:0}.result-row{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}.result-row .result-banner{font-size:22px;letter-spacing:.3em;padding:0}.reward-line{gap:10px;font-size:13px}.reward-line .lvup{width:auto;font-size:13px}.loot-row{grid-template-columns:repeat(var(--n, 3),minmax(0,1fr));gap:8px}.loot-row[style*="--n:4"] .loot-icon{width:44px;height:44px}.loot-row[style*="--n:4"] .loot-name{font-size:12px}.shop{overflow:hidden}.shop-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}.btn-icon{display:inline-block;width:16px;height:16px;margin-right:6px;vertical-align:-3px;color:#9fd8ff}.new-record{display:block;margin-top:4px;color:var(--gold);letter-spacing:.2em;animation:bannerIn .5s ease}@media(max-height:700px){.enemy,.is-boss .enemy{width:72px;height:72px}.stage{padding:8px 10px}.progress{display:none}.dock .btn.big{min-height:46px;font-size:16px}}.tabs{display:flex;gap:4px;padding:3px;border-radius:12px;background:var(--bg-2);border:1px solid var(--line-soft)}.tab{flex:1;min-height:36px;border:0;border-radius:9px;background:transparent;color:var(--text-dim);font-weight:700;font-size:14px}.tab b{margin-left:2px;color:var(--muted)}.tab.on{background:linear-gradient(180deg,var(--panel-3),var(--panel-2));color:var(--gold);box-shadow:0 1px #ffffff0f inset,0 2px 8px #0000004d}.tab.on b{color:var(--text)}.shop-scroll .inv-grid{margin-bottom:2px}.shop-notice{margin:0;display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-display);font-size:14px;color:var(--gold)}.notice-icon{width:20px;height:20px;color:var(--gold);flex:none}.el-fire{--elc: #ff7a3d}.el-ice{--elc: #7fd8ff}.el-thunder{--elc: #ffd84a}.ring-wrap{display:flex;flex-direction:column;align-items:center;gap:6px}.ring{position:relative;width:min(100%,300px,36dvh);aspect-ratio:1;touch-action:none}.ring-circle{position:absolute;top:11%;right:11%;bottom:11%;left:11%;border-radius:50%;border:1px dashed var(--line);background:radial-gradient(circle,rgba(231,194,120,.07),transparent 70%)}.ring.is-tracing .ring-circle{border:1px solid rgba(231,194,120,.35);animation:ringGlow 3s ease-in-out infinite}.ring.drawing .ring-circle{border-color:#e7c278b3}.ring .slot{position:absolute;z-index:2;width:22%;aspect-ratio:1;padding:4px;transform:translate(-50%,-50%);border-radius:50%;gap:0}.ring .slot .icon{width:56%}.ring .slot .slot-val{font-size:10px;line-height:1.1}.ring .slot.selected{transform:translate(-50%,-50%) scale(1.08)}.ring .slot.firing{transform:translate(-50%,-50%) scale(1.16);border-color:var(--elc, var(--gold));box-shadow:0 0 0 2px var(--elc, var(--gold)),0 0 26px var(--elc, var(--gold))}.ring .slot.fizzle{transform:translate(-50%,-50%) scale(.92);animation:none}.ring.is-tracing .slot.empty{opacity:.25}.order-badge{position:absolute;top:-5px;right:-5px;display:none;min-width:20px;height:20px;padding:0 4px;border-radius:10px;background:var(--elc);color:#1a1206;font-size:11px;font-weight:900;box-shadow:0 0 10px var(--elc)}.order-badge.on{display:grid;place-items:center}.trace-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1;overflow:visible;pointer-events:none}.trace-svg .seg{stroke:var(--elc);stroke-width:6;stroke-linecap:round;opacity:.85;stroke-dasharray:10 7;animation:flow .7s linear infinite;filter:drop-shadow(0 0 4px var(--elc)) drop-shadow(0 0 10px var(--elc))}.trace-svg .seg.lit{stroke-width:10;opacity:1;stroke-dasharray:none;animation:segFlash .55s ease}.trace-svg .node{fill:none;stroke:var(--elc);stroke-width:2.5;opacity:.85;filter:drop-shadow(0 0 6px var(--elc))}.trace-svg .node.lit{stroke-width:5;opacity:1;animation:nodeFlash .55s ease}.trace-svg .tail{stroke:var(--elc);stroke-width:3;stroke-linecap:round;stroke-dasharray:3 7;opacity:.7}.hub{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;pointer-events:none;text-align:center}.hub b{font-family:var(--font-display);font-size:15px;letter-spacing:.12em;color:var(--gold)}.hub small{font-size:11px;color:var(--muted)}.ring.is-busy .hub small{color:var(--gold)}.ring-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:4px}.lg{display:inline-flex;align-items:center;gap:2px;padding:0 6px;border-radius:999px;font-size:11px;font-weight:800;color:var(--elc);border:1px solid color-mix(in srgb,var(--elc) 45%,transparent)}.lg i{font-style:normal;font-weight:700}.lg em{font-style:normal;font-size:9px;padding:0 3px;border-radius:4px;background:var(--elc);color:#1a1206}.lg em.r{background:transparent;color:var(--muted);border:1px solid var(--muted)}.affinity{display:flex;gap:6px;min-height:16px}.aff{font-size:11px;font-weight:800;padding:0 6px;border-radius:6px;line-height:16px}.aff.weak{background:var(--elc);color:#1a1206}.aff.resist{color:var(--elc);border:1px solid color-mix(in srgb,var(--elc) 60%,transparent)}.log-turn li .dot{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--elc);color:#1a1206;font-size:10px;font-style:normal;font-weight:900;flex:none}.log-turn li.invalid .dot{opacity:.35}.log-turn .tag{margin-left:4px;padding:0 5px;border-radius:4px;font-style:normal;font-size:10px;font-weight:800}.log-turn .tag.weak{background:#ffd1662e;color:var(--buff)}.log-turn .tag.resist{background:#7f759033;color:var(--muted)}.log-turn .tag.match{background:#8f7cff33;color:#c9b8ff}.pop.dmg.el-fire,.pop.dmg.el-ice,.pop.dmg.el-thunder{text-shadow:0 2px 0 rgba(0,0,0,.6),0 0 14px var(--elc)}.pop.dmg.weak{font-size:36px;color:#fff}.pop.dmg.resist{font-size:18px;color:var(--text-dim)}.pop.aff-pop{top:74%;left:18%;font-size:13px;letter-spacing:.12em}.pop.aff-pop.weak{color:var(--gold)}.pop.aff-pop.resist{color:var(--muted);text-shadow:none}.trace-hint p{margin:0}.trace-hint .sub{margin-top:4px;font-size:12px;color:var(--muted);line-height:1.6}.dock.playbar .btn[data-action=repeat]{flex:1}@keyframes flow{to{stroke-dashoffset:-17}}@keyframes segFlash{0%{stroke-width:18;opacity:.6}40%{stroke-width:14;opacity:1}to{stroke-width:10}}@keyframes nodeFlash{0%{stroke-width:10}to{stroke-width:5}}@keyframes ringGlow{50%{box-shadow:0 0 26px #e7c2782e,inset 0 0 26px #8f7cff1f}}@media(max-height:700px){.ring{width:min(100%,250px,34dvh)}.affinity{min-height:0}}:root{--poison: #a3e35f;--guard: #8fd0ff}.e-poison{color:var(--poison)}.rules li{padding-left:10px}.rules li:before{content:none}.rules .scope{display:inline-block;margin-right:6px;padding:0 6px;border-radius:5px;font-family:var(--font-ui);font-size:10px;font-weight:800;letter-spacing:.05em;vertical-align:1px}.rules li.place{background:#7fd8ff0f;border-color:#7fd8ff38}.rules li.place .scope{background:#7fd8ff2e;color:#9fdcff}.rules li.cast .scope{background:#e7c2782e;color:var(--gold)}.rules li.none{padding-left:10px}.affixes{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}.affixes li{font-size:13px;color:#d9ccff;line-height:1.5}.affixes li b{display:inline-block;margin-right:6px;padding:0 6px;border-radius:5px;font-size:10px;font-weight:800;background:#8f7cff38;color:#c9b8ff;vertical-align:1px}.tile-affix{position:absolute;top:2px;left:5px;font-size:10px;color:#c9b8ff;text-shadow:0 0 6px #8f7cff}.log-turn .tag.poison{background:#a3e35f29;color:var(--poison)}.log-turn .tag.heal{background:#5fe3a124;color:var(--heal)}.log-turn .tag.guard{background:#8fd0ff24;color:var(--guard)}.log-turn .tag.imbue{background:color-mix(in srgb,var(--elc) 18%,transparent);color:var(--elc)}.pop.dmg.poison{color:var(--poison);font-size:22px;text-shadow:0 2px 0 rgba(0,0,0,.6),0 0 12px var(--poison)}.pop.aff-pop.poison{color:var(--poison);top:60%}.pop.guard{color:var(--guard);top:-6px;font-size:14px}.game{gap:6px}.progress-row{display:flex;align-items:center;gap:8px}.progress-row .progress{flex:1}.battle-no{font-size:10px;letter-spacing:.15em;color:var(--muted);white-space:nowrap}.battle-no b{font-size:13px;color:var(--text);letter-spacing:0}.battle-no b span{color:var(--muted);font-weight:600}.stage{grid-template-columns:auto 1fr;gap:10px;padding:6px 10px}.enemy,.is-boss .enemy{width:50px;height:50px}.is-boss .enemy{width:56px;height:56px}.enemy-side{gap:4px}.enemy-row{display:flex;align-items:center;gap:5px;min-width:0}.enemy-row .enemy-name{flex:1;min-width:0;margin:0;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.enemy-row .aff{font-size:10px;padding:0 5px;line-height:16px;flex:none}.enemy-row .enemy-atk{flex:none;font-size:12px}.boss-tag{padding:0 5px;margin-right:5px;font-size:9px}.stage .bar{height:14px}.stage .pop{left:12%}.stage .turn-badge{top:2px}.ring{width:min(100%,280px,31dvh)}.ring-legend{gap:3px}.lg{font-size:10px;padding:0 5px}.detail{padding:8px 10px}.detail-head{grid-template-columns:auto 1fr auto;column-gap:8px;row-gap:2px}.detail-icon{width:38px;height:38px;padding:4px}.detail-name{font-size:15px}.detail-head .detail-effect{font-size:13px}.detail-act{grid-column:3;grid-row:1 / span 2;align-self:center}.detail-act .btn{min-height:34px;padding:4px 14px;flex:none}.detail .rules{margin-top:6px}.rules li{font-size:12.5px;padding:4px 8px;line-height:1.45}.affixes{margin-top:6px}.affixes li{font-size:12px}.inv-grid{grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:6px}@media(max-height:700px){.ring{width:min(100%,230px,29dvh)}.enemy,.is-boss .enemy{width:42px;height:42px}.progress-row .progress{display:flex}.dock .btn.big{min-height:44px}}.menu{display:flex;flex-direction:column;gap:10px;width:100%;max-width:320px}.menu-btn{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;width:100%;min-height:64px;padding:10px 14px 10px 12px;text-align:left;border-radius:14px;border:1px solid rgba(231,194,120,.28);background:linear-gradient(180deg,#2b2537eb,#1a1622eb);color:var(--text);box-shadow:0 1px #ffffff0d inset,0 6px 18px #0000004d;transition:transform .08s ease,border-color .15s,background .15s}.menu-btn:hover{border-color:#e7c2788c}.menu-btn:active{transform:translateY(1px) scale(.995)}.menu-icon{width:40px;height:40px;padding:8px;border-radius:50%;border:1px solid rgba(231,194,120,.35);background:#e7c27814;color:var(--gold)}.menu-text{display:flex;flex-direction:column;min-width:0}.menu-text b{font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:.08em;line-height:1.25}.menu-text small{margin-top:1px;font-size:12px;color:var(--text-dim);letter-spacing:.02em}.menu-chev{font-size:22px;line-height:1;color:#e7c27899}.menu-btn.is-primary{border-color:#f3d79a;background:linear-gradient(180deg,#f4d58f 0%,var(--gold) 50%,var(--gold-2) 100%);color:var(--gold-ink);box-shadow:0 1px #ffffff80 inset,0 8px 24px #e7c27840}.menu-btn.is-primary .menu-icon{border-color:#2a1d0840;background:#2a1d081a;color:var(--gold-ink)}.menu-btn.is-primary .menu-text small{color:#2a1d08b8}.menu-btn.is-primary .menu-chev{color:#2a1d088c}.menu-links{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:18px;color:var(--muted);font-size:13px}.link-btn{border:0;background:transparent;padding:8px 4px;color:var(--text-dim);font-size:13px;text-decoration:underline;text-decoration-color:#b3a9be59;text-underline-offset:4px}.link-btn:hover{color:var(--text)}.end-sheet .menu{max-width:none;margin-top:4px}.end-sheet .link-btn{margin-top:-2px}.tagline{margin-bottom:28px}[data-lang=en] .logo{font-size:34px;letter-spacing:.06em}[data-lang=en] .logo-sub{letter-spacing:.3em}[data-lang=en] .menu-text b{letter-spacing:.03em}.sheet.tree{max-height:calc(100dvh - 24px);overflow:hidden}.sheet.tree .tree-grid{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}.sheet.tree .tree-info,.sheet.tree>.btn{flex:none}.node-orb{width:40px;height:40px;padding:8px}.node-link{height:6px}.section-label>span:first-child{flex:none}.section-label .hint{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.btn.primary .gold,.btn.primary .coin{color:var(--gold-ink)}[data-lang=en] .sheet-title{letter-spacing:.08em;font-size:22px}[data-lang=en] .end-title{letter-spacing:.25em}[data-lang=en] .result-banner{letter-spacing:.2em}[data-lang=en] .section-label{letter-spacing:.06em}
