:root{color-scheme:dark;--bg: #0b0d12;--ink: #e8ecf5;--muted: #8b93a7;--accent: #d8b45a;--panel: rgba(20, 25, 37, .82);--line: rgba(216, 180, 90, .28);--run: #7ee0a3}*{box-sizing:border-box}html,body,#app,#scene-root,#ui-root{width:100%;height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Noto Sans TC,sans-serif;overflow:hidden;overscroll-behavior:none;-webkit-user-select:none;user-select:none;touch-action:none}#app{position:fixed;top:0;right:0;bottom:0;left:0}#scene-root{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}#scene-root canvas{display:block;width:100%;height:100%}#ui-root{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}.hud-top{position:absolute;top:0;left:0;right:0;display:flex;align-items:flex-start;justify-content:space-between;padding:calc(env(safe-area-inset-top) + 16px) calc(env(safe-area-inset-right) + 16px) 0 calc(env(safe-area-inset-left) + 16px)}.hud-title{display:flex;align-items:baseline;gap:10px;text-shadow:0 2px 10px rgba(0,0,0,.65)}.hud-name{font-size:15px;font-weight:700;letter-spacing:.12em}.hud-level{color:var(--accent);font-size:11px;letter-spacing:.08em}.hud-status{padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.16em;transition:color .12s ease,border-color .12s ease}.hud-status.is-running{border-color:#7ee0a38c;color:var(--run)}.hud-status.is-attacking{border-color:#d8b45a99;color:var(--accent)}.hud-status.is-skill{border-color:#729dff9e;color:#9bb7ff}.hud-fps{position:absolute;top:calc(env(safe-area-inset-top) + 54px);right:calc(env(safe-area-inset-right) + 16px);color:var(--muted);font-size:10px;letter-spacing:.08em;opacity:.75}.hud-weapon{position:absolute;top:calc(env(safe-area-inset-top) + 40px);left:calc(env(safe-area-inset-left) + 16px);color:var(--muted);font-size:10px;letter-spacing:.1em;text-shadow:0 1px 8px rgba(0,0,0,.8);opacity:.85}.stage-timer{position:absolute;top:calc(env(safe-area-inset-top) + 12px);left:50%;color:#f5e0aa;font-size:14px;font-weight:800;letter-spacing:.12em;text-shadow:0 2px 10px rgba(0,0,0,.8);transform:translate(-50%)}.stage-timer.is-urgent{color:#ff9b8f;animation:stage-urgent .8s ease-in-out infinite}.stage-wave{position:absolute;top:calc(env(safe-area-inset-top) + 32px);left:50%;max-width:280px;overflow:hidden;color:var(--muted);font-size:9px;letter-spacing:.08em;text-align:center;text-overflow:ellipsis;text-shadow:0 1px 6px rgba(0,0,0,.8);white-space:nowrap;transform:translate(-50%)}.stage-wave.is-danger{color:#ff9b8f}.wave-banner{position:absolute;top:33%;left:50%;z-index:6;display:grid;justify-items:center;gap:3px;width:min(300px,82vw);text-align:center;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.96);transition:opacity .18s ease,transform .22s ease}.wave-banner.is-active{opacity:1;transform:translate(-50%,-50%) scale(1)}.wave-banner-title{color:#ffe6a8;font-size:21px;font-weight:800;letter-spacing:.08em;text-shadow:0 2px 14px rgba(0,0,0,.9),0 0 18px rgba(216,180,90,.28)}.wave-banner-sub{color:#e8ecf5bd;font-size:10px;letter-spacing:.14em;text-shadow:0 1px 8px rgba(0,0,0,.9)}@keyframes stage-urgent{0%,to{opacity:1}50%{opacity:.55}}.player-hp{position:absolute;top:calc(env(safe-area-inset-top) + 58px);left:calc(env(safe-area-inset-left) + 16px);width:170px;height:12px;overflow:hidden;border:1px solid rgba(216,180,90,.28);border-radius:6px;background:#0000008c;box-shadow:inset 0 0 6px #0009}.player-hp-fill{width:100%;height:100%;background:linear-gradient(90deg,#74d68e,#3f9f66);transition:width .12s ease,background .12s ease}.player-shield-fill{position:absolute;bottom:0;left:0;z-index:1;width:0%;height:3px;border-radius:0 0 6px 6px;background:linear-gradient(90deg,#3aa8ff,#bdf3ff 70%,#fff);box-shadow:0 0 8px #58d2ffcc;transition:width .12s ease}.player-hp.is-guarded{border-color:#7fe7ffad;box-shadow:inset 0 0 6px #0009,0 0 10px #58d2ff38}.player-hp-fill.is-low{background:linear-gradient(90deg,#e0b84a,#a98226)}.player-hp-fill.is-critical{background:linear-gradient(90deg,#ff6b6b,#b52b2b)}.player-hp-text{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:grid;place-items:center;color:#fff;font-size:8px;letter-spacing:.04em;text-shadow:0 1px 4px rgba(0,0,0,.9);pointer-events:none}.player-hp-text.is-shielded{color:#bdf3ff;text-shadow:0 0 6px rgba(88,210,255,.75),0 1px 4px rgba(0,0,0,.9)}.player-energy{position:absolute;top:calc(env(safe-area-inset-top) + 74px);left:calc(env(safe-area-inset-left) + 16px);width:170px;height:8px;overflow:hidden;border:1px solid rgba(216,180,90,.28);border-radius:4px;background:#0000008c;box-shadow:inset 0 0 6px #0009}.player-energy-fill{width:0%;height:100%;background:linear-gradient(90deg,#8f6524,#ffd77a 65%,#fff2c4);box-shadow:0 0 8px #ffd77a66;transition:width .12s ease}.player-energy-fill.is-full{animation:energy-ready 1.4s ease-in-out infinite}.player-energy-text{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#fff;font-size:7px;letter-spacing:.08em;text-shadow:0 1px 3px rgba(0,0,0,.95);pointer-events:none}@keyframes energy-ready{0%,to{box-shadow:0 0 6px #ffd77a59}50%{box-shadow:0 0 14px #fff0becc}}.player-xp{position:absolute;top:calc(env(safe-area-inset-top) + 84px);left:calc(env(safe-area-inset-left) + 16px);width:170px;height:5px;overflow:hidden;border:1px solid rgba(139,198,255,.22);border-radius:3px;background:#00000080}.player-xp-fill{width:0%;height:100%;background:linear-gradient(90deg,#4b7bd6,#9fd4ff);box-shadow:0 0 6px #7fc8ff66;transition:width .16s ease}.player-xp-fill.is-full{background:linear-gradient(90deg,#8f6524,#ffd77a)}.player-xp-text{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#ebf5ffe6;font-size:6px;letter-spacing:.05em;text-shadow:0 1px 3px rgba(0,0,0,.95);pointer-events:none}.hud-hint{position:absolute;top:calc(env(safe-area-inset-top) + 98px);bottom:auto;left:50%;width:auto;transform:translate(-50%);color:var(--muted);font-size:10px;letter-spacing:.04em;text-align:center;white-space:nowrap;text-shadow:0 1px 8px rgba(0,0,0,.8);opacity:.8}.boss-bar{position:absolute;top:calc(env(safe-area-inset-top) + 118px);left:50%;z-index:2;display:grid;gap:4px;width:min(260px,72vw);transform:translate(-50%);pointer-events:none}.boss-bar.hidden{display:none}.boss-label{display:flex;align-items:baseline;justify-content:center;gap:8px;color:#e8d5ff;font-size:11px;letter-spacing:.12em;text-shadow:0 2px 8px rgba(0,0,0,.85)}.boss-phase{color:#ffd166;font-size:9px;font-weight:700;letter-spacing:.08em}.boss-track{height:10px;overflow:hidden;border:1px solid rgba(170,51,204,.55);border-radius:5px;background:#0000009e;box-shadow:inset 0 0 6px #000000b3,0 2px 10px #00000059}.boss-fill{width:100%;height:100%;background:linear-gradient(90deg,#a3c,#e05a5a);transition:width .12s ease,background .16s ease}.boss-fill.is-phase2{background:linear-gradient(90deg,#ff4d4d,#ffd166)}.hurt-flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;background:radial-gradient(ellipse at center,transparent 48%,rgba(190,20,20,.55) 100%);opacity:0;transition:opacity .1s ease;pointer-events:none}.hurt-flash.is-active{opacity:1}.ultimate-flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;background:radial-gradient(circle at 50% 55%,rgba(62,240,200,.3),rgba(255,215,122,.16) 45%,transparent 72%);mix-blend-mode:screen;opacity:0;transition:opacity .12s ease;pointer-events:none}.ultimate-flash.is-active{opacity:1}.defeat{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 45%,#181f2de6,#0b0d12f5 65%);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto}.defeat.hidden{display:none}.defeat-panel{display:grid;justify-items:center;gap:10px;text-align:center}.defeat-title{color:#ffb3a8;font-size:26px;font-weight:800;letter-spacing:.08em;text-shadow:0 2px 12px rgba(0,0,0,.7)}.defeat-sub{color:var(--muted);font-size:12px;letter-spacing:.08em}.defeat-button{margin-top:10px;padding:10px 22px;border:1px solid var(--line);border-radius:999px;background:#d8b45a29;color:var(--accent);font:inherit;font-size:14px;font-weight:700;letter-spacing:.08em;cursor:pointer;pointer-events:auto}.defeat-button:active{transform:scale(.97)}.victory-actions,.defeat-actions{display:flex;gap:8px;margin-top:10px}.defeat-actions .defeat-button,.victory-actions .defeat-button{margin-top:0}.defeat-button.is-secondary{background:#ffffff0a;color:#f0d795}.victory{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 45%,#162820eb,#080e0cf7 65%);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto}.victory.hidden{display:none}.victory-kicker{color:#9fdcb4;font-size:10px;font-weight:700;letter-spacing:.32em;text-shadow:0 2px 10px rgba(0,0,0,.7)}.victory-title{color:#ffe6a8}.victory-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:min(270px,82vw);margin-top:8px}.victory-stat{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:7px 9px;border:1px solid rgba(216,180,90,.2);border-radius:9px;background:#ffffff0a}.victory-stat span{color:var(--muted);font-size:8px;font-weight:700;letter-spacing:.12em}.victory-stat strong{color:#f7ecd0;font-size:12px;font-weight:800}.victory-level{max-width:280px;color:#ffe6a8;font-size:11px;font-weight:700;letter-spacing:.04em;line-height:1.5;text-align:center}.victory-equipment{display:grid;gap:4px;width:min(290px,86vw);margin-top:2px}.victory-equipment-title{color:var(--muted);font-size:8px;font-weight:700;letter-spacing:.18em;text-align:center}.victory-equipment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.victory-equip-slot{display:grid;gap:2px;padding:6px 5px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#ffffff09;text-align:center}.victory-equip-slot.is-rare{border-color:#d8b45a80;background:#d8b45a14}.victory-equip-label{color:var(--muted);font-size:7px;letter-spacing:.1em}.victory-equip-head{display:flex;align-items:center;justify-content:center;gap:3px}.victory-equip-icon .equipment-icon{width:12px;height:12px;color:#d2e0e6b3}.victory-equip-slot.is-rare .equipment-icon{color:#f0c766}.victory-equip-name{overflow:hidden;color:#eef3f9;font-size:9px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.victory-equip-slot.is-rare .victory-equip-name{color:#ffe6a8}.victory-equip-status{color:#9fdcb4;font-size:7px;letter-spacing:.06em}.skill-button{position:absolute;z-index:2;right:max(20px,calc(env(safe-area-inset-right) + 18px));bottom:max(32px,calc(env(safe-area-inset-bottom) + 26px));width:78px;height:78px;padding:0;overflow:hidden;border:1px solid rgba(114,157,255,.55);border-radius:50%;background:radial-gradient(circle at 40% 32%,#729dff6b,#141b30eb 68%);box-shadow:inset 0 0 18px #729dff33,0 8px 24px #00000061;color:#eaf0ff;font:inherit;pointer-events:auto;touch-action:manipulation;cursor:pointer;transition:filter .12s ease,box-shadow .12s ease}.skill-button.is-ready{animation:skill-ready 1.8s ease-in-out infinite}.skill-button.is-cooling{filter:saturate(.55) brightness(.72)}.skill-button-name{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:15px;font-weight:700;letter-spacing:.12em;text-shadow:0 2px 8px rgba(0,0,0,.65)}.skill-button-key{position:absolute;top:7px;right:9px;padding:1px 4px;border:1px solid rgba(216,180,90,.45);border-radius:4px;color:var(--accent);font-size:9px;line-height:1.2}.skill-button-cooldown{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:conic-gradient(rgba(4,6,12,.8) var(--remaining-angle, 0deg),transparent 0);opacity:0;transition:opacity .1s ease;pointer-events:none}.skill-button-timer{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#fff;font-size:20px;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.75);pointer-events:none}@keyframes skill-ready{0%,to{box-shadow:inset 0 0 18px #729dff33,0 0 #729dff00}50%{box-shadow:inset 0 0 22px #729dff66,0 0 22px #729dff4d}}.ult-button{position:absolute;z-index:2;right:max(17px,calc(env(safe-area-inset-right) + 15px));bottom:max(122px,calc(env(safe-area-inset-bottom) + 114px));width:86px;height:86px;padding:0;overflow:hidden;border:1px solid rgba(255,215,122,.62);border-radius:50%;background:radial-gradient(circle at 40% 30%,#ffecb280,#342610f0 70%);box-shadow:inset 0 0 20px #ffd77a47,0 8px 26px #0000006b;color:#fff7e0;font:inherit;pointer-events:auto;touch-action:manipulation;cursor:pointer;transition:filter .12s ease,box-shadow .12s ease}.ult-button.is-ready{animation:ult-ready 1.6s ease-in-out infinite}.ult-button.is-locked{filter:saturate(.45) brightness(.65)}.ult-button-name{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:15px;font-weight:700;letter-spacing:.16em;text-shadow:0 2px 10px rgba(0,0,0,.8)}.ult-button-key{position:absolute;top:7px;right:9px;padding:1px 4px;border:1px solid rgba(255,215,122,.55);border-radius:4px;color:#ffe9b0;font-size:9px;line-height:1.2}.ult-button-timer{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#ffe9b0;font-size:17px;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.8);pointer-events:none}@keyframes ult-ready{0%,to{box-shadow:inset 0 0 20px #ffd77a47,0 0 #ffd77a00}50%{box-shadow:inset 0 0 26px #ffecb28c,0 0 26px #ffd77a59}}.archer-skill-bar{position:absolute;z-index:2;right:max(14px,calc(env(safe-area-inset-right) + 12px));bottom:max(24px,calc(env(safe-area-inset-bottom) + 18px));display:flex;align-items:flex-end;gap:8px;pointer-events:none}.archer-skill-button{position:relative;width:58px;height:58px;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:0 6px 18px #00000075;pointer-events:auto;touch-action:manipulation;cursor:pointer;transition:filter .12s ease,transform 80ms ease}.archer-skill-button:active{transform:scale(.96)}.archer-skill-button.is-ultimate{width:74px;height:74px;border-radius:50%;box-shadow:0 8px 22px #00000080,0 0 18px #3ef0c82e}.archer-skill-icon{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}.archer-skill-cooldown{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:conic-gradient(rgba(4,6,12,.82) var(--remaining-angle, 0deg),transparent 0);opacity:0;pointer-events:none}.archer-skill-timer{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#fff;font-size:17px;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.85);pointer-events:none}.archer-skill-key{position:absolute;top:4px;right:5px;min-width:14px;padding:1px 3px;border:1px solid rgba(216,180,90,.5);border-radius:4px;background:#060a0ea6;color:#ffe9b0;font-size:8px;font-weight:700;line-height:1.2;text-align:center}.archer-skill-button.is-cooling{filter:saturate(.55) brightness(.72)}.archer-skill-button.is-locked{filter:grayscale(.8) brightness(.5)}.joystick-zone{position:absolute;top:calc(env(safe-area-inset-top) + 96px);right:0;bottom:0;left:0;z-index:1;pointer-events:auto;touch-action:none}.joystick{position:absolute;width:120px;height:120px;opacity:0;pointer-events:none;transition:opacity 80ms ease}.joystick.is-active{opacity:1}.joystick-base{position:relative;width:100%;height:100%;border:1px solid var(--line);border-radius:50%;background:radial-gradient(circle at 50% 45%,#2e384e8c,#0c101861 70%),var(--panel);box-shadow:inset 0 0 24px #0000008c,0 8px 24px #00000059}.joystick-knob{position:absolute;top:50%;left:50%;width:52px;height:52px;border:1px solid rgba(216,180,90,.55);border-radius:50%;background:radial-gradient(circle at 40% 35%,#f0d28c8c,#785c288c 70%),#3a3324;box-shadow:inset 0 0 10px #ffeebe40,0 4px 12px #00000073;transform:translate(-50%,-50%);will-change:transform}.loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 45%,#181f2de6,#0b0d12f5 65%);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:auto;transition:opacity .18s ease}.loading.hidden{display:none}.loading-panel{display:grid;justify-items:center;gap:10px;text-align:center}.spinner{width:34px;height:34px;border:3px solid rgba(216,180,90,.22);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.loading-text{margin-top:6px;font-size:15px;letter-spacing:.06em}.loading-detail{max-width:280px;color:var(--muted);font-size:11px;line-height:1.6}.home-screen{position:absolute;top:0;right:0;bottom:0;left:0;z-index:35;display:flex;flex-direction:column;gap:14px;padding:max(26px,calc(env(safe-area-inset-top) + 18px)) 20px max(18px,calc(env(safe-area-inset-bottom) + 12px));overflow:hidden;background:radial-gradient(120% 55% at 50% 0%,rgba(62,207,184,.14),transparent 60%),linear-gradient(180deg,#0911151f,#0911150a 36%,#070c10b8 60%,#05080b);pointer-events:auto}.home-preview-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:34;width:100%;height:100%;pointer-events:none}.home-preview-status{position:absolute;top:max(92px,calc(env(safe-area-inset-top) + 82px));right:20px;color:#6fe0c88c;font-size:8px;letter-spacing:.1em;text-shadow:0 1px 6px rgba(0,0,0,.8)}.home-music-toggle{position:absolute;top:max(18px,calc(env(safe-area-inset-top) + 12px));right:20px;z-index:2;display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid rgba(216,180,90,.3);border-radius:50%;background:#050c0f94;color:var(--accent);font:inherit;font-size:14px;line-height:1;cursor:pointer;pointer-events:auto;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.home-music-toggle.is-muted{border-color:#ffffff1f;color:var(--muted);opacity:.55;text-decoration:line-through}.home-scene-nav{position:absolute;top:max(112px,calc(env(safe-area-inset-top) + 102px));right:20px;z-index:2;display:grid;grid-template-columns:14px auto 14px;align-items:center;gap:3px 4px;padding:4px 6px;border:1px solid rgba(111,224,200,.2);border-radius:10px;background:#050c0f8c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:auto}.home-scene-name{color:#c4f5ecd1;font-size:8px;font-weight:700;letter-spacing:.08em;text-align:center;white-space:nowrap}.home-scene-arrow{width:14px;height:14px;padding:0;border:0;background:none;color:#d8b45ad1;font:inherit;font-size:14px;line-height:1;cursor:pointer;pointer-events:auto}.home-scene-dots{display:flex;grid-column:1 / -1;justify-content:center;gap:3px}.home-scene-dot{width:3px;height:3px;padding:0;border:0;border-radius:50%;background:#ffffff38;cursor:pointer;pointer-events:auto}.home-scene-dot.is-active{width:8px;border-radius:999px;background:#6fe0c8;box-shadow:0 0 6px #6fe0c880}.home-screen.hidden{display:none}.home-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(111,224,200,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(111,224,200,.03) 1px,transparent 1px);background-size:38px 38px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.7),transparent 78%);mask-image:linear-gradient(180deg,rgba(0,0,0,.7),transparent 78%);pointer-events:none}.home-header{position:relative;z-index:1;display:grid;gap:2px;padding-top:12px}.home-kicker{color:#6fe0c8;font-size:9px;font-weight:700;letter-spacing:.3em}.home-title{margin:0;color:#f5f9fd;font-size:40px;font-weight:800;letter-spacing:.08em;text-shadow:0 2px 18px rgba(0,0,0,.7),0 0 28px rgba(111,224,200,.16)}.home-sub{margin:2px 0 0;color:var(--muted);font-size:10px;letter-spacing:.12em}.home-carousel{position:relative;z-index:1;display:grid;grid-template-columns:34px 1fr 34px;align-items:center;gap:8px;margin-top:auto}.home-carousel-info{display:grid;justify-items:center;gap:1px;min-width:0}.home-carousel-name{color:#f4f8fc;font-size:14px;font-weight:800;letter-spacing:.08em;text-shadow:0 2px 10px rgba(0,0,0,.8)}.home-carousel-role{color:#6fe0c8b8;font-size:8px;font-weight:700;letter-spacing:.14em}.home-carousel-arrow{display:grid;place-items:center;width:34px;height:34px;border:1px solid rgba(216,180,90,.28);border-radius:50%;background:#060c0f8f;color:#f0d795;font:inherit;font-size:18px;line-height:1;cursor:pointer;pointer-events:auto;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.home-carousel-arrow:active{transform:scale(.94)}.home-carousel-dots{grid-column:1 / -1;display:flex;justify-content:center;gap:5px;margin-top:1px}.home-carousel-dot{width:5px;height:5px;padding:0;border:0;border-radius:50%;background:#ffffff38;cursor:pointer;pointer-events:auto}.home-carousel-dot.is-active{width:14px;border-radius:999px;background:#6fe0c8;box-shadow:0 0 8px #6fe0c88c}.home-menu{position:relative;z-index:1;display:grid;gap:8px;margin-top:0;padding-top:4px}.home-entry{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;width:100%;padding:11px 12px;border:1px solid rgba(255,255,255,.09);border-radius:14px;background:#ffffff09;color:var(--ink);font:inherit;text-align:left;cursor:pointer;pointer-events:auto}.home-entry:first-child{border-color:#d8b45a57;background:linear-gradient(90deg,rgba(216,180,90,.1),transparent 70%),#ffffff0a}.home-entry:active:not(:disabled){transform:scale(.99)}.home-entry.is-locked{opacity:.4;cursor:default}.home-entry-index{color:#6fe0c8b3;font-size:9px;font-weight:700;letter-spacing:.12em}.home-entry-text{display:grid;gap:1px;min-width:0}.home-entry-text strong{color:#eef4f8;font-size:14px;font-weight:700;letter-spacing:.06em}.home-entry-text small{overflow:hidden;color:var(--muted);font-size:9px;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap}.home-entry-arrow{color:#d8b45acc;font-size:10px;font-weight:700;letter-spacing:.08em}.home-entry.is-locked .home-entry-arrow{color:var(--muted);font-size:8px}.home-footer{position:relative;z-index:1;margin-top:0;display:grid;justify-items:center;gap:4px}.home-last-played{color:#c4d3db80;font-size:9px;letter-spacing:.1em}@media(max-height:700px){.home-header{padding-top:4px}.home-title{font-size:32px}.home-menu{gap:6px;margin-top:6px}.home-entry{padding:8px 10px}}.character-select{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;flex-direction:column;gap:12px;padding:max(18px,calc(env(safe-area-inset-top) + 12px)) 18px max(16px,calc(env(safe-area-inset-bottom) + 12px));overflow:hidden;background:radial-gradient(110% 58% at 50% 0%,rgba(54,119,104,.34),transparent 62%),radial-gradient(90% 40% at 50% 100%,rgba(216,180,90,.09),transparent 70%),linear-gradient(180deg,#0a1115,#080c11 56%,#05070a);pointer-events:auto}.character-select:before{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(111,224,200,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(111,224,200,.035) 1px,transparent 1px);background-size:34px 34px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.7),transparent 75%);mask-image:linear-gradient(180deg,rgba(0,0,0,.7),transparent 75%);content:"";pointer-events:none}.character-select.hidden{display:none}.cs-back{position:absolute;top:max(18px,calc(env(safe-area-inset-top) + 12px));right:18px;z-index:2;padding:5px 10px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:#ffffff0b;color:var(--muted);font:inherit;font-size:9px;font-weight:700;letter-spacing:.1em;cursor:pointer;pointer-events:auto}.cs-back:active{transform:scale(.97)}.cs-header{position:relative;z-index:1;display:grid;gap:2px}.cs-kicker{color:#6fe0c8;font-size:9px;font-weight:700;letter-spacing:.3em}.cs-title{margin:0;color:#f1f5fa;font-size:25px;font-weight:800;letter-spacing:.04em;text-shadow:0 2px 16px rgba(0,0,0,.6)}.cs-sub{color:var(--muted);font-size:10px;letter-spacing:.14em}.cs-card{position:relative;z-index:1;flex:1;min-height:330px;overflow:hidden;border:1px solid rgba(111,224,200,.3);border-radius:22px;background:#101a1c;box-shadow:inset 0 0 0 1px #ffffff09,0 18px 44px #00000073,0 0 28px #3ecfb814}.cs-card-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:52% 24%;transform:scale(1.015);-webkit-user-select:none;user-select:none}.cs-card-shade{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#05090c14,#05090c05 34%,#05090cd1 66%,#060a0d),linear-gradient(90deg,rgba(5,9,12,.32) 0%,transparent 42%)}.cs-card-top{position:absolute;top:14px;right:14px;left:14px;display:flex;align-items:center;justify-content:space-between}.cs-role,.cs-level{padding:6px 10px;border:1px solid rgba(111,224,200,.38);border-radius:999px;background:#050e0f9e;color:#a9f7e7;font-size:9px;font-weight:700;letter-spacing:.14em;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.cs-level{border-color:#d8b45a57;color:#f0d795}.cs-card-body{position:absolute;right:16px;bottom:15px;left:16px;display:grid;gap:9px}.cs-name-row{display:flex;align-items:baseline;gap:9px}.cs-name{margin:0;color:#f7fbff;font-size:30px;font-weight:800;letter-spacing:.05em;line-height:1;text-shadow:0 2px 18px rgba(0,0,0,.7)}.cs-unlocked{padding:3px 7px;border:1px solid rgba(126,224,163,.38);border-radius:999px;background:#265b3e47;color:#a8e9be;font-size:8px;font-weight:700;letter-spacing:.12em}.cs-desc{max-width:320px;margin:0;color:#e8ecf5bd;font-size:11px;line-height:1.55;text-shadow:0 1px 8px rgba(0,0,0,.8)}.cs-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.cs-stat{display:grid;gap:1px;padding:6px 8px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:#0a1216a8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.cs-stat span{color:#c4d3db8f;font-size:8px;font-weight:700;letter-spacing:.12em}.cs-stat strong{color:#eef6f8;font-size:14px;font-weight:800;line-height:1.1}.cs-equipment{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.cs-equip-slot{display:grid;gap:1px;padding:4px 6px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:#0a121694}.cs-equip-head{display:flex;align-items:center;gap:3px}.cs-equip-icon{display:grid;place-items:center}.cs-equip-icon .equipment-icon{width:12px;height:12px;color:#d2e0e6ad}.cs-equip-slot.is-rare .equipment-icon{color:#f0c766}.cs-equip-slot span{color:#c4d3db80;font-size:7px;letter-spacing:.08em}.cs-equip-slot strong{overflow:hidden;color:#eef6f8e6;font-size:9px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.cs-equip-slot.is-rare{border-color:#d8b45a80;background:#d8b45a14}.cs-equip-slot.is-rare strong{color:#ffe6a8}.cs-equip-slot.is-empty strong{color:#e8ecf552}.cs-skills{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.cs-skill{display:grid;justify-items:center;gap:3px;min-width:0}.cs-skill img{width:34px;height:34px;border:1px solid rgba(111,224,200,.4);border-radius:50%;object-fit:cover;box-shadow:0 3px 10px #0006}.cs-skill span{max-width:100%;overflow:hidden;color:#dfefeedb;font-size:9px;font-weight:600;letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap}.cs-roster{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.cs-roster-card{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:1px;height:74px;padding:6px 4px;overflow:hidden;border:1px solid rgba(255,255,255,.09);border-radius:14px;background:#ffffff09;color:var(--ink);font:inherit;cursor:default;pointer-events:auto}.cs-roster-card.is-selected{border-color:#6fe0c89e;background:#214f4742;box-shadow:inset 0 0 16px #3ecfb81f,0 0 16px #3ecfb81f}.cs-roster-card.is-selected:after{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#05090c00 18%,#05090ce0);content:"";pointer-events:none}.cs-roster-card.is-locked{opacity:.5}.cs-roster-thumb{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:52% 20%}.cs-roster-glyph{position:absolute;top:11px;color:#d8b45ab3;font-size:21px;font-weight:700}.cs-roster-name{position:relative;z-index:1;color:#eef3f9;font-size:10px;font-weight:700}.cs-roster-tag{position:relative;z-index:1;color:#a9f7e7b8;font-size:7px;font-weight:700;letter-spacing:.1em}.cs-roster-card.is-locked .cs-roster-tag{color:#d8b45ab8}.cs-footer{position:relative;z-index:1;display:grid;gap:6px}.cs-actions{display:flex;gap:8px}.cs-equip-button{flex:0 0 78px;border:1px solid var(--line);border-radius:15px;background:#d8b45a1a;color:var(--accent);font:inherit;font-size:13px;font-weight:700;letter-spacing:.1em;cursor:pointer;pointer-events:auto}.cs-equip-button:active{transform:scale(.985)}.cs-start{display:grid;flex:1;place-items:center;height:52px;border:1px solid rgba(255,233,179,.62);border-radius:15px;background:linear-gradient(180deg,#efd18a,#c79a43 55%,#a87b2e);box-shadow:inset 0 1px #ffffff80,0 8px 22px #0000006b;color:#241a09;font:inherit;font-size:15px;font-weight:800;letter-spacing:.12em;cursor:pointer;pointer-events:auto;transition:transform .12s ease,filter .12s ease}.cs-start:active:not(:disabled){transform:scale(.985);filter:brightness(.96)}.cs-start:disabled{border-color:#ffffff17;background:#ffffff0f;box-shadow:none;color:#e8ecf559;cursor:wait}.cs-hint{color:var(--muted);font-size:9px;letter-spacing:.12em;text-align:center}@media(max-height:700px){.character-select{gap:8px}.cs-card{min-height:300px}.cs-title{font-size:21px}.cs-desc{display:none}.cs-roster-card{height:64px}.cs-start{height:46px}}@keyframes spin{to{transform:rotate(360deg)}}.equipment-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;padding-top:calc(env(safe-area-inset-top) + 24px);background:#04070ab8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);pointer-events:auto}.equipment-panel.hidden{display:none}.equipment-sheet{display:grid;gap:9px;width:100%;max-height:84%;padding:16px 16px max(18px,calc(env(safe-area-inset-bottom) + 14px));overflow-y:auto;border:1px solid rgba(216,180,90,.24);border-bottom:0;border-radius:22px 22px 0 0;background:radial-gradient(100% 40% at 50% 0%,rgba(216,180,90,.08),transparent 70%),#0b1217;box-shadow:0 -16px 40px #0000008c}.equipment-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.equipment-heading{display:flex;align-items:baseline;gap:8px;min-width:0}.equipment-title{overflow:hidden;margin:0;color:#f2f6fb;font-size:17px;font-weight:800;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap}.equipment-level{color:var(--accent);font-size:10px;font-weight:700;letter-spacing:.08em}.equipment-close{display:grid;flex:0 0 30px;place-items:center;width:30px;height:30px;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:#ffffff0d;color:var(--muted);font:inherit;font-size:12px;cursor:pointer}.equipment-summary{color:var(--muted);font-size:9px;letter-spacing:.06em}.equipment-icon{flex:0 0 auto;width:18px;height:18px;color:#d2e0e6bf}.equipment-slot-head{display:flex;align-items:center;gap:4px}.equipment-slot-card.is-rare .equipment-icon{color:#f0c766}.equipment-item-icon{display:grid;flex:0 0 auto;place-items:center;width:30px;height:30px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#0003;color:#d2e0e6c7}.equipment-item.is-rare .equipment-item-icon{border-color:#d8b45a61;color:#f0c766}.equipment-compare{margin-top:1px;font-size:7px;font-weight:700;letter-spacing:.02em}.equipment-compare.is-up{color:#8fe3ad}.equipment-compare.is-down{color:#ff9b8f}.equipment-compare.is-even{color:var(--muted)}.equipment-section-label{margin-top:2px;color:#d8b45ab8;font-size:8px;font-weight:700;letter-spacing:.18em}.equipment-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.equipment-slot-card{display:grid;gap:2px;padding:8px 7px;border:1px solid rgba(255,255,255,.1);border-radius:11px;background:#ffffff09}.equipment-slot-card.is-rare{border-color:#d8b45a85;background:#d8b45a14}.equipment-slot-label{color:var(--muted);font-size:7px;letter-spacing:.12em}.equipment-slot-name{overflow:hidden;color:#eef3f9;font-size:10px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.equipment-slot-card.is-rare .equipment-slot-name{color:#ffe6a8}.equipment-slot-stats{color:#c4d3db99;font-size:7px}.equipment-remove{justify-self:start;margin-top:3px;padding:2px 6px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:7px;cursor:pointer}.equipment-inventory{display:grid;gap:5px}.equipment-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 9px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:#ffffff08}.equipment-item.is-rare{border-color:#d8b45a5c;background:#d8b45a0d}.equipment-item-info{display:grid;gap:1px;min-width:0}.equipment-item-label{color:var(--muted);font-size:7px;letter-spacing:.1em}.equipment-item-name{overflow:hidden;color:#eef3f9;font-size:11px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.equipment-item.is-rare .equipment-item-name{color:#ffe6a8}.equipment-item-stats{color:#c4d3db9e;font-size:8px}.equipment-action{flex:0 0 auto;padding:6px 11px;border:1px solid rgba(216,180,90,.34);border-radius:999px;background:#d8b45a1a;color:var(--accent);font:inherit;font-size:9px;font-weight:700;cursor:pointer}.equipment-action:disabled{border-color:#7ee0a33d;background:#7ee0a30f;color:#9fdcb4b3;cursor:default}.equipment-empty{padding:14px 10px;border:1px dashed rgba(255,255,255,.12);border-radius:10px;color:var(--muted);font-size:10px;line-height:1.5;text-align:center}.npc-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:45;display:flex;align-items:flex-end;justify-content:center;padding-top:calc(env(safe-area-inset-top) + 24px);background:#04070ab8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);pointer-events:auto}.npc-panel.hidden{display:none}.npc-sheet{display:grid;gap:10px;width:100%;max-height:82%;padding:16px 16px max(18px,calc(env(safe-area-inset-bottom) + 14px));overflow-y:auto;border:1px solid rgba(216,180,90,.24);border-bottom:0;border-radius:22px 22px 0 0;background:radial-gradient(100% 40% at 50% 0%,rgba(216,180,90,.08),transparent 70%),#0b1217;box-shadow:0 -16px 40px #0000008c}.npc-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.npc-heading{display:flex;align-items:baseline;gap:8px;min-width:0}.npc-title{overflow:hidden;margin:0;color:#f2f6fb;font-size:17px;font-weight:800;letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap}.npc-gold{color:var(--accent);font-size:9px;font-weight:700;letter-spacing:.05em;white-space:nowrap}.npc-close{display:grid;flex:0 0 30px;place-items:center;width:30px;height:30px;border:1px solid rgba(255,255,255,.12);border-radius:50%;background:#ffffff0d;color:var(--muted);font:inherit;font-size:12px;cursor:pointer}.npc-text{margin:0;color:#e8ecf5d1;font-size:12px;line-height:1.7}.npc-actions{display:flex;gap:8px;flex-wrap:wrap}.npc-action{padding:8px 16px;border:1px solid var(--line);border-radius:999px;background:#ffffff0a;color:var(--accent);font:inherit;font-size:11px;font-weight:700;cursor:pointer}.npc-action.is-primary{background:#d8b45a24}.npc-content{display:grid;gap:6px}.npc-shop-item{display:flex;align-items:center;gap:9px;padding:8px 9px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:#ffffff08}.npc-shop-item.is-rare{border-color:#d8b45a5c;background:#d8b45a0d}.npc-shop-icon{display:grid;flex:0 0 30px;place-items:center;width:30px;height:30px;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:#d2e0e6c7}.npc-shop-item.is-rare .npc-shop-icon{border-color:#d8b45a61;color:#f0c766}.npc-shop-info{display:grid;flex:1;gap:1px;min-width:0}.npc-shop-label{color:var(--muted);font-size:7px;letter-spacing:.1em}.npc-shop-name{overflow:hidden;color:#eef3f9;font-size:11px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.npc-shop-item.is-rare .npc-shop-name{color:#ffe6a8}.npc-shop-stats{color:#c4d3db9e;font-size:8px}.npc-shop-price{flex:0 0 auto;color:#f0d795;font-size:9px;font-weight:700}.npc-shop-buy{flex:0 0 auto;padding:6px 10px;border:1px solid rgba(216,180,90,.34);border-radius:999px;background:#d8b45a1a;color:var(--accent);font:inherit;font-size:9px;font-weight:700;cursor:pointer}.npc-shop-buy:disabled{border-color:#ffffff1a;background:transparent;color:var(--muted);cursor:default}.npc-empty{padding:14px;border:1px dashed rgba(255,255,255,.12);border-radius:10px;color:var(--muted);font-size:10px;text-align:center}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}
