@font-face{font-family:figtree;src:url(/fonts/figtree-var.woff)format("woff");font-weight:400 700;font-style:normal;font-display:optional}@font-face{font-family:figtree;src:url(/fonts/figtree-italic-400.woff)format("woff");font-weight:400;font-style:italic;font-display:optional}@font-face{font-family:bricolage grotesque;src:url(/fonts/bricolage-700.woff)format("woff");font-weight:500 800;font-style:normal;font-display:optional}@font-face{font-family:jetbrains mono;src:url(/fonts/jetbrainsmono-var.woff)format("woff");font-weight:400 600;font-style:normal;font-display:optional}:root{--bg:#f6f8fc;--surface:#ffffff;--surface-2:#eef2f8;--ink:#0f2238;--muted:#536479;--line:#d9e1ec;--brand:#0b5fd9;--brand-strong:#0847a6;--brand-soft:#e4eefd;--dart:#0b5fd9;--dart-soft:#e4eefd;--flutter:#027a8c;--flutter-soft:#dff4f6;--accent:var(--dart);--accent-soft:var(--dart-soft);--amber:#b86e00;--amber-soft:#fff3d9;--green:#12805c;--code-bg:#0d1a2b;--code-ink:#e3ebf5;--code-line:#1f3149;--shadow:0 18px 40px -18px rgba(8, 25, 50, 0.28);--radius:0.625rem;--font-display:"Bricolage Grotesque", "Figtree", system-ui, sans-serif;--font-body:"Figtree", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--top-h:3.75rem;--side-w:18rem;--toc-w:15rem;--page:90rem;--gutter:1.5rem;color-scheme:light}:root[data-theme=dark]{--bg:#0a1422;--surface:#101d2f;--surface-2:#15253b;--ink:#e6edf6;--muted:#97a8bc;--line:#22344c;--brand:#6db3ff;--brand-strong:#9ccbff;--brand-soft:#13294a;--dart:#6db3ff;--dart-soft:#13294a;--flutter:#4fd1dc;--flutter-soft:#0f2f36;--amber:#ffc457;--amber-soft:#33270c;--green:#4fd3a3;--code-bg:#070f1b;--code-line:#1b2a40;--shadow:0 18px 40px -18px rgba(0, 0, 0, 0.6);color-scheme:dark}.track-flutter,.t-flutter{--accent:var(--flutter);--accent-soft:var(--flutter-soft)}.t-dart{--accent:var(--dart);--accent-soft:var(--dart-soft)}*,*::before,*::after{box-sizing:border-box}html{font-size:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--top-h) + 1rem);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-width:17.5rem;background:var(--bg);color:var(--ink);font:1.0625rem/1.65 var(--font-body);-webkit-font-smoothing:antialiased;overflow-wrap:break-word}a{color:var(--brand);text-underline-offset:3px}a:hover{color:var(--brand-strong)}:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:4px}h1,h2,h3{font-family:var(--font-display);line-height:1.15;letter-spacing:-.015em;text-wrap:balance}img,svg,video{max-width:100%}button{font-family:inherit}[hidden]{display:none!important}.skip{position:absolute;left:-999px;top:8px;background:var(--surface);padding:8px 14px;border-radius:6px;z-index:100}.skip:focus{left:8px}.top{position:sticky;top:0;z-index:40;background:var(--bg);background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.top-in{height:var(--top-h);max-width:var(--page);margin:0 auto;padding:0 1.25rem;display:flex;align-items:center;gap:.875rem}.brand{display:inline-flex;align-items:center;gap:.625rem;color:var(--ink);text-decoration:none;font:700 1.125rem var(--font-display);white-space:nowrap;flex:none}.brand:hover{color:var(--ink)}.logo{flex:none;width:1.875rem;height:1.875rem}.top-nav{display:flex;gap:.25rem;margin-left:.625rem}.top-nav a{color:var(--muted);text-decoration:none;font-weight:600;font-size:.95rem;padding:.375rem .75rem;border-radius:999px}.top-nav a:hover{color:var(--ink);background:var(--surface-2)}.top-nav a.is-on{color:var(--accent);background:var(--accent-soft)}.icon-btn{flex:none;width:2.5rem;height:2.5rem;display:inline-grid;place-items:center;background:0 0;border:1px solid transparent;border-radius:.5rem;color:var(--muted);cursor:pointer}.icon-btn:hover{color:var(--ink);border-color:var(--line);background:var(--surface)}.menu-btn{display:none}[data-theme=dark] .sun,:root:not([data-theme=dark]) .moon{display:none}.search{position:relative;margin-left:auto;flex:0 1 21rem;min-width:0;display:flex;align-items:center;gap:.5rem;height:2.5rem;padding:0 .625rem;background:var(--surface);border:1px solid var(--line);border-radius:.5rem;color:var(--muted)}.search svg{flex:none}.search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.search input{flex:1;min-width:0;width:100%;border:0;outline:0;background:0 0;color:var(--ink);font:inherit;font-size:.95rem;-webkit-appearance:none;appearance:none}.search input::-webkit-search-cancel-button,.search input::-webkit-search-decoration{-webkit-appearance:none;display:none}.search kbd{flex:none;font:600 .75rem var(--font-mono);border:1px solid var(--line);border-radius:4px;padding:1px 6px}.search-results{position:absolute;top:calc(100% + 6px);right:0;width:min(28rem,92vw);max-height:70vh;overflow:auto;margin:0;padding:6px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-overflow-scrolling:touch}.search-results a{display:block;padding:.5625rem .75rem;border-radius:6px;text-decoration:none;color:var(--ink);line-height:1.35}.search-results a small{display:block;margin-top:2px;color:var(--muted);font-size:.8125rem}.search-results a mark{background:0 0;color:var(--brand);font-weight:700}.search-results li[aria-selected=true] a,.search-results a:hover{background:var(--brand-soft)}.search-results .empty{padding:.75rem;color:var(--muted);font-size:.95rem}.read-bar{height:3px;margin-top:-3px;pointer-events:none}.read-bar i{display:block;height:100%;width:0;background:var(--accent);border-radius:0 3px 3px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.6875rem 1.125rem;border-radius:.5rem;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 1rem var(--font-body);text-decoration:none;cursor:pointer;text-align:center}.btn:hover{border-color:var(--brand);color:var(--ink)}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-strong);border-color:var(--brand-strong);color:#fff}[data-theme=dark] .btn.primary,[data-theme=dark] .btn.primary:hover{color:#06162b}.hero{max-width:75rem;margin:0 auto;padding:clamp(2.5rem,6vw,4.75rem)var(--gutter)clamp(2rem,5vw,3.5rem);display:grid;grid-template-columns:minmax(0,1fr)minmax(0,1fr);gap:clamp(2rem,4vw,3.5rem);align-items:center}.hero h1{font-size:clamp(2.1rem,1.2rem + 3.6vw,3.75rem);font-weight:700;margin:0 0 1.25rem;letter-spacing:-.03em;line-height:1.04}.lede{font-size:1.1875rem;color:var(--muted);margin:0 0 1.5rem;max-width:34em}.hero-cta{display:flex;flex-wrap:wrap;gap:.75rem}.hero-note{color:var(--muted);font-size:.9375rem;margin:1.125rem 0 0}.hero-code{min-width:0;background:var(--code-bg);border-radius:.875rem;overflow:hidden;border:1px solid var(--code-line);box-shadow:0 30px 60px -30px rgba(6,24,54,.55)}.win-bar{display:flex;align-items:center;gap:.4375rem;padding:.5rem .875rem;border-bottom:1px solid var(--code-line);color:#8fa3bb;font:.8125rem var(--font-mono)}.win-bar>i{flex:none;width:10px;height:10px;border-radius:50%;background:#2b415e}.win-tabs{display:flex;gap:.25rem;margin-left:.5rem;min-width:0;overflow-x:auto;scrollbar-width:none}.win-tabs::-webkit-scrollbar{display:none}.win-tabs button{flex:none;font:500 .8125rem var(--font-mono);color:#8fa3bb;background:0 0;border:0;border-radius:6px;padding:.375rem .625rem;cursor:pointer;white-space:nowrap}.win-tabs button:hover{color:#e3ebf5}.win-tabs button[aria-selected=true]{color:#e3ebf5;background:#1a2c45}.hero-code .highlight pre{margin:0;padding:1.125rem 1.25rem;border:0;border-radius:0;font:.875rem/1.65 var(--font-mono);overflow-x:auto;color:var(--code-ink);-webkit-overflow-scrolling:touch}.win-out{border-top:1px solid var(--code-line);padding:.75rem 1.25rem 1rem;background:#091422}.win-out span{font:600 .75rem var(--font-body);color:#ffc457}.win-out pre{margin:.375rem 0 0;font:.875rem/1.6 var(--font-mono);color:#c9d6e6;white-space:pre-wrap}.tracks{max-width:75rem;margin:0 auto;padding:.5rem var(--gutter)1rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.track-card{position:relative;display:grid;gap:.25rem;padding:1.25rem 1.375rem 1.375rem;border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-decoration:none}.track-card:hover,.track-card:focus-within{color:var(--ink);border-color:var(--accent);box-shadow:var(--shadow)}.track-card .track-name{color:var(--ink);text-decoration:none;font:700 1.75rem/1.1 var(--font-display);letter-spacing:-.02em}.track-tag{font-size:.8125rem;font-weight:700;color:var(--accent)}.track-meta{font-weight:600;font-size:.95rem}.track-desc{color:var(--muted);font-size:.95rem;line-height:1.5;margin-top:.25rem}.popular{max-width:75rem;margin:0 auto;padding:1.5rem var(--gutter).5rem}.popular h2{font-size:clamp(1.35rem,1.1rem + 1vw,1.8rem);margin:0 0 1rem}.topic-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:.75rem}.topic-grid li{position:relative;display:grid;align-content:start;gap:.25rem;height:100%;padding:.875rem 1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-decoration:none}.topic-grid li:hover,.topic-grid li:focus-within{border-color:var(--brand);box-shadow:var(--shadow)}.topic-grid .t{font-weight:700;color:var(--ink);font-size:1rem;text-decoration:none}.topic-grid li>span{font-size:.875rem;color:var(--muted);line-height:1.45}.badge.level{background:var(--amber-soft);color:var(--amber)}.pg-guide{max-width:50rem;margin:2.5rem auto 0;padding:0 var(--gutter)2rem}.path{max-width:75rem;margin:0 auto;padding:clamp(2rem,4vw,3rem)var(--gutter)1rem;scroll-margin-top:var(--top-h)}.path-head{max-width:46rem;margin-bottom:1.5rem}.path-head h2{font-size:clamp(1.6rem,1.2rem + 1.6vw,2.3rem);margin:0 0 .625rem}.path-head h2::before{content:"";display:inline-block;width:.75rem;height:.75rem;border-radius:3px;background:var(--accent);margin-right:.625rem;vertical-align:.08em}.path-head p{color:var(--muted);margin:0 0 .75rem}.chapters{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:3rem;border-top:1px solid var(--line)}.chapters>li{display:grid;grid-template-columns:3rem minmax(0,1fr);gap:.5rem;padding:1.25rem 0;border-bottom:1px solid var(--line);align-content:start}.ch-num{font:700 1.625rem/1.1 var(--font-display);color:var(--accent);font-variant-numeric:tabular-nums}.ch-body{min-width:0}.ch-body h3{margin:0 0 .25rem;font-size:1.25rem}.ch-body h3 a{color:var(--ink);text-decoration:none}.ch-body h3 a:hover{color:var(--accent);text-decoration:underline}.ch-body>p{margin:0 0 .625rem;color:var(--muted);font-size:.975rem;line-height:1.55}.ch-body details>summary{display:inline-flex;align-items:center;gap:.375rem;cursor:pointer;list-style:none;font-size:.875rem;font-weight:600;color:var(--accent);padding:.25rem .625rem;border-radius:999px;background:var(--accent-soft);-webkit-user-select:none;user-select:none}.ch-body details>summary::-webkit-details-marker{display:none}.ch-body details>summary::after{content:"+";font-weight:700}.ch-body details[open]>summary::after{content:"\2212"}.ch-lessons{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.375rem .5rem}.ch-lessons a{display:inline-block;padding:.25rem .6875rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);text-decoration:none;font-size:.9rem}.ch-lessons a:hover{border-color:var(--accent);color:var(--accent)}.ch-lessons a.is-done{border-color:var(--green);color:var(--green)}.ch-lessons a.is-done::before{content:"\2713\00a0"}.home-prose{max-width:46rem;margin:0 auto;padding:1.5rem var(--gutter)1rem}.faq details{border-bottom:1px solid var(--line);padding:.875rem 0}.faq summary{cursor:pointer;font-weight:600;font-size:1.0625rem}.faq p{margin:.625rem 0 0;color:var(--muted)}.author-strip{max-width:46rem;margin:1.5rem auto 4.5rem;padding:0 var(--gutter)}.author-strip p{margin:0;padding:1.25rem 1.375rem;background:var(--brand-soft);border-radius:var(--radius)}.home-progress,.side-progress{font-size:.875rem;color:var(--muted)}.home-progress{max-width:20rem}.side-progress{padding:.25rem .75rem .875rem}[data-progress-total] i{display:block;height:6px;margin-top:6px;background:var(--line);border-radius:3px;overflow:hidden}[data-progress-total] b{display:block;height:100%;width:0;background:var(--green);border-radius:3px}.layout{max-width:var(--page);margin:0 auto;display:grid;grid-template-columns:var(--side-w)minmax(0,1fr)var(--toc-w);align-items:start}.layout.no-toc{grid-template-columns:var(--side-w)minmax(0,1fr)}.side{position:sticky;top:var(--top-h);height:calc(100vh - var(--top-h));overflow-y:auto;padding:1.125rem .75rem 2.5rem 1rem;border-right:1px solid var(--line);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.side-tracks{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin:0 0 .875rem;background:var(--surface-2);border-radius:.625rem}.side-tracks a{text-align:center;padding:.4375rem .5rem;border-radius:.4375rem;color:var(--muted);text-decoration:none;font-weight:600;font-size:.925rem}.side-tracks a:hover{color:var(--ink)}.side-tracks a[aria-current=true]{background:var(--surface);color:var(--accent);box-shadow:0 1px 3px rgba(8,25,50,.14)}.side details{margin-bottom:2px}.side summary{list-style:none;display:flex;align-items:baseline;gap:.625rem;padding:.5rem .625rem;border-radius:.4375rem;cursor:pointer;font-weight:600;font-size:.95rem;line-height:1.35}.side summary::-webkit-details-marker{display:none}.side summary:hover{background:var(--surface-2)}.side .num{flex:none;width:1.5em;color:var(--accent);font:700 .85rem var(--font-display);font-variant-numeric:tabular-nums;text-align:right}.side ul{list-style:none;margin:2px 0 .625rem 1.375rem;padding:0 0 0 .875rem;border-left:1px solid var(--line)}.side li a{display:block;padding:.3125rem .625rem;border-radius:6px;color:var(--muted);text-decoration:none;font-size:.925rem;line-height:1.35}.side li a:hover{color:var(--ink);background:var(--surface-2)}.side li a[aria-current=page]{color:var(--accent);background:var(--accent-soft);font-weight:600}.side li a.is-done::after{content:"\00a0\2713";color:var(--green);font-weight:700}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:44;background:rgba(5,15,30,.5)}.doc{min-width:0;padding:1.75rem clamp(1.25rem,4vw,3.5rem)4.5rem}.doc>*{max-width:46rem;margin-left:auto;margin-right:auto}.doc>.track-chapters,.doc>.track-wide{max-width:62rem}.track-wide>p,.track-wide>.lede{max-width:46rem}.track-chapters .chapters{margin-top:.5rem}.crumbs{display:flex;flex-wrap:wrap;gap:.25rem .5rem;font-size:.875rem;color:var(--muted);margin-bottom:1.375rem}.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{color:var(--brand);text-decoration:underline}.kicker{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem .625rem;margin:0 0 .625rem;font-size:.9375rem;font-weight:600;color:var(--muted)}.kicker .read{font-weight:400}.kicker .read::before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;background:currentColor;margin-right:.625rem;vertical-align:middle}.badge{display:inline-block;padding:.125rem .625rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.8125rem;font-weight:700}.toc{position:sticky;top:var(--top-h);max-height:calc(100vh - var(--top-h));overflow-y:auto;padding:2rem 1.25rem 2.5rem 0;font-size:.875rem;scrollbar-width:thin}.toc h2,.toc .toc-h{font:600 .875rem var(--font-body);letter-spacing:0;margin:0 0 .625rem;color:var(--ink)}.toc ul,.toc-inline ul{list-style:none;margin:0;padding:0}.toc ul ul,.toc-inline ul ul{padding-left:.75rem}.toc a{display:block;padding:.25rem 0 .25rem .75rem;border-left:2px solid var(--line);color:var(--muted);text-decoration:none;line-height:1.35}.toc a:hover{color:var(--ink)}.toc a.is-active{color:var(--accent);border-left-color:var(--accent);font-weight:600}.toc-inline{display:none;margin:0 0 1.5rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.toc-inline>summary{cursor:pointer;padding:.6875rem .875rem;font-weight:600;font-size:.95rem}.toc-inline nav{padding:0 .875rem .75rem}.toc-inline a{display:block;padding:.3125rem 0;color:var(--muted);text-decoration:none;font-size:.95rem;line-height:1.35}.toc-inline a:hover{color:var(--brand)}.prose h1{font-size:clamp(1.85rem,1.3rem + 2.2vw,2.75rem);margin:0 0 .875rem;letter-spacing:-.025em}.prose h2{font-size:clamp(1.375rem,1.2rem + .7vw,1.625rem);margin:2.4em 0 .6em;padding-top:.2em}.prose h3{font-size:1.25rem;margin:2em 0 .5em}.prose h4{font-size:1.0625rem;margin:1.6em 0 .4em}.prose p,.prose ul,.prose ol{margin:0 0 1.1em}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin-bottom:.35em}.prose li>ul,.prose li>ol{margin:.35em 0 0}.prose li>input[type=checkbox]{margin-right:.4em}.prose strong{font-weight:700}.prose .anchor{opacity:0;text-decoration:none;font-weight:400;color:var(--muted);margin-left:4px}.prose h2:hover .anchor,.prose h3:hover .anchor,.prose .anchor:focus{opacity:1}.prose :not(pre)>code{font:500 .875em var(--font-mono);background:var(--brand-soft);color:var(--brand-strong);padding:.12em .4em;border-radius:5px;overflow-wrap:anywhere}.prose kbd{font:600 .8125em var(--font-mono);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:.1em .4em;background:var(--surface)}.prose blockquote{margin:1.4em 0;padding:.875rem 1.125rem;background:var(--amber-soft);border-left:4px solid var(--amber);border-radius:0 var(--radius)var(--radius)0}.prose blockquote p:last-child{margin-bottom:0}.prose hr{border:0;border-top:1px solid var(--line);margin:2.4em 0}.table-wrap{overflow-x:auto;margin:0 0 1.4em;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);-webkit-overflow-scrolling:touch}.prose table{border-collapse:collapse;width:100%;font-size:.95rem}.prose th,.prose td{text-align:left;padding:.5625rem .875rem;border-bottom:1px solid var(--line);vertical-align:top}.prose th{font-weight:700;background:var(--surface-2);white-space:nowrap}.prose tr:last-child td{border-bottom:0}.code{margin:0 0 1.4em;border-radius:var(--radius);overflow:hidden;background:var(--code-bg);border:1px solid var(--code-line)}.code-bar{display:flex;align-items:center;gap:.375rem;padding:.375rem .5rem .375rem .875rem;border-bottom:1px solid var(--code-line);color:#8fa3bb;font:500 .8125rem var(--font-body)}.code-bar .lang{margin-right:auto}.code-bar button{font:600 .8125rem var(--font-body);color:#c9d6e6;background:0 0;border:1px solid #2b415e;border-radius:6px;padding:.25rem .625rem;cursor:pointer;min-height:1.875rem}.code-bar button:hover{border-color:#6db3ff;color:#fff}.code-bar .run{background:#ffc457;border-color:#ffc457;color:#2b1c00}.code-bar .run:hover{background:#ffd382;border-color:#ffd382;color:#2b1c00}.code pre,.prose pre{margin:0;padding:1rem 1.125rem;overflow-x:auto;background:var(--code-bg);color:var(--code-ink);font:.875rem/1.65 var(--font-mono);-moz-tab-size:2;tab-size:2;-webkit-overflow-scrolling:touch}.prose>pre{margin-bottom:1.4em;border-radius:var(--radius)}.code pre code,.prose pre code{font:inherit;background:0 0;padding:0;color:inherit}.code.is-output{background:var(--surface);border-color:var(--line)}.code.is-output .code-bar{border-color:var(--line);color:var(--amber);font-weight:700}.code.is-output pre{background:var(--surface);color:var(--ink)}.highlight,.chroma{background:0 0!important}.code-bar .edit{border-color:#6db3ff;color:#cfe5ff}.pad{border-top:1px solid var(--code-line);background:#0d1a2b}.pad iframe{display:block;width:100%;height:min(36rem,78vh);border:0;background:#0d1a2b}.pad-stage{position:relative}.pad-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:.75rem;background:#0d1a2b;color:#b9c8da;font:500 .9375rem var(--font-body);transition:opacity .25s}.pad.is-ready .pad-loader{opacity:0;pointer-events:none}.pad-spin{width:1.25rem;height:1.25rem;border:2px solid #2b4466;border-top-color:#6db3ff;border-radius:50%;animation:pad-spin .8s linear infinite}.pad.is-slow .pad-spin{border-top-color:#f2b544}@keyframes pad-spin{to{transform:rotate(360deg)}}.pad-note{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem 1rem;margin:0;padding:.5rem .875rem;border-top:1px solid var(--code-line);background:#091422;color:#8fa3bb;font:.8125rem/1.5 var(--font-body)}.pad-note>span:first-child{flex:1 1 18rem}.pad-note strong{color:#dbe6f3;font-weight:600}.pad-note kbd{font:600 .75rem var(--font-mono);color:#dbe6f3;background:#15253b;border:1px solid #2b4466;border-bottom-width:2px;border-radius:4px;padding:0 .3rem}.pad-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem .875rem}.pad-tools button{border:1px solid #2b4466;background:#12223a;color:#dbe6f3;border-radius:.375rem;padding:.1875rem .625rem;font:600 .8125rem var(--font-body);cursor:pointer}.pad-tools button:hover{border-color:#6db3ff;color:#fff}.pad-tools a{color:#9ccbff;white-space:nowrap}.code.is-full{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;margin:0;border-radius:0;border:0;display:flex;flex-direction:column}.code.is-full>.highlight,.code.is-full>pre{display:none}.code.is-full .pad{flex:1;display:flex;flex-direction:column;min-height:0}.code.is-full .pad-stage{flex:1;display:flex;min-height:0}.code.is-full .pad iframe{flex:1;height:auto;min-height:0}.pad-open{overflow:hidden}.pg{max-width:var(--page);margin:0 auto;padding:1.5rem var(--gutter)3rem}.pg-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem 2rem;margin-bottom:1.125rem}.pg-head>div:first-child{flex:1 1 24rem;min-width:0}.pg-head h1{font-size:clamp(1.6rem,1.2rem + 1.6vw,2.25rem);margin:0 0 .375rem;letter-spacing:-.02em}.pg-head p{margin:0;color:var(--muted);max-width:44rem}.pg-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}.pg-tracks{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:var(--surface-2);border-radius:.625rem}.pg-tracks button{border:0;background:0 0;padding:.4375rem 1rem;border-radius:.4375rem;color:var(--muted);font:600 .95rem var(--font-body);cursor:pointer}.pg-tracks button[aria-pressed=true]{background:var(--surface);color:var(--accent);box-shadow:0 1px 3px rgba(8,25,50,.14)}.pg[data-track=flutter]{--accent:var(--flutter);--accent-soft:var(--flutter-soft)}.pg-select{display:grid;gap:2px;font-size:.8125rem;color:var(--muted);font-weight:600}.pg-select select{font:500 .95rem var(--font-body);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:.5rem;padding:.5625rem .75rem;max-width:100%;min-width:12rem}.pg-controls .btn{padding:.5625rem .875rem;font-size:.95rem}.pg-mount{border:1px solid var(--code-line);border-radius:var(--radius);overflow:hidden;background:#0d1a2b}.pg-mount .pad{border-top:0}.pg-mount .pad iframe{height:calc(100vh - var(--top-h) - 13rem);min-height:26rem}.pg-nojs{padding:1rem}.lesson-list{list-style:none;counter-reset:l;padding:0!important;border-top:1px solid var(--line)}.lesson-list li{position:relative;counter-increment:l;margin:0;border-bottom:1px solid var(--line)}.lesson-list a{display:grid;grid-template-columns:2.2em minmax(0,1fr);padding:.875rem .25rem .125rem;text-decoration:none;color:var(--ink)}.lesson-list a::before{content:counter(l);grid-row:span 2;color:var(--accent);font:700 1.125rem var(--font-display)}.lesson-list a.is-done::before{content:"\2713";color:var(--green)}.lesson-list li>span{display:block;padding:0 .25rem .875rem 2.45rem;color:var(--muted);font-size:.95rem}.lesson-list li:hover strong{color:var(--accent);text-decoration:underline}.done-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line)}.done-btn[aria-pressed=true]{background:var(--green);border-color:var(--green);color:#fff}[data-theme=dark] .done-btn[aria-pressed=true]{color:#04241a}.updated{color:var(--muted);font-size:.875rem}.pager{display:grid;grid-template-columns:minmax(0,1fr)minmax(0,1fr);gap:.875rem;margin-top:1.5rem}.pager a{display:block;padding:.875rem 1.125rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);text-decoration:none;color:var(--ink);font-weight:600;line-height:1.3}.pager a:hover{border-color:var(--accent);color:var(--accent)}.pager small{display:block;font-weight:400;color:var(--muted);font-size:.8125rem;margin-bottom:2px}.pager .next{text-align:right;grid-column:2}.simple{max-width:46rem;margin:0 auto;padding:4.5rem var(--gutter)}.plain-list{columns:2;padding-left:1.2em}.to-top{position:fixed;right:1.25rem;bottom:1.25rem;z-index:30;width:2.75rem;height:2.75rem;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;box-shadow:var(--shadow)}.to-top:hover{border-color:var(--brand);color:var(--brand)}.foot{border-top:1px solid var(--line);background:var(--surface)}.foot-in{max-width:75rem;margin:0 auto;padding:3rem var(--gutter)1.5rem;display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:2.5rem}.foot h2{font:700 .95rem var(--font-body);letter-spacing:0;margin:0 0 .625rem}.foot ul{list-style:none;margin:0;padding:0}.foot li{margin-bottom:.375rem}.foot a{color:var(--muted);text-decoration:none;font-size:.95rem}.foot a:hover{color:var(--brand);text-decoration:underline}.foot-about p{color:var(--muted);font-size:.95rem;margin:.75rem 0 1rem;max-width:26em}.foot-about p a,.foot-legal a{color:var(--brand)}.foot .brand{color:var(--ink);font-size:1.125rem}.foot-legal{max-width:75rem;margin:0 auto;padding:1rem var(--gutter)2rem;color:var(--muted);font-size:.8125rem}@media(min-width:1700px){html{font-size:106.25%}}@media(min-width:2100px){html{font-size:118.75%}}@media(min-width:2800px){html{font-size:137.5%}}@media(min-width:3600px){html{font-size:162.5%}}@media(max-width:1180px){.layout{grid-template-columns:16.5rem minmax(0,1fr)}.toc{display:none}.toc-inline{display:block}}@media(max-width:1000px){.chapters{grid-template-columns:minmax(0,1fr)}}@media(max-width:900px){:root{--gutter:1.25rem}.hero{grid-template-columns:minmax(0,1fr)}.top-nav{display:none}.docs .menu-btn{display:inline-grid}.layout,.layout.no-toc{display:block}.side{position:fixed;top:0;left:0;z-index:45;width:min(20rem,86vw);height:100vh;height:100dvh;background:var(--bg);transform:translateX(-102%);transition:transform .2s ease;visibility:hidden;padding-top:1rem}.side.is-open{transform:none;visibility:visible;box-shadow:0 0 60px rgba(0,0,0,.35)}.foot-in{grid-template-columns:minmax(0,1fr)minmax(0,1fr);gap:2rem}.foot-about{grid-column:1/-1}.search kbd{display:none}.search{flex:auto}.search-results{position:fixed;top:calc(var(--top-h) + 4px);left:.75rem;right:.75rem;width:auto}}@media(max-width:640px){.tracks{grid-template-columns:minmax(0,1fr)}.top-in{padding:0 .75rem;gap:.5rem}.docs .brand span{display:none}.pager{grid-template-columns:minmax(0,1fr)}.pager .next{grid-column:1}.plain-list{columns:1}.code pre,.prose pre,.hero-code .highlight pre{font-size:.8125rem;padding:.875rem}.doc{padding-top:1.25rem;padding-bottom:3.5rem}.done-row{flex-direction:column;align-items:stretch}.done-row .btn{width:100%}.pg-controls{width:100%}.pg-select,.pg-select select{flex:auto;min-width:0;width:100%}.pg-mount .pad iframe{height:75vh}.hero-cta .btn{flex:1 1 10rem}.chapters>li{grid-template-columns:2.25rem minmax(0,1fr)}.ch-num{font-size:1.375rem}.to-top{right:.75rem;bottom:.75rem}}@media(max-width:420px){body{font-size:1rem}.brand span{display:none}.foot-in{grid-template-columns:minmax(0,1fr)}.lede{font-size:1.0625rem}.prose th,.prose td{padding:.5rem .625rem}}@media(max-height:480px) and (orientation:landscape){:root{--top-h:3.125rem}.hero{padding-top:1.5rem}}@media(hover:none){.prose .anchor{opacity:.5}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.side{transition:none}}@media print{.top,.side,.toc,.toc-inline,.foot,.pager,.done-row,.code-bar button,.to-top,.scrim,.pad{display:none!important}.layout{display:block}body{background:#fff;color:#000}.code pre,.prose pre{white-space:pre-wrap}}.ad{display:block;margin:2.5rem 0;padding-top:.5rem;border-top:1px solid var(--line);text-align:center;clear:both}.ad-label{display:block;margin-bottom:.5rem;font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.ad ins.adsbygoogle{min-height:100px}.ad-display ins.adsbygoogle{min-height:250px}.ad-multiplex{margin-top:3rem}.ad ins.adsbygoogle[data-ad-status=unfilled]{display:none!important}.ad:has(ins.adsbygoogle[data-ad-status=unfilled]){display:none}.home-ad{max-width:var(--page);margin:0 auto;padding:0 var(--gutter)}@media(max-width:640px){.ad{margin:2rem 0}.ad-display ins.adsbygoogle{min-height:280px}}@media print{.ad,.home-ad{display:none!important}}@media(prefers-reduced-motion:reduce){.pad-spin{animation-duration:2s}}.side-ch{display:flex;align-items:baseline;gap:.625rem;padding:.5rem .625rem;margin-bottom:2px;border-radius:.4375rem;color:var(--ink);text-decoration:none;font-weight:600;font-size:.95rem;line-height:1.35}.side-ch:hover{background:var(--surface-2);color:var(--ink)}.ch-meta{margin:0;font-size:.875rem;font-weight:600;color:var(--accent)}.foot-h{margin:0 0 .75rem;font-weight:700;font-size:.95rem;color:var(--ink)}.stretched::after{content:"";position:absolute;inset:0;border-radius:inherit}.stretched:focus-visible{outline:none}.stretched:focus-visible::after{outline:2px solid var(--brand);outline-offset:2px}.share{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:1.5rem 0;font-size:.9rem;color:var(--muted)}.share a{padding:.25rem .75rem;border:1px solid var(--line);border-radius:999px;color:var(--ink);text-decoration:none;background:var(--surface)}.share a:hover{border-color:var(--brand);color:var(--brand)}.foot-social{max-width:75rem;margin:0 auto;padding:0 var(--gutter).75rem;font-size:.875rem;color:var(--muted)}.foot li a,.foot-social a,.crumbs a,.crumbs span{display:inline-block;padding-block:3px}.pad-tools button,.pad-tools a{min-height:26px}.prose dl{margin:1rem 0 1.75rem}.prose dt{font-weight:700;color:var(--ink);margin-top:1.125rem;scroll-margin-top:5rem}.prose dd{margin:.25rem 0 0;padding-left:1rem;border-left:3px solid var(--line);color:var(--ink)}.help-strip{margin:1.25rem 0 0;padding:.875rem 1rem;border:1px solid var(--line);border-radius:.625rem;background:var(--surface);color:var(--muted);font-size:.95rem}.help-strip a{color:var(--brand)}.lang-pick{position:relative}.lang-pick>summary{list-style:none;display:inline-flex;align-items:center;gap:.25rem;height:40px;padding:0 .5rem;border-radius:10px;cursor:pointer;color:var(--ink)}.lang-pick>summary::-webkit-details-marker{display:none}.lang-pick>summary:hover{background:var(--surface-2)}.lang-cur{font-size:1.05rem;line-height:1}.lang-menu{position:absolute;inset-inline-end:0;top:calc(100% + 8px);z-index:60;width:min(320px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px rgba(10,30,60,.18);padding:.75rem}.lang-menu ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:2px}.lang-menu a,.lang-menu li button{display:flex;gap:.45rem;align-items:center;padding:.5rem .55rem;border-radius:8px;color:var(--ink);text-decoration:none;font-size:.92rem;min-height:36px}.lang-menu a:hover,.lang-menu li button:hover,.lang-menu a[aria-current]{background:var(--brand-soft);color:var(--brand-strong)}.lang-h{margin:.1rem .4rem .5rem;font-weight:700;font-size:.85rem;color:var(--muted)}.lang-note{margin:.6rem .4rem .2rem;font-size:.78rem;color:var(--muted);line-height:1.45}@media(max-width:640px){.lang-menu{position:fixed;left:16px;right:16px;top:64px;width:auto}}.lang-strip{max-width:75rem;margin:3rem auto;padding:0 var(--gutter)}.lang-strip h2{margin:0 0 .4rem}.lang-strip>p{color:var(--muted);margin:0 0 1.25rem;max-width:46rem}.lang-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.75rem}.lang-grid a{display:flex;align-items:center;gap:.7rem;padding:.85rem 1rem;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);text-decoration:none;transition:border-color .15s,transform .15s}.lang-grid a:hover{border-color:var(--brand);transform:translateY(-2px)}.lang-grid .flag{font-size:1.6rem;line-height:1}.lang-grid strong{display:block;font-size:.98rem}.lang-grid small{color:var(--muted);font-size:.8rem}.foot-langs{max-width:75rem;margin:0 auto;padding:0 var(--gutter)1rem;font-size:.875rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:.25rem .9rem}.foot-langs a{color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 4px}.foot-langs a:hover{color:var(--brand);text-decoration:underline}.teacher{max-width:75rem;margin:3rem auto;padding:0 var(--gutter)}.teacher-in{display:grid;grid-template-columns:auto 1fr;gap:1.75rem;align-items:center;padding:1.75rem;border:1px solid var(--line);border-radius:20px;background:linear-gradient(135deg,var(--surface) 0%,var(--brand-soft) 140%)}.teacher img{width:132px;height:132px;border-radius:50%;border:4px solid var(--brand);background:var(--surface-2)}.teacher h2{margin:0 0 .25rem}.teacher .role{margin:0 0 .75rem;color:var(--brand-strong);font-weight:700}.teacher p{margin:0 0 .6rem}.teacher-links{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.9rem}@media(max-width:640px){.teacher-in{grid-template-columns:1fr;text-align:center}.teacher img{margin:0 auto}.teacher-links{justify-content:center}}.home .hero{position:relative}.home .hero::before{content:"";position:absolute;inset:-2rem 0 auto 0;height:120%;z-index:-1;background:radial-gradient(60% 60% at 75% 30%,var(--brand-soft) 0%,transparent 70%);pointer-events:none}.hero-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none}.hero-badges li{font-size:.8rem;font-weight:700;color:var(--brand-strong);background:var(--brand-soft);border-radius:999px;padding:.3rem .75rem}.intl{max-width:52rem;margin:0 auto;padding:2.5rem var(--gutter)1rem}.intl h1{font-size:clamp(2rem,5vw,3rem);line-height:1.12;margin:.6rem 0 1rem}.intl .lede{font-size:1.15rem;color:var(--muted)}.intl .hero-cta{margin:1.5rem 0 .5rem}.intl-path{list-style:none;padding:0;margin:1.25rem 0;counter-reset:step;display:grid;gap:.75rem}.intl-path li{counter-increment:step;display:grid;grid-template-columns:2.4rem 1fr;gap:.9rem;align-items:start;padding:1rem 1.1rem;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.intl-path li::before{content:counter(step);display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:50%;background:var(--brand);color:#fff;font-weight:800}.intl-path strong{display:block;margin-bottom:.15rem}.intl-path p{margin:0;color:var(--muted)}.intl-path a{font-weight:700}[dir=rtl] .intl-path li{direction:rtl}html,body{overflow-x:clip}.share button{font:inherit;cursor:pointer;padding:.25rem .75rem;min-height:36px;border:1px solid var(--line);border-radius:999px;color:var(--ink);background:var(--surface)}.share button:hover{border-color:var(--brand);color:var(--brand)}.lang-menu li button{font-family:inherit;width:100%;text-align:start;background:0 0;border:0;cursor:pointer}[dir=rtl] .skip{left:auto;right:-999px}[dir=rtl] .skip:focus{right:8px}.diagram{margin:1.5rem 0;padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow-x:auto;text-align:center}.diagram pre.mermaid{background:0 0;border:0;margin:0;padding:0;color:var(--ink);white-space:pre}.diagram figcaption{margin-top:.5rem;font-size:.875rem;color:var(--muted)}:root{--bg:#f7f9fc;--ink:#102a43;--muted:#4b5d73;--line:#dbe3ee;--brand:#0b63ce;--brand-strong:#084b9c;--green:#1f8a5b;--green-soft:#e3f4ec}:root[data-theme=dark]{--bg:#0b1626;--ink:#e8eef6;--muted:#a3b3c6;--green:#4fd3a3;--green-soft:#113427}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--green-soft:#113427}}.prose{font-size:1.0938rem;line-height:1.72}.prose p,.prose li{max-width:72ch}.prose h2{letter-spacing:-.02em}.rm{margin:2rem 0 2.5rem}.rm-top{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.25rem 1.25rem 1rem;margin-bottom:1.75rem}.prose .rm-top h2{margin:0 0 .35rem;padding:0;font-size:1.375rem}.rm-top p{margin:0 0 .9rem;color:var(--muted)}.rm-progress{display:grid;gap:.45rem;font-size:.95rem}.rm-bar{height:10px;border-radius:999px;background:var(--surface-2);overflow:hidden}.rm-bar i{display:block;height:100%;width:0;background:var(--green);border-radius:inherit;transition:width .35s ease}.rm-legend{display:flex;gap:1.25rem;margin-top:.7rem;font-size:.875rem;color:var(--muted)}.rm-key{display:inline-flex;align-items:center;gap:.4rem}.rm-dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--muted);display:inline-block}.rm-dot.is-done{background:var(--green);border-color:var(--green)}.prose ol.rm-stages{list-style:none;padding:0;margin:0}.prose .rm-stage{position:relative;padding:0 0 2.25rem 3.4rem;margin:0;max-width:none}.rm-stage::before{content:"";position:absolute;left:calc(1.125rem - 1.5px);top:2.5rem;bottom:.25rem;width:3px;border-radius:3px;background:var(--line)}.rm-stage:last-child::before{display:none}.rm-stage.is-complete::before{background:var(--green)}.rm-num{position:absolute;left:0;top:0;width:2.25rem;height:2.25rem;border-radius:50%;display:grid;place-items:center;background:var(--surface);border:3px solid var(--accent);color:var(--ink);font:700 1rem var(--font-display)}.rm-stage.is-complete .rm-num{background:var(--green);border-color:var(--green);color:#fff}.rm-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:.2rem 0 .3rem;font-size:.875rem;color:var(--muted)}.rm-level{background:var(--accent-soft);color:var(--accent);font-weight:700;padding:.15rem .6rem;border-radius:999px}.rm-count{margin-left:auto;font-variant-numeric:tabular-nums}.prose .rm-head h3{margin:0 0 .35rem;font-size:1.3rem}.prose .rm-text{margin:0 0 1rem;color:var(--muted)}.prose .rm-chapter h4{margin:1rem 0 .55rem;font-size:1rem}.rm-chapter h4 a{color:var(--ink);text-decoration:none}.rm-chapter h4 a:hover{color:var(--brand);text-decoration:underline}.rm-chapter h4 small{font:500 .8125rem var(--font-body);color:var(--muted);margin-left:.35rem}.prose ul.rm-nodes{list-style:none;padding:0;margin:0 0 .5rem;display:flex;flex-wrap:wrap;gap:.5rem}.prose .rm-item{margin:0;display:inline-flex;align-items:center;gap:.1rem;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:.15rem .15rem .15rem .3rem;max-width:100%;transition:border-color .2s,background .2s}.rm-item:hover{border-color:var(--accent)}.rm-tick{flex:none;width:28px;height:28px;border-radius:50%;border:0;background:0 0;cursor:pointer;display:grid;place-items:center;padding:0}.rm-tick::before{content:"";width:16px;height:16px;border-radius:50%;border:2px solid var(--muted);box-sizing:border-box}.rm-tick[aria-pressed=true]::before{background:var(--green)url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")50%/100% no-repeat;border-color:var(--green)}.rm-node{color:var(--ink);text-decoration:none;font-size:.9375rem;padding:.3rem .75rem .3rem .2rem;line-height:1.3}.rm-node:hover{color:var(--brand)}.rm-item.is-done{background:var(--green-soft);border-color:var(--green)}.rm-out .rm-item{padding-left:.55rem}.rm-out .rm-node{color:var(--brand);font-weight:600}.prose .rm-practice{font-size:.9375rem;margin:.6rem 0 0}.prose .rm-foot{color:var(--muted);font-size:.9375rem}@media(max-width:560px){.prose .rm-stage{padding-left:2.9rem}.rm-num{width:2rem;height:2rem}.rm-stage::before{left:calc(1rem - 1.5px)}}@media(prefers-reduced-motion:reduce){.rm-bar i,.rm-item{transition:none}}@media print{.rm-tick,.rm-progress,.rm-legend{display:none}}.pg-mount{min-height:calc(min(36rem,78vh) + 5.5rem);background:#0d1a2b;border-radius:var(--radius)}.byline{margin:-.25rem 0 1.25rem;font-size:.9rem;color:var(--muted)}.byline a{color:inherit;font-weight:600}.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{color:#79c0ff}.chroma .vg{color:#79c0ff}.chroma .vi{color:#79c0ff}.chroma .vm{color:#79c0ff}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{color:#d2a8ff;font-weight:700}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}