.home-nav{z-index:100;background:#0a0a0a;border-bottom:1px solid #1a1a1a;justify-content:space-between;align-items:center;height:56px;padding:0 48px;display:flex;position:sticky;top:0}.nav-logo{align-items:center;gap:10px;display:flex}.nav-links{align-items:center;gap:32px;display:flex}.nav-link{color:#888;font-size:14px;text-decoration:none;transition:color .15s}.nav-link:hover{color:#fff}.nav-link-cta{color:#fff;background:#1a1a1a;border:1px solid #333;border-radius:6px;padding:6px 16px;transition:background .15s,color .15s}.nav-link-cta:hover{color:#fff;background:#252525}.hero{background:#0a0a0a;grid-template-columns:1fr 1fr;gap:0;min-height:calc(100vh - 56px);display:grid}.hero-left{border-right:1px solid #1a1a1a;flex-direction:column;justify-content:center;padding:80px 64px 80px 48px;display:flex}.hero-label{font-family:var(--font-mono);letter-spacing:.15em;color:#555;margin-bottom:24px;font-size:11px}.hero-title{color:#fff;letter-spacing:-.02em;margin-bottom:28px;font-size:clamp(48px,5vw,72px);font-weight:800;line-height:1.05}.hero-desc{color:#888;max-width:480px;margin-bottom:40px;font-size:17px;line-height:1.7}.hero-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:32px;display:flex}.btn-primary{color:#0a0a0a;cursor:pointer;background:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:15px;font-weight:600;text-decoration:none;transition:opacity .15s;display:inline-block}.btn-primary:hover{opacity:.88}.btn-outline{color:#fff;cursor:pointer;background:0 0;border:1px solid #333;border-radius:8px;padding:12px 24px;font-size:15px;font-weight:500;text-decoration:none;transition:border-color .15s,color .15s;display:inline-block}.btn-outline:hover{border-color:#666}.hero-stats{font-family:var(--font-mono);color:#444;letter-spacing:.05em;font-size:12px}.hero-right{background:#080808;justify-content:center;align-items:center;padding:60px 48px;display:flex}.demo-window{background:#111;border:1px solid #222;border-radius:12px;width:100%;max-width:520px;overflow:hidden}.demo-titlebar{background:#161616;border-bottom:1px solid #222;align-items:center;gap:6px;padding:12px 16px;display:flex}.demo-dot{border-radius:50%;width:12px;height:12px}.demo-dot.red{background:#ff5f57}.demo-dot.yellow{background:#febc2e}.demo-dot.green{background:#28c840}.demo-filename{font-family:var(--font-mono);color:#555;margin-left:8px;font-size:12px}.demo-block{font-family:var(--font-mono);background:0 0;margin:0;padding:24px 20px;font-size:14px;line-height:1.7;overflow-x:auto}@keyframes blink{50%{color:var(--text-muted);background:0 0}}.demo-stats{font-family:var(--font-mono);color:#555;border-top:1px solid #222;gap:20px;padding:12px 20px;font-size:12px;display:flex}.manifesto-section{background:#0a0a0a;border-top:1px solid #1a1a1a;width:100%}.manifesto{box-sizing:border-box;grid-template-columns:240px 1fr;gap:0 80px;max-width:1200px;margin:0 auto;padding:100px 48px;display:grid}.manifesto-label{font-family:var(--font-mono);color:#555;letter-spacing:.1em;padding-top:4px;font-size:12px}.manifesto-list{flex-direction:column;display:flex}.manifesto-item{border-bottom:1px dashed #222;grid-template-columns:48px 1fr;gap:0 24px;padding:36px 0;display:grid}.manifesto-item:first-child{border-top:1px dashed #222}.manifesto-n{font-family:var(--font-mono);color:#444;padding-top:4px;font-size:13px}.manifesto-content{flex-direction:column;gap:8px;display:flex}.manifesto-title{color:#fff;margin:0;font-size:20px;font-weight:700}.manifesto-body{color:#666;margin:0;font-size:15px;line-height:1.6}.manifesto-note{color:#4ade80;margin:0;font-size:14px}.features{box-sizing:border-box;background:#fff;width:100%;padding:100px 48px}.features>*{max-width:1200px;margin-left:auto;margin-right:auto}.section-label{font-family:var(--font-mono);letter-spacing:.1em;color:#999;margin-bottom:20px;font-size:12px}.section-heading{color:#0a0a0a;letter-spacing:-.02em;margin-bottom:64px;font-size:clamp(36px,4vw,56px);font-weight:800;line-height:1.1}.features-grid{background:#e5e5e5;border:1px solid #e5e5e5;border-radius:12px;grid-template-columns:1fr 1fr;gap:1px;display:grid;overflow:hidden}.feature-card{background:#fff;flex-direction:column;gap:12px;padding:40px;display:flex}.feature-icon{font-size:28px}.feature-title{color:#0a0a0a;margin:0;font-size:18px;font-weight:700}.feature-body{color:#666;margin:0;font-size:14px;line-height:1.6}.pricing{background:#0a0a0a;padding:100px 48px}.pricing .section-label{color:#555;max-width:1200px;margin-left:auto;margin-right:auto}.pricing .section-heading{color:#fff;max-width:1200px;margin-bottom:48px;margin-left:auto;margin-right:auto}.pricing-grid{background:#222;border:1px solid #222;border-radius:16px;grid-template-columns:1fr 1fr;gap:1px;max-width:900px;margin:0 auto;display:grid;overflow:hidden}.pricing-card{background:#fff;flex-direction:column;gap:16px;padding:48px 40px;display:flex}.pricing-card-dark{background:#111}.pricing-tag{font-family:var(--font-mono);letter-spacing:.15em;color:#888;background:#f0f0f0;border-radius:4px;align-self:flex-start;padding:4px 10px;font-size:11px;display:inline-block}.pricing-card-dark .pricing-tag{color:#666;background:#1a1a1a}.pricing-price-big{color:#0a0a0a;letter-spacing:-.03em;font-size:52px;font-weight:800;line-height:1}.pricing-price-big span{color:#999;letter-spacing:0;font-size:18px;font-weight:400}.pricing-card-dark .pricing-price-big{color:#fff}.pricing-note{color:#999;font-size:13px;font-family:var(--font-mono);margin:0}.pricing-list{border-top:1px dashed #e0e0e0;flex-direction:column;flex:1;gap:10px;margin:0;padding:20px 0 0;list-style:none;display:flex}.pricing-card-dark .pricing-list{border-top-color:#222}.pricing-list li{color:#333;font-size:14px}.pricing-card-dark .pricing-list li{color:#aaa}.pricing-list li.dim{color:#bbb}.pricing-card-dark .pricing-list li.dim{color:#444}.pricing-btn{text-align:center;cursor:pointer;box-sizing:border-box;border:none;border-radius:10px;width:100%;margin-top:8px;padding:14px;font-size:15px;font-weight:600;text-decoration:none;transition:opacity .15s;display:block}.pricing-btn:hover{opacity:.85}.pricing-btn-light{color:#fff;background:#0a0a0a}.pricing-btn-dark{color:#0a0a0a;background:#fff}.lessons-section{box-sizing:border-box;background:#fff;width:100%;padding:100px 48px}.lessons-section>*{max-width:1200px;margin-left:auto;margin-right:auto}.level-tabs{gap:8px;margin-bottom:32px;display:flex}.level-tab{color:#666;cursor:pointer;background:0 0;border:1px solid #e0e0e0;border-radius:6px;padding:8px 20px;font-size:14px;font-weight:500;transition:all .15s}.level-tab:hover{color:#333;border-color:#bbb}.level-tab.active{color:#fff;background:#0a0a0a;border-color:#0a0a0a}.tab-lock{font-size:12px}.lessons-loading{color:#999;padding:40px 0;font-size:14px}.lessons-gate{text-align:center;flex-direction:column;align-items:center;gap:16px;padding:60px 0;display:flex}.gate-icon{font-size:40px}.lessons-gate h3{color:#0a0a0a;margin:0;font-size:22px;font-weight:700}.lessons-gate p{color:#888;margin:0;font-size:15px}.gate-login{color:#999;font-size:13px;text-decoration:none}.gate-login:hover{color:#333}.lessons-grid{background:#e5e5e5;border:1px solid #e5e5e5;border-radius:12px;flex-direction:column;gap:1px;margin-bottom:24px;display:flex;overflow:hidden}.lesson-card{cursor:pointer;text-align:left;background:#fff;border:none;align-items:center;gap:20px;width:100%;padding:18px 24px;transition:background .1s;display:flex}.lesson-card:hover{background:#fafafa}.lesson-num{font-family:var(--font-mono);color:#bbb;min-width:36px;font-size:12px}.lesson-info{flex-direction:column;flex:1;gap:3px;display:flex}.lesson-title{color:#0a0a0a;font-size:15px;font-weight:600}.lesson-concept{color:#888;font-size:12px;font-family:var(--font-mono)}.lesson-chars{color:#bbb;font-size:12px;font-family:var(--font-mono)}.random-btn{color:#666;cursor:pointer;background:0 0;border:1px solid #e0e0e0;border-radius:8px;padding:12px 24px;font-size:14px;font-weight:500;transition:all .15s}.random-btn:hover{color:#333;border-color:#bbb}.home-footer{background:#0a0a0a;border-top:1px solid #1a1a1a;justify-content:space-between;align-items:center;padding:32px 48px;display:flex}.footer-left{flex-direction:column;gap:8px;display:flex}.footer-logo{align-items:center;gap:10px;display:flex}.footer-copy{color:#444;margin:0;font-size:12px}.footer-links{align-items:center;gap:28px;display:flex}.footer-links a{color:#555;font-size:13px;text-decoration:none;transition:color .15s}.footer-links a:hover{color:#fff}.footer-icon-link{color:#555;align-items:center;transition:color .15s;display:flex}.footer-icon-link:hover{color:#5865f2}@media (width<=900px){.home-nav{padding:0 24px}.hero{grid-template-columns:1fr;min-height:auto}.hero-left{border-bottom:1px solid #1a1a1a;border-right:none;padding:60px 24px 40px}.hero-right{padding:40px 24px}.manifesto{grid-template-columns:1fr;gap:32px;padding:60px 24px}.features{padding:60px 24px}.features-grid{grid-template-columns:1fr}.pricing{padding:60px 24px}.pricing-grid{grid-template-columns:1fr}.lessons-section{padding:60px 24px}.home-footer{flex-direction:column;align-items:flex-start;gap:24px;padding:32px 24px}.section-heading{font-size:32px}}.code-display{background:var(--surface);border:1px solid var(--border);font-family:var(--font-mono);text-align:left;white-space:pre-wrap;word-break:break-all;tab-size:4;border-radius:10px;outline:none;padding:28px 32px;font-size:17px;line-height:1.8}.char-correct{color:var(--green)}.char-error{color:var(--red);background:#f8514926;border-radius:2px}.char-cursor{color:var(--text);background:var(--blue);border-radius:2px;animation:1s step-end infinite blink}.char-pending{color:var(--text-muted)}.results{flex-direction:column;align-items:center;gap:40px;padding:60px 24px;display:flex}.results-header{text-align:center}.results-check{color:var(--green);margin-bottom:16px;font-size:48px}.results-header h2{color:var(--text);margin-bottom:8px;font-size:28px;font-weight:600}.results-title{color:var(--text-muted);font-size:15px}.results-stats{gap:48px;display:flex}.stat{flex-direction:column;align-items:center;gap:6px;display:flex}.stat-value{font-family:var(--font-mono);color:var(--text);font-size:36px;font-weight:700}.stat-label{text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);font-size:12px}.color-text{color:var(--text)}.results-actions{gap:12px;display:flex}.btn-retry,.btn-home,.btn-dashboard{cursor:pointer;border-radius:8px;padding:12px 28px;font-size:15px;font-weight:500;transition:all .15s}.btn-retry{background:var(--blue);color:#0d1117;border:none}.btn-retry:hover{opacity:.85}.btn-home,.btn-dashboard{border:1px solid var(--border);color:var(--text-muted);background:0 0}.btn-home:hover,.btn-dashboard:hover{border-color:var(--text-muted);color:var(--text)}.results-signup-hint{color:var(--text-muted);margin-top:-16px;font-size:13px}.lesson{outline:none;flex-direction:column;min-height:100vh;display:flex}.lesson-loading{min-height:100vh;color:var(--text-muted);justify-content:center;align-items:center;display:flex}.lesson-nav{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:16px 32px;display:flex}.nav-back{color:var(--text-muted);font-size:14px;text-decoration:none;transition:color .15s}.nav-back:hover{color:var(--text)}.nav-info{flex-direction:column;align-items:center;gap:2px;display:flex}.nav-title{color:var(--text);font-size:15px;font-weight:600}.nav-concept{color:var(--purple);font-size:12px;font-family:var(--font-mono)}.nav-stats{font-family:var(--font-mono);color:var(--text-muted);justify-content:flex-end;align-items:center;gap:6px;min-width:120px;font-size:13px;display:flex}.nav-sep{color:var(--border)}.progress-bar{background:var(--surface2);height:3px}.progress-fill{background:var(--blue);height:100%;transition:width .1s linear}.lesson-main{flex-direction:column;flex:1;justify-content:center;align-items:center;width:100%;max-width:860px;margin:0 auto;padding:48px 32px;display:flex}.lesson-main .code-display{width:100%;margin-bottom:16px}.lesson-description{color:var(--text-muted);text-align:center;max-width:600px;margin-bottom:20px;font-size:14px;line-height:1.6}.lesson-hint{color:var(--text-muted);text-align:center;font-size:13px}.lesson-hint kbd{border:1px solid var(--border);font-family:var(--font-mono);background:var(--surface2);color:var(--text-muted);border-radius:4px;padding:1px 6px;font-size:11px;display:inline-block}.nav-wpm{color:var(--blue)}.nav-acc{font-weight:600}.nav-attempts{color:var(--yellow);font-size:12px;font-family:var(--font-mono)}.color-yellow{color:var(--yellow)}.color-red{color:var(--red)}.lesson-blocked{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.blocked-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:400px;padding:40px;display:flex}.blocked-icon{font-size:48px}.blocked-card h2{color:var(--text);margin:0;font-size:22px;font-weight:600}.blocked-card p{color:var(--text-muted);margin:0;font-size:14px;line-height:1.6}.blocked-sub{color:var(--text-muted)}.blocked-btn-primary{background:var(--blue);color:#0d1117;border-radius:8px;width:100%;margin-top:8px;padding:12px;font-size:15px;font-weight:600;text-decoration:none;transition:opacity .15s;display:block}.blocked-btn-primary:hover{opacity:.85}.blocked-btn-secondary{color:var(--text-muted);font-size:13px;text-decoration:none}.blocked-btn-secondary:hover{color:var(--text)}.auth-page{background:var(--bg);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-back{color:var(--text-muted);align-items:center;gap:6px;font-size:14px;text-decoration:none;transition:color .15s;display:flex;position:fixed;top:20px;left:24px}.auth-back:hover{color:var(--text)}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;align-items:center;gap:8px;width:100%;max-width:400px;padding:40px;display:flex}.auth-logo{align-items:center;gap:10px;margin-bottom:16px;text-decoration:none;display:flex}.auth-title{color:var(--text);margin:0;font-size:22px;font-weight:600}.auth-sub{color:var(--text-muted);margin-bottom:8px;font-size:14px}.auth-form{flex-direction:column;gap:16px;width:100%;margin-top:16px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--text-muted);font-size:13px;font-weight:500}.field input{background:var(--surface2);border:1px solid var(--border);color:var(--text);font-size:15px;font-family:var(--font-sans);border-radius:8px;outline:none;padding:10px 14px;transition:border-color .15s}.field input:focus{border-color:var(--blue)}.field input::placeholder{color:var(--text-muted);opacity:.5}.auth-error{color:var(--red);text-align:center;background:#f851491a;border:1px solid #f8514933;border-radius:6px;padding:8px 12px;font-size:13px}.auth-btn{background:var(--blue);color:#0d1117;cursor:pointer;border:none;border-radius:8px;width:100%;margin-top:4px;padding:12px;font-size:15px;font-weight:600;transition:opacity .15s}.auth-btn:hover:not(:disabled){opacity:.85}.auth-btn:disabled{opacity:.5;cursor:not-allowed}.auth-switch{color:var(--text-muted);margin-top:8px;font-size:13px}.auth-switch a,.logo-py{color:var(--blue)}.oauth-buttons{flex-direction:column;gap:10px;width:100%;margin-top:8px;display:flex}.oauth-btn{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font-sans);border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:11px;transition:all .15s;display:flex}.oauth-btn:hover{border-color:var(--text-muted);background:var(--surface)}.auth-divider{width:100%;color:var(--text-muted);align-items:center;gap:12px;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.dashboard{background:var(--bg);min-height:100vh}.dash-nav{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:16px 40px;display:flex}.dash-logo{align-items:center;gap:10px;text-decoration:none;display:flex}.logo-py{color:var(--blue)}.logo-type{color:var(--text)}.dash-user{align-items:center;gap:16px;display:flex}.dash-nav-lb{color:var(--text-muted);border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:13px;font-weight:500;text-decoration:none;transition:all .15s}.dash-nav-lb:hover{color:var(--yellow);border-color:var(--yellow)}.dash-nav-avatar{border:1px solid var(--border);background:var(--surface2);border-radius:50%;width:28px;height:28px}.dash-email{color:var(--text-muted);font-size:14px}.dash-signout{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;padding:6px 14px;font-size:13px;transition:all .15s}.dash-signout:hover{border-color:var(--red);color:var(--red)}.dash-main{max-width:860px;margin:0 auto;padding:48px 24px}.profile-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:24px;margin-bottom:32px;padding:28px;display:flex}.profile-avatar-wrap{flex-direction:column;flex-shrink:0;align-items:center;gap:8px;display:flex}.profile-avatar{border:2px solid var(--border);background:var(--surface2);object-fit:cover;width:96px;height:96px;image-rendering:pixelated;border-radius:12px}.avatar-upload-btn{color:var(--text-muted);border:1px solid var(--border);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;padding:5px 12px;font-size:12px;font-weight:500;transition:all .15s}.avatar-upload-btn:hover{border-color:var(--blue);color:var(--blue)}.avatar-upload-btn:disabled{opacity:.5;cursor:not-allowed}.avatar-reset-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px;transition:color .15s}.avatar-reset-btn:hover{color:var(--red)}.avatar-upload-error{color:var(--red);text-align:center;font-size:11px}.avatar-size-hint{color:var(--text-muted);opacity:.6;text-align:center;font-size:10px}.profile-info{flex-direction:column;flex:1;gap:4px;display:flex}.profile-name{color:var(--text);font-size:22px;font-weight:700;font-family:var(--font-mono);margin:0}.profile-email{color:var(--text-muted);margin:0;font-size:13px}.profile-since{color:var(--text-muted);opacity:.6;margin:0;font-size:12px}.profile-pro-badge{background:var(--purple);color:#0d1117;letter-spacing:.5px;vertical-align:middle;font-size:11px;font-weight:700;font-family:var(--font-sans);border-radius:4px;margin-left:8px;padding:2px 8px;display:inline-block}.profile-edit-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;align-self:flex-start;margin-top:10px;padding:6px 14px;font-size:13px;transition:all .15s}.profile-edit-btn:hover{border-color:var(--blue);color:var(--blue)}.username-form{flex-direction:column;gap:8px;max-width:320px;display:flex}.username-input{background:var(--bg);border:1px solid var(--border);color:var(--text);font-size:15px;font-family:var(--font-mono);border-radius:6px;outline:none;padding:9px 14px;transition:border-color .15s}.username-input:focus{border-color:var(--blue)}.username-error{color:var(--red);font-size:12px}.username-actions{gap:8px;display:flex}.username-save{background:var(--blue);color:#0d1117;cursor:pointer;border:none;border-radius:6px;padding:7px 18px;font-size:13px;font-weight:600;transition:opacity .15s}.username-save:hover{opacity:.85}.username-save:disabled{opacity:.5;cursor:not-allowed}.username-cancel{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;padding:7px 14px;font-size:13px;transition:all .15s}.username-cancel:hover{border-color:var(--text-muted);color:var(--text)}.stats-row{grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:48px;display:grid}.stat-box{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:6px;padding:20px;display:flex}.stat-box-value{font-family:var(--font-mono);color:var(--text);font-size:32px;font-weight:700}.stat-box-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px}.color-blue{color:var(--blue)}.color-green{color:var(--green)}.stat-box-denom{color:var(--text-muted);font-size:16px;font-weight:400}.stat-box-unit{color:inherit;font-size:18px;font-weight:400}.stat-trend{margin-left:6px;font-size:18px;font-weight:700}.stat-trend-up{color:var(--green)}.stat-trend-down{color:var(--red)}.stat-trend-flat{color:var(--text-muted)}.activity-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;align-items:center;gap:32px;margin-bottom:24px;padding:24px 28px;display:flex}.activity-streak{flex-direction:column;flex-shrink:0;align-items:center;gap:4px;min-width:80px;display:flex}.streak-flame{font-size:32px}.streak-count{font-family:var(--font-mono);color:var(--text);font-size:36px;font-weight:700;line-height:1}.streak-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.activity-chart{flex-direction:column;flex:1;gap:8px;display:flex}.activity-bars{align-items:flex-end;gap:6px;height:64px;display:flex}.activity-bar-wrap{flex-direction:column;flex:1;align-items:center;gap:6px;height:100%;display:flex}.activity-bar-track{flex:1;align-items:flex-end;width:100%;display:flex}.activity-bar-fill{background:var(--blue);border-radius:3px 3px 0 0;width:100%;min-height:0;transition:height .4s}.activity-bar-fill.empty{background:var(--surface2);border-radius:3px;min-height:4px}.activity-bar-fill.today{background:var(--green)}.activity-bar-label{color:var(--text-muted);font-size:10px;font-family:var(--font-mono);flex-shrink:0}.activity-bar-label.today{color:var(--green);font-weight:600}.activity-hint{color:var(--text-muted);opacity:.6;margin:0;font-size:11px}.badges-row{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px;display:grid}.badge-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:12px;padding:16px 18px;transition:all .2s;display:flex;position:relative;overflow:hidden}.badge-card.badge-earned{border-color:var(--green);background:#3fb9500f}.badge-icon{flex-shrink:0;font-size:28px}.badge-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.badge-name{color:var(--text);font-size:13px;font-weight:600}.badge-check{color:var(--green)}.badge-progress{color:var(--text-muted);font-size:11px;font-family:var(--font-mono)}.badge-bar{background:var(--surface2);height:2px;position:absolute;bottom:0;left:0;right:0}.badge-bar-fill{background:var(--blue);height:100%;transition:width .4s}.completion-map{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:40px;padding:20px 24px}.map-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:16px;font-size:13px;font-weight:600}.map-row{align-items:center;gap:12px;margin-bottom:8px;display:flex}.map-level-label{color:var(--text-muted);font-size:11px;font-family:var(--font-mono);flex-shrink:0;width:88px}.map-cells{flex-wrap:wrap;gap:4px;display:flex}.map-cell{border-radius:3px;width:18px;height:18px;text-decoration:none;transition:transform .1s;display:inline-block}.map-cell:hover{transform:scale(1.3)}.map-cell-0{background:#2e2e2e}.map-cell-1{background:#1a4a2e}.map-cell-2{background:#196830}.map-cell-3{background:#26a641}.map-cell-4{background:#39d353}.map-legend{border-top:1px solid var(--border);align-items:center;gap:4px;margin-top:14px;padding-top:12px;display:flex}.map-legend-label{color:var(--text-muted);margin:0 4px;font-size:11px}.dash-section{margin-bottom:40px}.dash-section-title{color:var(--text);align-items:center;gap:12px;margin-bottom:12px;font-size:16px;font-weight:600;display:flex}.dash-section-count{font-family:var(--font-mono);color:var(--text-muted);font-size:12px;font-weight:400}.dash-lessons{flex-direction:column;gap:6px;display:flex}.dash-lesson{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;justify-content:space-between;align-items:center;padding:14px 18px;text-decoration:none;transition:all .15s;display:flex}.dash-lesson:hover{border-color:var(--blue);transform:translate(4px)}.dash-lesson.done{border-color:#3fb9504d}.dash-lesson-info{flex-direction:column;gap:2px;display:flex}.dash-lesson-title{font-size:14px;font-weight:500}.dash-lesson-concept{color:var(--purple);font-size:12px;font-family:var(--font-mono)}.dash-lesson-score{font-family:var(--font-mono);align-items:center;gap:10px;font-size:13px;display:flex}.score-wpm{color:var(--green);font-weight:600}.score-acc{color:var(--text-muted)}.dash-lesson-start{color:var(--text-muted);font-size:13px}.dash-loading{color:var(--text-muted);text-align:center;padding:40px}.lb-page{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.lb-nav{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:16px 40px;display:flex}.lb-logo{align-items:center;gap:10px;text-decoration:none;display:flex}.lb-nav-right{align-items:center;gap:10px;display:flex}.lb-nav-link{color:var(--text-muted);border:1px solid #0000;border-radius:6px;padding:7px 16px;font-size:14px;font-weight:500;text-decoration:none;transition:all .15s}.lb-nav-link:hover{color:var(--text);border-color:var(--border)}.lb-nav-link-primary{background:var(--blue);color:#0d1117;border-color:var(--blue)}.lb-nav-link-primary:hover{opacity:.85;color:#0d1117}.lb-main{width:100%;max-width:800px;margin:0 auto;padding:48px 24px}.lb-header{margin-bottom:32px}.lb-title{color:var(--text);margin:0 0 6px;font-size:28px;font-weight:700}.lb-sub{color:var(--text-muted);margin:0;font-size:14px}.lb-filters{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.lb-filter{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:6px;padding:7px 16px;font-size:13px;font-weight:500;transition:all .15s}.lb-filter:hover{border-color:var(--blue);color:var(--text)}.lb-filter.active{background:var(--blue);border-color:var(--blue);color:#0d1117;font-weight:600}.lb-table{border-collapse:collapse;width:100%;font-size:14px}.lb-table thead th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);padding:10px 14px;font-size:11px;font-weight:600}.lb-table tbody tr{border-bottom:1px solid var(--border);transition:background .1s}.lb-table-live tbody tr:hover{background:var(--surface)}.lb-table td{color:var(--text);padding:12px 14px}.lb-rank{font-family:var(--font-mono);color:var(--text-muted);width:48px;font-size:13px}.lb-player{align-items:center;gap:10px;display:flex}.lb-avatar{object-fit:cover;border:1px solid var(--border);background:var(--surface2);border-radius:6px;width:28px;height:28px}.lb-username{color:var(--text);font-weight:500}.lb-pro-badge{background:var(--purple);color:#0d1117;letter-spacing:.5px;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:700}.lb-me-badge{background:var(--blue);color:#0d1117;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:600}.lb-wpm{font-family:var(--font-mono);color:var(--blue);font-weight:700}.lb-acc{font-family:var(--font-mono);color:var(--green)}.lb-lessons{font-family:var(--font-mono);color:var(--text-muted)}.lb-row-me{background:#58a6ff12!important}.lb-row-me .lb-username{color:var(--blue)}.lb-loading,.lb-empty{color:var(--text-muted);text-align:center;padding:48px 0;font-size:14px}.lb-gate{position:relative}.lb-gate-blur{filter:blur(4px);pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.4}.lb-gate-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:12px;min-width:320px;padding:40px 48px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 24px 48px #0009}.lb-gate-icon{font-size:48px}.lb-gate-title{color:var(--text);margin:0;font-size:22px;font-weight:700}.lb-gate-desc{color:var(--text-muted);max-width:300px;margin:0;font-size:14px;line-height:1.6}.lb-gate-price{font-family:var(--font-mono);color:var(--purple);margin:4px 0;font-size:36px;font-weight:700}.lb-gate-price span{color:var(--text-muted);font-size:16px;font-weight:400}.lb-gate-btn{background:var(--purple);color:#0d1117;border-radius:8px;padding:12px 36px;font-size:15px;font-weight:700;text-decoration:none;transition:opacity .15s}.lb-gate-btn:hover{opacity:.85}.lb-gate-hint{color:var(--text-muted);margin:0;font-size:12px}.roadmap-page{min-height:100vh;color:var(--text);background:#0a0a0a;flex-direction:column;display:flex}.roadmap-nav{z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0a0a0af2;border-bottom:1px solid #1a1a1a;justify-content:space-between;align-items:center;padding:14px 40px;display:flex;position:sticky;top:0}.roadmap-nav-logo{align-items:center;gap:10px;text-decoration:none;display:flex}.roadmap-nav-right{align-items:center;gap:16px;display:flex}.roadmap-progress-pill{background:#1a1a1a;border:1px solid #262626;border-radius:999px;align-items:center;width:140px;height:26px;display:flex;position:relative;overflow:hidden}.roadmap-progress-fill{background:linear-gradient(90deg,#3fb950,#39d353);border-radius:999px;height:100%;transition:width .4s;position:absolute;top:0;left:0}.roadmap-progress-text{z-index:1;text-align:center;width:100%;font-family:var(--font-mono);color:var(--text);font-size:11px;font-weight:600;position:relative}.roadmap-nav-link{color:var(--text-muted);border:1px solid var(--border);border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500;text-decoration:none;transition:all .15s}.roadmap-nav-link:hover{color:var(--text);border-color:var(--text-muted)}.roadmap-nav-link.primary{background:var(--blue);color:#0d1117;border-color:var(--blue);font-weight:600}.roadmap-nav-link.primary:hover{opacity:.85;color:#0d1117}.roadmap-hero{text-align:center;max-width:800px;margin:0 auto;padding:80px 48px 60px}.roadmap-hero-label{font-family:var(--font-mono);letter-spacing:.15em;color:var(--text-muted);text-transform:uppercase;border:1px solid #262626;border-radius:999px;margin-bottom:20px;padding:4px 12px;font-size:11px;font-weight:600;display:inline-block}.roadmap-hero-title{color:#fff;letter-spacing:-.03em;margin-bottom:20px;font-size:clamp(40px,6vw,64px);font-weight:800;line-height:1.05}.roadmap-hero-desc{color:var(--text-muted);max-width:540px;margin:0 auto 28px;font-size:18px;line-height:1.6}.roadmap-hero-meta{font-family:var(--font-mono);color:var(--text-muted);justify-content:center;align-items:center;gap:12px;font-size:13px;display:flex}.rmeta-dot{background:var(--border);border-radius:50%;width:4px;height:4px}.roadmap-main{padding:0 40px 100px;transition:margin-right .3s}.roadmap-page.panel-open .roadmap-main{margin-right:420px}.roadmap-flow{flex-direction:column;align-items:stretch;max-width:900px;margin:0 auto;display:flex}.roadmap-connector{flex-direction:column;align-items:center;padding:4px 0;display:flex}.roadmap-connector-line{background:linear-gradient(#262626,#3a3a3a);width:1px;height:28px}.roadmap-connector-arrow{color:#3a3a3a;margin-top:-2px;font-size:16px;line-height:1}.roadmap-phase{background:var(--pc-dim,#58a6ff0d);border:1px solid #1a1a1a;border-left:3px solid var(--pc,var(--blue));border-radius:12px;padding:28px 28px 24px;transition:border-color .2s}.roadmap-phase.phase-complete{border-color:var(--pc,var(--green))}.roadmap-phase-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.roadmap-phase-header-left{align-items:center;gap:14px;display:flex}.roadmap-phase-num{font-family:var(--font-mono);letter-spacing:.12em;font-size:11px;font-weight:700}.roadmap-phase-title{color:var(--text);font-size:16px;font-weight:700}.roadmap-phase-count{font-family:var(--font-mono);color:var(--text-muted);font-size:12px;font-weight:600}.roadmap-nodes{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;display:grid}.roadmap-node{text-align:left;cursor:pointer;background:#0f0f0f;border:1px solid #262626;border-radius:8px;flex-direction:column;gap:8px;min-height:64px;padding:14px 16px;transition:all .15s;display:flex;position:relative}.roadmap-node:hover{background:#141414;border-color:#3a3a3a;transform:translateY(-1px)}.roadmap-node.node-done{background:#3fb9500a;border-color:#3fb95066}.roadmap-node.node-active{box-shadow:0 0 0 1px var(--pc,var(--blue));background:#58a6ff0f}.roadmap-node-top{justify-content:space-between;align-items:flex-start;gap:6px;display:flex}.roadmap-node-title{color:var(--text);font-size:13px;font-weight:600;line-height:1.3}.roadmap-node-done-icon{color:var(--green);flex-shrink:0;margin-top:1px;font-size:11px;font-weight:700}.roadmap-node-pill{font-size:10px;font-family:var(--font-mono);color:var(--blue);background:#58a6ff1a;border:1px solid #58a6ff33;border-radius:4px;align-self:flex-start;padding:2px 7px;font-weight:500;display:inline-block}.roadmap-backdrop{z-index:149;background:#0006;position:fixed;inset:0}.roadmap-panel{z-index:150;background:#0f0f0f;border-left:1px solid #1a1a1a;flex-direction:column;width:420px;animation:.25s panel-slide-in;display:flex;position:fixed;top:0;bottom:0;right:0;overflow:hidden}@keyframes panel-slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.roadmap-panel-header{border-bottom:1px solid #1a1a1a;justify-content:space-between;align-items:flex-start;gap:12px;padding:24px 24px 20px;display:flex}.roadmap-panel-phase-label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:6px;font-size:10px;font-weight:700}.roadmap-panel-title{color:var(--text);font-size:20px;font-weight:700;line-height:1.2}.roadmap-panel-close{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #262626;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;transition:all .15s;display:flex}.roadmap-panel-close:hover{border-color:var(--text-muted);color:var(--text)}.roadmap-panel-body{flex-direction:column;flex:1;gap:24px;padding:20px 24px;display:flex;overflow-y:auto}.roadmap-panel-desc{color:var(--text-muted);padding-bottom:4px;font-size:14px;line-height:1.65}.roadmap-panel-block{flex-direction:column;gap:10px;display:flex}.roadmap-panel-block-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:7px;font-size:11px;font-weight:700;display:flex}.roadmap-panel-lessons{flex-direction:column;gap:6px;display:flex}.roadmap-lesson-link{background:#1a1a1a;border:1px solid #262626;border-radius:8px;justify-content:space-between;align-items:center;padding:12px 14px;text-decoration:none;transition:all .15s;display:flex}.roadmap-lesson-link:hover{border-color:var(--blue);background:#58a6ff0f}.roadmap-lesson-level{font-family:var(--font-mono);color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px;font-size:10px;font-weight:600;display:block}.roadmap-lesson-title{color:var(--text);font-size:13px;font-weight:600;display:block}.roadmap-lesson-arrow{color:var(--blue);flex-shrink:0;font-size:16px}.roadmap-panel-resources{flex-direction:column;gap:6px;display:flex}.roadmap-resource-link{color:var(--text-muted);background:#1a1a1a;border:1px solid #262626;border-radius:8px;justify-content:space-between;align-items:center;padding:10px 14px;font-size:13px;text-decoration:none;transition:all .15s;display:flex}.roadmap-resource-link:hover{color:var(--text);border-color:#3a3a3a}.roadmap-resource-link.blurred{filter:blur(4px);pointer-events:none;-webkit-user-select:none;user-select:none}.roadmap-resource-ext{color:var(--text-muted);opacity:.5;flex-shrink:0;font-size:12px}.roadmap-panel-gate{flex-direction:column;gap:6px;display:flex;position:relative}.roadmap-panel-gate-resources{flex-direction:column;gap:6px;display:flex}.roadmap-panel-gate-card{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);text-align:center;background:#0a0a0ad9;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;display:flex;position:absolute;inset:0}.roadmap-panel-gate-card p{color:var(--text-muted);margin:0;font-size:13px}.roadmap-gate-btn{background:var(--blue);color:#0d1117;border-radius:6px;padding:7px 18px;font-size:13px;font-weight:700;text-decoration:none;transition:opacity .15s;display:inline-block}.roadmap-soon-badge{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text-muted);text-transform:uppercase;background:#1a1a1a;border:1px solid #262626;border-radius:4px;padding:2px 7px;font-size:9px;font-weight:700}.roadmap-panel-coming-text{color:var(--text-muted);opacity:.7;font-size:13px;line-height:1.6}.roadmap-panel-done-wrap{flex-direction:column;gap:10px;padding-top:4px;padding-bottom:8px;display:flex}.roadmap-done-btn{width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #262626;border-radius:8px;padding:12px;font-size:14px;font-weight:600;transition:all .15s}.roadmap-done-btn:hover{border-color:var(--green);color:var(--green);background:#3fb9500d}.roadmap-done-btn.is-done{border-color:var(--green);color:var(--green);background:#3fb95014}.roadmap-done-btn.is-done:hover{border-color:var(--red);color:var(--red);background:#f851490d}.roadmap-save-hint{color:var(--text-muted);text-align:center;opacity:.7;font-size:12px}.roadmap-save-hint a{color:var(--blue)}.roadmap-gate-wrap{max-width:900px;margin:0 auto;position:relative}.roadmap-gate-blur{filter:blur(5px);pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.45}.roadmap-gate-card{background:var(--surface);border:1px solid var(--border);text-align:center;z-index:10;border-radius:16px;flex-direction:column;align-items:center;gap:14px;min-width:340px;padding:44px 52px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 24px 64px #000000b3}.roadmap-gate-icon{font-size:48px}.roadmap-gate-title{color:var(--text);margin:0;font-size:24px;font-weight:700}.roadmap-gate-desc{color:var(--text-muted);max-width:300px;margin:0;font-size:14px;line-height:1.6}.roadmap-gate-price{font-family:var(--font-mono);color:var(--purple);margin:4px 0;font-size:38px;font-weight:700}.roadmap-gate-price span{color:var(--text-muted);font-size:16px;font-weight:400}.roadmap-gate-btn{background:var(--purple);color:#0d1117;text-align:center;border-radius:8px;width:100%;padding:13px 32px;font-size:15px;font-weight:700;text-decoration:none;transition:opacity .15s;display:inline-block}.roadmap-gate-btn:hover{opacity:.85;color:#0d1117}.roadmap-gate-hint{color:var(--text-muted);margin:0;font-size:12px}@media (width<=900px){.roadmap-nav{padding:12px 20px}.roadmap-hero{padding:48px 20px 40px}.roadmap-main{padding:0 16px 60px}.roadmap-page.panel-open .roadmap-main{margin-right:0}.roadmap-panel{border-top:1px solid #1a1a1a;border-left:none;border-radius:16px 16px 0 0;width:100%;height:80vh;animation:.25s panel-slide-up;top:auto}@keyframes panel-slide-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.roadmap-nodes{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.roadmap-progress-pill{width:110px}}@media (width<=480px){.roadmap-hero-title{font-size:32px}.roadmap-phase{padding:18px 16px}.roadmap-nodes{grid-template-columns:1fr 1fr;gap:8px}.roadmap-node{min-height:52px;padding:10px 12px}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#000;--surface:#0f0f0f;--surface2:#1a1a1a;--border:#262626;--text:#e6edf3;--text-muted:#7d8590;--green:#3fb950;--red:#f85149;--blue:#58a6ff;--yellow:#d29922;--purple:#bc8cff;--cyan:#39d353;--font-mono:"JetBrains Mono", "Fira Code", "Cascadia Code", ui-monospace, monospace;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;min-height:100vh}#root{flex-direction:column;min-height:100vh;display:flex}button{cursor:pointer;font-family:var(--font-sans)}a{color:var(--blue);text-decoration:none}.nav-logo-img{object-fit:contain;width:28px;height:28px}.nav-logo-text{font-family:var(--font-mono);letter-spacing:.2em;color:#fff;font-size:13px;font-weight:600}
