/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--math-fade:0px}}}@layer theme{:host,:root{--font-sans:var(--font-inter),ui-sans-serif,system-ui,sans-serif;--font-serif:var(--font-newsreader),"Iowan Old Style",Georgia,serif;--font-mono:var(--font-jetbrains-mono),ui-monospace,SFMono-Regular,Menlo,monospace;--spacing:.25rem;--container-2xl:42rem;--font-weight-medium:500;--leading-relaxed:1.625;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-inter),ui-sans-serif,system-ui,sans-serif;--default-mono-font-family:var(--font-jetbrains-mono),ui-monospace,SFMono-Regular,Menlo,monospace}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--bar-h) + var(--s-5))}body,html{background:var(--canvas)}body{color:var(--text);font:400 var(--step-0) /var(--lh-body) var(--font-serif);letter-spacing:var(--track-0);font-optical-sizing:auto;font-kerning:normal;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;overflow-x:clip}::selection{background:var(--sel);color:var(--text-strong)}a{color:var(--accent)}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-1)}code,kbd,pre,samp{font-family:var(--font-mono)}h1,h2,h3,h4{color:var(--text-strong)}}@layer components{.label,.micro{font:600 var(--step--2) /1.3 var(--font-sans);letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--text-muted);text-wrap:balance}.ui{font:400 var(--step--1) /var(--lh-ui) var(--font-sans);letter-spacing:var(--track--1)}.tabular{font-variant-numeric:tabular-nums lining-nums}.muted{color:var(--text-muted)}.num{color:var(--accent);font-variant-numeric:tabular-nums lining-nums}.btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--control-h);padding:0 var(--s-4);border:var(--rule) solid transparent;border-radius:var(--r-1);color:var(--text);font:500 var(--step--1) /1 var(--font-sans);letter-spacing:var(--track--1);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease);background:0 0;text-decoration:none;display:inline-flex}.btn svg{flex-shrink:0;width:1rem;height:1rem}.btn:hover{background:var(--raised);color:var(--text-strong)}.btn:active{background:var(--sink)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--text-strong);color:var(--canvas)}.btn-primary:hover{background:var(--text);color:var(--canvas)}.btn-primary:active{background:var(--text-strong);color:var(--canvas)}.btn-outline,.btn-secondary{border-color:var(--line-strong)}.btn-danger{color:var(--danger)}.btn-sm{min-height:var(--target);padding:0 var(--s-3)}.btn-lg{min-height:2.75rem;padding:0 var(--s-5)}.btn-icon-lg,.btn-icon-md,.btn-icon-sm{width:var(--control-h);padding:0}.nav{z-index:40;width:var(--nav-w);gap:var(--s-5);padding:var(--s-5) var(--s-4) var(--s-5) var(--s-5);background:var(--canvas);border-right:var(--rule) solid var(--line);overscroll-behavior:contain;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto}.brand,.nav{flex-direction:column}.brand{gap:var(--s-1);text-decoration:none;display:inline-flex}.brand,.brand:hover{color:var(--text-strong)}.brand-name{font:600 var(--step-1) /var(--lh-tight) var(--font-serif);letter-spacing:var(--track-1);text-wrap:balance}.chapter-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.chapter-link{align-items:baseline;gap:var(--s-2);min-height:2rem;padding:var(--s-1) var(--s-2);margin:0 calc(var(--s-2) * -1);border-radius:var(--r-1);font:400 var(--step--1) /var(--lh-ui) var(--font-sans);letter-spacing:var(--track--1);color:var(--text-muted);transition:color var(--dur-1) var(--ease),background-color var(--dur-1) var(--ease);grid-template-columns:1.5rem minmax(0,1fr);text-decoration:none;display:grid}.chapter-link:hover{color:var(--text-strong);background:var(--raised)}.chapter-link[aria-current=page]{color:var(--accent);font-weight:500}.chapter-link .n{font-variant-numeric:tabular-nums lining-nums}.nav-sections{margin:var(--s-1) 0 var(--s-2);padding:0 0 0 calc(1.5rem + var(--s-2));list-style:none}.nav-sections a{min-height:var(--target);padding:var(--s-1) 0;font:400 var(--step--1) /var(--lh-ui) var(--font-sans);letter-spacing:var(--track--1);color:var(--text-muted);transition:color var(--dur-1) var(--ease);grid-template-columns:2rem minmax(0,1fr);align-items:baseline;text-decoration:none;display:grid}.nav-sections a>:only-child{grid-column:1/-1}.nav-sections a:hover,.nav-sections a[aria-current=location]{color:var(--text-strong)}.nav-sections a[aria-current=location]{font-weight:500}.nav-sections .n{font-variant-numeric:tabular-nums lining-nums}.nav-foot{gap:var(--s-3);padding-top:var(--s-4);border-top:var(--rule) solid var(--line);flex-direction:column;margin-top:auto;display:flex}.nav-foot a{align-items:center;gap:var(--s-2);min-height:var(--target);text-decoration:none;display:inline-flex}.nav-foot svg{width:1rem;height:1rem}.search-bar{align-items:center;gap:var(--s-2);width:100%;min-height:var(--control-h);padding:0 var(--s-3);border:var(--rule) solid var(--line-strong);border-radius:var(--r-1);background:var(--surface);color:var(--text-muted);font:400 var(--step--1) /1 var(--font-sans);letter-spacing:var(--track--1);cursor:pointer;transition:color var(--dur-1) var(--ease);display:flex}.search-bar:hover{color:var(--text-strong)}.search-bar svg{flex-shrink:0;width:1rem;height:1rem}.search-bar kbd{font:500 var(--step--2) /1 var(--font-sans);letter-spacing:var(--track--2);margin-left:auto}.bar{z-index:30;height:var(--bar-h);padding:0 var(--s-3) 0 var(--gutter);background:var(--canvas);border-bottom:var(--rule) solid var(--line);position:sticky;top:0}.bar,.crumbs{align-items:center;gap:var(--s-2);display:flex}.crumbs{min-width:0;font:400 var(--step--1) /1 var(--font-sans);letter-spacing:var(--track--1);white-space:nowrap;flex:1}.crumbs,.crumbs a{color:var(--text-muted)}.crumbs a{min-height:var(--target);align-items:center;text-decoration:none;display:inline-flex}.crumbs a:hover{color:var(--text-strong)}.crumbs .sep{color:var(--text-muted)}.crumbs .here{color:var(--text-strong);text-overflow:ellipsis;min-width:0;overflow:hidden}.crumbs .here .num{margin-right:.4em}.running-head{display:contents}@media (max-width:639px){.running-head{display:none}}.bar-tools{align-items:center;gap:var(--s-1);margin-left:auto;display:flex}.drawer{z-index:50;pointer-events:none;position:fixed;inset:0}.drawer[data-open=true]{pointer-events:auto}.drawer-scrim{background:var(--scrim);cursor:default;opacity:0;transition:opacity var(--dur-2) var(--ease);border:0;position:absolute;inset:0}.drawer[data-open=true] .drawer-scrim{opacity:1}.drawer .nav{max-width:85vw;transition:translate var(--dur-2) var(--ease);position:absolute;translate:-100%}.drawer[data-open=true] .nav{translate:0}.page{min-height:100dvh}@media (min-width:1024px){.page{padding-left:var(--nav-w)}}.column{width:100%;max-width:calc(var(--measure) + 2 * var(--gutter));padding:0 var(--gutter);margin:0 auto}.column:focus{outline:none}.opener{padding:var(--s-8) 0 var(--s-6)}.opener-crumbs{align-items:center;gap:var(--s-1) var(--s-2);flex-wrap:wrap;margin:0;display:flex}.opener-crumbs a{min-height:var(--target);align-items:center;text-decoration:none;display:inline-flex}.opener-crumbs a:hover{text-underline-offset:.2em;text-decoration:underline}.chapter-no{margin:var(--s-7) 0 var(--s-3)}.chapter-title{font:600 var(--step-4) /var(--lh-tight) var(--font-serif);letter-spacing:var(--track-4);text-wrap:balance;margin:0}.opener-sub{margin:var(--s-4) 0 0;color:var(--text-muted);text-wrap:pretty;font-style:italic}.opener-meta{align-items:center;gap:var(--s-1) var(--s-4);margin:var(--s-5) 0 0;color:var(--text-muted);flex-wrap:wrap;display:flex}.opener-meta a{align-items:center;gap:var(--s-1);min-height:var(--target);text-decoration:none;display:inline-flex}.opener-meta a:hover{text-underline-offset:.2em;text-decoration:underline}.opener-meta svg{width:1rem;height:1rem}.chapter-outline{margin:var(--s-6) 0 0;padding:var(--s-4) 0 var(--s-2);border-top:var(--rule) solid var(--line-strong)}.chapter-outline ol{margin:0;padding:0;list-style:none}.chapter-outline a{grid-template-columns:var(--label-col) minmax(0,1fr);min-height:2rem;padding:var(--s-1) 0;color:var(--text);font-size:var(--step-0s);align-items:baseline;text-decoration:none;display:grid}.chapter-outline a:hover{color:var(--accent)}.chapter-outline .back{gap:0 var(--s-4);margin-top:var(--s-2);padding-top:var(--s-2);border-top:var(--rule) solid var(--line);flex-wrap:wrap;display:flex}.chapter-outline .back a{color:var(--text-muted);font:400 var(--step--1) /var(--lh-ui) var(--font-sans);letter-spacing:var(--track--1);grid-template-columns:none;display:inline-flex}.chapter-outline .back a:hover{color:var(--accent)}.prose{max-width:var(--measure);font-feature-settings:"kern","liga","lnum";-webkit-hyphens:manual;hyphens:manual}.prose :is(p,ul,ol,blockquote){margin:0 0 1em}.prose>:first-child{margin-top:0}.prose h2{margin:var(--s-9) 0 var(--s-5);font:600 var(--step-3) /var(--lh-head) var(--font-serif);letter-spacing:var(--track-3);text-wrap:balance;position:relative}.prose h2:has(>.sec-num){grid-template-columns:max-content minmax(0,1fr);column-gap:.45em;display:grid}.prose h2 .sec-num{color:var(--accent);font-feature-settings:"lnum","tnum"}.prose h3{margin:var(--s-7) 0 var(--s-3);font:600 var(--step-1) /1.3 var(--font-serif);letter-spacing:var(--track-1);position:relative}@media (max-width:639px){.prose h2#mini-project{row-gap:var(--s-1);grid-template-columns:minmax(0,1fr)}}.prose h4{margin:var(--s-6) 0 var(--s-2);font:600 var(--step-0) /1.4 var(--font-serif)}.prose strong{color:var(--text-strong);font-weight:600}.prose a{text-decoration-line:underline;text-decoration-thickness:var(--rule);text-underline-offset:.18em}.prose .anchor{color:var(--text-muted);opacity:0;transition:opacity var(--dur-1) var(--ease);padding-right:.35em;font-weight:400;text-decoration:none;position:absolute;right:100%}.prose .anchor:focus-visible,.prose :is(h2,h3):hover .anchor{opacity:1}.prose .box .anchor{display:none}@media (max-width:900px){.prose .anchor{display:none}}.prose ul{padding-left:1.2em;list-style:outside}.prose ol{padding-left:1.5em;list-style:decimal}.prose li+li{margin-top:.3em}.prose li>:is(p,ul,ol){margin:.3em 0 0}.prose li::marker{color:var(--text-muted);font-feature-settings:"lnum","tnum"}.prose .contains-task-list{padding-left:0;list-style:none}.prose .task-list-item input{width:1rem;height:1rem;margin:0 var(--s-2) 0 0;vertical-align:-.1em;accent-color:var(--accent)}.prose code{font-feature-settings:"calt" 0;overflow-wrap:break-word;font-size:.84em}.nobr{white-space:nowrap}.prose pre{margin:var(--s-5) 0;padding:var(--s-4) var(--s-5);background:var(--sink);border-radius:var(--r-1);font:400 var(--step-code) /1.55 var(--font-mono);color:var(--text);tab-size:4;overflow-x:auto}.prose pre code{font-size:inherit;overflow-wrap:normal}.prose pre span[style*=token-comment]{font-style:italic}.prose pre span[style*=token-keyword]{font-weight:600}.prose .table-scroll{margin:var(--s-6) 0;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font:400 var(--step-0s) /1.45 var(--font-serif);font-feature-settings:"lnum","tnum";border-top:var(--rule-heavy) solid var(--line-strong);border-bottom:var(--rule-heavy) solid var(--line-strong)}.prose th{text-align:left;vertical-align:bottom;font:600 var(--step--1) /1.35 var(--font-sans);letter-spacing:var(--track--1);color:var(--text-strong);border-bottom:var(--rule) solid var(--line-strong)}.prose td,.prose th{padding:var(--s-2) var(--s-3)}.prose td{vertical-align:top}.prose tbody tr:first-child td{padding-top:var(--s-3)}.prose tbody tr:last-child td{padding-bottom:var(--s-3)}.prose :is(th,td):first-child{padding-left:0}.prose :is(th,td):last-child{padding-right:0}.prose td code{overflow-wrap:anywhere;font-size:.86em}.prose table.wide:has(tr>:nth-child(4)){min-width:38rem}.prose figure{margin:var(--s-6) 0}.prose figure .table-scroll,.prose figure pre{margin:0}.prose figcaption{margin:0 0 var(--s-3);font-size:var(--step-0s);text-wrap:pretty;line-height:1.45}.prose figure.fig-figure figcaption{margin:var(--s-3) 0 0}.prose :is(figure.fig-figure img,img[src*=figures\/]){width:100%;height:auto;margin:0 auto;display:block}.dark .prose :is(figure.fig-figure img,img[src*=figures\/]){filter:invert(.89)hue-rotate(180deg)}.prose .fig-zoom{cursor:zoom-in;display:block}@media (max-width:639px){.prose figure.fig-figure{overflow-x:auto}.prose figure.fig-figure img{min-width:38rem}}.prose .cap-label{font:600 var(--step--1) /1 var(--font-sans);letter-spacing:var(--track--1);color:var(--text-strong);margin-right:.35em}.prose .is-clipped{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - var(--fade)),transparent);mask-image:linear-gradient(to right,#000 calc(100% - var(--fade)),transparent)}.box{margin:var(--s-6) 0;padding:var(--s-5) var(--s-5) var(--s-4);background:var(--surface);border:var(--rule) solid var(--line);border-radius:var(--r-1);font-size:var(--step-0s)}@media (max-width:639px){.box{padding:var(--s-4)}.box-meta{margin-left:0}}.box>:last-child,.dz>:last-child,.ex-body>:last-child{margin-bottom:0}.box-label,.prose .box-worked h3 .box-label{align-items:baseline;gap:var(--s-1) var(--s-2);margin:0 0 var(--s-3);font:600 var(--step--2) /1.3 var(--font-sans);letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--text-muted);flex-wrap:wrap;display:flex}.box-meta{letter-spacing:var(--track--2);text-transform:none;margin-left:auto;font-weight:400}.box-title,.prose .box-worked h3 .box-title{margin:0 0 var(--s-3);font:600 var(--step-1) /1.3 var(--font-serif);letter-spacing:var(--track-1);color:var(--text-strong);display:block}.prose .box-worked h3{margin:0 0 var(--s-4)}.prose .box-worked h3 .box-title{margin:0}.box pre{margin:var(--s-4) 0}.prose .panel{margin:0 0 var(--s-6);padding:var(--s-4) 0 var(--s-2);border-bottom:var(--rule) solid var(--line);font-size:var(--step-0s)}.dz,.prose .panel{border-top:var(--rule) solid var(--line)}.dz{margin:var(--s-4) 0 0}.dz>summary{align-items:baseline;gap:var(--s-2);min-height:2.25rem;padding:var(--s-2) 0;cursor:pointer;color:var(--text-muted);font:400 var(--step--1) /var(--lh-ui) var(--font-sans);letter-spacing:var(--track--1);transition:color var(--dur-1) var(--ease);list-style:none;display:flex}.dz>summary::-webkit-details-marker{display:none}.dz>summary:before{content:"▸";width:.9em;transition:rotate var(--dur-2) var(--ease);flex-shrink:0;display:inline-block}.dz[open]>summary:before{rotate:90deg}.dz>summary:hover,.dz[open]>summary{color:var(--text-strong)}.dz .dz-kind{font:600 var(--step--2) /1.3 var(--font-sans);letter-spacing:var(--track-micro);text-transform:uppercase}.dz>:not(summary){margin-left:1.15rem}.dz[open]{padding-bottom:var(--s-3)}.dz>:not(summary):is(p,ul,ol){margin-bottom:.75em}.prose>.dz{font-size:var(--step-0s)}.prose>.dz-hint+.dz-hint,.prose>.dz-solution+.dz-solution{margin-top:0}.prose>.dz:has(+:not(.dz)){border-bottom:var(--rule) solid var(--line);margin-bottom:var(--s-6)}.exercise{grid-template-columns:var(--label-col) minmax(0,1fr);margin:0 0 var(--s-4);align-items:baseline;display:grid}.ex-num{font:600 var(--step--1) /1 var(--font-sans);letter-spacing:var(--track--1);color:var(--text-strong);font-variant-numeric:tabular-nums lining-nums}.ex-body{min-width:0}.ex-body>p{margin-bottom:.6em}.tier-head{align-items:baseline;gap:var(--s-3);padding-bottom:var(--s-2);border-bottom:var(--rule) solid var(--line);display:flex;margin:var(--s-7) 0 var(--s-4)!important}.tier-head .box-kind{font:600 var(--step--2) /1.3 var(--font-sans);letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--text-muted)}.tier-head .tier-name{font:600 var(--step-1) /1.3 var(--font-serif);letter-spacing:var(--track-1)}.review-q .dz{margin-top:var(--s-2)}.pager{gap:var(--s-4);margin:var(--s-9) 0 var(--s-8);padding-top:var(--s-5);border-top:var(--rule) solid var(--line-strong);grid-template-columns:1fr 1fr;display:grid}.pager a{gap:var(--s-1);min-height:2.75rem;color:var(--text-strong);flex-direction:column;text-decoration:none;display:flex}.pager a:hover .pager-title{color:var(--accent)}.pager .next{text-align:right;grid-column:2;align-items:flex-end}.pager a:only-child{grid-column:1/-1}.pager-title{font:600 var(--step-0s) /1.35 var(--font-serif);transition:color var(--dur-1) var(--ease)}.opener-meta,.pager{text-wrap:balance}.colophon{display:none}.titlepage{padding-block:var(--s-9) var(--s-8)}.text-link{align-items:center;gap:var(--s-2);min-height:var(--control-h);font:500 var(--step--1) /1 var(--font-sans);letter-spacing:var(--track--1);text-decoration:none;display:inline-flex}.text-link:hover{text-underline-offset:.2em;text-decoration:underline}.text-link svg{width:1rem;height:1rem}.book-title{margin:var(--s-4) 0 0;font:600 var(--step-5) /1.02 var(--font-serif);letter-spacing:var(--track-5);text-wrap:balance}.book-sub{margin:var(--s-5) 0 0;max-width:34em;font:italic 400 var(--step-1) /1.45 var(--font-serif);letter-spacing:var(--track-1);color:var(--text-muted);text-wrap:pretty}.actions{align-items:center;gap:var(--s-3) var(--s-5);margin:var(--s-6) 0 0;flex-wrap:wrap;display:flex}.book-toc{margin:var(--s-8) 0 0}.book-toc>h2{margin:0 0 var(--s-2)}.part{margin:var(--s-5) 0 0;padding-top:var(--s-3);border-top:var(--rule-heavy) solid var(--line-strong)}.part:first-of-type{border-top-width:var(--rule-heavy)}.toc-row{grid-template-columns:var(--label-col) minmax(0,1fr) auto;align-items:baseline;gap:0 var(--s-3);padding:var(--s-3) 0;border-bottom:var(--rule) solid var(--line);display:grid}.toc-row .n{font:600 var(--step-2) /1 var(--font-serif);color:var(--accent);font-feature-settings:"lnum","tnum"}.toc-row .t{font:600 var(--step-1) /1.3 var(--font-serif);letter-spacing:var(--track-1);color:var(--text-strong);text-decoration:none}.toc-row .t:hover{color:var(--accent)}.toc-row .m{color:var(--text-muted);white-space:nowrap}.toc-row ol{margin:var(--s-2) 0 0;grid-column:2/-1;padding:0;list-style:none}.toc-row li{font-size:var(--step-0s);line-height:1.6}.toc-row li a{color:var(--text);grid-template-columns:2.5em minmax(0,1fr);align-items:baseline;text-decoration:none;display:grid}.toc-row li a:hover{color:var(--accent)}.toc-row .links{gap:0 var(--s-4);margin-top:var(--s-2);flex-wrap:wrap;grid-column:2/-1;display:flex}.toc-row .links a{align-items:center;gap:var(--s-1);min-height:var(--target);text-decoration:none;display:inline-flex}.toc-row .links svg{width:1rem;height:1rem}.lock-note{margin:var(--s-7) 0 0;gap:var(--s-2);color:var(--text-muted);align-items:flex-start;max-width:36rem;display:flex}.lock-note svg{flex-shrink:0;width:1rem;height:1rem;margin-top:.15em}.plate-wrap{min-height:100dvh;padding:var(--s-8) var(--gutter);place-items:center;display:grid}.plate{width:100%;max-width:27rem;padding:var(--s-6);background:var(--surface);border:var(--rule) solid var(--line);border-radius:var(--r-1)}.plate .book-title{font-size:var(--step-4);letter-spacing:var(--track-4)}.plate-rule{margin:var(--s-5) 0;border:0;border-top:var(--rule) solid var(--line)}.field-label{margin:0 0 var(--s-2);display:block}.field{width:100%;height:2.75rem;padding:0 var(--s-3);background:var(--canvas);color:var(--text-strong);border:var(--rule) solid var(--line-strong);border-radius:var(--r-1);font:400 var(--step-0s) /1 var(--font-sans)}.field::placeholder{color:var(--text-muted)}.field:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.form-error{margin:var(--s-2) 0 0;color:var(--danger)}.corner{top:var(--s-3);right:var(--s-3);position:fixed}.reveal,[data-intro-eyebrow],[data-intro-headline]{opacity:0}@media (scripting:none){.reveal,[data-intro-eyebrow],[data-intro-headline]{opacity:1}}.prose mark,mark.hit{background:var(--sel);color:inherit;border-radius:var(--r-1);padding:0 .1em}.nav-drill{align-items:center}.nav-drill svg{width:1rem;height:1rem}.drill-start>ol,.drill-start>p:not(.box-label){margin:0 0 var(--s-4)}.drill-start>ol{padding-left:var(--s-5);list-style:decimal}.drill-start>ol>li+li{margin-top:var(--s-1)}.drill{padding-block:var(--s-7) var(--s-8)}.drill-head .chapter-title{margin-top:var(--s-3)}.drill-lede{margin:var(--s-4) 0 0;color:var(--text-muted);text-wrap:pretty}.drill-loading,.drill-tools{margin:var(--s-6) 0 0}.drill-tools{align-items:end;gap:var(--s-3);grid-template-columns:minmax(0,1fr);display:grid}.drill-final{grid-column:1/-1;min-height:2.75rem}.drill-tools-hint{grid-column:1/-1;margin:0}@media (min-width:640px){.drill-tools{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.drill-final{grid-column:auto}}.field:disabled{opacity:.5;cursor:not-allowed}.drill-banner{justify-content:space-between;align-items:center;gap:var(--s-2) var(--s-4);margin:var(--s-5) 0 0;padding:var(--s-2) 0;border-block:var(--rule) solid var(--line);flex-wrap:wrap;display:flex}.drill-banner strong{color:var(--text-strong);font-weight:600}.drill-q{font:600 var(--step-2) /var(--lh-head) var(--font-serif);letter-spacing:var(--track-2);color:var(--text-strong);text-wrap:balance;margin:0}.drill-q:focus{outline:none}.drill-answer-label{margin-top:var(--s-5)}.drill-answer{height:auto;min-height:calc(var(--s-8) * 2);padding:var(--s-3);font:400 var(--step-0s) /var(--lh-body) var(--font-serif);resize:vertical;display:block}.drill-hint{margin:var(--s-2) 0 0}.drill-row{align-items:center;gap:var(--s-3);margin:var(--s-4) 0 0;flex-wrap:wrap;display:flex}.drill-caught-line{margin:var(--s-3) 0 0}.drill-compare{gap:var(--s-4);margin:var(--s-5) 0 0;display:grid}@media (min-width:640px){.drill-compare{gap:var(--s-5);grid-template-columns:repeat(2,minmax(0,1fr))}}.drill-pane{padding-top:var(--s-3);border-top:var(--rule) solid var(--line)}.drill-reveal>.drill-pane{margin-top:var(--s-4)}.drill-pane>h3{margin:0 0 var(--s-2)}.drill-pane p{margin:0}.drill-yours{white-space:pre-wrap;overflow-wrap:anywhere}.drill-points{padding-left:var(--s-5);margin:0;list-style:decimal}.drill-points li+li{margin-top:var(--s-2)}.drill-points li::marker{color:var(--accent);font-variant-numeric:tabular-nums lining-nums}.drill-more{margin:var(--s-3) 0 0}.drill-grade{z-index:1;gap:var(--s-2);margin:var(--s-5) 0 0;padding:var(--s-3) 0 max(var(--s-3),env(safe-area-inset-bottom));background:var(--surface);border-top:var(--rule) solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));display:grid;position:sticky;bottom:0}.drill-grade>.label{grid-column:1/-1}.drill-grade .btn{padding:0 var(--s-2)}.drill-grade-next{justify-content:space-between;align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.drill-key{min-width:var(--s-4);height:var(--s-4);padding:0 var(--s-1);border:var(--rule) solid var(--line-strong);border-radius:var(--r-1);font:500 var(--step--2) /1 var(--font-mono);place-items:center;display:inline-grid}.drill-progress{margin:var(--s-7) 0 0;padding-top:var(--s-3);border-top:var(--rule-heavy) solid var(--line-strong)}.drill-sum{margin:var(--s-2) 0 0}.drill-tier{padding:var(--s-3) 0;border-bottom:var(--rule) solid var(--line)}.drill-tier-head{justify-content:space-between;gap:var(--s-1) var(--s-3);flex-wrap:wrap;margin:0;display:flex}.drill-bar{height:var(--s-2);margin-top:var(--s-2);background:var(--raised);border:var(--rule) solid var(--line);border-radius:var(--r-1);display:flex;overflow:hidden}.drill-bar>span{transition:width var(--dur-2) var(--ease);flex:none;display:block}.drill-bar>[data-k=mastered]{background:var(--accent)}.drill-bar>[data-k=learning]{background:var(--line-strong)}.drill-confirm{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:inline-flex}.drill-notice{margin:var(--s-3) 0 0}.practice{padding-block:var(--s-7) var(--s-8)}.pfam-group{margin:var(--s-7) 0 0}.pfam-head{justify-content:space-between;align-items:baseline;gap:var(--s-2) var(--s-4);flex-wrap:wrap;display:flex}.pfam-title{font:600 var(--step-2) /var(--lh-head) var(--font-serif);letter-spacing:var(--track-2);margin:0}.pfam-blurb{margin:var(--s-2) 0 0}.pfam-list{margin:var(--s-4) 0 0;border-top:var(--rule) solid var(--line);padding:0;list-style:none}.pfam-list>li{border-bottom:var(--rule) solid var(--line)}.pfam-link{gap:var(--s-1);padding:var(--s-4) var(--s-2);color:var(--text);border-radius:var(--r-1);transition:background-color var(--dur-1) var(--ease);text-decoration:none;display:grid}.pfam-link:hover{background:var(--raised);color:var(--text)}.pfam-name{font:600 var(--step-0s) /var(--lh-head) var(--font-serif);color:var(--text-strong)}.pfam-meta{justify-content:space-between;gap:var(--s-2);margin-top:var(--s-1);flex-wrap:wrap;display:flex}.pbadge{color:var(--text-muted)}.pbadge.learning{color:var(--text)}.pbadge.mastered{color:var(--ok);font-weight:600}.problem .drill-head .label a{color:inherit}.pr-figure,.pr-statement{margin:var(--s-5) 0 0}.pr-figure{color:var(--text-strong);overflow-x:auto}.pr-figure svg{max-width:100%;height:auto;display:block}.pfig .w{fill:none}.pfig .box,.pfig .w{stroke:currentColor;stroke-width:1.5px}.pfig .box{fill:var(--surface)}.pfig .tl{fill:var(--sel)}.pfig .term,.pfig .tl{stroke:currentColor;stroke-width:1.5px}.pfig .term{fill:var(--canvas)}.pfig .dot,.pfig .t{fill:currentColor}.pfig .t{font:500 13px var(--font-sans)}.pfig .t.s{fill:var(--text-muted);font-size:11.5px}.pfig .med{stroke:currentColor;stroke-width:1px}.pfig .med.c{fill:var(--canvas)}.pfig .med.l0{fill:var(--sel)}.pfig .med.l1{fill:var(--raised)}.pfig .med.s{fill:var(--sink)}.pfig .arrow{marker-end:url(#ah)}.pr{margin:var(--s-5) 0 0}.pr-clock{margin:0 0 var(--s-3)}.pr-parts{border-top:var(--rule) solid var(--line);margin:0;padding:0;list-style:none}.pr-part{padding:var(--s-4) 0 var(--s-4) var(--s-3);border-bottom:var(--rule) solid var(--line);border-left:var(--rule-heavy) solid transparent}.pr-part.is-ok{border-left-color:var(--ok)}.pr-part.is-bad{border-left-color:var(--warning)}.pr-q{gap:var(--s-2);grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;display:grid}.pr-id{font:600 var(--step--1) /1 var(--font-sans);color:var(--accent)}.pr-prompt{color:var(--text-strong)}.pr-input{margin:var(--s-3) 0 0;width:100%;max-width:24rem;font-family:var(--font-mono)}.pr-choices{gap:var(--s-2);margin:var(--s-3) 0 0;flex-wrap:wrap;display:flex}.pr-choice{align-items:center;gap:var(--s-2);min-height:var(--control-h);padding:0 var(--s-3);border:var(--rule) solid var(--line-strong);border-radius:var(--r-1);cursor:pointer;display:inline-flex}.pr-choice.on{border-color:var(--accent);color:var(--text-strong);background:var(--sel)}.pr-choice input{accent-color:var(--accent)}.pr-under{gap:var(--s-2);margin:var(--s-2) 0 0;display:grid}.pr-verdict{gap:var(--s-2);align-items:flex-start;margin:0;display:flex}.pr-verdict svg{flex-shrink:0;width:1.1rem;height:1.1rem;margin-top:.1rem}.pr-verdict.ok{color:var(--ok)}.pr-verdict.bad{color:var(--warning)}.pr-hintbtn{justify-self:start}.pr-hint,.pr-show{color:var(--text);margin:0}.pr-show .label{margin-right:var(--s-2)}.pr-actions{margin:var(--s-5) 0 0;gap:var(--s-3);display:grid}.pr-conf{border:0;margin:0;padding:0}.pr-seg{margin-top:var(--s-2);border:var(--rule) solid var(--line-strong);border-radius:var(--r-1);flex-wrap:wrap;overflow:hidden}.pr-seg,.pr-segbtn{display:inline-flex}.pr-segbtn{min-height:var(--control-h);padding:0 var(--s-4);cursor:pointer;align-items:center}.pr-segbtn+.pr-segbtn{border-left:var(--rule) solid var(--line-strong)}.pr-segbtn input{opacity:0;pointer-events:none;position:absolute}.pr-segbtn.on{background:var(--text-strong);color:var(--canvas)}.pr-segbtn:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:-2px}.pr-buttons{gap:var(--s-2);flex-wrap:wrap;display:flex}.pr-need{margin:0}.pr-score{margin:var(--s-5) 0 0;padding-top:var(--s-3);border-top:var(--rule) solid var(--line)}.pr-score p{margin:0 0 var(--s-2)}.pr-warn{color:var(--warning)}.pr-solution{margin:var(--s-6) 0 0;padding-top:var(--s-4);border-top:var(--rule-heavy) solid var(--line-strong)}.pr-steps{margin:var(--s-3) 0 0;padding-left:var(--s-5);list-style:decimal}.pr-steps>li{margin:0 0 var(--s-4)}.pr-steps>li::marker{color:var(--accent);font:600 var(--step--1) var(--font-sans)}.pr-steps p{margin:0 0 var(--s-2)}.pr-rub-h{margin:var(--s-5) 0 var(--s-2)}.pr-rubric{margin:0 0 var(--s-3);gap:var(--s-2);padding:0;list-style:none;display:grid}.pr-rubric li::marker{content:none}.prose .pr-rubric>li{padding-left:0}.pr-rubric label{gap:var(--s-2);cursor:pointer;align-items:flex-start;display:flex}.pr-rubric input{accent-color:var(--accent);margin-top:.2rem}.pr-learn{margin:var(--s-7) 0 0;padding-top:var(--s-3);border-top:var(--rule) solid var(--line)}.pr-learn ul{margin:var(--s-2) 0 0;padding-left:var(--s-5)}.pr-learn a{padding-block:var(--s-1);display:inline-block}.dv{margin:var(--s-5) 0 0}.dv-goal{padding:var(--s-4);border:var(--rule) solid var(--line);border-radius:var(--r-2);background:var(--surface)}.dv-goal .label{margin:0 0 var(--s-1)}.dv-goal .label+div{margin:0 0 var(--s-3)}.dv-goal .label+div:last-child{margin-bottom:0}.dv-steps{margin:var(--s-5) 0 0;padding-left:var(--s-5);gap:var(--s-4);list-style:decimal;display:grid}.dv-steps>li::marker{color:var(--accent);font:600 var(--step--1) var(--font-sans)}.dv-step{padding-left:var(--s-2);border-left:var(--rule-heavy) solid transparent}.dv-step.ok{border-left-color:var(--ok)}.dv-step.bad{border-left-color:var(--warning)}.dv-cue{color:var(--text-muted)}.dv-cue,.dv-line{margin:0 0 var(--s-2)}.dv-line p{margin:0}.dv-mark{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.dv-verdict{margin:0}.dv-verdict.ok{color:var(--ok)}.dv-verdict.bad{color:var(--warning)}.mk{margin:var(--s-5) 0 0}.mk-bar{top:var(--bar-h);z-index:5;gap:var(--s-2) var(--s-3);padding:var(--s-2) var(--s-3);background:var(--canvas);border:var(--rule) solid var(--line);border-radius:var(--r-2);flex-wrap:wrap;display:flex;position:sticky}.mk-bar,.mk-clock{align-items:center}.mk-clock{gap:var(--s-1);color:var(--text-strong);font-weight:600;display:inline-flex}.mk-clock svg{width:1rem;height:1rem}.mk-clock.over{color:var(--warning)}.mk-tabs{gap:var(--s-1);flex-wrap:wrap;flex:auto;display:flex}@media (max-width:639px){.mk-hand{order:2;margin-left:auto}.mk-tabs{flex-basis:100%;order:3}}.mk-summary{margin:var(--s-5) 0 0;padding:var(--s-4);border:var(--rule) solid var(--line);border-radius:var(--r-2);background:var(--surface)}.mk-summary p{margin:0 0 var(--s-3)}.mk-q{margin:var(--s-6) 0 0}.mk-item{margin:var(--s-5) 0 0;padding-top:var(--s-4);border-top:var(--rule) solid var(--line)}.mk-item>p.ui{margin:0 0 var(--s-2)}.mk-cardq{font:600 var(--step-0) /var(--lh-head) var(--font-serif);color:var(--text-strong)}.mk-text{width:100%;height:auto;padding:var(--s-2) var(--s-3);line-height:var(--lh-ui);resize:vertical;min-height:4.5rem}.mk-mark,.mk-text{margin:var(--s-3) 0 0}.mk-mark .label{margin:0 0 var(--s-2)}.mk-mark .dv-mark{margin-top:var(--s-3)}.mk-sol{margin:var(--s-3) 0 0}.mk-sol summary{cursor:pointer;color:var(--accent)}.mk-nav{justify-content:space-between;gap:var(--s-2);margin:var(--s-6) 0 0;display:flex}.mk-hist{border-collapse:collapse;width:100%;margin:var(--s-3) 0 0}.mk-hist td,.mk-hist th{text-align:left;padding:var(--s-2);border-bottom:var(--rule) solid var(--line)}.mk-hist th{color:var(--text-muted);font-weight:600}.today{margin:var(--s-6) 0 var(--s-7);padding:var(--s-5);border:var(--rule) solid var(--line);border-radius:var(--r-2);background:var(--surface)}.today-top{gap:var(--s-4);display:grid}@media (min-width:720px){.today-top{grid-template-columns:auto minmax(0,1fr);align-items:end}}.today-count{margin:var(--s-2) 0 0;font:600 var(--step-3) /var(--lh-tight) var(--font-serif);letter-spacing:var(--track-3)}.today-next{gap:var(--s-1) var(--s-3);padding:var(--s-3) var(--s-4);border:var(--rule) solid var(--line-strong);border-radius:var(--r-1);color:var(--text);grid-template-columns:minmax(0,1fr) auto;align-items:center;text-decoration:none;display:grid}.today-next:hover{background:var(--raised);color:var(--text)}.today-next .label{grid-column:1}.today-next-t{font:600 var(--step-0s) /var(--lh-head) var(--font-serif);color:var(--text-strong);grid-column:1}.today-next svg{width:1.25rem;height:1.25rem;color:var(--accent);grid-area:1/2/span 2}.today-grid{gap:var(--s-3);margin:var(--s-5) 0 0;display:grid}@media (min-width:640px){.today-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.today-card{gap:var(--s-1);padding:var(--s-3);border:var(--rule) solid var(--line);border-radius:var(--r-1);color:var(--text);text-decoration:none;display:grid}.today-card:hover{background:var(--raised);color:var(--text)}.today-card-t{font:600 var(--step-0s) /var(--lh-head) var(--font-serif);color:var(--text-strong)}.today-meter{height:var(--s-1);margin:var(--s-1) 0;border-radius:var(--r-1);background:var(--line);display:block;overflow:hidden}.today-meter>span{background:var(--text-muted);height:100%;display:block}.today-meter.v-ready>span{background:var(--ok)}.today-meter.v-nearly>span{background:var(--accent)}.today-foot{margin:var(--s-4) 0 0;text-wrap:pretty}.today-mist{margin:var(--s-5) 0 0}.today-mist ul{margin:var(--s-2) 0 0;padding-left:var(--s-5)}.today-plan{margin:var(--s-5) 0 0}.today-plan>ol{margin:var(--s-2) 0 0;gap:var(--s-3);padding:0;list-style:none;display:grid}.today-plan>ol>li{padding:var(--s-2) 0 0 var(--s-3);border-left:var(--rule-heavy) solid var(--line)}.today-plan>ol>li.now{border-left-color:var(--line-strong)}.today-day{font:600 var(--step--1) /1.3 var(--font-sans);color:var(--text-strong);margin:0}.today-plan ul{margin:var(--s-1) 0 0;padding-left:var(--s-4)}.today-when{color:var(--text-muted)}.mk-summary strong,.pr-score strong,.today-when{font-weight:600}.pr-solution h2.label{font:600 var(--step--2) /1.3 var(--font-sans);letter-spacing:var(--track-micro);text-transform:uppercase;color:var(--text-muted);margin:0}.pr-solution h2.pr-rub-h{margin:var(--s-5) 0 var(--s-2)}.pr-redo{margin:0 0 var(--s-3);padding:var(--s-2) var(--s-3);border-left:var(--rule-heavy) solid var(--warning);color:var(--text)}.today-card.wide{grid-column:1/-1}.dv-write{gap:var(--s-2);justify-items:start;display:grid}.dv-write .dv-need,.dv-write .mk-text{margin:0}.dv-yours{margin:0 0 var(--s-2);color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere}.dv-yours .label{margin-right:var(--s-2)}.dv-verdict{gap:var(--s-2);align-items:flex-start;display:flex}.dv-verdict svg{flex-shrink:0;width:1.1rem;height:1.1rem;margin-top:.1rem}.prose figure.fig-figure>p{margin:0}}@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.z-10{z-index:10}.z-\[70\]{z-index:70}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mt-2{margin-top:calc(var(--spacing) * 2)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.h-14{height:calc(var(--spacing) * 14)}.max-h-\[70vh\]{max-height:70vh}.min-h-0{min-height:0}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-md,.rounded-sm{border-radius:var(--r-1)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border{border-color:var(--line)}.bg-card{background-color:var(--surface)}.bg-muted{background-color:var(--raised)}.bg-scrim{background-color:var(--scrim)}.bg-transparent{background-color:#0000}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-\[12vh\]{padding-top:12vh}.text-left{text-align:left}.font-sans{font-family:var(--font-inter),ui-sans-serif,system-ui,sans-serif}.text-base{font-size:var(--step-0);line-height:var(--tw-leading,1.55);letter-spacing:var(--tw-tracking,var(--track-0))}.text-sm{font-size:var(--step--1);line-height:var(--tw-leading,1.5);letter-spacing:var(--tw-tracking,var(--track--1))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-destructive{color:var(--danger)}.text-foreground{color:var(--text)}.text-muted-foreground{color:var(--text-muted)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.invert{--tw-invert:invert(100%)}.filter,.invert{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.placeholder\:text-muted-foreground::placeholder{color:var(--text-muted)}@media (hover:hover){.hover\:bg-muted:hover{background-color:var(--raised)}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-2:focus{top:calc(var(--spacing) * 2)}.focus\:left-4:focus{left:calc(var(--spacing) * 4)}.focus\:z-50:focus{z-index:50}@media not all and (min-width:64rem){.max-lg\:hidden{display:none}}@media (min-width:40rem){.sm\:block{display:block}.sm\:inline{display:inline}.sm\:pt-\[15vh\]{padding-top:15vh}}@media (min-width:64rem){.lg\:hidden{display:none}}}:root{color-scheme:light;--hue:85;--acc-l:.5;--acc-c:.15;--acc-h:275;--canvas:oklch(.985 .006 var(--hue));--surface:oklch(.995 .004 var(--hue));--raised:oklch(.955 .009 var(--hue));--sink:oklch(.958 .008 var(--hue));--text-strong:oklch(.215 .014 var(--hue));--text:oklch(.285 .014 var(--hue));--text-muted:oklch(.47 .014 var(--hue));--line:oklch(.88 .01 var(--hue));--line-strong:oklch(.56 .012 var(--hue));--accent:oklch(var(--acc-l) var(--acc-c) var(--acc-h));--accent-hover:oklch(calc(var(--acc-l) - .07) var(--acc-c) var(--acc-h));--danger:oklch(50% .17 28);--ok:oklch(47% .11 150);--warning:oklch(52% .12 65);--sel:var(--accent)}@supports (color:color-mix(in lab,red,red)){:root{--sel:color-mix(in oklab,var(--accent) 16%,var(--surface))}}:root{--scrim:oklch(.2 .014 var(--hue))}@supports (color:color-mix(in lab,red,red)){:root{--scrim:color-mix(in oklab,oklch(.2 .014 var(--hue)) 40%,transparent)}}:root{--shiki-foreground:var(--text);--shiki-background:var(--sink);--shiki-token-keyword:var(--text-strong);--shiki-token-comment:var(--text-muted);--shiki-token-punctuation:var(--text-muted);--shiki-token-string:var(--text);--shiki-token-string-expression:var(--text);--shiki-token-constant:var(--text);--shiki-token-function:var(--text-strong);--shiki-token-parameter:var(--text);--shiki-token-link:var(--text);--step--2:.8125rem;--step--1:.875rem;--step-code:.9375rem;--step-0s:1.0625rem;--step-0:clamp(1.125rem,1.09rem + .16vw,1.1875rem);--step-1:clamp(1.25rem,1.2rem + .22vw,1.375rem);--step-2:clamp(1.5rem,1.42rem + .35vw,1.75rem);--step-3:clamp(1.75rem,1.6rem + .62vw,2.125rem);--step-4:clamp(2.25rem,1.95rem + 1.3vw,3.125rem);--step-5:clamp(2.625rem,2.15rem + 2.1vw,4rem);--track--2:.01em;--track--1:.005em;--track-0:0em;--track-1:-.006em;--track-2:-.012em;--track-3:-.017em;--track-4:-.022em;--track-5:-.027em;--track-micro:.085em;--lh-body:1.62;--lh-ui:1.45;--lh-head:1.2;--lh-tight:1.08;--r-1:4px;--r-2:8px;--rule:1px;--rule-heavy:1.5px;--s-1:.25rem;--s-2:.5rem;--s-3:.75rem;--s-4:1rem;--s-5:1.5rem;--s-6:2rem;--s-7:3rem;--s-8:4rem;--s-9:5.5rem;--measure:680px;--nav-w:16.5rem;--bar-h:3.25rem;--target:1.5rem;--control-h:2.25rem;--gutter:1rem;--label-col:3.5rem;--fade:3rem;--ease:cubic-bezier(.2,0,0,1)}:root[data-scheme=standard]{--dur-1:.12s;--dur-2:.2s}@media (min-width:640px){:root{--gutter:2rem}}.dark{color-scheme:dark;--acc-l:.78;--acc-c:.1;--canvas:oklch(.205 .008 var(--hue));--surface:oklch(.185 .008 var(--hue));--raised:oklch(.25 .01 var(--hue));--sink:oklch(.17 .008 var(--hue));--text-strong:oklch(.955 .006 var(--hue));--text:oklch(.88 .008 var(--hue));--text-muted:oklch(.72 .01 var(--hue));--line:oklch(.33 .01 var(--hue));--line-strong:oklch(.6 .01 var(--hue));--accent-hover:oklch(calc(var(--acc-l) + .07) var(--acc-c) var(--acc-h));--danger:oklch(76% .14 28);--ok:oklch(78% .12 150);--warning:oklch(80% .12 75);--sel:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark{--sel:color-mix(in oklab,var(--accent) 24%,var(--surface))}}.dark{--scrim:oklch(.08 .008 var(--hue))}@supports (color:color-mix(in lab,red,red)){.dark{--scrim:color-mix(in oklab,oklch(.08 .008 var(--hue)) 60%,transparent)}}.prose .katex{font-size:1.1em}@media (max-width:479px){:is(.pr-statement,.pr-solution,.pr-steps) .katex-display:has(.mtable)>.katex{font-size:.8em}}.prose .katex-html>.base:last-child{display:inline}@property --math-fade{syntax:"<length>";inherits:false;initial-value:0}.prose .katex-display{max-width:100%;margin:var(--s-5) 0;padding-block:var(--s-1);overscroll-behavior-x:contain;overflow:auto hidden}@supports (animation-timeline:scroll()){.prose .katex-display{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - var(--math-fade)),transparent);mask-image:linear-gradient(to right,#000 calc(100% - var(--math-fade)),transparent);animation:math-fade linear both;animation-timeline:scroll(self inline)}@media (prefers-reduced-motion:reduce){.prose .katex-display{animation-duration:auto!important}}}@keyframes math-fade{0%{--math-fade:var(--fade)}to{--math-fade:0px}}.prose :is(.katex-display,pre,.table-scroll):focus-visible{-webkit-mask-image:none;mask-image:none}@media (max-width:639px){.prose .katex-html>.base{display:inline}.prose .katex .base{white-space:normal}.prose .katex-html{overflow-wrap:anywhere}.prose .katex :has(>.msupsub,>.mfrac),.prose .katex :is(.vlist-t,.minner,.mtable,.sqrt){white-space:nowrap}.prose .katex-display .katex-html>.base{display:inline-block}.prose .katex-display .katex .base,.prose :is(td,th) :is(.katex-html,.katex .base){white-space:nowrap}.prose :not(.katex-display)>.katex .sqrt{max-width:100%;display:inline-flex;overflow:auto hidden}.prose :not(.katex-display)>.katex .sqrt>.vlist-t2{margin-right:0}}@supports (animation-timeline:scroll()){@media (max-width:639px){.prose :not(.katex-display)>.katex .sqrt{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - var(--math-fade)),transparent);mask-image:linear-gradient(to right,#000 calc(100% - var(--math-fade)),transparent);animation:math-fade linear both;animation-timeline:scroll(self inline)}@media (prefers-reduced-motion:reduce){.prose :not(.katex-display)>.katex .sqrt{animation-duration:auto!important}}}}@media (prefers-reduced-motion:reduce){*,:after,:before{transition-duration:0s!important;animation-duration:0s!important}}@page{margin:16mm 16mm 22mm}@media print{.colophon{margin:0 0 var(--s-4);font:400 8pt/1.3 var(--font-sans);color:var(--text-muted);display:block}.dark,:root{color-scheme:light;--canvas:#fff;--surface:#fff;--sink:#fff;--raised:#fff;--text-strong:#000;--text:#000;--text-muted:#444;--line:#bbb;--line-strong:#000;--accent:#000}body,html{background:#fff!important}.bar,.corner,.drawer,.nav,.pager,[data-print=hide]{display:none!important}.page{padding-left:0!important}.reveal,[data-intro-eyebrow],[data-intro-headline]{opacity:1!important}.opener{padding-top:0}.prose{max-width:none}.prose .table-scroll,.prose pre{overflow:visible}.prose pre{border:var(--rule) solid var(--line)}.prose pre code{white-space:pre-wrap}.prose .is-clipped,.prose .katex-display{-webkit-mask-image:none;mask-image:none}.prose .katex-display{animation:none;overflow:visible}.dark .prose :is(figure.fig-figure img,img[src*=figures\/]){filter:none}.prose :is(pre,.box,table,.exercise,.dz){break-inside:avoid}.prose :is(h2,h3,.tier-head){break-after:avoid}.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:.85em}}.pr .katex-display,.pr-statement .katex-display{padding-block:var(--s-1);overflow:auto hidden}.pr .katex{font-size:1.05em}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(1turn)}}