:root{--brand-600:#f25420;--brand-50:#fff4ee;--brand-strong:#c2410c;--brand-border:#fed7aa;--ink-900:#0f172a;--ink-700:#334155;--ink-600:#475569;--ink-500:#64748b;--ink-400:#94a3b8;--ink-200:#e2e8f0;--ink-100:#f1f5f9;--ink-50:#f8fafc;--success:#16a34a;--success-strong:#166534;--success-soft:#dcfce7;--success-border:#bbf7d0;--danger:#b91c1c;--danger-bright:#dc2626;--warning-strong:#92400e;--warning-accent:#f59e0b;--warning-soft:#fef3c7;--warning-softer:#fffbeb;--warning-border:#fde68a;--info:#1d4ed8;--info-soft:#eff6ff;--info-border:#93c5fd;--chart-concept:#dc2626;--chart-surface:#f59e0b;--chart-apply:#7c3aed;--chart-other:#9ca3af;--surface:#fff;--surface-muted:#f8fafc;--fs-caption:12px;--fs-meta:13px;--fs-body:14px;--fs-base:16px;--fs-reading:17px;--fs-title:20px;--fs-display:24px;--fs-display-lg:44px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-6:24px;--sp-8:32px;--radius-sm:8px;--radius-lg:12px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(15,23,42,0.05);--shadow-md:0 4px 12px -2px rgba(15,23,42,0.08)}.product-body{margin:0;font-family:ui-sans-serif,system-ui,sans-serif;background:var(--surface);color:var(--ink-900)}.product-topbar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-6);border-bottom:1px solid var(--ink-200)}.product-brand{display:inline-flex;align-items:center;gap:var(--sp-2);font-weight:700;color:var(--ink-900);text-decoration:none}.product-brand img{display:block;height:24px;width:auto}.product-main{max-width:880px;margin:var(--sp-6) auto;padding:0 var(--sp-6)}.product-primary{background:var(--brand-600);color:var(--surface);border:0;border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4)}.product-primary:disabled{opacity:.5;cursor:not-allowed}.product-secondary{background:var(--surface);color:var(--brand-600);border:1px solid var(--brand-600);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4)}.product-secondary:disabled{opacity:.6}.wizard button:disabled{opacity:.5;cursor:not-allowed}.course-occupied{color:var(--ink-500);margin-left:var(--sp-2);font-size:var(--fs-meta)}.product-form{gap:var(--sp-4);max-width:360px}.product-form,.product-form label{display:flex;flex-direction:column}.product-form label{gap:var(--sp-2)}.product-form input{border:1px solid var(--ink-200);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-3);font:inherit}.product-form h1{font-size:var(--fs-title);margin:0}.hub-section h2,.product-main article h2,.teacher-diag h2{font-size:var(--fs-base);font-weight:700}.product-main article h1{font-size:var(--fs-title);margin:0}.product-error{color:var(--danger)}.product-auth-tabs{display:flex;gap:var(--sp-6);border-bottom:1px solid var(--ink-200)}.product-auth-tab{margin:0;padding:var(--sp-2) var(--sp-1);background:none;border:0;border-bottom:2px solid transparent;font:inherit;font-size:var(--fs-body);font-weight:700;color:var(--ink-500);cursor:pointer}.product-auth-tab.is-active{color:var(--brand-strong);border-bottom:2px solid var(--brand-600)}.product-auth-panel{display:flex;flex-direction:column;gap:var(--sp-4)}.product-auth-divider{display:flex;align-items:center;gap:var(--sp-3);margin:0;font-size:var(--fs-meta);color:var(--ink-400)}.product-auth-divider:after,.product-auth-divider:before{content:"";flex:1 1;height:1px;background:var(--ink-200)}.product-hint{margin:0;padding:0;background:none;border:0;align-self:flex-start;font:inherit;font-size:var(--fs-meta);color:var(--ink-500);cursor:pointer}.product-hint:hover{color:var(--brand-strong);text-decoration:underline}.product-hint-note{margin:0;font-size:var(--fs-meta);color:var(--ink-500)}.banner-warning{background:var(--warning-soft);padding:var(--sp-3) var(--sp-3);border-radius:var(--radius-sm)}.project-list{list-style:none;padding:0;margin:var(--sp-4) 0}.project-row{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-2) 0;flex-wrap:wrap}.project-row a{text-decoration:none;color:inherit}.project-subtitle{font-size:var(--fs-meta);color:var(--ink-500)}.status-badge{display:inline-block;color:var(--success-strong);background:var(--success-soft);border-radius:var(--radius-pill);padding:var(--sp-1) var(--sp-3);font-size:var(--fs-caption);font-weight:700;text-transform:capitalize}.plan-empty{color:var(--ink-500);margin:var(--sp-3) 0}.next-hint{color:var(--ink-500);font-size:var(--fs-body);margin-top:var(--sp-2)}.plan-generating{color:var(--warning-strong)}.product-role-nav{display:flex;gap:var(--sp-3);align-items:center}.learn-shell .learn-complete{color:var(--success-strong);font-weight:700}.learn-shell .learn-kp-progress{margin:0 0 var(--sp-2);font-size:var(--fs-meta);color:var(--ink-600)}.project-list .learn-progress-badge{margin-left:var(--sp-2);font-size:var(--fs-caption);padding:2px var(--sp-2);border-radius:var(--radius-pill);background:var(--ink-100);color:var(--ink-600)}.project-list .learn-progress-badge.is-completed{background:var(--success-soft);color:var(--success-strong)}.project-list .learn-progress-badge.is-in_progress{background:var(--brand-50);color:var(--brand-strong)}.learn-shell .preview-banner{background:var(--info-soft);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);margin-bottom:var(--sp-3)}.learn-shell .learn-lpp{border:1px solid var(--ink-200);border-radius:var(--radius-lg);padding:var(--sp-4);min-height:160px;box-shadow:var(--shadow-sm)}.learn-shell .learn-lpp-stages{display:flex;gap:var(--sp-3);margin:0 0 var(--sp-3)}.learn-shell .learn-stage{margin:0;font-size:var(--fs-meta);color:var(--ink-500);font-weight:700}.learn-shell .learn-stage.is-active{color:var(--brand-strong);border-bottom:2px solid var(--brand-600)}.learn-shell footer{margin-top:var(--sp-6)}.learn-match{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--sp-4);gap:var(--sp-4);margin:var(--sp-3) 0}.learn-match-col{display:flex;flex-direction:column;gap:var(--sp-2)}.learn-match-col button{text-align:left;border:1px solid var(--ink-200);background:var(--surface);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3)}.learn-match-col button.is-active{border-color:var(--brand-600);background:var(--brand-50)}.learn-match-col button.is-paired{opacity:.65}.match-result{font-weight:700}.match-result.is-correct{color:var(--success-strong)}.match-result.is-wrong{color:var(--danger)}.detail-actions{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-2);margin:var(--sp-4) 0}.detail-meta{display:flex;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-3);font-size:var(--fs-meta);color:var(--ink-500);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;word-break:break-all}.detail-meta button{margin:0;padding:0;border:0;background:none;font:inherit;color:var(--brand-600);cursor:pointer;text-decoration:underline}.detail-actions p{margin:0}.detail-actions a{display:inline-block}.invite-actions{display:flex;flex-direction:column;gap:var(--sp-4);margin:var(--sp-4) 0}.invite-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.invite-row input,.invite-row textarea{border:1px solid var(--ink-200);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-3);font:inherit}.invite-row-paste{align-items:stretch}.invite-row-paste textarea{display:block;width:100%;min-height:88px;resize:vertical}.product-ok{color:var(--success-strong)}.import-summary{margin:var(--sp-4) 0 0;font-weight:700}.import-row-errors-wrap,.invite-status-wrap{margin:var(--sp-4) 0}.import-row-errors,.invite-status-list{list-style:none;padding:0;margin:var(--sp-2) 0}.import-row-errors li,.invite-status-list li{margin:var(--sp-2) 0;display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}.members-table{width:100%;border-collapse:collapse;margin-top:var(--sp-3)}.members-skeleton-row td{padding:var(--sp-3) var(--sp-2)}.members-skeleton-bar{display:block;height:12px;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--ink-200) 0,var(--surface-muted) 50%,var(--ink-200) 100%);background-size:200% 100%;animation:members-skeleton-pulse 1.2s ease-in-out infinite}.members-skeleton-row td:first-child .members-skeleton-bar{width:72%}.members-skeleton-row td:nth-child(2) .members-skeleton-bar{width:40%}.members-skeleton-row td:nth-child(3) .members-skeleton-bar{width:56%}.members-skeleton-row td:nth-child(4) .members-skeleton-bar{width:48%}.member-weak{font-size:var(--fs-meta);color:var(--brand-strong)}@keyframes members-skeleton-pulse{0%{background-position:100% 0}to{background-position:-100% 0}}.learn-shell .learn-goal{margin:0 0 var(--sp-1);color:var(--ink-900);font-weight:600}.learn-shell .learn-meta{margin:0 0 var(--sp-3);font-size:var(--fs-meta);color:var(--ink-500)}.learn-shell .learn-mastery{list-style:none;margin:var(--sp-2) 0 0;padding:0}.learn-shell .learn-mastery li{font-size:var(--fs-meta);color:var(--ink-600);padding:2px 0}@media (pointer:coarse){.learn-shell .learn-lpp button,.learn-shell .learn-map-kp button,.product-topbar .product-role-nav button{min-height:44px}}.learn-error-type{display:inline-block;font-size:var(--fs-meta);color:var(--brand-strong);background:var(--brand-50);border:1px solid var(--brand-border);border-radius:var(--radius-pill);padding:2px var(--sp-3);margin:var(--sp-1) 0}.learn-hint{font-size:var(--fs-body);color:var(--info);background:var(--info-soft);border-left:3px solid var(--info-border);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);margin:var(--sp-2) 0}.learn-unsure{display:inline-block;font-size:var(--fs-meta);color:var(--warning-strong);background:var(--warning-softer);border:1px solid var(--warning-border);border-radius:var(--radius-pill);padding:var(--sp-1) var(--sp-3);margin:var(--sp-1) var(--sp-2) var(--sp-1) 0}.learn-unsure.is-active{background:var(--warning-soft);border-color:var(--warning-accent);color:var(--warning-strong);font-weight:600}.teacher-diag{margin:var(--sp-4) 0;padding:var(--sp-3);border:1px solid var(--ink-200);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm)}.teacher-diag-empty{color:var(--ink-500);font-size:var(--fs-body)}.teacher-diag-kp{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;padding:var(--sp-2) 0;border-bottom:1px solid var(--ink-100);list-style:none}.teacher-diag-kp-title{min-width:140px;font-weight:600}.teacher-diag-mix{display:inline-flex;width:160px;height:10px;border-radius:var(--radius-sm);overflow:hidden;background:var(--ink-100)}.teacher-diag-mix span[data-error-key=concept_confusion]{background:var(--chart-concept)}.teacher-diag-mix span[data-error-key=surface_matching]{background:var(--chart-surface)}.teacher-diag-mix span[data-error-key=application_error]{background:var(--chart-apply)}.teacher-diag-mix span[data-error-key=incorrect]{background:var(--chart-other)}.teacher-diag-num{font-size:var(--fs-meta);color:var(--ink-700)}.teacher-diag-draft-result{margin-top:var(--sp-3);padding:var(--sp-3);background:var(--surface-muted);border-radius:var(--radius-sm)}.teacher-diag-basis{font-size:var(--fs-meta);color:var(--ink-500)}.teacher-diag-summary{font-weight:600;margin:var(--sp-2) 0 var(--sp-1)}.teacher-diag-kp.is-weakest{border-left:3px solid var(--danger);padding-left:var(--sp-2)}.teacher-diag-ftr{position:relative;display:inline-block;width:120px;height:12px;background:var(--ink-200);border-radius:var(--radius-sm);overflow:hidden}.teacher-diag-ftr-fill{position:absolute;inset:0 auto 0 0;background:var(--success)}.teacher-diag-ftr-label{position:absolute;left:128px;white-space:nowrap;font-size:var(--fs-caption)}.teacher-diag-badge{display:inline-flex;align-items:center;gap:var(--sp-1);margin-right:var(--sp-2);font-size:var(--fs-caption)}.teacher-diag-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.teacher-diag-dot-concept_confusion{background:var(--chart-concept)}.teacher-diag-dot-surface_matching{background:var(--chart-surface)}.teacher-diag-dot-application_error{background:var(--chart-apply)}.teacher-diag-dot-incorrect{background:var(--chart-other)}.teacher-diag-weakest-q{display:block;font-size:var(--fs-caption);color:var(--ink-500)}.teacher-diag-nodata{color:var(--ink-400);font-size:var(--fs-caption)}.adjust-diag-note{font-size:var(--fs-meta);color:var(--ink-500)}.adjust-diag-toggle{display:inline-flex;gap:var(--sp-2);align-items:center;font-size:var(--fs-meta);color:var(--ink-700)}.member-diag-row td{background:var(--surface-muted)}.member-diag-line{margin:var(--sp-1) 0;font-size:var(--fs-meta);color:var(--ink-700)}.member-kp-diag-toggle{border:none;background:none;padding:0 var(--sp-1);color:var(--brand-strong);text-decoration:underline;cursor:pointer;font-size:inherit}.teacher-quality-flags{margin:var(--sp-2) 0;font-size:var(--fs-meta);color:var(--warning-strong)}.teacher-quality-flags-toggle{background:none;border:none;color:var(--warning-strong);text-decoration:underline;padding:0;cursor:pointer}.learn-map{max-width:720px;margin:0 auto}.learn-map-title{margin:0 0 var(--sp-3);font-size:var(--fs-title)}.learn-map-list{list-style:none;margin:var(--sp-4) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--sp-3)}.learn-map-kp{display:flex;align-items:center;gap:var(--sp-3);border:1px solid var(--ink-200);border-radius:var(--radius-lg);padding:var(--sp-4) var(--sp-4);box-shadow:var(--shadow-sm)}.learn-map-kp.is-inprogress{border-color:var(--brand-600);background:var(--brand-50)}.learn-map-kp.is-done .learn-map-kp-title{color:var(--success)}.learn-map-kp.is-todo{border-color:var(--ink-200);background:var(--surface)}.learn-map-kp-title{flex:1 1;text-align:left;font-weight:600}.learn-map-status{font-size:var(--fs-caption);border-radius:var(--radius-pill);padding:2px var(--sp-3);border:1px solid var(--ink-200);color:var(--ink-500);white-space:nowrap}.learn-map-status.is-done{color:var(--success);border-color:var(--success-border)}.learn-map-status.is-inprogress{color:var(--brand-strong);border-color:var(--brand-border)}.learn-map-kp button{border:1px solid var(--brand-600);background:var(--brand-600);color:var(--surface);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-4);font-weight:600;min-height:44px}.learn-focus-header{display:flex;align-items:center;gap:var(--sp-3);position:-webkit-sticky;position:sticky;top:0;background:var(--surface);padding:var(--sp-2) 0;z-index:5;border-bottom:1px solid var(--ink-100);max-width:720px;margin:0 auto var(--sp-3);box-shadow:var(--shadow-md)}.learn-back{border:1px solid var(--ink-200);background:var(--surface);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);color:var(--ink-600)}.learn-focus-card{max-width:720px;margin:0 auto}.learn-concept,.learn-question{border:1px solid var(--ink-200);border-radius:var(--radius-lg);padding:var(--sp-4);margin:var(--sp-3) 0;box-shadow:var(--shadow-sm)}.learn-concept-body{font-size:var(--fs-reading);line-height:1.7}.learn-option{display:block;width:100%;min-height:48px;text-align:left;border:1px solid var(--ink-200);background:var(--surface);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);margin:var(--sp-2) 0;font-size:var(--fs-base)}.learn-option:hover:not(:disabled){border-color:var(--brand-600)}.learn-cloze-slot{display:inline-block;min-width:4em;height:1em;border-bottom:2px solid var(--brand-600);background:var(--brand-50);border-radius:2px 2px 0 0;margin:0 2px;vertical-align:baseline}.learn-match-col button.is-paired{border-color:var(--success)}.learn-match-col button.is-paired:after{content:" ✓";color:var(--success)}.learn-stage.is-done{color:var(--success)}.learn-stage.is-done:after{content:" ✓"}.learn-stage:not(.is-active):not(.is-done){color:var(--ink-400)}.invite-landing-page{min-height:100vh;display:flex;align-items:center;justify-content:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--surface-muted);padding:var(--sp-6);box-sizing:border-box}.invite-landing-card{max-width:420px;width:100%;text-align:center;background:var(--surface);border-radius:20px;padding:40px 28px;box-shadow:0 10px 40px rgba(0,0,0,.08);display:flex;flex-direction:column;gap:var(--sp-4)}.invite-landing-logo{line-height:1}.invite-landing-logo img{display:block;height:56px;width:auto;margin:0 auto}.invite-landing-title{font-size:var(--fs-display);font-weight:800;margin:0;color:var(--ink-900)}.invite-landing-subtitle{font-size:var(--fs-base);color:var(--ink-600);margin:0;line-height:1.6}.invite-landing-primary{background:var(--success);color:var(--surface);font-size:var(--fs-reading);border-radius:var(--radius-lg)}.invite-landing-primary,.invite-landing-secondary{display:block;font-weight:700;padding:var(--sp-4) 0;text-decoration:none}.invite-landing-secondary{border:1.5px solid var(--ink-200);color:var(--ink-900);font-size:var(--fs-base);border-radius:var(--radius-lg)}.invite-landing-note{font-size:var(--fs-meta);color:var(--ink-500);margin:var(--sp-1) 0 0}:is(.product-body,.invite-landing-page) :is(button,a,input,textarea,select):focus-visible{outline:2px solid var(--brand-600);outline-offset:2px}