@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@600;700&display=swap";:root{--bg:#f3f6fa;--paper:#fff;--paper-2:#eaf0f6;--track:#dbe3ec;--ink:#14181f;--muted:#5b6472;--muted-2:#8a93a3;--line:#dde3ea;--scrim:#0a0e149e;--shadow-color:#14181f14;--accent:#0f6cbd;--accent-hover:#0b5aa0;--accent-tint:#eaf3fb;--accent-bright:#4fa8e0;--navy:#10233a;--navy-2:#24384f;--on-navy:#fff;--on-navy-muted:#b7c4d6;--success-bg:#e0f3e5;--success-text:#146c2e;--progress-bg:#eaf3fb;--progress-text:var(--accent);--warn-bg:#fdf6e0;--warn-border:#f2b705;--warn-text:#7a5b00;--danger:#c4314b;--bookmark-bg:#fdf3d9;--bookmark-border:#f2b705;--bookmark-text:#8a6a12;--bookmark-fill:#f2b705;color:var(--ink);background:var(--bg);font-synthesis:none;font-family:DM Sans,sans-serif}:root[data-theme=dark]{--bg:#0d1117;--paper:#141a22;--paper-2:#1b2330;--track:#26303e;--ink:#eef2f7;--muted:#9aa5b3;--muted-2:#6b7684;--line:#2a3341;--scrim:#000000b8;--shadow-color:#00000080;--accent:#4aa8e8;--accent-hover:#6cbdf2;--accent-tint:#16283a;--accent-bright:#7ec8f5;--navy:#0b1622;--navy-2:#24344a;--on-navy:#f3f7fb;--on-navy-muted:#a9bcd2;--success-bg:#123322;--success-text:#5fd88a;--progress-bg:#16283a;--progress-text:var(--accent);--warn-bg:#3a2f10;--warn-border:#caa316;--warn-text:#f0d998;--danger:#ef6f7f;--bookmark-bg:#3a2f10;--bookmark-border:#caa316;--bookmark-text:#f0d998;--bookmark-fill:#f2c94c}*{box-sizing:border-box}body{background:var(--bg);margin:0}button{font:inherit;color:inherit}.shell{min-height:100vh}.topbar{background:var(--navy);height:68px;color:var(--on-navy);z-index:30;align-items:center;padding:0 24px;display:flex;position:sticky;top:0}.brand{color:var(--on-navy);cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;font-family:Manrope;display:flex}.brand-mark{background:var(--accent-bright);color:var(--navy);border-radius:9px;place-items:center;width:34px;height:34px;font-size:11px;font-weight:700;display:grid}.topbar-right{align-items:center;gap:6px;margin-left:auto;display:flex}.topbar-right .icon-button{color:var(--on-navy)}.header-progress{align-items:center;gap:10px;font-size:12px;display:flex}.header-progress div{background:var(--navy-2);border-radius:5px;width:88px;height:4px;overflow:hidden}.header-progress i,.big-progress i{border-radius:inherit;height:100%;display:block}.header-progress i{background:var(--accent-bright)}.layout{grid-template-columns:282px minmax(0,1fr);min-height:calc(100vh - 68px);display:grid}.sidebar{background:var(--paper);border-right:1px solid var(--line);z-index:20;height:calc(100vh - 68px);padding:22px 14px;position:sticky;top:68px;overflow:auto}.sidebar button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;width:100%}.nav-home,.nav-module>button{align-items:center;gap:10px;padding:10px;font-size:13px;display:flex}.nav-home .badge{background:var(--accent);color:#fff;border-radius:20px;margin-left:auto;padding:2px 8px;font-size:10px;font-weight:700}.nav-home.active .badge{background:var(--accent-bright);color:var(--navy)}.sidebar svg{flex:none;width:17px}.sidebar .active{background:var(--accent-tint);color:var(--accent)}.nav-module{margin-top:20px}.module-label{border-bottom:1px solid var(--line)!important;border-radius:0!important;padding-bottom:13px!important;display:block!important}.module-label span,.eyebrow{letter-spacing:.14em;color:var(--accent);font-size:11px;font-weight:700}.module-label strong{margin-top:4px;display:block}.nav-module button span{min-width:0}.nav-module button small{color:var(--muted-2);letter-spacing:.1em;margin-bottom:2px;font-size:9px;font-weight:700;display:block}.done{color:var(--success-text)}.doing{fill:var(--accent-tint);color:var(--accent)}.reset{color:var(--danger);gap:9px;margin-top:28px;padding:10px;font-size:12px;display:flex}.close-nav,.scrim{display:none}.layout main{min-width:0}.page,.lab-view{max-width:850px;margin:0 auto;padding:64px clamp(24px,6vw,72px) 80px}h1,h2{margin-top:0;font-family:Manrope}h1{letter-spacing:-.04em;max-width:680px;font-size:clamp(32px,4.5vw,58px);line-height:1.03}h2{margin:40px 0 16px;font-size:19px}.lede{color:var(--muted);max-width:560px;font-size:17px;line-height:1.65}.continue-card,.module-card,.notes-card,.lab-list button{border:1px solid var(--line);background:var(--paper);text-align:left;cursor:pointer;width:100%;box-shadow:0 6px 24px var(--shadow-color);border-radius:16px;align-items:center;display:flex}.continue-card{background:var(--navy);color:var(--on-navy);border:0;margin:32px 0 20px;padding:22px}.continue-card>span,.module-card>span:nth-child(2),.notes-card>span,.lab-list button>span:nth-child(2){gap:5px;display:grid}.continue-card svg,.module-card>svg,.notes-card>svg,.lab-list button>svg{flex:none;margin-left:auto}.continue-card small,.module-card small,.notes-card small,.lab-list small{letter-spacing:.12em;font-size:10px;font-weight:700}.continue-card strong{font-size:18px}.progress-card{background:var(--paper-2);border-radius:14px;padding:20px}.progress-card>div:first-child{justify-content:space-between;font-size:13px;display:flex}.big-progress{background:var(--track);border-radius:8px;height:7px;margin-top:15px;overflow:hidden}.big-progress i{background:var(--accent)}.module-card{gap:18px;padding:17px}.module-number{color:var(--muted-2);font-family:Manrope;font-size:32px}.module-card em,.notes-card em{color:var(--muted);font-size:12px;font-style:normal}.notes-card{gap:15px;margin:30px 0;padding:18px}.notes-card>svg{background:var(--accent-tint);width:42px;height:42px;color:var(--accent);border-radius:10px;margin-left:0;padding:9px}.lab-list{gap:10px;display:grid}.lab-list button{gap:12px;padding:17px 14px}.lab-list .state{background:var(--paper-2);border-radius:50%;place-items:center;width:30px;height:30px;display:grid}.lab-list .state.completed{background:var(--success-bg);color:var(--success-text)}.lab-list .state.in-progress{background:var(--progress-bg);color:var(--progress-text)}.lab-list .state svg{width:16px}.back{color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;margin-bottom:40px;padding:0;display:flex}.back svg{width:17px}.source-warning,.note{background:var(--warn-bg);border-left:4px solid var(--warn-border);border-radius:12px;margin:28px 0;padding:18px}.source-warning p,.note p{color:var(--warn-text);margin:6px 0 0;line-height:1.55}.prose>section{border-top:1px solid var(--line);grid-template-columns:42px 1fr;align-items:start;padding:24px 0;display:grid}.prose>section span{color:var(--muted-2);font-size:12px}.prose>section h2{margin:0}.lab-view{max-width:760px}.lab-context{color:var(--accent);letter-spacing:.12em;justify-content:space-between;margin-bottom:28px;font-size:11px;font-weight:700;display:flex}.lab-view h1{font-size:clamp(30px,4vw,52px)}.lab-intro{color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:28px;font-size:18px;line-height:1.65}.lab-content{margin:20px 0 36px}.instruction{border-bottom:1px solid var(--line);grid-template-columns:38px 1fr;gap:14px;padding:20px 0;display:grid}.instruction>span{background:var(--navy);width:32px;height:32px;color:var(--on-navy);border-radius:50%;place-items:center;font-size:13px;font-weight:700;display:grid}.instruction p{margin:3px 0;line-height:1.65}.complete{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:12px;justify-content:center;align-items:center;gap:9px;width:100%;min-height:52px;font-weight:700;display:flex}.complete.completed{background:var(--success-bg);color:var(--success-text)}.complete svg{width:18px}.lab-pagination{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:12px;margin-top:32px;padding-top:20px;display:grid}.lab-pagination button{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:8px 0;display:flex}.lab-pagination button:last-child{text-align:right;justify-content:flex-end}.lab-pagination small{color:var(--muted);letter-spacing:.1em;font-size:9px;display:block}.lab-pagination svg{flex:none;width:18px}.lab-pagination button:disabled{opacity:.25}.command{background:var(--navy);color:var(--on-navy);border-radius:12px;margin:20px 0;overflow:hidden}.command>div{border-bottom:1px solid var(--navy-2);justify-content:space-between;padding:10px 14px;font-size:11px;display:flex}.command button{color:var(--accent-bright);cursor:pointer;background:0 0;border:0}.command code{white-space:pre-wrap;overflow-wrap:anywhere;padding:18px;display:block}.mobile-only{display:none}.icon-button{color:inherit;background:0 0;border:0;padding:8px}.search-overlay{z-index:50;justify-content:center;padding:min(12vh,90px) 16px 16px;display:flex;position:fixed;inset:0}.search-scrim{background:var(--scrim);border:0;padding:0;position:absolute;inset:0}.search-panel{z-index:1;background:var(--paper);width:min(560px,100%);max-height:74vh;box-shadow:0 20px 60px var(--shadow-color);border:1px solid var(--line);border-radius:16px;flex-direction:column;display:flex;position:relative;overflow:hidden}.search-input-row{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:10px;padding:14px 16px;display:flex}.search-input-row>svg{width:18px;color:var(--muted);flex:none}.search-input-row input{min-width:0;font:inherit;color:inherit;background:0 0;border:0;outline:0;flex:1;font-size:15px}.search-input-row .icon-button{padding:6px}.search-results{padding:8px;overflow:auto}.search-empty{color:var(--muted);padding:20px 16px;font-size:14px}.search-result{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:10px;width:100%;padding:12px 14px;display:block}.search-result:hover{background:var(--accent-tint)}.search-result-context{letter-spacing:.1em;color:var(--accent);margin-bottom:3px;font-size:10px;font-weight:700;display:block}.search-result strong{font-size:14px;display:block}.search-result em{color:var(--muted);margin-top:3px;font-size:12.5px;font-style:normal;line-height:1.5;display:block}.search-result mark{background:var(--accent-bright);color:var(--navy);border-radius:3px;padding:0 1px}@media (width<=820px){.topbar{height:60px;padding:0 12px}.mobile-only{margin-right:5px;display:block}.brand>span:last-child{display:none}.layout{min-height:calc(100vh - 60px);display:block}.sidebar{width:min(84vw,300px);height:100vh;padding-top:60px;transition:transform .2s;position:fixed;top:0;left:0;transform:translate(-105%);box-shadow:14px 0 40px #00000026}.sidebar.open{transform:translate(0)}.close-nav{display:block;position:absolute;top:10px;right:10px;width:auto!important}.scrim{background:var(--scrim);z-index:10;border:0;display:block;position:fixed;inset:0}.page,.lab-view{padding:38px 20px 64px}h1{font-size:36px}.header-progress div{width:56px}.continue-card{padding:18px}.lab-pagination{grid-template-columns:1fr}.lab-pagination button:last-child{border-top:1px solid var(--line);padding-top:18px}.progress-card>div:first-child{gap:4px;display:grid}}@media (width>=821px) and (width<=1100px){.layout{grid-template-columns:230px minmax(0,1fr)}.page,.lab-view{padding-left:34px;padding-right:34px}}.prose h2,.lab-content h2{margin:38px 0 12px;font-size:24px}.prose h3,.lab-content h3{margin:30px 0 8px;font-family:Manrope;font-size:17px}.body-copy{color:var(--ink);margin:0 0 16px;line-height:1.72}.content-bullet{grid-template-columns:20px 1fr;gap:8px;margin:8px 0;display:grid}.content-bullet>span{color:var(--accent);font-weight:700}.content-bullet p{margin:0;line-height:1.6}.course-image{border:1px solid var(--line);background:var(--paper);cursor:zoom-in;border-radius:12px;width:100%;margin:20px 0;padding:0;display:block;overflow:hidden}.course-image img{width:100%;height:auto;display:block}.content-title-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.content-title-row h1{margin-bottom:0}.bookmark-toggle{border:1px solid var(--line);background:var(--paper);cursor:pointer;color:var(--muted);border-radius:10px;flex:none;margin-top:8px;padding:9px}.bookmark-toggle svg{width:19px;display:block}.bookmark-toggle.active{background:var(--bookmark-bg);border-color:var(--bookmark-border);color:var(--bookmark-text)}.bookmark-toggle.active svg{fill:var(--bookmark-fill)}.bookmark-list{gap:10px;display:grid}.bookmark-row{align-items:stretch;gap:8px;display:flex}.bookmark-row>button:first-child{border:1px solid var(--line);background:var(--paper);text-align:left;cursor:pointer;min-width:0;box-shadow:0 6px 24px var(--shadow-color);border-radius:16px;flex:1;align-items:center;gap:14px;padding:17px 14px;display:flex}.bookmark-row>button:first-child>span:nth-child(2){min-width:0}.bookmark-row>button:first-child small{color:var(--muted-2);letter-spacing:.1em;margin-bottom:2px;font-size:9px;font-weight:700;display:block}.bookmark-row>button:first-child strong{font-size:15px;display:block}.bookmark-row>button:first-child>svg{flex:none;margin-left:auto}.bookmark-row .state{background:var(--bookmark-bg);width:30px;height:30px;color:var(--bookmark-text);border-radius:50%;flex:none;place-items:center;display:grid}.bookmark-row .state svg{width:16px;fill:var(--bookmark-fill)}.remove-bookmark{border:1px solid var(--line);background:var(--paper);color:var(--muted);border-radius:12px;flex:none}.gate-screen{min-height:100vh;color:var(--muted);text-align:center;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;display:flex}.gate-screen svg{width:32px;height:32px;color:var(--accent)}.gate-screen p{max-width:360px;line-height:1.6}.gate-retry{border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:10px;padding:10px 18px;font-weight:600}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-screen{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{background:var(--paper);border:1px solid var(--line);width:min(380px,100%);box-shadow:0 20px 60px var(--shadow-color);border-radius:20px;flex-direction:column;align-items:flex-start;gap:6px;padding:36px 30px;display:flex}.login-card .brand-mark{margin-bottom:10px}.login-card h1{letter-spacing:-.02em;max-width:none;font-size:24px}.login-card .lede{margin-bottom:14px;font-size:14px}.login-card label{width:100%;color:var(--muted);letter-spacing:.04em;margin-top:10px;font-size:12px;font-weight:700;display:block}.login-card input{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--ink);font:inherit;border-radius:10px;margin-top:6px;padding:11px 12px;font-size:15px}.login-card input:focus{outline:2px solid var(--accent);outline-offset:1px}.login-error{color:var(--danger);margin-top:10px;font-size:13px}.login-card .complete{width:100%;margin-top:20px}
