:root{--cloudbone:#f5f3ef;--slate:#6b7280;--slate-dark:#4b5563;--slate-light:#9ca3af;--copper:#d4a574;--copper-light:#e4bc94;--iris:#a78bba;--iris-light:#c4b0d4;--iris-dark:#8b6fa0;--cyan:#a8c8cc;--cyan-light:#c4dde0;--background:var(--cloudbone);--foreground:var(--slate-dark);--primary:var(--iris);--primary-hover:var(--iris-dark);--secondary:var(--slate-light);--border:#e8e5e0;--muted:#f5f3f0;--success:#7ba384;--success-bg:#e8f0ea;--error:#a3847b;--error-bg:#f0e8e6;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,sans-serif;--font-serif:"Crimson Pro",Georgia,serif;--space-xs:.5rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2.5rem;--space-xl:4rem}@media (prefers-color-scheme:dark){:root{--background:#0a0a0a;--foreground:#ededed;--secondary:#9ca3af;--border:#374151;--muted:#1f2937;--primary:#3b82f6;--primary-hover:#60a5fa;--success-bg:#166534;--error-bg:#991b1b}}[data-theme=dark]{--background:#1a1918;--foreground:#e8e5e0;--secondary:#8a8680;--border:#2d2b28;--muted:#242220;--primary:#b5a7bc;--primary-hover:#c8bdd0}*{box-sizing:border-box;margin:0;padding:0}html,body{max-width:100vw;overflow-x:hidden}body{color:var(--foreground);background:var(--background);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;letter-spacing:-.01em;line-height:1.6}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.btn{cursor:pointer;border:none;border-radius:.5rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:500;transition:background-color .15s,opacity .15s;display:inline-block}.btn:disabled,.btn-disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn-disabled:hover,.btn[aria-disabled=true]:hover{text-decoration:none}.btn-disabled.btn-primary:hover,.btn[aria-disabled=true].btn-primary:hover{background-color:var(--primary)}.btn-disabled.btn-secondary:hover,.btn[aria-disabled=true].btn-secondary:hover{background-color:var(--muted)}.btn-primary{background-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--primary-hover)}.btn-secondary{background-color:var(--muted);color:var(--foreground);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background-color:var(--border)}.btn:focus-visible,.btn-icon:focus-visible,.btn-hint:focus-visible,.btn-skip:focus-visible,.help-button:focus-visible,.back-link:focus-visible,.keyboard-help-close:focus-visible,.item-input input:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.container{max-width:1200px;margin:0 auto;padding:2rem}.landing{background:var(--background);justify-content:center;align-items:center;min-height:100vh;display:flex}.landing-container{max-width:800px;padding:var(--space-xl)var(--space-lg);text-align:center}.landing-hero{margin-bottom:var(--space-xl)}.landing-logo{width:120px;height:auto;margin-bottom:var(--space-lg)}.landing-wordmark{font-family:var(--font-sans);letter-spacing:.2em;color:var(--foreground);margin-bottom:var(--space-sm);font-size:2.5rem;font-weight:300}.landing-tagline{font-family:var(--font-serif);color:var(--foreground-muted,var(--secondary));font-size:1.25rem;font-style:italic;font-weight:400}.landing-cta{margin-bottom:var(--space-2xl,6rem)}.landing-cta .btn-large{letter-spacing:.05em;background:var(--iris,var(--primary));border-radius:var(--radius-md,8px);color:#fff;transition:all var(--transition-base,.25s ease);border:none;padding:1rem 2.5rem;font-size:1rem}.landing-cta .btn-large:hover{background:var(--iris-dark,var(--primary-hover));transform:translateY(-1px)}.landing-link{margin-top:var(--space-md);color:var(--foreground-subtle,var(--secondary));font-size:.875rem;display:block}.landing-link:hover{color:var(--foreground);text-decoration:none}.landing-features{gap:var(--space-lg);text-align:center;margin-bottom:var(--space-xl);grid-template-columns:repeat(3,1fr);display:grid}.landing-feature{padding:var(--space-md)}.feature-icon{width:48px;height:48px;margin:0 auto var(--space-sm);color:var(--iris,var(--primary))}.feature-icon svg{width:100%;height:100%}.landing-feature h3{margin-bottom:var(--space-xs);color:var(--foreground);font-size:1rem;font-weight:500}.landing-feature p{color:var(--foreground-muted,var(--secondary));font-size:.875rem;line-height:1.6}.landing-footer{padding-top:var(--space-lg);border-top:1px solid var(--border)}.landing-footer p{color:var(--foreground-subtle,var(--secondary));letter-spacing:.05em;font-size:.75rem}@media (max-width:768px){.landing-features{gap:var(--space-md);grid-template-columns:1fr}.landing-wordmark{font-size:2rem}.landing-logo{width:100px}}.login{justify-content:center;align-items:center;min-height:100vh;display:flex}.login-container{width:100%;max-width:400px;padding:2rem}.login-container h1{margin-bottom:.5rem;font-size:1.5rem}.login-container>p{color:var(--secondary);margin-bottom:2rem}.login-container form{flex-direction:column;gap:1rem;display:flex}.login-container input{border:1px solid var(--border);background:var(--background);color:var(--foreground);border-radius:.5rem;padding:.75rem 1rem;font-size:1rem}.login-container input:focus{outline:2px solid var(--primary);outline-offset:2px}.login-container .message{border-radius:.5rem;margin-top:1rem;padding:.75rem}.login-container .message.success{color:#166534;background:#dcfce7}.login-container .message.error{color:#991b1b;background:#fee2e2}.dashboard{min-height:100vh}.dashboard-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex}.dashboard-header h1{font-size:1.25rem}.dashboard-header nav button{color:var(--secondary);cursor:pointer;background:0 0;border:none}.dashboard-header nav button:hover{color:var(--foreground)}.dashboard-content{max-width:800px;margin:0 auto;padding:2rem}.dashboard-content section{margin-bottom:2rem}.dashboard-content h2{margin-bottom:.5rem;font-size:1.5rem}.dashboard-content h3{margin-bottom:1rem;font-size:1.125rem}.dashboard-content .actions{gap:1rem;display:flex}.placeholder-text{color:var(--secondary);background:var(--muted);border-radius:.5rem;padding:2rem}.session{min-height:100vh;padding-bottom:env(safe-area-inset-bottom)}.session-header{padding:calc(1rem + env(safe-area-inset-top))calc(2rem + env(safe-area-inset-right))1rem calc(2rem + env(safe-area-inset-left));border-bottom:1px solid var(--border)}.session-header .back-link{color:var(--secondary);font-size:.875rem}.session-header h1{margin-top:.5rem;font-size:1.25rem}.session-content{padding:2rem calc(2rem + env(safe-area-inset-right))calc(2rem + env(safe-area-inset-bottom))calc(2rem + env(safe-area-inset-left));max-width:800px;margin:0 auto}.session-placeholder .placeholder-card{background:var(--muted);border-radius:.5rem;padding:2rem}.session-placeholder h2{margin-bottom:1rem}.session-placeholder ul{margin:1rem 0 1.5rem 1.5rem}.placeholder-note{color:var(--secondary);margin-top:1rem}.billing{min-height:100vh}.billing-header{border-bottom:1px solid var(--border);padding:1rem 2rem}.billing-header .back-link{color:var(--secondary);font-size:.875rem}.billing-header h1{margin-top:.5rem;font-size:1.25rem}.billing-content{max-width:800px;margin:0 auto;padding:2rem}.billing-content h2{margin-bottom:1rem;font-size:1.25rem}.current-plan{margin-bottom:3rem}.plan-card{background:var(--muted);border-radius:.5rem;padding:1.5rem}.plan-info{align-items:center;gap:1rem;display:flex}.plan-name{font-size:1.25rem;font-weight:600}.plan-status{text-transform:uppercase;border-radius:9999px;padding:.25rem .75rem;font-size:.75rem}.status-active{color:#166534;background:#dcfce7}.status-canceled{color:#991b1b;background:#fee2e2}.period-end{color:var(--secondary);margin-top:.5rem;font-size:.875rem}.plan-options{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;display:grid}.plan-option{border:1px solid var(--border);border-radius:.5rem;padding:1.5rem}.plan-option.featured{border-color:var(--primary);border-width:2px}.plan-option h3{margin-bottom:.5rem}.plan-option .price{margin-bottom:1rem;font-size:1.5rem;font-weight:600}.plan-option ul{margin-bottom:1.5rem;list-style:none}.plan-option ul li{color:var(--secondary);padding:.25rem 0}.plan-option ul li:before{content:"✓ ";color:var(--primary)}.current-badge{background:var(--muted);color:var(--secondary);border-radius:.25rem;padding:.5rem 1rem;font-size:.875rem;display:inline-block}@media (prefers-color-scheme:dark){.login-container .message.success{color:#dcfce7;background:#166534}.login-container .message.error{color:#fee2e2;background:#991b1b}.status-active{color:#dcfce7;background:#166534}.status-canceled{color:#fee2e2;background:#991b1b}}.session-header{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.session-header h1{flex:1}.session-progress{color:var(--secondary);background:var(--muted);border-radius:9999px;padding:.25rem .75rem;font-size:.875rem}.session-error{color:#991b1b;background:#fee2e2;border-radius:.5rem;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:1rem;display:flex}.session-resumed-notice{color:#1e40af;text-align:center;background:#dbeafe;border-radius:.5rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.875rem}.session-resumed-notice p{margin:0}.session-loading{flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:4rem 2rem;display:flex}.loading-spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:2rem;height:2rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.loading-spinner{animation:none}}.session-start .start-card{text-align:center;background:var(--muted);border-radius:.5rem;padding:3rem 2rem}.session-start h2{margin-bottom:1rem;font-size:1.5rem}.session-start p{color:var(--secondary);max-width:500px;margin:0 auto 1rem}.session-info{margin-bottom:1.5rem;font-size:.875rem}.session-item .item-card{background:var(--muted);border-radius:.5rem;margin-bottom:1.5rem;padding:2rem}.item-meta{gap:.75rem;margin-bottom:1.5rem;display:flex}.item-type,.item-skill{text-transform:uppercase;background:var(--background);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.item-type{color:var(--primary);font-weight:600}.item-skill{color:var(--secondary)}.item-prompt{background:var(--background);text-align:center;border-radius:.5rem;margin-bottom:1.5rem;padding:1rem;font-size:1.5rem}.item-input{gap:.75rem;display:flex}.item-input input{border:2px solid var(--border);background:var(--background);color:var(--foreground);border-radius:.5rem;flex:1;padding:.75rem 1rem;font-size:1rem}.item-input input:focus{border-color:var(--primary);outline:none}.item-reason{color:var(--secondary);text-align:center;margin-top:1rem;font-size:.75rem}.item-feedback{text-align:center;border-radius:.5rem;padding:1.5rem}.item-feedback.correct{color:#166534;background:#dcfce7}.item-feedback.incorrect{color:#991b1b;background:#fee2e2}.feedback-result{margin-bottom:.5rem;font-size:1.25rem;font-weight:600}.feedback-expected{font-size:1rem}.feedback-expected strong{font-weight:600}.feedback-icon{vertical-align:middle;margin-right:.5rem;font-size:1.5rem}.item-feedback.correct .feedback-icon{color:#166534}.item-feedback.incorrect .feedback-icon{color:#991b1b}.feedback-user-answer{opacity:.8;margin-bottom:.5rem;font-size:.9rem}.user-answer-text{font-style:italic;text-decoration:line-through}.retype-error{background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;margin-bottom:1rem;padding:1rem}.retype-error-message{color:#991b1b;align-items:center;gap:.5rem;margin-bottom:.5rem;font-weight:600;display:flex}.error-icon{font-size:1.25rem}.retype-error-hints{color:#7f1d1d;margin:.5rem 0 .75rem 1.5rem;font-size:.875rem}.retype-error-hints li{margin-bottom:.25rem}.retype-typed{color:#991b1b;font-size:.875rem}.typed-text{background:#fee2e2;border-radius:.25rem;padding:.125rem .375rem;font-family:monospace}.session-error{text-align:center;background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;margin-bottom:1rem;padding:1.5rem}.session-error .error-message{color:#991b1b;justify-content:center;align-items:center;gap:.5rem;margin-bottom:.5rem;font-weight:600;display:flex}.session-error .error-recovery{color:#7f1d1d;margin-bottom:1rem;font-size:.875rem}.session-error .error-actions{justify-content:center;gap:.75rem;display:flex}.offline-banner{border:1px solid var(--border);color:var(--foreground);text-align:center;background:#d4a57426;border-radius:.5rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.875rem}.session-controls{text-align:center}.keyboard-help-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.keyboard-help-modal{background:var(--background);border-radius:.75rem;width:100%;max-width:400px;max-height:80vh;overflow:auto;box-shadow:0 20px 40px #0003}.keyboard-help-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.keyboard-help-header h2{margin:0;font-size:1.25rem;font-weight:600}.keyboard-help-close{cursor:pointer;color:var(--secondary);background:0 0;border:none;padding:.25rem;font-size:1.25rem;line-height:1}.keyboard-help-close:hover{color:var(--foreground)}.limit-dialog-overlay{z-index:1000;background:#0000008c;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.limit-dialog{z-index:1001;background:var(--background);text-align:center;border-radius:.75rem;width:100%;max-width:440px;padding:1.5rem;position:relative;box-shadow:0 20px 40px #00000040}.limit-dialog h2{margin-bottom:.5rem;font-size:1.25rem}.limit-dialog p{color:var(--secondary)}.limit-dialog-actions{justify-content:center;margin-top:1.25rem;display:flex}.limit-dialog-scrim{z-index:1000;background:0 0;border:none;margin:0;padding:0;position:fixed;inset:0}.keyboard-help-content{padding:1rem 1.5rem}.keyboard-help-table{border-collapse:collapse;width:100%}.keyboard-help-table th{text-align:left;border-bottom:1px solid var(--border);color:var(--secondary);padding:.5rem 0;font-size:.875rem;font-weight:600}.keyboard-help-table td{border-bottom:1px solid var(--muted);padding:.75rem 0}.keyboard-help-table tr:last-child td{border-bottom:none}.keyboard-key{background:var(--muted);border:1px solid var(--border);text-align:center;border-radius:.25rem;min-width:2rem;padding:.25rem .5rem;font-family:monospace;font-size:.875rem;display:inline-block}.keyboard-help-footer{border-top:1px solid var(--border);text-align:center;padding:1rem 1.5rem}.keyboard-help-footer p{color:var(--secondary);margin:0;font-size:.875rem}.keyboard-help-footer kbd{background:var(--muted);border:1px solid var(--border);border-radius:.25rem;padding:.125rem .375rem;font-family:monospace;font-size:.75rem}.help-button{border:1px solid var(--border);cursor:pointer;color:var(--secondary);background:0 0;border-radius:.375rem;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.875rem;display:flex}.help-button:hover{background:var(--muted);color:var(--foreground)}.session-complete-prompt .complete-card{text-align:center;background:var(--muted);border-radius:.5rem;padding:3rem 2rem}.session-complete-prompt h2{margin-bottom:1rem}.session-complete-prompt p{color:var(--secondary);margin-bottom:1.5rem}.session-complete .summary-hero{text-align:center;background:linear-gradient(135deg,var(--primary)0%,#7c3aed 100%);color:#fff;border-radius:.5rem;margin-bottom:1.5rem;padding:2rem}.summary-hero h2{margin-bottom:.5rem;font-size:1.75rem}.items-completed{opacity:.9;font-size:1.125rem}.items-completed strong{font-size:1.5rem}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-bottom:1.5rem;display:grid}.summary-card{background:var(--muted);border-radius:.5rem;padding:1.5rem}.summary-card h3{color:var(--secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:1rem;font-size:1rem}.stat-row{border-bottom:1px solid var(--border);justify-content:space-between;padding:.5rem 0;display:flex}.stat-row:last-child{border-bottom:none}.stat-label{color:var(--secondary)}.stat-value{font-weight:600}.mastery-high{color:#16a34a}.mastery-medium{color:#ca8a04}.mastery-low{color:#dc2626}.estimate-number{color:var(--primary);text-align:center;margin-bottom:.5rem;font-size:3rem;font-weight:700}.estimate-label{text-align:center;color:var(--secondary);margin-bottom:1rem}.estimate-note{text-align:center;color:var(--secondary);font-size:.875rem}.skills-card,.reviews-card{grid-column:1/-1}.skills-subtitle{color:var(--secondary);margin-bottom:1rem;font-size:.875rem}.skills-list,.reviews-list{list-style:none}.skill-item{border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.75rem 0;display:flex}.skill-item:last-child{border-bottom:none}.skill-name{width:150px;font-size:.875rem}.skill-bar-container{background:var(--border);border-radius:4px;flex:1;height:8px;overflow:hidden}.skill-bar{border-radius:4px;height:100%;transition:width .3s}.skill-bar.mastery-high{background:#16a34a}.skill-bar.mastery-medium{background:#ca8a04}.skill-bar.mastery-low{background:#dc2626}.skill-percent{text-align:right;width:50px;font-size:.875rem;font-weight:600}.review-item{border-bottom:1px solid var(--border);justify-content:space-between;padding:.75rem 0;display:flex}.review-item:last-child{border-bottom:none}.review-skill{font-size:.875rem;font-weight:600}.review-status{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.review-status.overdue{color:#991b1b;background:#fee2e2}.review-status.upcoming{color:#1e40af;background:#dbeafe}.complete-actions{justify-content:center;gap:1rem;margin-top:2rem;display:flex}@media (prefers-color-scheme:dark){.session-error{color:#fee2e2;background:#991b1b}.session-resumed-notice{color:#bfdbfe;background:#1e3a8a}.item-feedback.correct{color:#dcfce7;background:#166534}.item-feedback.incorrect{color:#fee2e2;background:#991b1b}.item-feedback.correct .feedback-icon{color:#86efac}.item-feedback.incorrect .feedback-icon{color:#fecaca}.retype-error{background:#450a0a;border-color:#7f1d1d}.retype-error-message,.retype-error-hints,.retype-typed{color:#fecaca}.typed-text{background:#7f1d1d}.session-error{background:#450a0a;border-color:#7f1d1d}.session-error .error-message,.session-error .error-recovery{color:#fecaca}.review-status.overdue{color:#fecaca;background:#7f1d1d}.review-status.upcoming{color:#bfdbfe;background:#1e3a8a}}.alert{border-radius:.5rem;max-width:736px;margin:0 auto 1.5rem;padding:1rem}.alert-success{color:#166534;background:#dcfce7;border:1px solid #86efac}.alert-info{color:#1e40af;background:#dbeafe;border:1px solid #93c5fd}.alert-error{color:#991b1b;background:#fee2e2;border:1px solid #fecaca}.billing-alert{border-radius:.5rem;max-width:736px;margin:0 auto 1.5rem;padding:1rem 2.5rem 1rem 1rem;position:relative}.billing-alert p{margin:0}.alert-close{cursor:pointer;opacity:.7;color:inherit;background:0 0;border:none;font-size:1.25rem;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.alert-close:hover{opacity:1}.usage-section{margin-bottom:2rem}.usage-card{background:var(--muted);border-radius:.5rem;padding:1.5rem}.usage-unlimited{text-align:center}.usage-badge-pro{color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:9999px;margin-bottom:.5rem;padding:.25rem .75rem;font-size:.875rem;font-weight:600;display:inline-block}.usage-count{margin-bottom:.25rem;font-size:1.125rem}.usage-note{color:var(--secondary);font-size:.875rem}.usage-progress{margin-bottom:1rem}.usage-fill{background:linear-gradient(90deg,var(--primary)0%,#06b6d4 100%);border-radius:6px;height:100%;transition:width .3s}.usage-remaining{color:#16a34a;font-weight:500}.limit-reached{text-align:center;padding:1rem 0}.limit-message{color:#dc2626;margin-bottom:1rem;font-weight:500}.plan-name-pro{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.plan-current{border-color:#16a34a!important}.price-period{color:var(--secondary);font-size:.875rem;font-weight:400}.featured-badge{color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:9999px;padding:.25rem .75rem;font-size:.75rem;font-weight:600;position:absolute;top:-10px;right:20px}.plan-option.featured{position:relative}@media (prefers-color-scheme:dark){.alert-success{color:#dcfce7;background:#166534;border-color:#166534}.alert-info{color:#bfdbfe;background:#1e3a8a;border-color:#1e3a8a}.usage-remaining{color:#4ade80}.limit-message{color:#f87171}}[data-theme=light]{--background:#fff;--foreground:#171717;--primary:#2563eb;--primary-hover:#1d4ed8;--secondary:#6b7280;--border:#e5e7eb;--muted:#f3f4f6}[data-theme=dark]{--background:#0a0a0a;--foreground:#ededed;--primary:#3b82f6;--primary-hover:#60a5fa;--secondary:#9ca3af;--border:#374151;--muted:#1f2937}.theme-toggle{background:var(--muted);border:1px solid var(--border);cursor:pointer;border-radius:.375rem;padding:.375rem .625rem;font-size:1.125rem;transition:background-color .2s,transform .1s}.theme-toggle:hover{background:var(--border);transform:scale(1.05)}.theme-toggle:active{transform:scale(.95)}.dashboard-header nav{align-items:center;gap:1.5rem;display:flex}.dashboard-header nav a{color:var(--secondary);text-decoration:none}.dashboard-header nav a:hover{color:var(--foreground)}.card{background:var(--muted);border-radius:.75rem;margin-bottom:1.5rem;padding:1.5rem}.build-fingerprint{color:var(--secondary);opacity:.8;text-transform:uppercase;letter-spacing:.06em;margin-bottom:1rem;font-size:.75rem}.progress-overview .mastery-display,.overall-progress-card .mastery-display{align-items:center;gap:2rem;display:flex}.overall-progress-card{margin-bottom:1.5rem}.mastery-circle{flex-direction:column;align-items:center;min-width:100px;display:flex}.mastery-value{color:var(--primary);font-size:2.5rem;font-weight:700}.mastery-label{color:var(--secondary);font-size:.875rem}.mastery-items{color:var(--secondary);margin-top:.25rem;font-size:.75rem}.mastery-bar-wrapper{flex:1}.mastery-bar{background:var(--border);border-radius:6px;height:12px;margin-bottom:.5rem;overflow:hidden}.mastery-bar-fill{background:linear-gradient(90deg,var(--primary)0%,#06b6d4 100%);border-radius:6px;height:100%;transition:width .3s}.mastery-sublabel{color:var(--secondary);font-size:.875rem}.progress-activity{justify-content:space-between;align-items:center;gap:1rem;margin-top:.75rem;display:flex}.sparkline{align-items:flex-end;gap:3px;height:36px;display:flex}.sparkline-bar{background:var(--primary);border-radius:3px;width:6px;transition:height .2s}.stats-grid{grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem;display:grid}.stat-card{background:var(--muted);text-align:center;border-radius:.75rem;padding:1.25rem}.stat-card.highlight{background:linear-gradient(135deg,var(--primary)0%,#7c3aed 100%);color:#fff}.stat-card .stat-value{font-size:2rem;font-weight:700;display:block}.stat-card .stat-label{color:var(--secondary);margin-top:.25rem;font-size:.75rem;display:block}.stat-card-in-progress .stat-value{color:#f59e0b}.stat-card-in-progress .stat-label{color:#fbbf24}.stat-card.highlight .stat-label{color:#fffc}.usage-bar-wrapper{margin-top:.5rem}.usage-split{grid-template-columns:minmax(0,1fr) minmax(220px,320px);align-items:start;gap:1.5rem;display:grid}.usage-split-left{min-width:0}.usage-split-right{text-align:right;color:var(--secondary);border-left:1px solid var(--border);flex-direction:column;align-items:flex-end;gap:.6rem;min-width:0;padding-left:1.25rem;font-size:.8rem;display:flex}.usage-forecast-line{justify-content:space-between;align-items:baseline;gap:.75rem;width:100%;display:flex}.usage-forecast-label{opacity:.75;text-align:right;white-space:nowrap}.usage-forecast-value{color:var(--foreground);text-align:right;font-size:.9rem;font-weight:600}.usage-bar{background:var(--border);border-radius:4px;height:8px;margin-bottom:.5rem;overflow:hidden}.usage-bar-fill{background:var(--primary);border-radius:4px;height:100%;transition:width .3s}@media (max-width:640px){.usage-split{grid-template-columns:1fr;gap:.9rem}.usage-split-right{border-left:none;border-top:1px solid var(--border);text-align:left;align-items:flex-start;width:100%;padding-top:.75rem;padding-left:0}.usage-forecast-line{width:100%}.usage-forecast-label,.usage-forecast-value{text-align:left}}.usage-text{color:var(--secondary);font-size:.875rem}.limit-reached{color:#dc2626;font-weight:500}.usage-unlimited{color:#16a34a;font-weight:500}.main-cta .card{text-align:center}.main-cta h3{margin-bottom:.5rem;font-size:1.25rem}.main-cta p{color:var(--secondary);margin-bottom:1rem}.cta-buttons{justify-content:center;gap:1rem;display:flex}.btn-large{padding:1rem 2rem;font-size:1.125rem}.onboarding-prompt .card{text-align:center;color:#fff;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.onboarding-prompt h2{margin-bottom:.5rem}.onboarding-prompt p{opacity:.9;margin-bottom:1rem}.onboarding-prompt .btn-primary{color:#764ba2;background:#fff}.progress-page{min-height:100vh}.page-header{border-bottom:1px solid var(--border);padding:1rem 2rem}.page-header .back-link{color:var(--secondary);font-size:.875rem}.page-header h1{margin-top:.5rem;font-size:1.5rem}.progress-content{max-width:900px;margin:0 auto;padding:2rem}.progress-overview-section{margin-bottom:1.5rem}.progress-overview-section+.level-section{margin-top:2rem}.overview-grid{grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:2rem;display:grid}.overview-stat{background:var(--muted);text-align:center;border-radius:.75rem;padding:1.25rem}.overview-stat .stat-value{color:var(--primary);font-size:1.75rem;font-weight:700;display:block}.overview-stat .stat-label{color:var(--secondary);margin-top:.25rem;font-size:.75rem;display:block}.overview-stat .stat-hint{color:var(--secondary);opacity:.7;margin-top:.125rem;font-size:.65rem;display:block}.overview-stat.stat-urgent{background:linear-gradient(135deg,var(--primary)0%,#7c3aed 100%);color:#fff}.overview-stat.stat-urgent .stat-value,.overview-stat.stat-urgent .stat-label,.overview-stat.stat-urgent .stat-hint{color:#fff}.channel-breakdown{background:var(--muted);border-radius:.75rem;margin-top:1.5rem;padding:1.25rem}.channel-breakdown h3{color:var(--foreground);margin-bottom:1rem;font-size:.875rem;font-weight:600}.channel-grid{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.channel-stat{flex-direction:column;gap:.375rem;display:flex}.channel-name{color:var(--foreground);font-size:.75rem;font-weight:500}.channel-progress{width:100%}.channel-bar{background:var(--border);border-radius:3px;height:6px;display:flex;overflow:hidden}.channel-bar-fill{height:100%;transition:width .3s}.channel-bar-fill.mastery-learned{background:#ca8a04}.channel-bar-fill.mastery-high{background:#16a34a}.channel-counts{color:var(--secondary);font-size:.65rem}.level-stats-summary{color:var(--secondary);margin-top:.25rem;font-size:.75rem;display:block}.level-stats{flex-direction:column;gap:.35rem;display:flex}.level-status-chip{justify-content:center;align-items:center;margin:0 .2rem;padding:.125rem .45rem;font-size:.65rem;display:inline-flex}.level-status-divider{color:var(--secondary);margin:0 .1rem}@media (max-width:768px){.channel-grid{grid-template-columns:1fr;gap:.75rem}.channel-stat{flex-flow:wrap;justify-content:space-between;align-items:center}.channel-name{min-width:120px}.channel-progress{flex:1;min-width:100px}.channel-counts{text-align:right;width:100%}}.skills-section h2{margin-bottom:1.5rem}.category-group{margin-bottom:2rem}.category-group h3{color:var(--secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:1rem;font-size:1rem}.skills-list{background:var(--muted);border-radius:.75rem;overflow:hidden}.skill-row{border-bottom:1px solid var(--border);grid-template-columns:150px 1fr 100px 50px;align-items:center;gap:1rem;padding:.75rem 1rem;display:grid}.skill-row:last-child{border-bottom:none}.skill-name{font-size:.875rem}.skill-bar{background:var(--border);border-radius:4px;height:8px;overflow:hidden}.skill-bar-fill{border-radius:4px;height:100%;transition:width .3s}.skill-bar-fill.mastery-high{background:#16a34a}.skill-bar-fill.mastery-medium{background:#ca8a04}.skill-bar-fill.mastery-low{background:#dc2626}.skill-status{text-align:right;font-size:.75rem}.skill-status.mastery-high{color:#16a34a}.skill-status.mastery-medium{color:#ca8a04}.skill-status.mastery-low{color:#dc2626}.skill-percent{text-align:right;font-size:.875rem;font-weight:600}.reviews-section{margin-top:2rem}.reviews-section h2{margin-bottom:1rem}.review-row{background:var(--muted);border-radius:.5rem;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.5rem;padding:.75rem 1rem;display:flex}.review-item{flex-direction:column;flex:1;gap:.25rem;display:flex}.review-skill{font-size:.875rem}.review-prompt{color:var(--secondary);font-size:.75rem}.review-due{white-space:nowrap;border-radius:9999px;align-self:center;padding:.25rem .75rem;font-size:.75rem}.review-due.overdue{color:#991b1b;background:#fee2e2}.review-due.upcoming{color:#1e40af;background:#dbeafe}.progress-actions{text-align:center;margin-top:2rem}.onboarding{justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.onboarding-container{width:100%;max-width:500px}.onboarding-header{text-align:center;margin-bottom:2rem}.step-indicator{color:var(--secondary);margin-bottom:.5rem;font-size:.875rem;display:block}.onboarding-header h1{margin-bottom:.5rem;font-size:1.75rem}.onboarding-header p{color:var(--secondary)}.level-options{flex-direction:column;gap:1rem;margin-bottom:2rem;display:flex}.level-option{background:var(--muted);border:2px solid var(--border);cursor:pointer;border-radius:.75rem;flex-direction:column;align-items:center;padding:1.5rem;transition:all .2s;display:flex}.level-option:hover{border-color:var(--primary)}.level-option.selected{border-color:var(--primary);background:#2563eb1a}.level-icon{margin-bottom:.5rem;font-size:2rem}.level-title{margin-bottom:.25rem;font-weight:600}.level-desc{color:var(--secondary);font-size:.875rem}.onboarding-actions{flex-direction:column;align-items:center;gap:1rem;display:flex}.btn-text{color:var(--secondary);cursor:pointer;background:0 0;border:none;font-size:.875rem}.btn-text:hover{color:var(--foreground)}.onboarding-progress{margin-bottom:2rem}.progress-steps{justify-content:center;gap:2rem;margin-bottom:1rem;display:flex}.progress-step{opacity:.4;flex-direction:column;align-items:center;gap:.5rem;transition:opacity .3s;display:flex}.progress-step.completed,.progress-step.active{opacity:1}.step-number{background:var(--muted);width:2.5rem;height:2.5rem;color:var(--secondary);border-radius:50%;justify-content:center;align-items:center;font-weight:600;transition:all .3s;display:flex}.progress-step.completed .step-number{background:var(--primary);color:#fff}.progress-step.active .step-number{background:var(--primary);color:#fff;box-shadow:0 0 0 4px #3b82f633}.step-label{color:var(--secondary);font-size:.75rem;font-weight:500}.progress-step.active .step-label{color:var(--foreground)}.progress-bar-container{background:var(--muted);border-radius:2px;height:4px;overflow:hidden}.progress-bar-fill{background:var(--primary);border-radius:2px;height:100%;transition:width .5s}.placement{justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.placement-container{width:100%;max-width:500px}.placement-header{text-align:center;margin-bottom:2rem}.placement-header h1{margin-bottom:1rem;font-size:1.5rem}.placement-progress{margin-top:1rem}.progress-bar{background:var(--border);border-radius:4px;height:8px;margin-bottom:.5rem;overflow:hidden}.progress-fill{background:var(--primary);border-radius:4px;height:100%;transition:width .3s}.progress-text{color:var(--secondary);font-size:.875rem}.placement-card{background:var(--muted);text-align:center;border-radius:.75rem;padding:2rem}.placement-instruction{color:var(--secondary);margin-bottom:.5rem;font-size:.875rem}.placement-prompt{margin-bottom:1.5rem;font-size:1.5rem;font-weight:600}.placement-input{gap:.75rem;display:flex}.placement-input input{border:2px solid var(--border);background:var(--background);color:var(--foreground);border-radius:.5rem;flex:1;padding:.75rem 1rem;font-size:1rem}.placement-input input:focus{border-color:var(--primary);outline:none}.placement-feedback{border-radius:.5rem;padding:1rem}.placement-feedback.correct{color:#166534;background:#dcfce7}.placement-feedback.incorrect{color:#991b1b;background:#fee2e2}.placement-feedback .expected{margin-top:.5rem;font-size:.875rem}.placement-footer{text-align:center;margin-top:2rem}.placement-note{color:var(--secondary);font-size:.875rem}.placement-loading{text-align:center;padding:3rem}.error-page{text-align:center;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.error-container h1{margin-bottom:.5rem;font-size:2rem}.error-container h2{color:var(--secondary);margin-bottom:.5rem;font-size:1.25rem}.error-container p{color:var(--secondary);margin-bottom:1.5rem}.error-actions{justify-content:center;gap:1rem;display:flex}.error-details{text-align:left;max-width:500px;margin-top:2rem}.error-details summary{cursor:pointer;color:var(--secondary);font-size:.875rem}.error-details pre{background:var(--muted);border-radius:.5rem;margin-top:.5rem;padding:1rem;font-size:.75rem;overflow-x:auto}.session-error-card{background:var(--background);border:1px solid var(--border);text-align:center;border-radius:1rem;max-width:500px;margin:2rem auto;padding:2rem}.session-error-card h2{margin-bottom:1rem;font-size:1.5rem}.session-error-card p{color:var(--secondary);margin-bottom:1.5rem}.session-error-card .error-actions{flex-direction:column}.session-error-card .error-actions .btn{width:100%}.session-error-card .error-details{text-align:left;margin-top:1.5rem}.session.error-state{min-height:100vh}@media (max-width:768px){.dashboard-header{flex-direction:column;gap:1rem;padding:1rem}.dashboard-header nav{flex-wrap:wrap;justify-content:center;gap:1rem}.dashboard-content{padding:1rem}.stats-grid,.overview-grid{grid-template-columns:repeat(2,1fr)}.progress-overview .mastery-display{text-align:center;flex-direction:column}.progress-activity{align-items:flex-start}.skill-row{grid-template-columns:1fr;gap:.5rem}.skill-name{font-weight:500}.skill-progress{order:3}.skill-status,.skill-percent{text-align:left}.session-header{flex-direction:column;align-items:flex-start;gap:.5rem}.session-content{max-width:100vw;padding:1rem;overflow-x:hidden}.session-item{overflow-x:hidden}.item-input,.cta-buttons,.complete-actions{flex-direction:column}.summary-grid,.landing .features{grid-template-columns:1fr}.landing .cta{flex-direction:column}.plan-options{grid-template-columns:1fr}.session-progress-container{justify-content:space-between;width:100%}.session-progress-bar{flex:1;max-width:200px}.preview-breakdown{flex-direction:column;gap:.5rem}.preview-item{flex-direction:row;justify-content:space-between;width:100%}.preview-skills{text-align:right;max-width:none}.daily-limit-card,.limit-card{margin:1rem}.daily-limit-actions,.limit-actions{flex-direction:column}}@media (max-width:480px){.stats-grid{grid-template-columns:1fr 1fr}.stat-card{padding:1rem}.stat-card .stat-value{font-size:1.5rem}.overview-grid{grid-template-columns:1fr 1fr}.overview-stat{padding:1rem}.overview-stat .stat-value{font-size:1.25rem}.mastery-value{font-size:2rem}.session-header h1{font-size:1.25rem}.item-card{box-sizing:border-box;border-radius:.75rem;max-width:100%;margin:0;padding:1.25rem}.item-prompt p{font-size:1.5rem}.item-input input{padding:.875rem 1rem;font-size:1rem}.intro-card .intro-word{font-size:1.25rem}.checkpoint-card,.complete-card{padding:1.5rem}.checkpoint-card h2,.complete-card h2{font-size:1.25rem}.session-error-card{margin:1rem;padding:1.5rem}.session-resumed-notice{padding:.5rem .75rem;font-size:.75rem}}@media (pointer:coarse){.btn{min-width:44px;min-height:44px}.btn-large{min-height:52px;padding:1rem 2rem}.btn-icon{min-width:44px;min-height:44px;padding:.5rem}.back-link{margin:-.5rem;padding:.5rem}.item-input input{min-height:48px;font-size:16px}.skill-row{min-height:48px;padding:.75rem}.category-header{min-height:48px;padding:.75rem 1rem}.level-header{min-height:60px;padding:1rem}.hint-btn,.listen-btn{min-width:48px;min-height:48px}}@media (prefers-color-scheme:dark){.placement-feedback.correct{color:#dcfce7;background:#166534}.placement-feedback.incorrect{color:#fee2e2;background:#991b1b}.review-due.overdue{color:#fecaca;background:#7f1d1d}.review-due.upcoming{color:#bfdbfe;background:#1e3a8a}.level-option.selected{background:#3b82f633}}[data-theme=dark] .placement-feedback.correct{color:#dcfce7;background:#166534}[data-theme=dark] .placement-feedback.incorrect{color:#fee2e2;background:#991b1b}[data-theme=dark] .review-due.overdue{color:#fecaca;background:#7f1d1d}[data-theme=dark] .review-due.upcoming{color:#bfdbfe;background:#1e3a8a}[data-theme=dark] .level-option.selected{background:#3b82f633}[data-theme=dark] .preview-resume-card{background:linear-gradient(135deg,#a8c8cc14 0%,#a78bba14 100%)}[data-theme=dark] .checkpoint-stats{background:#3b82f626}[data-theme=dark] .checkpoint-remaining{border-top-color:#ffffff1a}[data-theme=dark] .daily-limit-tip{background:#d4a5741a}[data-theme=dark] .daily-limit-notice{background:#d4a57414;border-color:#d4a5744d}[data-theme=dark] .session-resumed-notice{color:#93c5fd;background:#3b82f626}[data-theme=dark] .session-error{color:#fca5a5;background:#ef444426}.session-limit{justify-content:center;align-items:center;min-height:400px;display:flex}.limit-card{text-align:center;background:var(--muted);border-radius:1rem;max-width:500px;padding:3rem 2rem}.limit-card h2{margin-bottom:1rem;font-size:1.5rem}.limit-card p{color:var(--secondary);margin-bottom:1rem}.limit-tip{background:#2563eb1a;border-radius:.5rem;margin-bottom:1.5rem;padding:1rem;font-size:.875rem}.limit-actions{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.session-checkpoint{justify-content:center;align-items:center;min-height:400px;display:flex}.checkpoint-card{text-align:center;background:var(--muted);border-radius:1rem;max-width:500px;padding:3rem 2rem}.checkpoint-card h2{margin-bottom:1rem;font-size:1.5rem}.checkpoint-card p{color:var(--secondary);margin-bottom:1rem}.checkpoint-stats{background:#2563eb1a;border-radius:.5rem;margin-bottom:1.5rem;padding:1rem;font-size:.875rem}.checkpoint-actions{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.session-complete{justify-content:center;align-items:center;min-height:400px;display:flex}.complete-card{text-align:center;background:var(--muted);border-radius:1rem;max-width:500px;padding:3rem 2rem}.complete-card h2{margin-bottom:1rem;font-size:1.5rem}.complete-card p{color:var(--secondary);margin-bottom:1rem}.complete-tip{background:#10b9811a;border-radius:.5rem;margin-bottom:1.5rem;padding:1rem;font-size:.875rem}.complete-actions{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.session-progress-container{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.session-progress-bar{background:var(--border);border-radius:3px;width:120px;height:6px;overflow:hidden}.session-progress-fill{background:var(--primary);border-radius:3px;height:100%;transition:width .3s}.session-progress-text{color:var(--secondary);white-space:nowrap;font-size:.75rem}.progress-breakdown{color:var(--slate-light);margin-left:.25rem}.session-preview{text-align:center;margin-bottom:1.5rem}.preview-card{text-align:center;background:var(--muted);border-radius:.75rem;padding:3rem 2rem}.preview-breakdown-group{margin-bottom:1rem}.preview-loading{color:var(--secondary);text-align:center;padding:1rem;font-size:.875rem}.preview-summary{margin-bottom:1rem;font-size:1rem}.preview-time{color:var(--secondary);font-weight:400}.preview-breakdown{flex-wrap:wrap;justify-content:center;gap:1rem;margin:0 0 1.5rem;padding:0;list-style:none;display:flex}.preview-item{background:var(--background);border-radius:.5rem;flex-direction:column;align-items:center;min-width:80px;padding:.75rem 1rem;display:flex}.preview-item.reviews{border-left:3px solid var(--cyan)}.preview-item.errors{border-left:3px solid var(--copper)}.preview-item.new-items{border-left:3px solid var(--iris)}.preview-count{color:var(--foreground);font-size:1.5rem;font-weight:600}.preview-label{color:var(--secondary);text-transform:uppercase;letter-spacing:.025em;font-size:.75rem}.preview-skills{color:var(--slate-light);text-overflow:ellipsis;white-space:nowrap;max-width:120px;margin-top:.25rem;font-size:.7rem;overflow:hidden}.preview-daily{color:var(--secondary);margin-bottom:1rem;font-size:.875rem}.preview-warning{color:var(--copper);font-weight:500}.preview-resume-card{border:1px solid var(--border);background:linear-gradient(135deg,#a8c8cc26 0%,#a78bba26 100%);border-radius:.75rem;margin-top:1rem;padding:1rem}.preview-resume-card h4{color:var(--foreground);margin-bottom:.5rem;font-size:.875rem}.preview-resume-card p{color:var(--secondary);margin:0;font-size:.8rem}.btn-skip{border:1px solid var(--border);color:var(--secondary);cursor:pointer;background:0 0;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;transition:all .15s}.btn-skip:hover:not(:disabled){background:var(--muted);border-color:var(--slate-light);color:var(--foreground)}.btn-skip:disabled{opacity:.5;cursor:not-allowed}.checkpoint-stat{padding:.25rem 0;display:block}.checkpoint-stat.daily{color:var(--primary);font-weight:500}.checkpoint-remaining{border-top:1px solid #0000001a;margin-top:1rem;padding-top:1rem}.checkpoint-remaining h4{text-transform:uppercase;color:var(--secondary);letter-spacing:.025em;margin-bottom:.5rem;font-size:.75rem}.remaining-breakdown{justify-content:center;gap:1.5rem;font-size:.8rem;display:flex}.remaining-breakdown span{color:var(--foreground)}.session-daily-limit{justify-content:center;align-items:center;min-height:400px;display:flex}.daily-limit-card{text-align:center;background:var(--muted);border-radius:1rem;max-width:500px;padding:3rem 2rem}.daily-limit-card h2{color:var(--foreground);margin-bottom:1rem;font-size:1.5rem}.daily-limit-card p{color:var(--secondary);margin-bottom:1rem}.daily-limit-tip{color:var(--foreground);background:#d4a57426;border-radius:.5rem;margin-bottom:1.5rem;padding:1rem;font-size:.875rem}.daily-limit-actions{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.daily-limit-notice{border:1px solid var(--copper-light);color:var(--copper);background:#d4a5741a;border-radius:.5rem;margin-top:1rem;padding:.75rem 1rem;font-size:.875rem}.btn-icon{background:var(--muted);border:1px solid var(--border);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;min-width:2.5rem;min-height:2.5rem;padding:.5rem;font-size:1.25rem;transition:all .15s;display:inline-flex}.btn-icon:hover:not(:disabled){background:var(--border);transform:scale(1.05)}.btn-icon:disabled{opacity:.6;cursor:not-allowed}.listen-btn{vertical-align:middle;margin-left:.75rem}.listen-btn-small{vertical-align:middle;min-width:1.75rem;min-height:1.75rem;margin-left:.5rem;padding:.25rem;font-size:1rem}.item-prompt{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;display:flex}.item-prompt p{margin:0}.pack-selection{margin-bottom:2rem}.pack-list{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-top:1rem;display:grid}.pack-card{border:1px solid var(--border);background:var(--muted);border-radius:.75rem;padding:1.25rem;transition:all .15s}.pack-card.unlocked:hover{border-color:var(--primary);box-shadow:0 2px 8px #0000001a}.pack-card.locked{opacity:.7}.pack-card.current{border-color:var(--primary);background:#2563eb0d}.pack-header{align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.pack-level{color:var(--primary);background:#2563eb1a;border-radius:.25rem;padding:.25rem .5rem;font-size:.875rem;font-weight:700}.pack-lock{font-size:1rem}.pack-current-badge{background:var(--primary);color:#fff;border-radius:1rem;margin-left:auto;padding:.125rem .5rem;font-size:.75rem}.pack-card h4{margin-bottom:.75rem;font-size:1rem}.pack-progress{margin-bottom:1rem}.pack-progress-bar{background:var(--border);border-radius:.25rem;height:.5rem;margin-bottom:.25rem;overflow:hidden}.pack-progress-fill{background:var(--primary);border-radius:.25rem;height:100%;transition:width .3s}.pack-progress-text{color:var(--secondary);font-size:.75rem}.pack-unlock-hint{color:var(--secondary);font-size:.75rem;font-style:italic}.pack-cta{justify-content:center;margin-top:1.5rem;display:flex}.pack-cta-card{border:1px solid var(--border);text-align:center;background:#2563eb0d;border-radius:.75rem;flex-direction:column;align-items:center;width:100%;padding:1.5rem;display:flex}.pack-cta-card .cta-buttons{justify-content:center}.btn-small{padding:.5rem 1rem;font-size:.875rem}.analytics{min-height:100vh;padding:2rem}.analytics-container{max-width:1200px;margin:0 auto}.analytics-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem;display:flex}.analytics-header h1{font-size:1.75rem}.analytics-summary{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.summary-card{background:var(--muted);text-align:center;border:1px solid var(--border);border-radius:.75rem;padding:1.5rem}.summary-value{color:var(--primary);font-size:2.5rem;font-weight:700;display:block}.summary-label{color:var(--secondary);margin-top:.5rem;font-size:.875rem;display:block}.analytics-section{background:var(--muted);border:1px solid var(--border);border-radius:.75rem;margin-bottom:1.5rem;padding:1.5rem}.analytics-section h2{margin-bottom:.5rem;font-size:1.25rem}.section-desc{color:var(--secondary);margin-bottom:1rem;font-size:.875rem}.analytics-table-wrapper{overflow-x:auto}.analytics-table{border-collapse:collapse;width:100%;font-size:.875rem}.analytics-table th,.analytics-table td{text-align:left;border-bottom:1px solid var(--border);padding:.75rem}.analytics-table th{background:#0000000d;font-weight:600}[data-theme=dark] .analytics-table th{background:#ffffff0d}.analytics-table tbody tr:hover{background:#00000005}[data-theme=dark] .analytics-table tbody tr:hover{background:#ffffff05}.analytics-table .item-id{font-family:monospace;font-size:.8rem}.analytics-table .error-high,.analytics-table .mastery-low{color:#dc2626;font-weight:600}.analytics-table .no-data{text-align:center;color:var(--secondary);font-style:italic}@media (max-width:640px){.analytics{padding:1rem}.analytics-header h1{font-size:1.5rem}.summary-value{font-size:2rem}.analytics-table{font-size:.8rem}.analytics-table th,.analytics-table td{padding:.5rem}}.btn-oauth{cursor:pointer;border-radius:8px;justify-content:center;align-items:center;width:100%;padding:.75rem 1rem;font-weight:500;transition:all .2s;display:flex}.btn-google{color:#333;background:#fff;border:1px solid #ddd}.btn-google:hover:not(:disabled){background:#f8f8f8;border-color:#ccc}.btn-google:disabled{opacity:.6;cursor:not-allowed}[data-theme=dark] .btn-google{color:#fff;background:#2a2a2a;border-color:#444}[data-theme=dark] .btn-google:hover:not(:disabled){background:#333;border-color:#555}.login-divider{color:var(--secondary);align-items:center;margin:1.5rem 0;font-size:.875rem;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--border);flex:1;height:1px}.login-divider span{padding:0 1rem}.btn-secondary{color:var(--primary);border:1px solid var(--primary);background:0 0}.btn-secondary:hover:not(:disabled){background:var(--primary);color:#fff}.intro-card{border:2px solid var(--primary);background:linear-gradient(135deg,#2563eb0d 0%,#7c3aed0d 100%)}.intro-badge{font-weight:600;color:#fff!important;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)!important}.intro-content{justify-content:center;align-items:center;gap:2rem;margin-bottom:1.5rem;padding:2rem 1rem;display:flex}.intro-prompt,.intro-answer{text-align:center;flex:1;max-width:200px}.intro-label{text-transform:uppercase;color:var(--secondary);margin-bottom:.5rem;font-size:.75rem;display:block}.intro-word{margin:0;font-size:1.75rem;font-weight:600}.intro-arrow{color:var(--primary);font-size:2rem;font-weight:300}.intro-actions{text-align:center}.intro-buttons{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.intro-pause-btn{padding:.5rem 1rem;font-size:.875rem}.intro-auto-advance{color:var(--secondary);margin-top:.75rem;font-size:.875rem}@media (max-width:480px){.intro-content{flex-direction:column;gap:1rem}.intro-arrow{transform:rotate(90deg)}.intro-word{font-size:1.5rem}.intro-buttons{flex-direction:column;width:100%}.intro-buttons .btn{width:100%}}@media (max-width:480px) and (pointer:coarse){.btn{min-height:48px;padding:.75rem 1.25rem;font-size:1rem}.item-input input{min-height:48px;font-size:1.125rem}.feedback-icon{font-size:2rem}.session-controls{gap:1rem}.session-controls .btn{width:100%}.help-button{padding:.5rem .75rem}.help-button-text{display:none}}.retype-card{background:#dc26260d;border:2px solid #dc2626}.retype-badge{font-weight:600;color:#fff!important;background:#dc2626!important}.retype-content{text-align:center;margin-bottom:1rem;padding:1.5rem}.retype-instruction{color:var(--secondary);margin-bottom:1rem;font-size:1rem}.retype-expected{background:var(--background);border-radius:.5rem;align-items:center;gap:.75rem;padding:1rem;font-size:1.5rem;display:inline-flex}.retype-error{color:#991b1b;text-align:center;background:#fee2e2;border-radius:.5rem;margin-bottom:1rem;padding:.75rem}.retype-error p{margin:0;font-size:.875rem}@media (prefers-color-scheme:dark){.retype-card{background:#dc26261a}.retype-error{color:#fecaca;background:#7f1d1d}}[data-theme=dark] .retype-card{background:#dc26261a}[data-theme=dark] .retype-error{color:#fecaca;background:#7f1d1d}.item-input-row{align-items:flex-start;gap:.75rem;display:flex}.item-input-row .item-input{flex:1}.btn-hint{background:var(--muted);border:1px solid var(--border);color:var(--secondary);cursor:pointer;white-space:nowrap;border-radius:.5rem;padding:.75rem 1rem;font-size:.875rem;transition:all .15s}.btn-hint:hover{background:var(--border);color:var(--foreground)}.hint-display{text-align:center;background:#fef3c7;border:1px solid #fcd34d;border-radius:.5rem;margin-bottom:1rem;padding:.75rem}.shortcut-hint{color:var(--secondary);text-align:center;margin-top:.75rem;font-size:.75rem}.hint-label{color:#92400e;margin-right:.5rem;font-size:.75rem}.hint-letter{color:#92400e;font-size:1.25rem;font-weight:600}@media (prefers-color-scheme:dark){.hint-display{background:#78350f;border-color:#b45309}.hint-label,.hint-letter{color:#fef3c7}}[data-theme=dark] .hint-display{background:#78350f;border-color:#b45309}[data-theme=dark] .hint-label,[data-theme=dark] .hint-letter{color:#fef3c7}@media (max-width:480px){.session-header .back-link,.help-button,.btn,.btn-hint,.btn-skip{min-height:44px}.btn-icon{min-width:44px;min-height:44px}.session-header .back-link{align-items:center;padding:.25rem .5rem;display:inline-flex}.item-input-row,.item-input{flex-direction:column}.item-input input,.item-input .btn{width:100%}.item-input input{font-size:16px}.btn-hint,.btn-skip{width:100%}}.level-section{margin:1.5rem 0}.level-header{background:var(--muted);cursor:default;text-align:left;width:100%;color:var(--foreground);border:2px solid #0000;border-radius:.75rem;align-items:center;gap:1rem;margin-bottom:1rem;padding:1.25rem;display:flex}.level-header.level-active{border:2px solid var(--primary);cursor:pointer;background:linear-gradient(135deg,#2563eb0d 0%,#7c3aed0d 100%)}.level-header.level-active:hover{background:linear-gradient(135deg,#2563eb14 0%,#7c3aed14 100%)}.level-header.level-locked{opacity:.6}.level-header.level-coming-soon{opacity:.5}.level-badge{color:#fff;background:var(--primary);border-radius:.5rem;justify-content:center;align-items:center;width:3rem;height:3rem;font-size:1.25rem;font-weight:700;display:flex}.level-badge-locked{background:var(--secondary)}.level-info{flex:1}.level-info h2{margin-bottom:.25rem;font-size:1.125rem}.level-info p{color:var(--secondary);margin:0;font-size:.875rem}.level-progress,.level-status{text-align:right;flex-direction:column;align-items:flex-end;gap:.5rem;display:flex}.level-progress .collapse-indicator{color:var(--primary);font-size:.875rem;font-weight:500}.level-progress-bar{background:var(--border);border-radius:4px;width:120px;height:8px;overflow:hidden}.level-progress-fill{border-radius:4px;height:100%;transition:width .3s}.level-progress-fill.mastery-high{background:#16a34a}.level-progress-fill.mastery-medium{background:#ca8a04}.level-progress-fill.mastery-low{background:#dc2626}.collapse-indicator,.locked-message{color:var(--secondary);font-size:.75rem}.coming-soon{text-transform:uppercase;background:var(--border);color:var(--secondary);border-radius:9999px;padding:.25rem .75rem;font-size:.75rem}.categories-container{flex-direction:column;gap:.75rem;display:flex}.category-group.collapsible{background:var(--muted);border-radius:.75rem;overflow:hidden}.category-header{cursor:pointer;text-align:left;width:100%;color:var(--foreground);background:0 0;border:none;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.category-header:hover{background:#00000008}[data-theme=dark] .category-header:hover{background:#ffffff08}.category-title-row{align-items:center;gap:.75rem;display:flex}.collapse-icon{color:var(--secondary);width:1rem;font-size:.75rem}.category-header h3{margin:0;font-size:1rem;font-weight:600}.category-progress-bar{align-items:center;gap:1rem;min-width:150px;display:flex}.category-bar{background:var(--border);border-radius:4px;flex:1;height:8px;overflow:hidden}.category-bar-fill{border-radius:4px;height:100%;transition:width .3s}.category-bar-fill.mastery-high{background:#16a34a}.category-bar-fill.mastery-medium{background:#ca8a04}.category-bar-fill.mastery-low{background:#dc2626}.category-percent{text-align:right;min-width:40px;font-size:.875rem;font-weight:600}.collapsible .skills-list{border-top:1px solid var(--border);padding:.5rem 0}.skill-group{border-bottom:1px solid var(--border)}.skill-group:last-child{border-bottom:none}.skill-row.skill-expandable{cursor:pointer;text-align:left;width:100%;color:var(--foreground);background:0 0;border:none;grid-template-columns:1.5rem 150px 1fr 100px 50px;align-items:center;gap:1rem;padding:.75rem 1.25rem;display:grid}.skill-row.skill-expandable:hover{background:#00000005}[data-theme=dark] .skill-row.skill-expandable:hover{background:#ffffff05}.skill-expand-icon{color:var(--secondary);font-size:1rem;font-weight:300}.skill-items{background:var(--background);border:1px solid var(--border);border-radius:.5rem;margin:0 1rem .5rem 2.5rem;padding:.5rem 0}.item-row{border-bottom:1px solid var(--border);grid-template-columns:1fr auto 1fr auto;align-items:center;gap:.75rem;padding:.5rem 1rem;font-size:.875rem;display:grid}.item-row:last-child{border-bottom:none}.item-row.item-learning,.item-row.item-practicing{background:#f59e0b14;border-left:3px solid #f59e0b}.item-prompt{font-weight:500}.item-arrow,.item-answer{color:var(--secondary)}.item-status{text-transform:uppercase;border-radius:9999px;padding:.125rem .5rem;font-size:.7rem;font-weight:500}.item-status.item-new{color:#1e40af;background:#dbeafe}.item-status.item-mastered{color:#166534;background:#dcfce7}.item-status.item-learning,.item-status.item-practicing{color:#9a3412;background:#fed7aa}@media (prefers-color-scheme:dark){.item-status.item-new{color:#bfdbfe;background:#1e3a8a}.item-status.item-mastered{color:#dcfce7;background:#166534}.item-status.item-learning,.item-status.item-practicing{color:#fed7aa;background:#9a3412}}[data-theme=dark] .item-status.item-new{color:#bfdbfe;background:#1e3a8a}[data-theme=dark] .item-status.item-mastered{color:#dcfce7;background:#166534}[data-theme=dark] .item-status.item-learning,[data-theme=dark] .item-status.item-practicing{color:#fef3c7;background:#78350f}@media (max-width:768px){.level-header{flex-wrap:wrap}.level-progress,.level-status{text-align:left;width:100%;margin-top:.5rem}.category-progress-bar{min-width:100px}.skill-row.skill-expandable{grid-template-columns:1.5rem 1fr 60px;gap:.5rem}.skill-row.skill-expandable .skill-progress,.skill-row.skill-expandable .skill-status{display:none}.skill-row.skill-expandable .skill-percent{font-size:.75rem}.item-row{grid-template-columns:1fr auto 1fr;gap:.5rem}.item-row .item-status{display:none}}
/*# sourceMappingURL=9b40f4f25bd7d625.css.map*/