:root{--brand:#7f3f98;--brand-1:#7f3f98;--brand-2:#7f3f98;--brand-3:#de58ea;--brand-grad:linear-gradient(135deg, #7f3f98, #7f3f98);--brand-deco:linear-gradient(135deg, #de58ea 0%, #8d43a4 100%);--brand-soft:#f3ebf6;--brand-ink:#6a2f81;--logo:#7f3f98;--bg:#fff;--bg-app:#f4f4f6;--surface:#fff;--surface-2:#f5f5f5;--border:#eee;--text:#212121;--text-2:#616161;--text-3:#9e9e9e;--success:#1f9d61;--success-soft:#e3f6ec;--warning:#b7791f;--warning-soft:#fdf3e1;--danger:#e5484d;--danger-soft:#fde8ea;--star:#fb9400;--radius-sm:10px;--radius:16px;--radius-lg:24px;--pill:999px;--shadow:0 4px 30px #04060f0d;--shadow-strong:4px 8px 24px #7f3f9840;--font-body:"Urbanist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display:"Urbanist", system-ui, -apple-system, "Segoe UI", sans-serif;--nav-h:68px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--brand-2:#c58ad9;--brand-soft:#2c2033;--brand-ink:#e0bdec;--logo:#fff;--bg:#181a20;--bg-app:#101115;--surface:#1f222a;--surface-2:#262a35;--border:#35383f;--text:#fff;--text-2:#c9c9cf;--text-3:#8e8e96;--success-soft:#133325;--warning-soft:#3a2a10;--danger-soft:#3d1419;--shadow:0 4px 30px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--brand-2:#c58ad9;--brand-soft:#2c2033;--brand-ink:#e0bdec;--logo:#fff;--bg:#181a20;--bg-app:#101115;--surface:#1f222a;--surface-2:#262a35;--border:#35383f;--text:#fff;--text-2:#c9c9cf;--text-3:#8e8e96;--success-soft:#133325;--warning-soft:#3a2a10;--danger-soft:#3d1419;--shadow:0 4px 30px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg-app);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-size:15px;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);margin:0;font-weight:700;line-height:1.2}h1{letter-spacing:-.01em;font-size:36px}h2{font-size:24px}h3{font-size:19px}h4{font-size:16px}p{margin:0}a{color:var(--brand-2);font-weight:700;text-decoration:none}button{font:inherit;color:inherit}img{max-width:100%;display:block}.shell{background:var(--bg);flex-direction:column;max-width:480px;min-height:100%;margin:0 auto;display:flex;position:relative}@media (width>=520px){.shell{box-shadow:0 0 0 1px var(--border), 0 20px 60px #00000014}}.shell.wide{max-width:860px}.screen{flex-direction:column;flex:1;gap:16px;padding:16px 20px 24px;display:flex}.screen.with-nav{padding-bottom:calc(var(--nav-h) + 24px + env(safe-area-inset-bottom))}.screen.center{text-align:center;justify-content:center;align-items:center}.screen.no-pad{padding:0}.spacer{flex:1}.stack{flex-direction:column;gap:12px;display:flex}.stack-lg{flex-direction:column;gap:20px;display:flex}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.muted{color:var(--text-2)}.faint{color:var(--text-3);font-size:13px}.small{font-size:13px}.center-text{text-align:center}.grad-text{background:var(--brand-grad);color:#0000;-webkit-background-clip:text;background-clip:text}.topbar{align-items:center;gap:12px;min-height:44px;display:flex}.topbar h3{flex:1}.icon-btn{cursor:pointer;background:0 0;border:0;border-radius:50%;flex-shrink:0;place-items:center;width:40px;height:40px;display:inline-grid}.icon-btn:hover,.icon-btn.filled{background:var(--surface-2)}.btn{border-radius:var(--pill);cursor:pointer;text-align:center;border:0;justify-content:center;align-items:center;gap:10px;width:100%;min-height:56px;padding:0 24px;font-size:16px;font-weight:700;line-height:1.25;text-decoration:none;transition:transform 80ms,opacity .15s,box-shadow .15s;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand-grad);color:#fff;box-shadow:var(--shadow-strong)}.btn-soft{background:var(--brand-soft);color:var(--brand-ink)}.btn-outline{background:var(--surface);color:var(--text);border:1.5px solid var(--border)}.btn-danger{background:var(--danger);color:#fff}.btn-sm{width:auto;min-height:38px;padding:0 16px;font-size:14px}.btn-inline{width:auto}.link-btn{color:var(--brand-2);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.field{flex-direction:column;gap:6px;display:flex}.row>.field{flex:1;min-width:0}.row>.input{min-width:0}.field label{color:var(--text-2);font-size:13px;font-weight:600}.input{border-radius:var(--radius);background:var(--surface-2);border:1.5px solid #0000;align-items:center;gap:10px;min-height:54px;padding:0 16px;transition:border-color .15s,background .15s;display:flex}.input:focus-within{border-color:var(--brand);background:var(--brand-soft)}.input input,.input select,.input textarea{min-width:0;font:inherit;color:var(--text);background:0 0;border:0;outline:none;flex:1;padding:14px 0}.input textarea{resize:vertical;min-height:90px}.input svg{color:var(--text-3);flex-shrink:0}.input .prefix{color:var(--text-2);font-weight:600}.checkbox{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:10px;font-size:14px;display:flex}.checkbox input{width:20px;height:20px;accent-color:var(--brand-2);flex-shrink:0;margin:1px 0 0}.error{background:var(--danger-soft);color:var(--danger);border-radius:var(--radius-sm);padding:10px 14px;font-size:14px}.notice{background:var(--brand-soft);color:var(--brand-ink);border-radius:var(--radius-sm);padding:12px 14px;font-size:14px}.notice.warn{background:var(--warning-soft);color:var(--warning)}.notice.ok{background:var(--success-soft);color:var(--success)}.divider-text{color:var(--text-3);align-items:center;gap:12px;font-size:14px;display:flex}.divider-text:before,.divider-text:after{content:"";background:var(--border);flex:1;height:1px}.code-boxes{justify-content:center;gap:10px;display:flex}.code-boxes input{border-radius:var(--radius);border:1.5px solid var(--border);background:var(--surface-2);text-align:center;width:52px;height:58px;color:var(--text);outline:none;font-size:22px;font-weight:700}.code-boxes input:focus{border-color:var(--brand-2);background:var(--brand-soft)}.code-boxes.six input{width:44px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:14px}.card-link{color:inherit;font-weight:inherit}.card-row{align-items:center;gap:14px;display:flex}.thumb{border-radius:var(--radius);background:var(--brand-deco);color:#fff;width:96px;height:96px;font-family:var(--font-display);flex-shrink:0;place-items:center;font-size:28px;font-weight:700;display:grid;position:relative;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%}.thumb.lg{border-radius:0;width:100%;height:200px;font-size:44px}.hero{position:relative}.hero-back{top:calc(12px + env(safe-area-inset-top));z-index:2;color:#1c1320;background:#ffffffeb;position:absolute;left:12px;box-shadow:0 2px 10px #00000026}.hero-back:hover{background:#fff}.chip{background:var(--brand-soft);color:var(--brand-ink);white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.chip.gray{background:var(--surface-2);color:var(--text-2)}.chip.green{background:var(--success-soft);color:var(--success)}.skill-menu{grid-template-columns:1fr 1fr;gap:6px;display:grid}.skill-menu .pill{text-align:center;white-space:normal;border-radius:14px;justify-content:center;align-items:center;min-height:42px;padding:4px 10px;font-size:13px;line-height:1.2;text-decoration:none;display:flex}.skill-bar{z-index:5;background:var(--bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;margin:0 -20px;padding:10px 20px;display:flex;position:sticky;top:0}.skill-bar .pill{text-decoration:none}.skill-video{aspect-ratio:16/9;background:#111;border-radius:12px;position:relative;overflow:hidden}.skill-video iframe,.skill-video button,.skill-video img{border:0;width:100%;height:100%;position:absolute;inset:0}.skill-video button{cursor:pointer;background:0 0;padding:0}.skill-video img{object-fit:cover}.skill-video-play{background:#fffffff0;border-radius:50%;width:60px;height:60px;margin:-30px 0 0 -30px;position:absolute;top:50%;left:50%;box-shadow:0 2px 10px #00000059}.skill-video-play:after{content:"";border-style:solid;border-width:12px 0 12px 19px;border-color:transparent transparent transparent var(--brand-2,#7f3f98);position:absolute;top:18px;left:24px}.pills{scrollbar-width:none;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.pills::-webkit-scrollbar{display:none}.pill{border:1.5px solid var(--brand-2);color:var(--brand-2);border-radius:var(--pill);cursor:pointer;background:0 0;flex-shrink:0;align-items:center;gap:6px;padding:7px 16px;font-size:14px;font-weight:600;display:inline-flex}.pill.active{background:var(--brand-grad);color:#fff;border-color:#0000}.pill:disabled{border-color:var(--border);color:var(--text-3);cursor:not-allowed}.soon{text-transform:uppercase;letter-spacing:.04em;background:var(--surface-2);color:var(--text-3);border-radius:6px;padding:1px 6px;font-size:10px;font-weight:700}.tabs{border-bottom:1.5px solid var(--border);scrollbar-width:none;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{white-space:nowrap;color:var(--text-3);cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;flex:1 0 auto;margin-bottom:-1.5px;padding:12px 10px;font-size:14px;font-weight:600}.tab.active{color:var(--brand-2);border-bottom-color:var(--brand-2)}.stars{color:var(--text-2);align-items:center;gap:4px;font-size:13px;display:inline-flex}.stars svg{color:var(--star)}.progress{background:var(--surface-2);border-radius:var(--pill);height:8px;overflow:hidden}.progress>div{background:var(--brand-grad);border-radius:var(--pill);height:100%;transition:width .3s}.stat-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stat{text-align:center;background:var(--surface-2);border-radius:var(--radius);padding:10px 4px}.stat b{font-family:var(--font-display);font-size:17px;display:block}.stat span{color:var(--text-3);font-size:11px}.list-item{text-align:left;cursor:pointer;width:100%;color:var(--text);background:0 0;border:0;align-items:center;gap:14px;padding:14px 4px;font-size:16px;font-weight:600;display:flex}.list-item .li-icon{width:28px;height:28px;color:var(--text);place-items:center;display:grid}.list-item .li-body{flex:1}.list-item:disabled{cursor:not-allowed;opacity:.6}.avatar{background:var(--brand-deco);color:#fff;width:56px;height:56px;font-family:var(--font-display);border-radius:50%;flex-shrink:0;place-items:center;font-size:22px;font-weight:700;display:grid;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.avatar.xl{width:110px;height:110px;font-size:40px}.avatar.sm{width:40px;height:40px;font-size:16px}.empty{text-align:center;color:var(--text-3);flex-direction:column;align-items:center;gap:12px;padding:40px 16px;display:flex}.empty .empty-icon{background:var(--brand-soft);width:88px;height:88px;color:var(--brand-2);border-radius:50%;place-items:center;display:grid}.bottom-nav{width:100%;max-width:480px;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);z-index:20;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav a{color:var(--text-3);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:11px;font-weight:500;display:flex}.bottom-nav a.active{color:var(--brand-2);font-weight:700}.sticky-cta{background:var(--bg);padding:14px 20px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--border);align-items:center;gap:12px;display:flex;position:sticky;bottom:0}.backdrop{z-index:50;background:#0a040e8c;justify-content:center;align-items:flex-end;animation:.15s fade;display:flex;position:fixed;inset:0}.backdrop.centered{align-items:center;padding:20px}.sheet{background:var(--surface);width:100%;max-width:480px;padding:12px 24px calc(24px + env(safe-area-inset-bottom));border-radius:28px 28px 0 0;flex-direction:column;gap:16px;max-height:90vh;animation:.2s up;display:flex;overflow-y:auto}.sheet:before{content:"";background:var(--border);border-radius:4px;align-self:center;width:40px;height:4px}.dialog{background:var(--surface);text-align:center;border-radius:28px;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:380px;padding:28px 24px;display:flex}@keyframes fade{0%{opacity:0}}@keyframes up{0%{opacity:0;transform:translateY(40px)}}.spinner{border:3.5px solid var(--brand-soft);border-top-color:var(--brand-2);border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.hero-circle{background:var(--brand-soft);width:200px;height:200px;color:var(--brand-2);border-radius:50%;place-items:center;margin:0 auto;display:grid}.video-wrap{aspect-ratio:16/9;background:#000;width:100%;position:relative}.video-wrap iframe,.video-wrap>div{width:100%;height:100%;position:absolute;inset:0}.video-wrap .yt-frame{border:0;width:100%;height:100%}.video-wrap.sticky{z-index:5;position:sticky;top:0}.lesson{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);text-align:left;cursor:pointer;align-items:center;gap:12px;width:100%;padding:12px;display:flex}.lesson.current{border-color:var(--brand-2);background:var(--brand-soft)}.lesson:disabled{cursor:not-allowed;opacity:.6}.lesson .num{background:var(--brand-soft);width:38px;height:38px;color:var(--brand-2);border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid}.lesson .body{flex:1;min-width:0}.lesson .title{font-size:14px;font-weight:600}.lesson .state{color:var(--brand-2);flex-shrink:0}.lesson .state.done{color:var(--success)}.lesson .state.locked{color:var(--text-3)}.section-head{color:var(--text-2);justify-content:space-between;margin-top:6px;font-size:14px;font-weight:600;display:flex}.toggle{flex-shrink:0;width:48px;height:28px;position:relative}.toggle input{opacity:0;width:0;height:0}.toggle span{border-radius:var(--pill);background:var(--border);cursor:pointer;transition:background .15s;position:absolute;inset:0}.toggle span:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.toggle input:checked+span{background:var(--brand-2)}.toggle input:checked+span:after{transform:translate(20px)}.toggle input:disabled+span{opacity:.5;cursor:not-allowed}.dots{justify-content:center;gap:6px;display:flex}.dots span{background:var(--border);border-radius:4px;width:8px;height:8px;transition:all .2s}.dots span.on{background:var(--brand-deco);width:26px}.keypad{grid-template-columns:repeat(3,1fr);gap:10px;width:100%;max-width:300px;margin:0 auto;display:grid}.keypad button{border-radius:var(--radius);background:var(--surface-2);cursor:pointer;border:0;height:60px;font-size:22px;font-weight:600}.keypad button:active{background:var(--brand-soft)}.keypad button.ghost{background:0 0}.pin-dots{justify-content:center;gap:16px;display:flex}.pin-dots span{border:2px solid var(--brand-2);border-radius:50%;width:18px;height:18px}.pin-dots span.on{background:var(--brand-grad);border-color:#0000}.legal{gap:12px}.legal p,.legal li{color:var(--text-2);font-size:14px}.legal h4{margin-top:8px}.legal ul{flex-direction:column;gap:6px;margin:0;padding-left:20px;display:flex}.certificate{color:#2b1d30;text-align:center;box-shadow:0 0 0 2px #e9d7ef, var(--shadow);background:#fffdf8 padding-box padding-box;border:10px solid #0000;border-radius:12px;flex-direction:column;align-items:center;gap:10px;padding:28px 22px;display:flex;position:relative}.certificate:before{content:"";pointer-events:none;border:1.5px solid #c9a4d6;border-radius:6px;position:absolute;inset:8px}.certificate .cert-title{font-family:var(--font-display);letter-spacing:.02em;font-size:26px;font-weight:800}.certificate .cert-name{font-family:var(--font-display);color:#7f3f98;font-size:28px;font-weight:700}.certificate .cert-course{font-size:16px;font-weight:700}.certificate small{color:#7a6a80;font-size:12px}.onboard{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.onboard-art{background:#fff;flex:1 1 0;min-height:300px;position:relative;overflow:hidden}.onboard-art img{object-fit:contain;object-position:center bottom;width:100%;height:100%;position:absolute;inset:0}.onboard-skip{top:calc(12px + env(safe-area-inset-top));z-index:2;position:absolute;right:16px}.onboard-sheet{background:var(--bg);padding:36px 24px calc(28px + env(safe-area-inset-bottom));text-align:center;border-radius:40px 40px 0 0;flex-direction:column;gap:28px;margin-top:-40px;display:flex;position:relative}.onboard-sheet h1{place-items:center;min-height:2.4em;font-size:32px;display:grid}.landing-btn{border-radius:20px;min-height:64px;font-size:16px}.landing-btn.soon{color:#f5f5f5;box-shadow:none;cursor:default;opacity:1;background:#d8d8d8}:root[data-theme=dark] .landing-btn.soon{color:#8e8e96;background:#35383f}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .landing-btn.soon{color:#8e8e96;background:#35383f}}.test-screen{z-index:60;background:var(--bg-app);justify-content:center;display:flex;position:fixed;inset:0;overflow-y:auto}.test-screen>.screen{background:var(--bg);width:100%;max-width:480px;min-height:100%}.lesson .body.title{font-size:15px;font-weight:600}.option-row{align-items:center;gap:8px;display:flex}.option-row input[type=radio]{width:20px;height:20px;accent-color:var(--brand);flex-shrink:0}.question-image{border:1px solid var(--border);object-fit:contain;background:#fff;border-radius:12px;max-width:100%;max-height:50vh;margin:0 auto;display:block}
