.boot{height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg)}.boot-logo{font-size:48px;animation:boot-pulse 1.1s ease-in-out infinite}@keyframes boot-pulse{0%,to{transform:scale(1);opacity:.85}50%{transform:scale(1.08);opacity:1}}@media(prefers-reduced-motion:reduce){.boot-logo{animation:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--radius-pill);cursor:pointer;font-weight:700;letter-spacing:.01em;transition:transform .12s var(--ease-spring),background-color .15s var(--ease-out),opacity .15s;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.96)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-lg{padding:17px 28px;font-size:17px;min-height:56px}.btn-md{padding:13px 22px;font-size:15px;min-height:46px}.btn-sm{padding:9px 16px;font-size:13px;min-height:36px}.btn-full{width:100%}.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 20px -6px #34f0a58c}.btn-primary:hover{background:var(--accent-strong)}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border-strong)}.btn-ghost{background:transparent;color:var(--text-dim)}.btn-ghost:hover{color:var(--text)}.btn-danger{background:#ff5d6c24;color:var(--danger)}.btn-icon{display:inline-flex;font-size:1.1em}.screen{height:100%;width:100%;padding:calc(var(--safe-top) + 18px) calc(var(--safe-right) + 20px) calc(var(--safe-bottom) + 18px) calc(var(--safe-left) + 20px);display:flex;flex-direction:column;overflow-y:auto;animation:screen-in .28s var(--ease-out)}.screen-flush{padding:0}.screen-center{justify-content:center;align-items:center;text-align:center}@keyframes screen-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.screen{animation:none}}.home{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;max-width:340px}.home-logo{font-size:64px;line-height:1;margin-bottom:4px;filter:drop-shadow(0 8px 20px rgba(52,240,165,.25))}.home-title{margin:0;font-size:34px;font-weight:900;letter-spacing:.06em;background:linear-gradient(180deg,var(--text),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}.home-progress{margin:4px 0 28px;color:var(--text-dim);font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.home-actions{display:flex;flex-direction:column;gap:12px;width:100%}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:18px;cursor:pointer;transition:transform .12s var(--ease-spring),background-color .15s;-webkit-tap-highlight-color:transparent}.icon-btn:active{transform:scale(.92)}.star-row{display:inline-flex;gap:2px}.star-row-sm{font-size:15px}.star-row-lg{font-size:40px;gap:8px}.star{color:var(--star-off);transition:color .2s var(--ease-out)}.star-on{color:var(--star-on);text-shadow:0 0 14px rgba(255,210,87,.55)}.star[data-animate=true]{animation:star-pop .5s var(--ease-spring) backwards}@keyframes star-pop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.3);opacity:1}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.star[data-animate=true]{animation:none}}.levels-header{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 14px) calc(var(--safe-right) + 16px) 12px calc(var(--safe-left) + 16px)}.levels-header-title{display:flex;flex-direction:column;align-items:center;font-size:14px}.levels-header-title strong{font-size:17px}.levels-header-title span{color:var(--text-dim);font-size:12px;font-variant-numeric:tabular-nums}.levels-scroll{flex:1;overflow-y:auto;padding:4px calc(var(--safe-right) + 20px) calc(var(--safe-bottom) + 28px) calc(var(--safe-left) + 20px)}.world-block{margin-bottom:32px}.world-heading{display:flex;flex-direction:column;margin-bottom:18px}.world-name{font-size:20px;font-weight:800}.world-subtitle{font-size:13px;color:var(--text-dim)}.world-locked{color:var(--text-faint);background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:20px;text-align:center;font-weight:600}.level-path{display:flex;flex-direction:column;gap:0}.level-row{display:flex;align-items:center;gap:14px}.level-row-right{flex-direction:row-reverse;text-align:right}.level-node{flex-shrink:0;width:56px;height:56px;border-radius:50%;border:2px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:19px;font-weight:800;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s var(--ease-spring)}.level-node.is-unlocked{background:var(--surface-alt);box-shadow:0 0 0 4px #34f0a514}.level-node.is-next{animation:node-pulse 1.8s ease-in-out infinite}.level-node.is-locked{color:var(--text-faint);cursor:not-allowed}.level-node:active:not(:disabled){transform:scale(.92)}.level-meta{display:flex;flex-direction:column;gap:4px}.level-row-right .level-meta{align-items:flex-end}.level-name{font-size:14px;font-weight:700}.level-locked-label{font-size:12px;color:var(--text-faint)}.level-connector{width:2px;height:26px;background:var(--border-strong);margin-left:27px}.level-connector-right{margin-left:0;margin-right:27px;align-self:flex-end}@keyframes node-pulse{0%,to{box-shadow:0 0 0 4px #34f0a51f}50%{box-shadow:0 0 0 9px #34f0a50d}}@media(prefers-reduced-motion:reduce){.level-node.is-next{animation:none}}.game-canvas-wrap{flex:1;min-height:0;display:flex;touch-action:none;overscroll-behavior:none}.game-canvas{display:block;margin:auto}.hud{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(var(--safe-top) + 10px) calc(var(--safe-right) + 16px) 10px calc(var(--safe-left) + 16px)}.hud-score{display:inline-flex;align-items:center;gap:6px;font-size:19px;font-weight:800;font-variant-numeric:tabular-nums}.hud-score-icon{color:var(--star-on);font-size:16px}.hud-objective{font-size:13.5px;font-weight:600;color:var(--text-dim);background:var(--surface);border:1px solid var(--border);padding:6px 12px;border-radius:var(--radius-pill);font-variant-numeric:tabular-nums;white-space:nowrap}.modal-scrim{position:absolute;inset:0;background:#04080eb8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:24px;animation:scrim-in .18s var(--ease-out);z-index:20}.modal-card{width:100%;max-width:340px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:28px 24px;box-shadow:var(--shadow-2);display:flex;flex-direction:column;gap:16px;animation:card-in .22s var(--ease-spring)}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}@keyframes card-in{0%{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.modal-scrim,.modal-card{animation:none}}.result{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;max-width:340px}.result-kicker{font-size:13px;font-weight:700;min-height:16px;text-transform:uppercase;letter-spacing:.04em}.result-title{margin:0 0 6px;font-size:28px;font-weight:900;letter-spacing:.02em}.result-record{background:var(--accent-soft);color:var(--accent);font-weight:800;padding:8px 16px;border-radius:var(--radius-pill);margin-bottom:14px;animation:record-pop .5s var(--ease-spring)}.result-stars{margin-bottom:10px}.result-stats{display:flex;gap:10px;width:100%;margin:14px 0 30px}.result-stat{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:4px}.result-stat-value{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}.result-stat-label{font-size:11.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.03em}.result-actions{display:flex;flex-direction:column;gap:12px;width:100%}@keyframes record-pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.result-record{animation:none}}.lb-header{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 14px) calc(var(--safe-right) + 16px) 12px calc(var(--safe-left) + 16px);font-size:17px}.lb-note{padding:0 calc(var(--safe-right) + 20px) 12px calc(var(--safe-left) + 20px);color:var(--text-dim);font-size:13px}.lb-list{flex:1;overflow-y:auto;padding:0 calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 20px) calc(var(--safe-left) + 16px);display:flex;flex-direction:column;gap:8px}.lb-row{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 16px}.lb-row-you{border-color:var(--accent);background:var(--accent-soft)}.lb-rank{width:26px;font-weight:800;color:var(--text-dim);font-variant-numeric:tabular-nums}.lb-name{flex:1;font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-score{font-weight:800;font-variant-numeric:tabular-nums}.profile-header{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 14px) calc(var(--safe-right) + 16px) 12px calc(var(--safe-left) + 16px);font-size:17px}.profile-body{flex:1;display:flex;flex-direction:column;align-items:center;padding:12px 20px calc(var(--safe-bottom) + 20px);gap:14px}.profile-avatar{width:76px;height:76px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:30px;font-weight:800;display:flex;align-items:center;justify-content:center;border:2px solid var(--accent)}.profile-name{margin:0;font-size:20px}.profile-stats{width:100%;max-width:340px;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.profile-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;display:flex;flex-direction:column;gap:6px}.profile-stat-value{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.profile-stat-label{font-size:12px;color:var(--text-dim)}.settings-header{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 14px) calc(var(--safe-right) + 16px) 12px calc(var(--safe-left) + 16px);font-size:17px}.settings-body{flex:1;overflow-y:auto;padding:4px calc(var(--safe-right) + 20px) calc(var(--safe-bottom) + 24px) calc(var(--safe-left) + 20px);display:flex;flex-direction:column;gap:26px}.settings-section h3{margin:0 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint)}.settings-section{display:flex;flex-direction:column;gap:10px}.setting-row{display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;font-size:15px;font-weight:600}.toggle{width:46px;height:28px;border-radius:var(--radius-pill);border:none;background:var(--border-strong);position:relative;cursor:pointer;transition:background-color .15s;flex-shrink:0}.toggle-on{background:var(--accent)}.toggle-knob{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .18s var(--ease-spring)}.toggle-on .toggle-knob{transform:translate(18px)}.settings-hint{font-size:13.5px;color:var(--text-dim);margin:0}.settings-link{align-self:flex-start;background:none;border:none;color:var(--text-dim);text-decoration:underline;font-size:13.5px;cursor:pointer;padding:4px 0}.settings-confirm{background:#ff5d6c14;border:1px solid rgba(255,93,108,.3);border-radius:var(--radius-md);padding:14px;display:flex;flex-direction:column;gap:12px}.settings-confirm p{margin:0;font-size:13.5px}.settings-confirm-actions{display:flex;gap:10px}.auth{position:relative;width:100%;max-width:340px;display:flex;flex-direction:column;gap:6px}.auth-back{position:absolute;top:-52px;left:0}.auth-title{margin:0;font-size:24px;font-weight:800}.auth-subtitle{color:var(--text-dim);font-size:13.5px;margin:0 0 20px;line-height:1.5}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-input{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:15px 16px;color:var(--text);font-size:15px;-webkit-user-select:text;user-select:text}.auth-input:focus{outline:2px solid var(--accent);outline-offset:-1px}.auth-error{color:var(--danger);font-size:13px;margin:-4px 0 0}.auth-switch{background:none;border:none;color:var(--text-dim);font-size:13.5px;margin-top:18px;cursor:pointer;text-decoration:underline}.privacy-header{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--safe-top) + 14px) calc(var(--safe-right) + 16px) 12px calc(var(--safe-left) + 16px);font-size:17px}.privacy-body{flex:1;overflow-y:auto;padding:4px calc(var(--safe-right) + 20px) calc(var(--safe-bottom) + 24px) calc(var(--safe-left) + 20px);font-size:14px;line-height:1.6;color:var(--text-dim)}.privacy-body h3{color:var(--text);font-size:14px;margin:20px 0 6px}.privacy-body p{margin:0 0 4px}.network-badge{position:fixed;top:calc(var(--safe-top) + 10px);left:50%;transform:translate(-50%);display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;background:var(--surface);border:1px solid var(--border-strong);color:var(--text-dim);z-index:30;animation:badge-in .2s var(--ease-out);pointer-events:none}.network-dot{width:6px;height:6px;border-radius:50%;background:var(--warning)}.is-syncing .network-dot{background:var(--accent)}.is-offline .network-dot{background:var(--text-faint)}@keyframes badge-in{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}.install-banner{position:fixed;left:calc(var(--safe-left) + 14px);right:calc(var(--safe-right) + 14px);bottom:calc(var(--safe-bottom) + 14px);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:14px 14px 14px 16px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-2);font-size:13.5px;color:var(--text-dim);z-index:25;animation:banner-in .25s var(--ease-out)}.install-banner-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.install-banner-cta{background:var(--accent);color:var(--accent-ink);border:none;border-radius:var(--radius-pill);padding:8px 14px;font-weight:700;font-size:13px;cursor:pointer}.install-banner-dismiss{background:transparent;border:none;color:var(--text-faint);font-size:15px;cursor:pointer;padding:4px}@keyframes banner-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}:root{color-scheme:dark;--bg: #070c14;--bg-elevated: #0d1420;--surface: #121b2b;--surface-alt: #17233682;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--text: #f4f7fb;--text-dim: #93a1b8;--text-faint: #5b6a84;--accent: #34f0a5;--accent-strong: #1fd693;--accent-ink: #04241a;--accent-soft: rgba(52, 240, 165, .14);--danger: #ff5d6c;--warning: #f5c451;--star-on: #ffd257;--star-off: #2b3547;--radius-sm: 10px;--radius-md: 16px;--radius-lg: 24px;--radius-pill: 999px;--shadow-1: 0 2px 10px rgba(0, 0, 0, .25);--shadow-2: 0 12px 32px rgba(0, 0, 0, .35);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1)}*{box-sizing:border-box}html,body{height:100%;overscroll-behavior:none}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}#root{height:100dvh;width:100%;overflow:hidden;position:relative}button{font:inherit;color:inherit}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
