/*! 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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--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-tracking: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;--tw-duration:initial}}}@layer theme{:host,:root{--font-sans:-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-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--leading-relaxed:1.625;--radius-xs:.125rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-muted-foreground:var(--muted-foreground);--color-destructive:oklch(55% .2 27)}}@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}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.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}.inset-bs-4{inset-block-start:calc(var(--spacing) * 4)}.inset-bs-\[50\%\]{inset-block-start:50%}.isolate{isolation:isolate}.z-50{z-index:50}.col-start-2{grid-column-start:2}.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}}.mbs-4{margin-block-start:calc(var(--spacing) * 4)}.line-clamp-1{-webkit-line-clamp:1;-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}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.min-h-4{min-height:calc(var(--spacing) * 4)}.w-full{width:100%}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-\[-50\%\],.translate-y-\[-50\%\]{translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.content-end{align-content:flex-end}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-items-start{justify-items:start}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:.75rem}.rounded-md{border-radius:.5rem}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-bs{border-block-start-style:var(--tw-border-style);border-block-start-width:1px}.border-be{border-block-end-style:var(--tw-border-style);border-block-end-width:1px}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--background)}.bg-destructive{background-color:oklch(55% .2 27)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-primary{background-color:var(--foreground)}.bg-secondary{background-color:var(--muted)}.p-2{padding:calc(var(--spacing) * 2)}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-start{text-align:start}.align-middle{vertical-align:middle}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-pretty{text-wrap:pretty}.text-wrap{text-wrap:wrap}.whitespace-nowrap{white-space:nowrap}.text-card-foreground{color:var(--foreground)}.text-destructive{color:oklch(55% .2 27)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--foreground)}.text-primary-foreground{color:var(--background)}.text-secondary-foreground{color:var(--foreground)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-lg{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.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}.blur{--tw-blur:blur(8px)}.blur,.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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.focus-visible\:border-ring:focus-visible{border-color:var(--muted-foreground)}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--muted-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.has-aria-expanded\:bg-muted\/50:has([aria-expanded=true]){background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing) * 4) 1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-1\.5:has(>svg){padding-inline:calc(var(--spacing) * 1.5)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:oklch(55% .2 27)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:oklab(55% .178201 .0907981/.2)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:oklab(55% .178201 .0907981/.9)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--muted)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}@media (min-width:40rem){.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-start{text-align:start}}.dark\:border-input:where(.dark,.dark *){border-color:var(--border)}.dark\:bg-destructive\/60:where(.dark,.dark *){background-color:oklab(55% .178201 .0907981/.6)}.dark\:bg-input\/30:where(.dark,.dark *){background-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:where(.dark,.dark *){background-color:color-mix(in oklab,var(--border) 30%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:where(.dark,.dark *)[aria-invalid=true],.dark\:focus-visible\:ring-destructive\/40:where(.dark,.dark *):focus-visible{--tw-ring-color:oklab(55% .178201 .0907981/.4)}@media (hover:hover) and (pointer:fine){.fine-hover\:bg-accent:hover{background-color:var(--muted)}.fine-hover\:bg-destructive\/90:hover{background-color:oklab(55% .178201 .0907981/.9)}.fine-hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.fine-hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.fine-hover\:bg-primary\/90:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.fine-hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--foreground) 90%,transparent)}}.fine-hover\:bg-secondary\/80:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.fine-hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--muted) 80%,transparent)}}.fine-hover\:text-accent-foreground:hover{color:var(--foreground)}.fine-hover\:underline:hover{text-decoration-line:underline}.fine-hover\:opacity-100:hover{opacity:1}.dark\:fine-hover\:bg-accent\/50:where(.dark,.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:fine-hover\:bg-accent\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.dark\:fine-hover\:bg-input\/50:where(.dark,.dark *):hover{background-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.dark\:fine-hover\:bg-input\/50:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--border) 50%,transparent)}}}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_tr\]\:border-be tr{border-block-end-style:var(--tw-border-style);border-block-end-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pe-0:has([role=checkbox]){padding-inline-end:0}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>tr\]\:last\:border-be-0>tr:last-child{border-block-end-style:var(--tw-border-style);border-block-end-width:0}}:root{color-scheme:light;--background:light-dark(oklch(99.5% 0 none),oklch(19% .008 260));--foreground:light-dark(oklch(25% .008 260),oklch(92% .004 260));--muted:light-dark(oklch(96.7% .003 260),oklch(25% .009 260));--muted-foreground:light-dark(oklch(49% .012 260),oklch(69% .01 260));--border:light-dark(oklch(90% .006 260),oklch(32% .009 260));--notion-gray:light-dark(oklch(49.6156% 0 none),oklch(76.9931% 0 none));--notion-brown:light-dark(oklch(49.6193% .076729 47.0007),oklch(72.1177% .06978 51.5251));--notion-orange:light-dark(oklch(50.809% .125385 50.7545),oklch(74.9562% .119548 58.3042));--notion-yellow:light-dark(oklch(53.0498% .109013 83.3347),oklch(79.1691% .120789 91.007));--notion-green:light-dark(oklch(48.6738% .106894 150.473),oklch(77.2447% .109142 150.919));--notion-blue:light-dark(oklch(48.7655% .145105 258.299),oklch(74.2163% .096488 256.078));--notion-purple:light-dark(oklch(50.9937% .130135 306.269),oklch(73.3435% .08358 307.588));--notion-pink:light-dark(oklch(52.2011% .152439 349.79),oklch(73.2326% .104846 347.163));--notion-red:light-dark(oklch(51.7553% .160529 24.7133),oklch(72.5673% .101637 19.8338));--content-wide:70rem;--content-index:45rem;--content-reading:46.25rem;--page-gutter:clamp(1rem,.3158rem + 2.807vw,2rem);--space-header:clamp(1.5rem,.9868rem + 2.1053vw,2.25rem);--space-home-start:clamp(2.5rem,1.3026rem + 4.9123vw,4.25rem);--space-article-start:clamp(2rem,1.2303rem + 3.1579vw,3.125rem);--space-section:4rem;--space-footer:clamp(4rem,2.6316rem + 5.614vw,6rem);--text-home-title:clamp(2rem,.3594rem + 4.375vw,2.875rem);--text-article-title:clamp(2rem,.3333rem + 4.4444vw,3rem);--text-body:clamp(1rem,.9572rem + .1754vw,1.0625rem);--text-description:clamp(1.0625rem,.977rem + .3509vw,1.1875rem);--text-section-title:clamp(1.5625rem,1.4342rem + .5263vw,1.75rem);--ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);--color-ink-start:oklch(59.6008% .245474 315.526);--color-ink-end:oklch(61.8552% .217987 .9569);--color-scrim:oklch(0% 0 none)}.dark{color-scheme:dark}@supports not (color:light-dark(white,black)){:root{--background:oklch(99.5% 0 0);--foreground:oklch(25% .008 260);--muted:oklch(96.7% .003 260);--muted-foreground:oklch(49% .012 260);--border:oklch(90% .006 260);--notion-gray:#626262;--notion-brown:#86543b;--notion-orange:#9c4c10;--notion-yellow:#8a6500;--notion-green:#28703e;--notion-blue:#245db0;--notion-purple:#794fa0;--notion-pink:#a63c76;--notion-red:#b23636}.dark{--background:oklch(19% .008 260);--foreground:oklch(92% .004 260);--muted:oklch(25% .009 260);--muted-foreground:oklch(69% .01 260);--border:oklch(32% .009 260);--notion-gray:#b4b4b4;--notion-brown:#c9997d;--notion-orange:#e69a5d;--notion-yellow:#d8b858;--notion-green:#7fc991;--notion-blue:#83aee8;--notion-purple:#b79bd2;--notion-pink:#d98db5;--notion-red:#df8c8c}}*{box-sizing:border-box;border-color:var(--border)}html{scroll-padding-block-start:2rem}body{background:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{text-underline-offset:.2em}@media (hover:hover) and (pointer:fine){a:hover:not(:where(.article-tweet a,.project-card)){text-decoration:underline}}a.ui-button:not([data-variant=link]){text-decoration:none}:focus-visible{outline-offset:4px;border-radius:2px;outline:2px solid}button:not(:disabled),summary{cursor:pointer}.site-shell{max-inline-size:var(--content-wide);padding-inline:var(--page-gutter);margin-inline:auto}.site-header{padding-block:var(--space-header);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:24px;font-size:.875rem;display:grid}.site-brand{letter-spacing:-.02em;white-space:nowrap;flex:none;font-weight:650}.site-footer,.site-footer-actions,.site-header-actions,.site-header-nav{color:var(--muted-foreground);align-items:center;display:flex}.site-header-nav{justify-self:center;gap:24px}.site-header-nav a{align-items:center;min-block-size:44px;display:inline-flex}.site-header-nav a[aria-current]{color:var(--foreground);text-underline-offset:6px;text-decoration:underline;text-decoration-thickness:2px}.site-header-actions{justify-self:end;gap:4px}.site-footer{border-block-start:1px solid var(--border);justify-content:space-between;gap:24px;margin-block-start:var(--space-footer);padding-block:28px;font-size:.8125rem}.site-footer-actions{gap:18px}.site-footer-actions nav{align-items:center;gap:18px;display:flex}.not-found-actions{flex-wrap:wrap;gap:12px;margin-block-start:32px;display:flex}.not-found-actions a{min-block-size:44px}.skip-link{background:var(--background);padding:12px;position:absolute;inset-block-start:-100px;inset-inline-start:16px}.skip-link:focus{inset-block-start:10px}.home{max-inline-size:var(--content-index);padding-block-start:var(--space-home-start)}.home h1{font-size:var(--text-home-title);letter-spacing:-.045em;font-weight:650;line-height:1.16}.home-intro{color:var(--muted-foreground);margin-block-start:20px;font-size:1.125rem}.article-index{margin-block-start:56px;padding:0;list-style:none}.article-index li{margin:0;padding:0}.article-index a{border-block-start:1px solid var(--border);grid-template-columns:100px minmax(0,1fr);align-items:baseline;gap:20px;padding-block:18px;font-size:1.0625rem;line-height:1.5;display:grid}.article-index time{color:var(--muted-foreground);font-variant-numeric:tabular-nums;font-size:.8125rem}@media (hover:hover) and (pointer:fine){.article-index a:hover{text-decoration:none}.article-index a:hover .article-index-title{text-decoration:underline}}.all-writing-link{align-items:center;gap:8px;margin-block-start:24px;font-size:.875rem;font-weight:600;display:inline-flex}.all-writing-link svg{block-size:16px;inline-size:16px}.article-header{max-inline-size:var(--content-reading);padding-block:var(--space-article-start) 2.5rem}.article-header h1{font-size:var(--text-article-title);letter-spacing:-.04em;text-wrap:balance;font-weight:650;line-height:1.16}.article-description{font-size:var(--text-description);line-height:1.6}.article-description,.article-meta{color:var(--muted-foreground);margin-block-start:22px}.article-meta{flex-wrap:wrap;gap:8px 18px;font-size:.8125rem;display:flex}.article-grid{grid-template-columns:minmax(0,740px) minmax(160px,1fr);align-items:start;gap:56px;display:grid}.article-body{min-inline-size:0;font-size:var(--text-body);overflow-wrap:anywhere;line-height:1.8}.article-body p{white-space:pre-wrap;margin-block:.85em}.article-body h2,.article-body h3,.article-body h4{letter-spacing:-.025em;text-wrap:pretty;margin-block:2em .7em;font-weight:650;line-height:1.35}.article-body>.mobile-toc:first-child+:is(h2,h3,h4),.article-body>:is(h2,h3,h4):first-child{margin-block-start:0}.article-body h2{font-size:var(--text-section-title)}.article-body h3{font-size:1.375rem}.article-body h4{font-size:1.1875rem}.article-body h2 a,.article-body h3 a,.article-body h4 a{color:inherit;text-decoration:none}.article-body a:not(:where(.article-tweet a)){text-decoration:underline}@supports (color:color-mix(in lab,red,red)){.article-body a:not(:where(.article-tweet a)){-webkit-text-decoration-color:color-mix(in oklch,currentColor 35%,transparent);text-decoration-color:color-mix(in oklch,currentColor 35%,transparent)}}@media (hover:hover) and (pointer:fine){.article-body a:hover:not(:where(.article-tweet a)){text-decoration-color:currentColor}}.article-body ol,.article-body ul{margin-block:.8em;padding-inline-start:1.65em}.article-body ul{list-style-type:disc}.article-body ol{list-style-type:decimal}.article-body li{margin-block:.35em;padding-inline-start:.25em}.article-body li>ol,.article-body li>ul{margin-block:.25em}.article-body blockquote{border-inline-start:3px solid var(--border);color:var(--muted-foreground);margin-block:28px;padding-inline-start:24px}.article-body code:not(pre code){background:var(--muted);overflow-wrap:anywhere;border-radius:4px;padding-block:.14em;padding-inline:.35em;font-size:.87em}.article-body figure{margin-block:32px}.article-body figcaption,.article-cover>figcaption{text-align:center;text-wrap:pretty;color:var(--muted-foreground);margin-block-start:12px;font-size:.8125rem;line-height:1.6}.article-body audio{max-inline-size:500px}.article-body audio,.article-image{inline-size:100%;margin-inline:auto;display:block}.article-image{border-radius:7px;block-size:auto;max-inline-size:100%}.article-cover{margin-block:0 40px;margin-inline:0}.article-cover .article-image{object-fit:cover;max-block-size:420px;inline-size:100%}.code-frame{border:1px solid var(--border);border-radius:10px;margin-block:28px;overflow:clip}.code-toolbar{background:var(--muted);color:var(--muted-foreground);justify-content:space-between;align-items:center;padding-block:6px;padding-inline:18px 12px;font-size:.75rem;display:flex}.code-frame pre{tab-size:2;margin:0;padding:20px;font-size:.8125rem;line-height:1.7;overflow-x:auto}.dark .shiki,.dark .shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}.code-frame code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.notion-columns{gap:28px;margin-block:24px;display:flex}.notion-column{flex:1;min-inline-size:0}.article-callout{align-items:baseline;gap:14px;margin-block:24px;display:flex}.article-callout [data-slot=alert-description]{min-inline-size:0;color:inherit;font-size:inherit;line-height:inherit;display:block}.article-callout p:first-child{margin-block-start:0}.article-callout p:last-child{margin-block-end:0}.notion-icon{object-fit:contain;flex:none;block-size:24px;inline-size:24px;font-size:1.25rem;display:inline-block}.article-divider{margin-block:36px}.article-toggle{margin-block:16px}.article-toggle>.toggle-content{padding-inline-start:24px}.article-check{align-items:baseline;gap:10px;margin-block:10px;display:flex}.article-check input{accent-color:var(--foreground)}.embed-frame{border:1px solid var(--border);background:var(--muted);border-radius:10px;inline-size:100%}.article-video{block-size:auto;display:block}.video-embed{aspect-ratio:16/9}.code-embed{block-size:480px}.bookmark-link{border:1px solid var(--border);overflow-wrap:anywhere;border-radius:8px;margin-block:18px;padding-block:14px;padding-inline:18px;font-size:.875rem;line-height:1.6;display:block}.bookmark-link small{color:var(--muted-foreground);font-size:.75rem;display:block}.article-table{margin-block:26px}.article-table th,.article-table th .rich-text{white-space:nowrap;font-weight:650}.article-table td{white-space:normal;vertical-align:top;min-inline-size:80px;max-inline-size:360px;font-size:.875rem;line-height:1.6}.article-table td:first-child{min-inline-size:120px}.article-table td,.article-table th{padding-block:12px;padding-inline:14px}.article-table a{overflow-wrap:anywhere}.toc{max-block-size:calc(100vh - 72px);font-size:.875rem;line-height:1.5;position:sticky;inset-block-start:36px;overflow-y:auto}.toc-title{text-transform:uppercase;letter-spacing:.09em;color:var(--muted-foreground);margin-block-end:14px;font-size:.75rem;font-weight:600}.toc-list{position:relative}.toc-list ol{border-inline-start:1px solid var(--border);margin:0;padding:0;list-style:none}.toc-indicator{pointer-events:none;background:var(--foreground);clip-path:inset(0 0 100%);inline-size:2px;position:absolute;inset-block:0;inset-inline:-1px auto}.toc a{color:var(--muted-foreground);transition:color .16s var(--ease-out);margin-inline-start:-1px;padding-block:6px;padding-inline:14px 8px;text-decoration:none;display:block}.toc a[aria-current=location]{color:var(--foreground)}.mobile-toc{border-block:1px solid var(--border);margin-block-end:28px;padding-block:16px;display:none}.mobile-toc summary{font-size:.875rem;font-weight:600}.mobile-toc .toc{max-block-size:none;margin-block-start:18px;position:static}.react-tweet-theme{--tweet-body-font-size:1rem;margin-inline:auto!important}@media (max-width:960px){.article-grid{grid-template-columns:minmax(0,740px)}.desktop-toc{display:none}.mobile-toc{display:block}}@media (max-width:600px){.site-header{flex-wrap:wrap;gap:8px;display:flex}.site-brand{flex-grow:1}.site-header-actions{flex-basis:100%;justify-content:end;gap:4px}.site-footer-actions>button,.site-header-actions>:is(a,button){block-size:44px;inline-size:44px}.site-footer-actions nav a{align-items:center;min-block-size:44px;display:inline-flex}.site-header-nav{gap:16px;font-size:.875rem}.notion-columns{flex-direction:column;gap:0}.article-index a{grid-template-columns:1fr;gap:4px}.site-footer{flex-wrap:wrap}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.desktop-toc{position:sticky;inset-block-start:36px}[data-notion-color=gray]{color:var(--notion-gray)}[data-notion-color=gray_background]{background:var(--notion-gray)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=gray_background]{background:color-mix(in oklch,var(--notion-gray) 12%,var(--background))}}[data-notion-color=gray_background]{border-radius:3px}[data-notion-color=brown]{color:var(--notion-brown)}[data-notion-color=brown_background]{background:var(--notion-brown)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=brown_background]{background:color-mix(in oklch,var(--notion-brown) 12%,var(--background))}}[data-notion-color=brown_background]{border-radius:3px}[data-notion-color=orange]{color:var(--notion-orange)}[data-notion-color=orange_background]{background:var(--notion-orange)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=orange_background]{background:color-mix(in oklch,var(--notion-orange) 12%,var(--background))}}[data-notion-color=orange_background]{border-radius:3px}[data-notion-color=yellow]{color:var(--notion-yellow)}[data-notion-color=yellow_background]{background:var(--notion-yellow)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=yellow_background]{background:color-mix(in oklch,var(--notion-yellow) 12%,var(--background))}}[data-notion-color=yellow_background]{border-radius:3px}[data-notion-color=green]{color:var(--notion-green)}[data-notion-color=green_background]{background:var(--notion-green)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=green_background]{background:color-mix(in oklch,var(--notion-green) 12%,var(--background))}}[data-notion-color=green_background]{border-radius:3px}[data-notion-color=blue]{color:var(--notion-blue)}[data-notion-color=blue_background]{background:var(--notion-blue)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=blue_background]{background:color-mix(in oklch,var(--notion-blue) 12%,var(--background))}}[data-notion-color=blue_background]{border-radius:3px}[data-notion-color=purple]{color:var(--notion-purple)}[data-notion-color=purple_background]{background:var(--notion-purple)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=purple_background]{background:color-mix(in oklch,var(--notion-purple) 12%,var(--background))}}[data-notion-color=purple_background]{border-radius:3px}[data-notion-color=pink]{color:var(--notion-pink)}[data-notion-color=pink_background]{background:var(--notion-pink)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=pink_background]{background:color-mix(in oklch,var(--notion-pink) 12%,var(--background))}}[data-notion-color=pink_background]{border-radius:3px}[data-notion-color=red]{color:var(--notion-red)}[data-notion-color=red_background]{background:var(--notion-red)}@supports (color:color-mix(in lab,red,red)){[data-notion-color=red_background]{background:color-mix(in oklch,var(--notion-red) 12%,var(--background))}}[data-notion-color=red_background]{border-radius:3px}.heading-anchor{opacity:0;color:var(--muted-foreground);padding-inline-start:.35em;font-weight:400}.heading-anchor:focus-visible{opacity:1}@media (hover:hover) and (pointer:fine){:is(h2,h3,h4):hover .heading-anchor{opacity:1}}.rich-text{white-space:pre-wrap}.image-lightbox-trigger{background:0 0;border:0;border-radius:7px;inline-size:100%;padding:0;display:block}.image-lightbox-trigger:not(:disabled){cursor:zoom-in}.image-lightbox-trigger:focus-visible{outline-width:1px}.image-lightbox{--background:transparent;--foreground:oklch(98% 0 none);--muted-foreground:oklch(100% 0 none/.7);--muted:oklch(100% 0 none/.1);--border:oklch(100% 0 none/.2);--ring:oklch(100% 0 none/.7);--lightbox-error-space:0px;block-size:100dvh;max-block-size:none;inline-size:100%;max-inline-size:none;color:var(--foreground);box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding-block:64px 24px;padding-inline:24px;animation:none;display:flex;overflow:visible}.image-lightbox:has(.lightbox-download-error){--lightbox-error-space:56px}.image-lightbox-overlay{background:oklch(0 0 none/.88)}.lightbox-frame{inline-size:min(100%,1440px,calc((100dvh - 168px - var(--lightbox-error-space)) * var(--image-ratio)));aspect-ratio:var(--image-ratio);transform-origin:0 0;background:0 0;border:0;flex:none;margin-inline:auto;padding:0;position:relative}.lightbox-frame:not(:disabled){cursor:zoom-out}.lightbox-frame:focus-visible{outline:none}.lightbox-image{object-fit:contain;-webkit-user-select:auto;user-select:auto;block-size:100%;inline-size:100%;display:block}.lightbox-full{transition:opacity .16s var(--ease-out)}.lightbox-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.lightbox-download,.lightbox-navigation{min-block-size:44px;color:var(--muted-foreground);cursor:pointer;transition:background-color .15s var(--ease-out),color .15s var(--ease-out);background:0 0;border:0;border-radius:7px;justify-content:center;align-items:center;gap:8px;padding-block:8px;padding-inline:12px;font-size:.8125rem;display:inline-flex}@media (hover:hover) and (pointer:fine){.lightbox-download:hover:not(:disabled),.lightbox-navigation:hover:not(:disabled){background:var(--muted);color:var(--foreground)}}.lightbox-download:active{background:var(--muted)}.lightbox-download:disabled{cursor:progress}.lightbox-navigation{min-inline-size:44px}.lightbox-navigation:disabled{opacity:.3;cursor:default}.lightbox-position{color:var(--muted-foreground);font-variant-numeric:tabular-nums;font-size:.8125rem}.lightbox-download-error{text-align:center;margin:0;font-size:.8125rem}@keyframes lightbox-feedback{0%{opacity:0;transform:translateY(3px)scale(.85)}to{opacity:1;transform:none}}@keyframes lightbox-spin{to{transform:rotate(1turn)}}.image-lightbox [data-slot=dialog-close]{block-size:44px;inline-size:44px;color:var(--foreground);background:0 0;place-items:center;display:grid;inset-block-start:12px;inset-inline-end:12px}.article-body figure.bookmark{margin-block:20px}.bookmark-card{border:1px solid var(--border);background:var(--background);border-radius:9px;align-items:stretch;display:flex;overflow:clip;text-decoration:none!important}@media (hover:hover) and (pointer:fine){.bookmark-card:hover{background:var(--muted)}}.bookmark-copy{flex-direction:column;flex:1;gap:7px;min-inline-size:0;padding-block:16px;padding-inline:18px;display:flex}.bookmark-title{font-size:.9375rem;font-weight:600;line-height:1.45}.bookmark-description{color:var(--muted-foreground);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.8125rem;line-height:1.5;display:-webkit-box;overflow:hidden}.bookmark-host{color:var(--muted-foreground);font-size:.75rem;line-height:1.4}.bookmark-image{object-fit:cover;border-inline-start:1px solid var(--border);flex:none;align-self:stretch;block-size:auto;max-block-size:180px;inline-size:180px;min-inline-size:0}@media (max-width:600px){.bookmark-image{max-block-size:180px;inline-size:100px}.bookmark-copy{padding:12px}.bookmark-title{font-size:.875rem}.bookmark-description{-webkit-line-clamp:2}.image-lightbox{padding-inline:12px}}@media (prefers-reduced-motion:reduce){.toc-indicator{transition:none}.image-lightbox,[data-slot=dialog-overlay]{transition:none;animation:none}}.link-preview-layer{z-index:80;pointer-events:none;position:fixed;inset:0}.link-preview-card{border:1px solid var(--border);position:fixed;overflow:clip}@supports (color:color-mix(in lab,red,red)){.link-preview-card{border:1px solid color-mix(in oklch,var(--border) 82%,transparent)}}.link-preview-card{background:var(--background);border-radius:12px}@supports (color:color-mix(in lab,red,red)){.link-preview-card{background:color-mix(in oklch,var(--background) 96%,transparent)}}.link-preview-card{box-shadow:0 12px 32px var(--color-scrim),0 2px 6px var(--color-scrim)}@supports (color:color-mix(in lab,red,red)){.link-preview-card{box-shadow:0 12px 32px color-mix(in oklch,var(--color-scrim) 17%,transparent),0 2px 6px color-mix(in oklch,var(--color-scrim) 8%,transparent)}}.link-preview-card{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.link-preview-media{aspect-ratio:1.91;border-block-end:1px solid var(--border);background:var(--muted);position:relative;overflow:clip}.link-preview-image-skeleton,.link-preview-media img{block-size:100%;inline-size:100%;position:absolute;inset:0}.link-preview-media img{object-fit:cover;opacity:0;transition:opacity .14s var(--ease-out)}.link-preview-media[data-ready=true] img{opacity:1}.link-preview-image-skeleton,.link-preview-text-skeleton span{background:linear-gradient(100deg,var(--muted) 30%,var(--muted) 50%,var(--muted) 70%)}@supports (color:color-mix(in lab,red,red)){.link-preview-image-skeleton,.link-preview-text-skeleton span{background:linear-gradient(100deg,var(--muted) 30%,color-mix(in oklch,var(--muted) 68%,var(--foreground)) 50%,var(--muted) 70%)}}.link-preview-image-skeleton,.link-preview-text-skeleton span{background-size:240% 100%}.link-preview-media[data-ready=true] .link-preview-image-skeleton{opacity:0}.link-preview-content{padding-block:14px 16px;padding-inline:16px}.link-preview-source{color:var(--muted-foreground);text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem;line-height:1.35;overflow:hidden}.link-preview-title{text-wrap:pretty;-webkit-line-clamp:2;margin-block-start:5px;font-size:.9375rem;font-weight:650;line-height:1.35}.link-preview-description,.link-preview-title{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.link-preview-description{color:var(--muted-foreground);-webkit-line-clamp:3;margin-block-start:6px;font-size:.75rem;line-height:1.45}.link-preview-text-skeleton{gap:8px;margin-block-start:10px;display:grid}.link-preview-text-skeleton span{border-radius:999px;block-size:10px}.link-preview-text-skeleton span:last-child{inline-size:68%}@keyframes link-preview-enter{0%{opacity:0;transform:scale(.97)}}@keyframes link-preview-shimmer{to{background-position:-140% 0}}@media (prefers-reduced-motion:reduce){.link-preview-card,.link-preview-image-skeleton,.link-preview-text-skeleton span{animation:none}.lightbox-download,.lightbox-full,.link-preview-media img{transition:none}.lightbox-download-icon,.lightbox-download[data-state=loading] svg{animation:none}.lightbox-download:active{transform:none}}.home-section{margin-block-start:var(--space-section)}.home-section h2{letter-spacing:-.025em;font-size:1.25rem;font-weight:650}.home-section .article-index,.project-index{margin-block-start:24px}.project-index{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:2.25rem 1.5rem;padding:0;list-style:none;display:grid}.projects-page .project-index{margin-block-start:48px}.project-card{block-size:100%;text-decoration:none;display:block}.project-card-preview{isolation:isolate;aspect-ratio:16/10;background:var(--muted);outline-offset:-1px;border-radius:8px;outline:1px solid oklch(0 0 none/.1);position:relative;overflow:clip}.dark .project-card-preview{outline-color:oklch(100% 0 none/.1)}.project-card-preview:after{content:"";opacity:.14;pointer-events:none;transition:opacity .15s var(--ease-out);background:oklch(76% .045 75);position:absolute;inset:0}.project-card-image{object-fit:cover;filter:saturate(.5)contrast(.96);block-size:100%;inline-size:100%;transition:filter .15s var(--ease-out)}.project-card:focus-visible .project-card-image{filter:saturate(.8)contrast();transform:scale(1.025)}.project-card:focus-visible .project-card-preview:after{opacity:.06}@media (hover:hover) and (pointer:fine){.project-card:hover .project-card-image{filter:saturate(.8)contrast();transform:scale(1.025)}.project-card:hover .project-card-preview:after{opacity:.06}}@media (prefers-reduced-motion:reduce){.project-card-image,.project-card-preview:after{transition:none}.project-card .project-card-image{transform:none}}.project-card-fallback{block-size:100%;color:var(--muted-foreground);place-items:center;font-size:3rem;display:grid}.project-card-fallback .notion-icon{block-size:64px;inline-size:64px}.project-card-heading{margin-block-start:16px}.project-card-heading :is(h2,h3){letter-spacing:-.02em;text-wrap:pretty;font-size:1.0625rem;font-weight:600;line-height:1.4}.project-card p{text-wrap:pretty;margin-block-start:6px;line-height:1.6}.project-back,.project-card p{color:var(--muted-foreground);font-size:.875rem}.project-back{align-items:center;gap:8px;margin-block-end:24px;display:inline-flex}.project-back svg{block-size:16px;inline-size:16px}.project-actions{flex-wrap:wrap;gap:12px;margin-block-start:24px;display:flex}.project-actions:empty{display:none}@supports (grid-template-rows:subgrid){.project-index{row-gap:.375rem}.project-index>li{margin-block-end:1.875rem}.project-card,.project-index>li{grid-row:span 3;grid-template-rows:subgrid;display:grid}.project-card-preview{align-self:start}.project-card-heading{margin-block-start:.625rem}.project-card p{margin-block-start:0}}::view-transition{pointer-events:none}::view-transition-old(root){display:none}::view-transition-new(root){animation:none}::view-transition-group(.project-image-morph){animation-duration:.28s;animation-timing-function:var(--ease-in-out)}::view-transition-group(.project-text-morph){animation-duration:.28s;animation-timing-function:var(--ease-in-out)}::view-transition-old(.project-image-morph){object-fit:cover;block-size:100%;animation-duration:.28s;animation-timing-function:var(--ease-in-out);border-radius:8px;overflow:clip}::view-transition-new(.project-image-morph){object-fit:cover;block-size:100%;animation-duration:.28s;animation-timing-function:var(--ease-in-out);border-radius:8px;overflow:clip}::view-transition-old(.project-text-morph){display:none}::view-transition-new(.project-text-morph){object-fit:none;object-position:left top;animation:none}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation-duration:0s!important;animation-delay:0s!important}::view-transition-old(*){animation-duration:0s!important;animation-delay:0s!important}::view-transition-new(*){animation-duration:0s!important;animation-delay:0s!important}}.article-tweet .react-tweet-theme>article>div:first-child{padding-block-end:0}.article-tweet .react-tweet-theme>article>div:first-child a{align-items:center;min-block-size:24px;display:inline-flex}.content-back{border-block-start:1px solid var(--border);margin-block-start:48px;padding-block-start:24px}.content-back a{align-items:center;gap:8px;font-size:.875rem;display:inline-flex}.link{border-color:var(--color-muted-foreground);-webkit-box-decoration-break:clone;box-decoration-break:clone;background:50% 100%/0 .1rem no-repeat border-box;border-block-end-width:.1rem;padding-block-end:.15em;transition:unset;text-decoration:none!important}.link:active,.link:focus-visible{background-image:linear-gradient(90.68deg,var(--color-ink-start) .26%,var(--color-ink-end) 102.37%);background-position:0 100%;background-repeat:no-repeat;background-size:100% .1rem;border-block-end-color:#0000}.project-hero-video{background:var(--muted);border-radius:7px;position:relative;overflow:clip}.project-hero-video video{block-size:auto;inline-size:100%;display:block}.project-hero-play{cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid}.project-hero-play,.project-hero-poster{block-size:100%;inline-size:100%;position:absolute;inset:0}.project-hero-poster{object-fit:cover}.project-hero-play-icon{color:oklch(100% 0 none);background:var(--color-scrim);border-radius:50%;place-items:center;block-size:64px;inline-size:64px;display:grid;position:relative}@supports (color:color-mix(in lab,red,red)){.project-hero-play-icon{background:color-mix(in oklch,var(--color-scrim) 65%,transparent)}}.project-hero-play:focus-visible{outline:3px solid var(--foreground);outline-offset:-5px}@media (hover:hover) and (pointer:fine){.project-hero-play:hover .project-hero-play-icon{background:var(--color-scrim)}@supports (color:color-mix(in lab,red,red)){.project-hero-play:hover .project-hero-play-icon{background:color-mix(in oklch,var(--color-scrim) 85%,transparent)}}.link:hover{background-image:linear-gradient(90.68deg,var(--color-ink-start) .26%,var(--color-ink-end) 102.37%);background-position:0 100%;background-repeat:no-repeat;background-size:100% .1rem;border-block-end-color:#0000}}a:not(:where(.article-tweet a)):active{opacity:.8}summary:active{color:var(--muted-foreground)}.ui-button:not(:disabled):active{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ui-button:not(:disabled):active{background-color:color-mix(in oklch,var(--foreground) 12%,var(--background))}}.ui-button[data-variant=default]:not(:disabled):active{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ui-button[data-variant=default]:not(:disabled):active{background-color:color-mix(in oklch,var(--foreground) 80%,var(--background))}}.ui-button[data-variant=destructive]:not(:disabled):active{background-color:oklch(55% .2 27)}@supports (color:color-mix(in lab,red,red)){.ui-button[data-variant=destructive]:not(:disabled):active{background-color:color-mix(in oklch,var(--color-destructive) 80%,var(--background))}}.ui-button{transition:background-color .15s var(--ease-out),color .15s var(--ease-out),border-color .15s var(--ease-out)}.ui-button:focus-visible{outline-color:var(--foreground)}.lightbox-navigation:not(:disabled):active,[data-slot=dialog-close]:active{background:var(--muted)}.project-card:active .project-card-preview:after{opacity:.06}.bookmark-card:active{background:var(--muted)}.image-lightbox-trigger:active{opacity:.85}.project-hero-play:active .project-hero-play-icon{background:var(--color-scrim)}@supports (color:color-mix(in lab,red,red)){.project-hero-play:active .project-hero-play-icon{background:color-mix(in oklch,var(--color-scrim) 85%,transparent)}}@media (prefers-reduced-motion:no-preference){.project-card-image{transition:transform .15s var(--ease-out),filter .15s var(--ease-out)}.lightbox-download{transition:transform .15s var(--ease-out),background-color .15s var(--ease-out),color .15s var(--ease-out)}.lightbox-download:not(:disabled):active{transform:scale(.96)}.lightbox-download-icon{animation:lightbox-feedback .2s var(--ease-out)}.lightbox-download[data-state=loading] svg{animation:lightbox-spin 1s linear infinite}.link-preview-card{animation:link-preview-enter .125s var(--ease-out)}.link-preview-image-skeleton,.link-preview-text-skeleton span{animation:link-preview-shimmer 1.5s var(--ease-in-out) infinite}.link{transition:background-position .3s var(--ease-out),background-size .3s var(--ease-out)}}@media (any-pointer:coarse){.search-dialog .search-clear,.search-dialog .search-escape,.site-footer-actions>button,.site-header-actions>:is(a,button){min-block-size:44px;min-inline-size:44px}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@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-tracking{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}@property --tw-duration{syntax:"*";inherits:false}