@import"https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendardvariable.css";*,: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:SFMono-Regular,SF Mono,ui-monospace,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]: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-\[0\.8rem\]{border-radius:.8rem}.rounded-\[0\.95rem\]{border-radius:.95rem}.rounded-\[1rem\]{border-radius:1rem}.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)}.border-sky-500\/20{border-color:#0ea5e933}.border-slate-400\/20{border-color:#94a3b833}.border-stone-400\/25{border-color:#a8a29e40}.border-white\/20{border-color:#fff3}.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-strong\)\]{background-color:var(--doc-surface-strong)}.bg-sky-100\/75{background-color:#e0f2febf}.bg-slate-100\/70{background-color:#f1f5f9b3}.bg-stone-100\/80{background-color:#f5f5f4cc}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.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:SFMono-Regular,SF Mono,ui-monospace,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.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-\[-0\.012em\]{letter-spacing:-.012em}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[-0\.025em\]{letter-spacing:-.025em}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-\[-0\.03em\]{letter-spacing:-.03em}.tracking-\[0\.01em\]{letter-spacing:.01em}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-\[0\.16em\]{letter-spacing:.16em}.text-\[var\(--code-inline-text\)\]{color:var(--code-inline-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)}.text-sky-800{--tw-text-opacity: 1;color:rgb(7 89 133 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-stone-700{--tw-text-opacity: 1;color:rgb(68 64 60 / var(--tw-text-opacity, 1))}.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-300{transition-duration:.3s}.duration-\[900ms\]{transition-duration:.9s}.\[scrollbar-width\:thin\]{scrollbar-width:thin}.\[transition-timing-function\:var\(--ease-out-expo\)\]{transition-timing-function:var(--ease-out-expo)}:root{color-scheme:light;--font-body: "Pretendard Variable", "Pretendard", "Apple SD Gothic Neo", "Malgun Gothic", "Segoe UI", sans-serif;--font-mono: "SFMono-Regular", "SF Mono", ui-monospace, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--doc-bg: #f8f8f8;--doc-bg-strong: #f8f8f8;--doc-text: #2f2b25;--doc-heading: #13110f;--doc-surface: #fcfcfb;--doc-surface-soft: #f5f4f1;--doc-surface-muted: #f1ede3;--doc-surface-strong: #ebe7dc;--doc-border: rgba(17, 17, 17, .08);--doc-border-strong: rgba(17, 17, 17, .14);--doc-muted: #66645f;--doc-subtle: #8f8f8f;--doc-subtle-2: #a0a0a0;--doc-accent: #598de2;--doc-accent-soft: rgba(123, 168, 243, .16);--doc-selection: rgba(123, 168, 243, .18);--doc-callout-bg: #f3f7fb;--doc-callout-border: rgba(123, 168, 243, .28);--doc-callout-border-soft: rgba(123, 168, 243, .14);--doc-marker: #a0a0a0;--project-case-panel-bg: color-mix(in srgb, var(--doc-surface) 94%, var(--doc-bg) 6%);--project-case-card-bg: #e9ecee;--project-case-card-border: rgba(17, 17, 17, .06);--code-bg: #0b0d10;--code-border: rgba(133, 144, 166, .28);--code-toolbar: rgba(255, 255, 255, .05);--code-text: #d8dee9;--code-inline-bg: #c7d5e8;--code-inline-border: #baceef;--code-inline-text: #18253a;--syntax-comment: #768390;--syntax-keyword: #f47067;--syntax-string: #8ddb8c;--syntax-function: #6cb6ff;--syntax-number: #f69d50;--syntax-operator: #adbac7;--syntax-punctuation: #9da8b5;--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: 1rem;--radius-panel: 1rem;--radius-media: .95rem;--radius-pill: 9999px;--shadow-card: 0 18px 46px rgba(17, 17, 17, .08);--shadow-card-hover: 0 24px 58px rgba(17, 17, 17, .12);--shadow-panel: 0 0 0 rgba(17, 17, 17, 0);--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);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: #1f1e1c;--doc-bg-strong: #0d0f12;--doc-text: #e1e5eb;--doc-heading: #f8fafc;--doc-surface: #181b20;--doc-surface-soft: #20252c;--doc-surface-muted: #272d36;--doc-surface-strong: #303743;--doc-border: rgba(203, 213, 225, .16);--doc-border-strong: rgba(226, 232, 240, .26);--doc-muted: #c2c8d2;--doc-subtle: #9aa4b2;--doc-subtle-2: #a7b1bf;--doc-accent: #8dbaff;--doc-accent-soft: rgba(141, 186, 255, .18);--doc-selection: rgba(141, 186, 255, .24);--doc-callout-bg: #142033;--doc-callout-border: rgba(141, 186, 255, .34);--doc-callout-border-soft: rgba(141, 186, 255, .2);--doc-marker: #a7b1bf;--project-case-panel-bg: #2a2d33;--project-case-card-bg: #2a2d33;--project-case-card-border: transparent;--code-bg: #0a0d11;--code-border: rgba(148, 163, 184, .32);--code-toolbar: rgba(255, 255, 255, .07);--code-text: #e2e8f0;--code-inline-bg: #26384f;--code-inline-border: #365172;--code-inline-text: #ecf4ff;--shadow-card: 0 20px 54px rgba(0, 0, 0, .26);--shadow-card-hover: 0 28px 68px rgba(0, 0, 0, .34);--shadow-panel: 0 0 0 rgba(0, 0, 0, 0)}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);transition:background-color .18s ease,color .18s ease}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:0 10px 28px color-mix(in srgb,var(--doc-bg) 82%,transparent),inset 0 1px color-mix(in srgb,var(--doc-heading) 8%,transparent);transition:border-color .18s var(--ease-out-expo),background-color .18s var(--ease-out-expo),color .18s var(--ease-out-expo),transform .18s var(--ease-out-expo)}.theme-toggle-button:hover,.theme-toggle-button:focus-visible{border-color:color-mix(in srgb,var(--doc-accent) 36%,var(--doc-border) 64%);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{width:100%}.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(2.2rem,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 .68s var(--ease-out-expo) both;animation-delay:calc(.12s + var(--intro-reveal-index, 0) * 64ms);will-change:opacity,transform}.intro-name{position:relative;display:inline-block;color:var(--doc-accent);white-space:nowrap}.intro-name:after{position:absolute;inset:0;content:attr(data-shimmer-text);color:transparent;background:linear-gradient(135deg,transparent 0%,transparent 42%,color-mix(in srgb,var(--doc-heading) 92%,var(--doc-accent) 8%) 50%,transparent 58%,transparent 100%);background-size:240% 100%;background-position:130% 0;background-clip:text;-webkit-background-clip:text;opacity:0;pointer-events:none;animation:intro-name-shimmer 3s var(--ease-out-expo) 1s 1 both}.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 .16s var(--ease-out-expo),transform .16s 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(--doc-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 .74s var(--ease-out-expo) .72s both;transition:color .18s var(--ease-out-expo),transform .18s 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(--doc-accent) 18%);font-size:1.5rem;line-height:1;animation:intro-scroll-arrow-float 1.5s var(--ease-in-out-soft) infinite;will-change:transform,opacity}@media(min-width:900px){.intro-hero-shell{grid-template-columns:minmax(0,1fr) auto}.intro-action-row{justify-self:end;justify-content:flex-end;padding-bottom:.32rem}}.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:.92rem}.folio-section-title{margin-top:.85rem;color:var(--doc-heading);font-size:clamp(1.65rem,2.15vw,1.75rem);font-weight:700;letter-spacing:-.045em;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:-.012em}.folio-callout{border:1px solid var(--doc-callout-border);background:var(--doc-callout-bg);border-radius:.95rem;color:var(--doc-text);box-shadow:inset 0 1px 0 var(--doc-callout-border-soft)}.folio-text-link{color:var(--doc-heading);border-bottom:1px solid color-mix(in srgb,var(--doc-heading) 18%,transparent);transition:color .18s ease,border-color .18s ease}.folio-text-link:hover{border-color:color-mix(in srgb,var(--doc-heading) 42%,transparent)}.section-reveal{opacity:0;transform:translate3d(0,12px,0);animation:section-reveal .42s var(--ease-out-expo) forwards;animation-delay:calc(var(--reveal-index, 0) * .16s)}.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: .48s;--case-panel-exit-duration: .24s;--project-meta-enter-duration: .4s;--project-meta-exit-duration: .24s;--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 .46s var(--ease-out-expo),transform .56s 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 .52s 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 .52s var(--ease-out-expo) both;animation-delay:calc(var(--project-index, 0) * 90ms)}.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:.55rem;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:-.015em;line-height:1.35}.project-title-row{display:grid;gap:.35rem;align-items:start;padding-left:.8rem;border-left:3px solid var(--doc-heading)}.project-title-row h3{color:var(--doc-heading);font-size:clamp(1.35rem,1.95vw,1.85rem);font-weight:800;letter-spacing:-.05em;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:-.02em;line-height:1.4}.project-summary-text{color:var(--doc-muted);font-size:clamp(.88rem,1.15vw,1rem);line-height:1.72;letter-spacing:-.02em}.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:.08em;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:-.025em;line-height:1.6}.project-meta-list-subtle dt{color:var(--doc-subtle);font-size:.62rem;font-weight:650;letter-spacing:.06em}.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:-.015em;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:-.025em;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:-.04em;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:-.02em;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:.58rem;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 .22s var(--ease-out-expo)}.project-meta-gallery-trigger:hover img,.project-meta-gallery-trigger:focus-visible img{transform:scale(1.32)}.project-image-lightbox{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;isolation:isolate;background:color-mix(in srgb,#d3d3d3 42%,transparent);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);padding:clamp(.75rem,2.5vw,2rem);animation:lightbox-backdrop-enter .48s var(--ease-out-expo) both}.project-image-lightbox[data-state=closing]{animation:lightbox-backdrop-exit .42s 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:.8rem;background:#fff;box-shadow:0 28px 80px #0000006b;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 rgb(120,119,119,.52);background:#fff;padding:.65rem .72rem .65rem 1rem}.project-image-lightbox-toolbar p{overflow:hidden;color:#2f343b;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:#f4f6f8;contain:paint}.project-image-lightbox-media{width:100%;height:100%;overflow:auto;overscroll-behavior:contain;background:#f4f6f8;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 rgba(47,52,59,.12);border-radius:var(--radius-pill);background:color-mix(in srgb,#fff 92%,transparent);box-shadow:0 10px 28px #0f131929;color:#2f343b;font-size:.78rem;font-weight:700;line-height:1;padding:.48rem .68rem;pointer-events:none;transform:translate3d(-50%,0,0);animation:lightbox-scroll-cue 1.15s var(--ease-in-out-soft) infinite both}.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:#2f343b;cursor:pointer;padding:0;box-shadow:none;transition:none}:root.dark .project-image-lightbox{background:#05070ab8;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}:root.dark .project-image-lightbox-panel{border-color:#e2e8f029;background:#11151b;box-shadow:0 28px 80px #00000094}:root.dark .project-image-lightbox-toolbar{border-bottom-color:#e2e8f029;background:#11151b}:root.dark .project-image-lightbox-toolbar p{color:#f8fafc}:root.dark .project-image-lightbox-media{background:#0f1319}:root.dark .project-image-lightbox-media-shell{background:#0f1319}:root.dark .project-image-scroll-cue{border-color:#e2e8f024;background:#11151be0;box-shadow:0 12px 30px #0000005c;color:#f8fafc}:root.dark .project-image-lightbox-close{color:#f8fafc}@keyframes lightbox-backdrop-enter{0%{opacity:0}to{opacity:1}}@keyframes lightbox-backdrop-exit{0%{opacity:1}to{opacity:0}}@keyframes lightbox-panel-enter{0%{opacity:0;transform:translate3d(0,10px,0) scale(.992)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes lightbox-panel-exit{0%{opacity:1;transform:translateZ(0) scale(1)}to{opacity:0;transform:translate3d(0,10px,0) scale(.992)}}@keyframes lightbox-image-exit{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,8px,0)}}@keyframes lightbox-scroll-cue{0%,to{opacity:1;transform:translate3d(-50%,0,0)}50%{opacity:1;transform:translate3d(-50%,.45rem,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:clamp(.95rem,2.1vw,1.35rem);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 .42s var(--ease-out-expo),transform .52s var(--ease-out-expo),box-shadow .42s 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:-.035em;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:inset 0 1px color-mix(in srgb,var(--doc-heading) 6%,transparent);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 .18s 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) 38%,var(--doc-border-strong) 62%);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:0 10px 20px color-mix(in srgb,var(--doc-heading) 13%,transparent);transition:border-color var(--case-panel-enter-duration) var(--ease-out-expo),color var(--case-panel-enter-duration) var(--ease-out-expo),transform .18s 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 .36s var(--ease-out-expo) both;transition:border-color .18s var(--ease-out-expo),background-color .18s var(--ease-out-expo),color .18s var(--ease-out-expo),transform .18s 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) 36%,var(--doc-border-strong) 64%);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:clamp(.95rem,2.1vw,1.35rem);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 .22s var(--ease-out-expo),box-shadow .22s var(--ease-out-expo)}.project-case-card:hover{transform:translate3d(0,-2px,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:-.035em;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:-.018em}.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:-.018em}.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:.02em;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:.85rem;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:linear-gradient(180deg,#11111105 25%,#1111112e 66%,#11111157);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 .42s var(--ease-out-expo)}.project-evidence-card-image:hover .project-evidence-visual img{transform:scale(1.055)}.project-evidence-card figcaption{display:grid;gap:.28rem;padding:.8rem .9rem;color:var(--doc-muted);font-size:.76rem;line-height:1.55;letter-spacing:-.015em}.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:.08em;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:.72rem;background:color-mix(in srgb,var(--doc-surface) 78%,transparent);box-shadow:0 12px 30px #1111111f;-webkit-backdrop-filter:blur(14px) saturate(1.18);backdrop-filter:blur(14px) saturate(1.18)}.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-name-shimmer{0%{opacity:0;background-position:130% 0}22%,78%{opacity:1}to{opacity:0;background-position:-30% 0}}@keyframes intro-scroll-cue-enter{0%{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes intro-scroll-arrow-float{0%,to{opacity:.66;transform:translate3d(0,-3px,0)}50%{opacity:1;transform:translate3d(0,5px,0)}}@keyframes case-media-enter{0%{opacity:0;transform:translate3d(0,10px,0) scale(.985)}to{opacity:1;transform:translateZ(0) scale(1)}}@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){.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}}@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-white\/40:hover{border-color:#fff6}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:scale-\[1\.02\]{--tw-scale-x: 1.02;--tw-scale-y: 1.02;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))}.dark\:border-sky-300\/15:is(.dark *){border-color:#7dd3fc26}.dark\:border-stone-300\/15:is(.dark *){border-color:#d6d3d126}.dark\:border-white\/10:is(.dark *){border-color:#ffffff1a}.dark\:bg-sky-300\/\[0\.05\]:is(.dark *){background-color:#7dd3fc0d}.dark\:bg-stone-300\/\[0\.05\]:is(.dark *){background-color:#d6d3d10d}.dark\:bg-white\/\[0\.03\]:is(.dark *){background-color:#ffffff08}.dark\:text-sky-100:is(.dark *){--tw-text-opacity: 1;color:rgb(224 242 254 / var(--tw-text-opacity, 1))}.dark\:text-slate-200:is(.dark *){--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.dark\:text-stone-200:is(.dark *){--tw-text-opacity: 1;color:rgb(231 229 228 / var(--tw-text-opacity, 1))}@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}}
