:root{--color-background:#f4f7fb;--color-surface:#fff;--color-surface-soft:#eef3f8;--color-surface-raised:#fbfdff;--color-text:#16202a;--color-muted:#607082;--color-primary:#2251a4;--color-primary-dark:#173a78;--color-accent:#0d9679;--color-warning:#d89421;--color-border:#dbe4ee;--color-ring:#2251a42e;--shadow-soft:0 16px 42px #16202a14;--shadow-card:0 10px 28px #16202a12;--radius-sm:8px;--radius-md:12px;--radius-lg:18px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(circle at 10% 0%, #2251a414, transparent 30%), linear-gradient(180deg, #f8fbff 0%, var(--color-background) 42%, #f7f9fc 100%);color:var(--color-text);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;transition:background-color .3s,color .3s}body.dark-theme{--color-background:#151b22;--color-surface:#202832;--color-surface-soft:#293240;--color-surface-raised:#242d38;--color-text:#f6f7fb;--color-muted:#b8c4d1;--color-border:#394657;--color-ring:#659eff38;--shadow-soft:0 16px 42px #00000047;--shadow-card:0 10px 28px #0000003d}a{color:inherit}button,input,textarea{font:inherit}.app-main{min-height:calc(100vh - 72px)}.eyebrow{color:var(--color-accent);letter-spacing:0;text-transform:uppercase;margin:0 0 10px;font-size:.76rem;font-weight:800}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--color-ring);outline-offset:3px}.skip-link{background:var(--color-primary);border-radius:0 0 var(--radius-sm) 0;color:#fff;z-index:100;padding:10px 14px;font-weight:900;transition:transform .2s;position:fixed;top:0;left:0;transform:translateY(-120%)}.skip-link:focus{transform:translateY(0)}.site-footer{background:var(--color-surface);border-top:1px solid var(--color-border);grid-template-columns:minmax(260px,1.5fr) repeat(3,minmax(160px,1fr));gap:28px;margin-top:42px;padding:34px 32px;display:grid}.site-footer__brand p,.site-footer__column span,.site-footer__column a,.footer-logo-row span{color:var(--color-muted);line-height:1.55}.footer-logo-row{align-items:center;gap:12px;margin-bottom:14px;display:flex}.footer-logo-row img{border:1px solid var(--color-border);object-fit:cover;border-radius:12px;width:46px;height:46px}.footer-logo-row strong,.site-footer__column h2{color:var(--color-text)}.footer-logo-row span{font-size:.9rem;font-weight:700;display:block}.site-footer__column{align-content:start;gap:8px;display:grid}.site-footer__column h2{text-transform:uppercase;margin:0 0 6px;font-size:.9rem}.site-footer__column a{font-weight:800;text-decoration:none}.site-footer__column a:hover{color:var(--color-primary)}@media (width<=900px){.site-footer{grid-template-columns:1fr}}.site-header{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:20;background:#ffffffd6;border-bottom:1px solid #dbe4eecc;grid-template-columns:minmax(180px,1fr) auto auto auto;align-items:center;gap:16px;width:100%;padding:12px 32px;display:grid;position:sticky;top:0}body.dark-theme .site-header{background:#202832d6;border-bottom-color:#394657cc}.brand{color:var(--color-text);align-items:center;gap:12px;font-weight:700;text-decoration:none;display:inline-flex}body.dark-theme .brand{color:#fff}.brand img{border:1px solid var(--color-border);object-fit:cover;border-radius:12px;width:44px;height:44px}.site-header nav{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:999px;justify-content:center;gap:4px;padding:5px;display:flex}.site-header nav a{color:var(--color-muted);border-radius:999px;padding:8px 13px;font-size:.95rem;font-weight:700;text-decoration:none;transition:background-color .2s,color .2s,transform .2s}.site-header nav a:hover{background:var(--color-surface);color:var(--color-primary);transform:translateY(-1px)}.theme-toggle{background-color:var(--color-primary);color:#fff;cursor:pointer;border:0;border-radius:999px;padding:10px 18px;font-weight:800;transition:background-color .2s,box-shadow .2s,transform .2s;box-shadow:0 8px 20px #2251a438}.theme-toggle:hover{background-color:var(--color-primary-dark);transform:translateY(-1px);box-shadow:0 10px 24px #2251a447}@media (width<=860px){.site-header{grid-template-columns:1fr;justify-items:center;padding:14px 18px}.site-header nav{flex-wrap:wrap}}.theme-toggle{align-items:center;gap:8px;display:inline-flex}.theme-toggle span{background:#ffffff2e;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.auth-panel{position:relative}.auth-open,.auth-chip button,.auth-popover button{cursor:pointer;border:0;font-weight:800}.auth-open,.auth-chip{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);border-radius:999px;align-items:center;gap:8px;padding:9px 13px;display:inline-flex}.auth-chip span{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.auth-chip button{color:var(--color-primary);background:0 0;padding:0}.auth-popover{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);z-index:30;gap:10px;min-width:280px;padding:16px;display:grid;position:absolute;top:calc(100% + 10px);right:0}.auth-popover strong{color:var(--color-text)}.auth-popover p,.auth-status{color:var(--color-muted);margin:0;font-size:.88rem;line-height:1.45}.auth-popover form{gap:8px;display:grid}.auth-popover input{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);padding:10px 11px}.auth-popover form button,.auth-actions button{border-radius:999px;padding:9px 12px}.auth-popover form button{background:var(--color-primary);color:#fff}.auth-actions{flex-wrap:wrap;gap:8px;display:flex}.auth-actions button{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text)}.auth-popover button:disabled,.auth-popover input:disabled{cursor:not-allowed;opacity:.55}@media (width<=860px){.auth-popover{left:50%;right:auto;transform:translate(-50%)}}.dashboard-hero,.hero-section,.page-section,.resource-section{max-width:1200px;margin:0 auto;padding:64px 28px 36px}.dashboard-hero{background:linear-gradient(135deg, var(--color-surface) 0%, var(--color-surface-raised) 100%);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);grid-template-columns:minmax(280px,1fr) minmax(280px,.9fr);align-items:center;gap:42px;margin-top:40px;padding:42px;display:grid}.dashboard-hero__copy h1,.hero-copy h1,.page-heading h1,.section-heading h2,.resource-section h2{color:var(--color-text);margin:0 0 18px;font-size:clamp(2rem,4vw,3.7rem);line-height:1.04}.dashboard-hero__copy p,.hero-copy p,.page-heading p{color:var(--color-muted);margin-bottom:0;font-size:1.08rem;line-height:1.65}.dashboard-hero__media img,.hero-media img{border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);max-width:100%;display:block}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:24px;display:flex}.hero-actions a{background:var(--color-primary);color:#fff;border-radius:999px;padding:12px 18px;font-weight:800;text-decoration:none;transition:box-shadow .2s,transform .2s;box-shadow:0 10px 24px #2251a438}.hero-actions a:last-child{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-primary);box-shadow:none}.hero-actions a:hover{transform:translateY(-1px);box-shadow:0 14px 28px #2251a447}.stat-strip{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);grid-template-columns:repeat(3,1fr);gap:0;max-width:1000px;margin:28px auto 0;display:grid;overflow:hidden}.stat-strip div{border-right:1px solid var(--color-border);text-align:center;padding:26px}.stat-strip div:last-child{border-right:0}.stat-strip dt{color:var(--color-muted);font-size:.9rem}.stat-strip dd{color:var(--color-primary);margin:8px 0 0;font-size:2.25rem;font-weight:800}.page-section.narrow{max-width:760px}.split-layout{grid-template-columns:minmax(280px,1.1fr) minmax(260px,.9fr);align-items:center;gap:36px;display:grid;position:relative}.hero-copy,.page-heading,.section-heading{text-align:center;max-width:800px;margin:0 auto}.section-heading{margin-bottom:28px}.user-count{color:var(--color-text);font-size:1.05rem;font-weight:700;position:absolute;top:24px;right:34px}.resource-section{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);margin-bottom:48px}.resource-section.embedded{margin-top:32px}.resource-section ul,.link-list{margin:0;padding:0;list-style:none}.resource-section li{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);align-items:flex-start;gap:4px;margin:10px 0;padding:12px 14px;display:grid}.resource-section li span{color:var(--color-muted);font-size:.86rem;font-weight:700}.resource-section a{color:var(--color-primary);font-weight:700;text-decoration:none}.resource-section a:hover{text-decoration:underline}@media (width<=860px){.dashboard-hero,.hero-section,.page-section,.resource-section{padding-top:36px}.dashboard-hero,.split-layout{grid-template-columns:1fr}.dashboard-hero__copy h1,.hero-copy h1,.page-heading h1,.section-heading h2,.resource-section h2{font-size:2rem}.stat-strip{grid-template-columns:1fr;margin:0 24px}.stat-strip div{border-right:0;border-bottom:1px solid var(--color-border)}.stat-strip div:last-child{border-bottom:0}.user-count{text-align:center;position:static}}.dashboard-hero__copy .hero-actions a:first-child:after{content:""}.hero-product-card{align-self:stretch}.product-window{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);min-height:360px;overflow:hidden}.product-window__bar{background:var(--color-surface-soft);border-bottom:1px solid var(--color-border);align-items:center;gap:8px;padding:14px 16px;display:flex}.product-window__bar span{background:var(--color-muted);opacity:.5;border-radius:50%;width:10px;height:10px}.product-window__body{grid-template-columns:minmax(140px,.42fr) minmax(0,1fr);min-height:312px;display:grid}.product-sidebar-preview{background:var(--color-surface-soft);border-right:1px solid var(--color-border);align-content:start;gap:10px;padding:18px;display:grid}.product-sidebar-preview strong{color:var(--color-text);margin-bottom:6px}.product-sidebar-preview span{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-muted);padding:10px;font-size:.86rem;font-weight:700}.product-sidebar-preview span.active{border-color:var(--color-primary);color:var(--color-primary);box-shadow:0 0 0 3px var(--color-ring)}.product-main-preview{align-content:center;gap:14px;padding:28px;display:grid}.preview-pill{color:var(--color-accent);background:#0d967921;border:1px solid #0d967940;border-radius:999px;justify-self:start;padding:7px 10px;font-size:.82rem;font-weight:900;display:inline-flex}.product-main-preview h2{color:var(--color-text);margin:0;font-size:1.85rem;line-height:1.1}.product-main-preview p{color:var(--color-muted);margin:0;line-height:1.6}.preview-answer-grid{gap:10px;display:grid}.preview-answer-grid span{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);height:34px}.preview-answer-grid span.correct{border-color:var(--color-accent);background:#0d967929}.feature-grid,.workflow-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.feature-card,.workflow-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:22px}.feature-card>div{align-items:end;gap:10px;margin-bottom:20px;display:flex}.feature-card span,.workflow-card>span{color:var(--color-primary);font-size:2rem;font-weight:900;line-height:1}.feature-card small{color:var(--color-muted);max-width:90px;font-weight:800;line-height:1.1}.feature-card h3,.workflow-card h3,.showcase-panel h2{color:var(--color-text);margin:0 0 10px}.feature-card p,.workflow-card p,.showcase-list li{color:var(--color-muted);margin:0;line-height:1.6}.workflow-card{position:relative}.workflow-card>span{margin-bottom:24px;font-size:.9rem;display:block}.showcase-section{padding-top:24px}.showcase-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;padding:30px;display:grid}.showcase-list{gap:10px;margin:18px 0 0;padding:0;list-style:none;display:grid}.showcase-list li{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:12px 14px}.roadmap-list li{border-left:4px solid var(--color-accent)}@media (width<=900px){.feature-grid,.workflow-grid,.showcase-panel,.product-window__body{grid-template-columns:1fr}.product-sidebar-preview{border-right:0;border-bottom:1px solid var(--color-border)}}.course-grid,.path-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:34px;display:grid}.course-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.path-grid,.tutor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.course-card,.path-card,.lesson-preview{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);transition:transform .25s,box-shadow .25s;overflow:hidden}.course-card:hover,.path-card:hover{box-shadow:var(--shadow-soft);transform:translateY(-4px)}.course-card a,.path-card a{color:inherit;height:100%;text-decoration:none;display:block}.course-card__image{aspect-ratio:16/10;filter:saturate(.96);object-fit:cover;width:100%;display:block}.tutor-image{aspect-ratio:4/5;object-position:center top}.course-card__body,.path-card a,.lesson-preview{padding:22px}.card-meta,.lesson-preview span{color:var(--color-accent);text-transform:uppercase;margin-bottom:12px;font-size:.78rem;font-weight:800;display:inline-block}.course-card__body h2,.path-card h2,.lesson-preview h3{color:var(--color-text);margin:0 0 12px;font-size:1.2rem;line-height:1.25}.course-card__body p,.path-card p,.lesson-preview p{color:var(--color-muted);margin:0;font-size:.98rem;line-height:1.62}.path-card ul{color:var(--color-muted);flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none;display:flex}.path-card li{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);border-radius:999px;margin:0;padding:7px 10px;font-size:.86rem;font-weight:700}@media (width<=980px){.course-grid,.course-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=700px){.course-grid,.course-grid.compact,.path-grid,.tutor-grid{grid-template-columns:1fr}}.course-detail{max-width:1160px;margin:0 auto;padding:56px 28px 72px}.course-detail__header{text-align:center;max-width:820px;margin:0 auto 24px}.course-detail__header a{color:var(--color-primary);margin-bottom:18px;font-weight:700;text-decoration:none;display:inline-block}.course-detail__header h1{color:var(--color-text);margin:0 0 14px;font-size:clamp(2rem,4vw,3rem);line-height:1.08}.course-detail__header p{color:var(--color-muted);margin:0;font-size:1.08rem;line-height:1.65}.course-meta,.tag-list{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.course-meta{margin-top:20px}.course-meta span,.tag-list span{background-color:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);border-radius:999px;padding:8px 12px;font-size:.92rem;font-weight:700}.tag-list{max-width:760px;margin:0 auto 28px}.lesson-viewer{grid-template-columns:minmax(220px,.38fr) minmax(0,1fr);gap:22px;margin-bottom:26px;display:grid}.lesson-sidebar,.lesson-panel,.detail-panel{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.lesson-sidebar{gap:8px;padding:14px;display:grid}.lesson-sidebar button{border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;padding:12px;transition:background-color .2s,border-color .2s,color .2s}.lesson-sidebar button:hover{background:var(--color-surface-soft);border-color:var(--color-border)}.lesson-sidebar button span{color:var(--color-muted);text-transform:uppercase;margin-bottom:4px;font-size:.78rem;font-weight:700;display:block}.lesson-sidebar button.active{background:var(--color-surface-soft);border-color:var(--color-primary);color:var(--color-primary);font-weight:800}.lesson-panel,.detail-panel{padding:26px}.lesson-panel h2,.detail-panel h2{color:var(--color-text);margin:0 0 14px}.lesson-panel p,.outcome-list li{color:var(--color-muted);line-height:1.6}.activity-callout,.study-note{background:var(--color-surface-soft);border-left:4px solid var(--color-accent);border-radius:var(--radius-sm);margin-top:22px;padding:16px}.activity-callout strong,.study-note strong{margin-bottom:8px;display:block}.activity-callout span,.study-note p{color:var(--color-muted);line-height:1.55}.course-detail__grid{grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);gap:24px;display:grid}.lesson-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.outcome-list{margin:0;padding-left:22px}@media (width<=860px){.course-detail__header h1{font-size:2rem}.lesson-viewer,.course-detail__grid,.lesson-preview-grid{grid-template-columns:1fr}}.course-progress-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:20px;max-width:820px;margin:0 auto 24px;padding:18px 22px;display:grid}.course-progress-ring{place-items:center;width:108px;height:108px;display:grid;position:relative}.course-progress-ring svg{width:108px;height:108px;transform:rotate(-90deg)}.course-progress-ring circle{fill:none;stroke-width:10px}.course-progress-ring .ring-track{stroke:var(--color-surface-soft)}.course-progress-ring .ring-value{stroke:var(--color-accent);stroke-linecap:round;transition:stroke-dashoffset .45s}.course-progress-ring div{text-align:center;position:absolute}.course-progress-ring strong{color:var(--color-text);font-size:1.45rem;line-height:1;display:block}.course-progress-ring span,.course-progress-copy h2{color:var(--color-muted)}.course-progress-copy{gap:14px;display:grid}.course-progress-copy h2{margin:0;font-size:1.05rem}.course-progress-bar,.lesson-progress-bar,.lesson-sidebar button b{background:var(--color-surface-soft);border-radius:999px;height:10px;display:block;overflow:hidden}.course-progress-bar span,.lesson-progress-bar span,.lesson-sidebar button b em{background:var(--color-accent);border-radius:inherit;height:100%;transition:width .35s;display:block}.lesson-row-label{justify-content:space-between;align-items:center;gap:8px;display:flex!important}.lesson-row-label i{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;justify-content:center;align-items:center;min-width:34px;padding:3px 7px;font-size:.72rem;font-style:normal;display:inline-flex}.lesson-sidebar button b{height:6px;margin-top:10px}.lesson-sidebar button.complete{border-color:#0d967959}.lesson-sidebar button.complete .lesson-row-label i{color:var(--color-accent);background:#0d967924;border-color:#0d967947}.lesson-panel__topline{justify-content:space-between;align-items:start;gap:16px;display:flex}.lesson-badge{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;flex:none;padding:8px 11px;font-size:.84rem;font-weight:900}.lesson-badge.complete{color:var(--color-accent);background:#0d967924;border-color:#0d967947}.lesson-complete-button{background:var(--color-primary);color:#fff;cursor:pointer;border:0;border-radius:999px;margin-top:18px;padding:11px 16px;font-weight:900;box-shadow:0 8px 20px #2251a433}.roadmap-complete{position:relative}.roadmap-complete:after{background:var(--color-accent);color:#fff;content:"✓";border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-weight:900;display:inline-flex;position:absolute;top:12px;right:12px}@media (width<=700px){.course-progress-panel,.lesson-panel__topline{grid-template-columns:1fr;align-items:stretch}.course-progress-ring{margin:0 auto}.lesson-panel__topline{flex-direction:column}}.interactive-lab{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:28px 0;display:grid}.interactive-lab.single{grid-template-columns:minmax(0,1fr)}.interactive-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:24px}.interactive-card__header{margin-bottom:18px}.interactive-card__header h2{color:var(--color-text);margin:0 0 8px}.interactive-card__header span{color:var(--color-muted);line-height:1.5}.question-prompt,.step-note{color:var(--color-text);font-weight:700;line-height:1.5}.choice-grid{gap:12px;display:grid}.choice-grid button{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;text-align:left;align-items:center;gap:10px;padding:13px;transition:background-color .2s,border-color .2s,box-shadow .2s,transform .2s;display:flex}.choice-grid button:hover{border-color:var(--color-primary);transform:translateY(-1px)}.choice-grid button.selected{border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.choice-grid button.correct-choice{border-color:var(--color-accent);background:#0f9f7a24}.choice-grid button.wrong-choice{border-color:var(--color-warning);background:#f4b9422e}.choice-grid span{background:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:.8rem;font-weight:800;display:inline-flex}.feedback{border-radius:var(--radius-sm);margin-top:14px;padding:14px}.feedback.correct{border-left:4px solid var(--color-accent);background:#0f9f7a24}.feedback.incorrect{border-left:4px solid var(--color-warning);background:#f4b9422e}.feedback p{color:var(--color-muted);margin:8px 0 0;line-height:1.55}.lab-button{background:var(--color-primary);color:#fff;cursor:pointer;border:0;border-radius:999px;margin-top:16px;padding:11px 16px;font-weight:800;transition:background-color .2s,box-shadow .2s,transform .2s;box-shadow:0 8px 20px #2251a433}.lab-button:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-1px);box-shadow:0 11px 24px #2251a442}.lab-button.secondary{background:var(--color-surface-soft);border:1px solid var(--color-border);box-shadow:none;color:var(--color-text)}.lab-button:disabled{cursor:not-allowed;opacity:.5}.graph-layout{gap:16px;display:grid}.graph-canvas{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%}.graph-canvas line{stroke:#53616f38;stroke-width:1px}.graph-canvas .axis{stroke:var(--color-muted);stroke-width:2px}.function-line{stroke:var(--color-primary);stroke-linecap:round;stroke-width:4px}.sample-point{fill:var(--color-accent)}.math-viz-suite{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.math-viz-card{min-width:0}.math-viz-card:first-child{grid-column:1/-1}.math-viz-graph,.geometry-canvas,.analytics-chart{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;margin-bottom:16px;display:block}.math-viz-graph line{stroke:#53616f2e;stroke-width:1px}.math-viz-graph .axis{stroke:var(--color-muted);stroke-width:2.25px}.parabola-line{fill:none;stroke:var(--color-primary);stroke-linecap:round;stroke-linejoin:round;stroke-width:4px}.vertex-point{fill:var(--color-warning);stroke:var(--color-surface);stroke-width:3px}.root-point,.intersection-point{fill:var(--color-accent);stroke:var(--color-surface);stroke-width:3px}.system-line{stroke-linecap:round;stroke-width:4px}.system-line.one{stroke:var(--color-primary)}.system-line.two{stroke:var(--color-warning)}.geometry-canvas polygon{fill:#0d967929;stroke:var(--color-accent);stroke-linejoin:round;stroke-width:4px}.geometry-canvas path{fill:none;stroke:var(--color-primary);stroke-width:3px}.geometry-canvas text{fill:var(--color-text);font-size:16px;font-weight:900}.viz-controls{gap:12px;display:grid}.viz-controls.two-column{grid-template-columns:repeat(2,minmax(0,1fr))}.viz-controls label{color:var(--color-text);gap:8px;font-weight:850;display:grid}.viz-controls span{justify-content:space-between;align-items:center;display:flex}.viz-controls input[type=range]{accent-color:var(--color-primary)}.viz-metrics{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.viz-metrics span{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);border-radius:999px;padding:8px 11px;font-size:.88rem;font-weight:850}.analytics-chart polyline{fill:none;stroke:var(--color-primary);stroke-linecap:round;stroke-linejoin:round;stroke-width:5px}.analytics-chart circle{fill:var(--color-accent);stroke:var(--color-surface);stroke-width:3px}.analytics-chart text{fill:var(--color-text);font-size:14px;font-weight:900}.donut-layout{grid-template-columns:180px minmax(0,1fr);align-items:center;gap:20px;display:grid}.donut-chart{width:180px;height:180px;transform:rotate(-90deg)}.donut-base{fill:none;stroke:var(--color-surface-soft);stroke-width:7px}.donut-segment{fill:none;stroke-width:7px}.segment-0{stroke:var(--color-primary);background:var(--color-primary)}.segment-1{stroke:var(--color-accent);background:var(--color-accent)}.segment-2{stroke:var(--color-warning);background:var(--color-warning)}.segment-3{stroke:#7c5cff;background:#7c5cff}.segment-4{stroke:#ef6f6c;background:#ef6f6c}.donut-legend{gap:10px;display:grid}.donut-legend span{color:var(--color-text);align-items:center;gap:10px;font-weight:850;display:flex}.donut-legend i{border-radius:50%;width:12px;height:12px}.control-panel{gap:12px;display:grid}.control-panel label{color:var(--color-text);gap:8px;font-weight:700;display:grid}.control-panel p{color:var(--color-muted);margin:0;line-height:1.5}.array-bars{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-md);align-items:end;gap:12px;min-height:230px;padding:18px;display:flex}.array-bar{background:var(--color-primary);color:#fff;border-radius:8px 8px 0 0;flex:1;justify-content:center;align-items:end;min-width:36px;padding:8px 4px;font-weight:800;transition:height .25s,background-color .25s;display:flex}.array-bar.active{background:var(--color-accent)}.lab-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.lab-actions span{color:var(--color-muted);font-weight:700}.code-stepper{grid-template-columns:minmax(0,1.2fr) minmax(220px,.8fr);gap:16px;display:grid}.code-stepper pre{border-radius:var(--radius-md);color:#dbe7f3;background:#121820;margin:0;padding:16px;overflow-x:auto}.code-stepper code{line-height:1.8;display:block}.code-stepper .active-line{color:#fff;background:#0f9f7a47;border-radius:4px;padding:0 6px}.runtime-panel{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:16px}.runtime-panel h3{margin:0 0 10px}.runtime-panel p,.runtime-panel span{color:var(--color-muted);line-height:1.55}.runtime-panel strong{margin:14px 0 6px;display:block}@media (width<=860px){.interactive-lab,.code-stepper{grid-template-columns:1fr}}.model-tabs{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.model-tabs button{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:999px;padding:8px 12px;font-weight:700}.model-tabs button.active{background:var(--color-primary);color:#fff}.model-display{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:16px}.model-display strong{color:var(--color-text);font-size:1.2rem}.model-display p{color:var(--color-muted);line-height:1.55}.model-meter{background:var(--color-surface);border-radius:999px;height:14px;overflow:hidden}.model-meter span{background:var(--color-accent);height:100%;display:block}.model-answer{font-weight:800}.practice-module-tabs{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.practice-module-tabs button{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;border-radius:999px;padding:8px 12px;font-weight:800}.practice-module-tabs button.active{background:var(--color-primary);color:#fff}.module-summary{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:8px;margin-bottom:14px;padding:14px}.module-summary p{color:var(--color-muted);margin:0 0 10px;line-height:1.55}.module-summary ul{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.module-summary li{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:999px;padding:6px 10px;font-size:.84rem;font-weight:700}.practice-shell{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);grid-template-columns:minmax(260px,.34fr) minmax(0,1fr);gap:0;display:grid;overflow:hidden}.practice-sidebar{background:var(--color-surface-soft);border-right:1px solid var(--color-border);align-content:start;gap:18px;padding:20px;display:grid}.practice-sidebar__header h2,.practice-topbar h2{color:var(--color-text);margin:0}.practice-sidebar__header span{color:var(--color-muted);margin-top:8px;display:block}.practice-domain-list,.practice-type-list{gap:8px;display:grid}.practice-type-list h3{color:var(--color-text);margin:0 0 4px;font-size:.95rem}.practice-domain-list button,.practice-type-list button{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;text-align:left;gap:4px;padding:12px;transition:background-color .2s,border-color .2s,box-shadow .2s,color .2s;display:grid}.practice-domain-list button:hover,.practice-type-list button:hover{border-color:var(--color-primary)}.practice-domain-list button{grid-template-columns:auto 1fr;align-items:center}.practice-domain-list button>span{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:.78rem;font-weight:800;display:inline-flex}.practice-type-list button span{color:var(--color-muted);font-size:.84rem;font-weight:700}.practice-domain-list button.active,.practice-type-list button.active{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-ring);color:var(--color-primary);font-weight:800}.practice-domain-list button.active>span{background:var(--color-primary);color:#fff}.practice-workspace{gap:20px;padding:24px;display:grid}.practice-topbar{justify-content:space-between;align-items:center;gap:16px;display:flex}.practice-progress{min-width:150px}.practice-progress span{color:var(--color-muted);text-align:right;margin-bottom:8px;font-weight:800;display:block}.practice-progress div{background:var(--color-surface-soft);border-radius:999px;height:10px;overflow:hidden}.practice-progress i{background:var(--color-accent);height:100%;display:block}.practice-guidance,.practice-strategy-panel,.thinking-reminder{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:14px}.practice-guidance{grid-template-columns:minmax(0,1fr) minmax(220px,.8fr);gap:10px;display:grid}.practice-guidance p,.practice-guidance li,.practice-strategy-panel li,.thinking-reminder p{color:var(--color-muted);line-height:1.55}.practice-guidance p,.thinking-reminder p{margin:0}.practice-guidance ul,.practice-strategy-panel ul{margin:0;padding-left:20px}.question-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);gap:16px;padding:22px;display:grid}.question-card__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.question-card__header span{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;padding:6px 10px;font-size:.84rem;font-weight:800}.question-card__header strong{color:var(--color-primary)}.choice-grid.enhanced{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-grid.enhanced button{min-height:74px}.thinking-reminder strong,.practice-strategy-panel h3{color:var(--color-text);margin-bottom:8px;display:block}.explanation-breakdown{gap:14px;margin-top:10px;display:grid}.explanation-breakdown span{color:var(--color-text);letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px;font-size:.78rem;font-weight:900;display:block}.explanation-breakdown p{margin:0}.explanation-callout,.explanation-grid>div,.trap-list p{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#ffffff94;padding:12px}.explanation-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.trap-list{gap:8px;display:grid}.trap-list p{grid-template-columns:auto 1fr;align-items:start;gap:10px;display:grid}.trap-list strong{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-primary);border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:.78rem;display:inline-flex}@media (width<=700px){.explanation-grid{grid-template-columns:1fr}}.practice-actions{justify-content:flex-end;align-items:center;gap:12px;display:flex}@media (width<=960px){.practice-shell{grid-template-columns:1fr}.practice-sidebar{border-right:0;border-bottom:1px solid var(--color-border)}.practice-domain-list{grid-template-columns:repeat(2,minmax(0,1fr))}.practice-guidance,.choice-grid.enhanced{grid-template-columns:1fr}}@media (width<=620px){.practice-topbar,.practice-actions{flex-direction:column;align-items:stretch}.practice-progress span{text-align:left}.practice-domain-list{grid-template-columns:1fr}}.question-type-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:14px;display:grid}.question-type-tabs button{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;text-align:left;border-radius:8px;gap:4px;padding:12px;font-weight:800;display:grid}.question-type-tabs button.active{border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.question-type-tabs span,.question-progress{color:var(--color-muted);font-size:.86rem;font-weight:700}.topic-guidance{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:8px;margin-bottom:14px;padding:14px}.topic-guidance h3{color:var(--color-text);margin:0 0 8px}.topic-guidance p,.topic-guidance li{color:var(--color-muted);line-height:1.55}.topic-guidance ul{margin:10px 0 0;padding-left:20px}.module-summary strong{margin-bottom:8px;display:block}@media (width<=700px){.question-type-tabs{grid-template-columns:1fr}}.question-tools{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:14px;display:grid}.question-tools .question-prompt{margin:0}.save-question{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;white-space:nowrap;border-radius:999px;align-items:center;gap:7px;padding:9px 12px;font-weight:900;transition:background-color .2s,border-color .2s,color .2s,transform .2s;display:inline-flex}.save-question:hover{border-color:var(--color-primary);transform:translateY(-1px)}.save-question.saved{color:var(--color-warning);background:#f4b9422e;border-color:#d8942159}.saved-question-count{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);align-items:center;gap:10px;padding:12px;display:flex}.saved-question-count strong{color:var(--color-primary);font-size:1.6rem;line-height:1}.saved-question-count span{color:var(--color-muted);font-size:.86rem;font-weight:800;line-height:1.2}.practice-progress.compact{margin-bottom:16px}.answer-correct{animation:.58s correctFlash}.answer-wrong{animation:.36s wrongShake}@keyframes correctFlash{0%{box-shadow:0 0 #0d967900}35%{box-shadow:0 0 0 6px #0d96792e}to{box-shadow:var(--shadow-card)}}@keyframes wrongShake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@media (prefers-reduced-motion:reduce){.answer-correct,.answer-wrong{animation:none}}@media (width<=700px){.question-tools{grid-template-columns:1fr}.save-question{justify-content:center}}.practice-shell.with-formulas{grid-template-columns:minmax(250px,.28fr) minmax(0,1fr) minmax(240px,.26fr)}.practice-mode-panel{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.practice-mode-panel button,.timer,.difficulty-pill{background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);border-radius:999px;align-items:center;min-height:38px;padding:8px 12px;font-size:.88rem;font-weight:900;display:inline-flex}.practice-mode-panel button{cursor:pointer;transition:background-color .2s,border-color .2s,color .2s,transform .2s}.practice-mode-panel button:hover:not(:disabled){border-color:var(--color-primary);transform:translateY(-1px)}.practice-mode-panel button.active{color:var(--color-primary);background:#2251a41f;border-color:#2251a44d}.practice-mode-panel button:disabled{cursor:not-allowed;opacity:.55}.timer{color:var(--color-accent);font-variant-numeric:tabular-nums;background:#0d967921;border-color:#0d967940;justify-content:center;min-width:76px}.timer.urgent{color:#c93535;background:#dc404024;border-color:#dc404052;animation:.9s infinite timerPulse}.difficulty-pill{color:var(--color-warning);background:#f4b94229;border-color:#d894214d}.solution-reveal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);gap:12px;padding:14px;display:grid}.solution-reveal>div{justify-content:space-between;align-items:center;gap:12px;display:flex}.solution-reveal>div p{color:var(--color-muted);margin:0;font-size:.86rem;font-weight:800}.solution-reveal ol{gap:10px;margin:0;padding-left:22px;display:grid}.solution-reveal li{color:var(--color-muted);padding-left:4px;line-height:1.55}.solution-reveal .lab-button{justify-self:start;margin-top:0}.math-practice-layout{grid-template-columns:minmax(0,1fr) minmax(240px,.34fr);gap:18px;display:grid}.math-practice-layout .interactive-card{gap:16px;display:grid}.formula-sheet{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);align-self:start;overflow:hidden}.formula-sheet>button{background:var(--color-surface-soft);border:0;border-bottom:1px solid var(--color-border);color:var(--color-text);cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:14px;font-weight:900;display:flex}.formula-sheet>button span{background:var(--color-primary);color:#fff;border-radius:999px;flex:none;padding:5px 8px;font-size:.78rem}.formula-sheet__content{gap:14px;padding:14px;display:grid}.formula-sheet__content section{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:12px}.formula-sheet__content h3{color:var(--color-text);margin:0 0 8px;font-size:.94rem}.formula-sheet__content ul{gap:7px;margin:0;padding-left:18px;display:grid}.formula-sheet__content li{color:var(--color-muted);font-size:.9rem;line-height:1.45}@keyframes timerPulse{0%,to{box-shadow:0 0 #dc404000}50%{box-shadow:0 0 0 5px #dc404029}}@media (width<=1100px){.practice-shell.with-formulas,.math-practice-layout{grid-template-columns:1fr}.formula-sheet{order:-1}}@media (width<=700px){.practice-mode-panel{flex-direction:column;align-items:stretch}.practice-mode-panel button,.timer,.difficulty-pill{justify-content:center;width:100%}.solution-reveal>div{flex-direction:column;align-items:start}}.practice-shell,.practice-shell.with-formulas{grid-template-columns:minmax(0,1fr);width:100%;max-width:1320px}.practice-shell .practice-sidebar{border-right:0;border-bottom:1px solid var(--color-border);grid-template-columns:minmax(190px,.24fr) minmax(140px,.14fr) minmax(260px,.32fr) minmax(260px,.3fr);align-items:start}.practice-shell .practice-domain-list,.practice-shell .practice-type-list{align-content:start}.practice-shell .practice-domain-list{grid-template-columns:repeat(2,minmax(0,1fr))}.practice-shell .practice-type-list{max-height:238px;overflow:auto}.practice-shell .practice-workspace{padding:30px clamp(22px,4vw,54px) 36px}.practice-shell .formula-sheet{box-shadow:none;border-bottom:0;border-left:0;border-right:0;border-radius:0}.practice-shell .formula-sheet__content{grid-template-columns:repeat(4,minmax(0,1fr))}.question-card{gap:22px;padding:clamp(24px,4vw,46px)}.question-card__header span,.question-card__header strong{font-size:.95rem}.question-prompt{font-size:clamp(1.08rem,1.4vw,1.32rem);line-height:1.7}.choice-grid.enhanced,.choice-grid{gap:14px}.choice-grid.enhanced button,.choice-grid button{min-height:88px;padding:18px;font-size:1rem;line-height:1.45}.choice-grid.enhanced button span,.choice-grid button span{flex:none}.practice-guidance{grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr)}.practice-mode-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:12px}.feedback{padding:18px}.solution-reveal,.explanation-callout,.explanation-grid>div,.trap-list p{background:var(--color-surface)}@media (width>=1120px){.practice-shell .question-card{min-height:560px}}@media (width<=1120px){.practice-shell .practice-sidebar,.practice-shell .formula-sheet__content{grid-template-columns:1fr 1fr}}@media (width<=760px){.practice-shell .practice-sidebar,.practice-shell .practice-domain-list,.practice-shell .formula-sheet__content,.practice-guidance,.choice-grid.enhanced{grid-template-columns:1fr}.practice-shell .practice-workspace{padding:18px}.question-card{padding:20px}.choice-grid.enhanced button,.choice-grid button{min-height:72px}}.interactive-lab.math-lab{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.math-lab .math-practice-layout{grid-column:1/-1}.math-practice-layout{grid-template-columns:minmax(0,1fr)}.math-practice-layout .formula-sheet{order:0}.math-practice-layout .formula-sheet__content{grid-template-columns:repeat(4,minmax(0,1fr))}.sat-question-practice{padding:clamp(22px,4vw,42px)}.sat-question-practice>.question-card{margin-top:6px}@media (width<=1000px){.interactive-lab.math-lab,.math-viz-suite,.math-practice-layout .formula-sheet__content{grid-template-columns:1fr}.math-viz-card:first-child{grid-column:auto}.viz-controls.two-column,.donut-layout{grid-template-columns:1fr}}.backend-status{background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:10px 12px;display:flex}.backend-status span{color:var(--color-text);font-weight:900}.backend-status small{color:var(--color-muted);font-weight:800}.backend-status.connected{background:#0d96791f;border-color:#0d967947}.backend-status.connected span{color:var(--color-accent)}.analytics-panel{background:color-mix(in srgb, var(--color-surface-soft) 88%, transparent);border:1px solid var(--color-border);border-radius:var(--radius-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 14px;padding:12px 14px;display:flex}.analytics-panel strong{color:var(--color-text);font-size:.92rem}.analytics-panel div{flex-wrap:wrap;gap:8px;display:flex}.analytics-panel span{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;padding:6px 10px;font-size:.82rem;font-weight:850}.analytics-panel.muted{color:var(--color-muted)}
