.ai-tutor{--ai-ink:var(--color-text,#172033);--ai-text-strong:var(--color-text-strong,#0f172a);--ai-muted:var(--color-text-muted,#64748b);--ai-border:var(--color-border,#cbd5e1);--ai-border-subtle:var(--color-border-subtle,#f1f5f9);--ai-surface:var(--color-surface,#fff);--ai-soft:var(--color-surface-soft,#f8fafc);--ai-accent:var(--color-primary-600,#4f46e5);--ai-accent-hover:var(--color-primary-700,#4338ca);--ai-user-bubble:linear-gradient(135deg, var(--color-primary-600,#4f46e5), var(--color-primary-700,#4338ca));background:var(--ai-surface);border:1px solid var(--ai-border);border-radius:var(--radius-2xl,1.25rem);box-shadow:var(--shadow-sm);color:var(--ai-ink);max-width:52rem;transition:box-shadow var(--transition-smooth,.2s ease);flex-direction:column;gap:1.15rem;margin:0 auto;padding:clamp(1.25rem,3vw,1.75rem);display:flex}.ai-tutor__header{border-bottom:1px solid var(--ai-border-subtle);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:1rem;display:flex}.ai-tutor__header-badge-row{align-items:center;gap:.6rem;margin-bottom:.35rem;display:flex}.ai-tutor__eyebrow{color:var(--ai-accent);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:800}.ai-tutor__companion-badge{border-radius:var(--radius-full,9999px);color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0;padding:.15rem .5rem;font-size:.7rem;font-weight:750}.ai-tutor__header h2{color:var(--ai-text-strong);letter-spacing:-.02em;margin:0 0 .35rem;font-size:1.4rem;font-weight:850;line-height:1.25}.ai-tutor__disclaimer{color:var(--ai-muted);margin:0;font-size:.85rem;line-height:1.45}.ai-tutor__new-btn{background:var(--color-primary-50,#eef2ff);border-radius:var(--radius-md,.5rem);color:var(--color-primary-700,#4338ca);cursor:pointer;white-space:nowrap;border:1px solid #c7d2fe;align-items:center;gap:.4rem;padding:.55rem .95rem;font-size:.85rem;font-weight:700;transition:background .15s,border-color .15s,transform .15s;display:inline-flex}.ai-tutor__new-btn:hover:not(:disabled){background:var(--color-primary-100,#e0e7ff);border-color:var(--color-primary-400,#818cf8);transform:translateY(-1px)}.ai-tutor__new-btn:disabled{cursor:not-allowed;opacity:.6}.ai-tutor__history{flex-direction:column;gap:.35rem;max-width:24rem;display:flex}.ai-tutor__history span{color:var(--ai-muted);font-size:.8rem;font-weight:650}.ai-tutor__history select{background:var(--ai-surface);border:1px solid var(--ai-border);border-radius:var(--radius-md,.5rem);color:var(--ai-ink);padding:.55rem .8rem;font-size:.875rem}.ai-tutor__messages{background:var(--ai-soft);border:1px solid var(--ai-border-subtle);border-radius:var(--radius-xl,.875rem);scroll-behavior:smooth;flex-direction:column;gap:1rem;min-height:12rem;max-height:30rem;padding:1.25rem;display:flex;overflow-y:auto}.ai-tutor__empty-state{text-align:center;flex-direction:column;align-items:center;gap:.5rem;margin:auto 0;padding:2rem 1rem;display:flex}.ai-tutor__empty-icon{font-size:2rem}.ai-tutor__empty-title{color:var(--ai-text-strong);margin:0;font-size:1rem;font-weight:700}.ai-tutor__empty-subtitle{color:var(--ai-muted);max-width:28rem;margin:0;font-size:.85rem;line-height:1.45}.ai-tutor__suggestions{margin-top:.5rem}.ai-tutor__suggestions-label{color:var(--ai-muted);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .6rem;font-size:.8rem;font-weight:700}.ai-tutor__suggestions-grid{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));gap:.5rem;display:grid}.ai-tutor__suggestion-chip{background:var(--ai-surface);border:1px solid var(--ai-border);border-radius:var(--radius-md,.5rem);color:var(--ai-text-strong);cursor:pointer;text-align:left;padding:.65rem .85rem;font-size:.85rem;font-weight:550;transition:all .15s}.ai-tutor__suggestion-chip:hover{background:var(--color-primary-50,#eef2ff);border-color:var(--color-primary-400,#818cf8);color:var(--color-primary-800,#3730a3);transform:translateY(-1px)}.ai-tutor__message{border-radius:var(--radius-lg,.75rem);word-break:break-word;flex-direction:column;gap:.35rem;max-width:86%;padding:.85rem 1.1rem;display:flex}.ai-tutor__message-header{align-items:center;gap:.4rem;display:flex}.ai-tutor__avatar{font-size:.95rem}.ai-tutor__role{margin:0;font-size:.78rem;font-weight:750}.ai-tutor__message-body p{white-space:pre-wrap;margin:0;font-size:.95rem;line-height:1.6}.ai-tutor__message--user{background:var(--ai-user-bubble);color:#fff;align-self:flex-end;box-shadow:0 2px 8px #4f46e533}.ai-tutor__message--user .ai-tutor__role{color:#ffffffe6}.ai-tutor__message--user .ai-tutor__message-body p{color:#fff}.ai-tutor__message--assistant{background:var(--ai-surface);border:1px solid var(--ai-border);box-shadow:var(--shadow-xs,0 1px 2px #0000000d);color:var(--ai-ink);align-self:flex-start}.ai-tutor__message--assistant .ai-tutor__role{color:var(--ai-accent)}.ai-tutor__thinking-row{background:var(--ai-surface);border:1px solid var(--ai-border-subtle);border-radius:var(--radius-full,9999px);align-self:flex-start;align-items:center;gap:.6rem;padding:.5rem .95rem;display:inline-flex}.ai-tutor__thinking-status{color:var(--ai-muted);margin:0;font-size:.85rem;font-style:italic}.ai-tutor__thinking-dots{gap:.25rem;display:inline-flex}.ai-tutor__thinking-dots span{background:var(--ai-accent);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite both ai-pulse;display:block}.ai-tutor__thinking-dots span:first-child{animation-delay:-.32s}.ai-tutor__thinking-dots span:nth-child(2){animation-delay:-.16s}@keyframes ai-pulse{0%,80%,to{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1.1)}}.ai-tutor__error{border-radius:var(--radius-md,.5rem);color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;margin:0;padding:.65rem .9rem;font-size:.875rem;font-weight:600}.ai-tutor__composer{flex-direction:column;gap:.5rem;display:flex;position:relative}.ai-tutor__composer label{color:var(--ai-text-strong);font-size:.825rem;font-weight:700}.ai-tutor__composer textarea{background:var(--ai-surface);border:1.5px solid var(--ai-border);border-radius:var(--radius-lg,.75rem);color:var(--ai-ink);resize:vertical;padding:.75rem .95rem;font-family:inherit;font-size:.925rem;line-height:1.5;transition:border-color .15s,box-shadow .15s;box-shadow:inset 0 1px 2px #00000008}.ai-tutor__composer textarea:focus{border-color:var(--ai-accent);outline:none;box-shadow:0 0 0 3px #4f46e526}.ai-tutor__composer textarea:disabled{background:var(--ai-soft);cursor:not-allowed;opacity:.7}.ai-tutor__composer-footer{justify-content:space-between;align-items:center;gap:1rem;display:flex}.ai-tutor__char-count{color:var(--ai-muted);font-size:.78rem;font-weight:600}.ai-tutor__send-btn{background:linear-gradient(135deg, var(--color-primary-600,#4f46e5), var(--color-primary-700,#4338ca));border:1px solid var(--color-primary-700,#4338ca);border-radius:var(--radius-md,.5rem);color:#fff;cursor:pointer;align-items:center;min-height:2.5rem;padding:.55rem 1.15rem;font-size:.875rem;font-weight:750;transition:transform .15s,box-shadow .15s,opacity .15s;display:inline-flex}.ai-tutor__send-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 10px #4f46e540}.ai-tutor__send-btn:disabled{cursor:not-allowed;opacity:.5}.ai-tutor__delete{color:var(--ai-muted);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:.25rem .4rem;font-size:.825rem;text-decoration:underline;transition:color .15s}.ai-tutor__delete:hover{color:var(--color-accent-rose,#e11d48)}.ai-tutor button:focus-visible,.ai-tutor select:focus-visible,.ai-tutor textarea:focus-visible{outline:2px solid var(--ai-accent);outline-offset:2px}@media (width<=640px){.ai-tutor__header{flex-direction:column}.ai-tutor__new-btn{justify-content:center;width:100%}.ai-tutor__suggestions-grid{grid-template-columns:1fr}.ai-tutor__message{max-width:100%}}.auth-form{box-sizing:border-box;border:1px solid var(--color-border-subtle,#d7dee7);background:var(--color-surface,#fff);border-radius:1rem;gap:1rem;width:min(100%,28rem);margin:0 auto;padding:clamp(1.25rem,4vw,2rem);display:grid;box-shadow:0 1rem 2.5rem #0f172a14}.auth-form__header h1{color:var(--color-text-strong,#172033);margin:0;font-size:clamp(1.5rem,4vw,2rem)}.auth-form__header p{color:var(--color-text-muted,#5a6678);margin:.5rem 0 0}.auth-form__field{gap:.4rem;display:grid}.auth-form__field label{color:var(--color-text-strong,#172033);font-weight:650}.auth-form__field input{box-sizing:border-box;border:1px solid var(--color-border,#aeb8c7);background:var(--color-surface,#fff);width:100%;min-height:2.75rem;color:var(--color-text-strong,#172033);font:inherit;border-radius:.5rem;padding:.625rem .75rem}.auth-form__field input:focus-visible,.auth-form__submit:focus-visible{outline:3px solid var(--color-focus,#2563eb);outline-offset:2px}.auth-form__field input[aria-invalid=true]{border-color:var(--color-danger,#b42318)}.auth-form__field-error{color:var(--color-danger,#b42318);margin:0;font-size:.875rem}.auth-form__error{border:1px solid var(--color-danger-border,#f4b8b2);background:var(--color-danger-surface,#fff4f2);color:var(--color-danger,#8f1d14);border-radius:.5rem;padding:.75rem}.auth-form__submit{background:var(--color-action,#2563eb);color:#fff;min-height:2.75rem;font:inherit;cursor:pointer;border:0;border-radius:.5rem;padding:.625rem 1rem;font-weight:700}.auth-form__submit:disabled{opacity:.65;cursor:wait}.auth-route-loading{min-height:8rem;color:var(--color-text-muted,#5a6678);place-items:center;display:grid}@media (prefers-reduced-motion:no-preference){.auth-form{animation:.18s ease-out auth-form-enter}}@keyframes auth-form-enter{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}.gamification-overview{box-sizing:border-box;width:min(100%,72rem);color:var(--color-text-strong,#172033);margin:0 auto;padding:clamp(1rem,3vw,2rem)}.gamification-overview__header,.gamification-streak__header,.gamification-missions__header,.gamification-xp-progress__labels{justify-content:space-between;align-items:center;gap:1rem;display:flex}.gamification-overview__header{margin-bottom:1.5rem}.gamification-overview__header h1,.gamification-streak h2,.gamification-missions h2{margin:0}.gamification-eyebrow{color:var(--color-text-muted,#5a6678);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .35rem;font-size:.75rem;font-weight:750}.gamification-overview__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.gamification-overview__grid>*{border:1px solid var(--color-border-subtle,#d7dee7);background:var(--color-surface,#fff);border-radius:1rem;min-width:0;padding:1.25rem;box-shadow:0 .75rem 2rem #0f172a0f}.gamification-section-heading,.gamification-roadmap-progress__label{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.gamification-section-heading h2{margin:0}.gamification-section-heading>span{color:var(--color-text-muted,#5a6678);font-weight:700}.gamification-empty{color:var(--color-text-muted,#5a6678);margin:1rem 0 0}.gamification-empty a{color:var(--color-action,#2563eb);margin-top:.5rem;font-weight:750;display:inline-block}.gamification-achievements__list,.gamification-roadmap-progress__list{gap:.75rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.gamification-achievements__list li{border:1px solid var(--color-border-subtle,#d7dee7);opacity:.7;background:#f8fafc;border-radius:.75rem;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:.75rem;padding:.75rem;display:grid}.gamification-achievements__list li.is-earned{opacity:1;background:#f0fdf4;border-color:#b8ead0}.gamification-achievement__icon{background:#e2e8f0;border-radius:.75rem;place-items:center;width:2.5rem;height:2.5rem;font-size:1.25rem;display:grid}.is-earned .gamification-achievement__icon{background:#fef3c7}.gamification-achievements h3{margin:0;font-size:1rem}.gamification-achievements p,.gamification-achievements small,.gamification-roadmap-progress small{color:var(--color-text-muted,#5a6678);margin:.25rem 0 0;display:block}.gamification-roadmap-progress__label span{color:var(--color-text-muted,#5a6678);font-size:.875rem}.gamification-roadmap-progress__track{background:#e2e8f0;border-radius:999px;height:.65rem;margin-top:.6rem;overflow:hidden}.gamification-roadmap-progress__track span{border-radius:inherit;background:linear-gradient(90deg,#2563eb,#06b6d4);height:100%;transition:width .3s;display:block}.gamification-roadmap-progress,.gamification-missions{grid-column:1/-1}.gamification-level-badge{background:var(--color-action-soft,#e8efff);min-height:2rem;color:var(--color-action,#1d4ed8);white-space:nowrap;border-radius:999px;align-items:center;padding:.35rem .75rem;font-weight:750;display:inline-flex}.gamification-xp-progress__track{background:var(--color-border-subtle,#d7dee7);border-radius:999px;height:.7rem;margin-top:.75rem;position:relative;overflow:hidden}.gamification-xp-progress__fill{border-radius:inherit;background:linear-gradient(90deg,#2563eb,#7c3aed);height:100%;transition:width .3s;display:block}.gamification-xp-progress p,.gamification-streak__timezone,.gamification-streak__empty,.gamification-mission p{color:var(--color-text-muted,#5a6678);margin:.65rem 0 0;font-size:.9rem}.gamification-streak__status{color:#596273;background:#f1f3f6;border-radius:999px;padding:.35rem .6rem;font-size:.8rem;font-weight:700}.gamification-streak__status.is-active{color:#9a5b00;background:#fff3d6}.gamification-streak__calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;margin:1.25rem 0 0;padding:0;list-style:none;display:grid}.gamification-streak__calendar li{color:var(--color-text-muted,#5a6678);text-align:center;background:#f6f8fb;border-radius:.65rem;justify-items:center;gap:.35rem;padding:.5rem .25rem;font-size:.75rem;display:grid}.gamification-streak__calendar li span:last-child{font-size:1.2rem}.gamification-streak__calendar li.is-complete{color:#11733d;background:#ecfdf3}.gamification-missions__header>span{color:var(--color-text-muted,#5a6678);font-size:.875rem}.gamification-missions ul{gap:.75rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.gamification-mission{border:1px solid var(--color-border-subtle,#d7dee7);border-radius:.75rem;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:.75rem;padding:.75rem;display:grid}.gamification-mission input{accent-color:#2563eb;width:1.15rem;height:1.15rem}.gamification-mission h3{margin:0;font-size:1rem}.gamification-mission__reward{color:#9a5b00;white-space:nowrap;background:#fff3d6;border-radius:.4rem;padding:.3rem .5rem;font-size:.8rem;font-weight:750}.gamification-mission button,.gamification-xp-toast button{background:var(--color-action,#2563eb);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:.45rem;font-weight:700}.gamification-mission button{padding:.5rem .75rem}.gamification-mission button:disabled{color:#5a6678;cursor:default;background:#d4dbe5}.gamification-privacy-notice{color:#475569;background:#f8fafc;border-left:.25rem solid #64748b;margin:1rem 0 0;padding:.75rem 1rem}.gamification-xp-toast{color:#7c4a00;background:#fff9e9;border:1px solid #f4d58d;border-radius:.75rem;align-items:center;gap:.65rem;padding:.75rem .85rem;animation:.18s ease-out gamification-toast-enter;display:inline-flex;box-shadow:0 .75rem 2rem #9a5b002e}.gamification-xp-toast button{color:#7c4a00;background:0 0;width:1.5rem;height:1.5rem;font-size:1.2rem;line-height:1}@keyframes gamification-toast-enter{0%{opacity:0;transform:translateY(.4rem)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.gamification-xp-progress__fill,.gamification-xp-toast{transition:none;animation:none}}@media (width<=42rem){.gamification-overview__grid{grid-template-columns:1fr}.gamification-missions,.gamification-roadmap-progress{grid-column:auto}.gamification-mission{grid-template-columns:auto minmax(0,1fr) auto}.gamification-mission__reward{grid-column:2;justify-self:start}.gamification-mission button{grid-area:1/3/span 2}}.home-container,.home-dashboard{--home-surface:var(--color-surface,#fff);--home-surface-soft:var(--color-surface-soft,#f8fafc);--home-ink:var(--color-text-strong,#0f172a);--home-muted:var(--color-text-muted,#64748b);--home-border:var(--color-border-subtle,#e2e8f0);--home-border-strong:var(--color-border-strong,#94a3b8);--home-primary:var(--color-primary-600,#4f46e5);--home-primary-dark:var(--color-primary-700,#3730a3);--home-primary-soft:var(--color-primary-50,#eef2ff);--home-success:var(--color-success,#059669);--home-warning:var(--color-warning,#d97706);--home-danger:var(--color-danger,#ef4444);box-sizing:border-box;color:var(--home-ink);gap:2.5rem;width:min(100%,72rem);margin:0 auto;padding:1.5rem 1rem 3rem;display:grid}.home-btn-primary{border-radius:var(--radius-md,.5rem);background:var(--home-primary);border:1px solid var(--home-primary);color:#fff;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;min-height:2.75rem;padding:.65rem 1.4rem;font-size:.95rem;font-weight:700;text-decoration:none;transition:background-color .15s,border-color .15s,transform .1s;display:inline-flex}.home-btn-primary:hover{background:var(--home-primary-dark);border-color:var(--home-primary-dark);transform:translateY(-1px)}.home-btn-secondary{border-radius:var(--radius-md,.5rem);background:var(--home-surface);border:1px solid var(--home-border);min-height:2.75rem;color:var(--home-ink);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;padding:.65rem 1.3rem;font-size:.95rem;font-weight:650;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.home-btn-secondary:hover{background:var(--home-surface-soft);border-color:var(--home-border-strong)}.home-btn-primary:focus-visible,.home-btn-secondary:focus-visible,.home-metric-action-link:focus-visible{outline:2px solid var(--home-primary);outline-offset:2px}.home-hero{text-align:center;place-items:center;gap:1.25rem;padding:clamp(2rem,5vw,4rem) 1rem 2rem;display:grid}.home-hero-badge{border-radius:var(--radius-full,9999px);background:var(--home-primary-soft);border:1px solid var(--color-primary-200,#c7d2fe);color:var(--home-primary-dark);align-items:center;gap:.5rem;padding:.35rem .85rem;font-size:.825rem;font-weight:750;display:inline-flex}.home-hero-badge-dot{border-radius:var(--radius-full,9999px);background:var(--home-primary);width:.4rem;height:.4rem}.home-hero-title{letter-spacing:-.025em;max-width:25ch;color:var(--home-ink);margin:0;font-size:clamp(2rem,5vw,3.25rem);font-weight:850;line-height:1.15}.home-hero-subtitle{color:var(--home-muted);max-width:58ch;margin:0;font-size:clamp(1rem,2vw,1.2rem);line-height:1.6}.home-hero-actions{flex-wrap:wrap;justify-content:center;gap:1rem;margin-top:.5rem;display:flex}.home-stats-strip{border-radius:var(--radius-xl,1rem);background:var(--home-surface);border:1px solid var(--home-border);flex-wrap:wrap;justify-content:center;align-items:center;gap:1.5rem;margin-top:2rem;padding:1.25rem 2rem;display:flex;box-shadow:0 4px 20px -2px #0f172a0a}.home-stat-item{text-align:center;gap:.2rem;display:grid}.home-stat-item strong{color:var(--home-primary);font-size:1.5rem;font-weight:800;line-height:1.1}.home-stat-item span{color:var(--home-muted);font-size:.825rem;font-weight:600}.home-stat-divider{background:var(--home-border);width:1px;height:2rem}.home-section{gap:1.75rem;display:grid}.home-section-header{text-align:center;gap:.4rem;max-width:48ch;margin:0 auto;display:grid}.home-section-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--home-primary);margin:0;font-size:.8rem;font-weight:800}.home-section-title{color:var(--home-ink);margin:0;font-size:clamp(1.5rem,3.5vw,2.15rem);font-weight:800;line-height:1.25}.home-section-subtitle{color:var(--home-muted);margin:0;font-size:.975rem;line-height:1.55}.home-pillars-grid{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1.25rem;display:grid}.home-pillar-card{border-radius:var(--radius-xl,1rem);background:var(--home-surface);border:1px solid var(--home-border);gap:.75rem;padding:1.5rem;transition:border-color .15s,transform .15s;display:grid;box-shadow:0 2px 12px -2px #0f172a08}.home-pillar-card:hover{border-color:var(--home-border-strong);transform:translateY(-2px)}.home-pillar-icon{font-size:2rem;line-height:1}.home-pillar-card h3{color:var(--home-ink);margin:0;font-size:1.15rem;font-weight:750}.home-pillar-card p{color:var(--home-muted);margin:0;font-size:.925rem;line-height:1.55}.home-lessons-grid{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:1rem;display:grid}.home-lesson-card{border-radius:var(--radius-lg,.75rem);background:var(--home-surface);border:1px solid var(--home-border);gap:.5rem;padding:1.25rem;display:grid;box-shadow:0 2px 8px -2px #0f172a08}.home-lesson-card-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.home-lesson-number{color:var(--home-primary);text-transform:uppercase;font-size:.775rem;font-weight:800}.home-lesson-category{border-radius:var(--radius-full,9999px);background:var(--home-surface-soft);border:1px solid var(--home-border);color:var(--home-muted);padding:.15rem .5rem;font-size:.725rem;font-weight:700}.home-lesson-card-title{color:var(--home-ink);margin:0;font-size:1.05rem;font-weight:750;line-height:1.35}.home-lesson-card-desc{color:var(--home-muted);margin:0;font-size:.875rem;line-height:1.5}.home-curriculum-cta{text-align:center;place-items:center;gap:.75rem;margin-top:1rem;display:grid}.home-curriculum-cta p{color:var(--home-ink);margin:0;font-weight:650}.home-loop-container{border-radius:var(--radius-xl,1rem);background:var(--home-surface);border:1px solid var(--home-border);grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));align-items:center;gap:.75rem;padding:1.5rem;display:grid}.home-loop-step{text-align:center;place-items:center;gap:.35rem;padding:1rem;display:grid}.home-loop-step-badge{border-radius:var(--radius-full,9999px);background:var(--home-primary);color:#fff;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;font-size:.95rem;font-weight:800;display:flex}.home-loop-step h4{color:var(--home-ink);margin:.25rem 0 0;font-size:.95rem;font-weight:750}.home-loop-step p{color:var(--home-muted);margin:0;font-size:.825rem;line-height:1.45}.home-loop-arrow{color:var(--home-border-strong);text-align:center;font-size:1.5rem}.home-final-cta-box{text-align:center;border-radius:var(--radius-2xl,1.25rem);background:linear-gradient(135deg, var(--home-primary-soft), #fff);border:1px solid var(--color-primary-200,#c7d2fe);place-items:center;gap:1rem;padding:clamp(2rem,4vw,3rem) 1.5rem;display:grid}.home-final-cta-box h3{color:var(--home-ink);margin:0;font-size:clamp(1.35rem,3vw,1.85rem);font-weight:800}.home-final-cta-box p{color:var(--home-muted);max-width:50ch;margin:0;font-size:1rem}.home-final-cta-actions{flex-wrap:wrap;justify-content:center;gap:.85rem;margin-top:.5rem;display:flex}.home-dashboard{gap:1.75rem}.home-dashboard-header{border-radius:var(--radius-xl,1rem);background:var(--home-surface);border:1px solid var(--home-border);justify-content:space-between;align-items:flex-start;gap:1.5rem;padding:1.5rem;display:flex;box-shadow:0 4px 20px -2px #0f172a0a}.home-greeting-text{gap:.35rem;display:grid}.home-greeting-eyebrow{color:var(--home-primary);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:.775rem;font-weight:800}.home-dashboard-header h1{color:var(--home-ink);margin:0;font-size:clamp(1.4rem,3vw,1.95rem);font-weight:800;line-height:1.25}.home-greeting-sub{color:var(--home-muted);margin:0;font-size:.925rem}.home-metrics-grid{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1rem;display:grid}.home-metric-card{border-radius:var(--radius-lg,.75rem);background:var(--home-surface);border:1px solid var(--home-border);gap:.35rem;padding:1.25rem;display:grid;box-shadow:0 2px 10px -2px #0f172a08}.home-metric-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.home-metric-label{color:var(--home-muted);font-size:.825rem;font-weight:700}.home-metric-icon{font-size:1.25rem}.home-metric-value{color:var(--home-ink);font-size:1.75rem;font-weight:850;line-height:1.2}.home-metric-sub{color:var(--home-muted);font-size:.8rem;font-weight:600}.home-metric-action-link{color:var(--home-primary);font-size:.85rem;font-weight:750;text-decoration:none;display:inline-block}.home-metric-action-link:hover{text-decoration:underline}.home-dashboard-section,.home-roadmaps-list{gap:1rem;display:grid}.home-roadmap-item-card{border-radius:var(--radius-xl,1rem);background:var(--home-surface);border:1px solid var(--home-border);gap:1.25rem;padding:1.5rem;display:grid;box-shadow:0 4px 16px -2px #0f172a0a}.home-roadmap-item-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.home-roadmap-tag{color:var(--home-primary);text-transform:uppercase;margin-bottom:.25rem;font-size:.75rem;font-weight:800;display:inline-block}.home-roadmap-item-header h3{color:var(--home-ink);margin:0;font-size:1.25rem;font-weight:750}.home-badge-completed{border-radius:var(--radius-full,9999px);color:var(--home-success);white-space:nowrap;background:#ecfdf5;border:1px solid #a7f3d0;align-items:center;padding:.35rem .75rem;font-size:.825rem;font-weight:750;display:inline-flex}.home-roadmap-progress-info{gap:.4rem;display:grid}.home-roadmap-progress-labels{color:var(--home-muted);justify-content:space-between;font-size:.85rem;font-weight:700;display:flex}.home-roadmap-progress-bar{border-radius:var(--radius-full,9999px);background:var(--home-surface-soft);border:1px solid var(--home-border);width:100%;height:.65rem;overflow:hidden}.home-roadmap-progress-fill{background:var(--home-primary);border-radius:var(--radius-full,9999px);height:100%;transition:width .3s}.home-roadmap-item-footer{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.home-dashboard-two-col{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1.25rem;display:grid}.home-dashboard-subcard{border-radius:var(--radius-xl,1rem);background:var(--home-surface);border:1px solid var(--home-border);gap:1rem;padding:1.25rem;display:grid}.home-dashboard-subcard h3{color:var(--home-ink);margin:0;font-size:1.15rem;font-weight:750}.home-missions-list,.home-achievements-list{gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.home-mission-row,.home-achievement-row{border-radius:var(--radius-md,.5rem);background:var(--home-surface-soft);border:1px solid var(--home-border);align-items:center;gap:.75rem;padding:.65rem .85rem;display:flex}.home-mission-row.is-completed{background:#f0fdf4;border-color:#a7f3d0}.home-mission-details,.home-achievement-details{flex:1;gap:.15rem;display:grid}.home-mission-details strong,.home-achievement-details strong{color:var(--home-ink);font-size:.875rem}.home-mission-details p,.home-achievement-details p{color:var(--home-muted);margin:0;font-size:.8rem}.home-mission-reward{color:var(--home-primary);white-space:nowrap;font-size:.8rem;font-weight:750}.home-muted-text{color:var(--home-muted);margin:0;font-size:.875rem}.home-dashboard-loading,.home-dashboard-error-card,.home-dashboard-empty-card{border-radius:var(--radius-xl,1rem);background:var(--home-surface);border:1px solid var(--home-border);text-align:center;place-items:center;gap:1rem;padding:3rem 1.5rem;display:grid}.home-dashboard-loading p{color:var(--home-muted);margin:0;font-size:.95rem}.home-dashboard-error-card{background:#fef2f2;border-color:#fecaca}.home-dashboard-error-card h3{color:var(--home-danger);margin:0;font-size:1.25rem;font-weight:750}.home-dashboard-error-card p{color:#991b1b;margin:0;font-size:.925rem}.home-dashboard-empty-card h3{color:var(--home-ink);margin:0;font-size:1.25rem;font-weight:750}.home-dashboard-empty-card p{color:var(--home-muted);max-width:45ch;margin:0;font-size:.925rem}.home-dashboard-section-error{border-radius:var(--radius-xl,1rem);text-align:center;background:#fef2f2;border:1px solid #fecaca;place-items:center;gap:.5rem;padding:2rem 1.5rem;display:grid}.home-dashboard-section-error h3{color:var(--home-danger);margin:0;font-size:1.15rem;font-weight:750}.home-dashboard-section-error p{color:#991b1b;margin:0;font-size:.925rem}.home-subcard-error{border-radius:var(--radius-lg,.75rem);color:var(--home-danger);background:#fef2f2;border:1px solid #fecaca;padding:1.25rem}.home-subcard-error p{color:#991b1b;margin:0;font-size:.875rem;font-weight:600}.home-metric-error{color:var(--home-danger);padding:.35rem 0}.home-metric-error p{color:#991b1b;margin:0;font-size:.825rem;font-weight:600}.home-metric-sub.home-metric-sub-error{color:#991b1b;font-size:.775rem}.home-mission-status-label{color:var(--home-muted);font-size:.8rem;font-weight:600}@media (width<=48rem){.home-dashboard-header{flex-direction:column;align-items:stretch}.home-loop-arrow{display:none}}@media (width<=32rem){.home-hero-actions,.home-roadmap-item-footer{flex-direction:column;align-items:stretch}.home-btn-primary,.home-btn-secondary{width:100%}}@media (prefers-reduced-motion:reduce){.home-btn-primary,.home-btn-secondary,.home-pillar-card,.home-roadmap-progress-fill{transition:none}}.lesson-reader{--lesson-ink:var(--color-text,#172033);--lesson-text-strong:var(--color-text-strong,#0f172a);--lesson-muted:var(--color-text-muted,#64748b);--lesson-border:var(--color-border,#e2e8f0);--lesson-border-subtle:var(--color-border-subtle,#f1f5f9);--lesson-surface:var(--color-surface,#fff);--lesson-surface-soft:var(--color-surface-soft,#f8fafc);--lesson-accent:var(--color-primary-600,#4f46e5);--lesson-accent-hover:var(--color-primary-700,#4338ca);--lesson-accent-subtle:var(--color-primary-50,#eef2ff);background:var(--lesson-surface);border:1px solid var(--lesson-border);border-radius:var(--radius-2xl,1.25rem);box-shadow:var(--shadow-sm);color:var(--lesson-ink);max-width:900px;transition:box-shadow var(--transition-smooth,.2s ease);margin:0 auto;position:relative;overflow:hidden}.lesson-progress-bar{background:var(--lesson-border-subtle);width:100%;height:4px;position:relative;overflow:hidden}.lesson-progress-bar-inner{background:linear-gradient(90deg, var(--color-primary-600,#4f46e5), var(--color-accent-cyan,#06b6d4));height:100%;transition:width .3s cubic-bezier(.4,0,.2,1)}.lesson-reader-header{background:linear-gradient(180deg, var(--lesson-surface-soft) 0%, var(--lesson-surface) 100%);border-bottom:1px solid var(--lesson-border-subtle);flex-direction:column;gap:1.25rem;padding:2rem clamp(1.25rem,5vw,3rem) 1.75rem;display:flex}.lesson-breadcrumb{color:var(--lesson-muted);flex-wrap:wrap;align-items:center;gap:.45rem;font-size:.825rem;display:flex}.lesson-breadcrumb a{color:var(--lesson-accent);font-weight:600;text-decoration:none;transition:color .15s}.lesson-breadcrumb a:hover{text-decoration:underline}.breadcrumb-separator{color:var(--color-border,#cbd5e1);-webkit-user-select:none;user-select:none}.breadcrumb-current{color:var(--lesson-text-strong);text-overflow:ellipsis;white-space:nowrap;max-width:20rem;font-weight:500;overflow:hidden}.lesson-reader-heading-wrap{justify-content:space-between;align-items:flex-start;gap:1.25rem;display:flex}.lesson-reader-badges{align-items:center;gap:.6rem;margin-bottom:.5rem;display:flex}.lesson-kind-badge{border-radius:var(--radius-full,9999px);letter-spacing:.05em;text-transform:uppercase;padding:.2rem .55rem;font-size:.72rem;font-weight:750}.lesson-kind-badge.lesson-kind-core{background:var(--color-primary-50,#eef2ff);color:var(--color-primary-700,#4338ca);border:1px solid #c7d2fe}.lesson-kind-badge.lesson-kind-optional{color:#b45309;background:#fffbeb;border:1px solid #fde68a}.lesson-reader-eyebrow{color:var(--lesson-muted);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:700}.lesson-reader-heading h1{color:var(--lesson-text-strong);letter-spacing:-.025em;margin:0 0 .75rem;font-size:clamp(1.75rem,3.5vw,2.35rem);font-weight:850;line-height:1.2}.lesson-meta-row{color:var(--lesson-muted);flex-wrap:wrap;align-items:center;gap:.6rem;font-size:.85rem;display:flex}.lesson-reading-time{align-items:center;gap:.35rem;margin:0;font-weight:550;display:inline-flex}.lesson-reading-time svg{color:var(--lesson-accent)}.lesson-meta-dot{color:var(--color-border,#cbd5e1);font-size:.7rem}.lesson-objectives-count{font-weight:500}.lesson-header-status-area{flex-shrink:0;display:flex}.lesson-complete-badge{border-radius:var(--radius-full,9999px);color:#166534;white-space:nowrap;background:#dcfce7;border:1px solid #86efac;align-items:center;gap:.35rem;padding:.45rem .85rem;font-size:.825rem;font-weight:700;display:inline-flex}.lesson-status-badge.is-learning{background:var(--color-primary-50,#eef2ff);border-radius:var(--radius-full,9999px);color:var(--color-primary-700,#4338ca);white-space:nowrap;border:1px solid #c7d2fe;align-items:center;padding:.45rem .85rem;font-size:.825rem;font-weight:650;display:inline-flex}.lesson-objectives{background:var(--lesson-accent-subtle);border-bottom:1px solid #e0e7ff;padding:1.25rem clamp(1.25rem,5vw,3rem)}.lesson-objectives h2{color:var(--color-primary-900,#312e81);letter-spacing:-.01em;text-transform:uppercase;align-items:center;gap:.5rem;margin:0;font-size:.95rem;font-weight:750;display:flex}.lesson-objectives ul{color:var(--color-primary-800,#3730a3);gap:.4rem;margin:.75rem 0 0;padding-left:1.25rem;line-height:1.6;display:grid}.lesson-objectives li{font-size:.925rem}.lesson-toc{background:var(--lesson-surface-soft);border:1px solid var(--lesson-border);border-radius:var(--radius-lg,.75rem);margin:1.5rem clamp(1.25rem,5vw,3rem) 0;padding:1.1rem 1.35rem}.lesson-toc-title{color:var(--lesson-text-strong);letter-spacing:.04em;text-transform:uppercase;margin:0 0 .65rem;font-size:.85rem;font-weight:750}.lesson-toc-list{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.lesson-toc-item a{color:var(--lesson-muted);font-size:.9rem;line-height:1.4;text-decoration:none;transition:color .15s,transform .15s;display:inline-block}.lesson-toc-item.lesson-toc-level-3{padding-left:1.1rem}.lesson-toc-item a:hover{color:var(--lesson-accent);transform:translate(2px)}.lesson-reader-content{max-width:100%;padding:0 clamp(1.25rem,5vw,3rem)}.lesson-block{border-bottom:1px solid var(--lesson-border-subtle);padding:2rem 0}.lesson-block:last-child{border-bottom:none}.lesson-markdown{color:var(--lesson-ink);font-size:1.05rem;line-height:1.8}.lesson-markdown>:first-child{margin-top:0}.lesson-markdown>:last-child{margin-bottom:0}.lesson-markdown h1,.lesson-markdown h2,.lesson-markdown h3,.lesson-markdown h4,.lesson-markdown h5,.lesson-markdown h6{color:var(--lesson-text-strong);letter-spacing:-.02em;margin:1.75rem 0 .75rem;scroll-margin-top:2rem;font-weight:800;line-height:1.3}.lesson-markdown h2{border-bottom:1px solid var(--lesson-border-subtle);padding-bottom:.4rem;font-size:1.45rem}.lesson-markdown h3{font-size:1.2rem}.lesson-markdown p{margin:1rem 0}.lesson-markdown ul,.lesson-markdown ol{margin:1rem 0;padding-left:1.65rem}.lesson-markdown li+li{margin-top:.4rem}.lesson-markdown a{color:var(--lesson-accent);text-underline-offset:3px;font-weight:550;text-decoration:underline;transition:color .15s}.lesson-markdown a:hover{color:var(--lesson-accent-hover)}.lesson-markdown code{background:var(--lesson-surface-soft);border:1px solid var(--color-border-subtle,#e2e8f0);border-radius:var(--radius-sm,.35rem);color:var(--color-primary-700,#4338ca);padding:.15rem .38rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.88em}.lesson-markdown blockquote{background:var(--lesson-surface-soft);border-left:4px solid var(--lesson-accent);border-radius:0 var(--radius-md,.5rem) var(--radius-md,.5rem) 0;color:var(--lesson-muted);margin:1.25rem 0;padding:.85rem 1.25rem;font-style:italic}.lesson-markdown pre{border-radius:var(--radius-lg,.75rem);color:#f1f5f9;background:#0f172a;border:1px solid #1e293b;margin:1.25rem 0;padding:1.15rem 1.25rem;overflow-x:auto}.lesson-markdown pre code{color:inherit;white-space:pre;background:0 0;border:none;padding:0;font-size:.92rem}.lesson-code-example{border-radius:var(--radius-xl,.875rem);box-shadow:var(--shadow-md);color:#f8fafc;background:#0f172a;border:1px solid #1e293b;margin:1.25rem 0;overflow:hidden}.lesson-code-toolbar{color:#94a3b8;background:#1e293b;border-bottom:1px solid #334155;justify-content:space-between;align-items:center;gap:.75rem;padding:.65rem 1rem;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.8rem;font-weight:600;display:flex}.lesson-code-actions{flex-wrap:wrap;gap:.5rem;display:flex}.lesson-code-actions button{border-radius:var(--radius-md,.5rem);color:#f8fafc;cursor:pointer;font-family:var(--font-sans,system-ui, sans-serif);background:#334155;border:1px solid #475569;align-items:center;gap:.35rem;padding:.35rem .65rem;font-size:.775rem;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.lesson-code-actions button:hover:not(:disabled){background:#475569;border-color:#64748b}.lesson-code-actions button:focus-visible{outline:2px solid var(--color-accent-cyan,#06b6d4);outline-offset:2px}.lesson-code-actions button:disabled{cursor:not-allowed;opacity:.5}.lesson-code-content{tab-size:2;margin:0;padding:1.15rem 1.25rem;font:.92rem/1.65 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;overflow-x:auto}.lesson-code-example figcaption,.lesson-image-block figcaption{color:#94a3b8;background:#1e293b;border-top:1px solid #334155;padding:.55rem 1rem;font-size:.8rem}.lesson-callout{border-radius:var(--radius-lg,.75rem);border-style:solid;border-width:1px 1px 1px 4px;margin:1.25rem 0;padding:1.1rem 1.35rem}.lesson-callout h3{letter-spacing:-.01em;margin:0 0 .45rem;font-size:1rem;font-weight:750}.lesson-callout-info{color:#1e3a8a;background:#eff6ff;border-color:#93c5fd #93c5fd #93c5fd #3b82f6}.lesson-callout-warning{color:#78350f;background:#fffbeb;border-color:#fde68a #fde68a #fde68a #f59e0b}.lesson-callout-tip{color:#064e3b;background:#f0fdf4;border-color:#bbf7d0 #bbf7d0 #bbf7d0 #10b981}.lesson-callout-success{color:#064e3b;background:#ecfdf5;border-color:#a7f3d0 #a7f3d0 #a7f3d0 #059669}.lesson-worked-example{background:var(--lesson-surface-soft);border:1px solid var(--lesson-border);border-radius:var(--radius-xl,.875rem);margin:1.5rem 0;padding:1.35rem clamp(1rem,3vw,1.65rem)}.lesson-worked-example h2{color:var(--lesson-text-strong);margin:0 0 .85rem;font-size:1.3rem;font-weight:800}.lesson-worked-steps{gap:.65rem;margin-top:1rem;display:grid}.lesson-worked-steps details,.lesson-worked-answer{background:var(--lesson-surface);border:1px solid var(--lesson-border);border-radius:var(--radius-md,.5rem);padding:.75rem 1rem;transition:border-color .15s}.lesson-worked-steps details[open],.lesson-worked-answer[open]{border-color:var(--color-primary-400,#818cf8)}.lesson-worked-steps summary,.lesson-worked-answer summary{color:var(--lesson-text-strong);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:700}.lesson-worked-steps .lesson-markdown,.lesson-worked-answer .lesson-markdown{margin-top:.65rem;font-size:.95rem}.lesson-worked-answer{background:#f0fdf4;border-color:#bbf7d0;margin-top:.85rem}.lesson-worked-answer summary{color:#166534}.lesson-reference-card{background:var(--lesson-surface-soft);border:1.5px solid var(--lesson-border);border-radius:var(--radius-xl,.875rem);justify-content:space-between;align-items:center;gap:1.25rem;padding:1.25rem 1.5rem;transition:border-color .15s,transform .15s;display:flex}.lesson-reference-card:hover{border-color:var(--lesson-accent);transform:translateY(-1px)}.lesson-reference-card strong{color:var(--lesson-text-strong);font-size:1.05rem}.lesson-reference-card p{color:var(--lesson-muted);margin:.25rem 0 0;font-size:.88rem}.lesson-reference-card a{background:var(--lesson-surface);border:1px solid var(--lesson-accent);border-radius:var(--radius-md,.5rem);color:var(--lesson-accent);white-space:nowrap;align-items:center;padding:.55rem 1rem;font-size:.875rem;font-weight:700;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.lesson-reference-card a:hover{background:var(--lesson-accent);color:#fff}.lesson-toc-item.is-active a{color:var(--lesson-accent);font-weight:700}.lesson-image-block{background:var(--lesson-surface-soft);border:1px solid var(--lesson-border);border-radius:var(--radius-lg,.75rem);margin:1.5rem 0;overflow:hidden}.lesson-image-block img{max-width:100%;height:auto;margin:0 auto;display:block}.lesson-image-placeholder{background:var(--lesson-surface-soft);border:2px dashed var(--lesson-border);color:var(--lesson-muted);text-align:center;padding:2.5rem;font-size:.9rem}.lesson-reader-footer{background:var(--lesson-surface-soft);border-top:1px solid var(--lesson-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.25rem;padding:1.5rem clamp(1.25rem,5vw,3rem);display:flex}.lesson-nav-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.lesson-nav-back-link,.lesson-nav-prev-btn,.lesson-nav-next-btn{border:1px solid var(--lesson-border);border-radius:var(--radius-md,.5rem);color:var(--lesson-muted);align-items:center;padding:.6rem .9rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:all .15s;display:inline-flex}.lesson-nav-back-link:hover,.lesson-nav-prev-btn:hover,.lesson-nav-next-btn:hover{background:var(--lesson-surface);border-color:var(--lesson-accent);color:var(--lesson-accent)}.lesson-completion-actions{flex-wrap:wrap;align-items:center;gap:.85rem;display:flex}.lesson-quiz-button{background:var(--color-primary-50,#eef2ff);border-radius:var(--radius-md,.5rem);color:var(--color-primary-700,#4338ca);border:1px solid #c7d2fe;align-items:center;padding:.65rem 1.15rem;font-size:.875rem;font-weight:700;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.lesson-quiz-button:hover{background:var(--color-primary-100,#e0e7ff);border-color:var(--color-primary-400,#818cf8)}.lesson-complete-button{background:linear-gradient(135deg, var(--color-primary-600,#4f46e5), var(--color-primary-700,#4338ca));border:1px solid var(--color-primary-700,#4338ca);border-radius:var(--radius-md,.5rem);color:#fff;cursor:pointer;align-items:center;gap:.4rem;padding:.65rem 1.25rem;font-size:.9rem;font-weight:750;transition:transform .15s,box-shadow .15s,background .15s;display:inline-flex;box-shadow:0 1px 2px #4f46e533}.lesson-complete-button:hover:not(:disabled){background:linear-gradient(135deg, var(--color-primary-700,#4338ca), #3730a3);transform:translateY(-1px);box-shadow:0 4px 12px #4f46e54d}.lesson-complete-button:disabled{cursor:wait;opacity:.65}.lesson-completion-meta{color:#166534;align-items:center;gap:.4rem;margin:0;font-size:.9rem;font-weight:650;display:inline-flex}.lesson-reader-state{color:var(--lesson-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:18rem;padding:3rem 1.5rem;display:flex}.lesson-reader-spinner{border:3px solid var(--lesson-border);border-top-color:var(--lesson-accent);border-radius:50%;width:2.25rem;height:2.25rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.lesson-reader-error{color:var(--color-accent-rose,#e11d48);margin:0;font-weight:600}.lesson-error-back-link{color:var(--lesson-accent);margin-top:.5rem;font-size:.9rem;font-weight:650;text-decoration:underline}@media (width<=640px){.lesson-reader-heading-wrap{flex-direction:column}.lesson-header-status-area{align-self:flex-start}.lesson-reference-card{flex-direction:column;align-items:stretch}.lesson-reference-card a{align-self:flex-start}.lesson-reader-footer{flex-direction:column;align-items:stretch}.lesson-completion-actions{flex-direction:column}.lesson-complete-button,.lesson-quiz-button{justify-content:center;width:100%}}.practice-runner,.practice-widget{--practice-surface:var(--color-surface,#fff);--practice-surface-soft:var(--color-surface-soft,#f8fafc);--practice-ink:var(--color-text-strong,#0f172a);--practice-muted:var(--color-text-muted,#64748b);--practice-border:var(--color-border-subtle,#e2e8f0);--practice-border-strong:var(--color-border-strong,#94a3b8);--practice-accent:var(--color-primary-600,#4f46e5);--practice-accent-dark:var(--color-primary-700,#3730a3);--practice-accent-soft:var(--color-primary-50,#eef2ff);--practice-success:var(--color-success,#059669);--practice-danger:var(--color-danger,#ef4444);--practice-code-bg:#0f172a;--practice-code-text:#e2e8f0;box-sizing:border-box;color:var(--practice-ink)}.practice-runner{gap:1.25rem;width:min(100%,58rem);margin:0 auto;display:grid}.practice-runner-header,.practice-widget,.practice-hints,.practice-result,.practice-error-card,.practice-empty-card{background:var(--practice-surface);border:1px solid var(--practice-border);border-radius:var(--radius-xl,1rem);box-shadow:0 4px 20px -2px #0f172a0d}.practice-runner-header{justify-content:space-between;align-items:flex-start;gap:1.25rem;padding:clamp(1.25rem,2.5vw,1.75rem);display:flex}.practice-runner h1{letter-spacing:-.015em;margin:.25rem 0 .5rem;font-size:clamp(1.35rem,2.5vw,1.85rem);font-weight:750;line-height:1.25}.practice-prompt{max-width:65ch;color:var(--practice-muted);margin:0;font-size:.95rem;line-height:1.5}.practice-breadcrumb{color:var(--practice-muted);align-items:center;gap:.4rem;font-size:.85rem;display:flex}.practice-breadcrumb a{color:var(--practice-accent);font-weight:600;text-decoration:none}.practice-breadcrumb a:hover{text-decoration:underline}.practice-eyebrow{color:var(--practice-accent);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:800}.practice-header-badges{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.practice-kind-badge,.practice-requirement-badge,.practice-pass-score-badge,.practice-result-badge{border-radius:var(--radius-full,9999px);white-space:nowrap;align-items:center;padding:.25rem .65rem;font-size:.8rem;font-weight:700;display:inline-flex}.practice-kind-badge{background:var(--practice-accent-soft);border:1px solid var(--color-primary-200,#c7d2fe);color:var(--practice-accent-dark)}.practice-requirement-badge.is-required{color:var(--practice-danger);background:#fef2f2;border:1px solid #fecaca}.practice-requirement-badge.is-optional{background:var(--practice-surface-soft);border:1px solid var(--practice-border);color:var(--practice-muted)}.practice-pass-score-badge{color:var(--practice-success);background:#ecfdf5;border:1px solid #a7f3d0}.practice-hints{gap:.75rem;padding:1.25rem;display:grid}.practice-hint-stepper{flex-wrap:wrap;gap:.5rem;display:flex}.practice-hint-stepper button{border:1px solid var(--practice-border);border-radius:var(--radius-md,.5rem);background:var(--practice-surface);min-height:2.75rem;color:var(--practice-ink);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.5rem 1rem;font-size:.9rem;font-weight:650;transition:background-color .15s,border-color .15s;display:inline-flex}.practice-hint-stepper button:hover{border-color:var(--practice-accent);background:var(--practice-surface-soft)}.practice-hint-stepper button.is-current{border-color:var(--practice-accent);background:var(--practice-accent-soft);color:var(--practice-accent-dark)}.practice-hints p{color:var(--practice-muted);margin:0;font-size:.95rem;line-height:1.5}.practice-submit-button{border:1px solid var(--practice-accent);border-radius:var(--radius-md,.5rem);background:var(--practice-accent);color:#fff;min-height:2.75rem;font:inherit;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;padding:.65rem 1.35rem;font-size:.925rem;font-weight:700;text-decoration:none;transition:background-color .15s,border-color .15s,transform .1s;display:inline-flex}.practice-submit-button:hover:not(:disabled){background:var(--practice-accent-dark);border-color:var(--practice-accent-dark);transform:translateY(-1px)}.practice-submit-button:disabled{cursor:not-allowed;opacity:.6}.practice-secondary-button{border:1px solid var(--practice-border);border-radius:var(--radius-md,.5rem);background:var(--practice-surface);min-height:2.75rem;color:var(--practice-ink);font:inherit;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;padding:.65rem 1.25rem;font-size:.925rem;font-weight:650;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.practice-secondary-button:hover:not(:disabled){border-color:var(--practice-border-strong);background:var(--practice-surface-soft)}.practice-retry-button{border:1px solid var(--practice-danger);border-radius:var(--radius-md,.5rem);min-height:2.75rem;color:var(--practice-danger);font:inherit;cursor:pointer;background:#fff;justify-content:center;align-items:center;padding:.6rem 1.25rem;font-size:.925rem;font-weight:700;transition:background-color .15s;display:inline-flex}.practice-retry-button:hover{background:#fee2e2}.practice-submit-button:focus-visible,.practice-secondary-button:focus-visible,.practice-retry-button:focus-visible,.practice-hint-stepper button:focus-visible,.practice-block-actions button:focus-visible,.practice-git-actions button:focus-visible,.practice-widget input:focus-visible,.practice-widget textarea:focus-visible{outline:2px solid var(--practice-accent);outline-offset:2px}.practice-widget{gap:1.25rem;padding:clamp(1.25rem,2.5vw,1.75rem);display:grid}.practice-widget h2{color:var(--practice-ink);margin:0;font-size:clamp(1.15rem,2vw,1.35rem);font-weight:700}.practice-widget input,.practice-widget textarea{box-sizing:border-box;border:1px solid var(--practice-border);border-radius:var(--radius-md,.5rem);background:var(--practice-surface);width:100%;min-height:2.75rem;color:var(--practice-ink);font:inherit;padding:.65rem .85rem;font-size:.95rem}.practice-widget textarea,.practice-widget code,.practice-widget pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace}.practice-editor-label,.practice-input-slots label{color:var(--practice-ink);gap:.5rem;font-size:.925rem;font-weight:650;display:grid}.practice-code-preview,.practice-terminal-output{border-radius:var(--radius-lg,.75rem);background:var(--practice-code-bg);color:var(--practice-code-text);margin:0;padding:1.15rem;font-size:.925rem;line-height:1.5;overflow-x:auto}.practice-input-slots{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1rem;display:grid}.practice-sql-layout{grid-template-columns:minmax(0,1fr) minmax(14rem,18rem);gap:1.25rem;display:grid}.practice-schema{border-left:1px solid var(--practice-border);gap:.75rem;padding-left:1.25rem;display:grid}.practice-schema h3{color:var(--practice-muted);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:.95rem;font-weight:750}.practice-schema-table{border-radius:var(--radius-md,.5rem);background:var(--practice-surface-soft);border:1px solid var(--practice-border);padding:.65rem}.practice-schema-table strong{color:var(--practice-ink);font-size:.875rem;display:block}.practice-schema ul{color:var(--practice-muted);margin:.35rem 0 0;padding-left:1.15rem;font-size:.85rem}.practice-regex-cases{gap:.75rem;display:grid}.practice-regex-case{border-radius:var(--radius-md,.5rem);background:var(--practice-surface-soft);border:1px solid var(--practice-border);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.practice-regex-case mark{color:#713f12;background:#fde047;border-radius:.25rem;padding:.15rem .35rem;font-weight:700}.practice-match-success{color:var(--practice-success);font-size:.875rem;font-weight:700}.practice-match-muted{color:var(--practice-muted);font-size:.875rem}.practice-parsons-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.practice-parsons-list li{border:1px solid var(--practice-border);border-radius:var(--radius-lg,.75rem);background:var(--practice-surface);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;transition:border-color .15s;display:flex}.practice-parsons-list li:hover{border-color:var(--practice-border-strong)}.practice-parsons-list code{font-size:.95rem}.practice-block-actions{align-items:center;gap:.35rem;display:flex}.practice-block-actions button{border:1px solid var(--practice-border);border-radius:var(--radius-sm,.375rem);background:var(--practice-surface);min-width:2.75rem;min-height:2.75rem;color:var(--practice-ink);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.4rem;font-size:1rem;font-weight:700;transition:background-color .15s,border-color .15s;display:inline-flex}.practice-block-actions button:hover:not(:disabled){border-color:var(--practice-accent);background:var(--practice-surface-soft)}.practice-block-actions button:disabled{cursor:not-allowed;opacity:.4}.practice-terminal-line{border-radius:var(--radius-md,.5rem);background:var(--practice-code-bg);color:#6ee7b7;align-items:center;gap:.5rem;padding:.65rem 1rem;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;display:flex}.practice-terminal-line input{color:inherit;background:0 0;border:0;min-height:2.5rem;padding:0;font-family:inherit}.practice-git-graph{border-left:3px solid var(--practice-accent);margin-bottom:.5rem;padding-left:1rem}.practice-git-branch{color:var(--practice-accent-dark);margin-bottom:.5rem;font-size:.9rem;font-weight:800;display:inline-block}.practice-git-commit{align-items:center;gap:.65rem;margin:.5rem 0;font-size:.925rem;display:flex}.practice-git-node{border:2px solid var(--practice-accent);border-radius:var(--radius-full,9999px);background:var(--practice-surface);width:.75rem;height:.75rem;display:inline-block}.practice-git-actions{flex-wrap:wrap;gap:.5rem;display:flex}.practice-git-actions button{border:1px solid var(--practice-border);border-radius:var(--radius-md,.5rem);background:var(--practice-surface);min-height:2.75rem;color:var(--practice-ink);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.6rem 1rem;font-size:.9rem;font-weight:650;transition:background-color .15s,border-color .15s;display:inline-flex}.practice-git-actions button:hover{border-color:var(--practice-accent);background:var(--practice-surface-soft)}.practice-git-actions button.is-selected{border-color:var(--practice-accent);background:var(--practice-accent-soft);color:var(--practice-accent-dark);font-weight:750}.practice-runner-actions{justify-content:flex-end;align-items:center;gap:1rem;display:flex}.practice-loading{text-align:center;color:var(--practice-muted);margin:0;padding:2rem;font-size:.95rem}.practice-error{border-radius:var(--radius-md,.5rem);color:var(--practice-danger);background:#fef2f2;border:1px solid #fecaca;margin:0;padding:.85rem 1rem;font-size:.9rem;font-weight:650}.practice-error-card,.practice-empty-card{text-align:center;place-items:center;gap:1rem;padding:2.5rem 1.5rem;display:grid}.practice-error-card{background:#fef2f2;border-color:#fecaca}.practice-error-title{color:#991b1b;margin:0;font-size:1.25rem;font-weight:750}.practice-empty-title{color:var(--practice-ink);margin:0;font-size:1.15rem;font-weight:700}.practice-result{text-align:center;place-items:center;gap:1.25rem;padding:clamp(1.5rem,3vw,2.25rem);display:grid}.practice-result-pass{border-color:#a7f3d0}.practice-result-fail{border-color:#fecaca}.practice-result-header{place-items:center;gap:.35rem;display:grid}.practice-result-badge.is-passed{color:var(--practice-success);background:#ecfdf5;border:1px solid #a7f3d0;padding:.35rem .85rem;font-size:1rem}.practice-result-badge.is-failed{color:var(--practice-danger);background:#fef2f2;border:1px solid #fecaca;padding:.35rem .85rem;font-size:1rem}.practice-result-target{color:var(--practice-muted);margin:0;font-size:.875rem}.practice-result-score{color:var(--practice-ink);font-size:clamp(2rem,4vw,2.75rem);font-weight:800;line-height:1.15;display:block}.practice-result-feedback{max-width:55ch;color:var(--practice-muted);margin:0;font-size:1rem;line-height:1.5}.practice-result-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.85rem;margin-top:.5rem;display:flex}@media (width<=48rem){.practice-runner-header{flex-direction:column;align-items:stretch}.practice-sql-layout{grid-template-columns:1fr}.practice-schema{border-left:0;border-top:1px solid var(--practice-border);padding-top:1rem;padding-left:0}}@media (width<=32rem){.practice-runner-actions,.practice-result-actions{flex-direction:column;align-items:stretch}.practice-submit-button,.practice-secondary-button{width:100%}.practice-parsons-list li{flex-direction:column;align-items:stretch;gap:.75rem}.practice-block-actions{justify-content:flex-end}}@media (prefers-reduced-motion:reduce){.practice-submit-button,.practice-secondary-button,.practice-hint-stepper button,.practice-block-actions button,.practice-git-actions button{transition:none}}.quiz-runner,.quiz-result-view,.quiz-attempt-history{--quiz-surface:var(--color-surface,#fff);--quiz-surface-soft:var(--color-surface-soft,#f8fafc);--quiz-ink:var(--color-text-strong,#0f172a);--quiz-muted:var(--color-text-muted,#64748b);--quiz-border:var(--color-border-subtle,#e2e8f0);--quiz-accent:var(--color-primary-600,#4f46e5);--quiz-accent-dark:var(--color-primary-700,#3730a3);--quiz-success:var(--color-success,#059669);--quiz-danger:var(--color-danger,#ef4444);box-sizing:border-box;width:min(100%,58rem);color:var(--quiz-ink);gap:1.25rem;margin:0 auto;display:grid}.quiz-runner-header,.quiz-question-card,.quiz-result-summary,.quiz-result-item,.quiz-attempt-history,.quiz-confirm-dialog,.quiz-error-card,.quiz-empty-card{background:var(--quiz-surface);border:1px solid var(--quiz-border);border-radius:var(--radius-xl,1rem);box-shadow:0 4px 20px -2px #0f172a0d}.quiz-runner-header,.quiz-result-summary{justify-content:space-between;align-items:flex-start;gap:1.25rem;padding:clamp(1.25rem,2.5vw,1.75rem);display:flex}.quiz-runner-header h1,.quiz-result-summary h1{letter-spacing:-.015em;margin:.25rem 0 0;font-size:clamp(1.35rem,2.5vw,1.85rem);font-weight:750;line-height:1.25}.quiz-breadcrumb{color:var(--quiz-muted);align-items:center;gap:.4rem;margin-bottom:.35rem;font-size:.85rem;display:flex}.quiz-breadcrumb a{color:var(--quiz-accent);font-weight:600;text-decoration:none}.quiz-breadcrumb a:hover{text-decoration:underline}.quiz-eyebrow,.quiz-question-number{color:var(--quiz-accent);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:800}.quiz-resume-notice{border-radius:var(--radius-full,9999px);background:var(--color-primary-50,#eef2ff);border:1px solid var(--color-primary-200,#c7d2fe);color:var(--quiz-accent-dark);align-items:center;gap:.4rem;margin:.5rem 0 0;padding:.25rem .65rem;font-size:.825rem;font-weight:650;display:inline-flex}.quiz-primary-button,.quiz-close-button,.quiz-submit-answer{border:1px solid var(--quiz-accent);border-radius:var(--radius-md,.5rem);background:var(--quiz-accent);color:#fff;min-height:2.75rem;font:inherit;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;padding:.65rem 1.25rem;font-size:.925rem;font-weight:700;text-decoration:none;transition:background-color .15s,border-color .15s,transform .1s;display:inline-flex}.quiz-primary-button:hover:not(:disabled),.quiz-close-button:hover:not(:disabled),.quiz-submit-answer:hover:not(:disabled){background:var(--quiz-accent-dark);border-color:var(--quiz-accent-dark);transform:translateY(-1px)}.quiz-secondary-button{border:1px solid var(--quiz-border);border-radius:var(--radius-md,.5rem);background:var(--quiz-surface);min-height:2.75rem;color:var(--quiz-ink);font:inherit;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;padding:.65rem 1.25rem;font-size:.925rem;font-weight:650;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.quiz-secondary-button:hover:not(:disabled){border-color:var(--color-border-strong,#94a3b8);background:var(--quiz-surface-soft)}.quiz-primary-button:disabled,.quiz-secondary-button:disabled,.quiz-close-button:disabled,.quiz-submit-answer:disabled,.quiz-nav-button:disabled{cursor:not-allowed;opacity:.6}.quiz-primary-button:focus-visible,.quiz-secondary-button:focus-visible,.quiz-close-button:focus-visible,.quiz-submit-answer:focus-visible,.quiz-retry-button:focus-visible,.quiz-nav-button:focus-visible,.quiz-step-button:focus-visible,.quiz-boolean-button:focus-visible,.quiz-fill-blank input:focus-visible{outline:2px solid var(--quiz-accent);outline-offset:2px}.quiz-option:has(input:focus-visible){outline:2px solid var(--quiz-accent);outline-offset:2px}.quiz-progress-region{background:var(--quiz-surface-soft);border:1px solid var(--quiz-border);border-radius:var(--radius-lg,.75rem);gap:.5rem;padding:1rem 1.25rem;display:grid}.quiz-progress-label{color:var(--quiz-muted);justify-content:space-between;align-items:center;font-size:.875rem;display:flex}.quiz-progress-label strong{color:var(--quiz-ink);font-weight:700}.quiz-progress-bar{background:var(--color-border-subtle,#e2e8f0);border-radius:var(--radius-full,9999px);height:.65rem;overflow:hidden}.quiz-progress-bar span{background:var(--quiz-accent);border-radius:var(--radius-full,9999px);height:100%;transition:width .25s;display:block}.quiz-question-stepper{background:var(--quiz-surface);border:1px solid var(--quiz-border);border-radius:var(--radius-lg,.75rem);flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem;display:flex}.quiz-step-button{border:1px solid var(--quiz-border);border-radius:var(--radius-md,.5rem);background:var(--quiz-surface);min-width:2.75rem;min-height:2.75rem;color:var(--quiz-ink);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.4rem .65rem;font-size:.9rem;font-weight:700;transition:background-color .15s,border-color .15s,transform .1s;display:inline-flex}.quiz-step-button:hover:not(:disabled){border-color:var(--quiz-accent);background:var(--quiz-surface-soft)}.quiz-step-button.is-current{background:var(--quiz-accent);border-color:var(--quiz-accent);color:#fff}.quiz-step-button.is-submitted:not(.is-current){color:var(--quiz-success);background:#ecfdf5;border-color:#a7f3d0}.quiz-step-button.is-answered:not(.is-current):not(.is-submitted){background:#f0fdf4;border-color:#bbf7d0}.quiz-question-card{gap:1.25rem;padding:clamp(1.25rem,3vw,2rem);display:grid}.quiz-question-header{gap:.45rem;display:grid}.quiz-question-header h2{color:var(--quiz-ink);margin:0;font-size:clamp(1.15rem,2vw,1.35rem);font-weight:700;line-height:1.4}.quiz-options{border:0;gap:.75rem;margin:0;padding:0;display:grid}.quiz-option{border:1px solid var(--quiz-border);border-radius:var(--radius-lg,.75rem);background:var(--quiz-surface);cursor:pointer;align-items:center;gap:.85rem;min-height:3rem;padding:.85rem 1.15rem;transition:border-color .15s,background-color .15s,box-shadow .15s;display:flex}.quiz-option:hover:has(input:not(:disabled)){border-color:var(--quiz-accent);background:var(--quiz-surface-soft)}.quiz-option.is-selected{border-color:var(--quiz-accent);background:var(--color-primary-50,#eef2ff);box-shadow:0 0 0 1px var(--quiz-accent)}.quiz-option input{width:1.2rem;height:1.2rem;accent-color:var(--quiz-accent);cursor:pointer}.quiz-option__label{color:var(--quiz-ink);font-size:.975rem;font-weight:500;line-height:1.45}.quiz-boolean-options{border:0;flex-wrap:wrap;gap:.85rem;margin:0;padding:0;display:flex}.quiz-boolean-button{border:1px solid var(--quiz-border);border-radius:var(--radius-lg,.75rem);background:var(--quiz-surface);min-width:8rem;min-height:3.25rem;color:var(--quiz-ink);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.75rem 1.5rem;font-size:1rem;font-weight:700;transition:background-color .15s,border-color .15s,box-shadow .15s;display:inline-flex}.quiz-boolean-button:hover:not(:disabled){border-color:var(--quiz-accent);background:var(--quiz-surface-soft)}.quiz-boolean-button[aria-pressed=true]{border-color:var(--quiz-success);color:var(--quiz-success);box-shadow:0 0 0 1px var(--quiz-success);background:#ecfdf5}.quiz-fill-blank{color:var(--quiz-ink);gap:.5rem;font-size:.95rem;font-weight:600;display:grid}.quiz-fill-blank input{box-sizing:border-box;border:1px solid var(--quiz-border);border-radius:var(--radius-md,.5rem);background:var(--quiz-surface);width:100%;min-height:3rem;color:var(--quiz-ink);font:inherit;padding:.75rem 1rem;font-size:1rem}.quiz-question-actions{border-top:1px solid var(--quiz-border);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:1rem;padding-top:.75rem;display:flex}.quiz-answer-locked{color:var(--quiz-success);align-items:center;gap:.35rem;font-size:.875rem;font-weight:700;display:inline-flex}.quiz-question-navigation{justify-content:space-between;align-items:center;gap:1rem;padding:.5rem 0;display:flex}.quiz-nav-button{border:1px solid var(--quiz-border);border-radius:var(--radius-md,.5rem);background:var(--quiz-surface);min-height:2.75rem;color:var(--quiz-ink);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.6rem 1.15rem;font-size:.9rem;font-weight:650;transition:background-color .15s,border-color .15s;display:inline-flex}.quiz-nav-button:hover:not(:disabled){border-color:var(--quiz-accent);background:var(--quiz-surface-soft)}.quiz-question-counter{color:var(--quiz-muted);font-size:.9rem;font-weight:650}.quiz-loading{border-radius:var(--radius-lg,.75rem);background:var(--quiz-surface-soft);color:var(--quiz-muted);text-align:center;margin:0;padding:1.5rem;font-size:.95rem}.quiz-error{border-radius:var(--radius-md,.5rem);color:var(--quiz-danger);background:#fef2f2;border:1px solid #fecaca;margin:0;padding:.85rem 1rem;font-size:.9rem;font-weight:600}.quiz-error-card,.quiz-empty-card{text-align:center;place-items:center;gap:1rem;padding:2.5rem 1.5rem;display:grid}.quiz-error-card{background:#fef2f2;border-color:#fecaca}.quiz-error-title{color:#991b1b;margin:0;font-size:1.25rem;font-weight:750}.quiz-retry-button{border:1px solid var(--quiz-danger);border-radius:var(--radius-md,.5rem);min-height:2.75rem;color:var(--quiz-danger);font:inherit;cursor:pointer;background:#fff;justify-content:center;align-items:center;padding:.6rem 1.25rem;font-size:.925rem;font-weight:700;transition:background-color .15s;display:inline-flex}.quiz-retry-button:hover{background:#fee2e2}.quiz-empty-title{color:var(--quiz-ink);margin:0;font-size:1.15rem;font-weight:700}.quiz-dialog-backdrop{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a80;justify-content:center;align-items:center;padding:1.25rem;display:flex;position:fixed;inset:0}.quiz-confirm-dialog{box-sizing:border-box;gap:1rem;width:min(100%,28rem);padding:1.5rem;display:grid}.quiz-confirm-dialog h2{color:var(--quiz-ink);margin:0;font-size:1.25rem;font-weight:750}.quiz-confirm-dialog p{color:var(--quiz-muted);margin:0;font-size:.95rem;line-height:1.5}.quiz-dialog-actions{justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.quiz-dialog-actions button{border-radius:var(--radius-md,.5rem);min-height:2.75rem;font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:.6rem 1.15rem;font-size:.9rem;font-weight:700;display:inline-flex}.quiz-dialog-actions button:first-child{border:1px solid var(--quiz-border);background:var(--quiz-surface);color:var(--quiz-ink)}.quiz-dialog-actions button:last-child{border:1px solid var(--quiz-accent);background:var(--quiz-accent);color:#fff}.quiz-result-summary{flex-wrap:wrap}.quiz-result-passed,.quiz-result-failed{align-items:center;margin:.5rem 0 0;font-size:1.15rem;font-weight:800;display:inline-flex}.quiz-result-passed{color:var(--quiz-success)}.quiz-result-failed{color:var(--quiz-danger)}.quiz-result-pass-target{color:var(--quiz-muted);margin:.35rem 0 0;font-size:.875rem}.quiz-result-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.quiz-result-list{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.quiz-result-item{border-left-width:.35rem;gap:.75rem;padding:1.25rem 1.5rem;display:grid}.quiz-result-item-correct{border-left-color:var(--quiz-success)}.quiz-result-item-incorrect{border-left-color:var(--quiz-danger)}.quiz-result-item-heading{color:var(--quiz-muted);justify-content:space-between;align-items:center;font-size:.875rem;font-weight:700;display:flex}.quiz-result-item h2{color:var(--quiz-ink);margin:0;font-size:1.1rem;font-weight:700;line-height:1.4}.quiz-result-item p{margin:0;font-size:.925rem;line-height:1.5}.quiz-remediation-list{color:var(--quiz-accent-dark);margin:0;padding-left:1.25rem;font-size:.875rem}.quiz-attempt-history{padding:1.25rem 1.5rem}.quiz-attempt-history h2{color:var(--quiz-ink);margin:0 0 1rem;font-size:1.25rem;font-weight:750}.quiz-history-table-wrap{overflow-x:auto}.quiz-attempt-history table{border-collapse:collapse;width:100%;min-width:36rem}.quiz-attempt-history th,.quiz-attempt-history td{border-bottom:1px solid var(--quiz-border);text-align:left;padding:.75rem .85rem;font-size:.9rem}.quiz-attempt-history th{background:var(--quiz-surface-soft);color:var(--quiz-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:700}.quiz-history-empty-cell{text-align:center;color:var(--quiz-muted);padding:2rem 1rem}.quiz-history-score{color:var(--quiz-ink);font-weight:700}.quiz-status-badge,.quiz-result-badge{border-radius:var(--radius-full,9999px);align-items:center;padding:.2rem .55rem;font-size:.75rem;font-weight:700;display:inline-flex}.quiz-status-badge--closed{background:var(--quiz-surface-soft);color:var(--quiz-muted);border:1px solid var(--quiz-border)}.quiz-status-badge--open{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe}.quiz-result-badge--passed{color:var(--quiz-success);background:#ecfdf5;border:1px solid #a7f3d0}.quiz-result-badge--failed{color:var(--quiz-danger);background:#fef2f2;border:1px solid #fecaca}.quiz-history-pagination{justify-content:flex-end;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.quiz-history-pagination button{border:1px solid var(--quiz-border);border-radius:var(--radius-sm,.375rem);background:var(--quiz-surface);min-height:2.25rem;color:var(--quiz-ink);font:inherit;cursor:pointer;align-items:center;padding:.4rem .85rem;font-size:.85rem;font-weight:650;display:inline-flex}.quiz-history-pagination button:hover:not(:disabled){border-color:var(--quiz-accent);background:var(--quiz-surface-soft)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=48rem){.quiz-runner-header,.quiz-result-summary{flex-direction:column;align-items:stretch}.quiz-close-button,.quiz-result-actions{width:100%}.quiz-result-actions .quiz-primary-button,.quiz-result-actions .quiz-secondary-button{text-align:center;flex:auto}}@media (width<=32rem){.quiz-question-actions,.quiz-dialog-actions,.quiz-question-navigation{flex-direction:column;align-items:stretch}.quiz-submit-answer,.quiz-dialog-actions button,.quiz-nav-button{width:100%}.quiz-question-counter{text-align:center}.quiz-boolean-button{flex:auto;min-width:0}}@media (prefers-reduced-motion:reduce){.quiz-primary-button,.quiz-secondary-button,.quiz-close-button,.quiz-submit-answer,.quiz-step-button,.quiz-progress-bar span,.quiz-option{transition:none}}.review-queue,.review-session{--review-surface:var(--color-surface,#fff);--review-surface-soft:var(--color-surface-soft,#f8fafc);--review-ink:var(--color-text-strong,#0f172a);--review-muted:var(--color-text-muted,#64748b);--review-border:var(--color-border-subtle,#e2e8f0);--review-action:var(--color-primary-600,#4f46e5);--review-action-strong:var(--color-primary-700,#3730a3);--review-danger:var(--color-danger,#ef4444);box-sizing:border-box;border:1px solid var(--review-border);border-radius:var(--radius-xl,1rem);background:var(--review-surface);width:min(100%,72rem);color:var(--review-ink);margin:0 auto;padding:clamp(1.25rem,3vw,2.5rem);box-shadow:0 4px 20px -2px #0f172a0d}.review-queue__header,.review-session__header{margin-bottom:1.5rem}.review-queue__header,.review-session__header-row{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.review-queue__header h2,.review-session__header h2,.review-queue-card h3,.review-result h3{color:var(--review-ink);letter-spacing:-.015em;margin:0;font-weight:750}.review-queue__header h2,.review-session__header h2{font-size:clamp(1.35rem,2.5vw,1.75rem)}.review-eyebrow{color:var(--review-action);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .35rem;font-size:.75rem;font-weight:800}.review-session-prompt{color:var(--review-muted);margin:.5rem 0 0;font-size:.95rem}.review-queue__count{border-radius:var(--radius-full,9999px);background:var(--color-primary-50,#eef2ff);color:var(--color-primary-700,#3730a3);align-items:center;padding:.35rem .85rem;font-size:.85rem;font-weight:700;display:inline-flex}.review-queue__list{gap:1rem;margin:1.25rem 0 0;padding:0;list-style:none;display:grid}.review-queue-card{border:1px solid var(--review-border);border-radius:var(--radius-lg,.75rem);background:var(--review-surface);justify-content:space-between;align-items:center;gap:1.25rem;padding:1.25rem;transition:border-color .2s,transform .15s,box-shadow .2s;display:flex}.review-queue-card:hover{border-color:var(--color-primary-200,#c7d2fe);transform:translateY(-1px);box-shadow:0 8px 24px -4px #4f46e514}.review-queue-card__main{flex:auto;min-width:0}.review-queue-card__heading{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.review-queue-card h3{font-size:1.075rem;line-height:1.35}.review-source-kind{border-radius:var(--radius-full,9999px);background:var(--review-surface-soft);border:1px solid var(--review-border);color:var(--review-muted);align-items:center;padding:.25rem .65rem;font-size:.75rem;font-weight:650;display:inline-flex}.review-due-badge{border-radius:var(--radius-full,9999px);align-items:center;gap:.3rem;padding:.25rem .65rem;font-size:.75rem;font-weight:700;display:inline-flex}.review-due-badge.is-due{background:var(--color-primary-50,#eef2ff);border:1px solid var(--color-primary-200,#c7d2fe);color:var(--color-primary-700,#3730a3)}.review-due-badge.is-overdue{color:#be123c;background:#fff1f2;border:1px solid #fecdd3}.review-reason{border-radius:var(--radius-md,.5rem);color:#92400e;background:#fffbeb;border:1px solid #fde68a;margin:.65rem 0;padding:.3rem .65rem;font-size:.825rem;font-weight:600;display:inline-block}.review-queue-card__meta{color:var(--review-muted);flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;font-size:.85rem;display:flex}.review-queue-card__meta time{color:var(--color-text-main,#1e293b);font-weight:600}.review-queue__empty{text-align:center;border:2px dashed var(--review-border);border-radius:var(--radius-lg,.75rem);background:var(--review-surface-soft);flex-direction:column;justify-content:center;align-items:center;margin-top:1rem;padding:3rem 1.5rem;display:flex}.review-empty-icon{margin-bottom:.75rem;font-size:2.25rem}.review-empty-title{color:var(--review-ink);margin:0 0 .5rem;font-size:1.15rem;font-weight:700}.review-empty-hint{max-width:32rem;color:var(--review-muted);margin:0 0 1.5rem;font-size:.925rem;line-height:1.55}.review-empty-cta{border-radius:var(--radius-md,.5rem);background:var(--review-action);color:#fff;justify-content:center;align-items:center;min-height:2.75rem;padding:.65rem 1.35rem;font-size:.925rem;font-weight:650;text-decoration:none;transition:background-color .15s,transform .15s;display:inline-flex}.review-empty-cta:hover{background:var(--review-action-strong);transform:translateY(-1px)}.review-feedback{border-radius:var(--radius-md,.5rem);background:var(--review-surface-soft);color:var(--review-muted);margin:1rem 0;padding:1rem 1.25rem;font-size:.95rem}.review-feedback--error{background:var(--color-danger-soft,#fef2f2);color:var(--color-danger-strong,#b91c1c);border:1px solid #fecaca;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.review-feedback--error p{margin:0}.review-retry-button{border:1px solid var(--color-danger,#ef4444);border-radius:var(--radius-sm,.375rem);color:var(--color-danger-strong,#b91c1c);cursor:pointer;background:#fff;padding:.4rem .85rem;font-size:.85rem;font-weight:700;transition:background-color .15s}.review-retry-button:hover{background:#fee2e2}.review-primary-button,.review-secondary-button{border-radius:var(--radius-md,.5rem);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;min-height:2.75rem;padding:.65rem 1.25rem;font-size:.925rem;font-weight:700;text-decoration:none;transition:background-color .15s,border-color .15s,transform .1s;display:inline-flex}.review-primary-button{border:1px solid var(--review-action);background:var(--review-action);color:#fff;flex:none}.review-primary-button:hover:not(:disabled){background:var(--review-action-strong);transform:translateY(-1px)}.review-secondary-button{border:1px solid var(--review-border);background:var(--review-surface);color:var(--review-ink)}.review-secondary-button:hover:not(:disabled){border-color:var(--color-border-strong,#94a3b8);background:var(--review-surface-soft)}.review-primary-button:disabled,.review-secondary-button:disabled{cursor:not-allowed;opacity:.6}.review-primary-button:focus-visible,.review-secondary-button:focus-visible,.review-retry-button:focus-visible,.review-quality button:focus-visible,.review-empty-cta:focus-visible{outline:2px solid var(--review-action);outline-offset:2px}.review-quality{border:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:.85rem;min-width:0;margin-top:1.5rem;padding:0;display:grid}.review-visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.review-quality button{border:1px solid var(--review-border);border-radius:var(--radius-lg,.75rem);background:var(--review-surface);min-height:3.5rem;color:var(--review-ink);font:inherit;text-align:left;cursor:pointer;align-items:center;gap:.85rem;padding:.75rem 1rem;font-size:.95rem;font-weight:650;transition:border-color .15s,background-color .15s,transform .1s,box-shadow .15s;display:flex}.review-quality button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #0f172a0f}.review-quality__score{border-radius:var(--radius-full,9999px);flex:0 0 2rem;place-items:center;width:2rem;height:2rem;font-size:.95rem;font-weight:800;transition:background-color .15s,color .15s;display:grid}.review-quality-btn--danger{border-color:var(--review-border)}.review-quality-btn--danger .review-quality__score{color:#e11d48;background:#ffe4e6}.review-quality-btn--danger:hover:not(:disabled),.review-quality-btn--danger[aria-pressed=true]{background:#fff1f2;border-color:#f43f5e}.review-quality-btn--warning .review-quality__score{color:#d97706;background:#fef3c7}.review-quality-btn--warning:hover:not(:disabled),.review-quality-btn--warning[aria-pressed=true]{background:#fffbeb;border-color:#f59e0b}.review-quality-btn--info .review-quality__score{color:#0284c7;background:#e0f2fe}.review-quality-btn--info:hover:not(:disabled),.review-quality-btn--info[aria-pressed=true]{background:#f0f9ff;border-color:#0ea5e9}.review-quality-btn--success .review-quality__score{color:#059669;background:#d1fae5}.review-quality-btn--success:hover:not(:disabled),.review-quality-btn--success[aria-pressed=true]{background:#ecfdf5;border-color:#10b981}.review-quality-btn--primary .review-quality__score{color:#4f46e5;background:#e0e7ff}.review-quality-btn--primary:hover:not(:disabled),.review-quality-btn--primary[aria-pressed=true]{background:#eef2ff;border-color:#6366f1}.review-quality button[aria-pressed=true]{border-width:2px;box-shadow:0 0 0 2px #4f46e526}.review-quality button:disabled{cursor:not-allowed;opacity:.6}.review-result{border-radius:var(--radius-xl,1rem);color:#166534;background:#f0fdf4;border:1px solid #86efac;margin-top:1.5rem;padding:1.5rem;box-shadow:0 8px 24px -4px #22c55e1f}.review-result__header{align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.review-result__icon{border-radius:var(--radius-full,9999px);color:#fff;background:#22c55e;place-items:center;width:2rem;height:2rem;font-size:1.1rem;font-weight:800;display:grid}.review-result h3{color:#14532d;font-size:1.15rem}.review-result__metrics{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.85rem;margin-bottom:1rem;display:grid}.review-result__metric-card{border-radius:var(--radius-md,.5rem);background:#fff;border:1px solid #bbf7d0;padding:.85rem 1rem}.review-result__metric-card p{color:#14532d;margin:0;font-size:.95rem;font-weight:700}.review-result__due{color:#15803d;margin:.75rem 0 1.25rem;font-size:.925rem}.review-result__due time{color:#14532d;font-weight:750}.review-result__actions{border-top:1px solid #bbf7d0;flex-wrap:wrap;align-items:center;gap:.75rem;padding-top:1rem;display:flex}@media (width<=48rem){.review-queue-card{flex-direction:column;align-items:stretch;gap:1rem}.review-primary-button{width:100%}.review-quality{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=30rem){.review-quality{grid-template-columns:1fr}.review-result__actions{flex-direction:column;width:100%}.review-result__actions .review-primary-button,.review-result__actions .review-secondary-button{width:100%}}.roadmap-container{flex-direction:column;gap:1.75rem;width:100%;display:flex}.roadmap-header{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:clamp(1.5rem,3.5vw,2.25rem);position:relative;overflow:hidden}.roadmap-header:before{content:"";background:linear-gradient(90deg, var(--color-primary-600), var(--color-accent-cyan), var(--color-accent-purple));height:4px;position:absolute;top:0;left:0;right:0}.roadmap-breadcrumb-wrapper{margin-bottom:.75rem}.roadmap-breadcrumb{color:var(--color-text-muted);align-items:center;gap:.5rem;margin:0;font-size:.875rem;display:flex}.roadmap-breadcrumb a{color:var(--color-primary-600);transition:color var(--transition-fast);font-weight:600;text-decoration:none}.roadmap-breadcrumb a:hover{color:var(--color-primary-700);text-decoration:underline}.roadmap-breadcrumb code{font-family:var(--font-mono);background:var(--color-surface-soft);border-radius:var(--radius-xs);color:var(--color-text-main);border:1px solid var(--color-border-subtle);padding:.15rem .4rem;font-size:.8rem}.roadmap-title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:.25rem;display:flex}.roadmap-title{color:var(--color-text-strong);letter-spacing:-.025em;margin:0;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:850;line-height:1.2}.roadmap-version-badge{border-radius:var(--radius-full);background:var(--color-primary-50);border:1px solid var(--color-primary-200);color:var(--color-primary-700);align-items:center;gap:.4rem;padding:.3rem .75rem;font-size:.8rem;font-weight:700;display:inline-flex}.roadmap-description{color:var(--color-text-muted);max-width:48rem;margin:.75rem 0 1.25rem;font-size:1rem;line-height:1.6}.roadmap-progress-panel{background:var(--color-surface-soft);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);margin-top:1rem;padding:1rem 1.25rem}.roadmap-progress-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.875rem;display:flex}.roadmap-progress-label{color:var(--color-text-strong);font-weight:700}.roadmap-progress-stats{color:var(--color-text-muted);font-weight:600}.roadmap-progress-track{background:var(--color-border-subtle);border-radius:var(--radius-full);width:100%;height:8px;overflow:hidden}.roadmap-progress-fill{background:linear-gradient(90deg, var(--color-primary-600), var(--color-accent-cyan));border-radius:var(--radius-full);height:100%;transition:width var(--transition-smooth)}.roadmap-section-nav{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);flex-wrap:wrap;align-items:center;gap:.75rem;padding:.85rem 1.25rem;display:flex}.roadmap-section-nav strong{color:var(--color-text-strong);white-space:nowrap;font-size:.875rem}.roadmap-section-nav ul{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.roadmap-section-nav a{border-radius:var(--radius-md);background:var(--color-surface-soft);color:var(--color-text-main);border:1px solid var(--color-border-subtle);transition:all var(--transition-fast);padding:.25rem .65rem;font-size:.825rem;font-weight:600;text-decoration:none;display:inline-block}.roadmap-section-nav a:hover{background:var(--color-primary-50);border-color:var(--color-primary-200);color:var(--color-primary-700)}.roadmap-controls-bar{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.roadmap-search-filter-group{flex-wrap:wrap;flex:1;align-items:center;gap:1rem;min-width:280px;display:flex}.roadmap-search-box{flex:1;align-items:center;max-width:24rem;display:flex;position:relative}.roadmap-search-box label{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.roadmap-search-input{width:100%;color:var(--color-text-strong);background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);padding:.6rem .9rem;font-size:.9rem}.roadmap-search-input:focus{border-color:var(--color-primary-600);background:#fff;outline:none;box-shadow:0 0 0 3px #4f46e526}.roadmap-filter-group{align-items:center;gap:.35rem;display:flex}.roadmap-filter-btn{border-radius:var(--radius-full);border:1px solid var(--color-border-subtle);background:var(--color-surface-soft);color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast);padding:.45rem .8rem;font-size:.825rem;font-weight:600}.roadmap-filter-btn:hover{background:var(--color-surface);color:var(--color-text-main);border-color:var(--color-border)}.roadmap-filter-btn.is-active{background:var(--color-primary-600);border-color:var(--color-primary-600);color:#fff;font-weight:700;box-shadow:0 1px 3px #4f46e54d}.roadmap-view-switcher{background:var(--color-surface-soft);border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);align-items:center;margin:0;padding:.25rem;display:inline-flex}.roadmap-view-switcher legend{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.roadmap-view-btn{color:var(--color-text-muted);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:.35rem;padding:.45rem .9rem;font-size:.85rem;font-weight:650;display:inline-flex}.roadmap-view-btn:hover{color:var(--color-text-strong)}.roadmap-view-btn[aria-pressed=true]{background:var(--color-surface);color:var(--color-primary-600);box-shadow:var(--shadow-xs);font-weight:750}.roadmap-empty-state{text-align:center;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-xl);color:var(--color-text-muted);margin:1.5rem 0;padding:3rem 1.5rem;font-size:1rem;font-weight:600}.roadmap-tree-container{flex-direction:column;gap:1.5rem;display:flex}.roadmap-tree-section{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);transition:border-color var(--transition-fast);padding:clamp(1.25rem,3vw,1.75rem)}.roadmap-tree-section:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.roadmap-section-title-wrap{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.85rem;display:flex}.roadmap-section-title{color:var(--color-text-strong);margin:0;font-size:1.25rem;font-weight:800}.roadmap-section-count{color:var(--color-text-muted);background:var(--color-surface-soft);border-radius:var(--radius-full);border:1px solid var(--color-border-subtle);padding:.2rem .55rem;font-size:.775rem;font-weight:700}.roadmap-tree-nodes-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.roadmap-tree-node-card{border-radius:var(--radius-lg);border:1.5px solid var(--color-border-subtle);background:var(--color-surface);cursor:pointer;box-shadow:var(--shadow-xs);transition:all var(--transition-base);-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:space-between;padding:1.15rem 1.25rem;display:flex;position:relative}.roadmap-tree-node-card:hover{border-color:var(--color-primary-500);box-shadow:var(--shadow-md);transform:translateY(-2px)}.roadmap-tree-node-card:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.roadmap-tree-node-card.is-selected{border-color:var(--color-primary-600);background:var(--color-primary-50);box-shadow:0 0 0 2px var(--color-primary-600), var(--shadow-sm)}.roadmap-tree-node-card.is-core{border-left:4px solid var(--color-primary-600)}.roadmap-tree-node-card.is-optional{border-left:4px solid var(--color-accent-amber)}.roadmap-node-card-header{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.5rem;display:flex}.roadmap-node-card-title{color:var(--color-text-strong);margin:0;font-size:1.05rem;font-weight:750;line-height:1.35}.roadmap-node-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-full);white-space:nowrap;align-items:center;padding:.15rem .5rem;font-size:.725rem;font-weight:750;display:inline-flex}.roadmap-node-badge.is-core{background:var(--color-primary-100);color:var(--color-primary-700)}.roadmap-node-badge.is-optional{background:var(--color-accent-amber-soft);color:#b45309}.roadmap-node-summary{color:var(--color-text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:.35rem 0 .85rem;font-size:.875rem;line-height:1.5;display:-webkit-box;overflow:hidden}.roadmap-node-footer{border-top:1px solid var(--color-border-subtle);color:var(--color-primary-600);justify-content:space-between;align-items:center;margin-top:auto;padding-top:.65rem;font-size:.8rem;font-weight:650;display:flex}.roadmap-graph-container{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);padding:1.5rem;overflow:hidden}.roadmap-graph-scroll-area{scroll-behavior:smooth;border-radius:var(--radius-md);background:linear-gradient(180deg, var(--color-surface-soft) 0%, var(--color-surface) 100%);border:1px solid var(--color-border-subtle);-webkit-overflow-scrolling:touch;padding:1.25rem .5rem;overflow-x:auto}.roadmap-graph-svg{margin:0 auto;display:block}.roadmap-graph-node-btn{border-radius:var(--radius-md);cursor:pointer;text-align:left;width:200px;height:56px;transition:all var(--transition-fast);box-shadow:var(--shadow-xs);box-sizing:border-box;background:#fff;flex-direction:column;justify-content:center;padding:.45rem .65rem;display:flex}.roadmap-graph-node-btn.is-core{border:1.5px solid var(--color-border);border-left:4px solid var(--color-primary-600);background:#fff}.roadmap-graph-node-btn.is-optional{border:1.5px solid #fcd34d;border-left:4px solid var(--color-accent-amber);background:#fffbeb}.roadmap-graph-node-btn.is-selected{background:var(--color-primary-50);border:2.5px solid var(--color-primary-600)}.roadmap-graph-node-btn:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.roadmap-graph-node-btn:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.roadmap-graph-legend{background:var(--color-surface-soft);border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);color:var(--color-text-muted);flex-wrap:wrap;gap:1.5rem;margin:1.25rem 0 0;padding:.75rem 1rem;font-size:.85rem;font-weight:600;list-style:none;display:flex}.roadmap-graph-legend li{align-items:center;gap:.5rem;display:flex}.roadmap-modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(4px);background:#0f172a73;justify-content:center;align-items:center;padding:1rem;animation:.18s cubic-bezier(.16,1,.3,1) modalFadeIn;display:flex;position:fixed;inset:0}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.roadmap-modal-dialog{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:38rem;max-height:90vh;padding:clamp(1.5rem,3.5vw,2.25rem);animation:.22s cubic-bezier(.16,1,.3,1) modalSlideUp;position:relative;overflow-y:auto}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.roadmap-modal-header{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;padding-bottom:.85rem;display:flex}.roadmap-modal-title{color:var(--color-text-strong);margin:0;font-size:1.45rem;font-weight:800;line-height:1.25}.roadmap-modal-close-btn{background:var(--color-surface-soft);border:1px solid var(--color-border-subtle);color:var(--color-text-muted);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);padding:.35rem .75rem;font-size:.85rem;font-weight:650}.roadmap-modal-close-btn:hover{background:var(--color-surface);color:var(--color-text-strong);border-color:var(--color-border)}.roadmap-modal-summary{color:var(--color-text-main);margin-bottom:1.25rem;font-size:.95rem;line-height:1.6}.roadmap-modal-meta-grid{background:var(--color-surface-soft);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);grid-template-columns:repeat(2,1fr);gap:.75rem;margin-bottom:1.25rem;padding:.85rem 1rem;display:grid}.roadmap-modal-meta-grid dt{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.2rem;font-size:.75rem;font-weight:700}.roadmap-modal-meta-grid dd{color:var(--color-text-strong);margin:0;font-size:.95rem;font-weight:750}.roadmap-soft-lock-aside{border-radius:var(--radius-lg);background:#eff6ff;border:1.5px solid #93c5fd;margin-bottom:1.25rem;padding:1rem 1.15rem}.roadmap-soft-lock-aside strong{color:#1e40af;margin-bottom:.5rem;font-size:.95rem;font-weight:750;display:block}.roadmap-soft-lock-aside ul{color:#1e3a8a;margin:.35rem 0 .65rem 1.25rem;padding:0;font-size:.9rem;font-weight:600}.roadmap-soft-lock-aside p{color:#3b82f6;margin:0;font-size:.825rem}.roadmap-modal-cta-btn{border-radius:var(--radius-md);background:var(--color-primary-600);color:#fff;cursor:pointer;width:100%;transition:all var(--transition-fast);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:1rem;font-weight:700;display:flex;box-shadow:0 2px 6px #4f46e540}.roadmap-modal-cta-btn:hover:not(:disabled){background:var(--color-primary-700);transform:translateY(-1px);box-shadow:0 4px 10px #4f46e559}.roadmap-modal-cta-btn:disabled{opacity:.65;cursor:not-allowed}.roadmap-modal-lessons-section{border-top:1px solid var(--color-border-subtle);margin-top:1.25rem;padding-top:1.25rem}.roadmap-modal-lessons-section h3{color:var(--color-text-strong);margin:0 0 .75rem;font-size:1.05rem;font-weight:800}.roadmap-modal-lessons-section ul{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.roadmap-modal-lessons-section a{border-radius:var(--radius-md);background:var(--color-surface-soft);border:1px solid var(--color-border-subtle);color:var(--color-primary-600);transition:all var(--transition-fast);justify-content:space-between;align-items:center;padding:.65rem .85rem;font-size:.925rem;font-weight:650;text-decoration:none;display:flex}.roadmap-modal-lessons-section a:hover{background:var(--color-primary-50);border-color:var(--color-primary-200);color:var(--color-primary-700);transform:translate(2px)}.roadmap-overview-list{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;margin:1.5rem 0 0;padding:0;list-style:none;display:grid}.roadmap-overview-card{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);transition:all var(--transition-base);flex-direction:column;justify-content:space-between;padding:clamp(1.25rem,3vw,1.75rem);display:flex;position:relative;overflow:hidden}.roadmap-overview-card:before{content:"";background:linear-gradient(90deg, var(--color-primary-600), var(--color-accent-cyan));height:3px;position:absolute;top:0;left:0;right:0}.roadmap-overview-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary-200);transform:translateY(-3px)}.roadmap-overview-card h2{color:var(--color-text-strong);margin:.25rem 0 .5rem;font-size:1.35rem;font-weight:800}.roadmap-overview-card a{border-radius:var(--radius-md);background:var(--color-primary-600);color:#fff;transition:all var(--transition-fast);justify-content:center;align-items:center;gap:.5rem;margin-top:1rem;padding:.65rem 1.25rem;font-size:.925rem;font-weight:700;text-decoration:none;display:inline-flex}.roadmap-overview-card a:hover{background:var(--color-primary-700);box-shadow:0 4px 10px #4f46e54d}@media (width<=768px){.roadmap-title-row{flex-direction:column;align-items:flex-start;gap:.5rem}.roadmap-controls-bar{flex-direction:column;align-items:stretch;gap:.85rem}.roadmap-search-filter-group{flex-direction:column;align-items:stretch}.roadmap-search-box{max-width:100%}.roadmap-filter-group{padding-bottom:.25rem;overflow-x:auto}.roadmap-view-switcher{justify-content:center;width:100%}.roadmap-tree-nodes-list{grid-template-columns:1fr}}.pwa-offline-banner{color:#7c2d12;background:#fff7ed;border-bottom:1px solid #fdba74;align-items:center;gap:.625rem;padding:.75rem 1rem;font-size:.9375rem;font-weight:600;line-height:1.5;display:flex}.pwa-offline-banner__indicator{background:#c2410c;border-radius:50%;flex:0 0 .625rem;height:.625rem}.pwa-offline-fallback{color:#0f172a;background:#f8fafc;border:1px solid #cbd5e1;border-radius:1rem;max-width:38rem;margin:clamp(1rem,4vw,3rem) auto;padding:clamp(1.25rem,5vw,2.5rem)}.pwa-offline-fallback h1{margin:0 0 .75rem;font-size:clamp(1.5rem,5vw,2rem)}.pwa-offline-fallback p{margin:0;line-height:1.65}@media (prefers-color-scheme:dark){.pwa-offline-banner{color:#ffedd5;background:#431407;border-bottom-color:#9a3412}.pwa-offline-banner__indicator{background:#fdba74}.pwa-offline-fallback{color:#f8fafc;background:#1e293b;border-color:#475569}}:root{--color-primary-900:#1e1b4b;--color-primary-800:#2e1065;--color-primary-700:#3730a3;--color-primary-600:#4f46e5;--color-primary-500:#6366f1;--color-primary-200:#c7d2fe;--color-primary-100:#e0e7ff;--color-primary-50:#eef2ff;--color-accent-cyan:#06b6d4;--color-accent-cyan-soft:#ecfeff;--color-accent-purple:#8b5cf6;--color-accent-purple-soft:#f5f3ff;--color-accent-amber:#f59e0b;--color-accent-amber-soft:#fffbeb;--color-action:#4f46e5;--color-action-strong:#3730a3;--color-action-soft:#eef2ff;--color-focus:#4f46e5;--color-success:#10b981;--color-success-strong:#047857;--color-success-soft:#ecfdf5;--color-warning:#f59e0b;--color-warning-soft:#fffbeb;--color-danger:#ef4444;--color-danger-strong:#b91c1c;--color-danger-soft:#fef2f2;--color-info:#3b82f6;--color-info-soft:#eff6ff;--color-bg-app:#f8fafc;--color-surface:#fff;--color-surface-soft:#f1f5f9;--color-surface-elevated:#fff;--color-border-subtle:#e2e8f0;--color-border:#cbd5e1;--color-border-strong:#94a3b8;--color-text-strong:#0f172a;--color-text-main:#1e293b;--color-text-muted:#64748b;--color-text-subtle:#94a3b8;--color-text-inverse:#fff;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--space-xs:.25rem;--space-sm:.5rem;--space-md:.75rem;--space-lg:1rem;--space-xl:1.5rem;--space-2xl:2rem;--space-3xl:3rem;--space-4xl:4rem;--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-xs:0 1px 2px 0 #0f172a0d;--shadow-sm:0 1px 3px 0 #0f172a12, 0 1px 2px -1px #0f172a0a;--shadow-md:0 4px 6px -1px #0f172a12, 0 2px 4px -2px #0f172a0a;--shadow-lg:0 10px 15px -3px #0f172a14, 0 4px 6px -4px #0f172a08;--shadow-xl:0 20px 25px -5px #0f172a17, 0 8px 10px -6px #0f172a08;--shadow-glow:0 0 24px -2px #4f46e540;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.22s cubic-bezier(.4, 0, .2, 1);--transition-smooth:.32s cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background-color:var(--color-bg-app);color:var(--color-text-main);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0;font-size:1rem;line-height:1.6}.skip-link{z-index:1000;border:2px solid var(--color-primary-600);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-primary-600);box-shadow:var(--shadow-lg);transition:transform var(--transition-fast);padding:.75rem 1.25rem;font-weight:700;text-decoration:none;position:absolute;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus-visible{outline:3px solid var(--color-primary-600);outline-offset:3px;transform:translateY(0)}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.app-shell{background:var(--color-bg-app);flex-direction:column;min-height:100vh;display:flex}.app-header{z-index:50;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border-subtle);box-shadow:var(--shadow-xs);transition:background var(--transition-base), border-color var(--transition-base);background:#ffffffeb;position:sticky;top:0}.app-header-inner{justify-content:space-between;align-items:center;gap:1.5rem;max-width:1280px;margin:0 auto;padding:.75rem 1.5rem;display:flex}.app-brand{color:var(--color-text-strong);letter-spacing:-.02em;transition:opacity var(--transition-fast);align-items:center;gap:.65rem;font-size:1.15rem;font-weight:800;text-decoration:none;display:inline-flex}.app-brand:hover{opacity:.9}.app-brand-logo{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--color-primary-600), var(--color-accent-cyan));color:#fff;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;font-size:1.15rem;font-weight:900;display:flex;box-shadow:0 2px 8px #4f46e54d}.app-brand-text{align-items:baseline;gap:.4rem;display:flex}.app-brand-badge{border-radius:var(--radius-full);background:var(--color-primary-50);border:1px solid var(--color-primary-200);color:var(--color-primary-700);letter-spacing:.04em;text-transform:uppercase;align-items:center;padding:.15rem .45rem;font-size:.7rem;font-weight:750;display:inline-flex}.app-nav{align-items:center;gap:.35rem;display:flex}.app-nav a{border-radius:var(--radius-md);color:var(--color-text-muted);transition:color var(--transition-fast), background var(--transition-fast);align-items:center;padding:.5rem .85rem;font-size:.925rem;font-weight:600;text-decoration:none;display:inline-flex}.app-nav a:hover{color:var(--color-primary-600);background:var(--color-primary-50)}.app-nav a.app-nav-cta{background:var(--color-primary-600);color:#fff;border-radius:var(--radius-full);transition:transform var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);padding:.5rem 1.1rem;box-shadow:0 2px 6px #4f46e540}.app-nav a.app-nav-cta:hover{background:var(--color-primary-700);transform:translateY(-1px);box-shadow:0 4px 10px #4f46e559}.app-nav a.app-nav-cta:active{transform:translateY(0)}.app-nav-separator{color:var(--color-border);-webkit-user-select:none;user-select:none;padding:0 .2rem;font-size:.85rem}.app-user-menu{align-items:center;gap:.75rem;display:flex}.app-user-badge{border-radius:var(--radius-full);background:var(--color-surface-soft);border:1px solid var(--color-border-subtle);color:var(--color-text-strong);align-items:center;gap:.5rem;padding:.35rem .75rem;font-size:.85rem;font-weight:600;display:inline-flex}.app-user-avatar{border-radius:var(--radius-full);background:var(--color-primary-600);color:#fff;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.75rem;font-weight:700;display:flex}.app-logout-btn{border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;padding:.4rem .75rem;font-size:.825rem;font-weight:600}.app-logout-btn:hover{border-color:var(--color-danger);color:var(--color-danger);background:var(--color-danger-soft)}.app-main{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:clamp(1.25rem,3.5vw,2.5rem) clamp(1rem,3vw,2rem)}.app-footer{background:var(--color-surface);border-top:1px solid var(--color-border-subtle);margin-top:auto;padding:2rem 1.5rem}.app-footer-inner{max-width:1280px;color:var(--color-text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;font-size:.875rem;display:flex}.app-footer-brand{color:var(--color-text-strong);align-items:center;gap:.5rem;font-weight:600;display:flex}.app-footer-links{gap:1.25rem;display:flex}.app-footer-links a{color:var(--color-text-muted);transition:color var(--transition-fast);text-decoration:none}.app-footer-links a:hover{color:var(--color-primary-600)}h1,h2,h3,h4,h5,h6{color:var(--color-text-strong);letter-spacing:-.02em;font-weight:750}p{color:var(--color-text-main)}.card-base{background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base), border-color var(--transition-base), transform var(--transition-base);padding:clamp(1.25rem,3vw,1.75rem)}.card-base:hover{box-shadow:var(--shadow-md);border-color:var(--color-border)}.badge-status{border-radius:var(--radius-full);white-space:nowrap;align-items:center;gap:.35rem;padding:.25rem .65rem;font-size:.775rem;font-weight:700;display:inline-flex}.badge-status.is-done{background:var(--color-success-soft);color:var(--color-success-strong);border:1px solid #10b98133}.badge-status.is-ready{background:var(--color-primary-50);color:var(--color-primary-700);border:1px solid #4f46e533}.badge-status.is-locked{background:var(--color-surface-soft);color:var(--color-text-muted);border:1px solid var(--color-border-subtle)}.btn-primary{border-radius:var(--radius-md);background:var(--color-primary-600);color:#fff;cursor:pointer;box-shadow:var(--shadow-sm);transition:all var(--transition-fast);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.65rem 1.25rem;font-size:.95rem;font-weight:650;text-decoration:none;display:inline-flex}.btn-primary:hover{background:var(--color-primary-700);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-secondary{border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-main);border:1px solid var(--color-border);cursor:pointer;box-shadow:var(--shadow-xs);transition:all var(--transition-fast);justify-content:center;align-items:center;gap:.5rem;padding:.65rem 1.25rem;font-size:.95rem;font-weight:650;text-decoration:none;display:inline-flex}.btn-secondary:hover{background:var(--color-surface-soft);border-color:var(--color-border-strong)}@media (width<=768px){.app-header-inner{flex-direction:column;align-items:stretch;gap:.75rem;padding:.75rem 1rem}.app-brand{justify-content:center}.app-nav{-webkit-overflow-scrolling:touch;scrollbar-width:none;justify-content:flex-start;padding-bottom:.25rem;overflow-x:auto}.app-nav::-webkit-scrollbar{display:none}.app-nav a{white-space:nowrap;padding:.4rem .65rem;font-size:.85rem}.app-footer-inner{text-align:center;flex-direction:column;align-items:center;gap:1rem}}.lesson-page-workspace{grid-template-columns:minmax(0,1fr) minmax(340px,420px);align-items:start;gap:2rem;width:100%;display:grid}.lesson-workspace-main{min-width:0}.lesson-workspace-sidebar{flex-direction:column;max-height:calc(100vh - 6rem);display:flex;position:sticky;top:5rem}.lesson-workspace-sidebar .ai-tutor{width:100%;max-width:100%;margin:0}@media (width<=1024px){.lesson-page-workspace{grid-template-columns:1fr;gap:2rem}.lesson-workspace-sidebar{max-height:none;position:static}}
