@font-face{font-family:Chivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/chivo-vietnamese-wght-normal.BjQIDkhi.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/chivo-latin-ext-wght-normal.CuxPzFD0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Chivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/chivo-latin-wght-normal.CPi3f958.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/martian-mono-cyrillic-wght-normal.B84CD5C_.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/martian-mono-latin-ext-wght-normal.DlL6xMw5.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/martian-mono-latin-wght-normal.5W32yIyr.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--wb-mineral: #d9d8d3;--wb-paper: #f0efeb;--wb-stone: #e7e6e1;--wb-sand: #e4e2dc;--wb-rule: #c4c3be;--wb-rule-strong: #a9a8a2;--wb-ink: #2b2f33;--wb-ink-2: #4f5357;--wb-ink-3: #6d716d;--wb-night: #1c1e20;--wb-night-2: #2b2d2f;--wb-cobalt: #1f3bd6;--wb-cobalt-deep: #1830b0;--wb-cobalt-tint: #dfe2ff;--wb-cobalt-wash: #eceefb;--wb-axis: #e04b3a;--wb-error: #a8241a;--wb-error-tint: #f6e3e0;--wb-green: #157a3a;--wb-green-tint: #dfeee3;--wb-amber: #6f4806;--wb-amber-tint: #f2e8d6;--surface-page: var(--wb-mineral);--surface-raised: var(--wb-paper);--surface-sunken: var(--wb-stone);--surface-inverse: var(--wb-night);--surface-inverse-raised: var(--wb-night-2);--surface-hover: color-mix(in srgb, var(--wb-ink) 5%, transparent);--surface-press: color-mix(in srgb, var(--wb-ink) 9%, transparent);--ink-1: var(--wb-ink);--ink-2: var(--wb-ink-2);--ink-3: var(--wb-ink-3);--ink-inverse: var(--wb-paper);--ink-inverse-2: color-mix(in srgb, var(--wb-paper) 76%, var(--wb-night));--ink-inverse-3: color-mix(in srgb, var(--wb-paper) 58%, var(--wb-night));--rule-1: var(--wb-rule);--rule-2: var(--wb-rule-strong);--rule-inverse: color-mix(in srgb, var(--wb-paper) 22%, var(--wb-night));--accent: var(--wb-cobalt);--accent-hover: var(--wb-cobalt-deep);--accent-tint: var(--wb-cobalt-tint);--accent-wash: var(--wb-cobalt-wash);--positive: var(--wb-green);--positive-tint: var(--wb-green-tint);--negative: var(--wb-error);--negative-tint: var(--wb-error-tint);--attention: var(--wb-amber);--attention-tint: var(--wb-amber-tint);--axis-line: var(--wb-axis);--font-sans: "Chivo Variable", Inter, ui-sans-serif, system-ui, sans-serif;--font-mono: "Martian Mono Variable", "Fragment Mono", ui-monospace, SFMono-Regular, Consolas, monospace;--text-2xs: .6875rem;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.125rem;--text-lg: 1.3125rem;--text-xl: 1.625rem;--text-2xl: 2.125rem;--text-3xl: 2.75rem;--text-4xl: 3.75rem;--leading-tight: 1.08;--leading-snug: 1.3;--leading-normal: 1.55;--leading-relaxed: 1.72;--tracking-display: -.045em;--tracking-tight: -.025em;--tracking-label: .08em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--measure: 40rem;--measure-wide: 58rem;--bar-height: 3.5rem;--radius: 0px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: linear(0, .009, .035 2.1%, .141 4.4%, .723 12.9%, .938 16.7%, 1.017 19.4%, 1.067, 1.099 24.3%, 1.111 26.2%, 1.106, 1.087 31.1%, 1.017 38.1%, .989 42.5%, .983 45.5%, .985 50.8%, 1.002 64.5%, 1);--dur-instant: 90ms;--dur-fast: .15s;--dur-base: .22s;--dur-slow: .36s;--dur-page: .46s;--dur-loop: .9s;--dur-loop-slow: 1.1s;--focus-ring: 0 0 0 2px var(--surface-raised), 0 0 0 4px var(--accent);--z-bar: 20;--z-overlay: 50;--z-tooltip: 60}@media(prefers-reduced-motion:reduce){:root{--dur-instant: 0ms;--dur-fast: 0ms;--dur-base: 0ms;--dur-slow: 0ms;--dur-page: 0ms;--dur-loop: 0ms;--dur-loop-slow: 0ms}}:root{--background: var(--surface-page);--foreground: var(--ink-1);--card: var(--surface-raised);--card-foreground: var(--ink-1);--popover: var(--surface-raised);--popover-foreground: var(--ink-1);--primary: var(--accent);--primary-foreground: var(--ink-inverse);--secondary: var(--surface-sunken);--secondary-foreground: var(--ink-1);--muted: var(--surface-sunken);--muted-foreground: var(--ink-2);--accent-foreground: var(--ink-inverse);--destructive: var(--negative);--destructive-foreground: var(--ink-inverse);--border: var(--rule-1);--input: var(--rule-2);--ring: var(--accent);--success: var(--positive);--caution: var(--attention);--axis: var(--axis-line);--sl-font: var(--font-sans);--sl-font-mono: var(--font-mono)}*,*:before,*:after{box-sizing:border-box}html{color-scheme:light;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--bar-height) + var(--space-4))}body{margin:0;min-height:100dvh;background:var(--surface-page);color:var(--ink-1);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);font-feature-settings:"ss01","tnum" 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:clip}img,svg,video{display:block;max-width:100%}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit}::selection{background:var(--accent-tint);color:var(--ink-1)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--space-4);top:-4rem;z-index:100;padding:var(--space-2) var(--space-4);background:var(--ink-1);color:var(--ink-inverse);font-weight:700;text-decoration:none}.skip-link:focus{top:var(--space-2)}.kicker{margin:0;color:var(--ink-2);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;letter-spacing:var(--tracking-label);line-height:1.4;text-transform:uppercase}.kicker.axis:before{content:"";display:inline-block;width:14px;height:2px;margin-right:var(--space-2);background:var(--axis-line);vertical-align:middle}.display{margin:0;font-size:clamp(2.25rem,5.2vw,var(--text-4xl));font-weight:650;letter-spacing:var(--tracking-display);line-height:.98;text-wrap:balance}.title-1{margin:0;font-size:clamp(1.75rem,3.6vw,var(--text-2xl));font-weight:650;letter-spacing:-.035em;line-height:var(--leading-tight);text-wrap:balance}.title-2{margin:0;font-size:var(--text-lg);font-weight:650;letter-spacing:var(--tracking-tight);line-height:var(--leading-snug)}.lede{margin:0;max-width:62ch;color:var(--ink-2);font-size:var(--text-md);line-height:var(--leading-normal);text-wrap:pretty}.meta{color:var(--ink-2);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.02em}kbd,.kbd{display:inline-grid;place-items:center;min-width:1.35rem;height:1.35rem;padding:0 .3rem;border:1px solid var(--rule-2);border-bottom-width:2px;background:var(--surface-raised);color:var(--ink-2);font-family:var(--font-mono);font-size:.625rem;line-height:1}.btn{--btn-bg: var(--surface-raised);--btn-ink: var(--ink-1);--btn-rule: var(--rule-2);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:2.75rem;padding:0 var(--space-5);border:1px solid var(--btn-rule);background:var(--btn-bg);color:var(--btn-ink);font-size:var(--text-sm);font-weight:650;letter-spacing:-.005em;line-height:1;text-decoration:none;white-space:nowrap;cursor:pointer;user-select:none;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-instant) var(--ease-out),opacity var(--dur-fast) var(--ease-out)}.btn:hover{background:color-mix(in srgb,var(--btn-bg) 92%,var(--ink-1))}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.4;cursor:not-allowed}.btn.primary{--btn-bg: var(--accent);--btn-ink: var(--ink-inverse);--btn-rule: var(--accent)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.positive{--btn-bg: var(--positive);--btn-ink: var(--ink-inverse);--btn-rule: var(--positive)}.btn.positive:hover:not(:disabled){background:color-mix(in srgb,var(--positive) 86%,black)}.btn.ghost{--btn-bg: transparent;--btn-rule: transparent;color:var(--ink-2)}.btn.ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--ink-1)}.btn.small{min-height:2.25rem;padding:0 var(--space-3);font-size:var(--text-xs)}.btn.large{min-height:3.25rem;padding:0 var(--space-6);font-size:var(--text-base)}.btn .kbd{margin-left:var(--space-1);border-color:color-mix(in srgb,currentColor 35%,transparent);background:transparent;color:inherit;opacity:.8}@media(hover:none)and (pointer:coarse){.btn .kbd{display:none}}.icon-btn{display:inline-grid;place-items:center;width:2.5rem;height:2.5rem;border:1px solid transparent;background:transparent;color:var(--ink-2);cursor:pointer;text-decoration:none;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.icon-btn:hover{background:var(--surface-hover);color:var(--ink-1)}.icon-btn[aria-pressed=true]{background:var(--ink-1);color:var(--ink-inverse)}.link{color:var(--accent);font-weight:600;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}.link:hover{text-decoration-thickness:2px}.arrow-link{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--accent);font-weight:650;text-decoration:none}.arrow-link .arrow{transition:transform var(--dur-fast) var(--ease-out)}.arrow-link:hover .arrow{transform:translate(3px)}.page{width:min(100% - 2 * var(--space-5),var(--measure-wide));margin-inline:auto;padding-block:var(--space-10) var(--space-20)}.page.narrow{width:min(100% - 2 * var(--space-5),46rem)}.page-head{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4);margin-bottom:var(--space-10)}.section{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-5);margin-top:var(--space-16)}.section-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:var(--space-3)}.card{border:1px solid var(--rule-1);background:var(--surface-raised)}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.02em}.crumbs a{color:var(--ink-2);text-decoration:none}.crumbs a:hover{color:var(--accent)}.crumbs .sep{color:var(--rule-2)}.lesson-shell{min-height:100dvh}.lesson-stage{width:min(100% - 2 * var(--space-5),44rem);margin-inline:auto;padding:var(--space-10) 0 calc(var(--space-20) + 5rem)}.lesson-header{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3);margin-bottom:var(--space-10);padding-bottom:var(--space-6);border-bottom:1px solid var(--rule-1)}.lesson-header h1{font-size:clamp(1.875rem,4.4vw,2.625rem)}.lesson-header .boundary{margin:0;color:var(--ink-2);font-size:var(--text-xs);line-height:var(--leading-normal)}.lesson-header .boundary .axis{display:inline-block;width:14px;height:2px;margin-right:var(--space-2);background:var(--axis-line);vertical-align:middle}.lesson-header .boundary code{padding:0 .3em;border:1px solid var(--rule-1);background:var(--wb-sand);font-family:var(--font-mono);font-size:.9em}.lesson-fallback-nav{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--rule-1)}.is-playing~.lesson-fallback-nav{display:none}@media(max-width:48rem){.lesson-fallback-nav .btn{flex:1 1 100%;min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;justify-content:flex-start;text-align:left}}.prose{color:var(--ink-1);font-size:1.0625rem;line-height:var(--leading-relaxed);overflow-wrap:break-word}.prose>*+*,.prose section>*+*{margin-top:1.05em}.prose p,.prose li{text-wrap:pretty}.prose>:where(p,ul,ol,blockquote),.prose section>:where(p,ul,ol,blockquote),.prose .concept-reveal>:where(p,ul,ol,blockquote){max-width:68ch}.prose :where(p,ul,ol,blockquote){margin-bottom:0}.prose :where(h2,h3,h4){margin:0;color:var(--ink-1);font-weight:650;text-wrap:balance;scroll-margin-top:calc(var(--bar-height) + var(--space-6))}.prose h2{font-size:var(--text-xl);letter-spacing:-.03em;line-height:1.15}.prose h3{font-size:var(--text-lg);letter-spacing:var(--tracking-tight);line-height:var(--leading-snug)}.prose h4{font-size:var(--text-md);letter-spacing:-.015em}.prose :where(h2,h3,h4)+*{margin-top:.7em}.prose *+:where(h2,h3){margin-top:2em}.prose a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.16em;transition:text-decoration-thickness var(--dur-fast) var(--ease-out)}.prose a:hover{text-decoration-thickness:2px}.prose strong{font-weight:700}.prose :where(ul,ol){padding-left:1.4em}.prose li+li{margin-top:.4em}.prose ul>li::marker{color:var(--ink-3)}.prose ol>li::marker{color:var(--ink-2);font-family:var(--font-mono);font-size:.8em}.prose :not(pre)>code{padding:.08em .32em;border:1px solid var(--rule-1);background:var(--wb-sand);color:var(--ink-1);font-family:var(--font-mono);font-size:.8em;overflow-wrap:anywhere}.prose blockquote{margin-inline:0;padding:var(--space-3) var(--space-4);border-left:3px solid var(--accent);background:var(--accent-wash);color:var(--ink-1)}.prose blockquote>*+*{margin-top:.6em}.prose hr{height:1px;border:0;background:var(--rule-1)}.prose .table-scroll{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;border:1px solid var(--rule-1);background:var(--surface-raised)}.prose .table-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.prose .table-scroll table{width:100%;min-width:min(var(--table-min-width, 30rem),100vw);border-collapse:collapse;font-size:var(--text-sm);line-height:var(--leading-normal)}.prose .table-scroll :is(th,td){padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--rule-1);text-align:left;vertical-align:top}.prose .table-scroll th{background:var(--surface-sunken);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.prose .table-scroll tr:last-child td{border-bottom:0}.prose .table-scroll tbody tr:hover td{background:var(--surface-hover)}.prose pre:not(.expressive-code pre){padding:var(--space-4);overflow-x:auto;border:1px solid var(--wb-night-2);background:var(--wb-night);color:var(--wb-paper);font-family:var(--font-mono);font-size:.8rem;line-height:1.7}.prose .expressive-code{min-width:0;max-width:100%;margin-block:1.4em}.prose img{border:1px solid var(--rule-1)}.lesson-body .world{--world-width: min(100vw - 2 * var(--space-5), 60rem);width:var(--world-width);max-width:none;margin-inline:calc((100% - var(--world-width)) / 2)}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{to{opacity:0}}@keyframes slide-from-right{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:none}}@keyframes slide-to-left{to{opacity:0;transform:translate(-28px)}}@keyframes slide-from-left{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:none}}@keyframes slide-to-right{to{opacity:0;transform:translate(28px)}}.rise-in{animation:rise-in var(--dur-slow) var(--ease-out) both}::view-transition-group(*){animation-duration:var(--dur-page);animation-timing-function:var(--ease-out)}::view-transition-old(root){animation:var(--dur-fast) var(--ease-in) both fade-out}::view-transition-new(root){animation:var(--dur-page) var(--ease-out) var(--dur-instant) both rise-in}::view-transition-old(app-bar),::view-transition-new(app-bar),::view-transition-old(lesson-bar),::view-transition-new(lesson-bar){animation:none;mix-blend-mode:normal}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}*,*:before,*:after{animation-duration:.001ms!important;animation-delay:0s!important;transition-duration:.001ms!important;transition-delay:0s!important;scroll-behavior:auto!important}}.prose details.mermaid-source,.sl-markdown-content details.mermaid-source{margin:1rem 0 1.5rem;border:1px solid var(--rule-1);border-radius:0;background:var(--surface-page)}.prose details.mermaid-source>summary,.sl-markdown-content details.mermaid-source>summary{min-height:2.75rem;padding:.75rem 1rem;color:var(--ink-2);font-size:.78rem;font-weight:700;cursor:pointer}.prose details.mermaid-source[open]>summary,.sl-markdown-content details.mermaid-source[open]>summary{border-bottom:1px solid var(--rule-1);color:var(--accent)}.prose details.mermaid-source>pre,.sl-markdown-content details.mermaid-source>pre{margin:0}
