@font-face{font-family:Fira Sans;src:url("/assets/fonts/firava-latin-wght-normal.RP3FOW7H.woff2") format("woff2");font-weight:300 500;font-style:normal;font-display:swap}@font-face{font-family:Fira Sans;src:url("/assets/fonts/firava-latin-wght-italic.G2RWNACZ.woff2") format("woff2");font-weight:300 500;font-style:italic;font-display:swap}@font-face{font-family:Fira Code;src:url("/assets/fonts/fira-code-latin-wght-normal.2PIIU2FG.woff2") format("woff2");font-weight:300 700;font-style:normal;font-display:swap}:root{color-scheme:light dark;--palette-paper: #f5f2e9;--palette-linen: #ece7da;--palette-parchment: #d8d2c2;--palette-ink: #1f2a22;--palette-stone: #5c6b5f;--palette-moss: #3f6b3a;--palette-bark: #8a5a3b;--palette-fern-light: #7c9a6a;--palette-spruce: #2f5d62;--palette-heather: #6b4f7a;--palette-rowan: #a23b2a;--palette-forest-floor: #141b16;--palette-understory: #1b241e;--palette-peat: #2c3a30;--palette-lichen: #dde3d6;--palette-mist: #8f9c8f;--palette-sage: #9cc283;--palette-amber: #d39b6a;--palette-fern-deep: #5f7f5a;--palette-tarn: #8cc4bf;--palette-thistle: #b9a0c9;--palette-rosehip: #e08a76;--bg: light-dark(var(--palette-paper), var(--palette-forest-floor));--fg: light-dark(var(--palette-ink), var(--palette-lichen));--muted: light-dark(var(--palette-stone), var(--palette-mist));--accent: light-dark(var(--palette-moss), var(--palette-sage));--accent-2: light-dark(var(--palette-bark), var(--palette-amber));--fern: light-dark(var(--palette-fern-light), var(--palette-fern-deep));--rule: light-dark(var(--palette-parchment), var(--palette-peat));--code-bg: light-dark(var(--palette-linen), var(--palette-understory));--info: light-dark(var(--palette-spruce), var(--palette-tarn));--important: light-dark(var(--palette-heather), var(--palette-thistle));--danger: light-dark(var(--palette-rowan), var(--palette-rosehip));--sans: "Fira Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "Fira Code", ui-monospace, "SF Mono", Menlo, monospace;--measure: 38rem}:root{--type-scale: 1.25;--font-size-base: 1.125rem;--font-size-sub-1: calc(var(--font-size-base) / var(--type-scale));--font-size-mod-1: calc(var(--font-size-base) * var(--type-scale));--font-size-mod-2: calc(var(--font-size-mod-1) * var(--type-scale));--font-size-mod-3: calc(var(--font-size-mod-2) * var(--type-scale));--font-size-mod-4: calc(var(--font-size-mod-3) * var(--type-scale));--line-height-base: calc(var(--type-scale) * var(--type-scale));--line-height-heading: var(--type-scale)}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:var(--line-height-heading)}h1{font-size:var(--font-size-mod-4)}h2{font-size:var(--font-size-mod-3)}h3{font-size:var(--font-size-mod-2)}h4{font-size:var(--font-size-mod-1)}h5,h6{font-size:var(--font-size-base)}.prose{h1,h2,h3,h4,h5,h6{margin:1em 0 .75rem}}*,*:before,*:after{box-sizing:border-box}:root{--font-family: var(--sans)}*{font-family:var(--font-family)}html{-webkit-text-size-adjust:100%}body{--gutters: clamp(1rem, 5vw, 3rem);margin:0 auto;max-width:calc(var(--measure) + var(--gutters) * 2);padding:0 1rem;padding:0 clamp(1rem,5vw,3rem);background:var(--bg);color:var(--fg);font-weight:300;font-size:var(--font-size-base);line-height:var(--line-height-base);text-rendering:optimizeLegibility}body{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}main{flex:1}strong,b{font-weight:500}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.18em}a:hover{color:var(--accent-2)}::selection{background:color-mix(in srgb,var(--fern) 40%,transparent)}p,ul,ol,blockquote,pre,table,figure{margin:0 0 1.25rem}img{max-width:100%;height:auto;border-radius:4px}hr{border:0;border-top:1px solid var(--rule);margin:2.5rem 0}blockquote{margin-left:0;padding-left:1rem;border-left:3px solid var(--fern);color:var(--muted)}code,pre,kbd{--font-family: var(--mono);font-size:.875em}pre code{font-size:1em}:not(pre)>code{background:var(--code-bg);padding:.1em .35em;border-radius:3px}pre{background:var(--code-bg);padding:1rem 1.1rem;border-radius:6px;overflow-x:auto;line-height:1.55;tab-size:4}.code-details{margin:0 0 1.25rem}.code-details>summary{cursor:pointer;font-size:var(--font-size-sub-1);color:var(--muted)}.code-details[open]>summary{margin-bottom:.5rem}.code-details>pre{max-height:32rem;margin:0}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--rule)}th{--font-family: var(--mono);font-size:.875em;font-weight:600}.muted{color:var(--muted)}.alert{--alert-color: var(--info);margin:0 0 1.25rem;padding:.75rem 1rem;font-size:var(--font-size-sub-1);border-left:3px solid var(--alert-color);border-radius:0 4px 4px 0;background:color-mix(in srgb,var(--alert-color) 8%,transparent)}.alert>:last-child{margin-bottom:0}.alert-title{--font-family: var(--mono);margin:0 0 .35rem;font-size:var(--font-size-sub-1);font-weight:600;color:var(--alert-color)}.alert-note{--alert-color: var(--info)}.alert-tip{--alert-color: var(--accent)}.alert-important{--alert-color: var(--important)}.alert-warning{--alert-color: var(--accent-2)}.alert-caution{--alert-color: var(--danger)}.alert-todo{--alert-color: var(--accent-2);border-left-style:dashed}.site-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1.5rem;padding:2rem 0 1rem;--font-family: var(--mono)}.wordmark{font-weight:600;font-size:var(--font-size-base);color:var(--fg);text-decoration:none}.wordmark:before{content:"~/";color:var(--fern)}.site-header nav{display:flex;gap:1.25rem;font-size:var(--font-size-sub-1)}.site-header nav a{color:var(--muted);text-decoration:none}.site-header nav a:hover,.site-header nav a[aria-current]{color:var(--accent)}.site-footer{display:flex;gap:1.25rem;margin-top:4rem;padding:1.5rem 0 3rem;border-top:1px solid var(--rule);--font-family: var(--mono);font-size:var(--font-size-sub-1);color:var(--muted)}.intro{font-size:var(--font-size-mod-1);margin-top:2rem}.link-list,.post-list{list-style:none;padding:0}.link-list li{margin-bottom:.6rem}.link-list a{--font-family: var(--mono)}.link-list .muted{display:block}.post-list li{display:flex;gap:1rem;margin-bottom:.45rem}.post-list time{flex:none;--font-family: var(--mono);font-size:var(--font-size-sub-1);color:var(--muted);padding-top:.1em}@media(max-width:480px){.post-list li{flex-direction:column;gap:0;margin-bottom:.9rem}}.post>header h1{margin-bottom:.4rem}.meta{--font-family: var(--mono);font-size:var(--font-size-sub-1);color:var(--muted);display:flex;flex-wrap:wrap;gap:.25rem .9rem;margin-bottom:2rem}pre.mermaid{background:none;padding:0;text-align:center;--font-family: var(--sans)}pre.mermaid:not([data-processed]){visibility:hidden}.footnotes{font-size:var(--font-size-sub-1);color:var(--muted)}.archive>header h1{margin-bottom:.4rem}figure picture,figure img{display:block}figcaption{margin-top:.5rem;font-size:var(--font-size-sub-1);color:var(--muted)}.recipe-table{--recipe-wide: min(64rem, 100vw - 2rem);width:max-content;min-width:100%;max-width:var(--recipe-wide);position:relative;left:50%;transform:translate(-50%);overflow-x:auto;margin:0 0 1.25rem}.recipe-table table{margin:0;font-size:var(--font-size-sub-1)}.recipe-table td{border:1px solid var(--rule);vertical-align:middle}.recipe-table .ingredient{white-space:nowrap}.recipe-table .step{background:var(--code-bg);min-width:8rem}.recipe-table .dish{color:var(--accent);font-weight:500}[data-syntax-theme=forest]{--syntax-background: var(--code-bg);--syntax-foreground: var(--fg);--syntax-comment: light-dark(#7d8a7f, #6f7e72);--syntax-keyword: light-dark(#3f6b3a, #9cc283);--syntax-operator: light-dark(#5c6b5f, #a3aea3);--syntax-string: light-dark(#8a5a3b, #d39b6a);--syntax-constant: light-dark(#a0522d, #e0b07d);--syntax-function: light-dark(#2f5d62, #8cc4bf);--syntax-type: light-dark(#5a6e2a, #c2cf86);--syntax-variable: light-dark(#1f2a22, #dde3d6);--syntax-property: light-dark(#2f5d62, #8cc4bf);--syntax-tag: light-dark(#3f6b3a, #9cc283);--syntax-selector: light-dark(#5a6e2a, #c2cf86);--syntax-inserted: light-dark(#3f6b3a, #9cc283);--syntax-deleted: light-dark(#a23b2a, #e08a76)}[data-syntax-theme=forest] pre:has(code){background-color:var(--syntax-background);color:var(--syntax-foreground)}::highlight(comment),::highlight(quote){color:var(--syntax-comment);font-style:italic}::highlight(keyword),::highlight(storage),::highlight(at-rule),::highlight(doctype),::highlight(important),::highlight(section){color:var(--syntax-keyword)}::highlight(operator),::highlight(punctuation){color:var(--syntax-operator)}::highlight(string),::highlight(regexp),::highlight(attribute-value),::highlight(link),::highlight(raw){color:var(--syntax-string)}::highlight(numeric),::highlight(boolean),::highlight(constant),::highlight(symbol),::highlight(character-entity),::highlight(anchor),::highlight(entity){color:var(--syntax-constant)}::highlight(function),::highlight(decorator),::highlight(animation){color:var(--syntax-function)}::highlight(type),::highlight(support){color:var(--syntax-type)}::highlight(variable),::highlight(interpolation){color:var(--syntax-variable)}::highlight(property),::highlight(key),::highlight(attribute-name){color:var(--syntax-property)}::highlight(tag){color:var(--syntax-tag)}::highlight(selector){color:var(--syntax-selector)}::highlight(inserted){color:var(--syntax-inserted)}::highlight(deleted){color:var(--syntax-deleted)}.swatches{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.75rem}.swatches li{display:flex;align-items:center;gap:.5rem;font-size:var(--font-size-sub-1)}.swatch{flex:none;width:2rem;height:2rem;border-radius:4px;border:1px solid var(--rule)}.specimen-family{margin-bottom:1.5rem}.specimen-family p{margin:0 0 .35rem}
