:root{--bg:#efe5dc;--surface:#f6f1e8;--surface-2:#e4d9c8;--border:#d8cdb8;--border-strong:#bfb29a;--text:#171519;--text-2:#5c5650;--text-3:#6a635b;--accent:#6d3fd4;--accent-hover:#5f33c4;--accent-fg:#fff;--accent-soft:#ece5fb;--pink:#c2255c;--ok:#1f8a4c;--ok-soft:#e6f5ec;--warn:#8a5a12;--warn-soft:#fbf1df;--danger:#d23f3a;--danger-soft:#fceae9;--code-bg:#171519;--code-fg:#efe5dc;--radius:12px;--radius-sm:8px;--radius-lg:16px;--shadow-sm:0 1px 2px #0000000d, 0 1px 1px #00000008;--shadow-md:0 8px 24px -12px #0000002e;--syn-keyword:#7c3aed;--syn-string:#1f7a4c;--syn-number:#b45309;--syn-comment:var(--text-3);--syn-function:#2f6bff;--syn-variable:var(--text);--syn-operator:var(--text-2);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", Inter, "Segoe UI", system-ui, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#171519;--surface:#201d23;--surface-2:#2a252e;--border:#38333c;--border-strong:#4c4652;--text:#efe5dc;--text-2:#a89f94;--text-3:#8f867c;--accent:#b79cff;--accent-hover:#c4a7ff;--accent-fg:#171519;--accent-soft:#262040;--pink:#f783ac;--ok:#4cc38a;--ok-soft:#12291d;--warn:#e0a84a;--warn-soft:#2b2312;--danger:#f0716c;--danger-soft:#331716;--code-bg:#100e12;--code-fg:#efe5dc;--shadow-sm:0 1px 2px #0006;--shadow-md:0 10px 30px -12px #000000b3;--syn-keyword:#c4a7ff;--syn-string:#7ed3a3;--syn-number:#f0c27a;--syn-comment:var(--text-3);--syn-function:#8fb3ff;--syn-variable:var(--text);--syn-operator:var(--text-2);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{background:var(--bg);scrollbar-width:thin;scrollbar-color:var(--accent) transparent;min-width:320px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{border:2px solid var(--bg);background:linear-gradient(180deg, var(--accent), var(--accent-hover));border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--accent-hover)}body{min-width:320px;min-height:100vh;font:16px/1.6 var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}h1,h2,h3,p{overflow-wrap:anywhere}h1{letter-spacing:-.02em;max-width:900px;margin:0;font-size:clamp(30px,3.6vw,42px);font-weight:650;line-height:1.15}h1[tabindex="-1"]:focus{outline:none}h2{letter-spacing:-.015em;margin:0;font-size:clamp(22px,2.4vw,28px);font-weight:600;line-height:1.25}h3{margin:0;font-size:19px;font-weight:600;line-height:1.35}code,pre,.command-block{font-family:var(--mono)}pre{overflow:auto}.skip-link{z-index:100;top:var(--s3);left:var(--s3);padding:var(--s3) var(--s4);border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-fg);font-weight:650;position:fixed;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.onboarding-backdrop{z-index:60;padding:var(--s4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0a0e8c;place-items:center;display:grid;position:fixed;inset:0;overflow-y:auto}.onboarding-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);width:min(720px,100%);max-height:calc(100vh - 48px);box-shadow:var(--shadow-md);padding:clamp(24px,4vw,44px);overflow-y:auto}.onboarding-card h1{font-size:clamp(26px,3.4vw,34px)}.onboarding-card h1:focus{outline:none}.onboarding-tracks{gap:var(--s3);margin-top:var(--s5);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.track-pick{gap:var(--s2);padding:var(--s4) var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);text-align:left;cursor:pointer;display:grid}.track-pick:hover{border-color:var(--border-strong)}.track-pick.is-active{border-color:var(--accent);background:var(--accent-soft)}.track-pick strong{font-size:16px}.track-pick span{color:var(--text-2);font-size:14px;line-height:1.5}.track-pick small{color:var(--text-2);font-size:13px}.onboarding-budget{margin-top:var(--s5)}.onboarding-welcome{margin:var(--s4) 0 var(--s3);color:var(--text-2);font-size:17px}.onboarding-wordmark{margin:0 0 var(--s5);color:var(--text);display:block}.onboarding-wordmark svg{width:min(250px,62vw);height:auto;display:block}@media (width>=420px){.onboarding-lede{text-align:justify;-webkit-hyphens:auto;hyphens:auto}}.app-shell{min-height:100vh}.topbar{z-index:20;align-items:center;gap:var(--s5);min-height:64px;padding:var(--s2) clamp(16px, 3vw, 40px);border-bottom:1px solid color-mix(in srgb, var(--border) 88%, transparent);background:color-mix(in srgb, var(--surface) 86%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);grid-template-columns:1fr auto auto auto 1fr;display:grid;position:sticky;top:0}.brand{margin-inline:var(--s5)}.nav-footer{padding:var(--s3) var(--s2) 0;color:var(--text-3);text-align:center;margin-top:auto;font-size:12px}.nav-collapsed .nav-footer{display:none}.sponsor-slots{gap:var(--s4);display:flex}.sponsor-slot{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);min-height:36px;color:var(--text-3);white-space:nowrap;cursor:pointer;background:0 0;padding:6px 12px;font-size:12px;font-weight:600}.sponsor-slot:hover{border-color:var(--accent);color:var(--accent-hover)}.sponsor-backdrop{z-index:50;padding:var(--s4);background:#00000073;place-items:center;display:grid;position:fixed;inset:0}.sponsor-modal{width:100%;max-width:520px;padding:var(--s6);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-md)}.sponsor-modal h2{margin:0 0 var(--s3)}.sponsor-modal p{margin:0 0 var(--s3);color:var(--text-2);line-height:1.55}.sponsor-actions{gap:var(--s2);margin-top:var(--s4);flex-wrap:wrap;display:flex}@media (width<=1200px){.sponsor-slots{display:none}}.brand{flex-direction:column;justify-self:center;align-items:center;gap:0;text-decoration:none;display:inline-flex}.brand-wordmark{color:var(--text);display:inline-flex}.brand-wordmark svg{width:auto;height:36px;display:block}.topbar-left{align-items:center;gap:var(--s4);color:var(--text-2);justify-self:start;font-size:13px;display:flex}.topbar-right{justify-self:end;align-items:center;display:flex}.nav-main>.nav-toggle{min-height:44px;margin-bottom:var(--s1);justify-content:flex-start}.nav-collapsed .nav-main>.nav-toggle{justify-content:center;padding-inline:0}.nav-toggle svg{width:20px;height:20px;display:block}.local-status{align-items:center;gap:var(--s2);display:inline-flex}.local-status>span{background:var(--ok);border-radius:50%;width:8px;height:8px}.theme-toggle{min-width:36px}.theme-toggle svg{width:19px;height:19px;display:block}.today-boost{color:var(--accent-hover)}.app-body{grid-template-columns:248px minmax(0,1fr);min-height:calc(100vh - 64px);transition:grid-template-columns .35s;display:grid}.main-nav{height:calc(100vh - 64px);padding:var(--s6) var(--s4) var(--s4);border-right:1px solid var(--border);background:var(--surface);flex-direction:column;align-self:start;gap:2px;display:flex;position:sticky;top:64px;overflow-y:auto}.nav-main{flex-direction:column;gap:2px;margin-block:auto;display:flex}.main-nav .nav-main>a{align-items:center;gap:var(--s3);border-radius:var(--radius-sm);min-height:44px;color:var(--text-2);padding:10px 12px;font-size:15px;font-weight:500;text-decoration:none;display:flex}.main-nav .nav-main>a:hover{background:var(--surface-2);color:var(--text)}.main-nav .nav-main>a[aria-current=page]{background:var(--accent-soft);color:var(--text)}.main-nav .nav-main>a svg{flex:none;width:16px;height:16px}.nav-recent{border-left:1px solid var(--border);flex-direction:column;margin:2px 0 2px 24px;padding-left:14px;display:flex}.nav-recent a{color:var(--text-2);padding:6px 4px;font-size:13px;text-decoration:none;display:block;position:relative}.nav-recent a>span{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.nav-recent a.nav-recent-module:before{content:"";background:var(--text-3);border-radius:50%;width:6px;height:6px;margin-top:-3px;position:absolute;top:50%;left:-17px}.nav-recent a.nav-recent-lesson:before{content:"";border-left:1px solid var(--border);border-bottom:1px solid var(--border);border-bottom-left-radius:6px;width:20px;height:50%;position:absolute;top:0;left:-14px}.nav-recent a.nav-recent-lesson:after{content:"";background:var(--text-3);border-radius:50%;width:6px;height:6px;margin-top:-3px;position:absolute;top:50%;left:3px}.nav-recent a:hover{color:var(--text)}.nav-recent a[aria-current=page]{color:var(--text);font-weight:600}.nav-recent a.nav-recent-module[aria-current=page]:before,.nav-recent a.nav-recent-lesson[aria-current=page]:after{background:var(--accent)}.nav-recent a.nav-recent-lesson{padding-left:14px;font-size:12px}@media (width>=921px){.breadcrumbs{display:none}.app-body.nav-collapsed{grid-template-columns:76px minmax(0,1fr)}.nav-collapsed .main-nav{padding-inline:var(--s2)}.nav-collapsed .nav-main>a{justify-content:center;padding-inline:0}.nav-collapsed .nav-main>a>span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}main{min-width:0}.view{width:min(1400px,100%);padding:var(--s7) clamp(24px, 4vw, 56px) var(--s8);margin:0 auto}.view-header{max-width:760px;margin-bottom:var(--s6)}.breadcrumbs{margin-bottom:var(--s4);color:var(--text-2);font-size:14px}.breadcrumbs ol{flex-wrap:wrap;gap:0;margin:0;padding:0;list-style:none;display:flex}.breadcrumbs li{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:32ch;overflow:hidden}.breadcrumbs li+li:before{content:"›";margin:0 var(--s2);color:var(--text-3)}.breadcrumbs a{color:inherit;text-decoration:none}.breadcrumbs a:hover{text-decoration:underline}.split-header{justify-content:space-between;align-items:end;gap:var(--s6);max-width:none;display:flex}.eyebrow,.card-kicker{margin:0 0 var(--s2);color:var(--text-2);letter-spacing:0;font-size:13px;font-weight:500}.eyebrow{color:var(--accent-hover)}.lede{max-width:68ch;margin:var(--s4) 0 0;color:var(--text-2);font-size:18px;line-height:1.55}.btn{justify-content:center;align-items:center;gap:var(--s2);border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;min-height:44px;padding:10px 16px;font-size:15px;font-weight:600;line-height:1.2;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.btn-sm{min-height:36px;padding:7px 11px;font-size:13px}.btn-primary{border-color:var(--accent);background:var(--accent);color:var(--accent-fg);box-shadow:var(--shadow-sm)}.btn-primary:hover{border-color:var(--accent-hover);background:var(--accent-hover)}.btn-secondary{border-color:var(--border-strong);background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}.btn-ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn:disabled{cursor:wait;opacity:.55}.actions{align-items:center;gap:var(--s3);margin-top:var(--s5);flex-wrap:wrap;display:flex}.text-link{min-height:44px;color:var(--accent-hover);align-items:center;font-weight:600;display:inline-flex}.plan-note{margin:0 0 var(--s3);color:var(--text-2);font-size:14px}.lesson-cta{width:100%;margin:var(--s4) 0;flex-wrap:wrap;justify-content:center;row-gap:2px}.lesson-cta>span:first-child{white-space:nowrap}.lesson-cta>span:last-child{min-width:0}.today-grid{gap:var(--s4);grid-template-columns:minmax(0,1.5fr) minmax(260px,.75fr);display:grid}.today-grid>:nth-child(3):last-child{grid-column:1/-1}.primary-card,.status-card,.reason-panel,.empty-state,.settings-panel,.source-card,.tool-card,.unit-card,.roadmap-card,.activity-card,.diagnostic-card,.review-card,.lesson-list a,.project-panel,.report-panel,.deliverables,.exercise-work,.exercise-feedback,.editor-panel,.output-panel,.lesson-prose,.lesson-tasks,.lesson-pagination>a,.visualization-controls,.progress-summary,.policy,.journal{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm)}.primary-card{gap:var(--s4);background:linear-gradient(180deg, var(--surface) 20%, color-mix(in srgb, var(--accent-soft) 65%, var(--surface)));color:var(--text);box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff73;flex-direction:column;padding:clamp(24px,3vw,36px);display:flex}.primary-card .actions{padding-top:var(--s5);margin-top:auto}:root[data-theme=dark] .primary-card{box-shadow:var(--shadow-sm), inset 0 1px 0 #ffffff12}.primary-card .card-kicker{color:var(--accent-hover)}.primary-card h2{max-width:600px;font-size:clamp(26px,3vw,32px)}.primary-card p:not(.card-kicker){max-width:600px;color:var(--text-2)}.status-card,.source-card,.tool-card,.unit-card,.project-panel,.exercise-work,.exercise-feedback{padding:clamp(20px,3vw,32px)}.status-card>p:not(.card-kicker,.meter-label),.project-panel>p:not(.card-kicker),.report-panel p,.tool-card>p{color:var(--text-2);line-height:1.55}.status-card .card-kicker{color:var(--accent-hover)}.meter{height:8px;margin-top:var(--s5);background:var(--surface-2);border-radius:999px;overflow:hidden}.meter span{border-radius:inherit;background:var(--meter-color,var(--accent));height:100%;display:block}.meter-warning{--meter-color:var(--warn)}.meter-label{color:var(--text-2);font-size:13px}.milestone-card .milestone-sub{margin:0 0 var(--s4);color:var(--text-2);line-height:1.55}.milestone-card .meter-lg{height:14px;margin-top:0}.milestone-card .meter-label{margin-top:var(--s3);font-size:14px}.milestone-card .text-link{margin-top:var(--s2)}.resume-link{margin-top:var(--s2);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.weekly-plan{margin-top:var(--s7)}.carousel{position:relative}.carousel-track{gap:var(--s3);scroll-snap-type:x proximity;scrollbar-width:none;margin-block:-4px;padding-block:4px;scroll-padding:0;display:flex;overflow-x:auto}@media (pointer:coarse){.carousel-track{scroll-snap-type:x mandatory}}.carousel-track::-webkit-scrollbar{display:none}.carousel-slide{scroll-snap-align:start;flex:0 0 min(100%,360px)}.plan-day{height:100%;padding:var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-height:260px}.plan-day ol{gap:var(--s2);margin:var(--s4) 0 0;padding:0;list-style:none;display:grid}.plan-day li a{gap:var(--s1);padding:var(--s3);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);text-decoration:none;display:grid}.plan-day li a:hover,.lesson-list a:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.plan-day li span,.time-chip,.lesson-list span,.lesson-pagination span{color:var(--text-2);font-size:13px}.reason-panel{margin-top:var(--s4);background:var(--accent-soft);padding:clamp(24px,4vw,42px)}.reason-panel ol{gap:var(--s3);max-width:850px;margin:var(--s5) 0 0;padding-left:var(--s5);line-height:1.55;display:grid}.search-field{gap:var(--s2);width:min(320px,100%);color:var(--text-2);font-size:13px;font-weight:600;display:grid}.search-field input,.settings-panel input,.settings-panel select,.answer-field input,.answer-field textarea,.trace-control input,.visualization-controls input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:44px;color:var(--text);padding:12px 14px}.track-strip{border:1px solid var(--border);background:var(--surface-2);border-radius:999px;gap:2px;max-width:100%;padding:4px;display:inline-flex;overflow-x:auto}.track-chip{min-height:36px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:999px;flex:none;padding:8px 13px;font-size:14px}.track-chip.active{background:var(--surface);box-shadow:var(--shadow-sm);color:var(--text)}.learn-view{flex-direction:column;min-height:calc(100dvh - 64px);display:flex}.track-name-accent{color:var(--accent-hover)}.learn-view .split-header,.learn-view .section-heading,.learn-view .learn-rest-head{padding-inline:calc(40px + var(--s3))}.activity-section.learn-history,.activity-section.learn-rest{border-top:1px solid var(--border);padding-top:var(--s5);margin-top:var(--s8)}.learn-rest-head{justify-content:space-between;align-items:center;gap:var(--s3) var(--s6);margin-bottom:var(--s4);flex-wrap:wrap;display:flex}.learn-rest-head h2{margin:0}.learn-rest-head .track-strip{flex:none;margin-left:auto}.history-card{gap:var(--s1);height:100%;padding:var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);color:inherit;flex-direction:column;text-decoration:none;display:flex}.history-card strong{font-size:16px;line-height:1.4}.history-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.tag-progress{border-color:var(--accent);color:var(--text)}.omni-search{flex:none;width:240px;max-width:100%;margin:0}.omni-search input{text-align:center;min-height:40px;box-shadow:var(--shadow-sm);background:linear-gradient(180deg, color-mix(in srgb, var(--surface) 72%, transparent), color-mix(in srgb, var(--surface-2) 72%, transparent));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:999px;padding:9px 18px;font-size:14px}.activity-section.learn-rail{margin-top:var(--s5)}.track-below{max-width:68ch;margin:var(--s5) auto 0;text-align:center}.track-below p{margin:0 0 var(--s1);color:var(--text-3);text-wrap:balance;font-size:14px;line-height:1.55}.track-below span{color:var(--text-3);font-size:13px}.competency-summary{align-items:baseline;gap:var(--s2);margin:var(--s5) 0;color:var(--text-2);flex-wrap:wrap;font-size:14px;display:flex}.competency-summary strong{color:var(--text);font-size:24px}.summary-separator{width:1px;height:24px;margin:0 var(--s2);background:var(--border)}.prerequisites{align-items:center;gap:var(--s2);color:var(--text-2);margin-top:auto;font-size:13px;display:flex}.state-dot{border:1px solid var(--border-strong);border-radius:50%;width:9px;height:9px}.muted{color:var(--text-2);font-size:13px}.card-link{text-indent:-9999px;position:absolute;inset:0;overflow:hidden}.card-link:focus-visible{inset:5px}.competency-detail-grid{gap:var(--s4);grid-template-columns:1fr 1fr;display:grid}.prerequisite-panel{margin-top:var(--s3);padding:var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:var(--accent-soft)}.prerequisite-panel ul{gap:var(--s3);margin:var(--s4) 0 0;padding:0;list-style:none;display:grid}.prerequisite-panel li{justify-content:space-between;gap:var(--s5);padding-top:var(--s3);border-top:1px solid var(--border);display:flex}.prerequisite-panel li span{color:var(--text-2);font-size:13px}.activity-section{margin-top:var(--s7)}.module-sections{gap:var(--s7);margin-top:var(--s5);display:grid}.module-sections .lesson-list{grid-template-columns:repeat(2,minmax(0,1fr))}.section-heading{justify-content:space-between;align-items:end;gap:var(--s5);margin-top:var(--s5);margin-bottom:var(--s4);display:flex}.section-heading>span{color:var(--text-2);font-size:13px}.activity-list,.roadmap-list,.unit-list,.review-list{gap:var(--s4);display:grid}.visualization-links{gap:var(--s2);margin:-12px 0 var(--s5);flex-wrap:wrap;display:flex}.visualization-links a{border:1px solid var(--border);color:var(--accent-hover);border-radius:999px;padding:8px 12px;font-size:13px}.source-grid,.tool-grid,.project-grid{gap:var(--s4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.source-card h2,.tool-card h2,.unit-card h2{font-size:clamp(20px,2.4vw,24px)}.tool-card h3{margin-top:var(--s5);color:var(--accent-hover);font-size:13px}.tool-card ul{padding-left:var(--s5);line-height:1.55}.source-card dl{gap:var(--s3);margin:var(--s5) 0;display:grid}.source-card dl div{gap:var(--s3);padding-top:var(--s3);border-top:1px solid var(--border);grid-template-columns:90px minmax(0,1fr);display:grid}.source-card dt{color:var(--text-2);font-size:13px}.source-card dd{overflow-wrap:anywhere;min-width:0;margin:0;line-height:1.45}.roadmap-card{align-items:center;gap:var(--s5);padding:var(--s5);grid-template-columns:minmax(0,1fr) auto;display:grid}.source-links,.download-list{gap:var(--s2);margin:var(--s5) 0 0;padding:0;list-style:none;display:grid}.source-links li{gap:var(--s1);padding-top:var(--s3);border-top:1px solid var(--border);display:grid}.source-links a,.download-list a{color:var(--accent-hover);font-weight:600}.source-links span{color:var(--text-2);font-size:13px}.download-list a{padding:var(--s3);border:1px solid var(--border);border-radius:var(--radius-sm);display:block}.visualization-layout{gap:var(--s4);grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);align-items:start;display:grid}.matrix-board,.viz-board{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:300px}.matrix-board{height:min(62vh,620px);min-height:420px}.visualization-controls{gap:var(--s3);padding:var(--s5);margin:0;display:grid}.visualization-controls legend{padding:0 var(--s2);font-weight:650}.visualization-controls label{align-items:center;gap:var(--s3);grid-template-columns:40px minmax(0,1fr);font-weight:600;display:grid}.visualization-controls output{color:var(--accent-hover);font-weight:650}.activity-card{align-items:center;gap:var(--s6);padding:var(--s5);grid-template-columns:minmax(0,1fr) auto;display:grid}.activity-card h3{max-width:760px}.activity-card p{margin:var(--s2) 0 0;color:var(--text-2)}.diagnostic-grid{gap:var(--s4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.diagnostic-card{min-height:240px;padding:var(--s5);flex-direction:column;display:flex}.diagnostic-card>span{color:var(--accent-hover);font-size:13px}.diagnostic-card h2{margin-top:var(--s5);font-size:24px}.diagnostic-card p{color:var(--text-2);line-height:1.45}.diagnostic-card a{color:var(--accent-hover);margin-top:auto;font-weight:600}.empty-state{max-width:760px;padding:clamp(24px,4vw,40px)}.empty-state p{max-width:560px;margin:var(--s3) 0 var(--s5);color:var(--text-2);line-height:1.55}.settings-panel{gap:var(--s5);max-width:760px;margin-bottom:var(--s4);padding:clamp(24px,4vw,40px);display:grid}.settings-panel label{gap:var(--s2);font-weight:600;display:grid}.settings-panel input[type=file],.report-panel input[type=file]{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.privacy-note{padding:var(--s4);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--accent-soft);margin:0;line-height:1.5}.segmented{gap:var(--s1);width:fit-content;padding:var(--s1);background:var(--surface-2);border-radius:10px;display:inline-flex}.segmented button{min-height:36px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:8px 14px;font-size:14px}.segmented button.is-active{background:var(--surface);box-shadow:var(--shadow-sm);color:var(--text)}.state-learning{background:var(--warn-soft)}.state-demonstrated,.state-retained{border-color:var(--ok);background:var(--ok)}.state-review_due{border-color:var(--danger);background:var(--danger)}.review-card{justify-content:space-between;align-items:center;gap:var(--s5);padding:var(--s5);display:flex}.review-card p{margin:var(--s2) 0 0;color:var(--text-2)}.progress-summary{gap:var(--s5);margin-bottom:var(--s6);padding:clamp(24px,4vw,40px);display:grid}.progress-summary-stats{gap:var(--s4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.progress-summary-stats>div{gap:var(--s2);text-align:center;justify-items:center;display:grid}.progress-summary-stats strong{letter-spacing:-.03em;font-size:clamp(22px,3vw,28px);line-height:1.1;display:block}.progress-summary-stats span{color:var(--text-2);font-size:14px}.progress-summary .meter{height:12px;margin-top:0}.tag{border:1px solid var(--border);min-height:28px;color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;padding:4px 9px;font-size:12px;font-weight:650;display:inline-flex}.tag-warning{border-color:var(--warn);color:var(--warn)}.due-list,.journal ul{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.due-list li,.journal li{justify-content:space-between;gap:var(--s4);padding:var(--s3) 0;border-bottom:1px solid var(--border);display:flex}.due-list li:last-child,.journal li:last-child{border-bottom:0}.due-list a{color:var(--accent-hover);font-weight:650;text-decoration:none}.due-list span,.journal li{color:var(--text-2);font-size:14px}.policy,.journal{margin-top:var(--s5);padding:var(--s4) var(--s5)}.policy summary,.journal summary{cursor:pointer;font-weight:650}.policy p{max-width:850px;margin:var(--s4) 0 0;color:var(--text-2);line-height:1.55}.journal ul{margin-top:var(--s4)}.journal li{font-size:14px}.save-status{min-height:24px;color:var(--ok);margin:0;font-weight:600}.lesson-list{gap:var(--s3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.lesson-list a{min-height:150px;padding:var(--s5);flex-direction:column;text-decoration:none;display:flex}.lesson-list strong{margin-top:var(--s4);font-size:21px}.lesson-list p{padding-top:var(--s3);color:var(--text-2);margin:auto 0 0;line-height:1.4}.lesson-header{gap:var(--s3);margin-bottom:var(--s5);text-align:center;display:grid}.lesson-subtitle{max-width:62ch;color:var(--text-2);text-wrap:balance;margin:0 auto;font-size:16px;line-height:1.55}.toc-kicker{display:none}.toc-links{display:contents}.objectives-mini{z-index:15;position:fixed;top:58px;left:50%;transform:translate(-50%)}.objectives-drop-mini summary{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);width:30px;height:30px;color:var(--pink);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:50%;place-items:center;list-style:none;display:grid}.objectives-drop-mini summary::-webkit-details-marker{display:none}.objectives-drop-mini summary:hover,.objectives-drop-mini[open] summary{border-color:var(--pink)}.objectives-drop-mini summary svg{transition:transform .18s}.objectives-drop-mini[open] summary svg{transform:rotate(180deg)}.objectives-panel{z-index:15;width:min(560px,100vw - 32px);max-height:min(52vh,480px);padding:var(--s4) var(--s5) var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-md);font-size:16px;line-height:1.45;position:fixed;top:100px;left:50%;overflow:auto;transform:translate(-50%)}.objectives-panel p{margin:0 0 var(--s3);font-size:15px}.objectives-panel ul{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.objectives-panel li{padding-left:var(--s4);position:relative}.objectives-panel li:before{content:"";background:var(--pink);border-radius:50%;width:6px;height:6px;position:absolute;top:.68em;left:0}@media (width<=680px){.objectives-mini{top:54px}.objectives-panel{top:94px}}.lesson-prose{min-width:0;max-width:80ch;font:18px/1.75 var(--sans);padding:clamp(24px,4vw,48px)}.lesson-prose .katex-display{max-width:100%;overflow:auto hidden}.lesson-block{min-width:0;max-width:100%;overflow-x:auto}.lesson-toc{justify-content:center;gap:var(--s2);max-width:80ch;margin:0 auto var(--s5);flex-wrap:wrap;display:flex}.lesson-toc a{border:1px solid var(--border);background:var(--surface);color:var(--text-2);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:500;text-decoration:none}.lesson-toc a:hover,.lesson-toc a.is-active{border-color:var(--accent);color:var(--accent-hover)}.lesson-layout{grid-template-areas:"crumbs""head""toc""main""tasks""sources""pages";gap:0;max-width:80ch;margin-inline:auto;font-size:18px;display:grid}.lesson-layout>*{min-width:0}.lesson-layout>.breadcrumbs{grid-area:crumbs}.lesson-layout>header{grid-area:head}.lesson-layout>nav.lesson-toc{grid-area:toc}.lesson-layout>article{grid-area:main}.lesson-layout>.lesson-tasks{grid-area:tasks}.lesson-layout>.lesson-sources{grid-area:sources}.lesson-layout>.lesson-pagination{grid-area:pages}@media (width>=1280px){.lesson-layout{gap:0 var(--s6);grid-template-columns:minmax(0,80ch) 220px;grid-template-areas:"crumbs crumbs""head.""main rail""tasks.""sources.""pages.";justify-content:center;align-items:start;max-width:none}.lesson-layout>nav.lesson-toc{grid-area:rail}.lesson-header .eyebrow{display:none}.lesson-toc{flex-direction:column;justify-content:flex-start;align-items:stretch;gap:0;max-width:none;margin:0;position:sticky;top:50vh;transform:translateY(-50%)}.toc-kicker{margin:0 0 var(--s2);color:var(--pink);letter-spacing:.03em;padding-left:18px;font-size:12px;font-weight:600;display:block}.toc-links{scrollbar-width:none;max-height:calc(100vh - 200px);padding:var(--s2) 0;border-left:1px solid var(--border);flex-direction:column;display:flex;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000,#000 10% 90%,#0000);mask-image:linear-gradient(#0000,#000 10% 90%,#0000)}.toc-links::-webkit-scrollbar{display:none}.lesson-toc a{color:var(--text-3);background:0 0;border:0;border-radius:0;padding:6px 0 6px 18px;position:relative}.lesson-toc a:before{content:"";background:0 0;border-radius:2px;width:2px;transition:background-color .18s;position:absolute;top:7px;bottom:7px;left:-1px}.lesson-toc a:hover,.lesson-toc a.is-active{color:var(--text)}.lesson-toc a.is-active:before{background:var(--accent)}}.lesson-prose{gap:var(--s4);width:100%;box-shadow:none;counter-reset:lesson-section;background:0 0;border:0;align-content:start;margin-inline:auto;padding:0;display:grid}.lesson-lead{font-size:19px;line-height:1.7}.lesson-lead>div>:last-child{margin-bottom:0}@media (width>=420px){.lesson-lead{text-align:justify;-webkit-hyphens:auto;hyphens:auto}}.lesson-section{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);counter-increment:lesson-section;padding:clamp(20px,3vw,32px);scroll-margin-top:88px;overflow-x:auto}.lesson-section h2{margin-top:var(--s4)}.lesson-section>div>h2:first-child{margin-top:var(--s2)}.lesson-kicker{margin:0 0 var(--s1);color:var(--accent-hover);font-size:13px;font-weight:600}.lesson-kicker-num{font-family:var(--mono)}.lesson-kicker-num:before{content:counter(lesson-section, decimal-leading-zero)}.lesson-prose h2{margin:var(--s7) 0 var(--s3)}.lesson-prose h2:first-child{margin-top:0}.lesson-prose p{margin:0 0 var(--s4)}.lesson-prose a[href^="#/family/"]{border:1px solid var(--border);background:var(--accent-soft);color:var(--accent-hover);border-radius:999px;padding:2px 10px;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex}.lesson-prose a[href^="#/family/"]:hover{border-color:var(--accent)}.lesson-prose ul,.lesson-prose ol{padding-left:var(--s5)}.lesson-prose li{margin-bottom:var(--s2)}.lesson-prose code{background:var(--surface-2);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:4px;padding:.1em .3em;font-size:.88em}.lesson-prose .katex{white-space:nowrap}.lesson-prose pre,.trace-control>pre{padding:var(--s4);border-radius:var(--radius-sm);background:var(--code-bg);color:var(--code-fg);font:14px/1.55 var(--mono);overflow:auto}.lesson-prose pre code{color:inherit;background:0 0;padding:0}.lesson-prose table{width:100%;margin:var(--s5) 0;border-collapse:collapse;font-size:14px}.lesson-prose th,.lesson-prose td{border:1px solid var(--border);text-align:left;padding:9px}.lesson-tasks{width:100%;max-width:80ch;margin-top:var(--s6);padding:var(--s5);margin-inline:auto}.side-cards{gap:var(--s3);margin:var(--s4) 0;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.side-card{gap:var(--s1);padding:var(--s4);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);display:grid}.side-card strong{font-size:16px}.side-card span{color:var(--text-2);font-size:14px}.side-card .btn{margin-top:var(--s2);justify-self:start}.lesson-sources{width:100%;max-width:80ch;margin-inline:auto}.lesson-sources li a{display:grid}.lesson-sources li span{font-weight:500;line-height:1.45}.lesson-pagination{gap:var(--s3);width:100%;max-width:80ch;margin-top:var(--s4);grid-template-columns:1fr 1fr;margin-inline:auto;display:grid}.lesson-pagination>a{min-height:100px;padding:var(--s4);flex-direction:column;justify-content:space-between;text-decoration:none;display:flex}.lesson-pagination>a:last-child{text-align:right}.project-panel,.report-panel,.deliverables{padding:clamp(24px,4vw,40px)}.report-panel{align-items:center;gap:var(--s5);margin-top:var(--s4);grid-template-columns:minmax(0,1fr) auto;display:grid}.report-result{grid-column:1/-1;min-height:0}.report-result strong{margin-bottom:var(--s2);display:block}.report-result ul{color:var(--danger);margin-bottom:0}.deliverables{margin-top:var(--s4);background:var(--accent-soft)}.deliverables ul{gap:var(--s3);margin-bottom:0;line-height:1.5;display:grid}.exercise-layout{align-items:start;gap:var(--s5);grid-template-columns:minmax(0,1fr) 320px;display:grid}.exercise-main{min-width:0}.exercise-side{padding:var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);position:sticky;top:88px}.exercise-side h2{font-size:20px}.exercise-side-note{margin:var(--s5) 0 0;color:var(--text-2);font-size:13px;line-height:1.45}.actions.vertical{flex-direction:column;align-items:stretch}.actions.vertical .btn{width:100%}.prompt-card{margin-bottom:var(--s4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);padding:clamp(20px,3vw,32px)}.prompt-content{font-size:18px;line-height:1.65}.prompt-card pre{margin:var(--s4) 0 0;padding:var(--s4);border-radius:var(--radius-sm);background:var(--code-bg);color:var(--code-fg);font:14px/1.55 var(--mono);overflow:auto}.exercise-answer{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);padding:clamp(20px,3vw,32px)}.exercise-feedback{margin-top:var(--s5)}.choice-list,.trace-control fieldset{gap:var(--s3);border:0;margin:0;padding:0;display:grid}.choice-list legend,.trace-control legend{margin-bottom:var(--s3);font-weight:650}.choice-list label{align-items:center;gap:var(--s3);min-height:58px;padding:var(--s3);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;display:flex}.choice-list label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.choice-list input{width:19px;height:19px;accent-color:var(--accent);flex:none}.answer-field{gap:var(--s2);font-weight:600;display:grid}.answer-field input,.answer-field textarea,.answer-field math-field{min-height:48px;padding:14px}.answer-field input,.answer-field textarea{font:14px/1.5 var(--mono)}.answer-field textarea{resize:vertical}.answer-field small{color:var(--text-2);font:500 12px/1.45 var(--sans)}.fading-control{line-height:2.2}.fading-gap{width:8ch;min-height:36px;margin:0 var(--s1);padding:var(--s1) var(--s2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:14px/1.4 var(--mono);text-align:center;vertical-align:baseline;display:inline-block}.fading-gap:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.worked-example-callout{margin-bottom:var(--s3);border:1px solid var(--border);border-radius:var(--radius);background:var(--accent-soft);padding:clamp(20px,4vw,34px)}.worked-example-callout h2{max-width:780px}.worked-example-steps{gap:var(--s3);margin:var(--s5) 0 0;counter-reset:worked-step;padding:0;list-style:none;display:grid}.worked-example-steps>li{padding:var(--s4);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);counter-increment:worked-step}.worked-example-steps>li>strong:before{content:counter(worked-step) ". ";color:var(--accent-hover)}.trace-table-scroll{border:1px solid var(--border);border-radius:var(--radius-sm);overflow-x:auto}.trace-table-scroll table{border-collapse:collapse;width:100%;font-size:14px}.trace-table-scroll th,.trace-table-scroll td{padding:var(--s2);border-bottom:1px solid var(--border);text-align:left}.trace-table-scroll tbody tr:last-child th,.trace-table-scroll tbody tr:last-child td{border-bottom:0}.trace-table-scroll thead th{background:var(--surface-2)}.trace-table-scroll tbody th{background:var(--surface);position:sticky;left:0}.trace-table-scroll td input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-width:72px;min-height:44px;color:var(--text);font:14px/1.5 var(--mono);padding:10px 12px}.trace-table-scroll tr.trace-error th,.trace-table-scroll tr.trace-error td{background:var(--danger-soft)}.trace-table-scroll tr.trace-error td input{border-color:var(--danger)}.trace-control fieldset{grid-template-columns:repeat(2,minmax(0,1fr))}.trace-control fieldset legend{grid-column:1/-1}.trace-control label{align-items:center;gap:var(--s3);grid-template-columns:auto 1fr;font-size:14px;display:grid}.parsons-control h2{font-size:20px}.parsons-control ol{gap:var(--s2);margin:var(--s4) 0;counter-reset:lines;padding:0;list-style:none;display:grid}.parsons-control li{align-items:center;gap:var(--s3);padding:var(--s3);border:1px solid var(--border);border-radius:var(--radius-sm);counter-increment:lines;grid-template-columns:minmax(0,1fr) auto;display:grid}.parsons-control li code:before{content:counter(lines) ". ";color:var(--text-3)}.parsons-control li>span{gap:var(--s1);flex-wrap:wrap;display:flex}.excluded-lines{gap:var(--s2);padding:var(--s4);border-radius:var(--radius-sm);background:var(--surface-2);display:grid}.excluded-lines h3{font-size:14px}.excluded-lines>.btn{text-align:left;justify-content:space-between}.feedback-box{padding:var(--s4);border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--text)}.feedback-box.correct,.verdict.passed{background:var(--ok-soft)}.feedback-title{font-size:18px;font-weight:650}.feedback-detail{color:var(--text-2);font-size:15px}.feedback-box p{margin-bottom:0}.tutor-card{margin-top:var(--s3);border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent-soft);padding:15px}.tutor-card>strong,.hint-stack strong{color:var(--accent-hover);font-size:13px;font-weight:600}.tutor-card p,.tutor-card ol{line-height:1.45}.tutor-card ol{padding-left:var(--s5)}.tutor-example{margin-top:var(--s3);padding:var(--s3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.tutor-example.counterexample{border-color:var(--danger)}.tutor-example>b{margin-bottom:7px;font-size:12px;display:block}.tutor-links,.hint-stack{gap:var(--s2);margin-top:var(--s4);display:grid}.tutor-links{margin-bottom:0;padding:0;list-style:none}.tutor-links a{color:var(--accent-hover);font-size:13px;font-weight:600}.hint-stack p{padding:var(--s3);border:1px solid var(--border);border-radius:var(--radius-sm);margin:0;line-height:1.45}.hint-stack strong{margin-bottom:6px;display:block}.solution-panel{margin-top:var(--s5);padding-top:var(--s5);border-top:1px solid var(--border)}.solution-panel h2{font-size:20px}.solution-panel pre,.output-content pre{padding:var(--s3);border-radius:var(--radius-sm);background:var(--code-bg);color:var(--code-fg);white-space:pre-wrap;font:12px/1.5 var(--mono);overflow:auto}.solution-panel p{color:var(--danger);font-size:13px}.lab-view{width:min(1440px,100%)}.lab-layout{gap:var(--s4);grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);display:grid}.editor-panel,.output-panel{min-width:0}.panel-bar{justify-content:space-between;align-items:center;gap:var(--s4);min-height:52px;padding:var(--s3) var(--s4);border-bottom:1px solid var(--border);background:var(--surface-2);display:flex}.panel-bar h2{font-size:15px}.panel-bar span,.output-content h3{color:var(--text-2);font-size:13px}.code-editor .cm-editor{background:var(--surface);min-height:520px;color:var(--text);font:15px var(--mono)}.code-editor .cm-scroller{min-height:520px;font-family:var(--mono);overflow:auto}.code-editor .cm-gutters{border-right-color:var(--border);background:var(--surface-2);color:var(--text-3)}.code-editor .cm-activeLine,.code-editor .cm-activeLineGutter{background:color-mix(in srgb, var(--accent-soft) 60%, transparent)}.code-editor .cm-content{caret-color:var(--accent);padding:14px 0}.code-editor .cm-selectionBackground,.code-editor .cm-focused .cm-selectionBackground{background:var(--accent-soft)}.code-editor .cm-tooltip{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-md);color:var(--text)}.code-editor .cm-tooltip-autocomplete ul li[aria-selected]{background:var(--accent-soft);color:var(--text)}.code-editor .cm-completionIcon{color:var(--text-3)}.code-editor .cm-completionLabel,.code-editor .cm-completionDetail{font:14px var(--mono)}.code-editor .cm-focused{outline:2px solid var(--accent);outline-offset:-2px}.module-competence{gap:var(--s1);max-width:280px;padding:var(--s4) var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(180deg, var(--surface), color-mix(in srgb, var(--accent-soft) 70%, var(--surface)));box-shadow:var(--shadow-sm);align-self:start;font-size:14px;display:grid}.module-competence span{color:var(--text-2);font-size:13px;font-weight:500}.module-competence strong{font-size:15px;line-height:1.4}.has-arrows{align-items:center;gap:var(--s3);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.has-arrows .carousel-track{min-width:0}.carousel-viewport{min-width:0;position:relative}.carousel-fade{z-index:2;pointer-events:none;opacity:1;width:84px;transition:opacity .3s;position:absolute;top:0;bottom:0}.carousel-fade-l{background:linear-gradient(90deg, var(--bg) 0%, transparent 100%);left:0}.carousel-fade-r{background:linear-gradient(270deg, var(--bg) 0%, transparent 100%);right:0}.carousel-viewport[data-at-start=true] .carousel-fade-l,.carousel-viewport[data-at-end=true] .carousel-fade-r{opacity:0}.carousel-arrow{border:1px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--text-2);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:50%;flex:none;place-items:center;display:grid}.carousel-arrow:hover:not(:disabled){border-color:var(--accent);color:var(--accent-hover)}.carousel-arrow:disabled{opacity:.35;cursor:default}.carousel-arrow svg{display:block}@media (width<=680px){.carousel-arrow{display:none}.has-arrows .carousel-slide{flex-basis:88%}}.module-step{background:var(--surface-2);border-radius:50%;place-items:center;width:32px;height:32px;font-weight:650;display:grid}.module-card-link{gap:var(--s3);height:100%;padding:var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);color:inherit;flex-direction:column;text-decoration:none;display:flex}.module-card-link,.lesson-list a,.plan-day li a,.lesson-pagination>a,.track-chip,.activity-card{isolation:isolate;transition:border-color .3s,box-shadow .3s,transform .3s;position:relative}.module-card-link:after,.lesson-list a:after,.plan-day li a:after,.lesson-pagination>a:after,.track-chip:after,.activity-card:after{content:"";z-index:-1;border-radius:inherit;opacity:0;pointer-events:none;background:linear-gradient(140deg, color-mix(in srgb, var(--accent) 26%, transparent) 0%, color-mix(in srgb, var(--accent) 9%, transparent) 42%, transparent 72%);transition:opacity .35s;position:absolute;inset:0}.module-card-link:hover:after,.module-card-link:focus-visible:after,.lesson-list a:hover:after,.lesson-list a:focus-visible:after,.plan-day li a:hover:after,.plan-day li a:focus-visible:after,.lesson-pagination>a:hover:after,.lesson-pagination>a:focus-visible:after,.track-chip:hover:after,.track-chip:focus-visible:after,.activity-card:hover:after{opacity:1}.module-card-link:hover,.activity-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.module-card-link:hover{transform:translateY(-2px)}.lesson-list a.has-progress,.activity-card.has-progress{background:linear-gradient(140deg, color-mix(in srgb, var(--accent) 15%, transparent) 0%, color-mix(in srgb, var(--accent) 5%, transparent) 45%, transparent 70%), var(--surface)}.lesson-list .progress-marker,.activity-card .progress-marker{color:var(--accent-hover);font-weight:650}@media (prefers-reduced-motion:reduce){.module-card-link,.lesson-list a,.plan-day li a,.lesson-pagination>a,.track-chip,.activity-card,.module-card-link:after,.lesson-list a:after,.plan-day li a:after,.lesson-pagination>a:after,.track-chip:after,.activity-card:after{transition:none}.module-card-link:hover{transform:none}}.module-card-link:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.module-card-link strong{font-size:17px}.module-card-link p{color:var(--text-2);overflow-wrap:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:1.45;display:-webkit-box;overflow:hidden}.module-card-link .module-meta{padding-top:var(--s3);margin-top:auto}.module-meta{align-items:center;gap:var(--s2);color:var(--text-2);white-space:nowrap;font-size:13px;display:inline-flex}.editor-loading,.editor-help{padding:var(--s4);color:var(--text-2);margin:0}.editor-help{border-top:1px solid var(--border);font-size:13px}.output-panel{min-height:520px}.output-empty{padding:var(--s5);color:var(--text-2);line-height:1.5}.output-content{gap:var(--s4);padding:var(--s4);display:grid}.output-content h3{margin-bottom:var(--s2);font-weight:600}.verdict{padding:var(--s3);border-radius:var(--radius-sm);background:var(--accent-soft);margin:0;font-weight:650}.verdict.failed{background:var(--danger-soft)}.test-results{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.test-results li{gap:4px var(--s3);padding:var(--s3);border:1px solid var(--border);border-radius:var(--radius-sm);grid-template-columns:auto 1fr;display:grid}.test-results li strong{color:var(--danger);font-size:13px}.test-results li.passed strong{color:var(--ok)}.test-results li small{color:var(--text-2);grid-column:2}.content-error{color:var(--danger)}.mobile-context,.mobile-more{display:none}main:focus{outline:none}.visualization-block{margin:var(--s5) 0}.visualization-block figcaption{margin:0 0 var(--s2);color:var(--text-2);font-size:15px;line-height:1.5}.visualization-block figcaption strong{color:var(--text)}.viz-checkpoint{margin-top:var(--s4);padding:var(--s4);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.viz-checkpoint-prompt{margin:0 0 var(--s3);font-weight:600;line-height:1.5}.viz-checkpoint-row{align-items:center;gap:var(--s2);flex-wrap:wrap;display:flex}.viz-checkpoint-row input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);min-height:44px;color:var(--text);font:14px/1.5 var(--mono);padding:8px 12px}.viz-checkpoint-input{width:14ch}.viz-checkpoint-vector{align-items:center;gap:var(--s1);font-weight:650;display:inline-flex}.viz-checkpoint-vector input{width:9ch}.viz-checkpoint-feedback{margin:var(--s3) 0 0;padding:var(--s2) var(--s3);border-radius:var(--radius-sm);font-weight:650}.viz-checkpoint-feedback.correct{background:var(--ok-soft)}.viz-checkpoint-feedback.wrong{background:var(--danger-soft)}.viz-checkpoint-hints{margin-top:var(--s3)}.viz-checkpoint-hints summary{cursor:pointer;color:var(--accent-hover);font-size:14px;font-weight:650}.viz-checkpoint-hints ol{gap:var(--s2);margin:var(--s2) 0 0;padding-left:var(--s5);display:grid}.viz-checkpoint-hints li{color:var(--text-2);line-height:1.45}@media (width<=920px){.app-body{grid-template-columns:1fr}.topbar{grid-template-columns:auto 1fr auto}.topbar-left,.nav-main>.nav-toggle{display:none}.brand{flex-direction:row;grid-column:1;margin-inline:0}.brand small{display:none}.topbar-right{grid-column:3}.main-nav{z-index:30;height:68px;padding:6px 4px max(6px, env(safe-area-inset-bottom));border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);flex-direction:row;justify-content:space-around;gap:0;position:fixed;inset:auto 0 0}.nav-main{flex-direction:row;flex:auto;justify-content:space-around;margin:0}.main-nav .nav-main>a{flex-direction:column;justify-content:center;gap:4px;min-width:58px;min-height:54px;padding:5px;font-size:10px}.main-nav .nav-main>a svg{width:18px;height:18px}.main-nav .nav-main>a.nav-secondary,.nav-recent{display:none}.view{padding-bottom:110px}.diagnostic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lab-layout,.lesson-header,.exercise-layout,.visualization-layout{grid-template-columns:minmax(0,1fr)}.exercise-side,.exercise-feedback{position:static}.mobile-context{justify-content:space-between;gap:var(--s2) var(--s4);padding:var(--s3) var(--s4) 86px;color:var(--text-2);flex-wrap:wrap;font-size:13px;display:flex}.mobile-more{gap:var(--s4);flex-basis:100%;display:flex}.mobile-more a{align-items:center;min-height:44px;font-weight:600;display:inline-flex}}@media (width<=680px){.topbar{min-height:60px;padding:var(--s2) 14px}.brand-wordmark svg{height:30px}.app-body{min-height:calc(100vh - 60px)}.view{padding:var(--s6) 16px 100px}.split-header{display:block}.module-competence{max-width:none;margin-top:var(--s4)}.search-field{margin-top:var(--s5)}.today-grid,.diagnostic-grid,.competency-detail-grid,.project-grid,.report-panel,.lesson-list,.lesson-pagination,.source-grid,.tool-grid,.module-sections .lesson-list,.onboarding-tracks{grid-template-columns:minmax(0,1fr)}.module-path>li>a{grid-template-columns:36px minmax(0,1fr)}.module-meta{white-space:normal;grid-column:2}.progress-summary-stats{grid-template-columns:minmax(0,1fr)}.review-card,.activity-card,.roadmap-card{grid-template-columns:1fr;align-items:stretch}.trace-control fieldset,.parsons-control li{grid-template-columns:1fr}.code-editor .cm-editor,.code-editor .cm-scroller{min-height:420px}.actions>.btn{flex:auto}.main-nav .nav-main>a{flex:20%;min-width:0}.main-nav .nav-main>a span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.btn,.segmented{width:100%}.segmented button{flex:1 1 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.tour-layer{z-index:70;position:fixed;inset:0}.tour-dim{width:100%;height:100%;display:block;position:absolute;inset:0}.tour-card{width:min(360px,100vw - 24px);max-height:calc(100vh - 24px);padding:var(--s5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-md);animation:.18s ease-out tour-card-in;position:fixed;overflow-y:auto}.tour-card[data-placement=center]{top:50%;left:50%;translate:-50% -50%}.tour-card[data-placement=sheet]{bottom:var(--s3);left:50%;translate:-50%}.tour-kicker{justify-content:space-between;align-items:center;gap:var(--s3);margin:0 0 var(--s2);padding-right:var(--s6);color:var(--text-2);font-size:13px;font-weight:500;display:flex}.tour-dots{gap:6px;display:inline-flex}.tour-dots>span{background:var(--border-strong);border-radius:50%;width:6px;height:6px}.tour-dots>span.is-active{background:var(--accent)}.tour-card h2{padding-right:var(--s6);font-size:clamp(19px,2vw,22px)}.tour-card h2:focus{outline:none}.tour-body{margin:var(--s3) 0 0;color:var(--text-2);font-size:15px;line-height:1.55}.tour-actions{align-items:center;gap:var(--s2);margin-top:var(--s4);flex-wrap:nowrap;display:flex}.tour-actions .btn{white-space:nowrap}.tour-glow{pointer-events:none;box-shadow:0 0 18px 2px color-mix(in srgb, var(--accent) 45%, transparent), inset 0 0 14px color-mix(in srgb, var(--accent) 25%, transparent);border-radius:12px;position:fixed}.tour-glow:before{content:"";border-radius:inherit;background:linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 25%, transparent));-webkit-mask-composite:xor;padding:1.5px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.tour-close{top:var(--s2);right:var(--s2);position:absolute}@keyframes tour-card-in{0%{opacity:0;transform:translateY(8px)}}@media (width<=640px){.tour-card{padding:var(--s4)}.tour-card[data-placement=sheet]{right:var(--s3);left:var(--s3);width:auto;translate:none}}@media (prefers-reduced-motion:reduce){.tour-card{animation:none}}
