html,body,#app{width:100%;height:100%;height:100dvh;margin:0;background:#111827;overflow:hidden;touch-action:manipulation;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}body{color:#f8fafc;font-family:system-ui,sans-serif}button{border:0;border-radius:.75rem;padding:.8rem 1.25rem;color:#0f172a;background:#67e8f9;font:inherit;font-weight:700;cursor:pointer}.screen{width:100%;height:100%}.screen[hidden]{display:none}.start-screen,.select-screen{background:linear-gradient(#02061794,#020617ad),url(./beijing-B07sQ6qE.png) center / cover no-repeat fixed}.start-screen{display:grid;place-items:center;text-align:center}.particles{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.particles span{position:absolute;top:-10px;width:var(--size, 3px);height:var(--size, 3px);background:#c8d2dc59;border-radius:50%;animation:particleFall var(--duration, 8s) linear infinite;animation-delay:var(--delay, 0s);left:var(--x, 50%)}.particles span:nth-child(1){--x: 5%;--size: 2px;--duration: 7s;--delay: 0s}.particles span:nth-child(2){--x: 12%;--size: 4px;--duration: 9s;--delay: 1.2s}.particles span:nth-child(3){--x: 20%;--size: 3px;--duration: 6s;--delay: .5s}.particles span:nth-child(4){--x: 28%;--size: 2px;--duration: 10s;--delay: 2s}.particles span:nth-child(5){--x: 35%;--size: 5px;--duration: 8s;--delay: .8s}.particles span:nth-child(6){--x: 42%;--size: 3px;--duration: 7s;--delay: 3s}.particles span:nth-child(7){--x: 50%;--size: 2px;--duration: 11s;--delay: 1.5s}.particles span:nth-child(8){--x: 58%;--size: 4px;--duration: 6s;--delay: .3s}.particles span:nth-child(9){--x: 65%;--size: 3px;--duration: 9s;--delay: 2.5s}.particles span:nth-child(10){--x: 72%;--size: 2px;--duration: 8s;--delay: 1s}.particles span:nth-child(11){--x: 78%;--size: 5px;--duration: 7s;--delay: 3.5s}.particles span:nth-child(12){--x: 85%;--size: 3px;--duration: 10s;--delay: .7s}.particles span:nth-child(13){--x: 92%;--size: 2px;--duration: 6s;--delay: 2.2s}.particles span:nth-child(14){--x: 8%;--size: 4px;--duration: 9s;--delay: 1.8s}.particles span:nth-child(15){--x: 25%;--size: 3px;--duration: 8s;--delay: .2s}.particles span:nth-child(16){--x: 45%;--size: 2px;--duration: 11s;--delay: 3.2s}.particles span:nth-child(17){--x: 55%;--size: 5px;--duration: 7s;--delay: 1.3s}.particles span:nth-child(18){--x: 68%;--size: 3px;--duration: 9s;--delay: 2.8s}.particles span:nth-child(19){--x: 82%;--size: 2px;--duration: 6s;--delay: .6s}.particles span:nth-child(20){--x: 95%;--size: 4px;--duration: 10s;--delay: 1.6s}@keyframes particleFall{0%{transform:translateY(-10px) translate(0);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(100vh) translate(var(--drift, 20px));opacity:0}}.particles span:nth-child(odd){--drift: -20px}.particles span:nth-child(2n){--drift: 20px}.particles span:nth-child(3n){--drift: 30px}.start-panel{width:min(32rem,calc(100% - 3rem))}.start-panel h1{margin:.25rem 0 .75rem;font-size:clamp(2rem,7vw,4rem);text-shadow:0 .15rem 1.25rem rgb(2 6 23 / 85%);animation:titleGlow 3s ease-in-out infinite alternate}@keyframes titleGlow{0%{text-shadow:0 .15rem 1.25rem rgb(2 6 23 / 85%),0 0 20px rgba(103,232,249,.2)}to{text-shadow:0 .15rem 1.25rem rgb(2 6 23 / 85%),0 0 40px rgba(103,232,249,.5)}}.start-footer{position:absolute;bottom:1rem;width:100%;text-align:center;color:#94a3b87f;font-size:.65rem;line-height:1.6;letter-spacing:.05em}.footer-brand{margin:0 0 .2rem;color:#94a3b866;font-size:.6rem}.footer-copy{margin:0 0 .3rem}.footer-links{display:flex;gap:.4rem;justify-content:center;flex-wrap:wrap}.footer-links a{color:#94a3b87f;text-decoration:none;transition:color .2s}@media (hover: hover){.footer-links a:hover{color:#67e8f9}}.footer-sep{color:#94a3b84d}.support-bar{display:flex;align-items:center;justify-content:center;gap:.45rem;width:100%;max-width:34rem;margin:0 auto .55rem;padding:.42rem .9rem;box-sizing:border-box;border:1px solid rgb(103 232 249 / 30%);border-radius:999px;background:#0f172aa6;color:#cbd5e1;font-size:.78rem;text-decoration:none;transition:border-color .15s,background .15s}.support-icon{font-size:.9rem;line-height:1}.support-note{color:#cbd5e1d9}.support-action{color:#67e8f9;font-weight:700;white-space:nowrap}@media (hover: hover){.support-bar:hover{border-color:#67e8f9a6;background:#1e293bcc}}@media (pointer: coarse){.support-bar{padding:.55rem 1rem;font-size:.85rem}}.start-panel p{text-shadow:0 .1rem .6rem rgb(2 6 23 / 90%)}.start-buttons{display:flex;gap:.8rem;justify-content:center}.button-secondary{background:transparent;border:1px solid rgb(148 163 184 / 40%);color:#e2e8f0}@media (hover: hover){.button-secondary:hover{background:#94a3b833;border-color:#67e8f9;color:#67e8f9}}.eyebrow{color:#67e8f9;font-size:.75rem;font-weight:800;letter-spacing:.2em}.hero-showcase{display:flex;gap:1rem;justify-content:center;margin:1.5rem 0}.hero-card{display:flex;flex-direction:column;align-items:center;gap:.4rem;animation:heroFadeIn .5s ease both;animation-delay:calc(var(--delay) * .1s)}.hero-card img{width:64px;height:64px;border-radius:50%;border:2px solid rgb(103 232 249 / 40%);object-fit:cover;transition:transform .2s,border-color .2s}.hero-card span{font-size:.8rem;color:#cbd5e1}@media (hover: hover){.hero-card img:hover{transform:scale(1.15);border-color:#67e8f9}}@keyframes heroFadeIn{0%{opacity:0;transform:translateY(1.2rem)}to{opacity:1;transform:translateY(0)}}.hero-showcase.is-leaving .hero-card{animation:heroFlyOut .4s ease-in forwards;animation-delay:calc(var(--delay) * .06s)}@keyframes heroFlyOut{to{opacity:0;transform:translateY(-3rem) scale(.6)}}.game-screen{position:relative;display:grid;place-items:center}.select-screen{position:relative;display:grid;grid-template-rows:auto 1fr auto;gap:1rem;padding:1.5rem clamp(1rem,4vw,3rem);padding-right:max(clamp(1rem,4vw,3rem),env(safe-area-inset-right));padding-left:max(clamp(1rem,4vw,3rem),env(safe-area-inset-left));box-sizing:border-box;overflow:hidden}.select-header{display:flex;align-items:center;justify-content:center;gap:.5rem;text-align:center;text-shadow:0 .1rem .6rem rgb(2 6 23 / 90%)}.select-footer{text-align:center;font-size:.7rem;color:#94a3b899;line-height:1.5}.back-button{position:absolute;left:clamp(.8rem,3vw,2rem);top:1.5rem;padding:.6rem 1rem;border:1px solid rgb(148 163 184 / 30%);border-radius:.5rem;background:#0f172acc;color:#e2e8f0;font-size:.95rem;cursor:pointer;transition:all .15s}@media (hover: hover){.back-button:hover{background:#67e8f926;border-color:#67e8f9;color:#67e8f9}}.select-header h2{margin:0 0 .35rem;font-size:clamp(1.5rem,4vw,2.25rem)}.select-actions{position:absolute;top:max(.8rem,env(safe-area-inset-top));right:max(.8rem,env(safe-area-inset-right));z-index:5;display:flex;gap:.4rem}.settings-button{padding:.5rem .75rem;border:1px solid rgb(148 163 184 / 30%);border-radius:.6rem;background:#0f172ad9;color:#e2e8f0;font-size:.85rem;font-weight:700;cursor:pointer;text-decoration:none;transition:border-color .12s,background .12s}@media (hover: hover){.settings-button:hover{border-color:#67e8f9;background:#334155e5}}@media (pointer: coarse){.settings-button{padding:.6rem .8rem;font-size:.9rem}}.select-hint{margin:0;color:#94a3b8;font-size:.875rem}.chapter-carousel{display:flex;align-items:center;gap:1.5rem;width:min(64rem,96%);margin:0 auto}.chapter-list{flex:1;display:flex;justify-content:center;align-items:center}.chapter-card{display:flex;flex-direction:row;gap:1.2rem;padding:1.2rem 1.5rem;border:1px solid rgb(148 163 184 / 25%);border-radius:1rem;background:#0f172aeb;box-shadow:0 .5rem 2rem #02061799;color:#e2e8f0;text-align:left;font:inherit;cursor:pointer;transition:transform .12s,border-color .12s,background .12s;width:100%;max-width:56rem;min-height:18rem}.chapter-map-preview{flex:0 0 55%;height:auto;overflow:hidden;border-radius:.6rem;background:#1e293b7f}.chapter-info{flex:1;display:flex;flex-direction:column;gap:.3rem;min-width:0}.chapter-map-preview img{width:100%;height:100%;object-fit:cover;transition:transform .3s}@media (hover: hover){.chapter-card:hover:not(:disabled) .chapter-map-preview img{transform:scale(1.05)}}.chapter-arrow{flex-shrink:0;width:3rem;height:3rem;border:1px solid rgb(148 163 184 / 30%);border-radius:50%;background:#0f172acc;color:#e2e8f0;font-size:1.5rem;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;line-height:1}.chapter-arrow:disabled{opacity:.25;cursor:default}@media (hover: hover){.chapter-arrow:hover:not(:disabled){background:#67e8f926;border-color:#67e8f9;color:#67e8f9}}.chapter-counter{text-align:center;color:#64748b;font-size:.8rem;margin-top:.5rem}@keyframes cardSlideOutLeft{to{opacity:0;transform:translate(-3rem)}}@keyframes cardSlideOutRight{to{opacity:0;transform:translate(3rem)}}@keyframes cardSlideInRight{0%{opacity:0;transform:translate(3rem)}to{opacity:1;transform:translate(0)}}@keyframes cardSlideInLeft{0%{opacity:0;transform:translate(-3rem)}to{opacity:1;transform:translate(0)}}.chapter-slot{width:100%;display:flex;justify-content:center}@media (hover: hover){.chapter-card:hover:not(:disabled){transform:translateY(-2px);border-color:#67e8f9;background:#1e293bf2}}.chapter-card.is-locked{opacity:.45;cursor:not-allowed}.chapter-card.is-cleared{border-color:#4ade808c}.chapter-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.chapter-label{color:#67e8f9;font-size:.7rem;font-weight:800;letter-spacing:.14em}.chapter-difficulty{padding:.1rem .4rem;border-radius:999px;font-size:.65rem;font-weight:700}.diff-tutorial{color:#93c5fd;background:#3b82f62e}.diff-normal{color:#fbbf24;background:#fbbf2426}.diff-hard{color:#fca5a5;background:#ef44442e}.chapter-name{font-size:.95rem;font-weight:700}.chapter-scene{color:#67e8f9;font-size:.7rem}.chapter-summary{flex:1;color:#94a3b8;font-size:.78rem;line-height:1.45}.chapter-enemies{display:grid;gap:.3rem;margin-top:.15rem;padding-top:.45rem;border-top:1px solid rgb(148 163 184 / 15%)}.enemies-head{display:flex;align-items:baseline;justify-content:space-between;gap:.4rem}.enemies-label{color:#64748b;font-size:.66rem;font-weight:800;letter-spacing:.1em}.enemies-total{color:#fca5a5;font-size:.66rem;font-weight:700;font-variant-numeric:tabular-nums}.enemy-tags{display:flex;flex-wrap:wrap;gap:.25rem}.enemy-tag{display:inline-flex;align-items:baseline;gap:.2rem;padding:.1rem .35rem;border:1px solid rgb(248 113 113 / 25%);border-radius:.3rem;background:#7f1d1d38;color:#fecaca;font-size:.65rem;font-weight:700;white-space:nowrap}.enemy-tag b{color:#fca5a5;font-size:.6rem;font-variant-numeric:tabular-nums;opacity:.85}.chapter-enemies.is-hidden{margin-top:auto;padding-top:.45rem;border-top:1px solid rgb(148 163 184 / 15%);color:#64748b;font-size:.7rem;font-style:italic}.chapter-badge{margin-top:auto;padding-top:.15rem;font-size:.68rem;font-weight:700}.chapter-card.is-cleared .chapter-badge{color:#4ade80}.chapter-card.is-unlocked .chapter-badge{color:#fbbf24}.big-chapter-card{position:relative;display:flex;flex-direction:column;gap:.8rem;padding:2rem 3rem;border:1px solid rgb(148 163 184 / 25%);border-radius:1rem;background:#0f172aeb;box-shadow:0 .5rem 2rem #02061799;color:#e2e8f0;text-align:center;width:100%;max-width:48rem;min-height:14rem;cursor:pointer;transition:transform .12s,border-color .12s;overflow:hidden}.big-chapter-card[style*=background-image]{background-size:cover;background-position:center}.big-chapter-card[style*=background-image]{border:none;box-shadow:none}.big-chapter-card[style*=background-image]:before{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:calc(1rem + 2px);background:linear-gradient(#0f172abf,#0f172ad9);z-index:0}.big-chapter-card[style*=background-image]>*{position:relative;z-index:1}.big-chapter-card[style*=background-image]:before{transition:opacity .12s}@media (hover: hover){.big-chapter-card:hover:not(.is-locked){transform:translateY(-2px);border-color:#67e8f9}.big-chapter-card[style*=background-image]:hover:not(.is-locked):before{opacity:.6}}.big-chapter-card.is-locked{opacity:.45;cursor:not-allowed}.big-chapter-header{display:flex;align-items:center;justify-content:center;gap:1rem}.big-chapter-name{font-size:1.8rem;font-weight:800;color:#67e8f9}.big-chapter-status{font-size:.8rem;color:#94a3b8}.big-chapter-desc{color:#cbd5e1;font-size:.95rem}.big-chapter-enter{color:#67e8f9;font-size:.85rem;font-weight:700}.level-list-view{width:100%;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.level-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;padding:.5rem}.level-card{display:flex;flex-direction:column;gap:.4rem;padding:.8rem;border:1px solid rgb(148 163 184 / 25%);border-radius:.8rem;background:#0f172ae0;box-shadow:0 .4rem 1rem #02061773;color:#e2e8f0;text-align:left;font:inherit;cursor:pointer;transition:transform .12s,border-color .12s}@media (hover: hover){.level-card:hover:not(:disabled){transform:translateY(-2px);border-color:#67e8f9}}.level-card:disabled{opacity:.45;cursor:not-allowed}.level-card.is-cleared{border-color:#4ade8066}.level-map-preview{width:100%;height:7rem;overflow:hidden;border-radius:.5rem;background:#1e293b7f}.level-map-preview img{width:100%;height:100%;object-fit:cover}.level-info{display:flex;flex-direction:column;gap:.15rem}.level-top{display:flex;align-items:center;justify-content:space-between}.level-label{color:#67e8f9;font-size:.65rem;font-weight:800;letter-spacing:.1em}.level-difficulty{padding:.05rem .3rem;border-radius:999px;font-size:.6rem;font-weight:700}.level-name{font-size:.9rem;font-weight:700}.level-scene{color:#67e8f9;font-size:.65rem}.level-badge{font-size:.65rem;font-weight:700;margin-top:.2rem}.level-enemies-text{font-size:.65rem;color:#94a3b8;margin-top:.15rem}.level-card.is-cleared .level-badge{color:#4ade80}.level-card.is-unlocked .level-badge{color:#fbbf24}.choice-node{display:flex;flex-direction:row;gap:1.5rem;padding:1.5rem 2rem;border:1px solid rgb(168 85 247 / 40%);border-radius:1rem;background:#1e0f3ceb;box-shadow:0 .5rem 2rem #02061799;color:#e2e8f0;width:100%;max-width:56rem;min-height:18rem;align-items:center}.choice-visual{flex:0 0 40%;display:flex;flex-direction:column;align-items:center;justify-content:center}.choice-info{flex:1;display:flex;flex-direction:column;gap:.5rem}.choice-node.is-locked{opacity:.45}.choice-node.is-pending{border-color:#c084fc;background:#2d124ee5}.choice-head{display:grid;gap:.1rem;text-align:left}.choice-title{color:#d8b4fe;font-size:.85rem;font-weight:800;letter-spacing:.14em}.choice-sub{color:#94a3b8;font-size:.85rem}.choice-icon{font-size:3rem;margin-bottom:.5rem}.choice-routes{display:grid;gap:.3rem;margin-top:.15rem}.choice-route{display:flex;align-items:center;gap:.35rem;padding:.35rem .5rem;border:1px solid rgb(148 163 184 / 20%);border-radius:.4rem;opacity:.5}.choice-route.is-active{border-color:#c084fc;background:#a855f72e;opacity:1}.choice-tag{color:#d8b4fe;font-size:.68rem;font-weight:800}.choice-action{font-size:.8rem;font-weight:700}.choice-aside{display:grid;gap:.15rem;margin-top:auto;padding-top:.25rem}.choice-status{margin:0;font-size:.72rem;font-weight:700}.choice-merge{margin:0;color:#94a3b8;font-size:.68rem}.choice-change{justify-self:start;margin-top:.2rem;padding:.25rem .55rem;border-radius:.4rem;background:#a855f74d;color:#f3e8ff;font-size:.7rem}.route-dialog{position:fixed;z-index:20;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1.5rem;background:#020617c7;overflow-y:auto}.route-dialog[hidden]{display:none}.route-panel{width:min(34rem,100%);padding:1.5rem;border:1px solid rgb(148 163 184 / 25%);border-radius:1rem;background:#0f172a;text-align:center}.route-panel h3{margin:0 0 .4rem;color:#d8b4fe}.route-options{display:grid;gap:.75rem;margin:1.25rem 0 1rem}.route-option{display:grid;gap:.45rem;padding:1rem;border:1px solid rgb(168 85 247 / 35%);border-radius:.75rem;background:#1e293bcc;color:#e2e8f0;text-align:left;font:inherit;cursor:pointer}@media (hover: hover){.route-option:hover{border-color:#c084fc;background:#334155e5}}.route-option-head{display:flex;align-items:center;gap:.4rem}.route-option-tag{padding:.05rem .4rem;border-radius:.3rem;background:#a855f74d;color:#f3e8ff;font-size:.72rem;font-weight:800}.route-option-name{color:#94a3b8;font-size:.82rem}.route-option-detail{margin:0;padding-left:1.1rem;color:#94a3b8;font-size:.78rem;line-height:1.6}.route-warning{margin:0;color:#f59e0b;font-size:.75rem}.route-cancel{margin-top:.9rem;background:#94a3b840;color:#e2e8f0;font-size:.78rem}.route-cancel[hidden]{display:none}.codex-dialog{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1.5rem;background:#020617c7}.codex-dialog[hidden]{display:none}#changelog-dialog{z-index:40}.codex-panel{width:min(36rem,95%);max-height:80vh;display:flex;flex-direction:column;border:1px solid rgb(148 163 184 / 25%);border-radius:1rem;background:#0f172a;box-shadow:0 1rem 2rem #0206178c;overflow:hidden}.codex-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;border-bottom:1px solid rgb(148 163 184 / 15%)}.codex-header h3{margin:0;color:#67e8f9;font-size:1.05rem}.codex-close{padding:.3rem .5rem;border:none;border-radius:.4rem;background:transparent;color:#94a3b8;font-size:1rem;cursor:pointer}@media (hover: hover){.codex-close:hover{background:#94a3b833;color:#e2e8f0}}.codex-tabs{display:flex;gap:0;border-bottom:1px solid rgb(148 163 184 / 15%)}.codex-tab{flex:1;padding:.6rem;border:none;border-radius:0;border-bottom:2px solid transparent;background:transparent;color:#94a3b8;font-size:.85rem;font-weight:700;cursor:pointer;transition:color .12s,border-color .12s}@media (hover: hover){.codex-tab:hover:not(.is-active){color:#e2e8f0}}.codex-tab.is-active{color:#67e8f9;border-bottom-color:#67e8f9}.codex-content{flex:1;overflow-y:auto;padding:1rem;-webkit-overflow-scrolling:touch}.codex-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.75rem}.codex-item{display:flex;flex-direction:column;align-items:center;padding:.8rem;border:1px solid rgb(148 163 184 / 20%);border-radius:.6rem;background:#1e293b99;text-align:center}.codex-item img{width:4rem;height:4rem;object-fit:contain;margin-bottom:.5rem}.codex-item-name{color:#e2e8f0;font-size:.85rem;font-weight:700;margin-bottom:.2rem}.codex-item-info{color:#94a3b8;font-size:.72rem;line-height:1.4}@keyframes slideOutRight{0%{transform:translate(0);opacity:1}to{transform:translate(100vw);opacity:0}}@keyframes slideInLeft{0%{transform:translate(-100vw);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOutLeft{0%{transform:translate(0);opacity:1}to{transform:translate(-100vw);opacity:0}}@keyframes slideInRight{0%{transform:translate(100vw);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.screen{will-change:transform,opacity;backface-visibility:hidden}.screen.anim-slide-out-right{animation:slideOutRight .3s cubic-bezier(.4,0,.2,1) forwards}.screen.anim-slide-in-left{animation:slideInLeft .3s cubic-bezier(.4,0,.2,1) forwards}.screen.anim-slide-out-left{animation:slideOutLeft .3s cubic-bezier(.4,0,.2,1) forwards}.screen.anim-slide-in-right{animation:slideInRight .3s cubic-bezier(.4,0,.2,1) forwards}.screen.anim-fade-out{animation:fadeOut .25s ease-out forwards}.screen.anim-fade-in{animation:fadeIn .25s ease-out forwards}@keyframes cardFlyIn{0%{opacity:0;transform:translateY(1.5rem) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.chapter-card{opacity:0;animation:cardFlyIn .35s cubic-bezier(.4,0,.2,1) forwards}.chapter-card:nth-child(1){animation-delay:.04s}.chapter-card:nth-child(2){animation-delay:.08s}.chapter-card:nth-child(3){animation-delay:.12s}.chapter-card:nth-child(4){animation-delay:.16s}.chapter-card:nth-child(5){animation-delay:.2s}@keyframes titleFlyIn{0%{opacity:0;transform:translateY(-1.2rem)}to{opacity:1;transform:translateY(0)}}.start-panel{animation:titleFlyIn .4s cubic-bezier(.4,0,.2,1)}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}@keyframes overlayFadeOut{0%{opacity:1}to{opacity:0}}@keyframes panelFlyIn{0%{opacity:0;transform:translateY(1rem) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes panelFlyOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(.8rem) scale(.97)}}.dialog-open{animation:overlayFadeIn .2s ease-out}.dialog-open .settings-panel,.dialog-open .codex-panel,.dialog-open .confirm-panel,.dialog-open .route-panel{animation:panelFlyIn .25s cubic-bezier(.4,0,.2,1)}.dialog-closing{animation:overlayFadeOut .2s ease-out forwards;pointer-events:none}.dialog-closing .settings-panel,.dialog-closing .codex-panel,.dialog-closing .confirm-panel,.dialog-closing .route-panel{animation:panelFlyOut .2s ease-out forwards}.hud{position:absolute;z-index:2;top:max(1rem,env(safe-area-inset-top));right:max(1rem,env(safe-area-inset-right));display:flex;align-items:center;gap:.5rem}.hud-button{padding:.5rem .75rem;border:1px solid rgb(148 163 184 / 30%);border-radius:.6rem;background:#0f172ad9;color:#e2e8f0;font-size:.85rem;font-weight:700}.hud-gold{padding:.5rem .75rem;border:1px solid rgb(251 191 36 / 35%);border-radius:.6rem;background:#0f172ad9;color:#fbbf24;font-size:.85rem;font-weight:700;font-variant-numeric:tabular-nums;pointer-events:none}.hud-wave{padding:.5rem .75rem;border:1px solid rgb(251 191 36 / 35%);border-radius:.6rem;background:#0f172ad9;color:#fbbf24;font-size:.85rem;font-weight:700;pointer-events:none}.hud-wave[hidden]{display:none}.tutorial-hint{position:fixed;bottom:max(3rem,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:15;max-width:min(20rem,80%);padding:.7rem 1.1rem;border:1px solid rgb(103 232 249 / 45%);border-radius:.7rem;background:#0f172ae5;color:#e2e8f0;font-size:.88rem;font-weight:600;text-align:center;line-height:1.5;box-shadow:0 .4rem 1.2rem #02061799;animation:tutorial-fade-in .3s ease-out}.tutorial-hint[hidden]{display:none}@keyframes tutorial-fade-in{0%{opacity:0;transform:translate(-50%) translateY(.4rem)}to{opacity:1;transform:translate(-50%) translateY(0)}}.visitor-badge{position:fixed;bottom:max(1rem,env(safe-area-inset-bottom));right:max(1rem,env(safe-area-inset-right));z-index:5;padding:.5rem .9rem;border:1px solid rgb(148 163 184 / 30%);border-radius:.5rem;background:#0f172ad9;color:#e2e8f0;font-size:.85rem;font-weight:600;box-shadow:0 .2rem .8rem #0206177f}.visitor-badge[hidden]{display:none}.hud-gold.is-gaining{animation:gold-gain .34s ease-out}@keyframes gold-gain{0%{transform:scale(1)}35%{transform:scale(1.22);border-color:#fde68ae5;color:#fef3c7;box-shadow:0 0 12px #fbbf2499}to{transform:scale(1)}}@media (prefers-reduced-motion: reduce){.hud-gold.is-gaining{animation:none}}@media (hover: hover){.hud-button:hover:not(:disabled){border-color:#67e8f9;background:#334155e5}}.hud-button:disabled{opacity:.4;cursor:not-allowed}.hud-button.is-paused{border-color:#fbbf24;color:#fbbf24}.hud-speed{display:flex;gap:.25rem;padding:.2rem;border-radius:.7rem;background:#0f172ad9}.speed-button{padding:.35rem .6rem;border-color:transparent;background:transparent;font-size:.8rem}.speed-button.is-active{border-color:#67e8f9;background:#67e8f92e;color:#67e8f9}.settings-dialog{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1.5rem;background:#020617c7}.settings-dialog[hidden]{display:none}.settings-panel{width:min(32rem,90%);padding:1.4rem;border:1px solid rgb(148 163 184 / 25%);border-radius:1rem;background:#0f172a;box-shadow:0 1rem 2rem #0206178c}.settings-panel h3{margin:0 0 1rem;color:#67e8f9;font-size:1.05rem;text-align:center}.settings-body{display:flex;gap:0;min-height:16rem;max-height:60vh;border:1px solid rgb(148 163 184 / 15%);border-radius:.6rem;overflow:hidden;margin-bottom:1rem}.settings-sidebar{display:flex;flex-direction:column;min-width:5.5rem;border-right:1px solid rgb(148 163 184 / 15%);background:#0f172a99}.settings-tab{padding:.6rem .8rem;border:none;border-radius:0;background:transparent;color:#94a3b8;font-size:.82rem;font-weight:700;text-align:left;cursor:pointer;transition:background .12s,color .12s}@media (hover: hover){.settings-tab:hover:not(.is-active){background:#33415599;color:#e2e8f0}}.settings-tab.is-active{background:#67e8f91a;color:#67e8f9}.settings-content{flex:1;padding:1rem;overflow-y:auto;-webkit-overflow-scrolling:touch}.settings-tab-content{display:none}.settings-tab-content.is-active{display:block}.about-content{display:flex;flex-direction:column;align-items:center;padding:1rem 0}.about-icon{width:4.5rem;height:4.5rem;margin-bottom:.8rem}.about-title{margin:0 0 .3rem;color:#67e8f9;font-size:1.1rem;font-weight:700}.about-version{margin:0 0 .2rem;color:#94a3b8;font-size:.82rem}.about-link{margin-bottom:.45rem;color:#67e8f9;font-size:.82rem;text-decoration:none}@media (hover: hover){.about-link:hover{text-decoration:underline}}.about-copyright{width:100%;margin:1rem 0 0;padding-top:.8rem;border-top:1px solid rgb(148 163 184 / 15%);color:#94a3b88c;font-size:.7rem;text-align:center;letter-spacing:.03em}.about-changelog-btn{margin-top:.9rem;padding:.5rem 1.4rem;border:1px solid rgb(103 232 249 / 45%);border-radius:.6rem;background:#67e8f91a;color:#67e8f9;font-size:.85rem;font-weight:600}@media (hover: hover){.about-changelog-btn:hover{background:#67e8f938}}.changelog-content{flex:1;padding:1rem 1.2rem 1.4rem;overflow-y:auto;-webkit-overflow-scrolling:touch}.changelog-entry{margin-bottom:1.1rem;padding-bottom:1.1rem;border-bottom:1px solid rgb(148 163 184 / 12%)}.changelog-entry:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.changelog-entry-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.45rem}.changelog-ver{color:#67e8f9;font-size:.95rem;font-weight:700}.changelog-entry:not(.is-latest) .changelog-ver{color:#94a3b8}.changelog-badge{padding:.05rem .4rem;border-radius:.3rem;background:#67e8f92e;color:#67e8f9;font-size:.65rem;font-weight:700}.changelog-date{margin-left:auto;color:#94a3b88c;font-size:.72rem}.changelog-list{margin:0;padding-left:1.1rem;color:#cbd5e1;font-size:.82rem;line-height:1.7}.changelog-list li{margin-bottom:.15rem}.stats-section{width:100%;margin-top:1rem;padding-top:1rem;border-top:1px solid rgb(148 163 184 / 15%)}.stats-title{margin:0 0 .8rem;color:#94a3b8;font-size:.82rem;font-weight:700;text-align:center}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.stats-item{display:flex;flex-direction:column;align-items:center;padding:.6rem;border:1px solid rgb(148 163 184 / 15%);border-radius:.5rem;background:#1e293b7f}.stats-label{color:#64748b;font-size:.72rem;margin-bottom:.2rem}.stats-value{color:#e2e8f0;font-size:.9rem;font-weight:700}.setting-row{display:grid;grid-template-columns:4.5rem 1fr 2.8rem;align-items:center;gap:.6rem;margin-bottom:.9rem}.setting-row label{color:#cbd5e1;font-size:.88rem;font-weight:700}.setting-value{color:#67e8f9;font-size:.82rem;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}.setting-slider{width:100%;height:1.6rem;margin:0;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.setting-slider::-webkit-slider-runnable-track{height:.35rem;border-radius:999px;background:#94a3b84d}.setting-slider::-moz-range-track{height:.35rem;border-radius:999px;background:#94a3b84d}.setting-slider::-webkit-slider-thumb{width:1.1rem;height:1.1rem;margin-top:-.375rem;border:0;border-radius:50%;background:#67e8f9;-webkit-appearance:none;-moz-appearance:none;appearance:none}.setting-slider::-moz-range-thumb{width:1.1rem;height:1.1rem;border:0;border-radius:50%;background:#67e8f9}.setting-slider:focus-visible{outline:2px solid #67e8f9;outline-offset:2px}.setting-hint{margin:0 0 1.1rem;color:#64748b;font-size:.75rem;line-height:1.6}.setting-toggle{display:flex;align-items:center;justify-content:space-between;margin-bottom:.3rem}.setting-toggle label{color:#cbd5e1;font-size:.88rem;font-weight:700}.toggle-button{position:relative;width:2.8rem;height:1.5rem;padding:0;border:1px solid rgb(148 163 184 / 30%);border-radius:999px;background:#334155cc;cursor:pointer;transition:background .2s,border-color .2s}.toggle-button.is-on{background:#67e8f94d;border-color:#67e8f9}.toggle-knob{position:absolute;top:2px;left:2px;width:1.1rem;height:1.1rem;border-radius:50%;background:#94a3b8;transition:transform .2s,background .2s}.toggle-button.is-on .toggle-knob{transform:translate(1.3rem);background:#67e8f9}#settings-close{width:100%}.confirm-dialog{position:fixed;z-index:40;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:1.5rem;background:#020617c7}.confirm-dialog[hidden]{display:none}.confirm-panel{width:min(24rem,100%);padding:1.4rem;border:1px solid rgb(148 163 184 / 25%);border-radius:1rem;background:#0f172a;box-shadow:0 1rem 2rem #0206178c;text-align:center}.confirm-panel h3{margin:0 0 .6rem;color:#fbbf24;font-size:1.05rem}.confirm-panel p{margin:0;color:#cbd5e1;font-size:.88rem;line-height:1.7}.confirm-actions{display:flex;gap:.6rem;margin-top:1.3rem}.confirm-button{flex:1;padding:.6rem .8rem;border:1px solid rgb(148 163 184 / 30%);border-radius:.6rem;background:#1e293be5;color:#e2e8f0;font-size:.86rem;font-weight:700}@media (hover: hover){.confirm-button:hover{border-color:#67e8f9;background:#334155f2}}.confirm-button.is-danger{border-color:#ef44448c;color:#fca5a5}@media (hover: hover){.confirm-button.is-danger:hover{border-color:#ef4444;background:#7f1d1d8c;color:#fee2e2}}.confirm-button:focus-visible{outline:2px solid #67e8f9;outline-offset:2px}.transfer-content{margin:1rem 0;text-align:left}.transfer-section{padding:.8rem 0}.transfer-label{margin:0 0 .3rem;color:#e2e8f0;font-size:.95rem;font-weight:700}.transfer-desc{margin:0 0 .6rem;color:#94a3b8;font-size:.8rem;line-height:1.5}.transfer-section button{width:100%;padding:.6rem 1rem;border:1px solid rgb(148 163 184 / 30%);border-radius:.6rem;background:#1e293be5;color:#e2e8f0;font-size:.86rem;font-weight:700}@media (hover: hover){.transfer-section button:hover{border-color:#67e8f9;background:#334155f2}}.transfer-section button.button-danger{border-color:#ef44448c;color:#fca5a5}@media (hover: hover){.transfer-section button.button-danger:hover{border-color:#ef4444;background:#7f1d1d8c;color:#fee2e2}}.transfer-divider{height:1px;margin:.5rem 0;background:#94a3b826}#game{width:100%;height:100%;display:grid;place-items:center}#game canvas{display:block;max-width:100%;max-height:100%;touch-action:none}.hud-menu{position:relative}.hud-button.is-open{border-color:#67e8f9;color:#67e8f9}.menu-panel{position:absolute;z-index:3;top:calc(100% + .4rem);right:0;display:grid;gap:.3rem;min-width:9rem;padding:.4rem;border:1px solid rgb(148 163 184 / 30%);border-radius:.6rem;background:#0f172af2;box-shadow:0 .6rem 1.2rem #02061773}.menu-panel[hidden]{display:none}.menu-panel.dialog-open{animation:panelFlyIn .2s cubic-bezier(.4,0,.2,1)}.menu-panel.dialog-closing{animation:panelFlyOut .15s ease-out forwards;pointer-events:none}.menu-item{padding:.5rem .7rem;border-radius:.45rem;background:transparent;color:#e2e8f0;text-align:left;font-size:.85rem;font-weight:700}@media (hover: hover){.menu-item:hover{background:#334155e5;color:#67e8f9}}@media (pointer: coarse){button{padding:.9rem 1.4rem}.hud-button{padding:.7rem .9rem;font-size:.95rem}.speed-button{padding:.55rem .8rem;font-size:.9rem}.menu-item{padding:.7rem .9rem;font-size:.95rem}.menu-panel{min-width:10.5rem}.settings-sidebar{min-width:6rem}.settings-tab{padding:.7rem .9rem;font-size:.9rem}.chapter-card{padding:1.1rem 1rem}.confirm-button{padding:.8rem .9rem;font-size:.92rem}.setting-slider::-webkit-slider-thumb{width:1.5rem;height:1.5rem;margin-top:-.575rem}.setting-slider::-moz-range-thumb{width:1.5rem;height:1.5rem}.setting-slider{height:2rem}.codex-grid{grid-template-columns:repeat(auto-fill,minmax(8rem,1fr))}.codex-item img{width:3.5rem;height:3.5rem}}body.is-forced-landscape{overflow:hidden}body.is-forced-landscape #app{position:fixed;top:0;left:0;width:100vh;width:100dvh;height:100vw;height:100dvw;transform:rotate(90deg) translateY(-100%);transform-origin:top left}body.is-forced-landscape .hud{top:max(1rem,env(safe-area-inset-left));right:max(1rem,env(safe-area-inset-bottom))}body.is-forced-landscape .confirm-dialog,body.is-forced-landscape .settings-dialog,body.is-forced-landscape .route-dialog,body.is-forced-landscape .rotate-hint{position:absolute}.rotate-hint{display:none}.rotate-hint.is-visible{position:fixed;z-index:40;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:2rem;background:#020617;text-align:center}.rotate-panel{width:min(20rem,100%)}.rotate-panel h3{margin:.75rem 0 .5rem;color:#67e8f9;font-size:1.15rem}.rotate-panel p{margin:0;color:#94a3b8;font-size:.9rem;line-height:1.7}.rotate-enter{margin-top:1.4rem;padding:.8rem 1.1rem;border:1px solid rgb(103 232 249 / 45%);border-radius:.6rem;background:#1e293be5;color:#e2e8f0;font-size:.88rem}.rotate-note{margin-top:.8rem;color:#94a3b8bf;font-size:.78rem}.rotate-icon{font-size:3.5rem;line-height:1;animation:rotate-nudge 2s ease-in-out infinite}@keyframes rotate-nudge{0%,20%{transform:rotate(0)}50%,70%{transform:rotate(-90deg)}to{transform:rotate(0)}}@media (prefers-reduced-motion: reduce){.rotate-icon{animation:none;transform:rotate(-90deg)}}
