:root{--bg: #2b2440;--panel: #3a3157;--panel2: #4a3f6b;--ink: #fff7ec;--muted: #c9bfe0;--gold: #ffd166;--good: #7ee08a;--bad: #ff7a7a;--accent: #ff9ec7;--sky: linear-gradient(#8fd3a8, #cdeec0);--ground: #7a5c3e}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);overflow:hidden}body{font-family:ui-rounded,SF Pro Rounded,Nunito,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;user-select:none;-webkit-user-select:none;touch-action:manipulation}button{font:inherit;color:inherit;border:0;cursor:pointer}#app{height:100dvh;max-width:520px;margin:0 auto;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}.top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:8px 12px;gap:8px}.gold{display:flex;align-items:center;gap:6px;font-size:22px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums}.gold .ic{font-size:22px}.where{text-align:center;font-weight:800;font-size:18px}.pips{display:flex;gap:5px;justify-content:center;margin-top:4px}.pips i{width:10px;height:10px;border-radius:50%;background:var(--panel2);transition:background .2s}.pips i.done{background:var(--good)}.pips i.cur{background:var(--gold);box-shadow:0 0 0 2px #ffd16655}.pips.boss i:last-child{background:#ff7a7a88}.pips.boss i:last-child.cur{background:var(--bad);box-shadow:0 0 0 2px #ff7a7a55}.icon-btn{justify-self:end;min-width:48px;height:44px;border-radius:14px;background:var(--panel);font-weight:800;font-size:17px}.stage{position:relative;overflow:hidden;background:var(--sky);border-radius:0 0 22px 22px;min-height:0}.stage .ground{position:absolute;left:0;right:0;bottom:0;height:34%;background:var(--ground);background-image:repeating-linear-gradient(90deg,#0000 0 38px,#ffffff12 38px 44px);background-size:88px 100%}.stage.walking .ground{animation:scroll .9s linear infinite}.stage .deco{position:absolute;left:0;right:0;bottom:34%;white-space:nowrap;font-size:26px;opacity:.8;padding-left:10px}.stage.walking .deco{animation:drift 3s linear infinite}.stage .sky-deco{position:absolute;left:0;right:0;top:8%;height:40%;pointer-events:none}.sky-deco span{position:absolute;font-size:42px;opacity:.85;animation:cloud 40s linear infinite}.sky-deco span.far{font-size:64px;opacity:.45;animation:none;filter:saturate(.6)}@keyframes cloud{0%{transform:translate(110vw)}to{transform:translate(-30vw)}}@keyframes scroll{to{background-position:-88px 0}}@keyframes drift{to{transform:translate(-60px)}}.lane{position:absolute;left:0;right:0;bottom:24%;display:flex;justify-content:space-between;align-items:flex-end;padding:0 2%;gap:10px}.side{display:flex;align-items:flex-end;gap:4px}.party{flex-direction:row-reverse}.foes{flex:1;justify-content:flex-start}.actor{position:relative;display:flex;flex-direction:column;align-items:center;transition:opacity .35s,filter .35s}.hpbar{width:46px;height:7px;border-radius:4px;background:#0004;margin-top:4px;overflow:hidden}.hpbar i{display:block;height:100%;width:100%;background:var(--good);border-radius:4px;transition:width .15s}.mon .hpbar i{background:var(--bad)}.doll{position:relative;width:58px;height:72px;animation:bob 1.4s ease-in-out infinite}.stage.walking .doll{animation-duration:.45s}.doll .body{position:absolute;left:4px;bottom:0;width:50px;height:50px;border-radius:50% 50% 46% 46%;box-shadow:inset -6px -8px #00000018,0 3px #0002}.doll .eyes{position:absolute;left:13px;top:18px;width:24px;height:7px;background:radial-gradient(circle at 3px 3.5px,#2b2440 3px,#0000 3.5px),radial-gradient(circle at 21px 3.5px,#2b2440 3px,#0000 3.5px)}.doll .blush{position:absolute;left:8px;top:27px;width:34px;height:6px;background:radial-gradient(circle at 4px 3px,#ff8fa366 4px,#0000 4.5px),radial-gradient(circle at 30px 3px,#ff8fa366 4px,#0000 4.5px)}.doll .hat{position:absolute;z-index:1;left:50%;transform:translate(-50%)}.cls-fighter .hat{top:12px;width:46px;height:22px;border-radius:22px 22px 4px 4px;background:var(--accent);box-shadow:inset 0 -5px #0003,0 0 0 2px #5b6575}.cls-fighter .hat:after{content:"";position:absolute;left:50%;top:-8px;width:6px;height:10px;margin-left:-3px;border-radius:3px;background:#ff6b6b}.cls-priest .hat{top:6px;width:0;height:0;border-left:18px solid #0000;border-right:18px solid #0000;border-bottom:30px solid var(--accent)}.cls-priest .hat{filter:drop-shadow(0 0 1.5px #8a6d1f)}.cls-priest .hat:after{content:"";position:absolute;left:-4px;top:14px;width:8px;height:8px;border-radius:50%;background:#ffcf3f}.cls-rogue .hat{top:10px;width:50px;height:26px;border-radius:26px 26px 6px 6px;background:var(--accent);box-shadow:inset 0 -6px #00000030}.cls-rogue .hat:after{content:"";position:absolute;left:6px;right:6px;bottom:-2px;height:6px;border-radius:3px;background:#2b2440aa}.cls-mage .hat{top:0;width:0;height:0;border-left:22px solid #0000;border-right:22px solid #0000;border-bottom:36px solid var(--accent)}.cls-mage .hat:after{content:"★";position:absolute;left:-5px;top:14px;font-size:11px;color:#fff6b0}.doll .weapon{position:absolute;right:-10px;bottom:6px;font-size:26px;transform:rotate(10deg)}.hero.down .doll{animation:none;transform:rotate(-80deg) translateY(10px);filter:grayscale(.8) brightness(.8)}.hero.down .hpbar{opacity:.4}@keyframes bob{50%{transform:translateY(-4px)}}.pet{font-size:26px;align-self:flex-end;margin-right:2px;animation:bob 1s ease-in-out infinite}.pet span{display:inline-block;transform:scaleX(-1)}.mon .disc{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;box-shadow:inset -5px -7px #00000014,0 3px #0002;animation:bob 1.2s ease-in-out infinite}.mon .disc span{font-size:34px;line-height:1}.mon.dead{opacity:0;filter:grayscale(1)}.mon.rank1 .disc{width:70px;height:70px;box-shadow:inset -5px -7px #00000014,0 0 0 3px #ff7a7a,0 3px #0002}.mon.rank1 .disc span{font-size:42px}.mon.rank2 .disc{width:96px;height:96px;box-shadow:inset -6px -9px #00000014,0 0 0 4px #ffd166,0 4px #0002}.mon.rank2 .disc span{font-size:60px}.mon.rank1 .hpbar,.mon.rank2 .hpbar{width:64px}.stage-hud{position:absolute;left:8px;right:8px;top:8px;display:flex;gap:6px;flex-wrap:nowrap;pointer-events:none}.pill-s{background:#2b2440cc;color:var(--ink);border-radius:12px;padding:4px 9px;font-weight:800;font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}.pill-s.sack{color:var(--gold)}.pill-s.greed{overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 1 auto}.pill-s.greed.hot{background:#7a2b3dcc}.pill-s.bless{margin-left:auto;letter-spacing:2px}.pill-s.bless.empty{visibility:hidden}.stage.home .lane{opacity:.55}.bubble{position:absolute;top:-34px;left:50%;transform:translate(-50%) scale(0);background:#fff;color:#2b2440;border-radius:14px;padding:2px 8px;font-size:20px;pointer-events:none;opacity:0}.bubble.show{animation:pop 1.8s ease-out forwards}@keyframes pop{0%{transform:translate(-50%) scale(0);opacity:1}12%{transform:translate(-50%) scale(1.1)}20%,80%{transform:translate(-50%) scale(1);opacity:1}to{opacity:0}}.fx{position:absolute;inset:0;pointer-events:none}.num{position:absolute;font-weight:900;font-size:20px;color:#fff;text-shadow:0 2px 0 #2b2440,0 0 4px #2b2440;white-space:nowrap}.num.hurt{color:#ffb4b4}.num.crit{color:var(--gold);font-size:28px}.num.heal{color:#b6ffbf}.coin{position:absolute;font-size:18px}.banner{position:absolute;left:50%;top:22%;transform:translate(-50%,-50%) scale(.6);opacity:0;pointer-events:none;font-size:30px;font-weight:900;color:#fff;text-shadow:0 3px 0 #2b2440;white-space:nowrap}.banner.bad{color:#ffd0d0}.banner.good{color:#fff3b0}.banner.show{animation:banner 1.6s ease-out forwards}@keyframes banner{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}15%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}25%,75%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0}}.party-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:repeat(2,minmax(0,1fr));gap:8px;padding:8px 12px;height:136px}.card{background:var(--panel);border-radius:16px;padding:6px 6px 6px 10px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:0}.card .info{display:flex;flex-direction:column;gap:5px;min-width:0}.card .row2{display:flex;align-items:center;gap:5px;min-width:0}.card .row2 .bar{flex:1;min-width:0}.card .row2 .lvl{font-size:12px;white-space:nowrap}.card.down{background:#3a3150}.card-top{display:flex;align-items:baseline;gap:6px;white-space:nowrap;min-width:0}.card-top b,.card-top .cls{overflow:hidden;text-overflow:ellipsis;min-width:0}.card-top .cls{flex:1 1 0}.card-top b{font-size:15px}.card-top .cls{color:var(--muted);font-size:13px}.card .lvl{flex:none;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums}.bar{position:relative;height:16px;flex:1;border-radius:8px;background:#00000040;overflow:hidden}.bar i{display:block;height:100%;background:var(--good);transition:width .15s}.bar span{position:absolute;inset:0;text-align:center;font-size:10px;white-space:nowrap;line-height:16px;font-weight:800;color:#fff;text-shadow:0 1px 2px #1f1a30,0 0 2px #1f1a30;font-variant-numeric:tabular-nums}.train{min-height:44px;min-width:58px;padding:0 5px;border-radius:12px;background:var(--accent);color:#2b2440;font-weight:900;font-size:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;box-shadow:0 3px #c2648f;line-height:1.1}.train .cost{font-size:12px;white-space:nowrap}.train:active:not(:disabled){transform:translateY(2px);box-shadow:0 2px #c2648f}.train:disabled{background:var(--panel2);color:var(--muted);box-shadow:none}.train .cost{font-variant-numeric:tabular-nums}.dock{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:8px;padding:10px 12px 4px;height:96px}.timer{position:absolute;left:12px;right:92px;top:2px;height:7px;border-radius:2px;background:#00000030;overflow:hidden}.timer i{display:block;height:100%;width:0;background:var(--gold)}.doors{display:grid;gap:6px;min-width:0}.doors.fork{grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}.door{border-radius:14px;background:var(--panel);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:2px;min-width:0;box-shadow:0 3px #00000040}.door:active{transform:translateY(2px);box-shadow:0 1px #00000040}.door.auto{background:var(--panel2);box-shadow:0 3px #00000040,inset 0 0 0 2px #ffd16699}.door.k-boss{background:#5a2f4a}.door .dic{font-size:24px;line-height:1}.door .dname{font-size:12px;font-weight:800;color:var(--muted);white-space:nowrap}.door .greed{font-style:normal;font-size:11px;margin-left:3px;color:#ffb38a}.door .dline{display:flex;gap:5px;font-size:14px;font-weight:900;white-space:nowrap;font-variant-numeric:tabular-nums}.odds.ok{color:var(--good)}.odds.mid{color:var(--gold)}.odds.bad{color:var(--bad)}.pay{color:var(--ink)}.doors.idle{display:flex;align-items:center;justify-content:center}.now{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:800}.now .dic{font-size:26px}.now.muted{color:var(--muted);font-size:14px}.bank{border-radius:14px;background:var(--gold);color:#2b2440;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:900;box-shadow:0 3px #b8902f;line-height:1.1}.bank .ic{font-size:22px}.bank small{font-size:11px;font-weight:800}.bank:disabled{background:var(--panel2);color:var(--muted);box-shadow:none}.bank:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #b8902f}.tabs{display:flex;gap:8px;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:#241e36}.tab{flex:1;min-height:56px;border-radius:16px;background:transparent;color:var(--muted);font-weight:800;font-size:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.tab span{font-size:22px}.tab.on{background:var(--panel);color:var(--ink)}.sheet{position:fixed;inset:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;z-index:10}.sheet.hidden{display:none}.panel{width:100%;max-width:520px;max-height:88dvh;overflow-y:auto;background:var(--panel);border-radius:22px 22px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}.panel h2{margin:0;font-size:22px}.panel h3{margin:8px 0 0;font-size:16px}.panel p{margin:0;line-height:1.4}.muted{color:var(--muted);font-size:14px}.row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px}.row.end{margin-top:8px}.pill{min-height:44px;min-width:72px;padding:0 16px;border-radius:14px;background:var(--panel2);font-weight:800}.pill.danger{background:#5a2f4a;color:#ffc4c4}.big{min-height:52px;padding:0 24px;border-radius:16px;background:var(--accent);color:#2b2440;font-weight:900;font-size:17px}.away .big{align-self:stretch}textarea{width:100%;border-radius:12px;border:0;background:#241e36;color:var(--ink);padding:8px;font:12px/1.3 ui-monospace,monospace;resize:none;user-select:text;-webkit-user-select:text}.toast{position:fixed;left:50%;bottom:96px;transform:translate(-50%);background:#fff;color:#2b2440;font-weight:800;padding:10px 16px;border-radius:14px;opacity:0;transition:opacity .2s;pointer-events:none;z-index:20}.toast.show{opacity:1}@media(prefers-reduced-motion:reduce){.doll,.pet,.mon .disc,.stage.walking .ground,.stage.walking .deco{animation:none!important}}.tab.hidden{display:none}.tab.new{position:relative}.tab.new:after{content:"";position:absolute;top:8px;right:calc(50% - 22px);width:9px;height:9px;border-radius:50%;background:var(--accent)}.doors.with-sup{justify-content:space-between;gap:6px}.doors.with-sup .now{min-width:0;overflow:hidden;white-space:nowrap}.doors.with-sup .now b{display:none}.sup{display:flex;gap:5px;flex:none}.sup-btn{width:46px;height:64px;border-radius:12px;background:var(--panel2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;box-shadow:0 3px #00000040;font-variant-numeric:tabular-nums}.sup-btn span{font-size:22px;line-height:1}.sup-btn b{font-size:13px}.sup-btn:disabled{opacity:.45;box-shadow:none}.sup-btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #00000040}.row.gear,.row.supply{justify-content:flex-start}.row .slot{width:64px;flex:none;color:var(--muted);font-size:13px;font-weight:800}.row .item{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.gic{font-size:26px;flex:none;width:32px;text-align:center}.gtx{display:flex;flex-direction:column;min-width:0;flex:1}.gtx b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gtx small{color:var(--muted);font-size:12px}.row .btns{display:flex;gap:6px;flex:none}.row .btns .pill{min-width:0;padding:0 10px;font-size:13px}.pill.buy{flex:none;font-size:13px;padding:0 12px}.pill:disabled{opacity:.5}.row.order span{flex:1;font-size:15px}.row.order .pill{min-width:118px;flex:none}.story{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;line-height:1.35}.tally{font-weight:800;color:var(--gold)}.tip{position:absolute;left:10px;right:10px;top:31%;background:#fff7ecf2;color:#2b2440;border-radius:14px;padding:8px 12px;font-weight:800;font-size:14px;line-height:1.3;opacity:0;transform:translateY(-6px);transition:opacity .25s,transform .25s;pointer-events:none}.tip.show{opacity:1;transform:none;pointer-events:auto}.door{position:relative}.door .risk{font-style:normal;font-size:11px;margin-left:3px;color:var(--bad)}.door .otag{position:absolute;top:3px;right:4px;font-style:normal;font-size:12px;line-height:1}.odds.flash{animation:oddsflash .9s ease-out}@keyframes oddsflash{0%{background:#ffd16688;border-radius:6px}to{background:transparent}}body.rich .train:not(:disabled){animation:nudge 1.6s ease-in-out infinite}@keyframes nudge{50%{background:#ffc3dd;box-shadow:0 3px #c2648f,0 0 0 3px #ff9ec766}}@media(prefers-reduced-motion:reduce){body.rich .train:not(:disabled),.odds.flash{animation:none!important}}
