:root{--node-green:#3c873a;--node-green-dark:#28661f;--node-green-light:#eaf5e9;--express-ink:#0d0f14;--ink:#1a1d24;--ink-soft:#565d6b;--ink-faint:#8b93a1;--line:#e6e8ec;--paper:#fff;--panel:#f6f7f9;--sidebar-bg:#fafbfc;--blue:#2f6fed;--code-bg:#1a1b26;--code-bg-2:#14151f;--code-fg:#d8dbe8;--code-comment:#7c8194;--code-string:#e0a458;--code-keyword:#7ab6f0;--code-number:#b5cea8;--code-func:#e0c168;--sidebar-w:278px;--topbar-h:58px;--font-scale:1}:root[data-theme=java]{--node-green:#e07b1a;--node-green-dark:#b35d0f;--node-green-light:#fdf1e2}:root[data-theme=iks]{--node-green:#8b3a62;--node-green-dark:#6b2c4b;--node-green-light:#f7ecf1}:root[data-theme=cyber]{--node-green:#167c80;--node-green-dark:#0e5b5e;--node-green-light:#e5f5f4}:root[data-theme=ethical]{--node-green:#6f42c1;--node-green-dark:#503093;--node-green-light:#f2ecfb}:root[data-theme=testing]{--node-green:#be185d;--node-green-dark:#9d174d;--node-green-light:#fce7f3}:root[data-theme=ai-jira]{--node-green:#1f6feb;--node-green-dark:#154a9e;--node-green-light:#eaf2ff}:root[data-theme=linux]{--node-green:#475569;--node-green-dark:#334155;--node-green-light:#eef1f4}:root[data-theme=iot]{--node-green:#b45309;--node-green-dark:#92400e;--node-green-light:#fef3e2}:root[data-theme=dotnet]{--node-green:#4338ca;--node-green-dark:#3730a3;--node-green-light:#eef2ff}:root[data-theme=r-lang]{--node-green:#0891b2;--node-green-dark:#0e7490;--node-green-light:#ecfeff}:root[data-theme=cloud-testing]{--node-green:#65a30d;--node-green-dark:#4d7c0f;--node-green-light:#f7fee7}:root[data-theme=soc]{--node-green:#0f172a;--node-green-dark:#020617;--node-green-light:#eef2f7}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{max-width:100%;margin:0;padding:0;overflow-x:hidden}body{color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15.5px;line-height:1.66}h1,h2,h3,h4{color:var(--express-ink);letter-spacing:-.01em;margin:0 0 .4em;font-family:inherit;font-weight:800}p{margin:.6em 0}a{color:var(--blue);text-decoration:none}code{font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0;font-family:Cascadia Code,Consolas,Courier New,monospace}.topbar{height:var(--topbar-h);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);z-index:50;background:#ffffffeb;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.topbar-inner{justify-content:space-between;align-items:center;width:100%;padding:0 22px;display:flex}.topbar-left{align-items:center;display:flex}.home-link{border:1px solid var(--line);background:var(--panel);border-radius:8px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;margin-right:12px;font-size:15px;display:flex}.home-link:hover{background:#eef0f2}.topbar-right{align-items:center;display:flex}.brand{color:var(--express-ink);align-items:center;gap:10px;font-size:16px;font-weight:800;display:flex}.brand-mark{background:var(--express-ink);color:#fff;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;font-family:Consolas,monospace;font-size:13px;font-weight:700;display:inline-flex}.brand .dotjs{color:var(--node-green)}.brand-short{display:none}.topbar-badges{gap:8px;display:flex}.badge{letter-spacing:.03em;text-transform:uppercase;border:1px solid var(--line);color:var(--ink-soft);background:var(--panel);border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700}.badge.dark{background:var(--express-ink);color:#fff;border-color:var(--express-ink)}.badge.author{background:var(--node-green);color:#fff;border-color:var(--node-green)}.font-adjust{align-items:center;gap:4px;margin-right:14px;display:flex}.font-btn{border:1px solid var(--line);background:var(--panel);width:28px;height:28px;color:var(--ink-soft);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;font-family:inherit;font-size:12px;font-weight:800;display:flex}.font-btn:hover{color:var(--ink);background:#eef0f2}.font-btn:active{background:var(--node-green);color:#fff;border-color:var(--node-green)}.pdf-btn{border:1px solid var(--express-ink);background:var(--express-ink);color:#fff;cursor:pointer;letter-spacing:.03em;border-radius:7px;margin-right:14px;padding:7px 10px;font:700 11px/1 inherit}.pdf-btn:hover{background:var(--node-green-dark);border-color:var(--node-green-dark)}.pdf-btn:disabled{cursor:wait;opacity:.7}.course-dropdown{border-left:1px solid var(--line);margin-left:16px;padding-left:16px;position:relative}.course-dropdown-btn{cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--ink);white-space:nowrap;border-radius:9px;align-items:center;gap:8px;padding:7px 12px;font-family:inherit;font-size:13px;display:flex}.course-dropdown-btn:hover{background:#eef0f2}.course-dropdown-label{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);font-size:10.5px;font-weight:700}.course-dropdown-current{font-weight:700}.course-dropdown-chevron{color:var(--ink-faint);font-size:10px;transition:transform .15s}.course-dropdown-chevron.open{transform:rotate(180deg)}.course-dropdown-menu{background:var(--paper);border:1px solid var(--line);z-index:70;border-radius:10px;min-width:220px;position:absolute;top:calc(100% + 6px);left:16px;overflow:hidden;box-shadow:0 12px 28px #14141e24}.course-dropdown-item{color:var(--ink);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;font-size:13.5px;display:flex}.course-dropdown-item:last-child{border-bottom:none}.course-dropdown-item:hover{background:var(--panel)}.course-dropdown-item.active{color:var(--node-green-dark);background:var(--node-green-light);font-weight:700}.course-dropdown-item .check{color:var(--node-green-dark);font-weight:800}.sidebar-course-switch{display:none}.sidebar-course-switch .side-link.active{background:var(--node-green-light);color:var(--node-green-dark);border-left:2px solid var(--node-green);font-weight:700}.hamburger{border:1px solid var(--line);background:var(--panel);width:36px;height:36px;color:var(--ink);cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;margin-right:10px;font-size:16px;display:flex}.hamburger[aria-expanded=false]{background:var(--node-green-light);border-color:var(--node-green);color:var(--node-green-dark)}.sidebar-backdrop{z-index:59;background:#0d0f1473;display:none;position:fixed;inset:0}.sidebar-backdrop.open{display:block}.layout{padding-top:var(--topbar-h);display:flex}.sidebar{top:var(--topbar-h);width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--line);zoom:var(--font-scale);padding:22px 14px 60px;transition:transform .2s;position:fixed;bottom:0;left:0;overflow-y:auto}.sidebar.collapsed{transform:translate(-100%)}main.content.sidebar-collapsed{margin-left:0}.side-group{margin-bottom:20px}.side-group-title{letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);padding:0 10px 8px;font-size:11px;font-weight:800}.side-group-title.green{color:var(--node-green-dark)}.side-group-title.dark{color:var(--express-ink)}.side-link{color:var(--ink-soft);cursor:pointer;border-left:2px solid #0000;border-radius:7px;margin-bottom:1px;padding:7px 10px;font-size:13.5px;display:block}.side-link:hover{background:var(--panel);color:var(--ink)}.side-link.active{background:var(--node-green-light);color:var(--node-green-dark);border-left:2px solid var(--node-green);font-weight:700}main.content{margin-left:var(--sidebar-w);flex:1;min-width:0;transition:margin-left .2s}.content-inner{zoom:var(--font-scale);max-width:800px;margin:0 auto;padding:0 44px 100px}.cover{background:radial-gradient(circle at 88% 0%, #3c873a1a, transparent 45%), radial-gradient(circle at 0% 100%, #0d0f140d, transparent 40%), var(--paper);border-bottom:1px solid var(--line);padding:64px 44px 48px}.cover-inner{max-width:800px;margin:0 auto}.cover-kicker{text-transform:uppercase;letter-spacing:.2em;color:var(--node-green-dark);margin-bottom:16px;font-size:12px;font-weight:800}.cover-instructor{color:var(--express-ink);letter-spacing:.01em;margin:-7px 0 15px;font-size:16px;font-weight:800}.cover-title{margin:0 0 14px;font-size:34px;line-height:1.15}.cover-title .accent{color:var(--node-green)}.cover-sub{color:var(--ink-soft);max-width:600px;margin:0;font-size:17.5px;font-weight:400}.cover-tags{flex-wrap:wrap;gap:8px;margin-top:22px;display:flex}.tag{background:var(--panel);color:var(--express-ink);border:1px solid var(--line);border-radius:6px;padding:6px 12px;font-size:12px;font-weight:700}.cover-stack{grid-template-columns:1fr 1fr 1fr;gap:12px;margin-top:28px;display:grid}.stack-card{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:14px 16px}.stack-card .n{letter-spacing:.08em;text-transform:uppercase;color:var(--node-green-dark);font-size:11px;font-weight:800}.stack-card .t{color:var(--ink-soft);margin-top:5px;font-size:13px;line-height:1.5}.cover-meta{border-top:1px solid var(--line);color:var(--ink-faint);justify-content:space-between;margin-top:30px;padding-top:16px;font-size:12px;display:flex}article{padding-top:40px}.kicker{text-transform:uppercase;letter-spacing:.16em;color:var(--node-green-dark);margin-bottom:8px;font-size:11.5px;font-weight:800}h1.page-title{margin-bottom:14px;font-size:23px}.lead{color:var(--ink-soft);font-size:16px}.prereq-grid{grid-template-columns:1fr 1fr;gap:10px;margin:16px 0;display:grid}.prereq{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:11px 14px;font-size:13.5px}.prereq b{color:var(--express-ink)}h4.section-h{text-transform:uppercase;letter-spacing:.07em;color:var(--express-ink);margin:22px 0 8px;font-size:13px;font-weight:800}ol.steps,ul.bullets{margin:8px 0;padding-left:20px}ol.steps li,ul.bullets li{margin:7px 0}.divider{background:linear-gradient(135deg, var(--express-ink), #23262f);color:#fff;border-radius:14px;margin:44px 0;padding:34px 36px}.divider.green{background:linear-gradient(135deg, var(--node-green-dark), var(--node-green))}.divider .kicker{color:#ffffffbf}.divider h2{color:#fff;margin-bottom:8px;font-size:20px}.divider p{color:#ffffffd1;max-width:560px;margin:0;font-size:14.5px}section.chapter{border-top:1px solid var(--line);margin-top:38px;padding-top:38px}section.chapter:first-of-type{border-top:none;margin-top:0}.chapter-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--node-green-dark);margin-bottom:8px;font-size:11.5px;font-weight:800}.chapter-kicker.express{color:var(--express-ink)}h2.chapter-title{align-items:center;gap:12px;margin-bottom:18px;font-size:21px;line-height:1.3;display:flex}.chapter-num{color:#fff;background:var(--node-green);border-radius:7px;flex:none;padding:5px 11px;font-family:Consolas,monospace;font-size:14px;font-weight:800}.chapter-kicker.express+h2.chapter-title .chapter-num{background:var(--express-ink)}.box{border-radius:10px;margin:16px 0;padding:15px 18px}.box h4{text-transform:uppercase;letter-spacing:.09em;margin-bottom:6px;font-size:12px;font-weight:800}.box.concept{background:var(--node-green-light);border-left:4px solid var(--node-green)}.box.concept h4{color:var(--node-green-dark)}.box.tip{background:#fff8e6;border-left:4px solid #d9a52c}.box.tip h4{color:#8a6314}.box.pitfall{background:#fdeeee;border-left:4px solid #c0392b}.box.pitfall h4{color:#a5352b}.box.reference{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--express-ink)}.box.reference h4{color:var(--express-ink)}.box.example{border-left:4px solid var(--blue);background:#eef4fb}.box.example h4{color:#1d4ed8}.box p{margin:0;font-size:14.5px}.box p+p{margin-top:8px}.code-block{border:1px solid #2b2c3a;border-radius:10px;margin:12px 0 18px;overflow:hidden;box-shadow:0 4px 14px #14141e14}.code-label{background:var(--code-bg-2);color:#9aa0ab;letter-spacing:.02em;align-items:center;gap:10px;padding:8px 10px 8px 12px;font-family:Consolas,monospace;font-size:11.5px;display:flex}.dots{flex:none;gap:5px;display:flex}.dots i{background:#4a4b5c;border-radius:50%;width:9px;height:9px;display:block}.dots i:first-child{background:#ff5f56}.dots i:nth-child(2){background:#ffbd2e}.dots i:nth-child(3){background:#27c93f}.code-label .file{color:#c7cbd6}.code-label .lang{color:#7ab6f0;margin-left:auto;font-weight:700}.copy-btn{color:#c7cbd6;cursor:pointer;letter-spacing:.03em;background:#282a3a;border:1px solid #383a4c;border-radius:6px;padding:4px 9px;font-family:inherit;font-size:10.5px;font-weight:700}.copy-btn:hover{color:#fff;background:#33354a}pre{background:var(--code-bg);color:var(--code-fg);max-width:100%;margin:0;padding:15px 17px;font-size:12.6px;line-height:1.6;overflow-x:auto}pre code{white-space:pre}:not(pre)>code{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.cm{color:var(--code-comment);font-style:italic}.st{color:var(--code-string)}.kw{color:var(--code-keyword);font-weight:600}.nm{color:var(--code-number)}.fn{color:var(--code-func)}.an{color:var(--code-func);font-weight:600}table.ref-table{-webkit-overflow-scrolling:touch;border-collapse:collapse;width:100%;max-width:100%;margin:14px 0;font-size:13px;display:block;overflow-x:auto}table.ref-table th{text-align:left;background:var(--express-ink);color:#fff;text-transform:uppercase;letter-spacing:.04em;padding:9px 11px;font-size:11px}table.ref-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:10px 11px}table.ref-table tr:nth-child(2n) td{background:var(--panel)}table.ref-table code{color:var(--express-ink);white-space:nowrap;background:#eef0f2;border-radius:4px;padding:2px 6px;font-size:12px}.method{color:#fff;letter-spacing:.03em;border-radius:5px;padding:3px 9px;font-family:Consolas,monospace;font-size:10.5px;font-weight:800;display:inline-block}.method.get{background:#2f6fed}.method.post{background:#2da44e}.method.put{background:#bf8700}.method.delete{background:#cf222e}.method.patch{background:#8250df}.flow{border:1px solid var(--line);background:var(--panel);break-inside:avoid;border-radius:14px;margin:20px 0;padding:26px}.flow-start{text-align:center;color:var(--express-ink);margin-bottom:18px;font-size:13.5px;font-weight:800}.flow-branches{align-items:stretch;gap:16px;display:flex}.flow-path{border:1px solid var(--line);background:var(--paper);text-align:center;border-radius:12px;flex:1;padding:18px 16px}.flow-path.docker{border-color:#2496ed44}.flow-icons{letter-spacing:4px;margin-bottom:6px;font-size:26px}.flow-title{text-transform:uppercase;letter-spacing:.06em;color:var(--node-green-dark);margin-bottom:12px;font-size:12.5px;font-weight:800}.flow-path.docker .flow-title{color:#1c78c0}.flow-step{color:var(--ink-soft);background:var(--panel);text-align:left;border-radius:7px;margin:6px 0;padding:9px 10px;font-size:12px}.flow-step .ic{margin-right:6px}.flow-arrow{text-align:center;color:var(--ink-faint);margin:2px 0;font-size:15px}.flow-arrow.center{color:var(--node-green);margin:14px 0;font-size:20px}.flow-end{background:var(--express-ink);color:#fff;text-align:center;border-radius:10px;padding:14px 18px;font-size:13px;font-weight:600}.pcgrid{grid-template-columns:1fr 1fr;gap:14px;margin:14px 0;display:grid}.pcbox{border:1px solid var(--line);border-radius:10px;padding:14px 16px}.pcbox.good{background:#eefaf0;border-color:#bfe6c6}.pcbox.bad{background:#fdf3ee;border-color:#f0d4c4}.pcbox h4{text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;font-size:12px;font-weight:800}.pcbox.good h4{color:var(--node-green-dark)}.pcbox.bad h4{color:#a5552b}.pcbox ul{color:var(--ink-soft);margin:0;padding-left:18px;font-size:13px}.pcbox li{margin:5px 0}.timeline{margin:22px 0 28px;padding-left:26px;position:relative}.timeline:before{content:"";background:var(--line);width:2px;position:absolute;top:4px;bottom:4px;left:7px}.timeline-item{margin-bottom:18px;position:relative}.timeline-item:before{content:"";background:var(--node-green);width:11px;height:11px;box-shadow:0 0 0 3px var(--node-green-light);border-radius:50%;position:absolute;top:3px;left:-26px}.timeline-item.modern:before{background:var(--express-ink);box-shadow:0 0 0 3px var(--panel)}.timeline-date{color:var(--node-green-dark);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:800}.timeline-item.modern .timeline-date{color:var(--express-ink)}.timeline-title{color:var(--express-ink);margin:2px 0 4px;font-size:14.5px;font-weight:700}.timeline-desc{color:var(--ink-soft);margin:0;font-size:13px;line-height:1.55}.timeline-divider{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);border-bottom:1px dashed var(--line);margin:16px 0 14px -26px;padding-bottom:6px;font-size:11px;font-weight:800}.stepchain{flex-wrap:wrap;align-items:stretch;gap:4px;margin:20px 0;display:flex}.stepchain-item{border:1px solid var(--line);background:var(--panel);border-radius:10px;flex:150px;min-width:140px;padding:13px 14px}.stepchain-num{background:var(--node-green);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;margin-bottom:8px;font-size:12px;font-weight:800;display:flex}.stepchain-title{color:var(--express-ink);margin-bottom:4px;font-size:13px;font-weight:700}.stepchain-desc{color:var(--ink-soft);font-size:12px;line-height:1.5}.stepchain-arrow{color:var(--ink-faint);flex:none;justify-content:center;align-items:center;padding:0 2px;font-size:18px;display:flex}@media (max-width:640px){.stepchain{flex-direction:column}.stepchain-arrow{padding:2px 0;transform:rotate(90deg)}.brand-full{display:none}.brand-short{display:inline}}.threadviz{margin:20px 0}.threadviz-main{background:var(--express-ink);color:#fff;border-radius:8px;align-items:center;padding:8px 16px;font-size:12.5px;font-weight:700;display:inline-flex}.threadviz-fork{border-left:2px solid var(--line);flex-wrap:wrap;gap:14px;margin:0 0 0 15px;padding:16px 0 4px 24px;display:flex}.threadviz-lane{border:1px solid var(--line);background:var(--panel);border-radius:10px;flex:140px;min-width:130px;padding:10px 14px;position:relative}.threadviz-lane:before{content:"";background:var(--line);width:22px;height:2px;position:absolute;top:50%;left:-24px}.threadviz-thread{color:var(--node-green-dark);margin-bottom:4px;font-size:12.5px;font-weight:700}.threadviz-task{color:var(--ink-soft);font-family:Consolas,monospace;font-size:12px}.threadviz-join{color:var(--ink-faint);margin:10px 0 0 15px;font-size:12px;font-style:italic}.heapviz{flex-wrap:wrap;align-items:stretch;gap:14px;margin:18px 0;display:flex}.heapviz-panel{border:1px solid var(--line);background:var(--panel);border-radius:10px;flex:200px;min-width:190px;padding:12px}.heapviz-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint);margin-bottom:10px;font-family:Consolas,monospace;font-size:11px;font-weight:700}.heapviz-objects{flex-direction:column;gap:8px;display:flex}.heapviz-obj{border-radius:8px;padding:8px 10px;font-size:12.5px;font-weight:600;line-height:1.4}.heapviz-obj.reachable{background:var(--node-green-light);border:1px solid var(--node-green);color:var(--node-green-dark)}.heapviz-obj.unreachable{color:#a5352b;opacity:.8;background:#fdeeee;border:1px solid #c0392b;text-decoration:line-through}.heapviz-obj small{opacity:.85;margin-top:2px;font-size:11px;font-weight:500;text-decoration:none;display:block}.heapviz-arrow{color:var(--ink-faint);flex:none;justify-content:center;align-items:center;font-size:20px;display:flex}@media (max-width:640px){.heapviz{flex-direction:column}.heapviz-arrow{transform:rotate(90deg)}}.closing{text-align:center;padding:60px 20px 40px}.closing .kicker{justify-content:center}.closing h1{font-size:24px}.next-grid{text-align:left;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-top:26px;display:grid}.next-card{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:15px}.next-card .n{color:var(--node-green-dark);text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:800}.next-card .t{color:var(--ink-soft);margin-top:6px;font-size:13px}.career-cta{color:#fff;break-inside:avoid;background:linear-gradient(135deg,#12172a 0%,#1c2444 48%,#2c1b4a 100%);border-radius:20px;margin:44px 0 12px;position:relative;overflow:hidden}.career-cta:before{content:"";pointer-events:none;background:radial-gradient(circle at 15% 20%,#7c5cff4d,#0000 45%),radial-gradient(circle at 85% 85%,#3cb4dc38,#0000 45%);animation:12s ease-in-out infinite alternate ctaGlowDrift;position:absolute;inset:-20%}@keyframes ctaGlowDrift{0%{transform:translate(0)scale(1)}to{transform:translate(2%,-3%)scale(1.08)}}.career-cta-inner{grid-template-columns:1.15fr .85fr;align-items:center;gap:44px;padding:48px 44px;display:grid;position:relative}.career-cta-text{text-align:left}.career-cta-icon{margin-bottom:12px;font-size:32px}.career-cta-kicker{text-transform:uppercase;letter-spacing:.16em;color:#a3b3ff;margin-bottom:10px;font-size:11px;font-weight:800}.career-cta-title{color:#fff;margin-bottom:14px;font-size:26px;font-weight:800;line-height:1.3}.career-cta-open{color:#fff;background:#ffffff1f;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:6px;margin-bottom:18px;padding:7px 14px;font-size:12.5px;font-weight:700;display:inline-flex}.career-cta-body{color:#d6dcf5;max-width:52ch;margin-bottom:20px;font-size:14.5px;line-height:1.7}.career-cta-body b{color:#fff}.career-cta-tags{flex-wrap:wrap;justify-content:flex-start;gap:8px;margin-bottom:20px;display:flex}.career-cta-tag{color:#e8ecff;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:999px;padding:6px 12px;font-size:11.5px;font-weight:700}.career-cta-price{color:#d6dcf5;margin-bottom:22px;font-size:14px}.career-cta-price b{color:#fff;font-size:16px}.career-cta-btn{color:#1c2444;background:#fff;border-radius:10px;align-items:center;gap:8px;padding:13px 26px;font-size:14px;font-weight:800;text-decoration:none;transition:transform .15s,box-shadow .15s;display:inline-flex}.career-cta-btn:hover{transform:translateY(-2px);box-shadow:0 10px 24px #00000059}.career-cta-btn .arrow{transition:transform .15s;display:inline-block}.career-cta-btn:hover .arrow{transform:translate(3px)}.career-roadmap{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff0d;border:1px solid #ffffff1f;border-radius:16px;flex-direction:column;padding:22px 22px 18px;display:flex;position:relative}.career-roadmap-node{opacity:0;align-items:flex-start;gap:14px;padding-bottom:26px;animation:.6s cubic-bezier(.2,.7,.3,1) forwards roadmapIn;display:flex;position:relative;transform:translate(10px)}.career-roadmap-node:first-child{animation-delay:.15s}.career-roadmap-node:nth-child(2){animation-delay:.45s}.career-roadmap-node:nth-child(3){animation-delay:.75s}.career-roadmap-node:nth-child(4){animation-delay:1.05s}.career-roadmap-node:last-child{padding-bottom:0}.career-roadmap-node:before{content:"";transform-origin:top;width:2px;animation:.5s forwards roadmapLine;animation-delay:inherit;background:linear-gradient(#ffffff59,#ffffff14);position:absolute;top:42px;bottom:0;left:19px;transform:scaleY(0)}.career-roadmap-node:last-child:before{display:none}.career-roadmap-badge{z-index:1;background:#ffffff1a;border:1px solid #fff3;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:17px;display:flex;position:relative}.career-roadmap-final .career-roadmap-badge{background:linear-gradient(135deg,#7c5cff,#3cb4dc);border-color:#0000;animation:2.2s ease-in-out 1.6s infinite roadmapPulse;box-shadow:0 0 #7c5cff99}.career-roadmap-copy{flex-direction:column;gap:2px;padding-top:6px;display:flex}.career-roadmap-copy b{color:#fff;font-size:13.5px}.career-roadmap-copy small{color:#b7c0e6;font-size:11.5px;line-height:1.4}@keyframes roadmapIn{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}@keyframes roadmapLine{to{transform:scaleY(1)}}@keyframes roadmapPulse{0%{box-shadow:0 0 #7c5cff8c}70%{box-shadow:0 0 0 12px #7c5cff00}to{box-shadow:0 0 #7c5cff00}}@media (prefers-reduced-motion:reduce){.career-cta:before,.career-roadmap-node,.career-roadmap-node:before,.career-roadmap-final .career-roadmap-badge{opacity:1;transform:none;animation:none!important}}.print-page-number{display:none}.ad-slot{text-align:center;background:var(--panel);border:1px dashed var(--line);border-radius:10px;justify-content:center;align-items:center;min-height:90px;margin:28px 0;padding:8px;display:flex;overflow:hidden}.ad-slot-sidebar{min-height:250px;margin:16px 12px}@media print{.ad-slot{display:none!important}}@media (max-width:900px){.content-inner{padding:0 18px 70px}.cover{padding:40px 18px 34px}.cover-title{font-size:27px}.cover-sub{font-size:15.5px}.cover-stack,.prereq-grid,.next-grid{grid-template-columns:1fr}.flow-branches{flex-direction:column}.pcgrid{grid-template-columns:1fr}.topbar-badges .badge:not(.author),.topbar .course-dropdown{display:none}.sidebar-course-switch{display:block}main.content{margin-left:0}.sidebar{z-index:60;transition:transform .22s;display:block;transform:translate(-100%);box-shadow:8px 0 24px #0000001f}.sidebar.open{transform:translate(0)}.career-cta-inner{grid-template-columns:1fr;gap:28px;padding:34px 22px}.career-cta-title{font-size:20px}.career-cta-body{max-width:none}.career-roadmap{padding:20px 18px 16px}}@media (max-width:480px){.cover-title{font-size:22px}.topbar-badges{display:none}.course-switch{margin-left:8px;padding-left:8px}.pdf-btn{margin-right:6px;padding:7px 8px}}@page{size:auto;margin:16mm 14mm 18mm;@bottom-right{content:"Page " counter(page) " of " counter(pages);color:#565d6b;font:9pt sans-serif}}@media print{html,body{background:#fff!important}body{-webkit-print-color-adjust:exact;print-color-adjust:exact;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:11pt;line-height:1.55;color:var(--ink)!important}.topbar,.sidebar,.sidebar-backdrop{display:none!important}.layout{padding-top:0;display:block}main.content{margin-left:0}.content-inner{zoom:1;max-width:none;padding:0}.cover{border-bottom:2px solid var(--line);padding:20mm 0 12mm;background:#fff!important}.cover-title,.chapter-title,h1.page-title,.closing h1{color:var(--express-ink)!important}.cover-kicker,.kicker,.chapter-kicker{color:var(--node-green-dark)!important}.cover-sub,.lead,p,li,.timeline-desc,.box p{color:var(--ink-soft)!important}article,section.chapter{break-inside:auto}.divider{break-before:page;color:#fff!important;background:#23262f!important}.divider h2,.divider p,.divider .kicker{color:#fff!important}.code-block,.code-block pre,pre{break-inside:avoid}.code-block{box-shadow:none}pre{background:var(--code-bg)!important;color:var(--code-fg)!important}.box,.flow,.next-card,.stack-card,.prereq,.career-cta{break-inside:avoid}.box.concept{background:var(--node-green-light)!important}.box.tip{background:#fff8e6!important}.box.pitfall{background:#fdeeee!important}.box.example{background:#eef4fb!important}.box.reference{background:var(--panel)!important}.career-cta{margin:12mm 0}table.ref-table th{background:var(--express-ink)!important;color:#fff!important}table.ref-table tr:nth-child(2n) td,.next-card{background:var(--panel)!important}.print-page-number{color:var(--ink-soft);font-size:9pt;display:block;position:fixed;bottom:0;right:0}.print-page-number span:after{content:counter(page)}.print-page-number span{font-size:0}a{color:inherit}}
.route-loading{color:#565d6b;background:#fff;place-items:center;min-height:100vh;font-size:14px;font-weight:700;display:grid}.landing{background:var(--paper);min-height:100vh}.landing-topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:18px 32px;display:flex}.landing-brand{color:var(--express-ink);align-items:center;gap:10px;font-size:16px;font-weight:800;display:flex}.landing-brand-mark{background:var(--express-ink);color:#fff;border-radius:9px;justify-content:center;align-items:center;width:32px;height:32px;font-family:Consolas,monospace;font-size:14px;font-weight:700;display:inline-flex}.landing-career-link{letter-spacing:.03em;text-transform:uppercase;background:var(--express-ink);color:#fff;border-radius:999px;padding:8px 16px;font-size:11px;font-weight:700;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s}.landing-career-link:hover{background:#2c1b4a;transform:translateY(-1px);box-shadow:0 6px 16px #2c1b4a59}.landing-hero{text-align:center;background:radial-gradient(circle at 15% 20%, #3c873a1a, transparent 40%), radial-gradient(circle at 85% 15%, #e07b1a1a, transparent 40%), radial-gradient(circle at 50% 90%, #8b3a6214, transparent 45%), var(--paper);padding:36px 32px 28px}.landing-kicker{text-transform:uppercase;letter-spacing:.18em;color:var(--ink-faint);margin-bottom:10px;font-size:11px;font-weight:800}.landing-title{color:var(--express-ink);max-width:760px;margin:0 auto 10px;font-size:24px;font-weight:800;line-height:1.25}.landing-sub{color:var(--ink-soft);max-width:560px;margin:0 auto;font-size:14.5px}.landing-grid{grid-template-columns:repeat(3,1fr);gap:22px;max-width:1100px;margin:0 auto;padding:0 32px 90px;display:grid}.landing-grid.single-course{grid-template-columns:minmax(280px,360px);justify-content:center}.course-card{border:1px solid var(--line);background:var(--paper);color:inherit;border-radius:16px;flex-direction:column;padding:28px;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex;position:relative;overflow:hidden}.course-card:before{content:"";background:var(--card-accent);height:5px;position:absolute;top:0;left:0;right:0}.course-card:hover{border-color:var(--card-accent);transform:translateY(-4px);box-shadow:0 16px 32px #14141e1a}.course-card-icon{background:var(--card-accent-light);border-radius:13px;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:18px;font-size:24px;display:flex}.course-card-downloads-badge{z-index:1;color:var(--card-accent);background:var(--card-accent-light);border:1px solid var(--card-accent);border-radius:999px;align-items:center;gap:4px;padding:4px 9px;font-size:11px;font-weight:800;display:flex;position:absolute;top:14px;right:14px}.course-card-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--card-accent);margin-bottom:8px;font-size:11px;font-weight:800}.course-card h3{color:var(--express-ink);margin-bottom:10px;font-size:21px}.course-card p{color:var(--ink-soft);flex:1;margin:0 0 18px;font-size:13.5px;line-height:1.6}.course-card-tags{flex-wrap:wrap;gap:6px;margin-bottom:18px;display:flex}.course-card-tag{background:var(--panel);color:var(--ink-soft);border:1px solid var(--line);border-radius:5px;padding:4px 9px;font-size:11px;font-weight:600}.course-card-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding-top:16px;font-size:13px;display:flex}.course-card-chapters{color:var(--ink-faint);font-weight:600}.course-card-cta{color:var(--card-accent);align-items:center;gap:4px;font-weight:800;display:flex}.course-card:hover .course-card-cta{gap:8px}.course-card-cta .arrow{transition:transform .15s}.course-card:hover .course-card-cta .arrow{transform:translate(2px)}.landing-contact-note{text-align:center;color:var(--ink-soft);max-width:520px;margin:0 auto;padding:0 20px;font-size:13.5px}.landing-contact-note a{font-weight:700}.landing-footer{text-align:center;border-top:1px solid var(--line);color:var(--ink-faint);padding:28px 20px 40px;font-size:12.5px}.landing-visitor-count{color:var(--ink-faint);margin-top:8px;font-size:11.5px}@media (max-width:900px){.landing-grid{grid-template-columns:1fr}.landing-title{font-size:20px}.landing-hero{padding:28px 20px 22px}}
