*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Figtree,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.75rem;margin-bottom:1.75rem;font-family:"Source Serif 4";font-family:ui-serif;font-family:Georgia;font-family:Cambria;font-family:Times New Roman;font-family:Times;font-family:serif;line-height:1.75rem;font-size:1rem;color:var(--tw-prose-body)}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:600;text-decoration-color:var(--tw-prose-underline);transition-property:color,text-decoration-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:5rem;margin-bottom:5rem}@media (min-width: 1024px){.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-left:-3rem;margin-right:-3rem}}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;padding-left:1.5rem;border-left-width:2px;border-left-color:var(--tw-prose-quote-borders)}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5rem;margin-top:5rem;margin-bottom:1.5rem;line-height:1.75rem}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1rem;margin-top:4rem;margin-bottom:1rem;line-height:1.75rem}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;border-radius:.75rem}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:700;font-size:.875rem;display:inline-block;font-family:JetBrains Mono;font-family:ui-monospace;font-family:SFMono-Regular;font-family:Menlo;font-family:Monaco;font-family:Consolas;font-family:Liberation Mono;font-family:Courier New;font-family:monospace;background-color:var(--tw-prose-code-bg);padding-left:.5rem;padding-right:.5rem}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:500;font-size:.875rem;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.5rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em;padding:1.5rem}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;display:inline;border:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875rem;line-height:1.7142857;text-align:left}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5rem;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875rem;line-height:1.5rem;margin-top:.75rem}.prose{--tw-prose-body: #d4d4d8;--tw-prose-headings: #fafafa;--tw-prose-lead: #4b5563;--tw-prose-links: #2dd4bf;--tw-prose-bold: #e4e4e7;--tw-prose-counters: #e4e4e7;--tw-prose-bullets: #e4e4e7;--tw-prose-hr: #3f3f46;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #71717a;--tw-prose-captions: #71717a;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #f4f4f5;--tw-prose-pre-code: #f4f4f5;--tw-prose-pre-bg: #09090b;--tw-prose-th-borders: #3f3f46;--tw-prose-td-borders: #27272a;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75rem}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5rem;margin-bottom:.5rem;padding-left:.875rem}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose{--tw-prose-links-hover: #2dd4bf;--tw-prose-underline: #2dd4bf;--tw-prose-underline-hover: #2dd4bf;--tw-prose-code-bg: #3f3f46;--tw-prose-pre-border: #71717a}.prose :where(.prose>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.5rem;margin-bottom:2.5rem}.prose :where(h2,h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-family:Figtree;font-family:ui-sans-serif;font-family:system-ui;font-family:sans-serif;font-family:"Apple Color Emoji";font-family:"Segoe UI Emoji";font-family:Segoe UI Symbol;font-family:"Noto Color Emoji"}.prose :where(:is(h2,h3)+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(a:hover):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links-hover);text-decoration-color:var(--tw-prose-underline-hover)}.prose :where(:is(h2,h3) code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700}.prose :where(figcaption>p):not(:where([class~=not-prose],[class~=not-prose] *)){margin:0}.prose :where(ul,ol):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:1.5rem}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-size:.875rem;font-weight:600}.prose :where(li :is(ol,ul)):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1rem;margin-bottom:1rem}.prose :where(li :is(li,p)):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75rem;margin-bottom:.75rem}.prose :where(thead th:not(:first-child)):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.5rem}.prose :where(thead th:not(:last-child)):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:.5rem}.prose :where(:is(tbody,tfoot) td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5rem;padding-bottom:.5rem}.prose :where(:is(tbody,tfoot) td:not(:first-child)):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.5rem}.prose :where(:is(tbody,tfoot) td:not(:last-child)):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:.5rem}.prose-invert{--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders);--tw-prose-links-hover: var(--tw-prose-invert-links-hover);--tw-prose-underline: var(--tw-prose-invert-underline);--tw-prose-underline-hover: var(--tw-prose-invert-underline-hover);--tw-prose-code-bg: var(--tw-prose-invert-code-bg);--tw-prose-pre-border: var(--tw-prose-invert-pre-border)}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.-inset-x-4{left:-1rem;right:-1rem}.-inset-y-6{top:-1.5rem;bottom:-1.5rem}.inset-x-4{left:1rem;right:1rem}.inset-y-0{top:0;bottom:0}.left-0{left:0}.top-6{top:1.5rem}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.order-first{order:-9999}.mx-auto{margin-left:auto;margin-right:auto}.mb-16{margin-bottom:4rem}.mb-3{margin-bottom:.75rem}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.size-6{width:1.5rem;height:1.5rem}.h-4{height:1rem}.h-\[630px\]{height:630px}.max-h-\[768px\]{max-height:768px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-0\.5{width:.125rem}.w-4{width:1rem}.w-\[1200px\]{width:1200px}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.flex-auto{flex:1 1 auto}.origin-top{transform-origin:top}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-y-8{row-gap:2rem}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/70{background-color:#000000b3}.bg-zinc-500{--tw-bg-opacity: 1;background-color:rgb(113 113 122 / var(--tw-bg-opacity))}.bg-zinc-700{--tw-bg-opacity: 1;background-color:rgb(63 63 70 / var(--tw-bg-opacity))}.bg-zinc-800\/50{background-color:#27272a80}.fill-zinc-100\/10{fill:#f4f4f51a}.stroke-current{stroke:currentColor}.stroke-zinc-500{stroke:#71717a}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pl-3{padding-left:.75rem}.pl-3\.5{padding-left:.875rem}.text-4xl{font-size:2rem;line-height:2.5rem}.text-base{font-size:1rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.5rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.tracking-normal{letter-spacing:0em}.tracking-tight{letter-spacing:-.025em}.text-teal-500{--tw-text-opacity: 1;color:rgb(20 184 166 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-zinc-100{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity))}.text-zinc-300{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity))}.text-zinc-400{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity))}.text-zinc-500{--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity))}.opacity-0{opacity:0}.outline-offset-2{outline-offset:2px}.filter{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)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}:root{--paper: #1a1613;--paper-2: #221c17;--paper-3: #2a221c;--ink: #f0e6d2;--ink-soft: #d4c5a8;--taupe: #a89a82;--taupe-light: #8a7d65;--rule: #4a4036;--accent: #f0855e;--accent-soft: #f5a585;--moss: #b4c97a;--sky: #7a9cb0;--grain-opacity: .5;--vignette: radial-gradient(ellipse at 50% 0%, rgba(240,133,94,.06), transparent 70%);--serif: "Source Serif 4", "Cormorant Garamond", Georgia, serif;--sans: "Figtree", "Söhne", -apple-system, BlinkMacSystemFont, sans-serif;--mono: "JetBrains Mono", "IBM Plex Mono", Menlo, monospace;--display: "Figtree", var(--sans);--display-weight: 500;--display-tracking: -.03em;--display-lh: 1.02;--col: 680px;--margin: 260px;--gutter: clamp(18px, 5vw, 40px)}html,body{background:var(--paper);color:var(--ink);color-scheme:dark}html{font-size:17px;scroll-behavior:smooth}body{font-family:var(--serif);font-weight:400;line-height:1.65;min-height:100vh;font-feature-settings:"ss01","cv11";position:relative;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;opacity:var(--grain-opacity);mix-blend-mode:screen;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.95 0 0 0 0 0.85 0 0 0 0 0.65 0 0 0 0.12 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:var(--vignette)}body>div,body>main,body>header,body>footer{position:relative;z-index:2}.site-nav{display:flex;align-items:baseline;justify-content:space-between;padding:32px var(--gutter) 24px;width:100%;border-bottom:1px solid var(--rule);gap:24px;flex-wrap:wrap}.wordmark{font-family:var(--display);font-weight:var(--display-weight);font-size:22px;letter-spacing:var(--display-tracking);color:var(--ink);text-decoration:none;display:inline-flex;align-items:baseline;gap:10px}.wordmark .ampersand{font-style:italic;color:var(--accent);font-weight:400}.wordmark .wm-sub{font-family:var(--mono);font-size:11px;color:var(--taupe);letter-spacing:.04em;text-transform:uppercase;transform:translateY(-2px)}.nav-links{display:flex;gap:28px;align-items:baseline}.site-nav-mobile,.mobile-menu-button{display:none}@media (max-width: 768px){.nav-links{display:none}.site-nav-mobile{display:block}.mobile-menu-button{display:inline-block}}.nav-links a{font-family:var(--display);font-size:17px;letter-spacing:var(--display-tracking);color:var(--ink-soft);text-decoration:none;font-weight:var(--display-weight);position:relative;padding-bottom:2px;transition:color .2s}.nav-links a:hover,.nav-links a.active{color:var(--accent)}.nav-links a.active:after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;background:var(--accent)}.nav-links .feed{font-family:var(--mono);font-size:13px;letter-spacing:.04em;text-transform:lowercase;color:var(--taupe)}.nav-links .feed:hover{color:var(--accent)}.home-hero{max-width:1200px;margin:0 auto;padding:80px var(--gutter) 60px;display:grid;grid-template-columns:var(--margin) 1fr;gap:40px}@media (max-width: 900px){.home-hero{grid-template-columns:1fr;padding-top:48px}}.home-hero h1{font-family:var(--display);font-weight:var(--display-weight);font-size:clamp(42px,6vw,78px);line-height:var(--display-lh);letter-spacing:var(--display-tracking);color:var(--ink);max-width:16ch;margin-bottom:28px}.home-hero h1 em{font-style:italic;color:var(--accent);font-feature-settings:"ss01"}.home-hero .lede{font-size:19px;line-height:1.55;color:var(--ink-soft);max-width:52ch;margin-bottom:20px}.home-hero .lede code,.article-body code,.note-card code{font-family:var(--mono);font-size:.82em;background:var(--paper-2);padding:1px 6px;border-radius:3px;color:var(--sky);border:1px solid rgba(122,156,176,.28)}.home-hero .lede a,.about-main a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(240,133,94,.35);transition:border-color .2s}.home-hero .lede a:hover,.about-main a:hover{border-bottom-color:var(--accent)}.home-side-meta{font-family:var(--mono);font-size:11px;color:var(--taupe);letter-spacing:.08em;text-transform:uppercase;padding-top:14px;display:flex;flex-direction:column;gap:10px}.home-side-meta .line{display:flex;gap:10px}.home-side-meta .label{color:var(--taupe-light);min-width:60px}.home-side-meta .val{color:var(--ink-soft)}.home-side-meta a{color:var(--ink-soft);text-decoration:none;transition:color .2s}.home-side-meta a:hover{color:var(--accent)}.section-head{max-width:1200px;margin:0 auto;padding:48px var(--gutter) 16px;display:grid;grid-template-columns:var(--margin) 1fr auto;gap:40px;align-items:baseline;border-top:1px solid var(--rule)}@media (max-width: 900px){.section-head{grid-template-columns:1fr}}.section-head .kicker{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:.1em;text-transform:uppercase;display:inline-flex;align-items:center;gap:.6em}.section-head .kicker .arrow{display:inline-block;width:1.4em;height:.55em;position:relative;flex-shrink:0;transform:translateY(-.14em)}.section-head .kicker .arrow:before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:currentColor}.section-head .kicker .arrow:after{content:"";position:absolute;right:0;top:50%;width:.35em;height:.35em;border-right:1px solid currentColor;border-top:1px solid currentColor;transform:translate(-.05em,-50%) rotate(45deg);transform-origin:center}.section-head h2{font-family:var(--display);font-weight:var(--display-weight);font-size:28px;letter-spacing:var(--display-tracking);color:var(--ink)}.section-head h2 em{font-style:italic;color:var(--accent)}.section-head .count{font-family:var(--mono);font-size:11px;color:var(--taupe)}.post-list{max-width:1200px;margin:0 auto;padding:16px var(--gutter) 40px;list-style:none}.post-list>.post-row+.post-row{border-top:1px solid var(--rule)}.post-list-more{max-width:1200px;margin:0 auto;padding:0 var(--gutter) 100px;display:grid;grid-template-columns:var(--margin) 1fr;gap:40px}@media (max-width: 900px){.post-list-more{grid-template-columns:1fr}}.show-more{grid-column:2;justify-self:start;font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);text-decoration:none;border:1px solid var(--rule);padding:12px 18px;transition:border-color .2s,color .2s,background .2s}.show-more:hover{color:var(--accent);border-color:var(--accent);background:#f0855e0f}@media (max-width: 900px){.show-more{grid-column:1}}.post-row{display:grid;grid-template-columns:var(--margin) 1fr 160px;gap:40px;padding:22px 0;border-bottom:1px solid var(--rule);align-items:baseline;transition:background .25s;position:relative}.post-row:hover{background:#f0855e0d}.post-row:hover .post-title{color:var(--accent)}@media (max-width: 900px){.post-row{grid-template-columns:1fr;gap:6px;padding:18px 0}}.post-row a.post-link{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;text-indent:-9999px;overflow:hidden}.post-date{font-family:var(--mono);font-size:11px;color:var(--taupe);letter-spacing:.06em;text-transform:uppercase;display:flex;gap:14px;align-items:baseline}.post-date .num{color:var(--ink-soft);font-weight:500}.post-date .dot{color:var(--taupe-light)}.post-title{font-family:var(--display);font-weight:var(--display-weight);font-size:22px;line-height:1.25;color:var(--ink);letter-spacing:var(--display-tracking);transition:color .2s;margin-bottom:4px}.post-title em{font-style:italic}.post-dek{font-size:16.5px;color:var(--ink-soft);line-height:1.55;max-width:58ch}.post-tags{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}@media (max-width: 900px){.post-tags{justify-content:flex-start;margin-top:12px}}.tag{font-family:var(--mono);font-size:10.5px;color:var(--taupe);letter-spacing:.04em;padding:2px 8px;border:1px solid var(--rule);border-radius:999px;background:transparent;text-transform:lowercase}.tag.tag-accent{color:var(--accent);border-color:#f0855e66}.tag.tag-moss{color:var(--moss);border-color:#b4c97a59}.site-foot{max-width:1200px;margin:80px auto 0;padding:40px var(--gutter) 60px;border-top:1px solid var(--rule);display:grid;grid-template-columns:var(--margin) 1fr auto;gap:40px;align-items:start;font-family:var(--mono);font-size:11.5px;color:var(--taupe);letter-spacing:.04em}@media (max-width: 900px){.site-foot{grid-template-columns:1fr}}body:has(.article-wrap) .site-foot{max-width:820px;grid-template-columns:auto 1fr auto;gap:28px}@media (max-width: 640px){body:has(.article-wrap) .site-foot{grid-template-columns:1fr}}.site-foot .colophon{max-width:48ch;line-height:1.7}.site-foot .colophon span{color:var(--ink-soft)}.site-foot .foot-links{display:flex;flex-direction:column;gap:6px;align-items:flex-end}@media (max-width: 900px){.site-foot .foot-links{align-items:flex-start}}.site-foot a{color:var(--ink-soft);text-decoration:none}.site-foot a:hover{color:var(--accent)}.article-wrap{max-width:820px;margin:0 auto;padding:60px var(--gutter) 40px;min-width:0}.article-body{min-width:0;overflow-wrap:break-word;word-wrap:break-word}.article-body img,.article-body video,.article-body figure,.article-body iframe{max-width:100%;height:auto}.article-body figure{margin:28px 0}.article-body a{overflow-wrap:anywhere}.article-head{margin-bottom:48px;padding-bottom:32px;border-bottom:1px solid var(--rule)}.article-title{font-family:var(--display);font-weight:var(--display-weight);font-size:clamp(36px,5vw,54px);line-height:var(--display-lh);letter-spacing:var(--display-tracking);color:var(--ink);margin-bottom:20px}.article-title em{font-style:italic;color:var(--accent)}.article-dek{font-family:"Source Serif 4",Georgia,serif;font-weight:300;font-style:italic;font-size:22px;line-height:1.55;color:var(--ink-soft);max-width:none}.article-meta{display:grid;grid-template-columns:repeat(4,auto);gap:32px;margin-top:32px;padding-top:20px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;line-height:1.5}@media (max-width: 780px){.article-meta{grid-template-columns:repeat(2,1fr);gap:16px 24px}}.article-meta>div{display:flex;flex-direction:column;gap:4px}.article-meta .label{color:var(--taupe-light);font-size:10px}.article-meta .val{color:var(--ink-soft)}.article-body h2{font-family:var(--display);font-weight:600;font-size:28px;letter-spacing:var(--display-tracking);margin:56px 0 16px;color:var(--ink)}.article-body .heading-anchor{color:var(--accent);text-decoration:none;border-bottom:none;margin-right:10px;font-weight:400;font-style:italic;transition:opacity .2s}.article-body .heading-anchor:hover{opacity:.7;border-bottom:none}.article-body h3{font-family:var(--sans);font-weight:600;font-size:17px;margin:36px 0 10px;color:var(--ink);letter-spacing:-.005em}.article-body p{font-size:19px;line-height:1.7;margin-bottom:22px;color:var(--ink-soft);text-wrap:pretty}.article-body p>strong{color:var(--ink);font-weight:600}.article-body p>em{color:var(--ink)}.article-body a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(240,133,94,.4);transition:border-color .2s}.article-body a:hover{border-bottom-color:var(--accent)}.article-body blockquote{margin:28px 0;padding-left:22px;border-left:2px solid var(--accent);font-family:var(--serif);font-style:italic;font-size:20px;line-height:1.5;color:var(--ink)}.article-body blockquote cite{display:block;margin-top:10px;font-family:var(--mono);font-style:normal;font-size:12px;color:var(--taupe);letter-spacing:.04em;text-transform:uppercase}.article-body ul,.article-body ol{margin:16px 0 22px 24px;padding-left:8px;color:var(--ink-soft);font-size:18px;line-height:1.7}.article-body ul{list-style:disc outside}.article-body ol{list-style:decimal outside}.article-body ul li,.article-body ol li{margin-bottom:6px}.article-body ul li::marker,.article-body ol li::marker{color:var(--accent);font-weight:600}.article-body hr{border:none;border-top:1px solid var(--rule);margin:40px 0}.article-body pre,.article-body pre[class*=language-]{margin:28px 0;padding:18px 20px;border:1px solid var(--rule);background:#0f0d0b;border-radius:4px;overflow-x:auto;font-family:var(--mono);font-size:13.5px;line-height:1.65;color:#e8dcc4}.article-body pre code{background:transparent;border:none;padding:0;font-size:inherit;color:inherit}.ornament{display:flex;align-items:center;gap:14px;justify-content:center;margin:40px 0;color:var(--taupe-light);font-family:var(--serif);font-size:18px}.ornament:before,.ornament:after{content:"";flex:1;max-width:60px;height:1px;background:var(--rule)}.article-foot{margin-top:60px;padding-top:32px;border-top:1px solid var(--rule);display:grid;grid-template-columns:1fr 1fr;gap:24px;font-family:var(--mono);font-size:12px}@media (max-width: 640px){.article-foot{grid-template-columns:1fr}}.article-foot a{color:var(--ink-soft);text-decoration:none;border:1px solid var(--rule);padding:14px 18px;display:block;transition:all .2s}.article-foot a:hover{border-color:var(--accent);color:var(--accent)}.article-foot .label{color:var(--taupe);text-transform:uppercase;letter-spacing:.08em;font-size:10px;display:block;margin-bottom:4px}.article-foot .title{font-family:var(--serif);font-size:16px;font-style:italic;text-transform:none;letter-spacing:0;line-height:1.3}.about-wrap{max-width:1200px;margin:0 auto;padding:80px var(--gutter) 40px;display:grid;grid-template-columns:var(--margin) minmax(0,var(--col)) 1fr;gap:40px}@media (max-width: 1100px){.about-wrap{grid-template-columns:1fr}}.about-side{font-family:var(--mono);font-size:11px;color:var(--taupe);text-transform:uppercase;letter-spacing:.08em;line-height:1.9;display:flex;flex-direction:column}.about-side .k{color:var(--taupe-light);display:block;margin-top:12px;font-size:10px}.about-side .v{color:var(--ink-soft)}.about-side .v.plain{text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:13px}.about-side a{color:var(--ink-soft);text-decoration:none}.about-side a:hover{color:var(--accent)}.about-main h1{font-family:var(--display);font-weight:var(--display-weight);font-size:clamp(42px,5.5vw,68px);line-height:var(--display-lh);letter-spacing:var(--display-tracking);margin-bottom:28px;color:var(--ink)}.about-main h1 em{font-style:italic;color:var(--accent)}.about-main p{font-size:18.5px;line-height:1.7;color:var(--ink-soft);margin-bottom:20px;max-width:58ch}.about-main p strong{color:var(--ink);font-weight:600}.about-main p em{color:var(--ink)}.about-main h2{font-family:var(--display);font-weight:600;font-size:26px;letter-spacing:var(--display-tracking);margin:48px 0 14px;color:var(--ink)}.about-main h2:before{content:"§ ";color:var(--accent);font-style:italic}.now-list{list-style:none;display:grid;grid-template-columns:120px 1fr;gap:8px 24px;font-size:16px;margin:16px 0 32px}.now-list dt{font-family:var(--mono);font-size:11px;color:var(--taupe);text-transform:uppercase;letter-spacing:.06em;padding-top:5px}.now-list dd{color:var(--ink-soft);line-height:1.55;padding-bottom:12px;border-bottom:1px dashed var(--rule)}.now-list dd strong{color:var(--ink)}.project-grid{list-style:none;max-width:1200px;margin:0 auto;padding:16px var(--gutter) 60px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:24px}.project-card{background:var(--paper-2);padding:22px;border:1px solid var(--rule);position:relative;display:flex;flex-direction:column;gap:10px;transition:transform .2s,box-shadow .2s}.project-card:before{content:"";position:absolute;top:-1px;left:-1px;width:20px;height:20px;border-top:2px solid var(--accent);border-left:2px solid var(--accent)}.project-card:hover{transform:translate(-2px,-2px);box-shadow:4px 4px 0 var(--accent)}.project-card .project-name{font-family:var(--display);font-weight:600;font-size:19px;color:var(--ink);letter-spacing:var(--display-tracking)}.project-card .project-desc{font-size:15px;line-height:1.55;color:var(--ink-soft)}.project-card .project-link{font-family:var(--mono);font-size:11.5px;color:var(--accent);letter-spacing:.04em;text-decoration:none;margin-top:auto;display:inline-flex;align-items:center;gap:6px;text-transform:lowercase}.project-card .project-link:after{content:"→";transition:transform .2s}.project-card:hover .project-link:after{transform:translate(3px)}.project-card .project-link-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;text-indent:-9999px;overflow:hidden;white-space:nowrap}.social-links{list-style:none;display:flex;flex-wrap:wrap;gap:14px 22px;font-family:var(--mono);font-size:12.5px;letter-spacing:.03em;margin-top:18px}.social-links a{color:var(--ink-soft);text-decoration:none;display:inline-flex;align-items:center;gap:8px;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}.social-links a:hover{color:var(--accent);border-bottom-color:var(--accent)}.social-links svg{width:18px;height:18px;fill:currentColor}.mobile-menu-button{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);background:transparent;border:1px solid var(--rule);padding:8px 14px;cursor:pointer;transition:all .2s}.mobile-menu-button:hover{color:var(--accent);border-color:var(--accent)}.mobile-menu-panel{padding:28px;background:var(--paper-2);border:1px solid var(--rule)}.mobile-menu-panel nav ul{list-style:none;display:flex;flex-direction:column;gap:0}.mobile-menu-panel nav li{border-top:1px solid var(--rule)}.mobile-menu-panel nav li:first-child{border-top:none}.mobile-menu-panel nav a{display:block;padding:14px 0;font-family:var(--display);font-weight:var(--display-weight);font-size:20px;color:var(--ink-soft);text-decoration:none}.mobile-menu-panel nav a:hover{color:var(--accent)}.prose-links a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(240,133,94,.35)}.prose-links a:hover{border-bottom-color:var(--accent)}@keyframes flash{0%{background-color:#f0855e1f}to{background-color:transparent}}.tool-wrap{max-width:820px;margin:0 auto;padding:0 var(--gutter) 60px}.tool-wrap p{font-size:17px;line-height:1.65;margin-bottom:14px;color:var(--ink-soft)}.tool-wrap p a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(240,133,94,.35);transition:border-color .2s}.tool-wrap p a:hover{border-bottom-color:var(--accent)}.tool-input,.tool-textarea{width:100%;background:var(--paper-2);border:1px solid var(--rule);color:var(--ink);font-family:var(--mono);font-size:14px;padding:12px 14px;border-radius:3px;transition:border-color .2s,background .2s}.tool-textarea{min-height:140px;resize:vertical;line-height:1.55}.tool-input:focus,.tool-textarea:focus{outline:none;border-color:var(--accent);background:var(--paper-3)}.tool-input::-moz-placeholder,.tool-textarea::-moz-placeholder{color:var(--taupe)}.tool-input::placeholder,.tool-textarea::placeholder{color:var(--taupe)}.tool-button{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);background:transparent;border:1px solid var(--rule);padding:10px 16px;cursor:pointer;transition:color .2s,border-color .2s,background .2s}.tool-button:hover{color:var(--accent);border-color:var(--accent);background:#f0855e0f}.tool-button:active{background:#f0855e1f}.tool-row{display:flex;gap:12px;margin-top:14px;flex-wrap:wrap}.tool-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12.5px;margin-top:20px}.tool-table thead th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--rule);color:var(--taupe-light);letter-spacing:.06em;text-transform:uppercase;font-size:10.5px;font-weight:500}.tool-table tbody td{padding:8px 12px;border-bottom:1px solid var(--rule);color:var(--ink-soft);vertical-align:top}.tool-table tbody tr{animation:flash 1s ease-in-out}.tool-table tbody td.is-key{color:var(--accent);font-weight:600}.tool-error{margin-top:18px;padding:14px 16px;border:1px solid rgba(240,133,94,.35);background:#f0855e0f;color:var(--accent-soft);font-family:var(--mono);font-size:13px;border-radius:3px}.tool-ast{margin-top:18px;padding:16px 18px;border:1px solid var(--rule);background:#0f0d0b;color:#e8dcc4;border-radius:3px;overflow:auto;font-family:var(--mono);font-size:13px;line-height:1.55}.tool-section-title{font-family:var(--display);font-weight:600;font-size:18px;letter-spacing:var(--display-tracking);color:var(--ink);margin:28px 0 10px}@media (max-width: 640px){.site-nav{padding:20px var(--gutter) 16px;gap:12px}.wordmark{font-size:20px}.nav-links{gap:20px}.home-hero{padding:40px var(--gutter) 32px;gap:24px}.home-hero h1{margin-bottom:20px}.home-hero .lede{font-size:17px}.section-head{padding:32px var(--gutter) 12px;gap:8px}.section-head h2{font-size:24px}.post-list{padding:8px var(--gutter) 48px}.post-row{padding:16px 0}.post-title{font-size:20px}.post-dek{font-size:15px}.article-wrap{padding:32px var(--gutter) 24px}.article-body p{font-size:17px;line-height:1.65}.article-body ul,.article-body ol{font-size:16.5px;margin-left:18px}.article-body blockquote{font-size:17px;padding-left:16px;margin:22px 0}.article-body h2{font-size:24px;margin:40px 0 12px}.article-body h3{font-size:16px;margin:28px 0 8px}.article-body pre,.article-body pre[class*=language-]{padding:14px;font-size:12.5px}.article-body .heading-anchor{margin-right:8px}.article-title{font-size:clamp(30px,8vw,40px)}.article-dek{font-size:18px}.article-meta{gap:12px 18px;margin-top:20px;padding-top:14px}.about-wrap{padding:40px var(--gutter) 24px;gap:24px}.about-main p{font-size:17px}.about-main h2{font-size:22px;margin:32px 0 10px}.site-foot{padding:28px var(--gutter) 36px;gap:20px;margin-top:48px}.project-grid{padding:8px var(--gutter) 40px;grid-template-columns:1fr;gap:16px}}.hover\:bg-zinc-600:hover{--tw-bg-opacity: 1;background-color:rgb(82 82 91 / var(--tw-bg-opacity))}.hover\:bg-zinc-800:hover{--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity))}.hover\:text-zinc-50:hover{--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity))}.active\:bg-zinc-700:active{--tw-bg-opacity: 1;background-color:rgb(63 63 70 / var(--tw-bg-opacity))}.active\:bg-zinc-800\/50:active{background-color:#27272a80}.active\:text-zinc-100\/70:active{color:#f4f4f5b3}.active\:text-zinc-50\/70:active{color:#fafafab3}.active\:transition-none:active{transition-property:none}.group:hover .group-hover\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[closed\]\:scale-95[data-closed]{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[closed\]\:opacity-0[data-closed]{opacity:0}.data-\[enter\]\:ease-out[data-enter]{transition-timing-function:cubic-bezier(0,0,.2,1)}.data-\[leave\]\:ease-in[data-leave]{transition-timing-function:cubic-bezier(.4,0,1,1)}@media (min-width: 640px){.sm\:-inset-x-6{left:-1.5rem;right:-1.5rem}.sm\:rounded-2xl{border-radius:1rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:text-5xl{font-size:3rem;line-height:3.5rem}}@media (min-width: 768px){.md\:col-span-3{grid-column:span 3 / span 3}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:border-l{border-left-width:1px}.md\:border-zinc-700\/40{border-color:#3f3f4666}.md\:pl-6{padding-left:1.5rem}}@media (min-width: 1024px){.lg\:mt-32{margin-top:8rem}.lg\:max-w-5xl{max-width:64rem}.lg\:px-12{padding-left:3rem;padding-right:3rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:relative{position:relative}}code[class*=language-],pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}
