.site-header[data-astro-cid-wu5dj4rx]{position:fixed;inset-block-start:max(var(--space-xs),env(safe-area-inset-top));inset-inline-start:max(var(--space-xs),env(safe-area-inset-left));z-index:120;pointer-events:none}.menu-shell[data-astro-cid-wu5dj4rx]{position:relative}.menu-shell[data-astro-cid-wu5dj4rx],.menu-shell[data-astro-cid-wu5dj4rx] [data-astro-cid-wu5dj4rx]{pointer-events:auto}.trigger[data-astro-cid-wu5dj4rx]{background:color-mix(in oklch,var(--color-bg-raised, #fff) 92%,transparent);border:1px solid color-mix(in oklch,var(--color-border-subtle, #ddd) 92%,transparent);cursor:pointer;min-width:44px;min-height:44px;padding:0;border-radius:.55rem;color:var(--color-text-tertiary, #999);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);transition:color .14s var(--ease-out, ease),background-color .18s var(--ease-out, ease),border-color .18s var(--ease-out, ease),opacity .18s var(--ease-out, ease),box-shadow .2s var(--ease-out, ease);opacity:.9;box-shadow:var(--shadow-sm, 0 1px 2px rgba(0,0,0,.08))}.trigger[data-astro-cid-wu5dj4rx]:hover{color:var(--color-text, #111);background:color-mix(in oklch,var(--color-bg-raised, #fff) 97%,transparent);border-color:var(--color-border, #d8d8d8);opacity:1;box-shadow:var(--shadow-md, 0 3px 10px rgba(0,0,0,.12))}.trigger[data-astro-cid-wu5dj4rx]:focus-visible{outline:2px solid var(--color-focus, oklch(.65 .15 35));outline-offset:2px}.icon[data-astro-cid-wu5dj4rx]{inline-size:19px;block-size:14px;position:relative}.icon-line[data-astro-cid-wu5dj4rx]{position:absolute;inset-inline:0;block-size:2px;border-radius:999px;background:currentColor;transform-origin:center;transition:transform .22s var(--ease-out, ease),opacity .16s var(--ease-out, ease),inline-size .22s var(--ease-out, ease)}.icon-line[data-astro-cid-wu5dj4rx]:nth-child(1){inset-block-start:0}.icon-line[data-astro-cid-wu5dj4rx]:nth-child(2){inset-block-start:6px}.icon-line[data-astro-cid-wu5dj4rx]:nth-child(3){inset-block-start:12px}.menu-shell[data-astro-cid-wu5dj4rx]:has(.panel:popover-open) .icon-line[data-astro-cid-wu5dj4rx]:nth-child(1){transform:translateY(6px) rotate(45deg)}.menu-shell[data-astro-cid-wu5dj4rx]:has(.panel:popover-open) .icon-line[data-astro-cid-wu5dj4rx]:nth-child(2){opacity:0;inline-size:70%;transform:translate(3px)}.menu-shell[data-astro-cid-wu5dj4rx]:has(.panel:popover-open) .icon-line[data-astro-cid-wu5dj4rx]:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.panel[data-astro-cid-wu5dj4rx]{position:fixed;inset-block:calc(env(safe-area-inset-top,0px) + .65rem) calc(env(safe-area-inset-bottom,0px) + .65rem);inset-inline-start:.65rem;inline-size:min(20rem,calc(100vw - 1.3rem));margin:0;padding:calc(3.2rem + env(safe-area-inset-top,0px)) .82rem .9rem;background:linear-gradient(155deg,color-mix(in oklch,var(--color-bg-overlay, #fff) 95%,var(--color-accent-subtle, #f4eee7) 5%),var(--color-bg-overlay, #fff));border:1px solid color-mix(in oklch,var(--color-border-subtle, #ddd) 90%,transparent);border-radius:1rem;box-shadow:var(--shadow-xl, 0 20px 48px rgba(0,0,0,.2));overflow-y:auto;opacity:0;transform:translate(calc(-100% - 1rem));transition:transform .28s var(--ease-out, cubic-bezier(.22, 1, .36, 1)),opacity .18s var(--ease-out, ease)}.panel[data-astro-cid-wu5dj4rx]:popover-open{opacity:1;transform:translate(0);display:flex;flex-direction:column;gap:.15rem}@starting-style{.panel[data-astro-cid-wu5dj4rx]:popover-open{opacity:0;transform:translate(calc(-100% - 1rem))}}.panel[data-astro-cid-wu5dj4rx]::backdrop{background:color-mix(in oklch,black 24%,transparent);backdrop-filter:blur(3px);opacity:0;transition:opacity .22s var(--ease-out, ease)}.panel[data-astro-cid-wu5dj4rx]:popover-open::backdrop{opacity:1}.panel-head[data-astro-cid-wu5dj4rx]{position:absolute;inset-block-start:.75rem;inset-inline:.82rem;display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs)}.panel-label[data-astro-cid-wu5dj4rx]{margin:0;padding-inline:.45rem;font-size:.76rem;font-weight:400;color:var(--color-text-tertiary, #999);letter-spacing:.02em}.close[data-astro-cid-wu5dj4rx]{border:0;background:transparent;color:var(--color-text-tertiary, #999);min-width:34px;min-height:34px;border-radius:.45rem;cursor:pointer;line-height:1;font-size:1rem;transition:background-color .16s var(--ease-out, ease),color .16s var(--ease-out, ease)}.close[data-astro-cid-wu5dj4rx]:hover{color:var(--color-text);background:color-mix(in oklch,var(--color-bg-sunken, #f4f4f4) 60%,transparent)}.panel[data-astro-cid-wu5dj4rx] a[data-astro-cid-wu5dj4rx]{display:block;margin-inline:0;padding:.58rem .45rem;font-size:1rem;font-weight:500;color:var(--color-text-secondary, #666);text-decoration:none;border-radius:.4rem;opacity:.92;transition:color .14s var(--ease-out, ease),opacity .18s var(--ease-out, ease),background-color .18s var(--ease-out, ease)}.panel[data-astro-cid-wu5dj4rx] a[data-astro-cid-wu5dj4rx]:hover{color:var(--color-text, #111);opacity:1;background:color-mix(in oklch,var(--color-bg-sunken, #f4f4f4) 60%,transparent)}.panel[data-astro-cid-wu5dj4rx] a[data-astro-cid-wu5dj4rx]:focus-visible{outline:2px solid var(--color-focus, oklch(.65 .15 35));outline-offset:2px;border-radius:.72rem}.panel-footer[data-astro-cid-wu5dj4rx]{margin-block-start:auto;padding:.85rem .2rem .2rem;border-block-start:1px solid color-mix(in oklch,var(--color-border-subtle, #ddd) 90%,transparent);opacity:.92}.project-group[data-astro-cid-wu5dj4rx]{margin-block-start:.45rem;border-block-start:1px solid color-mix(in oklch,var(--color-border-subtle, #ddd) 90%,transparent);padding-block-start:.55rem}.project-group[data-astro-cid-wu5dj4rx] summary[data-astro-cid-wu5dj4rx]{list-style:none;cursor:pointer;margin:0;padding:.45rem;font-size:.84rem;color:var(--color-text-tertiary, #999);border-radius:.45rem}.project-group[data-astro-cid-wu5dj4rx] summary[data-astro-cid-wu5dj4rx]:hover{color:var(--color-text-secondary, #666);background:color-mix(in oklch,var(--color-bg-sunken, #f4f4f4) 55%,transparent)}.project-group[data-astro-cid-wu5dj4rx] summary[data-astro-cid-wu5dj4rx]::-webkit-details-marker{display:none}.project-links[data-astro-cid-wu5dj4rx]{list-style:none;margin:.2rem 0 0;padding:0;max-block-size:min(38vh,18rem);overflow-y:auto;border-block:1px solid color-mix(in oklch,var(--color-border-subtle, #ddd) 88%,transparent)}.project-links[data-astro-cid-wu5dj4rx] li[data-astro-cid-wu5dj4rx]{margin:0}.project-links[data-astro-cid-wu5dj4rx] a[data-astro-cid-wu5dj4rx]{font-size:.82rem;font-weight:450;padding:.42rem .45rem;border-radius:0}.project-profile[data-astro-cid-wu5dj4rx]{margin-block-start:.22rem;font-size:.82rem!important}@media(min-width:48rem){.panel[data-astro-cid-wu5dj4rx]{inline-size:min(21.5rem,36vw)}}@media(prefers-reduced-motion:reduce){.panel[data-astro-cid-wu5dj4rx],.panel[data-astro-cid-wu5dj4rx]::backdrop,.trigger[data-astro-cid-wu5dj4rx],.panel[data-astro-cid-wu5dj4rx] a[data-astro-cid-wu5dj4rx],.icon-line[data-astro-cid-wu5dj4rx]{transition:none!important;animation:none!important}}.site-footer[data-astro-cid-w3csb3e3]{max-inline-size:var(--page-max-width);margin-inline:auto;padding-block:var(--space-m);padding-inline:var(--page-gutter);text-align:center}.copyright[data-astro-cid-w3csb3e3]{font-size:var(--text-xs);color:var(--color-text-tertiary)}@layer reset,tokens,base,layouts,components,utilities;@layer reset{*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{min-block-size:100dvh;line-height:1.6;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-inline-size:100%}input,button,textarea,select{font:inherit;color:inherit}textarea{field-sizing:content;min-block-size:3lh}h1,h2,h3,h4{text-wrap:balance;overflow-wrap:break-word}p,li,figcaption{text-wrap:pretty;overflow-wrap:break-word}a{color:inherit;text-decoration-skip-ink:auto}ul[role=list],ol[role=list]{list-style:none;padding:0}:target{scroll-margin-block:2rem}}@layer tokens{:root{--stone-50: oklch(.985 .002 75);--stone-100: oklch(.96 .005 75);--stone-150: oklch(.935 .006 75);--stone-200: oklch(.9 .008 75);--stone-300: oklch(.79 .01 75);--stone-400: oklch(.65 .012 70);--stone-500: oklch(.53 .012 70);--stone-600: oklch(.43 .012 65);--stone-700: oklch(.34 .01 60);--stone-800: oklch(.26 .008 55);--stone-900: oklch(.18 .006 50);--stone-950: oklch(.12 .005 50);--accent-hue: 35;--accent-chroma: .14;--accent: oklch(.58 var(--accent-chroma) var(--accent-hue));--accent-light: oklch(.72 .1 var(--accent-hue));--accent-dark: oklch(.46 var(--accent-chroma) var(--accent-hue));--accent-pale: oklch(.94 .03 var(--accent-hue));--accent-deep: oklch(.35 .1 var(--accent-hue));--text-xs: clamp(.7813rem, .7736rem + .0341vw, .8rem);--text-sm: clamp(.9375rem, .9119rem + .1136vw, 1rem);--text-base: clamp(1.125rem, 1.0739rem + .2273vw, 1.25rem);--text-lg: clamp(1.35rem, 1.2631rem + .3864vw, 1.5625rem);--text-xl: clamp(1.62rem, 1.4837rem + .6057vw, 1.9531rem);--text-2xl: clamp(1.944rem, 1.7405rem + .9044vw, 2.4414rem);--text-3xl: clamp(2.3328rem, 2.0387rem + 1.3072vw, 3.0518rem);--text-4xl: clamp(2.7994rem, 2.384rem + 1.8461vw, 3.8147rem);--space-3xs: clamp(.3125rem, .3125rem + 0vw, .3125rem);--space-2xs: clamp(.5625rem, .5369rem + .1136vw, .625rem);--space-xs: clamp(.875rem, .8494rem + .1136vw, .9375rem);--space-s: clamp(1.125rem, 1.0739rem + .2273vw, 1.25rem);--space-m: clamp(1.6875rem, 1.6108rem + .3409vw, 1.875rem);--space-l: clamp(2.25rem, 2.1477rem + .4545vw, 2.5rem);--space-xl: clamp(3.375rem, 3.2216rem + .6818vw, 3.75rem);--space-2xl: clamp(4.5rem, 4.2955rem + .9091vw, 5rem);--space-3xl: clamp(6.75rem, 6.4432rem + 1.3636vw, 7.5rem);--space-s-m: clamp(1.125rem, .8182rem + 1.3636vw, 1.875rem);--space-m-l: clamp(1.6875rem, 1.3551rem + 1.4773vw, 2.5rem);--space-l-xl: clamp(2.25rem, 1.6364rem + 2.7273vw, 3.75rem);--space-s-l: clamp(1.125rem, .5625rem + 2.5vw, 2.5rem);--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .875rem;--radius-full: 9999px;--shadow-color: 35 8% 15%;--shadow-sm: 0 1px 2px -1px hsl(var(--shadow-color) / .08), 0 1px 1px -1px hsl(var(--shadow-color) / .04);--shadow-md: 0 3px 8px -2px hsl(var(--shadow-color) / .1), 0 2px 4px -2px hsl(var(--shadow-color) / .06);--shadow-lg: 0 8px 24px -4px hsl(var(--shadow-color) / .12), 0 4px 10px -4px hsl(var(--shadow-color) / .07);--shadow-xl: 0 16px 48px -8px hsl(var(--shadow-color) / .14), 0 8px 16px -4px hsl(var(--shadow-color) / .08);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: linear( 0, .006, .025 2.8%, .101 6.1%, .539 18.9%, .721 25.3%, .849 31.5%, .937 38.1%, .968 41.8%, .991 45.7%, 1.006 50.1%, 1.015 55%, 1.017 63.9%, 1.001 85.1%, 1 );--duration-fast: .12s;--duration-base: .2s;--duration-slow: .4s;--duration-slower: .6s;--measure-narrow: 45ch;--measure-base: 60ch;--measure-wide: 75ch;--page-max-width: 72rem;--page-gutter: var(--space-m)}:root{color-scheme:light dark;--color-bg: light-dark(var(--stone-50), var(--stone-950));--color-bg-raised: light-dark(white, var(--stone-900));--color-bg-sunken: light-dark(var(--stone-100), oklch(.09 .004 50));--color-bg-overlay: light-dark(white, var(--stone-800));--color-text: light-dark(var(--stone-900), var(--stone-100));--color-text-secondary: light-dark(var(--stone-600), var(--stone-400));--color-text-tertiary: light-dark(var(--stone-400), var(--stone-500));--color-accent: var(--accent);--color-accent-hover: light-dark(var(--accent-dark), var(--accent-light));--color-accent-subtle: light-dark(var(--accent-pale), oklch(.2 .04 var(--accent-hue)));--color-accent-text: light-dark(var(--accent-dark), var(--accent-light));--color-border: light-dark(var(--stone-200), var(--stone-800));--color-border-subtle: light-dark(var(--stone-150), var(--stone-900));--color-focus: oklch(.65 .15 var(--accent-hue));--color-link: var(--color-accent-text);--color-link-hover: var(--color-accent-hover)}}@layer base{body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:var(--text-base);line-height:1.6;color:var(--color-text);background-color:var(--color-bg);transition:background-color var(--duration-slow) var(--ease-out);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{line-height:1.15;font-weight:700;letter-spacing:-.02em;color:var(--color-text)}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.15em;transition:color var(--duration-fast) var(--ease-out)}code{font-family:ui-monospace,Cascadia Code,Fira Code,JetBrains Mono,monospace;font-size:.875em;padding:.15em .35em;border-radius:var(--radius-sm);background:var(--color-bg-sunken)}pre{font-family:ui-monospace,Cascadia Code,Fira Code,JetBrains Mono,monospace;font-size:var(--text-sm);line-height:1.65;padding:var(--space-s-m);border-radius:var(--radius-lg);background:var(--color-bg-sunken);overflow-x:auto;-webkit-overflow-scrolling:touch;& code{padding:0;background:none;font-size:inherit}}blockquote{padding-inline-start:var(--space-s);border-inline-start:3px solid var(--color-accent);color:var(--color-text-secondary);font-style:italic}hr{border:none;block-size:1px;background:var(--color-border);margin-block:var(--space-l-xl)}figure{& figcaption{margin-block-start:var(--space-2xs);font-size:var(--text-sm);color:var(--color-text-secondary)}}::selection{background:var(--color-accent-subtle)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:var(--radius-sm)}strong,b{font-weight:650}small{font-size:var(--text-sm)}mark{background:var(--color-accent-subtle);color:var(--color-text);padding-inline:.2em;border-radius:var(--radius-sm)}}@layer layouts{.page{max-inline-size:var(--page-max-width);margin-inline:auto;padding-inline:var(--page-gutter)}.stack{display:flex;flex-direction:column;gap:var(--stack-gap, var(--space-m));&[data-gap=l]{--stack-gap: var(--space-l)}&[data-gap=xl]{--stack-gap: var(--space-xl)}&[data-gap=s]{--stack-gap: var(--space-s)}}.cluster{display:flex;flex-wrap:wrap;gap:var(--cluster-gap, var(--space-s));align-items:center}.center{max-inline-size:var(--center-width, var(--measure-base));margin-inline:auto}.auto-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--grid-min, 16rem)),1fr));gap:var(--grid-gap, var(--space-m))}.section{padding-block:var(--section-space, var(--space-xl))}}@layer utilities{.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media(prefers-contrast:more){:root{--color-border: light-dark(var(--stone-400), var(--stone-500));--color-text-secondary: light-dark(var(--stone-700), var(--stone-300))}body{font-weight:450}a{text-decoration-thickness:2px}:focus-visible{outline-width:3px}}.flow>*+*{margin-block-start:var(--flow-space, 1em)}.flow>h2+*{--flow-space: var(--space-s)}.flow>h3+*{--flow-space: var(--space-xs)}.flow>*+h2{--flow-space: var(--space-xl)}.flow>*+h3{--flow-space: var(--space-l)}.flow>*+h4{--flow-space: var(--space-m)}.text-secondary{color:var(--color-text-secondary)}.text-sm{font-size:var(--text-sm)}.text-lg{font-size:var(--text-lg)}}@view-transition{navigation:auto}@supports (animation-timeline: view()){.animate-on-scroll{animation:fade-in linear both;animation-timeline:view();animation-range:entry 0% cover 25%}}@keyframes fade-in{0%{opacity:0;translate:0 .75rem}to{opacity:1;translate:0}}.skip-link[data-astro-cid-sckkx6r4]:focus{position:fixed;inset-block-start:var(--space-xs);inset-inline-start:var(--space-xs);z-index:999;padding:var(--space-2xs) var(--space-s);background:var(--color-bg-raised);color:var(--color-text);border-radius:var(--radius-md);box-shadow:var(--shadow-md);width:auto;height:auto;clip:auto;white-space:normal;overflow:visible;margin:0}
