@import"https://fonts.googleapis.com/css2?family=Fragment+Mono&family=Geist:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700;800&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.static{position:static}.sticky{position:sticky}.top-3{top:.75rem}.z-20{z-index:20}.m-0{margin:0}.-mb-2{margin-bottom:-.5rem}.ml-auto{margin-left:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-6{margin-top:1.5rem}.mt-\[0\.82em\]{margin-top:.82em}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-\[16\/10\]{aspect-ratio:16/10}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-11{height:2.75rem}.h-5{height:1.25rem}.h-\[0\.45rem\]{height:.45rem}.h-\[1\.05rem\]{height:1.05rem}.h-\[16\.5rem\]{height:16.5rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-11{width:2.75rem}.w-5{width:1.25rem}.w-\[0\.45rem\]{width:.45rem}.w-\[1\.05rem\]{width:1.05rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[78\%\]{min-width:78%}.max-w-\[58ch\]{max-width:58ch}.max-w-\[64ch\]{max-width:64ch}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[0\.85rem_minmax\(0\,1fr\)\]{grid-template-columns:.85rem minmax(0,1fr)}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-4{gap:1rem}.gap-\[0\.35rem\]{gap:.35rem}.gap-\[0\.7rem\]{gap:.7rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-3{row-gap:.75rem}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-3\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.875rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.875rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-y-\[0\.7rem\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.7rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.7rem * var(--tw-space-y-reverse))}.space-y-\[2\.9rem\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.9rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.9rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.break-words{overflow-wrap:break-word}.rounded-\[0\.34rem\]{border-radius:.34rem}.rounded-\[var\(--radius-card\)\]{border-radius:var(--radius-card)}.rounded-full{border-radius:9999px}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-\[var\(--code-border\)\]{border-color:var(--code-border)}.border-\[var\(--code-inline-border\)\]{border-color:var(--code-inline-border)}.border-\[var\(--doc-border\)\]{border-color:var(--doc-border)}.bg-\[var\(--code-bg\)\]{background-color:var(--code-bg)}.bg-\[var\(--code-inline-bg\)\]{background-color:var(--code-inline-bg)}.bg-\[var\(--code-toolbar\)\]{background-color:var(--code-toolbar)}.bg-\[var\(--doc-accent\)\]{background-color:var(--doc-accent)}.bg-\[var\(--doc-bg\)\]{background-color:var(--doc-bg)}.bg-\[var\(--doc-border\)\]{background-color:var(--doc-border)}.bg-\[var\(--doc-marker\)\]{background-color:var(--doc-marker)}.bg-\[var\(--doc-surface\)\]{background-color:var(--doc-surface)}.bg-\[var\(--doc-surface-soft\)\]{background-color:var(--doc-surface-soft)}.bg-\[var\(--doc-surface-strong\)\]{background-color:var(--doc-surface-strong)}.bg-transparent{background-color:transparent}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-\[0\.18rem\]{padding-left:.18rem;padding-right:.18rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-\[0\.02rem\]{padding-top:.02rem;padding-bottom:.02rem}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-10{padding-bottom:2.5rem}.pb-8{padding-bottom:2rem}.pl-\[0\.15rem\]{padding-left:.15rem}.pl-\[0\.1rem\]{padding-left:.1rem}.pl-\[1\.55rem\]{padding-left:1.55rem}.pt-0\.5{padding-top:.125rem}.pt-10{padding-top:2.5rem}.pt-2{padding-top:.5rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-7{padding-top:1.75rem}.font-mono{font-family:var(--font-mono)}.text-\[0\.72rem\]{font-size:.72rem}.text-\[0\.875em\]{font-size:.875em}.text-\[1\.02rem\]{font-size:1.02rem}.text-\[1\.12rem\]{font-size:1.12rem}.text-\[1\.22rem\]{font-size:1.22rem}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-8{line-height:2rem}.leading-\[1\.2\]{line-height:1.2}.leading-\[1\.875rem\]{line-height:1.875rem}.tracking-normal{letter-spacing:0em}.text-\[var\(--code-inline-text\)\]{color:var(--code-inline-text)}.text-\[var\(--code-text\)\]{color:var(--code-text)}.text-\[var\(--doc-heading\)\]{color:var(--doc-heading)}.text-\[var\(--doc-muted\)\]{color:var(--doc-muted)}.text-\[var\(--doc-subtle\)\]{color:var(--doc-subtle)}.text-\[var\(--doc-text\)\]{color:var(--doc-text)}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-\[150ms\]{transition-duration:.15s}.\[scrollbar-width\:thin\]{scrollbar-width:thin}.\[transition-timing-function\:var\(--ease-out-expo\)\]{transition-timing-function:var(--ease-out-expo)}:root{color-scheme:light;--color-brand-1: #ffffff;--color-brand-2: #0099ff;--color-brand-3: #000000;--color-brand-4: #adadad;--color-brand-5: #124eeb;--color-brand-6: #616161;--color-brand-7: #d1d5db;--color-brand-8: #605dba26;--color-brand-9: #80b9ff;--color-brand-10: #2b2b2b;--color-brand-11: #00000029;--color-brand-12: #00000024;--color-brand-13: #00000008;--color-brand-14: #f2f3f500;--color-brand-15: #3d3d3d;--color-brand-16: #0c38a8;--color-brand-17: #e5e7eb;--color-brand-18: #f9fafb;--color-brand-19: #202c69;--color-brand-20: #2b82cf;--color-brand-21: #f3f4f6;--color-bg-22: #ffffffb3;--color-text-23: #0000ee;--color-text-24: #111111;--color-text-25: #555555;--font-brand-1: "Inter";--font-brand-2: "Inter Display", "Inter Display Placeholder", sans-serif;--font-brand-3: "Inter", "Inter Placeholder", sans-serif;--font-brand-4: "Geist", "Geist Placeholder", sans-serif;--font-brand-5: "Inter Display";--font-brand-6: "Inter Variable";--font-brand-7: "Geist Mono";--font-brand-8: "Geist";--font-brand-9: "Fragment Mono";--font-brand-10: "Geist Variable";--radius-brand-1: 8px;--radius-brand-2: 10px;--radius-brand-3: 4px;--radius-brand-4: 6px;--radius-brand-5: 12px;--shadow-brand-1: 0px 0px 0px 0px var(--token-cb833848-9991-4740-b7e8-3881434254ca, rgb(128, 185, 255)), 0px .48174984141951427px .8671497145551256px -1.4166666666666665px rgba(0, 0, 0, .16), 0px 1.8308266425947657px 3.295487956670578px -2.833333333333333px rgba(0, 0, 0, .14), 0px 8px 14.399999999999999px -4.25px rgba(0, 0, 0, .03);--shadow-brand-2: rgb(128, 185, 255);--shadow-brand-3: 0px 0px 0px 0px var(--token-e3a90888-763b-420f-bb27-f2520e07d9b1, rgb(209, 213, 219)), 0px .48174984141951427px .8671497145551256px -1.4166666666666665px rgba(0, 0, 0, .16), 0px 1.8308266425947657px 3.295487956670578px -2.833333333333333px rgba(0, 0, 0, .14), 0px 8px 14.399999999999999px -4.25px rgba(0, 0, 0, .03);--shadow-brand-4: rgb(209, 213, 219);--shadow-brand-5: 0 2px 10px 1px #0000001a;--font-body: var(--font-brand-4), var(--font-brand-1), "Apple SD Gothic Neo", "Malgun Gothic", "Segoe UI", sans-serif;--font-display: var(--font-brand-2), var(--font-brand-4), "Apple SD Gothic Neo", "Malgun Gothic", "Segoe UI", sans-serif;--font-mono: var(--font-brand-7), var(--font-brand-9), "SFMono-Regular", "SF Mono", ui-monospace, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--doc-bg: var(--color-brand-18);--doc-bg-strong: var(--color-brand-1);--doc-text: var(--color-text-24);--doc-heading: var(--color-brand-3);--doc-surface: var(--color-brand-1);--doc-surface-soft: var(--color-brand-18);--doc-surface-muted: var(--color-brand-21);--doc-surface-strong: var(--color-brand-17);--doc-border: var(--color-brand-13);--doc-border-strong: var(--color-brand-12);--doc-muted: var(--color-text-25);--doc-subtle: var(--color-brand-6);--doc-subtle-2: var(--color-brand-4);--doc-accent: var(--color-brand-5);--doc-accent-soft: color-mix(in srgb, var(--color-brand-2) 10%, transparent);--doc-selection: color-mix(in srgb, var(--color-brand-9) 28%, transparent);--doc-callout-bg: var(--color-brand-18);--doc-callout-border: var(--color-brand-13);--doc-callout-border-soft: var(--color-brand-13);--doc-marker: var(--color-brand-4);--project-case-panel-bg: var(--color-brand-1);--project-case-card-bg: var(--color-brand-18);--project-case-card-border: var(--color-brand-13);--code-bg: var(--color-brand-10);--code-border: color-mix(in srgb, var(--color-brand-1) 14%, transparent);--code-toolbar: color-mix(in srgb, var(--color-brand-1) 6%, transparent);--code-text: var(--color-brand-18);--code-inline-bg: var(--color-brand-21);--code-inline-border: var(--color-brand-7);--code-inline-text: var(--color-text-24);--syntax-comment: var(--color-brand-4);--syntax-keyword: var(--color-brand-9);--syntax-string: var(--color-brand-17);--syntax-function: var(--color-brand-2);--syntax-number: var(--color-brand-9);--syntax-operator: var(--color-brand-7);--syntax-punctuation: var(--color-brand-7);--space-2xs: clamp(.5rem, .47rem + .12vw, .65rem);--space-xs: clamp(.75rem, .69rem + .22vw, 1rem);--space-sm: clamp(1rem, .92rem + .3vw, 1.35rem);--space-md: clamp(1.5rem, 1.32rem + .6vw, 2rem);--space-lg: clamp(2.25rem, 1.95rem + 1vw, 3.15rem);--space-xl: clamp(3.25rem, 2.75rem + 1.8vw, 5rem);--page-max: 64rem;--article-max: 47.5rem;--aside-width: 15.5rem;--rail-width: clamp(5rem, 8vw, 6.3rem);--radius-card: var(--radius-brand-1);--radius-panel: var(--radius-brand-1);--radius-media: var(--radius-brand-1);--radius-pill: 9999px;--shadow-card: none;--shadow-card-hover: none;--shadow-panel: none;--color-focus-offset: var(--doc-bg);--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-in-out-soft: cubic-bezier(.65, 0, .35, 1);--duration-hover: .15s;--duration-layout: .2s;font-family:var(--font-body);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-kerning:normal}:root.dark{color-scheme:dark;--doc-bg: var(--color-brand-3);--doc-bg-strong: var(--color-brand-3);--doc-text: var(--color-brand-17);--doc-heading: var(--color-brand-1);--doc-surface: var(--color-brand-10);--doc-surface-soft: var(--color-brand-15);--doc-surface-muted: color-mix(in srgb, var(--color-brand-15) 88%, var(--color-brand-1) 12%);--doc-surface-strong: color-mix(in srgb, var(--color-brand-15) 80%, var(--color-brand-1) 20%);--doc-border: color-mix(in srgb, var(--color-brand-1) 10%, transparent);--doc-border-strong: color-mix(in srgb, var(--color-brand-1) 18%, transparent);--doc-muted: var(--color-brand-4);--doc-subtle: var(--color-brand-4);--doc-subtle-2: var(--color-brand-7);--doc-accent: var(--color-brand-9);--doc-accent-soft: color-mix(in srgb, var(--color-brand-9) 14%, transparent);--doc-selection: color-mix(in srgb, var(--color-brand-9) 26%, transparent);--doc-callout-bg: var(--color-brand-10);--doc-callout-border: color-mix(in srgb, var(--color-brand-1) 10%, transparent);--doc-callout-border-soft: color-mix(in srgb, var(--color-brand-1) 10%, transparent);--doc-marker: var(--color-brand-4);--project-case-panel-bg: var(--color-brand-10);--project-case-card-bg: color-mix(in srgb, var(--color-brand-10) 90%, var(--color-brand-1) 10%);--project-case-card-border: color-mix(in srgb, var(--color-brand-1) 10%, transparent);--code-bg: var(--color-brand-3);--code-border: color-mix(in srgb, var(--color-brand-1) 14%, transparent);--code-toolbar: color-mix(in srgb, var(--color-brand-1) 6%, transparent);--code-text: var(--color-brand-18);--code-inline-bg: var(--color-brand-15);--code-inline-border: color-mix(in srgb, var(--color-brand-1) 18%, transparent);--code-inline-text: var(--color-brand-18);--shadow-card: none;--shadow-card-hover: none;--shadow-panel: none}html,body,#root{min-height:100%}html{scroll-behavior:smooth;scroll-snap-type:y mandatory;scrollbar-gutter:stable}body{position:relative;margin:0;min-width:320px;overflow-x:hidden;background:var(--doc-bg);color:var(--doc-text);font-family:var(--font-body);overflow-wrap:break-word;transition:background-color var(--duration-hover) ease,color var(--duration-hover) ease;word-break:keep-all}body:before{content:none}a{color:inherit;text-decoration:none}::-moz-selection{background:var(--doc-selection)}::selection{background:var(--doc-selection)}#root{isolation:isolate}.folio-page{position:relative}.portfolio-theme-control{position:absolute;top:clamp(1rem,2vw,1.6rem);right:clamp(1rem,2.4vw,2rem);z-index:10}.theme-toggle-button{display:inline-flex;width:2.45rem;height:2.45rem;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--doc-border) 78%,transparent);border-radius:999px;background:color-mix(in srgb,var(--doc-bg) 86%,transparent);color:color-mix(in srgb,var(--doc-muted) 82%,var(--doc-heading) 18%);cursor:pointer;padding:0;box-shadow:none;transition:border-color var(--duration-hover) var(--ease-out-expo),background-color var(--duration-hover) var(--ease-out-expo),color var(--duration-hover) var(--ease-out-expo),transform var(--duration-hover) var(--ease-out-expo)}.theme-toggle-button:hover,.theme-toggle-button:focus-visible{border-color:color-mix(in srgb,var(--doc-accent) 18%,var(--doc-border) 82%);background:color-mix(in srgb,var(--doc-surface) 92%,var(--doc-bg) 8%);color:var(--doc-heading);transform:translateY(-1px)}.theme-toggle-icon{display:inline-flex;align-items:center;justify-content:center}.intro-block{--intro-accent: #598de2;position:relative;width:100%}:root.dark .intro-block{--intro-accent: #8dbaff}.intro-hero-shell{display:grid;gap:clamp(1.4rem,3vw,2rem);align-items:end}.intro-heading{max-width:13.5em;color:var(--doc-heading);font-size:clamp(1.95rem,5.4vw,3.85rem);font-weight:760;letter-spacing:0;line-height:1.05;text-wrap:balance}.intro-heading,.intro-action-item,.intro-summary-item{opacity:0;transform:translate3d(0,16px,0);animation:intro-cascade-enter var(--duration-layout) var(--ease-out-expo) both;animation-delay:calc(40ms + var(--intro-reveal-index, 0) * 32ms);will-change:opacity,transform}.intro-reveal-0{--intro-reveal-index: 0}.intro-reveal-1{--intro-reveal-index: 1}.intro-reveal-2{--intro-reveal-index: 2}.intro-reveal-3{--intro-reveal-index: 3}.intro-reveal-4{--intro-reveal-index: 4}.intro-reveal-5{--intro-reveal-index: 5}.intro-name{position:relative;display:inline-block;color:var(--intro-accent);white-space:nowrap}.intro-action-row{display:grid;width:-moz-fit-content;width:fit-content;gap:.62rem;align-items:start}.intro-action-link{display:inline-flex;min-height:2rem;align-items:center;gap:.62rem;border:0;background:transparent;color:var(--doc-muted);cursor:pointer;font:inherit;font-size:.92rem;font-weight:650;letter-spacing:0;line-height:1.35;padding:0;text-align:left;transition:color var(--duration-hover) var(--ease-out-expo),transform var(--duration-hover) var(--ease-out-expo)}.intro-action-link:hover,.intro-action-link:focus-visible{color:var(--doc-heading);transform:translate(2px)}.intro-action-icon{display:inline-flex;width:1.32rem;height:1.32rem;flex:0 0 auto;align-items:center;justify-content:center;color:color-mix(in srgb,var(--doc-muted) 82%,var(--intro-accent) 18%)}.intro-keyword-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.35rem;padding:0;list-style:none}.intro-keyword-list li{border:1px solid var(--doc-border);border-radius:999px;padding:.42rem .72rem;color:color-mix(in srgb,var(--doc-muted) 88%,var(--doc-heading) 12%);font-size:.82rem;line-height:1.35}.intro-summary-panel{display:grid;gap:clamp(1.5rem,3vw,2rem)}.intro-summary-item{display:grid;gap:.72rem;padding-block:0}.intro-summary-item h2{max-width:100%;color:var(--doc-heading);font-size:clamp(1.08rem,1.55vw,1.32rem);font-weight:750;letter-spacing:0;line-height:1.38}.intro-summary-item p{max-width:100%;color:var(--doc-text);font-size:1rem;line-height:1.9}.intro-scroll-cue{display:inline-grid;justify-items:center;gap:.42rem;justify-self:center;align-self:end;color:color-mix(in srgb,var(--doc-muted) 82%,var(--doc-heading) 18%);font-size:.86rem;font-weight:560;letter-spacing:0;line-height:2;text-decoration:none;opacity:0;transform:translate3d(0,8px,0);animation:intro-scroll-cue-enter var(--duration-layout) var(--ease-out-expo) .18s both;transition:color var(--duration-hover) var(--ease-out-expo),transform var(--duration-hover) var(--ease-out-expo)}.intro-scroll-cue:hover,.intro-scroll-cue:focus-visible{color:var(--doc-heading);transform:translate3d(0,-1px,0)}.intro-scroll-cue-icon{display:inline-flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--doc-heading) 82%,var(--intro-accent) 18%);font-size:1.5rem;line-height:1;will-change:transform,opacity}@media(min-width:900px){.intro-hero-shell{grid-template-columns:minmax(0,1fr)}.intro-heading{max-width:min(13.5em,calc(100% - 8.25rem))}.intro-action-row{position:absolute;top:.18rem;right:0;justify-content:flex-end}}.folio-panel{border:1px solid var(--doc-border);background:var(--doc-surface);border-radius:var(--radius-panel)}.folio-card{border:1px solid var(--doc-border);background:var(--doc-surface);border-radius:var(--radius-card)}.folio-soft-card{border:1px solid var(--doc-border);background:var(--doc-surface-soft);border-radius:var(--radius-card)}.folio-scroll-context{border:1px solid var(--doc-border);background:color-mix(in srgb,var(--doc-bg) 65%,var(--doc-surface) 35%);border-radius:var(--radius-card)}.folio-section-title{margin-top:.85rem;color:var(--doc-heading);font-size:clamp(1.65rem,2.15vw,1.75rem);font-weight:700;letter-spacing:0;line-height:1.42}.folio-section-lead{margin-top:1rem;max-width:42rem;color:var(--doc-muted);font-size:1rem;line-height:2rem;letter-spacing:0}.folio-callout{border:1px solid var(--doc-callout-border);background:var(--doc-callout-bg);border-radius:var(--radius-card);color:var(--doc-text);box-shadow:none}.folio-text-link{color:var(--doc-heading);border-bottom:1px solid color-mix(in srgb,var(--doc-heading) 18%,transparent);transition:color var(--duration-hover) ease,border-color var(--duration-hover) ease}.folio-text-link:hover{border-color:color-mix(in srgb,var(--doc-heading) 24%,transparent)}.section-reveal{opacity:0;transform:translate3d(0,12px,0);animation:section-reveal var(--duration-layout) var(--ease-out-expo) forwards;animation-delay:calc(var(--reveal-index, 0) * 32ms)}.portfolio-snap-shell{min-height:100vh;min-height:100svh;overflow-x:clip;scrollbar-gutter:stable both-edges}.portfolio-snap-track{display:grid;min-height:100%}.portfolio-snap-page{box-sizing:border-box;min-height:100vh;min-height:100svh;scroll-snap-align:start;scroll-snap-stop:always}.portfolio-snap-inner{box-sizing:border-box;display:grid;width:min(100%,var(--page-max));min-height:inherit;margin-inline:auto;padding:clamp(1.5rem,4vw,3rem) clamp(1rem,3vw,2rem)}.portfolio-intro-inner{grid-template-rows:minmax(0,1fr) auto;align-items:center;align-content:stretch;width:min(100%,var(--article-max));gap:clamp(1.5rem,4vw,3rem);padding-block:clamp(2rem,7vw,4.5rem) clamp(1.35rem,4vw,2.4rem)}.work-experience-observer{scroll-margin-top:0}.work-experience-width-frame{width:100%;max-width:none;margin-inline:0;animation:none;will-change:auto}.work-experience-width-frame .project-case-list{display:block;margin-top:0;opacity:1;visibility:visible;will-change:auto}.work-experience-width-frame .project-company-group,.work-experience-width-frame .project-case-article{display:block;padding-bottom:0;animation:none}.sticky-rail{align-self:start}.focus-ring:focus{outline:2px solid transparent;outline-offset:2px}.focus-ring:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.focus-ring{--tw-ring-color: var(--doc-accent);--tw-ring-offset-color: var(--color-focus-offset)}.project-case-study{--case-panel-enter-duration: var(--duration-layout);--case-panel-exit-duration: var(--duration-hover);--project-meta-enter-duration: var(--duration-layout);--project-meta-exit-duration: var(--duration-hover);--case-page-padding-block: clamp(1.25rem, 3vw, 2.25rem);--case-page-padding-inline: clamp(1rem, 3vw, 2rem);box-sizing:border-box;display:grid;grid-template-rows:minmax(0,1fr);width:100%;height:100vh;height:100svh;min-height:100vh;min-height:100svh;overflow:hidden;padding-block:var(--case-page-padding-block);scroll-snap-align:start;scroll-snap-stop:always}.project-case-list{box-sizing:border-box;display:grid;grid-template-columns:minmax(15rem,18rem) minmax(0,1fr) auto;gap:clamp(1.25rem,3vw,2.25rem);align-items:stretch;width:min(100%,78rem);height:100%;min-height:0;margin-top:0;margin-inline:auto;overflow:hidden;padding-inline:var(--case-page-padding-inline)}.project-case-page{box-sizing:border-box;position:absolute;inset:0;display:grid;align-items:start;min-width:0;min-height:0;pointer-events:none;visibility:hidden;z-index:0}.project-case-page[data-active=true],.project-case-page[data-case-leaving=true]{visibility:visible}.project-case-page[data-active=true]{pointer-events:auto;z-index:2}.project-case-page[data-case-leaving=true]{z-index:1}.project-case-meta-stage,.project-case-viewport{position:relative;min-width:0;min-height:0;overflow:hidden}.project-case-meta-stage{display:grid;grid-template-rows:auto minmax(0,1fr);gap:clamp(.95rem,2vw,1.25rem)}.project-case-meta-head{display:grid;gap:clamp(.65rem,1.25vw,.85rem);min-width:0}.project-case-section-label{margin:0;color:color-mix(in srgb,var(--doc-muted) 80%,var(--doc-heading) 20%);font-size:clamp(.72rem,.82vw,.78rem);font-weight:720;letter-spacing:0;line-height:1.35}.project-company-identity-stage{position:relative;min-width:0;min-height:2rem;overflow:hidden}.project-company-identity-frame{min-width:0}.project-company-identity-frame-active{animation:project-meta-enter var(--project-meta-enter-duration) var(--ease-out-expo) both}.project-meta-content-stage{position:relative;min-width:0;min-height:0;overflow:hidden}.project-meta-frame{position:absolute;inset:0;min-width:0;min-height:0;overflow:hidden}.project-case-meta-stage .project-meta-rail{height:100%;overflow:auto;overscroll-behavior-y:contain;padding-top:clamp(.2rem,.8vw,.5rem);scrollbar-gutter:stable}.project-case-meta-stage .project-meta-rail,.project-case-panel-body{scrollbar-color:color-mix(in srgb,var(--doc-muted) 34%,transparent) transparent;scrollbar-width:thin}.project-case-meta-stage .project-meta-rail::-webkit-scrollbar,.project-case-panel-body::-webkit-scrollbar{width:.38rem;height:.38rem}.project-case-meta-stage .project-meta-rail::-webkit-scrollbar-track,.project-case-panel-body::-webkit-scrollbar-track{background:transparent}.project-case-meta-stage .project-meta-rail::-webkit-scrollbar-thumb,.project-case-panel-body::-webkit-scrollbar-thumb{border:.12rem solid transparent;border-radius:var(--radius-pill);background-color:color-mix(in srgb,var(--doc-muted) 38%,transparent);background-clip:content-box}.project-case-meta-stage .project-meta-rail::-webkit-scrollbar-thumb:hover,.project-case-panel-body::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb,var(--doc-muted) 54%,transparent)}.project-meta-frame-active{transition:opacity var(--duration-layout) var(--ease-out-expo),transform var(--duration-layout) var(--ease-out-expo);will-change:opacity,transform;opacity:1;transform:translateZ(0);animation:project-meta-enter var(--project-meta-enter-duration) var(--ease-out-expo) both}.project-meta-frame-leaving{opacity:0;transform:translate3d(0,14px,0);animation:project-meta-exit var(--project-meta-exit-duration) var(--ease-in-out-soft) both;pointer-events:none}.project-case-list[data-project-transition=exiting] .project-meta-frame-active{opacity:0;transform:translate3d(0,14px,0);animation:project-meta-exit var(--project-meta-exit-duration) var(--ease-in-out-soft) both}.project-company-group{--project-left-rail-width: minmax(15rem, .32fr);--project-rail-column-gap: clamp(2rem, 4vw, 3rem);--project-sticky-top: clamp(1.5rem, 4vw, 2.5rem);display:grid;gap:clamp(1.75rem,4vw,3.5rem);padding-bottom:clamp(3.5rem,7vw,5.5rem);animation:project-article-enter var(--duration-layout) var(--ease-out-expo) both}.project-company-group:last-child{padding-bottom:0}.project-company-projects{display:grid;gap:clamp(2.75rem,5vw,4.5rem);min-width:0}.project-case-article{display:grid;gap:clamp(1.4rem,3vw,2.2rem);padding-bottom:clamp(2.25rem,4vw,3.2rem);animation:project-article-enter var(--duration-layout) var(--ease-out-expo) both;animation-delay:calc(var(--project-index, 0) * 32ms)}.project-case-article:last-child{padding-bottom:0}.project-meta-rail{display:grid;gap:clamp(1rem,2.4vw,1.45rem);align-content:start;min-width:0}.project-entry-header{display:grid;gap:clamp(.75rem,1.8vw,1.15rem)}.project-identity-row{display:inline-flex;width:-moz-fit-content;width:fit-content;align-items:center;gap:.5rem}.project-identity-row-meta{padding-bottom:.1rem}.project-org-logo{display:grid;place-items:center;width:1.85rem;height:1.85rem;overflow:hidden;border:1px solid var(--doc-border);border-radius:var(--radius-card);background:color-mix(in srgb,var(--doc-surface) 78%,var(--doc-bg) 22%)}.project-org-logo img{display:block;width:88%;height:88%;-o-object-fit:contain;object-fit:contain}.project-org-label{color:color-mix(in srgb,var(--doc-muted) 88%,var(--doc-heading) 12%);font-family:inherit;font-size:clamp(.92rem,1.2vw,1.08rem);font-weight:700;letter-spacing:0;line-height:1.35}.project-title-row{display:grid;gap:.35rem;align-items:start;padding-left:0;border-left:0}.project-title-row h3{color:var(--doc-heading);font-size:clamp(1.35rem,1.95vw,1.85rem);font-weight:800;letter-spacing:0;line-height:1.2}.project-title-row span{color:color-mix(in srgb,var(--doc-muted) 90%,var(--doc-heading) 10%);font-size:clamp(.92rem,1.3vw,1.08rem);font-weight:500;letter-spacing:0;line-height:1.4}.project-summary-text{color:var(--doc-muted);font-size:clamp(.88rem,1.15vw,1rem);line-height:1.72;letter-spacing:0}.project-meta-list{display:grid;gap:.72rem;padding-block:.2rem}.project-meta-list-subtle{grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));gap:.58rem 1rem;padding-block:.28rem}.project-meta-list div{display:grid;gap:.22rem}.project-meta-list dt{color:color-mix(in srgb,var(--doc-muted) 78%,var(--doc-heading) 22%);font-family:var(--font-mono);font-size:.68rem;font-weight:800;letter-spacing:0;line-height:1.35;text-transform:uppercase}.project-meta-list dd{color:var(--doc-text);font-size:clamp(.86rem,1.08vw,.96rem);font-weight:600;letter-spacing:0;line-height:1.6}.project-meta-list-subtle dt{color:var(--doc-subtle);font-size:.62rem;font-weight:650;letter-spacing:0}.project-meta-list-subtle dd{color:color-mix(in srgb,var(--doc-muted) 88%,var(--doc-heading) 12%);font-size:clamp(.78rem,1vw,.86rem);font-weight:450;letter-spacing:0;line-height:1.55}.project-role-section ul{display:grid;gap:.32rem;color:var(--doc-muted);font-size:clamp(.9rem,1.15vw,1rem);line-height:1.72;letter-spacing:0;list-style:disc;padding-left:1.1rem}.project-role-section{margin-top:0}.project-role-section h4{color:var(--doc-heading);font-weight:700;font-size:clamp(1rem,1.35vw,1.16rem);letter-spacing:0;line-height:1.45}.project-role-section ul{margin-top:.8rem}.project-meta-gallery{display:grid;gap:.72rem;padding-top:.1rem}.project-meta-gallery h4{color:var(--doc-heading);font-size:clamp(.9rem,1.1vw,1rem);font-weight:700;letter-spacing:0;line-height:1.45}.project-meta-gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.52rem}.project-meta-gallery-item{aspect-ratio:4 / 3;min-width:0;overflow:hidden;border:1px solid color-mix(in srgb,var(--doc-border) 72%,transparent);border-radius:var(--radius-card);background:color-mix(in srgb,var(--doc-surface) 82%,var(--doc-bg) 18%);margin:0}.project-meta-gallery-trigger{display:block;width:100%;height:100%;border:0;background:transparent;cursor:zoom-in;padding:0}.project-meta-gallery-item img,.project-meta-gallery-trigger img{display:block;width:100%;height:100%;-o-object-position:center top;object-position:center top;-o-object-fit:cover;object-fit:cover}.project-meta-gallery-trigger img{transform:scale(1.24);transition:transform var(--duration-hover) var(--ease-out-expo)}.project-meta-gallery-trigger:hover img,.project-meta-gallery-trigger:focus-visible img{transform:scale(1.26)}.project-image-lightbox{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;isolation:isolate;background:color-mix(in srgb,var(--doc-heading) 22%,transparent);padding:clamp(.75rem,2.5vw,2rem);animation:lightbox-backdrop-enter var(--duration-layout) var(--ease-out-expo) both}.project-image-lightbox[data-state=closing]{animation:lightbox-backdrop-exit var(--duration-hover) var(--ease-out-expo) both}.project-image-lightbox-panel{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr);width:min(100%,72rem);max-height:min(88vh,56rem);overflow:hidden;border:1px solid color-mix(in srgb,var(--doc-border-strong) 72%,transparent);border-radius:var(--radius-card);background:var(--doc-surface);box-shadow:none;backface-visibility:hidden;contain:layout paint style;transform:translateZ(0)}.project-image-lightbox[data-state=closing] .project-image-lightbox-panel{opacity:0}.project-image-lightbox-toolbar{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--doc-border);background:var(--doc-surface);padding:.65rem .72rem .65rem 1rem}.project-image-lightbox-toolbar p{overflow:hidden;color:var(--doc-heading);font-size:.88rem;font-weight:700;line-height:1.4;margin:0;text-overflow:ellipsis;white-space:nowrap}.project-image-lightbox-media-shell{position:relative;min-height:0;overflow:hidden;background:var(--doc-surface-muted);contain:paint}.project-image-lightbox-media{width:100%;height:100%;overflow:auto;overscroll-behavior:contain;background:var(--doc-surface-muted);transform:translateZ(0)}.project-image-lightbox-media img{display:block;width:100%;height:auto;backface-visibility:hidden;transform:translateZ(0)}.project-image-scroll-cue{position:absolute;left:50%;bottom:clamp(.8rem,2vw,1.15rem);z-index:2;display:inline-flex;align-items:center;gap:.38rem;border:1px solid var(--doc-border-strong);border-radius:var(--radius-pill);background:var(--doc-surface);box-shadow:none;color:var(--doc-heading);font-size:.78rem;font-weight:700;line-height:1;padding:.48rem .68rem;pointer-events:none;transform:translate3d(-50%,0,0);animation:none}.project-image-scroll-cue-icon{width:.95rem;height:.95rem;flex:0 0 auto}.project-image-lightbox-close{display:inline-flex;width:2rem;height:2rem;flex:0 0 auto;align-items:center;justify-content:center;border:0;background:transparent;color:var(--doc-heading);cursor:pointer;padding:0;box-shadow:none;transition:none}:root.dark .project-image-lightbox{background:color-mix(in srgb,var(--doc-bg) 78%,transparent)}:root.dark .project-image-lightbox-panel{border-color:var(--doc-border-strong);background:var(--doc-surface);box-shadow:none}:root.dark .project-image-lightbox-toolbar{border-bottom-color:var(--doc-border);background:var(--doc-surface)}:root.dark .project-image-lightbox-toolbar p{color:var(--doc-heading)}:root.dark .project-image-lightbox-media{background:var(--doc-surface-muted)}:root.dark .project-image-lightbox-media-shell{background:var(--doc-surface-muted)}:root.dark .project-image-scroll-cue{border-color:var(--doc-border-strong);background:var(--doc-surface);box-shadow:none;color:var(--doc-heading)}:root.dark .project-image-lightbox-close{color:var(--doc-heading)}@keyframes lightbox-backdrop-enter{0%{opacity:0}to{opacity:1}}@keyframes lightbox-backdrop-exit{0%{opacity:1}to{opacity:0}}.project-case-timeline{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(.9rem,2vw,1.35rem);align-items:start;min-width:0;min-height:0}.project-case-items{list-style:none;margin:0;padding:0}.project-case-item{min-width:0}.project-case-marker{position:relative;z-index:1;display:grid;place-items:center;width:2.1rem;height:2.1rem;border:1px solid var(--doc-border-strong);border-radius:9999px;background:var(--doc-bg);color:var(--doc-heading);font-size:.72rem;font-weight:760;letter-spacing:0;margin-top:.7rem}.project-case-panel{align-self:start;display:grid;grid-template-rows:auto minmax(0,1fr);gap:clamp(1rem,2.2vw,1.45rem);height:auto;min-height:0;max-height:100%;overflow:hidden;overscroll-behavior-y:contain;border:1px solid color-mix(in srgb,var(--doc-border-strong) 74%,transparent);border-radius:var(--radius-card);background:var(--project-case-panel-bg);box-shadow:var(--shadow-card);padding:clamp(1.15rem,2.4vw,1.6rem) clamp(1.05rem,2.4vw,1.65rem);scrollbar-gutter:stable;opacity:.54;transform:translate3d(.95rem,0,0);transition:opacity var(--duration-layout) var(--ease-out-expo),transform var(--duration-layout) var(--ease-out-expo),box-shadow var(--duration-layout) var(--ease-out-expo)}.project-case-page[data-active=true] .project-case-panel{opacity:1;transform:translateZ(0);animation:project-case-panel-enter var(--case-panel-enter-duration) var(--ease-out-expo) both}.project-case-page[data-active=false] .project-case-panel{box-shadow:var(--shadow-panel)}.project-case-page[data-case-leaving=true] .project-case-panel{opacity:0;transform:translate3d(.95rem,0,0);animation:project-case-panel-exit var(--case-panel-exit-duration) var(--ease-in-out-soft) both}.project-case-panel-header{display:grid;position:relative;z-index:2;align-content:start;gap:.45rem;border-bottom:1px solid color-mix(in srgb,var(--doc-border) 76%,transparent);background:var(--project-case-panel-bg);padding-bottom:clamp(.7rem,1.4vw,.9rem)}.project-case-panel>h5,.project-case-panel-header h4{color:var(--doc-heading);font-size:clamp(1.02rem,1.34vw,1.16rem);font-weight:800;letter-spacing:0;line-height:1.48;margin:0;padding-bottom:.9rem;border-bottom:1px solid color-mix(in srgb,var(--doc-border) 76%,transparent)}.project-case-panel-header h4{display:-webkit-box;overflow:hidden;padding-bottom:0;border-bottom:0;-webkit-box-orient:vertical;-webkit-line-clamp:2}.project-case-panel-body{display:grid;gap:clamp(1rem,2vw,1.45rem);align-content:start;min-height:0;overflow:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable}.project-case-panel-body>.project-case-detail,.project-case-panel-body>.project-evidence-strip{min-width:0}.project-case-navigation-rail{display:grid;grid-template-rows:auto minmax(0,1fr) auto;align-self:stretch;justify-self:end;align-items:start;justify-items:center;height:100%;min-height:0}.project-case-index{position:sticky;top:clamp(1.2rem,3vw,2rem);justify-self:end}.project-case-index .project-case-items{display:flex;flex-direction:column;gap:.5rem}.project-case-index .project-case-item{display:block}.project-case-index-button{position:relative;isolation:isolate;display:inline-flex;width:2.42rem;height:2.42rem;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--doc-border-strong) 72%,transparent);border-radius:var(--radius-pill);background-color:color-mix(in srgb,var(--doc-surface) 90%,var(--doc-bg) 10%);color:color-mix(in srgb,var(--doc-muted) 76%,var(--doc-heading) 24%);box-shadow:none;cursor:pointer;font-family:var(--font-body);font-size:.72rem;font-variant-numeric:tabular-nums;font-weight:760;letter-spacing:0;line-height:1;overflow:hidden;padding:0;transition:border-color var(--case-panel-exit-duration) var(--ease-in-out-soft),color var(--case-panel-exit-duration) var(--ease-in-out-soft),transform var(--duration-hover) var(--ease-out-expo),box-shadow var(--case-panel-exit-duration) var(--ease-in-out-soft);will-change:border-color,color,box-shadow,transform}.project-case-index-button:before{position:absolute;inset:0;z-index:0;border-radius:inherit;background-color:color-mix(in srgb,var(--doc-heading) 92%,var(--doc-bg) 8%);content:"";opacity:0;transition:opacity var(--case-panel-exit-duration) var(--ease-in-out-soft);will-change:opacity}.project-case-index-button>span{position:relative;z-index:1}.project-case-index-button:hover,.project-case-index-button:focus-visible{border-color:color-mix(in srgb,var(--doc-accent) 18%,var(--doc-border-strong) 82%);background-color:color-mix(in srgb,var(--doc-surface-soft) 78%,var(--doc-bg) 22%);color:var(--doc-heading);transform:translate3d(0,-1px,0)}.project-case-index-button[data-active=true],.project-case-index-button[aria-current=true]{border-color:color-mix(in srgb,var(--doc-heading) 74%,transparent);color:var(--doc-bg);box-shadow:none;transition:border-color var(--case-panel-enter-duration) var(--ease-out-expo),color var(--case-panel-enter-duration) var(--ease-out-expo),transform var(--duration-hover) var(--ease-out-expo),box-shadow var(--case-panel-enter-duration) var(--ease-out-expo)}.project-case-index-button[data-active=true]:before,.project-case-index-button[aria-current=true]:before{opacity:1;transition-duration:var(--case-panel-enter-duration);transition-timing-function:var(--ease-out-expo)}.project-case-intro-button{grid-row:3;display:inline-flex;align-items:center;justify-content:center;gap:.28rem;min-width:2.42rem;min-height:2.42rem;border:1px solid color-mix(in srgb,var(--doc-border-strong) 64%,transparent);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--doc-surface) 74%,var(--doc-bg) 26%);color:color-mix(in srgb,var(--doc-muted) 70%,var(--doc-heading) 30%);cursor:pointer;font-family:var(--font-body);font-size:.68rem;font-weight:760;letter-spacing:0;line-height:1;padding:0 .58rem;animation:project-case-intro-button-enter var(--duration-layout) var(--ease-out-expo) both;transition:border-color var(--duration-hover) var(--ease-out-expo),background-color var(--duration-hover) var(--ease-out-expo),color var(--duration-hover) var(--ease-out-expo),transform var(--duration-hover) var(--ease-out-expo)}.project-case-intro-button svg{width:.86rem;height:.86rem;flex:0 0 auto}.project-case-intro-button:hover,.project-case-intro-button:focus-visible{border-color:color-mix(in srgb,var(--doc-accent) 18%,var(--doc-border-strong) 82%);background:color-mix(in srgb,var(--doc-surface-soft) 76%,var(--doc-bg) 24%);color:var(--doc-heading);transform:translate3d(0,-1px,0)}.project-case-card{display:grid;gap:clamp(1rem,2.2vw,1.45rem);border:1px solid var(--project-case-card-border);border-radius:var(--radius-card);background:var(--project-case-card-bg);box-shadow:var(--shadow-card);padding:clamp(1.15rem,2.4vw,2rem) clamp(1.15rem,2.4vw,2rem);transition:transform var(--duration-hover) var(--ease-out-expo),box-shadow var(--duration-hover) var(--ease-out-expo)}.project-case-card:hover{transform:translate3d(0,-1px,0);box-shadow:var(--shadow-card-hover)}.project-case-detail{display:grid;gap:clamp(1.05rem,2vw,1.55rem);margin-top:.15rem}.project-case-detail-block,.project-case-detail-blocks{display:grid;gap:.54rem}.project-case-content-block{min-width:0}.project-case-detail-block h6{color:var(--doc-heading);font-size:clamp(.98rem,1.18vw,1.08rem);font-weight:800;letter-spacing:0;line-height:1.45}.project-case-detail-text{color:color-mix(in srgb,var(--doc-text) 86%,var(--doc-muted) 14%);font-size:clamp(.95rem,1.12vw,1.02rem);line-height:1.82;letter-spacing:0}.project-case-detail-text-strong{color:var(--doc-heading);font-weight:700}.project-case-detail-text-muted{color:var(--doc-subtle)}.project-content-list{display:grid;gap:.56rem;margin-top:.2rem;padding-inline-start:clamp(.45rem,1vw,.75rem);color:color-mix(in srgb,var(--doc-text) 84%,var(--doc-muted) 16%);font-size:clamp(.95rem,1.12vw,1.02rem);line-height:1.82;letter-spacing:0}.project-content-list-nested{margin-top:.48rem;padding-inline-start:clamp(.35rem,.8vw,.6rem);gap:.4rem;font-size:.97em}.project-content-item{display:grid;grid-template-columns:.58rem minmax(0,1fr);gap:.34rem}.project-content-marker{width:.32rem;height:.32rem;margin-top:.76rem;border-radius:9999px;background:color-mix(in srgb,var(--doc-marker) 82%,var(--doc-heading) 18%)}.project-content-list-check .project-content-marker{width:.38rem;height:.38rem;margin-top:.55rem;border-radius:.1rem;background:var(--doc-accent);clip-path:polygon(14% 52%,34% 72%,86% 18%,100% 32%,36% 96%,0 62%)}.project-content-list-number{counter-reset:project-content-item}.project-content-list-number .project-content-item{counter-increment:project-content-item;grid-template-columns:1.2rem minmax(0,1fr)}.project-content-list-number .project-content-marker{display:grid;place-items:center;width:1rem;height:1rem;margin-top:.38rem;background:var(--doc-surface);color:var(--doc-accent);font-family:var(--font-mono);font-size:.58rem;font-weight:800}.project-content-list-number .project-content-marker:before{content:counter(project-content-item)}.project-evidence-strip{display:grid;gap:.62rem;padding-top:.65rem}.project-evidence-strip h6{color:var(--doc-heading);font-size:.78rem;font-weight:800;letter-spacing:0;line-height:1.4;text-transform:uppercase}.project-evidence-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));gap:.65rem}.project-evidence-card{min-width:0;overflow:hidden;border:1px solid var(--doc-border);border-radius:var(--radius-card);background:var(--doc-surface)}.project-evidence-card-image{position:relative;isolation:isolate;display:grid;min-height:clamp(12rem,22vw,17rem);align-items:end;border-color:color-mix(in srgb,var(--doc-border-strong) 72%,transparent);background:var(--doc-surface-strong)}.project-evidence-card-image:after{position:absolute;inset:0;z-index:1;background:color-mix(in srgb,var(--doc-heading) 18%,transparent);content:"";pointer-events:none}.project-evidence-visual{height:clamp(6rem,12vw,8rem);overflow:hidden}.project-evidence-card-image .project-evidence-visual{position:absolute;inset:0;z-index:0;height:100%}.project-evidence-visual img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.project-evidence-card-image .project-evidence-visual img{transform:scale(1.02);transition:transform var(--duration-hover) var(--ease-out-expo)}.project-evidence-card-image:hover .project-evidence-visual img{transform:scale(1.025)}.project-evidence-card figcaption{display:grid;gap:.28rem;padding:.8rem .9rem;color:var(--doc-muted);font-size:.76rem;line-height:1.55;letter-spacing:0}.project-evidence-card figcaption span:first-child{color:var(--doc-heading);font-size:.82rem;font-weight:800;line-height:1.35}.project-proof-type{width:-moz-fit-content;width:fit-content;border:1px solid color-mix(in srgb,var(--doc-border-strong) 74%,transparent);border-radius:9999px;background:color-mix(in srgb,var(--doc-surface) 86%,var(--doc-bg) 14%);color:color-mix(in srgb,var(--doc-heading) 86%,var(--doc-muted) 14%);font-family:var(--font-mono);font-size:.7rem;font-weight:800;letter-spacing:0;line-height:1.35;padding:.18rem .48rem;text-transform:uppercase}.project-evidence-card-image figcaption{position:relative;z-index:2;margin:auto .75rem .75rem;border:1px solid color-mix(in srgb,var(--doc-border-strong) 68%,transparent);border-radius:var(--radius-card);background:color-mix(in srgb,var(--doc-surface) 78%,transparent);box-shadow:none}.project-evidence-card-code{grid-column:1 / -1;background:var(--code-bg)}.project-evidence-card-code figcaption{border-bottom:1px solid var(--code-border);color:#fff}.project-evidence-card-code figcaption span:first-child{color:#fff}.code-shell code,.code-shell pre{color:var(--code-text);font-family:var(--font-mono);text-shadow:none;font-variant-ligatures:none}.code-shell .token.comment,.code-shell .token.prolog,.code-shell .token.doctype,.code-shell .token.cdata{color:var(--syntax-comment)}.code-shell .token.keyword,.code-shell .token.selector,.code-shell .token.atrule,.code-shell .token.property,.code-shell .token.tag{color:var(--syntax-keyword)}.code-shell .token.string,.code-shell .token.attr-value,.code-shell .token.inserted{color:var(--syntax-string)}.code-shell .token.function,.code-shell .token.class-name{color:var(--syntax-function)}.code-shell .token.number,.code-shell .token.boolean,.code-shell .token.constant,.code-shell .token.symbol{color:var(--syntax-number)}.code-shell .token.operator,.code-shell .token.entity,.code-shell .token.url{color:var(--syntax-operator);background:transparent}.code-shell .token.punctuation{color:var(--syntax-punctuation)}@keyframes section-reveal{0%{opacity:0;transform:translate3d(0,12px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes intro-cascade-enter{0%{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes intro-scroll-cue-enter{0%{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes project-article-enter{0%{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes project-case-panel-enter{0%{opacity:0;transform:translate3d(18px,0,0)}to{opacity:1;transform:translateZ(0)}}@keyframes project-case-panel-exit{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(18px,0,0)}}@keyframes project-meta-enter{0%{opacity:0;transform:translate3d(0,18px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes project-meta-exit{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,14px,0)}}@keyframes project-case-intro-button-enter{0%{opacity:0;transform:translate3d(0,.35rem,0)}to{opacity:1;transform:translateZ(0)}}@media(prefers-reduced-motion:reduce){.section-reveal,.intro-heading,.intro-name:after,.intro-action-item,.intro-summary-item,.intro-scroll-cue,.intro-scroll-cue-icon,.work-experience-width-frame,.work-experience-width-frame .project-case-list,.project-company-group,.project-case-article,.project-case-panel,.project-case-card,.project-case-intro-button,.project-meta-rail,.project-image-lightbox,.project-image-lightbox-panel,.project-image-scroll-cue,.project-image-lightbox-media img{animation:none!important;filter:none!important;opacity:1!important;transform:none!important;visibility:visible!important}html{scroll-snap-type:y mandatory}.work-experience-width-frame{max-width:none!important}.intro-name:after{opacity:0!important}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media(max-width:900px){html{scroll-snap-type:none}.intro-action-row{display:flex;flex-wrap:wrap;align-items:center}.portfolio-snap-inner,.project-case-list{padding-inline:clamp(.9rem,4vw,1.25rem)}.project-case-study{--case-page-padding-inline: clamp(.9rem, 4vw, 1.25rem);gap:.8rem}.project-case-list{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;gap:1rem}.project-case-index{position:relative;top:auto}.project-case-navigation-rail{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto;align-items:center;justify-self:start;justify-items:start;width:100%;height:auto;gap:.75rem}.project-case-intro-button{grid-row:auto}.project-case-meta-stage{height:min(17rem,32svh);max-height:min(17rem,32svh)}.project-case-meta-stage .project-meta-rail{padding-top:0}.project-case-panel{height:auto;max-height:100%;overflow:hidden}.project-case-panel-body{max-height:none;overflow:auto}.project-case-index{justify-self:start;width:100%;overflow-x:auto;overflow-y:hidden;padding-bottom:.1rem}.project-case-index .project-case-items{flex-direction:row;width:-moz-max-content;width:max-content;max-width:100%}.project-case-index .project-case-item{flex:0 0 auto}.project-case-study-mobile{display:block;height:auto;min-height:0;overflow:visible;scroll-snap-align:none;scroll-snap-stop:normal}.project-mobile-flow{display:grid;gap:clamp(1.2rem,5vw,1.8rem);width:min(100%,78rem);margin-inline:auto;padding-inline:clamp(.9rem,4vw,1.25rem)}.project-mobile-entry-list,.project-mobile-entry,.project-mobile-case-stack{display:grid;min-width:0}.project-mobile-entry-list{gap:clamp(2.4rem,9vw,3.4rem)}.project-mobile-entry{gap:clamp(1.25rem,5vw,1.9rem);animation:project-article-enter var(--duration-layout) var(--ease-out-expo) both}.project-mobile-meta{display:grid;gap:clamp(.9rem,3.8vw,1.25rem);min-width:0;animation:project-meta-enter var(--duration-layout) var(--ease-out-expo) both}.project-mobile-meta .project-meta-rail{height:auto;overflow:visible;overscroll-behavior-y:auto;padding-top:0}.project-mobile-case-stack{gap:clamp(1rem,4vw,1.35rem)}.project-case-page-mobile{position:relative;inset:auto;display:block;visibility:visible;pointer-events:auto;animation:project-article-enter var(--duration-layout) var(--ease-out-expo) both}.project-case-page-mobile .project-case-panel{max-height:none;overflow:visible;opacity:1;transform:none;animation:none}.project-case-page-mobile .project-case-panel-body{overflow:visible;overscroll-behavior-y:auto}}@media(min-width:768px){.sticky-rail{position:sticky;top:calc(var(--space-lg) - .2rem);transform:translateZ(0)}}@media(min-width:1024px){.project-company-group{display:block}.project-case-article{grid-template-columns:var(--project-left-rail-width) minmax(0,1fr);-moz-column-gap:var(--project-rail-column-gap);column-gap:var(--project-rail-column-gap);align-items:start}.project-meta-rail{position:sticky;top:var(--project-sticky-top)}}.marker\:text-\[var\(--doc-marker\)\] *::marker{color:var(--doc-marker)}.marker\:text-\[var\(--doc-marker\)\]::marker{color:var(--doc-marker)}.last\:border-b-0:last-child{border-bottom-width:0px}.last\:pb-0:last-child{padding-bottom:0}.hover\:border-\[var\(--code-text\)\]:hover{border-color:var(--code-text)}.hover\:opacity-100:hover{opacity:1}.group:hover .group-hover\:scale-\[1\.01\]{--tw-scale-x: 1.01;--tw-scale-y: 1.01;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media(min-width:640px){.sm\:min-w-\[calc\(50\%-0\.25rem\)\]{min-width:calc(50% - .25rem)}}@media(min-width:768px){.md\:h-12{height:3rem}.md\:h-\[20rem\]{height:20rem}.md\:w-12{width:3rem}.md\:min-w-\[22rem\]{min-width:22rem}.md\:grid-cols-\[3\.25rem_minmax\(0\,1fr\)\]{grid-template-columns:3.25rem minmax(0,1fr)}.md\:grid-cols-\[8\.5rem_minmax\(0\,1fr\)\]{grid-template-columns:8.5rem minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.md\:items-start{align-items:flex-start}.md\:gap-5{gap:1.25rem}.md\:gap-8{gap:2rem}.md\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:pt-0\.5{padding-top:.125rem}.md\:text-right{text-align:right}.md\:text-\[1\.16rem\]{font-size:1.16rem}.md\:text-\[1\.25rem\]{font-size:1.25rem}.md\:text-\[16px\]{font-size:16px}}
