@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Manrope:wght@400;500;600;700;800&display=swap";:root{color-scheme:dark;--bg: #0d100d;--surface: #141814;--surface-2: #191e19;--surface-3: #222822;--line: #2b332b;--line-bright: #3d493d;--text: #f2f5ee;--muted: #919b8f;--faint: #626b61;--accent: #b8f24a;--accent-soft: #253417;--warm: #ffb86b;--danger: #ff7c6b;--shadow: 0 24px 70px rgba(0, 0, 0, .28);font-family:Manrope,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}:root[data-theme=light]{color-scheme:light;--bg: #f1f3ed;--surface: #fafbf7;--surface-2: #ffffff;--surface-3: #e9ede3;--line: #d8ddd2;--line-bright: #c5ccbd;--text: #172014;--muted: #697365;--faint: #8b9487;--accent: #5f8500;--accent-soft: #e7f4c8;--warm: #a5580a;--danger: #b6382a;--shadow: 0 24px 70px rgba(32, 44, 27, .1)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg);color:var(--text)}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}code,pre{font-family:IBM Plex Mono,monospace}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:280px;z-index:30;display:flex;flex-direction:column;padding:30px 22px 22px;background:var(--surface);border-right:1px solid var(--line)}.brand{display:flex;align-items:center;gap:13px;padding:0 8px 28px;border-bottom:1px solid var(--line)}.brand-mark{display:grid;place-items:center;width:43px;height:43px;background:var(--accent);color:#11170a;font:800 17px IBM Plex Mono;transform:rotate(-3deg)}.brand strong,.brand small{display:block}.brand strong{font:700 12px IBM Plex Mono;letter-spacing:.06em}.brand small{margin-top:5px;color:var(--muted);font:500 9px IBM Plex Mono;letter-spacing:.14em}.progress-card{margin:24px 4px 20px;padding:15px;background:var(--surface-2);border:1px solid var(--line)}.progress-card>div:first-child{display:flex;align-items:center;justify-content:space-between}.progress-card span,.progress-card small{color:var(--muted);font:500 9px IBM Plex Mono;letter-spacing:.08em}.progress-card strong{color:var(--accent);font:600 13px IBM Plex Mono}.progress-track{height:4px;margin:12px 0 8px;background:var(--surface-3);overflow:hidden}.progress-track i{display:block;height:100%;background:var(--accent);transition:width .4s ease}.lesson-nav{flex:1;min-height:0;overflow-y:auto;padding:5px 2px}.nav-label{display:block;margin:0 10px 10px;color:var(--faint);font:500 9px IBM Plex Mono;letter-spacing:.16em}.lesson-nav a{display:flex;gap:12px;align-items:center;margin:3px 0;padding:10px;border:1px solid transparent;color:var(--muted);transition:.18s ease}.lesson-nav a:hover{color:var(--text);background:var(--surface-2)}.lesson-nav a.active{color:var(--text);background:var(--surface-2);border-color:var(--line)}.lesson-nav .step{display:grid;flex:0 0 auto;place-items:center;width:29px;height:29px;border:1px solid var(--line-bright);color:var(--faint);font:500 10px IBM Plex Mono}.lesson-nav a.active .step{border-color:var(--accent);color:var(--accent)}.lesson-nav .step.done{color:#11170a;background:var(--accent);border-color:var(--accent)}.lesson-nav strong,.lesson-nav small{display:block}.lesson-nav strong{font-size:12px;font-weight:600}.lesson-nav small{margin-top:2px;color:var(--faint);font:400 9px IBM Plex Mono}.sidebar-footer{padding-top:18px;border-top:1px solid var(--line)}.sidebar-footer a,.sidebar-footer button{display:flex;align-items:center;width:100%;gap:10px;padding:9px 8px;color:var(--muted);background:none;border:0;cursor:pointer;font-size:11px}.sidebar-footer a:hover,.sidebar-footer button:hover{color:var(--text)}.main-content{min-height:100vh;margin-left:280px}.mobile-header,.backdrop{display:none}.page-enter{animation:page-in .35s ease both}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}.page-loader{display:grid;place-items:center;min-height:100vh;color:var(--muted);font:12px IBM Plex Mono}.dashboard{max-width:1440px;margin:0 auto;padding:56px 64px 100px}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(380px,.92fr);gap:70px;align-items:center;min-height:545px;padding:58px 0 70px}.hero:before{content:"";position:absolute;top:0;left:-64px;right:-64px;height:1px;background:repeating-linear-gradient(90deg,var(--line),var(--line) 4px,transparent 4px,transparent 10px);opacity:.55}.status-pill{display:inline-flex;align-items:center;gap:9px;margin-bottom:44px;padding:8px 11px;border:1px solid var(--line);color:var(--muted);font:500 9px IBM Plex Mono;letter-spacing:.1em}.status-pill i{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 13px var(--accent)}.eyebrow{margin:0 0 16px;color:var(--accent);font:600 10px IBM Plex Mono;letter-spacing:.17em}.hero h1{max-width:720px;margin:0;font-size:clamp(44px,5.6vw,78px);line-height:.99;letter-spacing:-.055em}.hero h1 em{color:var(--accent);font-style:normal}.hero-lead{max-width:610px;margin:28px 0 0;color:var(--muted);font-size:15px;line-height:1.9}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:17px;margin-top:36px}.primary-button,.complete-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 18px;border:1px solid var(--accent);background:var(--accent);color:#12180c;font-size:12px;font-weight:800;cursor:pointer;transition:.18s ease}.primary-button:hover,.complete-button:hover{box-shadow:5px 5px 0 var(--accent-soft);transform:translate(-2px,-2px)}.text-button{display:inline-flex;align-items:center;gap:8px;padding:12px;color:var(--muted);font-size:12px}.text-button:hover{color:var(--text)}.terminal-card{box-shadow:var(--shadow);border:1px solid var(--line-bright);background:#0b0e0b;transform:rotate(.5deg)}.terminal-head{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-bottom:1px solid #252b25}.terminal-head>span,.window-dots{display:flex;gap:6px}.terminal-head i,.window-dots i{width:8px;height:8px;border-radius:50%;background:#404840}.terminal-head i:first-child,.window-dots i:first-child{background:#ff7c6b}.terminal-head i:nth-child(2),.window-dots i:nth-child(2){background:#ffcd62}.terminal-head i:nth-child(3),.window-dots i:nth-child(3){background:#9bd95d}.terminal-head small{color:#6f786f;font:9px IBM Plex Mono}.terminal-body{min-height:288px;padding:26px 24px;color:#dbe2d8;font:12px/2 IBM Plex Mono}.terminal-body p{margin:2px 0}.terminal-body b{color:#b8f24a}.terminal-body .muted{color:#697269}.terminal-body .log{color:#aeb6ac}.terminal-body .log span{color:#79cfd2}.terminal-body .cursor i{display:inline-block;width:7px;height:14px;margin-left:4px;vertical-align:-2px;background:#b8f24a;animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.terminal-foot{display:flex;gap:8px;align-items:center;padding:13px 17px;background:#b8f24a;color:#11170a;font:600 10px IBM Plex Mono}.dashboard-strip{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);background:var(--surface)}.dashboard-strip>div{display:flex;align-items:center;gap:15px;padding:21px 24px;border-right:1px solid var(--line)}.dashboard-strip>div:last-child{border:0}.dashboard-strip svg{color:var(--accent)}.dashboard-strip small,.dashboard-strip strong{display:block}.dashboard-strip small{color:var(--faint);font:9px IBM Plex Mono;letter-spacing:.08em}.dashboard-strip strong{margin-top:4px;font-size:12px}.roadmap-section,.mapping-section{padding-top:104px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:34px}.section-heading h2{margin:0;font-size:35px;letter-spacing:-.035em}.section-heading>p{max-width:360px;margin:0;color:var(--muted);font-size:12px;line-height:1.7}.roadmap-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.route-card{position:relative;min-height:278px;padding:27px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface);transition:.2s ease}.route-card:hover{z-index:1;background:var(--surface-2);box-shadow:inset 0 3px var(--accent);transform:translateY(-3px)}.route-card.complete{background:linear-gradient(150deg,var(--accent-soft),var(--surface) 55%)}.route-number{color:var(--faint);font:500 11px IBM Plex Mono}.route-status{position:absolute;top:26px;right:25px;color:var(--faint);font:500 9px IBM Plex Mono}.route-card.complete .route-status{color:var(--accent)}.route-card h3{margin:50px 0 13px;font-size:18px}.route-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.7}.route-link{position:absolute;bottom:25px;display:flex;align-items:center;gap:7px;color:var(--accent);font:500 10px IBM Plex Mono}.mapping-section{padding-bottom:30px}.mapping-table{border:1px solid var(--line);background:var(--surface)}.mapping-header,.mapping-row{display:grid;grid-template-columns:1fr 38px 1fr;align-items:center}.mapping-header{padding:13px 22px;border-bottom:1px solid var(--line);color:var(--faint);font:500 9px IBM Plex Mono;letter-spacing:.15em}.mapping-header span:last-child{grid-column:3}.mapping-row{min-height:54px;padding:0 22px;border-bottom:1px solid var(--line)}.mapping-row:last-child{border:0}.mapping-row svg{color:var(--accent)}.mapping-row code{font-size:11px}.lesson-page{max-width:1100px;margin:0 auto;padding:70px 70px 110px}.lesson-hero{padding-bottom:52px;border-bottom:1px solid var(--line)}.lesson-title-row{display:flex;align-items:start;justify-content:space-between;gap:35px}.lesson-title-row h1{max-width:760px;margin:0;font-size:clamp(38px,5vw,65px);line-height:1.05;letter-spacing:-.05em}.lesson-title-row p{max-width:700px;margin:23px 0 0;color:var(--muted);font-size:14px;line-height:1.8}.duration{display:inline-flex;flex:0 0 auto;align-items:center;gap:7px;margin-top:8px;padding:9px 11px;border:1px solid var(--line);color:var(--muted);font:10px IBM Plex Mono}.duration svg{width:14px}.outcomes{display:flex;flex-wrap:wrap;gap:10px;margin-top:38px}.outcomes strong,.outcomes span{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;font-size:10px}.outcomes strong{padding-left:0;font:500 9px IBM Plex Mono;color:var(--faint);letter-spacing:.08em}.outcomes span{border:1px solid var(--line);color:var(--muted)}.outcomes svg{width:13px;color:var(--accent)}.lesson-section{display:grid;grid-template-columns:55px minmax(0,1fr);gap:25px;padding:68px 0;border-bottom:1px solid var(--line)}.section-index{padding-top:9px;color:var(--faint);font:500 10px IBM Plex Mono}.section-content h2{margin:0;font-size:29px;letter-spacing:-.035em}.section-intro,.body-copy{margin:17px 0 0;color:var(--muted);font-size:14px;line-height:1.9}.blocks{display:grid;gap:22px;margin-top:28px}.code-window{overflow:hidden;border:1px solid var(--line-bright);background:#0a0d0a}.code-toolbar{display:flex;align-items:center;gap:14px;min-height:42px;padding:0 13px;border-bottom:1px solid #252b25;color:#737d73;font:9px IBM Plex Mono}.code-toolbar>span{flex:1}.code-toolbar button{display:inline-flex;align-items:center;gap:5px;padding:6px 8px;border:0;background:transparent;color:#8f998f;cursor:pointer;font:9px IBM Plex Mono}.code-toolbar button:hover{color:#dfe6dc}.code-window pre{margin:0;padding:22px;overflow-x:auto;color:#d9e0d6;font-size:12px;line-height:1.75;tab-size:2}.callout{display:flex;gap:14px;padding:19px 20px;border-left:3px solid var(--accent);background:var(--accent-soft)}.callout svg{flex:0 0 auto;width:18px;color:var(--accent)}.callout strong{font-size:12px}.callout p{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.75}.compare{display:grid;grid-template-columns:1fr 30px 1fr;align-items:stretch;gap:10px}.compare>div{padding:18px;border:1px solid var(--line);background:var(--surface)}.compare>span{display:grid;place-items:center;color:var(--accent)}.compare small,.compare strong{display:block}.compare small{color:var(--faint);font:9px IBM Plex Mono;letter-spacing:.09em}.compare strong{margin-top:10px;font-size:12px;line-height:1.6}.steps{display:grid;gap:0;margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.steps li{display:grid;grid-template-columns:42px 1fr;gap:13px;align-items:start;padding:16px 0;border-bottom:1px solid var(--line)}.steps span{color:var(--accent);font:500 10px IBM Plex Mono}.steps p{margin:0;color:var(--muted);font-size:13px;line-height:1.7}.checklist{padding:22px;border:1px solid var(--line);background:var(--surface)}.checklist>strong{display:flex;align-items:center;gap:9px;margin-bottom:14px;font-size:12px}.checklist>strong svg{color:var(--accent)}.checklist p{display:flex;align-items:center;gap:8px;margin:9px 0;color:var(--muted);font-size:12px}.checklist p svg{width:14px;color:var(--accent)}.lesson-complete{display:flex;align-items:center;justify-content:space-between;gap:35px;margin-top:70px;padding:31px;background:var(--surface);border:1px solid var(--line)}.lesson-complete small{color:var(--accent);font:600 9px IBM Plex Mono;letter-spacing:.14em}.lesson-complete h2{margin:7px 0;font-size:23px}.lesson-complete p{margin:0;color:var(--muted);font-size:11px}.complete-button.done{background:var(--accent-soft);color:var(--accent)}.lesson-pagination{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-top:25px;background:var(--line);border:1px solid var(--line)}.lesson-pagination a{display:flex;align-items:center;gap:13px;padding:21px;background:var(--bg)}.lesson-pagination a:last-child{justify-content:flex-end;text-align:right}.lesson-pagination a:hover{background:var(--surface)}.lesson-pagination small{display:block;margin-bottom:4px;color:var(--faint);font:9px IBM Plex Mono}.lesson-pagination span{font-size:12px;font-weight:700}.lesson-pagination svg{color:var(--accent)}.glossary{max-width:1120px;margin:0 auto;padding:80px 70px 110px}.glossary h1{margin:0;font-size:clamp(45px,6vw,78px);letter-spacing:-.055em}.glossary-lead{margin:18px 0 46px;color:var(--muted)}.term-grid{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.term-grid article{min-height:145px;padding:25px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface)}.term-grid code{color:var(--accent);font-size:14px;font-weight:600}.term-grid p{margin:18px 0 0;color:var(--muted);font-size:12px;line-height:1.75}@media(max-width:1100px){.dashboard{padding-inline:40px}.hero{grid-template-columns:1fr;gap:45px}.terminal-card{max-width:640px}.roadmap-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:780px){.mobile-header{position:sticky;top:0;z-index:25;display:flex;align-items:center;justify-content:space-between;height:58px;padding:0 18px;background:color-mix(in srgb,var(--bg) 88%,transparent);border-bottom:1px solid var(--line);backdrop-filter:blur(16px)}.mobile-header button{display:grid;place-items:center;padding:8px;background:none;color:var(--text);border:0}.mini-brand{color:var(--accent);font:700 14px IBM Plex Mono}.sidebar{transform:translate(-100%);transition:transform .24s ease}.sidebar.open{transform:translate(0)}.backdrop{position:fixed;inset:0;z-index:20;display:block;border:0;background:#00000094}.main-content{margin-left:0}.dashboard{padding:25px 20px 70px}.hero{min-height:auto;padding:45px 0 55px}.status-pill{margin-bottom:30px}.hero h1{font-size:45px}.hero-lead{font-size:13px}.terminal-body{min-height:240px;padding:20px 17px;font-size:10px}.dashboard-strip{grid-template-columns:1fr}.dashboard-strip>div{border-right:0;border-bottom:1px solid var(--line)}.roadmap-section,.mapping-section{padding-top:70px}.section-heading{display:block}.section-heading h2{font-size:29px}.section-heading>p{margin-top:12px}.roadmap-grid{grid-template-columns:1fr}.mapping-row,.mapping-header{grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);padding-inline:13px}.mapping-row code{overflow-wrap:anywhere;font-size:9px}.lesson-page,.glossary{padding:45px 20px 75px}.lesson-title-row{display:block}.duration{margin-top:24px}.lesson-section{grid-template-columns:1fr;gap:9px;padding:48px 0}.section-content h2{font-size:25px}.compare{grid-template-columns:1fr}.compare>span{transform:rotate(90deg)}.lesson-complete{display:block;padding:24px}.complete-button{width:100%;margin-top:22px}.lesson-pagination,.term-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
