@font-face{font-family:Research Song;src:url(/assets/fonts/research-song-regular.woff) format("woff");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Research Song;src:url(/assets/fonts/research-song-bold.woff) format("woff");font-style:normal;font-weight:700;font-display:swap}@font-face{font-family:"Research Serif";src:url(/assets/fonts/research-serif-regular.woff) format("woff");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:"Research Serif";src:url(/assets/fonts/research-serif-bold.woff) format("woff");font-style:normal;font-weight:700;font-display:swap}@font-face{font-family:"Research Serif";src:url(/assets/fonts/research-serif-italic.woff) format("woff");font-style:italic;font-weight:400;font-display:swap}@font-face{font-family:GeistSans;src:url(/assets/fonts/geist-sans.woff2) format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:GeistSans Fallback;src:local("Arial");ascent-override:94.56%;descent-override:27.76%;line-gap-override:0%;size-adjust:106.28%}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:block;src:url(/assets/fonts/geist-mono-latin.woff2) format("woff2");unicode-range:u+0-ff,u+131,u+152-153,u+2bb-2bc,u+2c6,u+2da,u+2dc,u+304,u+308,u+329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{color-scheme:light;--font-geist-sans:"GeistSans","GeistSans Fallback";--font-mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,"Liberation Mono","DejaVu Sans Mono","Courier New",monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ink:#171717;--muted:#4d4d4d;--line:#ebebeb;--blue:#0072f5;--paper:#fff;--header-paper:#fff;--surface:#f2f2f2;--inline-code:#f7f7f7;--canvas:#fafafa;--header-height:64px;--anchor-offset:140px;font-family:var(--font-geist-sans);font-size:16px;line-height:1.5;color:var(--ink);background:var(--canvas)}:root[data-theme=dark]{color-scheme:dark;--ink:#ededed;--muted:#a1a1a1;--line:#1f1f1f;--blue:#52a8ff;--paper:#000;--header-paper:#0a0a0a;--surface:#1a1a1a;--inline-code:#2a2828;--canvas:#000}*{box-sizing:border-box}html{scroll-padding-top:var(--anchor-offset)}body{position:relative;background:var(--paper);color:var(--ink);font-family:var(--font-geist-sans);font-size:16px;line-height:1.65;font-weight:400}body,dl,h1,h2,h3,h4,ol,p,ul{margin:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,select,summary{cursor:pointer}button{color:var(--ink);background:var(--header-paper);border:1px solid var(--line);border-radius:6px;padding:6px 12px;font-size:14px;line-height:20px}button:hover{background:var(--surface)}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--blue);outline-offset:3px}::selection{background:var(--ink);color:var(--paper)}.skip{position:fixed;top:-100px;left:16px;z-index:200;background:var(--paper);padding:8px 12px}.skip:focus{top:8px}.masthead{position:sticky;top:0;z-index:75;display:flex;align-items:center;justify-content:space-between;gap:24px;height:64px;width:100%;padding:16px 24px;background:var(--header-paper);box-shadow:0 1px 0 0 var(--line)}.brand{font-size:20px;line-height:28px;font-weight:600;white-space:nowrap}.masthead nav{display:flex;align-items:center;gap:24px}.masthead nav button{font-size:14px}#open-courses{display:none}#open-search{justify-content:space-between;gap:32px;width:251px;padding:0 6px 0 8px;border:0;border-radius:6px;color:#8f8f8f;background:var(--surface);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:14px;font-weight:400;line-height:23.1px;text-align:left}kbd{font-family:inherit;line-height:16px;border:1px solid var(--line);border-radius:4px;padding:1px 4px;background:var(--header-paper);white-space:nowrap}.theme-control,kbd{font-size:12px;color:var(--muted)}.theme-control{align-items:center;gap:8px}.theme-control select{font-size:12px;line-height:20px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:var(--header-paper);color:var(--ink)}.docs-shell{display:grid;grid-template-columns:284px minmax(0,1fr);max-width:1400px;width:calc(100% - 48px);margin:56px auto 0;align-items:start}.docs-shell main{width:100%;min-width:0;margin:0;padding:0 24px 0 48px;outline:none}.lesson-reading{max-width:65ch;margin:0}.course-sidebar{position:sticky;top:121px;width:284px;height:calc(100dvh - 121px);overflow-y:auto;overscroll-behavior:contain;padding:0 8px 16px 0;scrollbar-width:thin}.page-sidebar{display:none;width:224px;position:sticky;top:121px;max-height:calc(100dvh - 145px);overflow:auto;scrollbar-width:none}.course-list{padding:0}.course-list details{padding:0;margin:0 0 20px}.course-list summary{font-size:14px;line-height:20px;font-weight:500;padding:4px 0 4px 8px;border-radius:6px;list-style-position:inside}.course-list ol{list-style:none;padding:0 0 0 4px;margin:6px 0 0}.course-list li{margin:0 0 6px}.course-list li a{position:relative;display:flex;align-items:flex-start;gap:8px;width:100%;padding:4px 0 4px 8px;border-radius:6px;font-size:14px;line-height:20px;font-weight:400;color:var(--muted);background:transparent}.course-list a:hover,.course-list summary:hover{color:var(--ink)}.course-list a[aria-current=page]{font-weight:500;color:var(--blue);background:transparent}.nav-number{font-size:12px;line-height:20px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:inherit}.course-overview{display:block;padding:4px 0 4px 8px;margin:0 0 24px}.course-overview,.page-sidebar h2{font-size:14px;line-height:20px;font-weight:500}.page-sidebar h2{margin:0 0 12px}.page-sidebar nav a{display:block;padding:4px 0;font-size:14px;line-height:20px;color:var(--muted);font-weight:400}.page-sidebar nav a[aria-current=location]{color:var(--blue);font-weight:500}.page-sidebar nav a:hover{color:var(--ink)}.page-sidebar .toc-level-3{padding-left:16px}.page-sidebar .toc-level-figure{font-size:12px}.back-to-top{display:block;margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}.back-to-top,.breadcrumb{font-size:14px;color:var(--muted)}.breadcrumb{display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:20px;font-weight:400;margin:14px 0 46px}.breadcrumb>span:last-child{color:var(--ink)}.contents{position:sticky;top:64px;z-index:10;margin:0;background:var(--paper);font-size:14px;line-height:20px}.contents summary{min-height:45px;list-style-position:inside;font-weight:400}.contents nav,.contents summary{padding:12px;border-bottom:1px solid var(--line)}.contents nav{max-height:calc(100dvh - 160px);overflow:auto}.contents nav a{display:block;padding:4px 0;color:var(--muted);font-size:14px;line-height:20px}.contents nav a[aria-current=location]{color:var(--blue);font-weight:500}.contents .toc-level-3{padding-left:16px}.contents .toc-level-4{padding-left:24px}h1{font-size:36px;line-height:1.2;font-weight:600;letter-spacing:normal;margin:80px 0 0;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.reading-bar{color:var(--muted);font-size:14px;line-height:20px;margin:12px 0 32px}.source-prose{font-size:16px;line-height:1.7;font-weight:400;max-width:65ch;margin:0}.source-prose>*+*{margin-top:16px}.source-prose p{margin-top:16px;margin-bottom:0}.source-prose p:empty,.source-prose p:has(>br:only-child){display:none}.source-prose h2{font-size:24px;line-height:1.7;font-weight:600;margin-top:48px;padding-top:40px;border-top:1px solid var(--line)}.source-prose h3{font-size:20px;line-height:1.7;font-weight:600;margin-top:32px}.source-prose h2+h3{margin-top:16px}.source-prose h4{font-size:16px;line-height:1.7;font-weight:600;margin-top:16px}.source-prose strong{font-weight:600}.source-prose figure,.source-prose h2,.source-prose h3,.source-prose h4{scroll-margin-top:0}.source-prose a{color:var(--blue);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}.source-prose ol,.source-prose ul{padding-left:24px;margin-top:16px}.source-prose li+li{margin-top:8px}.source-prose pre{overflow:auto;white-space:pre;tab-size:4;border:1px solid var(--line);border-radius:8px;background:var(--header-paper);padding:16px;margin:16px 0 40px;line-height:20px}.source-prose code{font-family:var(--font-mono);font-feature-settings:none;font-variant-ligatures:none;font-size:14.4px;line-height:1.2;font-weight:400;color:var(--ink);background:var(--inline-code);border:1px solid var(--line);border-radius:6px;padding:.12em .25em;overflow-wrap:anywhere}.source-prose pre code{font-size:13px;line-height:20px;background:none;padding:0;border-radius:0;white-space:pre;overflow-wrap:normal;display:block}.source-prose .technical-note,.source-prose blockquote{font-size:14px;line-height:1.7;border:1px solid var(--line);border-radius:6px;padding:16px;background:var(--surface);margin:24px 0}.source-prose blockquote p{margin:0 0 8px}.source-prose blockquote p:last-child{margin-bottom:0}.source-prose figure{margin:32px 0;width:100%}.source-prose figcaption{margin:12px 0 0;font-size:14px;line-height:20px;color:var(--muted)}.table-scroll{overflow:auto;margin:28px 0}table{width:100%;border-collapse:collapse;font-size:14px;line-height:1.4}td,th{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);min-width:120px}th{font-weight:600}.video-reference{border:1px solid var(--line);border-radius:6px;padding:16px;font-size:14px}.video-reference p{margin:8px 0}.lesson-footer{border-top:1px solid var(--line);margin:48px 0 40px;padding-top:24px}.lesson-pagination{display:grid;grid-template-columns:1fr 1fr;gap:16px}.lesson-pagination a{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:8px;padding:16px}.lesson-pagination a:hover{background:var(--surface)}.lesson-pagination a[rel=next]{grid-column:2;text-align:right}.lesson-pagination span{font-size:12px;line-height:16px;color:var(--muted)}.lesson-pagination strong{font-size:14px;line-height:20px;font-weight:500}.source-credit{font-size:12px;line-height:20px;color:var(--muted);margin:24px 0 0}.source-credit a{text-decoration:underline;text-underline-offset:3px}.site-footer{width:calc(100% - 48px);max-width:1400px;margin:40px auto 0;padding:24px 0 32px;border-top:1px solid var(--line);display:flex;gap:24px;flex-wrap:wrap;font-size:12px;line-height:20px;color:var(--muted)}.site-footer>span{margin-right:auto}dialog{padding:0;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);width:min(620px,calc(100% - 32px));max-height:90dvh}dialog::backdrop{background:#0008;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}body:has(dialog[open]){overflow:hidden}.dialog-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:12px;padding:16px 20px;background:var(--paper);border-bottom:1px solid var(--line)}.dialog-head h2{font-size:16px;line-height:24px;font-weight:500;margin:0 auto 0 0}.dialog-head button{font-size:13px}.search-body{padding:20px 24px}.search-body>label{font-size:14px;display:block;margin-bottom:8px}#search-input{width:100%;font-size:16px;line-height:24px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:12px}#search-status{font-size:13px;line-height:20px;color:var(--muted);margin:12px 0}#search-results{padding:0;list-style:none}#search-results li+li{border-top:1px solid var(--line)}#search-results a{display:block;padding:16px 8px;border-radius:6px}#search-results a:hover{background:var(--surface)}#search-results strong{font-size:16px;line-height:24px;font-weight:500}.result-group{font-size:12px;color:var(--muted);margin-left:12px}.result-section{display:block;font-size:14px;line-height:20px;font-weight:500;margin:6px 0}#search-results p{font-size:14px;line-height:22px;color:var(--muted);margin:6px 0 0}.course-introduction{max-width:65ch}.eyebrow{font-size:12px;line-height:20px;color:var(--muted);margin:0 0 16px}.course-introduction h1{margin:24px 0 16px}.course-introduction>p:not(.eyebrow){font-size:16px;line-height:27.2px;margin:16px 0 24px}.start-reading{display:inline-block;border:1px solid var(--line);border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500}.sprint-navigation{display:flex;gap:16px;flex-wrap:wrap;padding:24px 0;font-size:14px}.sprint-navigation,.sprint-section{border-bottom:1px solid var(--line)}.sprint-section{display:grid;grid-template-columns:200px minmax(0,1fr);gap:32px;padding:32px 0;scroll-margin-top:0}.sprint-heading p,.sprint-heading>span{font-size:12px;color:var(--muted)}.sprint-heading h2{font-size:20px;line-height:28px;font-weight:600;margin:8px 0}.sprint-section ol{padding:0;list-style:none}.sprint-section li+li{border-top:1px solid var(--line)}.sprint-section li a{display:flex;align-items:center;gap:16px;padding:16px 0}.lesson-number{font-size:13px;color:var(--muted)}.sprint-section strong{display:block;font-size:16px;line-height:24px;font-weight:500}.sprint-section small{display:block;font-size:12px;line-height:20px;color:var(--muted);margin-top:4px}.sprint-section li a>span:last-child{margin-left:auto}.resource-intro{font-size:16px;line-height:27.2px;margin:16px 0 32px;max-width:65ch}.resource-section{margin:32px 0}.resource-section h2{font-size:24px;line-height:40.8px;font-weight:600;margin-bottom:16px}.resource-list{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:16px}.resource-list a{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:8px;padding:24px}.resource-list strong{font-size:16px;line-height:24px;font-weight:500}.resource-list p{font-size:14px;line-height:24px}.resource-list span{font-size:12px;color:var(--muted)}.source-list{list-style:none;padding:0}.source-list li{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px}.source-list span{color:var(--muted)}@media(min-width:1400px){:root{--anchor-offset:90px}.lesson-page .docs-shell{grid-template-columns:284px minmax(0,1fr) 224px}.page-sidebar{display:block}.contents{display:none}}@media(max-width:960px){.docs-shell{display:block;margin-top:40px}.course-sidebar{display:none}.docs-shell main{padding:0 24px}.lesson-reading{max-width:65ch;margin:0 auto}.masthead nav{gap:12px}#open-courses{display:block}#open-search{width:auto;gap:0}#open-search kbd,.page-sidebar,.theme-control>span{display:none}#course-dialog{position:fixed;inset:64px auto 0 0;margin:0;width:min(360px,calc(100vw - 32px));height:calc(100dvh - 64px);max-height:none;border-radius:0 8px 8px 0;overflow:auto}#course-dialog .course-list{padding:16px}#course-dialog .course-list li a,#course-dialog .course-list summary{padding-top:12px;padding-bottom:12px;min-height:44px}.dialog-head button{min-height:44px}.sprint-section{grid-template-columns:170px minmax(0,1fr);gap:24px}}@media(max-width:600px){.docs-shell main{padding:0 16px}.masthead{gap:12px}.brand{font-size:17px}.masthead nav{gap:8px}#open-courses{font-size:12px;padding:6px}#open-search{height:32px;padding:0 8px}#open-search span{font-size:0}#open-search span:after{content:"搜索";font-size:13px}.theme-control select{max-width:78px;padding:5px 4px}.sprint-section{display:block}.sprint-heading{margin-bottom:16px}.resource-list{grid-template-columns:1fr}.source-list li,.source-list span{display:block}.lesson-pagination{gap:12px}.lesson-pagination a{padding:12px}.dialog-head{padding:12px;flex-wrap:wrap}.search-body{padding:16px}}@media(max-width:400px){.docs-shell main{padding:0 4px}.masthead{padding:16px;gap:8px}.masthead nav{gap:4px}.brand{font-size:16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;transition:none!important}}:root{--control-border:#ebebeb;--inline-border:#ededed;--selected:#e6e6e6;--menu-paper:#fafafa}:root[data-theme=dark]{--control-border:#2e2e2e;--inline-border:#3e3c3c;--selected:#292929;--menu-paper:#000}.source-prose code{border-color:var(--inline-border)}.source-prose pre{padding:16px 0;margin:16px 0;border-color:var(--control-border)}.source-prose pre code{padding:0 16px;border:0}.course-list li{margin:6px 0}.page-sidebar{top:126px}.page-sidebar nav{display:flex;flex-direction:column;gap:10px}.page-sidebar nav a{padding:0;line-height:22.4px;border-radius:4px}.page-sidebar .toc-level-3{padding-left:12px}.page-sidebar .toc-level-4{padding-left:24px}.theme-control{display:flex;gap:0;border:1px solid var(--control-border);border-radius:9999px;padding:3px}.masthead .theme-control button{min-height:0;padding:0;border-radius:9999px;background:transparent;color:var(--muted);font-size:11px;line-height:16px;font-weight:400}.masthead .theme-control button[aria-pressed=true]{background:var(--selected);color:var(--ink)}.mobile-course-menu{display:none;position:sticky;top:64px;z-index:30;background:var(--menu-paper);border-bottom:1px solid var(--line);padding:12px 16px;font-size:16px;line-height:26.4px}.mobile-course-menu>summary{padding:4px 0;list-style-position:inside;font-weight:400;min-height:34.4px}#mobile-course-list{max-height:calc(100dvh - 160px);overflow:auto;padding:16px 0;overscroll-behavior:contain}@media(max-width:960px){.mobile-course-menu{display:block}.contents{top:123.4px}:root{--anchor-offset:181px}#open-courses{display:list-item}}@media(max-width:767px){.source-prose h2{margin-top:32px;padding-top:24px}}@media(hover:hover){.course-list a[aria-current=page]:hover{color:var(--ink)}}body,html{scroll-padding-top:64px}:root{--anchor-offset:128px}.source-prose figure,.source-prose h2,.source-prose h3,.source-prose h4{scroll-margin-top:64px}@media(max-width:960px){:root{--anchor-offset:169px}.source-prose figure,.source-prose h2,.source-prose h3,.source-prose h4{scroll-margin-top:105px}}.masthead{box-shadow:0 0 0 1px #00000014}:root[data-theme=dark] .masthead{box-shadow:0 0 0 1px #ffffff24}.contents,.contents summary{background:var(--header-paper)}.contents nav,.contents summary{border-bottom-color:var(--control-border)}.page-sidebar nav a[aria-current=location]{font-weight:400}.source-prose blockquote{font-size:16px;font-weight:400;font-style:normal;padding:24px;background:var(--header-paper);border-color:var(--selected)}.source-prose blockquote p{line-height:1.5}.source-prose blockquote code{font-size:12px}.source-prose a{text-decoration:none;font-weight:400}.source-prose ol{padding-left:0}.source-prose ul{padding-left:12px}.ui-icon{display:block;flex:none;width:16px;height:16px;pointer-events:none}#open-search{position:relative;display:flex;align-items:center;gap:8px;height:32px;min-height:32px}#open-search:before{content:"";position:absolute;inset:-6px;background:transparent}.masthead .theme-control{width:104px;height:40px;padding:3px;flex:none}.masthead .theme-control button{position:relative;display:grid;place-items:center;width:32px;height:32px;min-width:32px;min-height:32px;border:0;box-shadow:none}.masthead .theme-control button:before{content:"";position:absolute;inset:-6px 0;background:transparent}.masthead .theme-control button[aria-pressed=true]{border:0;box-shadow:none}@media(max-width:960px){#open-search{width:32px;min-width:32px;height:32px;padding:0;margin:6px;justify-content:center;border:0;color:var(--ink)}#open-search,#open-search:hover{background:transparent}#open-search .search-label,#open-search kbd{display:none}#open-search span:after{content:none}.masthead{padding-left:16px;padding-right:16px}.masthead nav{gap:8px}.brand{white-space:nowrap}}@media(max-width:400px){.masthead{padding-left:8px;padding-right:8px;gap:4px}.masthead nav{gap:4px}.brand{font-size:15px}}.masthead{padding-top:6px;padding-bottom:6px}.masthead .theme-control button:hover{color:#111}:root[data-theme=dark] .masthead .theme-control button:hover{color:#fafafa}@media(min-width:961px){#open-search:hover{background:var(--line);color:#7d7d7d}}.research-svg{display:block;width:100%;height:auto;overflow:visible;font-family:"Research Serif",Research Song,serif}.research-svg .badge text{font-family:"Research Serif",serif}.research-svg .area-label{font-family:"Research Serif",Research Song,serif}.diagram-frame{overflow:auto;border:1px solid var(--line);padding:18px;background:#fff;color:#192131;color-scheme:light}.diagram-frame svg{display:block;width:100%;height:auto;max-width:100%;margin:auto;background:#fff}.course-figure .diagram-frame svg{max-height:900px}.course-figure .diagram-frame img{display:block;width:100%;height:auto;max-height:900px;object-fit:contain;object-position:center;background:#fff}.mobile-source-diagrams{display:none}.mobile-source-diagrams details{border-bottom:1px solid #c8cdd3;padding:12px 0}.mobile-source-diagrams summary{font-size:17px;font-weight:700;list-style-position:inside;min-height:44px;color:#233c51}.mobile-legend{font-size:14px;line-height:1.7;padding:12px;color:#233c51}.mobile-legend p{margin:8px 0}.figure-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:12px 0;border-top:1px solid var(--line);font-size:14px;line-height:1.5}.figure-toolbar>span{font-weight:600}.figure-toolbar>div{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.figure-toolbar a,.figure-toolbar button{font-size:13px;color:var(--blue);border:0;padding:8px 4px;text-decoration:none;min-height:40px}.figure-key-nodes{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0;padding:0}.figure-key-nodes>div{flex:1 1 220px;border:1px solid var(--line);border-left:3px solid var(--muted);background:var(--surface);padding:12px 16px}.figure-key-nodes dt{font-size:17px;line-height:1.6;font-weight:700;color:var(--ink);margin:0 0 4px}.figure-key-nodes dd{font-size:16px;line-height:1.75;color:var(--muted);margin:0;overflow-wrap:anywhere}#walkthrough{border:1px solid var(--line);border-bottom:0;background:var(--surface);padding:12px 16px}.walk-actions{display:flex;align-items:center;gap:10px;font-size:13px}.walk-actions span{margin-left:auto;color:var(--muted)}#step-explanation{font-size:15px;margin:9px 0 0}#step-explanation strong{color:var(--blue)}#figure-dialog{width:min(1640px,calc(100% - 24px));height:94dvh;max-height:94dvh;overflow:hidden;flex-direction:column}#figure-dialog[open]{display:flex}#figure-dialog .dialog-head{flex-shrink:0;position:relative;flex-wrap:wrap}.figure-help{font-size:12px;color:var(--muted);margin:6px 16px;flex-shrink:0}.figure-dialog-content{flex:1 1;min-height:0;max-height:none;overflow:auto;padding:16px;background:var(--surface);overscroll-behavior:contain}.figure-canvas{margin:auto;flex-shrink:0;background:white;color:#192131;color-scheme:light}.figure-dialog-content .research-svg{display:block;min-width:0!important;max-width:none!important;max-height:none!important;width:100%;height:100%;background:white}.zoom-status{font-size:12px;line-height:1.5;color:var(--muted);margin:4px 16px 8px;flex-shrink:0}@media(max-width:700px){.desktop-source-diagram{display:none}.mobile-source-diagrams{display:block}.diagram-frame{padding:6px}.mobile-source-diagrams .research-svg{width:100%;min-width:0}.mobile-source-diagrams .small{font-size:16px}.mobile-source-diagrams .micro{font-size:14px}.mobile-source-diagrams .node-label{font-size:21px}.figure-toolbar a,.figure-toolbar button,.walk-actions button{min-height:44px}.walk-actions{flex-wrap:wrap}.walk-actions span{width:100%;margin:0}.figure-dialog-content{padding:10px}}.figure-stages{display:none}.figure-stage{border:1px solid var(--control-border);border-radius:8px;padding:16px;margin-top:16px}.figure-stage .stage-title{display:block;font-size:17px;line-height:1.5;font-weight:600}.figure-stage p{font-size:16px;line-height:1.7;margin:8px 0 16px}.figure-stage img{display:block;width:100%;height:auto;background:#fff;border-radius:4px}.figure-stage button{min-height:44px;margin-top:12px}.figure-toolbar a,.figure-toolbar button{min-height:44px;display:inline-flex;align-items:center}@media(max-width:600px){.figure-stages{display:block}.figure-toolbar{gap:12px}.figure-toolbar>div{display:flex;flex-wrap:wrap;gap:8px}}.stage-image{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;background:#fff}.stage-image img{min-width:300px}.stage-help{display:block;color:var(--muted);font-size:14px;line-height:1.5;margin-top:8px}.figure-stages>summary{min-height:44px;padding:12px 0;font-size:16px;font-weight:500;line-height:20px;color:var(--ink);list-style-position:inside}:root{--diagram-canvas:#fff;--diagram-ink:#192131}:root[data-theme=dark]{--diagram-canvas:#101419;--diagram-ink:#e6edf3}.course-figure .diagram-frame img,.diagram-frame,.diagram-frame svg,.figure-canvas,.figure-dialog-content .research-svg,.figure-stage img,.stage-image{background:var(--diagram-canvas);color:var(--diagram-ink);color-scheme:inherit}.mobile-legend,.mobile-source-diagrams summary{color:var(--diagram-ink)}.mobile-source-diagrams details{border-color:var(--control-border)}:root:not([data-theme=dark]) [data-figure-theme=dark],:root[data-theme=dark] [data-figure-theme=light]{display:none!important}@media(max-width:700px){.mobile-source-diagrams .research-svg .small{font-size:16px}.mobile-source-diagrams .research-svg .micro{font-size:14px}.mobile-source-diagrams .research-svg .node-label{font-size:21px}}.figure-dialog{width:min(1640px,calc(100% - 24px));height:94dvh;max-height:94dvh;overflow:hidden;flex-direction:column}.figure-dialog[open]{display:flex}.figure-dialog .dialog-head{flex-shrink:0;position:relative;flex-wrap:wrap}.walkthrough{border:1px solid var(--line);border-bottom:0;background:var(--surface);padding:12px 16px}.step-explanation{font-size:15px;margin:9px 0 0}.step-explanation strong{color:var(--blue)}.not-found{max-width:690px;margin:80px auto;padding:24px}@media(prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;animation:none!important;transition:none!important}}.page-sidebar.course-toc{position:sticky;top:126px;align-self:start;overflow:visible;max-height:calc(100dvh - 145px)}.course-toc .toc-scroll-viewport{min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scroll-padding:8px}.page-sidebar.course-toc .toc-scroll-viewport{max-height:calc(100dvh - 250px)}.course-toc .toc-links{position:relative;padding-left:12px}.course-toc .toc-active-marker{position:absolute;pointer-events:none;top:0;left:0;width:2px;height:1px;border-radius:1px;background:var(--blue);transform-origin:top left}.contents.course-toc .toc-scroll-viewport{max-height:calc(100dvh - 205px);border-bottom:1px solid var(--control-border)}.contents.course-toc .toc-links{max-height:none;overflow:visible;border-bottom:0;padding-left:20px}.contents.course-toc .toc-active-marker{left:8px}@media (prefers-reduced-motion:reduce){.course-toc .toc-scroll-viewport{scroll-behavior:auto}}.course-disclosure>summary{display:flex;align-items:center;gap:6px;list-style:none}.course-disclosure>summary::-webkit-details-marker{display:none}.course-disclosure>summary::marker{content:""}.course-chevron{flex:none;opacity:.72;transform-origin:center}.course-disclosure-panel{overflow:hidden}.course-disclosure-panel[inert]{pointer-events:none}.course-list-motion .course-overview{position:relative;border-radius:6px}.course-list-motion a{transform-origin:left center}.course-current-marker{position:absolute;left:0;top:5px;bottom:5px;width:2px;border-radius:2px;background:var(--blue);pointer-events:none}.mobile-course-menu.course-disclosure>#open-courses{display:flex}.masthead .theme-control-motion{position:relative;isolation:isolate}.theme-selection-indicator{position:absolute;top:3px;left:3px;width:32px;height:32px;border-radius:9999px;background:var(--selected);pointer-events:none;z-index:-1}.masthead .theme-control-motion>.theme-selection-indicator{display:block}.masthead .theme-control-motion button[aria-pressed=true]{background:transparent}#search-dialog{transform-origin:center 35%}#search-dialog::backdrop{opacity:var(--search-backdrop-opacity,1)}.search-feedback-frame{overflow:hidden;padding:0 7px;margin:0 -7px}.search-feedback-body{display:flow-root;position:relative}#search-results,#search-status{position:relative}.search-status-message{display:block}.search-result-row{position:relative}.search-result-row[aria-hidden=true],.search-status-message[aria-hidden=true]{pointer-events:none}#search-results .search-result-link{transform-origin:left center}#search-results .search-result-link:hover{background:transparent}@media (prefers-reduced-motion:reduce){#search-dialog,#search-results,.course-chevron,.theme-selection-indicator{transition:none!important}}.figure-dialog{transform-origin:center;isolation:isolate}.figure-dialog[data-motion-phase=entering],.figure-dialog[data-motion-phase=exiting]{will-change:opacity,transform}.figure-artwork{transform-origin:50% 50%;backface-visibility:hidden}.figure-canvas{position:relative;overflow:clip}.figure-dialog-content{overflow-anchor:none}.figure-stage-list,.step-explanation{isolation:isolate}@media(prefers-reduced-motion:reduce){.figure-artwork,.figure-dialog,.figure-stage-list,.step-explanation>div{will-change:auto!important}}.figure-dialog::backdrop{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.figure-motion-backdrop{position:fixed;inset:0;z-index:1500;pointer-events:none;background:#0008;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.walkthrough-motion{overflow:hidden;overflow-anchor:none}.walkthrough-motion[inert]{pointer-events:none}.figure-artwork,.figure-theme-layers,.rag-step-stack{display:grid}.figure-theme-layer,.figure-viewer-layer,.rag-step-copy{grid-area:1/1;min-width:0}.figure-viewer-layer[data-present=false],.rag-step-copy[data-present=false]{pointer-events:none}.figure-viewer-layer{width:100%;height:100%}.research-figure .figure-theme-layers [data-figure-theme]{display:block!important}.research-figure .figure-theme-layers>.figure-theme-layer[data-figure-theme=light]{opacity:1}.research-figure .figure-theme-layers>.figure-theme-layer[data-figure-theme=dark],:root[data-theme=dark] .research-figure .figure-theme-layers>.figure-theme-layer[data-figure-theme=light]{opacity:0}:root[data-theme=dark] .research-figure .figure-theme-layers>.figure-theme-layer[data-figure-theme=dark]{opacity:1}.figure-theme-layer[aria-hidden=true]{pointer-events:none}.figure-dialog button,.research-figure a[download],.research-figure button{transform-origin:center}.masthead .brand-logo{display:inline-flex;width:44px;height:44px;flex:0 0 44px;color:var(--ink);border-radius:6px}.brand-logo>span,.masthead .brand-logo{align-items:center;justify-content:center}.brand-logo>span{display:flex;width:100%;height:100%}.course-logo{display:block;width:36px;height:36px}@media(prefers-reduced-motion:reduce){.brand-logo,.brand-logo>span{transform:none!important}}.route-motion-content{min-width:0;opacity:1}.course-motion-link{position:relative;transform-origin:center;border-radius:6px;outline-offset:4px}.course-motion-link:focus-visible,.course-motion-link:hover{background:var(--surface)}.course-motion-link[data-course-link-kind=anchor],.course-motion-link[data-course-link-kind=breadcrumb]{display:inline-flex}.sprint-section li .course-motion-link{padding-inline:8px;margin-inline:-8px}@media (prefers-reduced-motion:reduce){.route-motion-content{opacity:1!important}.course-motion-link{transform:none!important}}