.lamp-study[data-astro-cid-s7htbirf]{width:4rem;height:3.25rem;color:var(--ink);--lamp-paper:var(--page);--lamp-metal:var(--plate-soft);flex:none;margin-bottom:-1.5px;display:inline-flex;position:relative}.lamp-study--showcase[data-astro-cid-s7htbirf]{--lamp-axis:36.8421%;aspect-ratio:76/62;width:clamp(12rem,48vw,17rem);height:auto;transform:translateX(calc(50% - var(--lamp-axis)));margin:0}.lamp-study--showcase[data-astro-cid-s7htbirf] .lamp-study__whisper[data-astro-cid-s7htbirf]{left:var(--lamp-axis);max-width:min(19rem,80vw);font-size:.8125rem;top:calc(100% + .5rem)}.lamp-study__button[data-astro-cid-s7htbirf]{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:.5rem;width:100%;height:100%;padding:0;display:block}.lamp-study__button[data-astro-cid-s7htbirf]:focus-visible{outline:1.5px solid var(--ink);outline-offset:3px}svg[data-astro-cid-s7htbirf]{width:100%;height:100%;display:block;overflow:visible}.lamp-study__arm[data-astro-cid-s7htbirf]{stroke-width:4.8px}.lamp-study__arm-inner[data-astro-cid-s7htbirf]{stroke:var(--lamp-paper);stroke-width:1.7px}.lamp-study__cable[data-astro-cid-s7htbirf]{stroke-width:.7px;opacity:.55}.lamp-study__screw[data-astro-cid-s7htbirf]{stroke:var(--lamp-paper);stroke-width:.65px}.lamp-study__vents[data-astro-cid-s7htbirf]{stroke-width:.65px;opacity:.65}.lamp-study__filament[data-astro-cid-s7htbirf]{stroke:currentColor;stroke-width:.55px;opacity:.65}.lamp-study__contact[data-astro-cid-s7htbirf]{opacity:.12}.lamp-study__switch[data-astro-cid-s7htbirf]{transform-origin:30px 50px;transition:transform .22s}.lamp-study[data-astro-cid-s7htbirf][data-powered=false] .lamp-study__switch[data-astro-cid-s7htbirf]{transform:rotate(-38deg)}.lamp-study__indicator[data-astro-cid-s7htbirf]{opacity:.6;transition:opacity .2s,fill .2s}.lamp-study[data-astro-cid-s7htbirf][data-powered=false] .lamp-study__indicator[data-astro-cid-s7htbirf]{opacity:.2}[data-theme=dark] .lamp-study[data-astro-cid-s7htbirf][data-powered=true] .lamp-study__indicator[data-astro-cid-s7htbirf]{fill:#f4d799;opacity:.85}.lamp-study__spring[data-astro-cid-s7htbirf]{stroke-width:.8px}.lamp-study__joint[data-astro-cid-s7htbirf],.lamp-study__shade[data-astro-cid-s7htbirf],.lamp-study__base[data-astro-cid-s7htbirf]{fill:var(--lamp-metal);stroke-width:1.6px}.lamp-study__neck[data-astro-cid-s7htbirf]{fill:var(--lamp-metal);stroke-width:1.3px}.lamp-study__opening[data-astro-cid-s7htbirf]{fill:var(--lamp-paper);stroke-width:1.3px}.lamp-study__seam[data-astro-cid-s7htbirf]{stroke-width:.8px;opacity:.65}.lamp-study__bulb[data-astro-cid-s7htbirf]{fill:var(--lamp-metal);stroke-width:.8px;transition:fill .2s}.lamp-study__filament--broken[data-astro-cid-s7htbirf],.lamp-study__sparks[data-astro-cid-s7htbirf],.lamp-study[data-astro-cid-s7htbirf][data-broken] .lamp-study__filament--intact[data-astro-cid-s7htbirf]{display:none}.lamp-study[data-astro-cid-s7htbirf][data-broken] .lamp-study__filament--broken[data-astro-cid-s7htbirf]{display:initial}.lamp-study[data-astro-cid-s7htbirf][data-broken] .lamp-study__bulb[data-astro-cid-s7htbirf]{fill:var(--lamp-paper)}.lamp-study[data-astro-cid-s7htbirf][data-broken] .lamp-study__indicator[data-astro-cid-s7htbirf]{fill:#a77953;opacity:.65}.lamp-study[data-astro-cid-s7htbirf][data-broken] .lamp-study__sparks[data-astro-cid-s7htbirf]{display:initial;color:#c59136;stroke:currentColor;pointer-events:none}[data-theme=dark] .lamp-study__sparks[data-astro-cid-s7htbirf]{color:#ffd58a;filter:drop-shadow(0 0 1px #e9ab4b)}.lamp-study__spark-core[data-astro-cid-s7htbirf]{stroke:#fff0b7;stroke-width:1.5px;opacity:0;animation:2.7s linear infinite lamp-spark-core}.lamp-study__spark-bolt[data-astro-cid-s7htbirf]{stroke-width:.9px;stroke-dasharray:18;stroke-dashoffset:18px;opacity:0;animation:2.7s linear infinite lamp-spark-bolt}.lamp-study__spark-flecks[data-astro-cid-s7htbirf]{stroke-width:.8px;opacity:0;transform-box:fill-box;transform-origin:50%;animation:2.7s ease-out infinite lamp-spark-flecks}@keyframes lamp-spark-core{0%,2%,5%{opacity:1}1%,4%,7%,to{opacity:0}}@keyframes lamp-spark-bolt{0%{opacity:0;stroke-dashoffset:18px}1%{opacity:1}3%{opacity:0;stroke-dashoffset:0}5%{opacity:1}8%,to{opacity:0;stroke-dashoffset:-18px}}@keyframes lamp-spark-flecks{0%{opacity:0;transform:scale(.65)}3%{opacity:1}9%,to{opacity:0;transform:scale(1.4)translateY(2px)}}.lamp-study__beam[data-astro-cid-s7htbirf],.lamp-study__spot[data-astro-cid-s7htbirf]{opacity:0;pointer-events:none;transition:opacity .22s}.lamp-study__spot[data-astro-cid-s7htbirf]{z-index:5;mix-blend-mode:screen;background:radial-gradient(circle,#ffd7821c 0%,#ffd7820a 38%,#0000 70%);border-radius:50%;width:160px;height:160px;margin:-80px;position:fixed;top:0;left:0}[data-theme=dark] .lamp-study[data-astro-cid-s7htbirf]{color:#c7beb0;--lamp-paper:#201e19;--lamp-metal:#302b24}[data-theme=dark] .lamp-study[data-astro-cid-s7htbirf][data-powered=true] .lamp-study__beam[data-astro-cid-s7htbirf],[data-theme=dark] .lamp-study__spot[data-astro-cid-s7htbirf][data-active]{opacity:1}[data-theme=dark] .lamp-study[data-astro-cid-s7htbirf][data-powered=true] .lamp-study__bulb[data-astro-cid-s7htbirf]{fill:#f4d799;stroke:#d5b880;filter:drop-shadow(0 0 3px #f1c76f)}.lamp-study__whisper[data-astro-cid-s7htbirf]{text-align:center;width:max-content;max-width:12rem;color:var(--muted);opacity:0;pointer-events:none;font-size:.6875rem;line-height:1.4;transition:opacity .18s,transform .18s;position:absolute;top:calc(100% + .3rem);left:50%;transform:translate(-50%,-3px)}.lamp-study[data-astro-cid-s7htbirf][data-speaking] .lamp-study__whisper[data-astro-cid-s7htbirf]{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){[data-astro-cid-s7htbirf]{transition:none!important}.lamp-study__beam[data-astro-cid-s7htbirf],.lamp-study__spot[data-astro-cid-s7htbirf],.lamp-study__sparks[data-astro-cid-s7htbirf]{display:none!important}}.site-topbar[data-astro-cid-egu2lssj]:has([data-lamp-study]){flex-wrap:wrap;row-gap:.75rem}.site-topbar[data-astro-cid-egu2lssj] .site-topbar__identity[data-astro-cid-egu2lssj]{align-items:flex-end;height:2.25rem}.site-topbar__right[data-astro-cid-egu2lssj]{position:relative}.post-lamp-slot[data-astro-cid-egu2lssj]{align-items:flex-end;width:4rem;height:2.25rem;display:inline-flex;position:absolute;bottom:0;right:calc(100% + .5rem)}@media (width<=47.999rem){.site-topbar__right--post[data-astro-cid-egu2lssj] .post-lamp-slot[data-astro-cid-egu2lssj]{right:calc(100% - 2rem)}.site-topbar__right--post[data-astro-cid-egu2lssj] .search-button[data-astro-cid-egu2lssj]{transform:translate(-5rem)}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--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-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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"Geist Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"Geist Mono Variable", ui-monospace, monospace;--spacing:.25rem;--ease-out:cubic-bezier(0, 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);--ease-lift:cubic-bezier(.23, 1, .32, 1);--ease-swap:cubic-bezier(.2, 0, 0, 1);--ease-morph:cubic-bezier(.65, 0, .35, 1);--ease-plate:cubic-bezier(.215, .61, .355, 1);--text-display:clamp(1.75rem, 1.31rem + 1.878vw, 3rem);--text-body:clamp(.875rem, .806rem + .293vw, 1rem)}}@layer base{*,:after,:before,::backdrop{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}html,:host{-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]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{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}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,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{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-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{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{background-color:var(--page);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior:none;line-height:1.5}body{background-color:var(--page);overscroll-behavior:none;min-height:100svh;margin:0;overflow-x:clip}::selection{background-color:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}h1,h2,h3,h4,p{margin:0}img,svg{display:block}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer components{.shell{flex-direction:column;width:100%;max-width:86rem;min-height:100svh;margin-inline:auto;padding-inline:1.25rem;display:flex}@media (width>=48rem){.shell{padding-inline:2rem}}.nav-link{color:var(--muted);transition:color .2s var(--ease-out);font-size:.875rem;text-decoration:none;position:relative}.nav-link:hover,.nav-link[aria-current=page]{color:var(--ink)}.nav-link[aria-current=page]:after{content:"";background-color:currentColor;height:1px;position:absolute;bottom:-.35rem;left:0;right:0}.link-underline{color:var(--ink-soft);text-decoration:underline;-webkit-text-decoration-color:var(--rule);-webkit-text-decoration-color:var(--rule);text-decoration-color:var(--rule);text-underline-offset:4px;transition:color .2s var(--ease-out), text-decoration-color .2s var(--ease-out);text-decoration-thickness:1px}.link-underline:hover{color:var(--ink);text-decoration-color:currentColor}.skip-link{z-index:100;border:1px solid var(--rule);background-color:var(--surface);color:var(--ink);transition:translate .2s var(--ease-lift);border-radius:.5rem;padding:.6rem .8rem;font-size:.875rem;text-decoration:none;position:fixed;top:.75rem;left:.75rem;translate:0 -200%}.skip-link:focus{translate:0}.footer-pill{border:1px solid var(--rule);background-color:var(--plate-soft);color:var(--ink-soft);transition:background-color .18s var(--ease-out), border-color .18s var(--ease-out);border-radius:9999px;align-items:center;gap:.375rem;padding:.125rem .5rem .125rem .125rem;text-decoration:none;display:inline-flex}.footer-pill:hover{background-color:var(--plate);color:var(--ink)}.footer-pill img{border-radius:9999px;width:1.125rem;height:1.125rem;display:block}.hover-plate{z-index:-1;background-color:var(--plate-soft);opacity:0;pointer-events:none;height:0;transition:opacity .2s var(--ease-out), transform .45s var(--ease-plate), height .45s var(--ease-plate);border-radius:.75rem;position:absolute;top:0;left:-.75rem;right:-.75rem}.hover-plate[data-active]{opacity:1}@media (pointer:coarse){.hover-plate{display:none}}.post-row{border-top:1px solid var(--rule);grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:1rem;display:grid;position:relative}.post-row:first-child{border-top:0}.post-link{color:var(--ink);grid-template-columns:3ch minmax(0,1fr);align-items:baseline;column-gap:.75rem;padding-block:.75rem;text-decoration:none;display:grid}.post-link:after{content:"";position:absolute;inset:0}@media (width>=48rem){.post-link{column-gap:1rem;padding-block:.9rem}}.post-mark{width:3ch;color:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.75rem;line-height:1.5;display:grid}.post-mark>span{transition:opacity .18s var(--ease-swap), filter .18s var(--ease-swap), transform .28s var(--ease-lift);grid-area:1/1}.post-mark-arrow{color:var(--ink);opacity:0;filter:blur(4px);transform:translateY(3px)}.post-link:hover .post-mark-index,.post-link:focus-visible .post-mark-index{opacity:0;filter:blur(4px)}.post-link:hover .post-mark-arrow,.post-link:focus-visible .post-mark-arrow{opacity:1;filter:none;transform:none}.pulse-heart{--ph-size:1rem;--ph-corner:.8rem;--ph-pill:var(--plate-soft);--ph-idle:var(--muted);--ph-liked:var(--ink);--ph-text:var(--ink);--ph-ring:var(--rule);--ph-roll:.35s;--ph-ease-out:var(--ease-lift);z-index:1;border-radius:var(--ph-corner);color:var(--ph-text);font-family:var(--font-mono);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:transform .16s var(--ph-ease-out);background:0 0;border:0;outline:none;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex;position:relative}.pulse-heart[data-pressed]{transform:scale(.97)}.pulse-heart:focus-visible{outline:2px solid var(--ph-liked)}@supports (color:color-mix(in lab, red, red)){.pulse-heart:focus-visible{outline:2px solid color-mix(in srgb, var(--ph-liked) 60%, transparent)}}.pulse-heart:focus-visible{outline-offset:3px}.pulse-heart__pill{align-items:center;gap:calc(var(--ph-size) * .25);padding:calc(var(--ph-size) * .3);border-radius:var(--ph-corner);background:var(--ph-pill);box-shadow:inset 0 0 0 1px var(--ph-ring);transform-origin:50%;padding-inline-end:calc(var(--ph-size) * .4);display:inline-flex}.pulse-heart[data-bare] .pulse-heart__pill{gap:calc(var(--ph-size) * .35);box-shadow:none;background:0 0;border-radius:0;padding:0}.pulse-heart__heart{width:var(--ph-size);height:var(--ph-size);color:var(--ph-idle);transform-origin:50%;transition:color .16s;display:block;position:relative}.pulse-heart__outline,.pulse-heart__fill,.pulse-heart__filled{width:100%;height:100%;display:block;position:absolute;inset:0}.pulse-heart__outline path,.pulse-heart__filled path{fill:currentColor;shape-rendering:crispedges}.pulse-heart__fill{clip-path:inset(100% 0 0);transition:clip-path .42s steps(4,end)}.pulse-heart[data-liked=true] .pulse-heart__fill{clip-path:inset(0)}.pulse-heart[data-liked=true] .pulse-heart__heart{color:var(--ph-liked)}.pulse-heart__beat{opacity:0}.pulse-heart[data-liked=true] .pulse-heart__beat--1{animation:1s step-end infinite pulse-heart-beat-1}.pulse-heart[data-liked=true] .pulse-heart__beat--2{animation:1s step-end infinite pulse-heart-beat-2}.pulse-heart[data-liked=true] .pulse-heart__beat--3{animation:1s step-end infinite pulse-heart-beat-3}@media (hover:hover) and (pointer:fine){.pulse-heart:not([data-liked=true]):hover .pulse-heart__heart{color:var(--ph-idle)}@supports (color:color-mix(in lab, red, red)){.pulse-heart:not([data-liked=true]):hover .pulse-heart__heart{color:color-mix(in srgb, var(--ph-idle) 45%, var(--ph-liked))}}.pulse-heart:not([data-liked=true]):hover .pulse-heart__outline{animation:1s step-end infinite pulse-heart-outline-beat}}.pulse-heart:not([data-liked=true]):focus-visible .pulse-heart__outline{animation:1s step-end infinite pulse-heart-outline-beat}.pulse-heart__count{font-size:calc(var(--ph-size) * .75);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ph-text);font-weight:600;line-height:1;display:inline-flex}.pulse-heart__count>span{height:1em;display:block}.pulse-heart__slot{position:relative;overflow:hidden}.pulse-heart__roll{transition:transform var(--ph-roll) var(--ph-ease-out);flex-direction:column;display:flex}.pulse-heart__roll>span{height:1em;line-height:1;display:block}@media (pointer:coarse){.pulse-heart{min-width:44px;min-height:44px}}@media (prefers-contrast:more){.pulse-heart__pill{box-shadow:inset 0 0 0 1px var(--ph-text)}@supports (color:color-mix(in lab, red, red)){.pulse-heart__pill{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ph-text) 25%, transparent)}}}@media (prefers-reduced-motion:reduce){.pulse-heart{transition:none}.pulse-heart__heart{transition:color .2s}.pulse-heart__roll,.pulse-heart__fill{transition:none}.pulse-heart__outline,.pulse-heart__beat{animation:none!important}}@keyframes pulse-heart-outline-beat{0%{transform:scale(1)}8.333%{transform:scale(1.16)}16.667%{transform:scale(1)}33.333%{transform:scale(1.1)}41.667%,to{transform:scale(1)}}@keyframes pulse-heart-beat-1{0%{opacity:0}8.333%{opacity:1}16.667%,to{opacity:0}}@keyframes pulse-heart-beat-2{0%{opacity:0}16.667%{opacity:1}25%,to{opacity:0}}@keyframes pulse-heart-beat-3{0%{opacity:0}33.333%{opacity:1}41.667%,to{opacity:0}}.sling-button{--sl-pad:var(--ink);--sl-icon:var(--page);--sl-well:var(--plate);--sl-band:var(--muted)}@supports (color:color-mix(in lab, red, red)){.sling-button{--sl-band:color-mix(in srgb, var(--muted) 65%, var(--rule))}}.sling-button{--sl-accent:var(--ink);--sl-stroke:3px;--sl-dot:8px;--sl-ease-out:var(--ease-lift);width:var(--sl-size);height:var(--sl-size);display:inline-block;position:relative}.sling-button__fx{width:var(--sl-svg);height:var(--sl-svg);margin:calc(var(--sl-svg) / -2) 0 0 calc(var(--sl-svg) / -2);pointer-events:none;shape-rendering:geometricprecision;position:absolute;top:50%;left:50%;overflow:visible}.sling-button__well{fill:var(--sl-well);transition:fill .2s}.sling-button[data-sent] .sling-button__well{fill:var(--sl-accent)}.sling-button__band{fill:none;stroke:var(--sl-band);stroke-width:var(--sl-stroke);stroke-linecap:round;transition:stroke-width .16s var(--sl-ease-out)}.sling-button[data-armed] .sling-button__band{stroke-width:calc(var(--sl-stroke) * 1.5)}.sling-button__band--hot{stroke:var(--sl-accent)}.sling-button__arc{fill:none;stroke:var(--sl-accent);stroke-width:var(--sl-stroke);stroke-linecap:butt;transition:stroke-width .16s var(--sl-ease-out)}.sling-button[data-armed] .sling-button__arc{stroke-width:calc(var(--sl-stroke) * 1.5)}.sling-button__move{will-change:transform;position:absolute;inset:0}.sling-button__pad{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;background:0 0;border:0;border-radius:50%;width:100%;height:100%;margin:0;padding:0;display:block;position:relative}.sling-button__pad:focus-visible{outline:2px solid var(--sl-accent);outline-offset:4px}.sling-button__pad:after{content:"";border-radius:50%;position:absolute;inset:-6px}.sling-button__pad[data-held]{cursor:grabbing}.sling-button__face{background:var(--sl-pad);width:100%;height:100%;color:var(--sl-icon);transition:transform .16s var(--sl-ease-out);border-radius:50%;justify-content:center;align-items:center;display:flex}.sling-button__pad[data-held] .sling-button__face{transform:scale(.97)}.sling-button__pad[data-armed] .sling-button__face{transform:scale(1.04)}@media (hover:hover) and (pointer:fine){.sling-button__pad:not([data-held]):hover .sling-button__face{transform:scale(1.02)}}.sling-button__icon{will-change:transform;display:inline-flex}.sling-button__dot{width:var(--sl-dot);height:var(--sl-dot);margin:calc(var(--sl-dot) / -2) 0 0 calc(var(--sl-dot) / -2);background:var(--sl-accent);opacity:0;pointer-events:none;border-radius:50%;position:absolute;top:50%;left:50%}.sling-button__sr{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.sling-button__face{transition:none;transform:none!important}}.divider{width:100%}.divider--xl .curved-loop__svg{aspect-ratio:100/12}.divider--mid .curved-loop__svg{aspect-ratio:100/9}.divider--large .curved-loop__svg{aspect-ratio:100/6}.curved-loop{width:100%;color:var(--ink);--cl-separator:var(--ink);text-transform:uppercase;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden}.curved-loop[data-interactive]{cursor:grab;touch-action:pan-y}.curved-loop[data-dragging]{cursor:grabbing}.curved-loop__svg{aspect-ratio:100/4.5;fill:currentColor;width:100%;height:auto;line-height:1;display:block;overflow:hidden}.curved-loop:not([data-ready]) .curved-loop__svg{visibility:hidden}.curved-loop__measure{visibility:hidden;opacity:0;pointer-events:none}.curved-loop__mark{fill:var(--cl-separator)}.post-list{isolation:isolate;position:relative}animated-text{display:block}.line-mask{clip-path:inset(-.16em -.5em);display:block}.line{will-change:transform;display:block}.article-title{font-size:var(--text-display);letter-spacing:-.02em;text-wrap:balance;font-weight:500;line-height:1.08}.prose{max-width:44rem;color:var(--ink-soft);font-size:1.0625rem;line-height:1.75}.prose>*+*{margin-top:1.35em}.prose>h2,.prose>h3{color:var(--ink);letter-spacing:-.02em;text-wrap:balance;scroll-margin-top:2rem;font-weight:500;line-height:1.2}.prose>h2{margin-top:2.6em;font-size:1.75rem}.prose>h3{margin-top:2.1em;font-size:1.25rem}.prose>*+h2,.prose>*+h3{margin-top:2.6em}.prose strong{color:var(--ink);font-weight:500}.prose em{font-style:italic}.prose a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--accent);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.prose a{-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 55%, var(--rule));-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 55%, var(--rule));text-decoration-color:color-mix(in srgb, var(--accent) 55%, var(--rule))}}.prose a{text-underline-offset:3px;transition:text-decoration-color .18s var(--ease-out);text-decoration-thickness:1px}.prose a:hover{text-decoration-color:currentColor}.prose ul,.prose ol{padding-left:1.3em}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li{padding-left:.2em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--muted)}.prose blockquote{border-left:2px solid var(--accent);color:var(--ink);text-wrap:pretty;margin-block:2em;padding-left:1.35rem;font-size:1.2rem;line-height:1.55}.prose blockquote>*+*{margin-top:.75em}.prose hr{border:0;border-top:1px solid var(--rule);margin-block:3em}.prose :not(pre)>code{border:1px solid var(--rule);background-color:var(--plate-soft);color:var(--ink);font-family:var(--font-mono);border-radius:.35rem;padding:.12em .38em;font-size:.85em}.prose pre{border:1px solid var(--rule);background-color:var(--surface);tab-size:2;border-radius:.75rem;padding:1.1rem 1.25rem;font-size:.8125rem;line-height:1.7;overflow-x:auto}.prose pre code{font-family:var(--font-mono);font-size:inherit;background:0 0;padding:0}.prose img{border-radius:.75rem;width:100%;height:auto}.prose figure{margin-block:2.25em}.prose figcaption{color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;margin-top:.65rem;font-size:.6875rem;line-height:1.5}.reading-progress{z-index:60;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.reading-progress span{transform-origin:0;background-color:var(--accent);height:100%;display:block;transform:scaleX(0)}:root[data-theme-pointer]{cursor:pointer}.theme-button{height:2.25rem;color:var(--ink);transition:background-color .18s var(--ease-out);border-radius:9999px;align-items:center;gap:.1rem;display:inline-flex;position:relative}.theme-button:hover,.theme-button:focus-visible,.theme-button[data-hover]{background-color:var(--plate-soft)}.theme-caption{transition:grid-template-columns .3s var(--ease-lift);grid-template-columns:0fr;display:grid}.theme-button:hover .theme-caption,.theme-button:focus-visible .theme-caption,.theme-button[data-hover] .theme-caption{grid-template-columns:1fr}.theme-caption>span{min-width:0;overflow:hidden}.theme-caption-inner{color:var(--muted);font-family:var(--font-mono);opacity:0;filter:blur(4px);transition:opacity .18s var(--ease-out), filter .18s var(--ease-out), translate .28s var(--ease-lift);padding-left:.5rem;font-size:.6875rem;display:block;translate:4px}.theme-button:hover .theme-caption-inner,.theme-button:focus-visible .theme-caption-inner,.theme-button[data-hover] .theme-caption-inner{opacity:1;filter:none;translate:0}.theme-when-dark,[data-theme=dark] .theme-when-light{display:none}[data-theme=dark] .theme-when-dark{display:inline}.theme-glyph{fill:currentColor;width:1.25rem;height:1.25rem;display:block;overflow:visible}.theme-glyph-stage{position:relative}.theme-zzz{color:var(--ink);font-family:var(--font-mono);pointer-events:none;font-size:.375rem;font-weight:600;line-height:1;position:absolute;top:.625rem;left:1.375rem}.theme-zzz span{opacity:0;position:absolute}.sound-button{width:2.25rem;height:2.25rem;color:var(--ink);transition:background-color .18s var(--ease-out);border-radius:9999px;justify-content:center;align-items:center;display:inline-flex;position:relative}.sound-button:hover,.sound-button:focus-visible{background-color:var(--plate-soft)}.search-button svg{width:1.25rem;height:1.25rem;display:block}@media (width>=48rem){.search-button{display:none}}.sound-glyphs{width:1.25rem;height:1.25rem;display:block;position:relative}.sound-glyph{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5px;transform-origin:50%;width:100%;height:100%;transition:opacity .18s var(--ease-out), transform .24s var(--ease-lift);display:block;position:absolute;inset:0}.sound-glyph--on{opacity:1;transform:none}.sound-glyph--off,:root[data-sound=off] .sound-glyph--on{opacity:0;transform:rotate(-8deg)scale(.86)}:root[data-sound=off] .sound-glyph--off{opacity:1;transform:none}.theme-rays{transform-box:view-box;transform-origin:50%;transition:transform .52s var(--ease-lift);transform:rotate(0)scale(1)}[data-theme=dark] .theme-rays{transform:rotate(45deg)scale(.86)}.theme-ray{transform-box:fill-box;transform-origin:50%;transition:scale .22s var(--ease-swap);scale:1}[data-theme=dark] .theme-ray{scale:0}.theme-core{transform-box:view-box;transform-origin:50%;transition:scale .48s var(--ease-lift);scale:.5714}[data-theme=dark] .theme-core{scale:1.06}.theme-cut{transform-box:view-box;transform-origin:50%;transition:transform .52s var(--ease-lift);transform:translate(-8.5px,-8.5px)}[data-theme=dark] .theme-cut{transform:translate(0)}[data-theme=light] .theme-button:hover .theme-rays,[data-theme=light] .theme-button:focus-visible .theme-rays,[data-theme=light] .theme-button[data-hover] .theme-rays{animation:6s linear infinite theme-sun-spin}[data-theme=dark] .theme-button:hover .theme-zzz span,[data-theme=dark] .theme-button:focus-visible .theme-zzz span,[data-theme=dark] .theme-button[data-hover] .theme-zzz span{animation:2.2s linear infinite theme-zzz-float;animation-delay:var(--zzz-delay,0s)}.theme-zzz span:nth-child(2){--zzz-delay:.733s}.theme-zzz span:nth-child(3){--zzz-delay:1.466s}@keyframes theme-sun-spin{0%{rotate:0deg}to{rotate:360deg}}@keyframes theme-zzz-float{0%{opacity:0;transform:translate(0)scale(.7)}8%{opacity:1}45%{opacity:.85}68%,to{opacity:0;transform:translate(.45rem,-1.15rem)scale(1.3)}}html.js [data-reveal]{opacity:0;filter:blur(3px);transition:opacity .7s var(--ease-out) var(--reveal-delay,0s), filter .7s var(--ease-out) var(--reveal-delay,0s), transform .9s var(--ease-lift) var(--reveal-delay,0s);transform:translateY(.9rem)}html.js [data-reveal].is-revealed{opacity:1;filter:none;transform:none}.portfolio-shell{flex-direction:column;width:100%;min-height:100svh;display:flex}.portfolio-theme{z-index:50;position:fixed;top:1.5rem;right:1.5rem}.portfolio-theme .theme-button{margin-right:0}.portfolio-main{flex-direction:column;flex:1;align-items:center;display:flex}.portfolio-column{width:100%;max-width:42rem;margin-inline:auto;padding-inline:1.25rem}@media (width>=48rem){.portfolio-column{padding-inline:4rem}}.portfolio-page{flex-direction:column;flex:1;padding-top:6rem;padding-bottom:6rem;display:flex}@media (width>=48rem){.portfolio-page{padding-top:4rem;padding-bottom:4rem}}.portfolio-intro{font-size:1.125rem;line-height:1.625}.portfolio-heading{display:grid}.portfolio-heading__row{align-items:center;gap:.75rem;display:flex}.portfolio-heading__actions{flex-shrink:0;align-items:center;gap:.25rem;margin-left:auto;display:flex}@media (width<=22rem){.portfolio-heading__row{gap:.25rem}}.portfolio-name{color:var(--ink);letter-spacing:normal;flex-shrink:0;font-size:1.125rem;font-weight:500;line-height:1.625}.site-footer{width:100%}.site-views .portfolio-page{padding-top:0}.site-topbar{z-index:40;justify-content:space-between;align-items:center;gap:1rem;width:100%;padding-top:6rem;display:flex;position:relative}@media (width>=48rem){.site-topbar{padding-top:4rem}}.site-topbar__left{align-items:center;min-width:0;display:flex}.site-topbar__identity{align-items:center;gap:.75rem;min-width:0;display:flex}.portfolio-mark{color:var(--ink);flex:none;padding-left:.25rem;display:flex}.portfolio-mark svg{width:auto;height:1.5rem;display:block}.site-topbar__right{view-transition-name:site-controls;flex:none;align-items:center;gap:.25rem;display:flex}.mind-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.mind-back{width:2.25rem;height:2.25rem;color:var(--muted);transition:color .18s var(--ease-out), background-color .18s var(--ease-out);border-radius:9999px;flex:none;justify-content:center;align-items:center;margin-left:-.625rem;text-decoration:none;display:inline-flex}.mind-back.is-vt-back{view-transition-name:site-back}.site-topbar__identity.is-vt-identity{view-transition-name:site-identity}.mind-back:hover,.mind-back:focus-visible{color:var(--ink);background-color:var(--plate-soft)}.mind-back.is-vt-back{color:var(--muted);background-color:#0000;transition:none}.mind-back svg{width:1rem;height:1rem;display:block}.mind-actions{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.mind-index{margin-top:3rem}.mind-intro{gap:.5rem;display:grid}.mind-title{color:var(--ink);font-size:1.125rem;font-weight:500;line-height:1.625}.mind-description{color:var(--muted);text-wrap:pretty;font-size:1.125rem;line-height:1.625}.mind-list{margin-top:2.25rem}.mind-row{padding-block:1.25rem;position:relative}.mind-row__divider{width:100%;position:absolute;top:0;left:0}.mind-row.is-vt-divider .mind-row__divider{transition:opacity .4s ease var(--enter-delay,0s)}html:active-view-transition .mind-row.is-vt-divider .mind-row__divider{opacity:0}.mind-row__title{color:var(--ink);text-wrap:balance;padding-right:3.25rem;font-size:1.125rem;font-weight:500;line-height:1.5}.mind-shared-title{vertical-align:top;width:fit-content;max-width:100%;display:inline-block}.mind-row__title-link{color:inherit;text-underline-offset:4px;transition:text-decoration-color .2s var(--ease-out);text-decoration:underline 1px #0000}.mind-row__title-link:hover,.mind-row__title-link:focus-visible{text-decoration-color:currentColor}.mind-row__desc{min-height:3rem;color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.4rem;font-size:1rem;line-height:1.5;display:-webkit-box;overflow:hidden}.mind-row__meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.55rem;font-size:.8125rem;line-height:1.5;display:flex}.mind-row>.pulse-heart{z-index:2;position:absolute;top:1.55rem;right:0}.mind-post__header{margin-top:3rem}.mind-post__title-row{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.mind-post__title{max-width:calc(100% - 3.25rem);color:var(--ink);text-wrap:balance;font-size:1.125rem;font-weight:500;line-height:1.5}.mind-post__title .mind-shared-title{view-transition-name:mind-title}.mind-post__title-row>.pulse-heart{flex:none;margin-top:.15rem}.mind-post__description{color:var(--muted);text-wrap:pretty;view-transition-name:mind-description;margin-top:.75rem;font-size:1.0625rem;line-height:1.6}.mind-post__meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.7rem;font-size:.8125rem;line-height:1.5;display:flex}.mind-prose{max-width:none;margin-top:2.5rem}.mind-prose>h2{margin-top:2.2em;scroll-margin-top:1.5rem;font-size:1.125rem;font-weight:600}.mind-prose>h3{margin-top:1.8em;scroll-margin-top:1.5rem;font-size:1.0625rem;font-weight:600}.mind-prose>*{opacity:0;animation:portfolio-slide-in .4s ease var(--enter-delay,.18s) forwards}.mind-prose>:nth-child(2){--enter-delay:.215s}.mind-prose>:nth-child(3){--enter-delay:.25s}.mind-prose>:nth-child(4){--enter-delay:.285s}.mind-prose>:nth-child(5){--enter-delay:.32s}.mind-prose>:nth-child(6){--enter-delay:.355s}.mind-prose>:nth-child(7){--enter-delay:.39s}.mind-prose>:nth-child(8){--enter-delay:.425s}.mind-prose>:nth-child(9){--enter-delay:.46s}.mind-prose>:nth-child(10){--enter-delay:.495s}.mind-prose>:nth-child(11){--enter-delay:.53s}.mind-prose>:nth-child(12){--enter-delay:.565s}.mind-prose>:nth-child(13){--enter-delay:.6s}.mind-prose>:nth-child(14){--enter-delay:.635s}.mind-prose>:nth-child(15){--enter-delay:.67s}.mind-prose>:nth-child(n+16){--enter-delay:.705s}.mind-toc{display:none}.mind-toc__label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:.8rem;padding-left:1.75rem;font-size:.6875rem;font-weight:500;line-height:1.5}.mind-toc__rail{position:relative}.mind-toc__dot{opacity:0;pointer-events:none;width:6px;height:6px;transition:opacity .15s var(--ease-out);will-change:transform;background-color:#fc4c01;border-radius:9999px;position:absolute;top:0;left:.5rem}.mind-toc.is-ready .mind-toc__dot{opacity:1}.mind-toc__list{flex-direction:column;gap:.25rem;margin:0;padding-left:1.5rem;list-style:none;display:flex}.mind-toc__link{color:var(--muted);transition:color .2s var(--ease-out);padding:.25rem;font-size:.875rem;line-height:1.45;text-decoration:none;display:block}.mind-toc__link:hover,.mind-toc__link:focus-visible,.mind-toc__link[aria-current=location]{color:var(--ink)}@media (width>=75rem){.mind-toc{z-index:30;width:12rem;display:block;position:fixed;top:9.25rem;left:max(2rem,50% - 37rem)}}.mind-post__footer{margin-top:3.5rem}.mind-post__divider{margin-bottom:1.5rem}.mind-post__back{color:var(--muted);transition:color .18s var(--ease-out);align-items:center;gap:.4rem;font-size:.875rem;text-decoration:none;display:inline-flex}.mind-post__back:hover,.mind-post__back:focus-visible{color:var(--ink)}.mind-progress{display:none}html[data-view=post] .mind-progress{display:block}[data-dither]{isolation:isolate;position:relative;overflow:hidden}[data-dither-canvas]{z-index:0;pointer-events:none;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;display:block;position:absolute;inset:0}[data-dither]>:not([data-dither-canvas]){z-index:1;position:relative}.portfolio-role{color:var(--muted);font-size:1.125rem;line-height:1.625}.portfolio-role__label{text-underline-offset:4px;text-decoration:underline 1px dashed oklab(53.2223% -.0932808 .105107/.45)}.portfolio-bio{color:var(--muted);text-wrap:pretty;gap:1.5rem;margin-top:1.5rem;font-size:1.125rem;line-height:1.625;display:grid}.portfolio-teardown{color:var(--ink);text-underline-offset:4px;text-decoration:underline 1px dashed oklab(76.8591% .0560995 .154808/.45)}.portfolio-contact{z-index:30;color:var(--muted);text-wrap:pretty;margin-top:1.5rem;font-size:1.125rem;line-height:1.625;position:relative}.portfolio-connect{z-index:30;color:var(--muted);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:.25rem .55rem;margin-top:2rem;font-size:1rem;line-height:1.6;display:flex;position:relative}.portfolio-connect__dot{color:var(--muted);opacity:.55;-webkit-user-select:none;user-select:none}@media (width<=47.99rem){.portfolio-connect{gap:.2rem .45rem;font-size:.9375rem}}@media (width<=380px){.portfolio-connect{gap:.15rem .35rem;font-size:.875rem}}.portfolio-social,.social-trigger{display:inline-block;position:relative}.social-trigger[data-open]{z-index:40}.portfolio-social__link{color:var(--ink);transition:color .2s var(--ease-out);border-radius:.125rem;text-decoration:none;display:inline-block;position:relative}.portfolio-social__link:hover,.portfolio-social__link:focus-visible{color:var(--social-accent)}.portfolio-social__word{display:inline-block;position:relative}.portfolio-scratch{width:100%;height:100%;color:var(--social-accent);pointer-events:none;position:absolute;inset:0;overflow:visible}.portfolio-scratch path{stroke-dasharray:1 2;stroke-dashoffset:1px;transition:stroke-dashoffset .15s ease-out}.portfolio-social__link:hover .portfolio-scratch path,.portfolio-social__link:focus-visible .portfolio-scratch path{stroke-dashoffset:0;transition-duration:.3s}.portfolio-social__sticker{width:1rem;height:1rem;color:var(--ink);opacity:0;filter:blur(2px);transition:transform .2s var(--ease-out), opacity .2s var(--ease-out), filter .2s var(--ease-out);pointer-events:none;display:block;position:absolute;top:-.5rem;right:-.5rem;transform:translate(4px,4px)scale(.8)rotate(-8deg)}.portfolio-social__sticker svg{width:100%;height:100%;display:block}.portfolio-social__link:hover .portfolio-social__sticker,.portfolio-social__link:focus-visible .portfolio-social__sticker{opacity:1;filter:none;transition-delay:.1s;animation:.4s .2s portfolio-wiggle;transform:translate(0)scale(1.1)rotate(4deg)}.portfolio-email{color:inherit;text-underline-offset:2px;transition:color .15s var(--ease-out);text-decoration:underline 1px #a1a1a1}[data-theme=dark] .portfolio-email{text-decoration-color:#525252}.portfolio-email:hover,.portfolio-email:focus-visible{color:var(--ink)}.social-card{z-index:50;transform-origin:50% 0;width:18rem;max-width:calc(100vw - 1.5rem);color:var(--ink-soft);text-align:left;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .14s var(--ease-out), transform .18s var(--ease-lift), visibility .14s;font-size:.8125rem;line-height:1.5;position:absolute;top:calc(100% + .5rem);left:50%;transform:translate(-50%,.35rem)scale(.98)}.social-card--twitter{width:19rem}.social-card--github{width:20rem}.social-card__clip{border:1px solid var(--rule);background-color:var(--surface);border-radius:.75rem;height:0;display:block;overflow:hidden;box-shadow:0 18px 45px -22px #0b0d1459,0 2px 8px -4px #0b0d1426}.social-card__inner{flex-direction:column;gap:.7rem;padding:.9rem;display:flex}.social-card:before{content:"";height:.75rem;position:absolute;bottom:100%;left:0;right:0}.social-card[data-placement=top]{transform-origin:50% 100%;top:auto;bottom:calc(100% + .5rem);transform:translate(-50%,-.35rem)scale(.98)}.social-card[data-placement=top]:before{top:100%;bottom:auto}.social-trigger[data-open] .social-card{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%)scale(1)}@media (hover:none),(pointer:coarse){.social-card{display:none}}.social-card__top{align-items:center;gap:.6rem;display:flex}.social-card__avatar{object-fit:cover;border-radius:9999px;flex-shrink:0;width:2.5rem;height:2.5rem}.social-card__identity{flex:1;gap:.05rem;min-width:0;display:grid}.social-card__name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500;overflow:hidden}.social-card__handle{color:var(--muted);font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem;overflow:hidden}.social-card__network{border:1px solid var(--rule);color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border-radius:9999px;flex-shrink:0;padding:.2rem .45rem;font-size:.625rem}.social-card__bio{color:var(--ink-soft)}.social-card__bio-row{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.social-card__bio-row .social-card__bio{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.social-card__years{border:1px solid var(--rule);background-color:var(--ink);border-radius:.4375rem;flex:none;align-items:center;gap:1px;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.social-card__years{background-color:color-mix(in srgb, var(--ink) 4%, var(--surface))}}.social-card__years{isolation:isolate;padding:2px}.social-card__year-thumb{z-index:0;width:var(--year-width,0);transform:translateX(var(--year-x,0));border:1px solid var(--rule);background-color:var(--surface);transition:transform .3s var(--ease-lift), width .3s var(--ease-lift);pointer-events:none;border-radius:.3125rem;position:absolute;top:2px;bottom:2px;left:0;box-shadow:0 1px 2px #00000014}.social-card__year{z-index:1;height:1.5rem;color:var(--muted);font:inherit;font-family:var(--font-mono);font-variant-numeric:tabular-nums;cursor:pointer;transition:color .16s var(--ease-out);-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:.3125rem;justify-content:center;align-items:center;padding:0 .25rem;font-size:.625rem;line-height:1;display:inline-flex;position:relative}.social-card__year:hover,.social-card__year:focus-visible{color:var(--ink-soft)}.social-card__year[aria-pressed=true]{color:var(--ink)}.social-card__year:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.social-card__meta{color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1rem;font-size:.625rem;display:flex}.social-card__dm{flex-shrink:0}.command-button{border:1px solid var(--command-border);min-height:2.25rem;color:var(--dither-ink);font-family:var(--font-sans);letter-spacing:normal;text-transform:none;cursor:pointer;transition:background-color .15s var(--ease-out), border-color .15s var(--ease-out), color .15s var(--ease-out);background-color:#0000;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;padding:.25rem .35rem .25rem .7rem;font-size:.75rem;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.command-button [data-dither-canvas]{transition:filter .15s var(--ease-out)}.command-button:hover,.command-button:focus-visible{border-color:var(--command-ink)}@supports (color:color-mix(in lab, red, red)){.command-button:hover,.command-button:focus-visible{border-color:color-mix(in srgb, var(--command-ink) 32%, var(--command-border))}}.command-button:hover [data-dither-canvas],.command-button:focus-visible [data-dither-canvas]{filter:brightness(.96)}.command-button:active [data-dither-canvas]{filter:brightness(.92)}[data-theme=dark] .command-button:hover [data-dither-canvas],[data-theme=dark] .command-button:focus-visible [data-dither-canvas]{filter:brightness(1.12)}[data-theme=dark] .command-button:active [data-dither-canvas]{filter:brightness(1.2)}.command-button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.command-button__keys{align-items:center;padding-bottom:1px;display:inline-flex}.command-button__key{border:1px solid var(--command-key-border);background-color:var(--command-key-bg);width:1.5rem;height:1.5rem;box-shadow:0 2px 0 0 var(--command-key-shadow);color:var(--command-key-ink);font-family:var(--font-sans);transition:translate .15s var(--ease-out), box-shadow .15s var(--ease-out);border-radius:.375rem;justify-content:center;align-items:center;padding:0 .375rem;font-size:.6875rem;font-weight:500;line-height:1;display:inline-flex}.command-button:active .command-button__key,.command-button__key[data-pressed]{box-shadow:none;transition-duration:75ms;translate:0 2px}@media (prefers-reduced-motion:reduce){.command-button,.command-button [data-dither-canvas],.command-button__key{transition:none}}.social-card__repo-link{color:inherit;text-underline-offset:2px;transition:color .15s var(--ease-out);text-decoration:none}.social-card__repo-link:hover,.social-card__repo-link:focus-visible{color:var(--ink);text-decoration:underline}.social-card__repo-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.social-card__contrib{gap:.55rem;display:grid}.social-card__graph{grid-auto-flow:column;grid-template-columns:repeat(var(--weeks,54), minmax(0, 1fr));grid-template-rows:repeat(7,auto);gap:1.5px;display:grid}.social-card__cell{--delay:var(--wave,0s);aspect-ratio:1;background-color:var(--dither-tone-3);width:100%;transition:background-color .32s var(--ease-out) var(--delay), transform .42s var(--ease-lift) var(--delay);border-radius:1px;display:block}.social-card__graph[data-direction=back] .social-card__cell{--delay:var(--wave-back,0s)}.social-card__cell[data-level="1"]{background-color:var(--dither-tone-4)}.social-card__cell[data-level="2"]{background-color:var(--dither-tone-5)}.social-card__cell[data-level="3"]{background-color:var(--dither-tone-6)}.social-card__cell[data-level="4"]{background-color:var(--dither-tone-7)}.social-card__cell[data-empty]{background-color:var(--dither-tone-3);transform:scale(0)}@media (prefers-reduced-motion:reduce){.social-card__cell{transition:background-color .12s var(--ease-out), opacity .12s var(--ease-out)}.social-card__year-thumb{transition:none}}.social-card__count{color:var(--ink-soft);font-size:.6875rem}.email-copy{display:inline-block;position:relative}.email-copy__tip{z-index:9999;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s var(--ease-out), transform .15s var(--ease-out), visibility .15s;padding-bottom:.5rem;position:absolute;bottom:100%;left:50%;transform:translate(-50%,.25rem)}.email-copy__tip-card{background-color:var(--surface);border-radius:10px;width:fit-content;padding:.375rem;display:block;box-shadow:0 3px 3px -1.5px #3333331a,0 2px 2px -1px #3333331a,0 1px 1px -.5px #3333331a,0 0 0 .6px #3333331a}[data-theme=dark] .email-copy__tip-card{box-shadow:0 3px 3px -1.5px #00000080,0 2px 2px -1px #00000080,0 1px 1px -.5px #00000080,0 0 0 .6px #ffffff1f}.email-copy__tip-row{color:var(--ink);white-space:nowrap;align-items:center;gap:.375rem;padding-inline:.25rem;font-size:13px;font-weight:500;line-height:1.5;display:flex}.email-copy__icon{flex-shrink:0;width:.875rem;height:.875rem}.email-copy__icon--check,.email-copy[data-copied] .email-copy__icon--copy{display:none}.email-copy[data-copied] .email-copy__icon--check{display:block}.email-copy[data-copied] .email-copy__tip-row{color:#15803d}[data-theme=dark] .email-copy[data-copied] .email-copy__tip-row{color:#4ade80}.email-copy:hover .email-copy__tip,.email-copy:focus-within .email-copy__tip{opacity:1;visibility:visible;transform:translate(-50%)}.portfolio-enter{opacity:0;animation:portfolio-slide-in .4s ease var(--enter-delay,0s) forwards}.portfolio-enter.is-vt-target{opacity:1;animation:none;transform:none}.portfolio-footnote{color:var(--muted);font-family:var(--font-mono);letter-spacing:.03em;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;margin-top:auto;padding-top:3.5rem;padding-bottom:1.5rem;font-size:.6875rem;display:flex}}@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;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-mr-2{margin-right:calc(var(--spacing) * -2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.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}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.border{border-style:var(--tw-border-style);border-width:1px}.fill-rule{fill:var(--rule)}.pl-1{padding-left:var(--spacing)}.text-wrap{text-wrap:wrap}.italic{font-style:italic}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);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, )}.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-filter{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,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))}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}.lamp-study--post{view-transition-name:post-lamp;transform-origin:36.8421% 100%}.lamp-study[data-lamp-entry=direct]{animation:.42s cubic-bezier(.55,0,.95,.5) both post-lamp-fall}.lamp-study[data-lamp-entry]{view-transition-name:lamp-arrival;transform-origin:36.8421% 100%}::view-transition-old(site-controls){display:none}::view-transition-group(post-lamp),::view-transition-group(lamp-arrival){z-index:4;animation:none;overflow:visible}::view-transition-image-pair(post-lamp),::view-transition-image-pair(lamp-arrival){isolation:isolate;overflow:visible}::view-transition-new(post-lamp),::view-transition-old(post-lamp),::view-transition-new(lamp-arrival),::view-transition-old(lamp-arrival){mix-blend-mode:normal;transform-origin:36.8421% 100%;overflow:visible}::view-transition-new(post-lamp){animation:none}::view-transition-new(lamp-arrival){animation:.42s cubic-bezier(.55,0,.95,.5) both post-lamp-fall}::view-transition-old(post-lamp),::view-transition-old(lamp-arrival){animation:.18s ease-out both post-lamp-fade}@keyframes post-lamp-fall{0%{opacity:0;transform:translate(-10px,-12rem)rotate(-9deg)}10%{opacity:1}to{opacity:1;transform:none}}@keyframes post-lamp-fade{0%{opacity:1}to{opacity:0}}:root.theme-transition .lamp-study--post,:root.theme-transition [data-lamp-entry],:root.pullcord-theme .lamp-study--post,:root.pullcord-theme [data-lamp-entry]{view-transition-name:none}@media (prefers-reduced-motion:reduce){.lamp-study[data-lamp-entry=direct],::view-transition-new(lamp-arrival){animation:none}::view-transition-old(post-lamp),::view-transition-old(lamp-arrival){animation:none;display:none}}:root{--page:#fafafc;--surface:#fff;--plate:#ebecf4;--plate-soft:#f3f3f8;--ink:#16181f;--ink-soft:#3b3e49;--muted:#6b6f7b;--rule:#e2e3ea;--accent:#5b3fd6;color-scheme:light}[data-theme=dark]{--page:#0d0e13;--surface:#16181f;--plate:#20222c;--plate-soft:#181a22;--ink:#ecedf3;--ink-soft:#c5c7d1;--muted:#8b8f9c;--rule:#24262f;--accent:#9a86ff;color-scheme:dark}.portfolio-body{--page:#fff;--surface:#fff;--plate:#f5f5f5;--plate-soft:#f5f5f5;--ink:#0a0a0a;--ink-soft:#404040;--muted:#737373;--rule:#e5e5e5;--accent:#7aa7c7;--social-accent:#a06362;--command-bg:#f9efe5;--command-border:#ddb6a1;--command-ink:#5e3843;--command-key-bg:#eed9c7;--command-key-border:#ddb6a1;--command-key-shadow:#ddb6a1;--command-key-ink:#5e3843;--dither-tone-1:#fff;--dither-tone-2:#f9efe5;--dither-tone-3:#eed9c7;--dither-tone-4:#ddb6a1;--dither-tone-5:#c68d7e;--dither-tone-6:#a06362;--dither-tone-7:#5e3843;--dither-ink:#3f2430;--font-sans:"Inter Variable", "Inter", ui-sans-serif, system-ui, sans-serif;background-color:var(--page);color:var(--muted);font-family:var(--font-sans);scrollbar-width:none}.portfolio-body::-webkit-scrollbar{display:none}[data-theme=dark] .portfolio-body{--page:#0a0a0a;--surface:#171717;--plate:#262626;--plate-soft:#262626;--ink:#ededed;--ink-soft:#d4d4d4;--muted:#a1a1a1;--rule:#ffffff1a;--accent:#7aa7c7;--social-accent:#8aa8b9;--command-bg:#18242b;--command-border:#364f5c;--command-ink:#8aa8b9;--command-key-bg:#24363f;--command-key-border:#364f5c;--command-key-shadow:#364f5c;--command-key-ink:#8aa8b9;--dither-tone-1:#0a0a0a;--dither-tone-2:#101619;--dither-tone-3:#18242b;--dither-tone-4:#24363f;--dither-tone-5:#364f5c;--dither-tone-6:#537182;--dither-tone-7:#8aa8b9;--dither-ink:#cfe0e8}html:has(.portfolio-body){background-color:#fff;font-size:16px}html[data-theme=dark]:has(.portfolio-body){background-color:#0a0a0a}.portfolio-body ::selection{background-color:var(--social-accent)}@supports (color:color-mix(in lab, red, red)){.portfolio-body ::selection{background-color:color-mix(in srgb, var(--social-accent) 30%, transparent)}}.portfolio-body ::selection{color:inherit}[data-theme=dark] .portfolio-body ::selection{color:inherit;background-color:#7aa7c74d}.portfolio-body :focus-visible{outline-color:#7aa7c7}@media (prefers-reduced-motion:reduce){html.js [data-reveal]{opacity:1!important;filter:none!important;transition:none!important;transform:none!important}.theme-rays,.theme-ray,.theme-core,.theme-cut{transition:none!important}.theme-rays,.theme-zzz span{animation:none!important}}@keyframes page-out{to{opacity:0;transform:translateY(-4px)}}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}@view-transition{navigation:auto}::view-transition-old(root){animation:.18s ease-in both page-out}::view-transition-new(root){animation:.42s var(--ease-lift) both page-in}html.is-mind-to-post::view-transition-new(root){animation:none}[data-site-header]{view-transition-name:site-header}::view-transition-old(site-header),::view-transition-new(site-header),::view-transition-old(site-controls),::view-transition-new(site-controls),::view-transition-old(site-back),::view-transition-new(site-back),::view-transition-old(site-identity),::view-transition-new(site-identity){animation:none}::view-transition-group(mind-title){z-index:1;animation-duration:.32s;animation-timing-function:var(--ease-lift)}::view-transition-old(mind-title){display:none}::view-transition-new(mind-title){object-fit:none;object-position:left top;height:100%;animation:none}::view-transition-old(mind-description),::view-transition-new(mind-description){display:none}:is(html:active-view-transition .mind-page .portfolio-enter,html:active-view-transition .mind-page .mind-prose>*){animation-play-state:paused}html:active-view-transition .site-topbar__identity[data-vt-hide]{visibility:hidden}html:active-view-transition .site-topbar .mind-back[data-vt-hide]{visibility:hidden}:root.theme-transition::view-transition-old(root),:root.theme-transition::view-transition-new(root){animation:none}:root.theme-transition [data-site-header],:root.theme-transition .site-topbar__right,:root.theme-transition .mind-back,:root.theme-transition .mind-post__title .mind-shared-title,:root.theme-transition .mind-post__description{view-transition-name:none}:root.pullcord-theme::view-transition-old(root){animation:.32s both pullcord-fade-out}:root.pullcord-theme::view-transition-new(root){animation:.32s both pullcord-fade-in}@keyframes pullcord-fade-out{to{opacity:0}}@keyframes pullcord-fade-in{0%{opacity:0}}:root.pullcord-theme [data-site-header],:root.pullcord-theme .site-topbar__right,:root.pullcord-theme .mind-back,:root.pullcord-theme .mind-post__title .mind-shared-title,:root.pullcord-theme .mind-post__description{view-transition-name:none}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}::view-transition-old(root),::view-transition-new(root),::view-transition-group(mind-title),:root.pullcord-theme::view-transition-old(root),:root.pullcord-theme::view-transition-new(root){animation:none!important}}@keyframes portfolio-slide-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes portfolio-wiggle{0%,to{transform:translate(0)scale(1.1)rotate(4deg)}25%{transform:translate(0)scale(1.1)rotate(-8deg)}75%{transform:translate(0)scale(1.1)rotate(8deg)}}@keyframes mind-draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.portfolio-enter,.mind-prose>*{opacity:1;animation:none}}@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-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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@property --cmd-scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --cmd-scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@keyframes cmd-scroll-fade-reveal-t{0%{--cmd-scroll-fade-t:0px}to{--cmd-scroll-fade-t:var(--cmd-scroll-fade-size-t)}}@keyframes cmd-scroll-fade-reveal-b{0%{--cmd-scroll-fade-b:var(--cmd-scroll-fade-size-b)}to{--cmd-scroll-fade-b:0px}}.cmd-root{--cmd-bg:#fafafc;--cmd-panel-bg:#fff;--cmd-panel-ring:#e5e5e5;--cmd-fg:#000;--cmd-muted:#f5f5f5;--cmd-muted-fg:#737373;--cmd-border:#e5e5e5;--cmd-input:#e5e5e5;--cmd-kbd-bg:#f5f5f5;--cmd-kbd-border:#00000014;--cmd-kbd-fg:#525252;--cmd-kbd-bg-selected:#fff;--cmd-kbd-border-selected:#00000026;z-index:10000;color-scheme:light;overscroll-behavior:none;pointer-events:none;font-family:Inter Variable,Inter,ui-sans-serif,system-ui,sans-serif;position:fixed;inset:0}[data-theme=dark] .cmd-root{--cmd-bg:#171717;--cmd-panel-bg:#09090b;--cmd-panel-ring:#ffffff1a;--cmd-fg:#fafafa;--cmd-muted:#262626;--cmd-muted-fg:#a1a1a1;--cmd-border:#ffffff1a;--cmd-input:#ffffff26;--cmd-kbd-bg:#262626;--cmd-kbd-border:#ffffff1f;--cmd-kbd-fg:#d4d4d4;--cmd-kbd-bg-selected:#333;--cmd-kbd-border-selected:#ffffff38;color-scheme:dark}.cmd-root[hidden]{display:none}html.cmd-scroll-locked,html.cmd-scroll-locked body{overscroll-behavior:none;overflow:hidden}.cmd-overlay,.cmd-dialog{pointer-events:auto}.cmd-overlay{background-color:#0006;position:fixed;inset:0}.cmd-dialog{z-index:1;background-color:var(--cmd-bg);width:100%;max-width:calc(100% - 2rem);box-shadow:0 0 0 1px color-mix(in oklab, var(--cmd-fg) 10%, transparent);color:var(--cmd-fg);border-radius:14px;outline:none;grid-template-rows:auto;gap:1rem;font-size:.875rem;line-height:1.25rem;display:grid;position:fixed;top:10.6875rem;left:50%;overflow:hidden;transform:translate(-50%)translateY(0)}@media (width>=40rem){.cmd-dialog{max-width:30rem}}@media (width>=48rem){.cmd-dialog{top:8.6875rem}}.cmd-command{background-color:var(--cmd-bg);width:100%;min-height:0;color:var(--cmd-fg);border-radius:14px;flex-direction:column;padding:.25rem;display:flex;overflow:hidden}.cmd-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.cmd-input-wrapper{padding:.25rem .25rem 0}.cmd-input-group{border:1px solid color-mix(in oklab, var(--cmd-input) 30%, transparent);background-color:color-mix(in oklab, var(--cmd-input) 30%, transparent);border-radius:.625rem;align-items:center;width:100%;min-width:0;height:2rem;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.cmd-input-addon{height:auto;color:var(--cmd-muted-fg);user-select:none;flex:none;order:-1;justify-content:center;align-items:center;gap:.5rem;padding-left:.5rem;font-size:.875rem;font-weight:500;display:flex}.cmd-search-icon{opacity:.5;pointer-events:none;flex:none;width:1rem;height:1rem;display:block}.cmd-input{width:100%;min-width:0;height:1.25rem;color:inherit;font:inherit;appearance:none;background:0 0;border:0;border-radius:0;outline:none;flex:1;margin:0;padding:0 0 0 .375rem;font-size:.875rem;line-height:1.25rem}.cmd-input:focus,.cmd-input:focus-visible{outline:none}.cmd-input::placeholder{color:color-mix(in oklab, var(--cmd-fg) 50%, transparent);opacity:1}.cmd-esc{border:1px solid var(--cmd-kbd-border);background-color:var(--cmd-kbd-bg);height:1.25rem;color:var(--cmd-kbd-fg);font:inherit;letter-spacing:.1em;cursor:pointer;border-radius:9999px;flex:none;justify-content:center;align-items:center;margin-right:.3125rem;padding:0 .4375rem;font-size:.75rem;font-weight:500;line-height:1;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1);display:inline-flex}.cmd-esc:hover{border-color:var(--cmd-kbd-border-selected);background-color:var(--cmd-kbd-bg-selected);color:var(--cmd-fg)}.cmd-esc:focus-visible{outline:1px solid var(--cmd-kbd-border-selected);outline-offset:1px}.cmd-panel{background-color:var(--cmd-panel-bg);box-shadow:0 0 0 1px var(--cmd-panel-ring);border-radius:.75rem;margin-top:.5rem;overflow:hidden}.cmd-list{--cmd-scroll-fade-size-t:min(12%, 2.5rem);--cmd-scroll-fade-size-b:min(12%, 2.5rem);--cmd-scroll-fade-block:linear-gradient(to bottom, transparent 0, #000 var(--cmd-scroll-fade-t,0px), #000 calc(100% - var(--cmd-scroll-fade-b,0px)), transparent 100%);overscroll-behavior:none;scrollbar-width:none;max-height:18rem;-webkit-mask-image:var(--cmd-scroll-fade-block);mask-image:var(--cmd-scroll-fade-block);-webkit-mask-composite:source-in;outline:none;scroll-padding-block:.25rem;overflow:hidden auto;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;mask-composite:intersect}@supports (animation-timeline:scroll()){.cmd-list{animation:1ms ease-in-out cmd-scroll-fade-reveal-t scroll(self y),1ms ease-in-out cmd-scroll-fade-reveal-b scroll(self y);animation-range:0 var(--cmd-scroll-fade-reveal,6rem), calc(100% - var(--cmd-scroll-fade-reveal,6rem)) 100%;animation-fill-mode:both}}@supports not (animation-timeline:scroll()){.cmd-list{--cmd-scroll-fade-t:var(--cmd-scroll-fade-size-t);--cmd-scroll-fade-b:var(--cmd-scroll-fade-size-b)}}.cmd-root .cmd-list{overscroll-behavior:none}.cmd-list::-webkit-scrollbar{display:none}.cmd-list-sizer{position:relative}.cmd-group{color:var(--cmd-fg);padding:.25rem;overflow:hidden}.cmd-group-heading{color:var(--cmd-muted-fg);padding:.375rem .5rem;font-size:.75rem;font-weight:500;line-height:1rem}.cmd-group-items{display:block}.cmd-item{color:var(--cmd-fg);cursor:default;user-select:none;border-radius:.625rem;outline:none;align-items:center;gap:.5rem;padding:.375rem .5rem;font-size:.875rem;line-height:1.25rem;display:flex;position:relative}.cmd-item[data-selected=true]{background-color:var(--cmd-muted);color:var(--cmd-fg)}.cmd-icon{pointer-events:none;flex:none;width:1rem;height:1rem;display:block}.cmd-icon--moon,[data-theme=dark] .cmd-icon--sun{display:none}[data-theme=dark] .cmd-icon--moon{display:block}.cmd-key-sequence{align-items:center;gap:.25rem;margin-left:auto;display:inline-flex}.cmd-key-sequence .cmd-tip{margin-left:0}.cmd-tip{border:1px solid var(--cmd-kbd-border);background-color:var(--cmd-kbd-bg);width:1.25rem;height:1.25rem;color:var(--cmd-kbd-fg);font:inherit;letter-spacing:0;border-radius:.375rem;flex:none;justify-content:center;align-items:center;margin-left:auto;padding:0;font-size:.75rem;font-weight:500;line-height:1;display:inline-flex}.cmd-item[data-selected=true] .cmd-tip{border-color:var(--cmd-kbd-border-selected);background-color:var(--cmd-kbd-bg-selected)}.cmd-check{opacity:0;pointer-events:none;flex:none;width:1rem;height:1rem;margin-left:auto;display:block}.cmd-item:has(.cmd-key-sequence) .cmd-check,.cmd-item:has(.cmd-tip) .cmd-check{display:none}.cmd-item[data-checked=true] .cmd-check{opacity:1}.cmd-separator{background-color:var(--cmd-border);height:1px;margin:0 -.25rem}.cmd-empty{color:var(--cmd-fg);text-align:center;padding:1.5rem 0;font-size:.875rem;line-height:1.25rem}.cmd-footer-spacer{flex:none;height:2.25rem}.cmd-footer{inset-inline:0;z-index:1;height:2.5rem;color:var(--cmd-muted-fg);border-radius:0 0 14px 14px;justify-content:space-between;align-items:center;gap:.5rem;padding:0 1rem;font-size:.75rem;font-weight:500;line-height:1rem;display:flex;position:absolute;bottom:0}.cmd-footer-mark{color:var(--cmd-muted-fg);flex:none;align-items:center;display:flex}.cmd-footer-mark svg{width:auto;height:.75rem;display:block}.cmd-footer-action{align-items:center;gap:.5rem;display:flex}.cmd-footer-key{background-color:var(--cmd-kbd-bg);min-width:1.5rem;height:1.25rem;box-shadow:inset 0 0 1px color-mix(in oklab, var(--cmd-fg) 15%, transparent);color:var(--cmd-muted-fg);border-radius:.25rem;justify-content:center;align-items:center;padding:0 .25rem;display:inline-flex}.cmd-footer-key svg{width:.75rem;height:.75rem;display:block}.cmd-item[hidden],.cmd-group[hidden],.cmd-separator[hidden],.cmd-empty[hidden]{display:none}@media (prefers-reduced-motion:reduce){.cmd-input-group,.cmd-esc{transition:none}}@media (height<=35rem){.cmd-dialog{top:50%;transform:translate(-50%)translateY(-50%)}.cmd-list{max-height:min(18rem,100svh - 7.5rem)}}.pixel-wordmark[data-astro-cid-qwdthfwf]{color:inherit;pointer-events:none;display:block}.pixel-wordmark[data-astro-cid-qwdthfwf] svg[data-astro-cid-qwdthfwf]{width:100%;height:auto;display:block;overflow:visible}.pixel-wordmark__outline[data-astro-cid-qwdthfwf]{stroke:currentColor;stroke-opacity:.14}[data-theme=dark] .pixel-wordmark__outline[data-astro-cid-qwdthfwf]{stroke-opacity:.22}.dither-divider[data-astro-cid-ywd7zpb4]{pointer-events:none;flex-shrink:0;width:100%;display:block}.pf-root[data-astro-cid-i2wxuqhk]{background:var(--page);width:100vw;max-width:100vw;color:var(--ink);margin-left:calc(50% - 50vw);position:relative;overflow:hidden}.pf-column[data-astro-cid-i2wxuqhk]{width:100%;max-width:42rem;margin-inline:auto}.pf-bar[data-astro-cid-i2wxuqhk]{color:var(--muted);align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.pf-bar__mark[data-astro-cid-i2wxuqhk]{color:inherit;transition:color .18s var(--ease-out);margin-right:auto;display:inline-flex}.pf-bar__mark[data-astro-cid-i2wxuqhk] svg{width:auto;height:1rem;display:block}.pf-bar__links[data-astro-cid-i2wxuqhk]{align-items:center;gap:.75rem;display:flex}.pf-bar__link[data-astro-cid-i2wxuqhk]{color:inherit;transition:color .18s var(--ease-out);display:flex}.pf-bar__link[data-astro-cid-i2wxuqhk] svg[data-astro-cid-i2wxuqhk]{width:1rem;height:1rem;display:block}.pf-bar__sep[data-astro-cid-i2wxuqhk]{background:var(--rule);flex:none;width:1px;height:1rem}.pf-bar__mark[data-astro-cid-i2wxuqhk]:hover,.pf-bar__link[data-astro-cid-i2wxuqhk]:hover,.pf-bar__mark[data-astro-cid-i2wxuqhk]:focus-visible,.pf-bar__link[data-astro-cid-i2wxuqhk]:focus-visible{color:var(--ink)}.pf-inner[data-astro-cid-i2wxuqhk]{width:100%;max-width:80rem;margin-inline:auto}.pf-inner--mark[data-astro-cid-i2wxuqhk]{padding:0 1.25rem}.pf-rule[data-astro-cid-i2wxuqhk]{background:var(--rule);height:1px}.pf-wordmark[data-astro-cid-i2wxuqhk]{color:var(--ink);transform:translateY(37.5%)}.pf-stage[data-astro-cid-i2wxuqhk]{overflow:hidden}.rdf-root{--rdf-mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, monospace;--rdf-paper:#fff;--rdf-ink:#0a0a0a;--rdf-line:#e5e5e5;--rdf-tone-1:#fff;--rdf-tone-2:#f9efe5;--rdf-tone-3:#eed9c7;--rdf-tone-4:#ddb6a1;--rdf-tone-5:#c68d7e;--rdf-tone-6:#a06362;--rdf-tone-7:#5e3843;background:var(--rdf-paper);width:100vw;max-width:100vw;height:18rem;margin-left:calc(50% - 50vw);position:relative;overflow:hidden}[data-theme=dark] .rdf-root{--rdf-paper:#0a0a0a;--rdf-ink:#ededed;--rdf-line:#ffffff1f;--rdf-tone-1:#0a0a0a;--rdf-tone-2:#101619;--rdf-tone-3:#18242b;--rdf-tone-4:#24363f;--rdf-tone-5:#364f5c;--rdf-tone-6:#537182;--rdf-tone-7:#8aa8b9}@media (width>=48rem){.rdf-root{height:clamp(24rem,34vw,40rem)}}.rdf-scene{width:100%;height:100%;position:relative;overflow:hidden}.rdf-scene canvas{max-width:none;image-rendering:pixelated;image-rendering:crisp-edges;display:block;position:absolute;bottom:0;left:0}.rdf-alt{z-index:3;pointer-events:none;opacity:0;font:500 10px/1 var(--rdf-mono);letter-spacing:.08em;color:var(--rdf-ink);transition:opacity .35s;position:absolute;top:0;left:0}.rdf-alt i{background:var(--rdf-paper);width:8px;height:8px;box-shadow:0 0 0 1.5px var(--rdf-ink);border-radius:50%;position:absolute;top:-4px;left:-4px}.rdf-alt b{background:var(--rdf-ink);opacity:.55;width:1px;height:26px;position:absolute;bottom:6px;left:-.5px}.rdf-alt span{white-space:nowrap;background:color-mix(in srgb, var(--rdf-paper) 88%, transparent);box-shadow:0 0 0 1px var(--rdf-line);backdrop-filter:blur(4px);border-radius:5px;padding:5px 7px 4px;position:absolute;bottom:34px;left:0;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){.rdf-alt{transition:none}}
