:root{--bg: #070910;--bg-2: #0c101a;--surface: rgba(20, 25, 39, .76);--surface-2: rgba(30, 37, 56, .9);--surface-3: rgba(42, 50, 73, .82);--border: rgba(224, 230, 255, .1);--border-highlight: rgba(255, 255, 255, .12);--text: #f5f7ff;--text-dim: #a8b0c4;--text-faint: #737d94;--accent: #8b6cff;--accent-2: #23d5c3;--glow: #aa94ff;--good: #40d6a0;--warn: #f7b955;--bad: #ff6580;--grad: linear-gradient(135deg, #8b6cff 0%, #7167e8 46%, #23d5c3 100%);--grad-warm: linear-gradient(135deg, #ff668c 0%, #ff9f66 100%);--radius-sm: 12px;--radius: 18px;--radius-lg: 26px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--spring: .3s cubic-bezier(.2, .8, .2, 1.12);--font: "Outfit", system-ui, sans-serif;--mono: "JetBrains Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:linear-gradient(160deg,#101526 0%,var(--bg) 44%,#090c15 100%);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(45% 35% at 12% -5%,rgba(139,108,255,.2),transparent 62%),radial-gradient(45% 38% at 92% 4%,rgba(35,213,195,.12),transparent 60%),radial-gradient(50% 42% at 50% 108%,rgba(113,103,232,.1),transparent 65%);pointer-events:none;z-index:0}.app{position:relative;z-index:1;height:100%;max-width:520px;margin:0 auto;display:flex;flex-direction:column}.app-shell{padding:18px 18px 0;gap:var(--space-3)}.screen{flex:1;overflow-y:auto;padding:28px 22px 110px;animation:screenIn .32s cubic-bezier(.2,.8,.2,1);scrollbar-width:thin;scrollbar-color:var(--surface-2) transparent}.app-shell .screen{width:100%;padding:10px 4px 30px}@keyframes screenIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}h1{font-size:clamp(34px,8vw,44px);font-weight:850;letter-spacing:-.045em;line-height:.98}h2{font-size:24px;font-weight:780;letter-spacing:-.025em;line-height:1.12}h3{font-size:16px;font-weight:720;letter-spacing:-.01em;line-height:1.25}.dim{color:var(--text-dim)}.faint{color:var(--text-faint)}.guide-skip{min-height:48px;margin-top:10px;padding:11px 20px;border:1px solid rgba(255,255,255,.42);border-radius:999px;background:#0a0a14b8;color:var(--text);font:inherit;font-size:15px;font-weight:800;cursor:pointer}.guide-skip:focus-visible{outline:3px solid var(--glow);outline-offset:3px}.live-guidance{padding:12px 14px;border:1px solid rgba(167,139,250,.42);border-radius:14px;background:#5537912e;color:var(--text);font-size:13px;line-height:1.45;text-align:center}.pronunciation-guidance{display:flex;flex-direction:column;gap:5px;padding:12px 14px;border:1px solid rgba(52,211,153,.38);border-radius:14px;background:#106e5221;font-size:13px;line-height:1.4;text-align:center}.pronunciation-guidance span{color:var(--text-faint);font-size:11px}.small{font-size:13px}.mono{font-family:var(--mono)}.gradient-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.eyebrow{color:#ffffffa3;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;backdrop-filter:blur(20px) saturate(130%);-webkit-backdrop-filter:blur(20px) saturate(130%);box-shadow:inset 0 1px 0 var(--border-highlight),0 16px 40px #0003}.card.press{cursor:pointer;transition:transform var(--spring),background .2s ease,border-color .2s ease,box-shadow .2s ease}.card.press:hover{background:var(--surface-2);border-color:#aa94ff4d;transform:translateY(-2px)}.card.press:active{transform:translateY(0) scale(.985)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font);font-size:16px;font-weight:700;color:#fff;background:var(--grad);border:none;border-radius:14px;min-height:52px;padding:14px 24px;cursor:pointer;width:100%;transition:transform var(--spring),box-shadow .2s ease,filter .2s ease;box-shadow:0 12px 30px #705ceb4d}.btn:hover{filter:brightness(1.08) saturate(1.08);box-shadow:0 16px 36px #705ceb61;transform:translateY(-1px)}.btn:active{transform:translateY(0) scale(.98)}.btn:disabled{opacity:.4;cursor:default;box-shadow:none}.btn.ghost{background:#1c2233b3;border:1px solid var(--border);box-shadow:none;color:var(--text);font-weight:600}.btn.ghost:hover{background:var(--surface-3)}.mini-panel{border:1px solid var(--border);border-radius:12px;background:#07091052;padding:10px;min-width:0}.app-top-card{position:relative;isolation:isolate;overflow:hidden;flex:0 0 auto;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);color:#fff;padding:22px;background:radial-gradient(circle at 92% 16%,rgba(35,213,195,.18),transparent 25%),linear-gradient(135deg,#11162a,#252044 58%,#183d43);box-shadow:inset 0 1px #ffffff1f,0 22px 48px #00000057}.app-top-card:after{content:"";position:absolute;z-index:-1;inset:20% -8% auto 42%;height:74px;opacity:.13;transform:rotate(-5deg);background:repeating-linear-gradient(to bottom,rgba(255,255,255,.72) 0 1px,transparent 1px 13px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 30%,#000 76%,transparent);mask-image:linear-gradient(90deg,transparent,#000 30%,#000 76%,transparent)}.top-main{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.top-main h1{margin-top:5px;font-size:32px;color:#fff}.top-subtitle{margin-top:8px;color:#ffffffb8;font-size:15px;letter-spacing:.02em}.top-actions{display:flex;align-items:center;gap:10px}.round-action,.avatar{width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.42);display:inline-flex;align-items:center;justify-content:center;color:var(--text);background:#ffffff1a;box-shadow:inset 0 0 0 1px #ffffff73}.round-action{cursor:pointer;font-size:21px;transition:transform var(--spring),background .2s ease}.round-action:hover{background:#ffffff2e;transform:translateY(-1px)}.avatar{color:#fff;background:var(--grad);font-size:24px;font-weight:900}.top-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:22px}.top-stats>div{min-width:0;border:1px solid rgba(255,255,255,.14);border-radius:19px;padding:13px;background:#0709102e;box-shadow:inset 0 1px #ffffff0f}.top-stats span{display:block;color:#fff9;font-size:12px;font-weight:700}.top-stats b{display:block;margin-top:6px;color:#fff;font-size:18px;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize;white-space:nowrap}.top-tab-rail{flex:0 0 auto;display:flex;gap:12px;overflow-x:auto;padding:0 0 2px;scrollbar-width:none}.top-tab-rail::-webkit-scrollbar{display:none}.top-tab-rail button{flex:0 0 auto;min-width:112px;min-height:62px;border:1px solid var(--border);border-radius:var(--radius);background:#131826c2;color:var(--text);font-family:var(--font);font-size:16px;font-weight:900;letter-spacing:.02em;display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:inset 0 1px #ffffff14,0 10px 28px #0000002e;position:relative;transition:transform var(--spring),border-color .2s ease,background .2s ease}.top-tab-rail button:hover{border-color:#aa94ff47;transform:translateY(-1px)}.top-tab-rail button.active{color:#fff;background:linear-gradient(135deg,#8b6cffe0,#5948bee6);border-color:#bfb2ff6b;box-shadow:0 10px 28px #6a54dd47}.top-tab-rail .icon{font-size:20px}.lock-dot{position:absolute;top:8px;right:10px;color:var(--accent);font-size:9px}.top-tab-rail button.active .lock-dot{color:#7de0ce}.tab-stage{flex:1;min-height:0;display:flex;overflow:hidden;touch-action:pan-y}.nav{position:absolute;bottom:0;left:0;right:0;display:flex;padding:10px 14px calc(14px + env(safe-area-inset-bottom));background:#090c14db;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:1px solid var(--border);z-index:10}.nav button{flex:1;background:none;border:none;color:var(--text-faint);font-family:var(--font);font-size:11px;font-weight:600;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 0;transition:color .2s}.nav button .icon{font-size:21px;transition:transform .2s;filter:grayscale(1) opacity(.6)}.nav button.active{color:var(--glow)}.nav button.active .icon{transform:translateY(-2px) scale(1.12);filter:none}.stat-row{display:flex;gap:10px}.stat{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:13px 8px;text-align:center;box-shadow:inset 0 1px 0 var(--border-highlight)}.stat .value{font-size:21px;font-weight:800}.stat .label{font-size:11px;color:var(--text-dim);margin-top:2px;letter-spacing:.04em;text-transform:uppercase}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:100px;font-size:12px;font-weight:600;background:#272e44bd;border:1px solid var(--border)}a.chip{color:var(--text);text-decoration:none}a.chip:hover{border-color:#a78bfa6b;background:#ffffff1c}.plan-step{width:100%;display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#080b1347;color:var(--text);text-align:left;cursor:pointer;transition:transform var(--spring),border-color .2s ease,background .2s ease}.plan-step:hover{border-color:#aa94ff61;background:#2d344c99;transform:translate(2px)}.plan-index{width:28px;height:28px;flex:0 0 28px;display:grid;place-items:center;border-radius:999px;background:#8b6cff2e;color:var(--glow);font-weight:800;font-size:13px}.plan-step b{display:block;font-size:13px;line-height:1.2}.plan-step small{display:block;color:var(--text-faint);font-size:11px;line-height:1.35;margin-top:3px}.plan-action{color:var(--glow);font-size:11px;font-weight:800;white-space:nowrap}.readiness-card{display:flex;align-items:center;gap:14px;padding:16px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(135deg,#1c2234e0,#0f1421d1),radial-gradient(circle at 0% 0%,rgba(139,108,255,.22),transparent 42%);-webkit-backdrop-filter:blur(20px) saturate(130%);backdrop-filter:blur(20px) saturate(130%);box-shadow:inset 0 1px 0 var(--border-highlight),0 16px 40px #0003}.readiness-ring{--score: 0;width:74px;height:74px;flex:0 0 74px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at center,#171c2b 0 58%,transparent 59%),conic-gradient(var(--accent) calc(var(--score) * 1%),rgba(255,255,255,.08) 0);color:var(--text);font-weight:900;box-shadow:inset 0 0 0 1px var(--border)}.readiness-ring span{font-size:21px;line-height:1}.readiness-ring small{margin-top:-22px;font-size:10px;color:var(--text-faint)}.status-pill{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.status-pill.warn{color:#ffd493;background:#ef9b352e}.status-pill.danger{color:#ff9bae;background:#e3405729}.readiness-list{display:grid;gap:3px;margin-top:9px}.readiness-list p{color:var(--text-dim);font-size:11px;line-height:1.35}.trust-grid{display:grid;grid-template-columns:1fr;gap:8px;margin-top:14px}.trust-item{display:flex;gap:9px;align-items:flex-start;padding:10px;border-radius:12px;background:#ffffff0a;color:var(--text-dim);font-size:12px;line-height:1.45}.trust-item b{display:block;color:var(--text);font-size:12px}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border-radius:14px;background:#ffffff0a;border:1px solid var(--border)}.segmented button{min-height:38px;border:none;border-radius:10px;background:transparent;color:var(--text-dim);font-family:var(--font);font-weight:700;font-size:12px;cursor:pointer}.segmented button.active{background:var(--surface-2);color:var(--text);box-shadow:inset 0 0 0 1px #ffffff14}.admin-panel{display:flex;flex-direction:column;gap:14px}.upgrade-hero{padding:24px}.upgrade-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:var(--grad);color:#fff;font-size:12px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;margin-bottom:14px}.reward-control{display:grid;grid-template-columns:1fr;gap:8px}.reward-control input[type=range],input[type=range]{width:100%;accent-color:var(--accent)}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0 2px}.toggle-row span{display:flex;flex-direction:column;gap:3px}.toggle-row input{width:22px;height:22px;accent-color:var(--accent)}.bar{height:8px;border-radius:100px;background:#ffffff14;overflow:hidden}.bar>div{height:100%;border-radius:100px;background:var(--grad);transition:width .6s cubic-bezier(.22,1,.36,1)}.pitch-canvas-wrap{position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);background:#00000059}canvas{display:block;width:100%}.live-note{position:absolute;top:14px;right:14px;font-family:var(--mono);font-size:22px;font-weight:600;padding:6px 14px;border-radius:12px;background:#00000080;border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);min-width:76px;text-align:center}.lyrics-strip{min-height:92px;border:1px solid var(--border);border-radius:16px;padding:14px 16px;background:linear-gradient(180deg,#ffffff13,#ffffff09);text-align:center}.lyrics-current{min-height:38px;font-size:32px;font-weight:800;line-height:1.15;color:var(--text)}.lyrics-line{margin-top:8px;color:var(--text-dim);font-size:14px;line-height:1.45;overflow-wrap:anywhere}.countdown-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#0a0a148c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:5}.countdown-overlay .big{font-size:64px;font-weight:800;animation:pop .5s ease}@keyframes pop{0%{transform:scale(.5);opacity:0}60%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}.score-ring{position:relative;isolation:isolate;width:190px;height:190px;margin:0 auto}.score-ring:before{content:"";position:absolute;z-index:-1;top:32px;right:-72px;bottom:32px;left:-72px;opacity:.16;background:repeating-linear-gradient(to bottom,rgba(170,148,255,.72) 0 1px,transparent 1px 13px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 28%,#000 72%,transparent);mask-image:linear-gradient(90deg,transparent,#000 28%,#000 72%,transparent)}.score-ring svg{transform:rotate(-90deg)}.score-ring .num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.score-ring .num .val{font-size:58px;font-weight:850;letter-spacing:-.055em}.home-screen>.fade-up:first-child{padding:4px 2px 2px}.home-secondary{filter:saturate(.58);box-shadow:inset 0 1px 0 var(--border-highlight)}.home-secondary:hover{filter:saturate(.9)}.home-primary{border-color:#aa94ff61!important;box-shadow:inset 0 1px #ffffff29,0 20px 50px #5b47c842}.home-primary h3{font-size:19px}.home-library{padding-top:8px}.results-screen>.fade-up:first-child{padding-top:4px}.results-screen .score-ring+.fade-up h2{font-size:28px}.repair-card{border-color:#40d6a06b!important;box-shadow:inset 0 1px #ffffff24,0 20px 50px #197f6529}.result-actions{padding-top:6px}.result-actions>div .btn{min-height:46px;padding-inline:12px;font-size:14px}.screen-fallback{flex:1;display:grid;place-items:center;min-height:180px}.loading-spinner{width:24px;height:24px;border:2px solid rgba(255,255,255,.14);border-top-color:var(--accent-2);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.divider{height:1px;background:var(--border);margin:18px 0}.pulse-dot{width:10px;height:10px;border-radius:50%;background:var(--good);animation:pulse 1.4s ease infinite}@keyframes pulse{0%,to{box-shadow:0 0 #34d39980}50%{box-shadow:0 0 0 9px #34d39900}}input[type=text],select,textarea{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:15px 18px;color:var(--text);font-family:var(--font);font-size:16px;outline:none;transition:border-color .2s,box-shadow .2s}select{display:block;margin-top:6px;padding:12px 14px;cursor:pointer}textarea{resize:vertical;min-height:118px;line-height:1.45}input[type=text]:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #8b6cff24}.brand-lockup{display:inline-flex;align-items:center;gap:9px;width:fit-content}.brand-mark{display:inline-flex;overflow:hidden;flex:0 0 auto;border-radius:29%;box-shadow:0 12px 36px #ff5c7033}.brand-mark img{width:100%;height:100%;display:block}.brand-wordmark{color:var(--text);font-size:18px;font-weight:800;letter-spacing:-.4px}.brand-hero{display:inline-flex;width:fit-content;max-width:100%;overflow:hidden;padding:8px;border-radius:22px;background:#fcfbfc;box-shadow:0 18px 48px #7b4bff2e}.brand-hero img{display:block;max-width:100%;height:auto}.top-brand{margin-bottom:5px}.fade-up.brand-lockup{animation:float 4s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.fade-up{animation:screenIn .42s cubic-bezier(.2,.8,.2,1) both}.d1{animation-delay:.06s}.d2{animation-delay:.12s}.d3{animation-delay:.18s}.d4{animation-delay:.24s}@media (min-width: 720px){.app{max-width:640px}}@media (max-width: 430px){.app-shell{padding:14px 12px 0;gap:12px}.app-top-card{border-radius:28px;padding:18px}.top-main h1{font-size:26px}.top-actions{gap:7px}.round-action,.avatar{width:46px;height:46px}.top-tab-rail button{min-width:102px;min-height:58px}.top-stats{gap:8px}.top-stats>div{padding:11px 9px}.top-stats b{font-size:16px}}:focus-visible{outline:2px solid var(--glow);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}.icon-btn{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:17px;color:var(--text);transition:transform var(--spring),background .2s,border-color .2s}.icon-btn:hover{background:var(--surface-2);border-color:#aa94ff4d;transform:rotate(4deg)}.heatmap{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:3px}.heatmap div{aspect-ratio:1;border-radius:3px;background:#ffffff0d}.heatmap .h1{background:#8b5cf659}.heatmap .h2{background:#8b5cf6a6}.heatmap .h3{background:#a78bfa;box-shadow:0 0 6px #a78bfa80}
