@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.518e079e.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.ea323500.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.853d50a3.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.55554cd0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist","Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.56c1f21e.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.3b336396.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.e3369375.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.a40b9a8b.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.fe42ddf4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.29207c2f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 transparent;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 transparent;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 transparent;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 transparent;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 transparent;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-outline-style:solid}::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 transparent;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 transparent;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 transparent;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 transparent;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 transparent;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--color-red-50:#fef2f2;--color-red-200:#ffcaca;--color-red-500:#fb2c36;--color-red-600:#e40014;--color-red-700:#bf000f;--color-gray-50:#f9fafb;--color-gray-300:#d1d5dc;--color-gray-400:#99a1af;--color-gray-500:#6a7282;--color-gray-600:#4a5565;--color-gray-800:#1e2939;--color-gray-900:#101828;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--shadow-sm:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-geist-sans);--default-mono-font-family:var(--font-geist-mono)}@supports (color:color(display-p3 0 0 0)){:root,:host{--color-red-50:color(display-p3 .988669 .951204 .950419);--color-red-200:color(display-p3 .969562 .798149 .794299);--color-red-500:color(display-p3 .903738 .262579 .253307);--color-red-600:color(display-p3 .830323 .140383 .133196);--color-red-700:color(display-p3 .692737 .116232 .104679);--color-gray-50:color(display-p3 .977213 .98084 .985102);--color-gray-300:color(display-p3 .822033 .835264 .858521);--color-gray-400:color(display-p3 .605734 .630385 .680158);--color-gray-500:color(display-p3 .421287 .446085 .504784);--color-gray-600:color(display-p3 .297358 .332176 .39043);--color-gray-800:color(display-p3 .125854 .159497 .216835);--color-gray-900:color(display-p3 .070423 .0928982 .151928)}}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-200:lab(86.017% 19.8815 7.75869);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-gray-50:lab(98.2596% -.247031 -.706708);--color-gray-300:lab(85.1236% -.612259 -3.7138);--color-gray-400:lab(65.9269% -.832707 -8.17473);--color-gray-500:lab(47.7841% -.393182 -10.0268);--color-gray-600:lab(35.6337% -1.58697 -10.8425);--color-gray-800:lab(16.1051% -1.18239 -11.7533);--color-gray-900:lab(8.11897% .811279 -12.254)}}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:transparent;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:-moz-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){padding-left:20px}:where(select:-moz-any([multiple],[size])) optgroup option:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){padding-left:20px}:where(select:is([multiple],[size])) optgroup option:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){padding-left:20px}:where(select:-webkit-any([multiple],[size])) optgroup option:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){padding-right:20px}:where(select:-moz-any([multiple],[size])) optgroup option:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){padding-right:20px}:where(select:is([multiple],[size])) optgroup option:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){padding-right:20px}:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)))::-webkit-file-upload-button{margin-right:4px}:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)))::file-selector-button{margin-right:4px}:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)))::file-selector-button{margin-right:4px}:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))::-webkit-file-upload-button{margin-left:4px}:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))::file-selector-button{margin-left:4px}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))::file-selector-button{margin-left:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-month-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-day-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-hour-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-minute-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-second-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-millisecond-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;-moz-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.inset-4{inset:calc(var(--spacing)*4)}.start:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--spacing)}.start:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--spacing)}.start:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--spacing)}.start:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--spacing)}.start:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--spacing)}.start:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--spacing)}.end:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:var(--spacing)}.end:not(:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:var(--spacing)}.end:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:var(--spacing)}.end:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:var(--spacing)}.end:-moz-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:var(--spacing)}.end:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:var(--spacing)}.z-10{z-index:10}.z-50{z-index:50}.-m-2{margin:calc(var(--spacing)*-2)}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-block:calc(var(--spacing)*0)}.my-6{margin-block:calc(var(--spacing)*6)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.h-4{height:calc(var(--spacing)*4)}.h-9{height:calc(var(--spacing)*9)}.h-14{height:calc(var(--spacing)*14)}.h-auto{height:auto}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-full{max-height:100%}.min-h-11{min-height:calc(var(--spacing)*11)}.min-h-\[120px\]{min-height:120px}.min-h-\[760px\]{min-height:760px}.min-h-\[calc\(100vh_-_var\(--site-header-height\)\)\]{min-height:calc(100vh - var(--site-header-height))}.w-4{width:calc(var(--spacing)*4)}.w-9{width:calc(var(--spacing)*9)}.w-14{width:calc(var(--spacing)*14)}.w-\[calc\(100\%_-_32px\)\]{width:calc(100% - 32px)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[360px\]{max-width:360px}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-3\.5{gap:calc(var(--spacing)*3.5)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-top:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-bottom:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[1\.5rem\]{border-radius:1.5rem}.rounded-\[2rem\]{border-radius:2rem}.rounded-\[24px\]{border-radius:24px}.rounded-\[var\(--radius-card\)\]{border-radius:var(--radius-card)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-none{border-radius:0}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[var\(--accent\)\]{border-color:var(--accent)}.border-\[var\(--border-default\)\]{border-color:var(--border-default)}.border-\[var\(--text-heading\)\]{border-color:var(--text-heading)}.border-gray-300{border-color:var(--color-gray-300)}.border-red-200{border-color:var(--color-red-200)}.border-red-500\/30{border-color:rgba(251,44,54,.3)}@supports (color:color-mix(in lab, red, red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500)30%,transparent)}}.border-white\/60{border-color:rgba(255,255,255,.6)}@supports (color:color-mix(in lab, red, red)){.border-white\/60{border-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.bg-\[color\:var\(--accent-muted\)\]{background-color:var(--accent-muted)}.bg-\[var\(--portfolio-bg\)\]{background-color:var(--portfolio-bg)}.bg-\[var\(--portfolio-surface\)\]{background-color:var(--portfolio-surface)}.bg-\[var\(--portfolio-surface-muted\)\]{background-color:var(--portfolio-surface-muted)}.bg-\[var\(--text-heading\)\]{background-color:var(--text-heading)}.bg-black{background-color:var(--color-black)}.bg-black\/60{background-color:rgba(0,0,0,.6)}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500\/10{background-color:rgba(251,44,54,.1)}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500)10%,transparent)}}.bg-transparent{background-color:transparent}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-left{text-align:left}.font-mono{font-family:var(--font-geist-mono)}.font-sans{font-family:var(--font-geist-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.9rem\]{font-size:.9rem}.text-\[0\.95rem\]{font-size:.95rem}.text-\[1\.65rem\]{font-size:1.65rem}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-7{--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent\)\]{color:var(--accent)}.text-\[var\(--portfolio-bg\)\]{color:var(--portfolio-bg)}.text-\[var\(--text-body\)\]{color:var(--text-body)}.text-\[var\(--text-faint\)\]{color:var(--text-faint)}.text-\[var\(--text-heading\)\]{color:var(--text-heading)}.text-\[var\(--text-muted\)\]{color:var(--text-muted)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-\[var\(--primary\)\]{accent-color:var(--primary)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,rgba(0,0,0,.25));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_20px_60px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 20px 60px var(--tw-shadow-color,rgba(0,0,0,.08));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[var\(--shadow-sm\)\]{--tw-shadow:var(--shadow-sm);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,rgba(0,0,0,.1)),0 1px 2px -1px var(--tw-shadow-color,rgba(0,0,0,.1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[var\(--text-heading\)\]\/20{--tw-ring-color:var(--text-heading)}@supports (color:color-mix(in lab, red, red)){.ring-\[var\(--text-heading\)\]\/20{--tw-ring-color:color-mix(in oklab,var(--text-heading)20%,transparent)}}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,-webkit-text-decoration-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.placeholder\:text-\[var\(--text-faint\)\]::placeholder{color:var(--text-faint)}@media (hover:hover){.hover\:border-\[var\(--border-strong\)\]:hover{border-color:var(--border-strong)}.hover\:border-\[var\(--primary\)\]:hover{border-color:var(--primary)}.hover\:border-gray-900:hover{border-color:var(--color-gray-900)}.hover\:bg-\[var\(--accent\)\]:hover{background-color:var(--accent)}.hover\:bg-\[var\(--portfolio-surface-muted\)\]:hover{background-color:var(--portfolio-surface-muted)}.hover\:bg-\[var\(--primary\)\]:hover{background-color:var(--primary)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:text-\[var\(--primary-dark\)\]:hover{color:var(--primary-dark)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}}.focus\:border-\[var\(--primary\)\]:focus{border-color:var(--primary)}.focus\:shadow-\[0_0_0_3px_var\(--accent-ring\)\]:focus{--tw-shadow:0 0 0 3px var(--tw-shadow-color,var(--accent-ring));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:text-\[var\(--primary-dark\)\]:focus-visible{color:var(--primary-dark)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-4:focus-visible{outline-offset:4px}.focus-visible\:outline-\[var\(--accent-ring\)\]:focus-visible{outline-color:var(--accent-ring)}.disabled\:cursor-wait:disabled{cursor:wait}.disabled\:bg-\[var\(--portfolio-surface-muted\)\]:disabled{background-color:var(--portfolio-surface-muted)}.disabled\:text-\[var\(--text-faint\)\]:disabled{color:var(--text-faint)}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (min-width:40rem){.sm\:mt-8{margin-top:calc(var(--spacing)*8)}.sm\:min-h-12{min-height:calc(var(--spacing)*12)}.sm\:max-w-\[420px\]{max-width:420px}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:py-3{padding-block:calc(var(--spacing)*3)}.sm\:py-8{padding-block:calc(var(--spacing)*8)}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-\[0\.95rem\]{font-size:.95rem}}@media (min-width:48rem){.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}}@media (min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-\[280px_minmax\(0\,1fr\)\]{grid-template-columns:280px minmax(0,1fr)}}@media (min-width:80rem){.xl\:sticky{position:-webkit-sticky;position:sticky}.xl\:top-6{top:calc(var(--spacing)*6)}.xl\:grid-cols-\[320px_minmax\(0\,1fr\)\]{grid-template-columns:320px minmax(0,1fr)}.xl\:self-start{align-self:flex-start}}html[data-theme=dark] .\[html\[data-theme\=\'dark\'\]_\&\]\:text-red-200{color:var(--color-red-200)}html[data-theme=dark] .\[html\[data-theme\=\'dark\'\]_\&\]\:shadow-\[0_22px_70px_rgba\(0\,0\,0\,0\.46\)\]{--tw-shadow:0 22px 70px var(--tw-shadow-color,rgba(0,0,0,.46));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}:root{--background:#fff;--foreground:#1f2a24;--muted:#7a8178;--primary:#3f5f4a;--primary-dark:#2f4638;--accent:#a8b89a;--border:#e5e5e5;--card:#fff;--portfolio-bg:var(--background);--portfolio-surface:var(--card);--portfolio-surface-muted:#fff;--text-heading:var(--foreground);--text-body:#2d352f;--text-muted:var(--muted);--text-faint:#969083;--border-default:var(--border);--border-strong:#d4d4d4;--accent-muted:#fff;--accent-ring:rgba(63,95,74,.24);--shadow-sm:0 1px 2px rgba(47,70,56,.06);--shadow-card:0 10px 28px rgba(47,70,56,.05);--radius-card:8px;--radius-small:5px;--radius-pill:9999px;--code-bg:#fff;--code-inline-bg:#fff;--code-text:#26332b;--selection-bg:rgba(63,95,74,.16);--post-surface:#fff;--post-border:#eee;--post-content-width:980px;--markdown-content-width:740px;--portfolio-content-width:880px;--header-content-width:960px;--page-gutter:40px;--site-header-height:68px}:root[data-theme=dark]{--background:#0f1411;--foreground:#e6ebe5;--muted:#9aa69d;--primary:#a3c4a0;--primary-dark:#c5dcc0;--accent:#6f8f6c;--border:#26302a;--card:#151c18;--portfolio-bg:var(--background);--portfolio-surface:var(--card);--portfolio-surface-muted:#18201b;--text-heading:var(--foreground);--text-body:var(--foreground);--text-muted:var(--muted);--text-faint:#748078;--border-default:var(--border);--border-strong:#34403a;--accent-muted:rgba(163,196,160,.1);--accent-ring:rgba(163,196,160,.28);--shadow-sm:0 1px 2px rgba(0,0,0,.22);--shadow-card:0 14px 34px rgba(0,0,0,.34);--code-bg:#131a16;--code-inline-bg:#1b241f;--code-text:#e6ebe5;--selection-bg:rgba(163,196,160,.22);--post-surface:#131a16;--post-border:#26302a}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--site-header-height) + 1rem);background:var(--portfolio-bg);overflow-x:hidden}body{padding-top:var(--site-header-height);background:var(--portfolio-bg);color:var(--text-body);font-family:var(--font-geist-sans),Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin:0;transition:background-color .2s,color .2s;overflow-x:hidden}::selection{background:var(--selection-bg)}a,button,input,textarea,select{transition:background-color .16s,border-color .16s,color .16s}.site-header{z-index:100;min-height:var(--site-header-height);background:var(--portfolio-bg);justify-content:center;align-items:center;padding:.7rem 1rem;display:flex;position:fixed;top:0;left:0;right:0}@supports (color:color-mix(in lab, red, red)){.site-header{background:color-mix(in srgb,var(--portfolio-bg)90%,transparent)}}.site-header{border-bottom:1px solid var(--border-default)}@supports (color:color-mix(in lab, red, red)){.site-header{border-bottom:1px solid color-mix(in srgb,var(--border-default)72%,transparent)}}.site-header{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 10px 30px rgba(47,70,56,.05)}:root[data-theme=dark] .site-header{background:rgba(15,20,17,.9);border-bottom-color:rgba(38,48,42,.86);box-shadow:0 12px 34px rgba(0,0,0,.34)}.site-header__inner{width:min(calc(100% - var(--page-gutter)),var(--header-content-width));justify-content:space-between;align-items:center;gap:1rem;display:flex;position:relative}.site-brand{color:var(--text-heading);font-size:.9rem;font-weight:700}.site-nav{align-items:center;gap:1.25rem;display:flex}.site-nav a{min-height:1.5rem;color:var(--text-muted);align-items:center;font-size:.82rem;text-decoration:none;display:inline-flex}.site-nav a:hover{color:var(--primary-dark)}.site-header__actions{align-items:center;gap:.45rem;display:flex}.theme-toggle,.site-menu-toggle{border:1px solid var(--border-default);flex:none;justify-content:center;align-items:center;width:2.45rem;height:2.45rem}@supports (color:color-mix(in lab, red, red)){.theme-toggle,.site-menu-toggle{border:1px solid color-mix(in srgb,var(--border-default)82%,var(--primary))}}.theme-toggle,.site-menu-toggle{border-radius:var(--radius-pill);background:var(--portfolio-surface)}@supports (color:color-mix(in lab, red, red)){.theme-toggle,.site-menu-toggle{background:color-mix(in srgb,var(--portfolio-surface)94%,transparent)}}.theme-toggle,.site-menu-toggle{color:var(--primary-dark);cursor:pointer;box-shadow:var(--shadow-sm);padding:0}.theme-toggle{display:inline-flex}.site-menu-toggle{display:none}.theme-toggle:hover,.site-menu-toggle:hover,.site-menu-toggle[aria-expanded=true]{border-color:var(--primary);background:var(--accent-muted)}.theme-toggle:focus-visible{border-color:var(--primary);background:var(--accent-muted)}.site-menu-toggle:focus-visible{border-color:var(--primary);background:var(--accent-muted)}.theme-toggle:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}.site-menu-toggle:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}.theme-toggle__icon,.site-menu-toggle__icon{width:1.15rem;height:1.15rem}.theme-toggle__placeholder{width:1.15rem;height:1.15rem;display:block}.site-mobile-menu{z-index:110;width:14rem;max-width:calc(100vw - var(--page-gutter));border:1px solid var(--border-default);gap:.12rem;height:auto;display:none;position:absolute;top:calc(100% + .65rem);right:0}@supports (color:color-mix(in lab, red, red)){.site-mobile-menu{border:1px solid color-mix(in srgb,var(--border-default)82%,var(--primary))}}.site-mobile-menu{background:var(--portfolio-surface);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:1rem;padding:.45rem 0;box-shadow:0 18px 42px rgba(47,70,56,.14)}:root[data-theme=dark] .site-mobile-menu{background:rgba(21,28,24,.96);border-color:#26302a;box-shadow:0 18px 42px rgba(0,0,0,.42)}.site-mobile-menu a{border-radius:var(--radius-small);color:var(--text-body);justify-content:space-between;align-items:center;padding:.72rem 1rem;font-size:.9rem;font-weight:620;line-height:1.2;text-decoration:none;display:flex}.site-mobile-menu a:hover{background:var(--accent-muted);color:var(--primary-dark);outline:0}.site-mobile-menu a:focus-visible{background:var(--accent-muted);color:var(--primary-dark);outline:0}.site-mobile-menu__divider{background:var(--border-default);height:1px;margin:.45rem .6rem;display:block}@supports (color:color-mix(in lab, red, red)){.site-mobile-menu__divider{background:color-mix(in srgb,var(--border-default)86%,transparent)}}.portfolio-page{min-height:100vh;color:var(--text-body);padding:max(3.25rem,min(7vw,4.75rem)) 0 max(3rem,min(7vw,4rem))}.portfolio-page--post{padding-left:0;padding-right:0}.portfolio-main{width:min(calc(100% - var(--page-gutter)),var(--portfolio-content-width));margin:0 auto}.portfolio-main>*+*{margin-top:max(3.75rem,min(8vw,6.25rem))}.hero-title__ghost,.hero-title__typed{white-space:normal;grid-area:1/1}.hero-title__ghost{visibility:hidden}.hero-title__cursor{background:var(--primary);width:.08em;height:.88em;margin-left:.08em;display:inline-block;transform:translateY(.08em)}@supports (color:color-mix(in lab, red, red)){.hero-title__cursor{background:color-mix(in srgb,var(--primary)74%,transparent)}}.hero-title__cursor{animation:.92s steps(2,start) infinite hero-cursor-blink}@keyframes hero-cursor-blink{50%{opacity:.18}}.section-eyebrow{color:var(--primary);letter-spacing:.08em;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap;font-size:.74rem;font-weight:800;line-height:1.2;display:block}.hero-social-links{flex-wrap:wrap;gap:.75rem;margin-top:1.75rem;display:flex}.social-link-pill{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--portfolio-surface);min-height:3rem;box-shadow:var(--shadow-sm);color:var(--primary-dark);justify-content:center;align-items:center;gap:.5rem;padding:0 1.75rem;font-size:.92rem;font-weight:650;line-height:1;text-decoration:none;transition:transform .17s,border-color .17s,box-shadow .17s,background-color .17s,color .17s;display:inline-flex}.social-link-pill:hover{border-color:var(--border-strong);box-shadow:var(--shadow-card);color:var(--primary);transform:translateY(-1px)}.social-link-pill:focus-visible{outline:2px solid var(--accent-ring);outline-offset:3px}.social-link-pill__icon,.social-link-pill__image{flex:none;width:1.125rem;height:1.125rem}.social-link-pill__image{object-fit:contain;display:block}:root[data-theme=dark] .social-link-pill__image{filter:brightness(0)invert()opacity(.86)}.link-pill,.text-link{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--portfolio-surface);justify-content:center;align-items:center;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.link-pill,.text-link{background:color-mix(in srgb,var(--portfolio-surface)88%,transparent)}}.link-pill,.text-link{color:var(--primary-dark);font-size:.86rem;font-weight:600;line-height:1;text-decoration:none}.link-pill{min-height:2.25rem;padding:.55rem .9rem}.link-pill:hover,.text-link:hover{border-color:var(--primary);background:var(--accent-muted)}.link-pill:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}.text-link:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px}.content-section{scroll-margin-top:calc(var(--site-header-height) + 1.25rem)}.section-heading{max-width:680px;margin-bottom:1.7rem}.section-title{color:var(--text-heading);letter-spacing:0;margin-top:.38rem;font-size:1.5rem;font-weight:740;line-height:1.35}.section-description{color:var(--text-muted);margin-top:.55rem;font-size:.96rem;line-height:1.8}.section-card{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);box-shadow:var(--shadow-sm);padding:1.4rem}.section-card:hover{border-color:var(--border-strong)}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:max(1rem,min(2.5vw,1.75rem));display:grid}.showcase-project-card{border:1px solid var(--border-default);border-radius:calc(var(--radius-card) + 4px);background:var(--portfolio-surface);box-shadow:var(--shadow-card);transition:transform .18s,border-color .18s,box-shadow .18s;overflow:hidden}.showcase-project-card:hover{border-color:var(--primary);transform:translateY(-5px)}@supports (color:color-mix(in lab, red, red)){.showcase-project-card:hover{border-color:color-mix(in srgb,var(--primary)55%,var(--border-default))}}.showcase-project-card:hover{box-shadow:0 18px 42px rgba(47,70,56,.12)}.showcase-project-card__media{aspect-ratio:16/9;border-bottom:1px solid var(--border-default);background:var(--portfolio-surface-muted);position:relative;overflow:hidden}.showcase-project-card__image{object-fit:cover;transition:transform .4s}.showcase-project-card:hover .showcase-project-card__image{transform:scale(1.025)}.showcase-project-card__body{padding:max(1.2rem,min(3vw,1.6rem))}.showcase-project-card__meta{color:var(--text-faint);font-family:var(--font-geist-mono),monospace;justify-content:space-between;align-items:center;margin-bottom:1.1rem;font-size:.76rem;font-weight:650;display:flex}.project-status{font-family:var(--font-geist-sans),sans-serif;border-radius:999px;padding:.28rem .58rem;font-size:.7rem}.project-status--done{color:#17603a;background:#dff4e8}.project-status--wip{color:#895b08;background:#fff0c7}.project-status--planned{color:var(--text-muted);background:var(--portfolio-surface-muted);box-shadow:inset 0 0 0 1px var(--border-default)}.showcase-project-card h2{color:var(--text-heading);letter-spacing:0;font-size:1.08rem;font-weight:720;line-height:1.4}.showcase-project-card__subtitle{color:var(--primary-dark);margin-top:.55rem;font-size:.9rem;font-weight:650;line-height:1.55}.showcase-project-card__description{color:var(--text-muted);margin-top:1rem;font-size:.9rem;line-height:1.65}.showcase-project-card__highlight{border-left:2px solid var(--primary);color:var(--text-body);font-family:var(--font-geist-mono),monospace;margin-top:1rem;padding-left:.75rem;font-size:.76rem;line-height:1.6}.showcase-project-card__stack{flex-wrap:wrap;gap:.4rem;margin-top:1.15rem;display:flex}.showcase-project-card__stack li{border:1px solid var(--border-default)}@supports (color:color-mix(in lab, red, red)){.showcase-project-card__stack li{border:1px solid color-mix(in srgb,var(--border-default)78%,var(--primary))}}.showcase-project-card__stack li{color:var(--primary-dark);background:var(--accent-muted);border-radius:999px;padding:.3rem .58rem;font-size:.72rem;line-height:1.2}.showcase-project-card__links{border-top:1px solid var(--border-default);flex-wrap:wrap;gap:.6rem;margin-top:1.2rem;padding-top:1.1rem;display:flex}.showcase-project-card__links a{border:1px solid var(--border-strong);border-radius:var(--radius-small);color:var(--text-heading);align-items:center;gap:.4rem;padding:.55rem .72rem;font-size:.8rem;font-weight:650;text-decoration:none;transition:border-color .16s,color .16s,background .16s;display:inline-flex}.showcase-project-card__links a:hover{border-color:var(--primary);color:var(--primary-dark);background:var(--accent-muted)}.showcase-project-card__links a:focus-visible{border-color:var(--primary);color:var(--primary-dark);background:var(--accent-muted)}@media (max-width:767px){.projects-grid{grid-template-columns:1fr}.showcase-project-card:hover{transform:translateY(-3px)}}@media (prefers-reduced-motion:reduce){.showcase-project-card,.showcase-project-card__image{transition:none}}.text-link{min-height:2.15rem;margin-top:1rem;padding:.55rem .8rem}.profile-list{gap:.55rem;margin-top:.85rem;display:grid}.profile-list li{color:var(--text-muted);font-size:.93rem;line-height:1.65}.profile-list{border-top:1px solid var(--border-default);padding-top:1rem}.profile-list li{padding-left:1rem;position:relative}.profile-list li:before{background:var(--primary);content:"";border-radius:999px;width:.35rem;height:.35rem;position:absolute;top:calc(.825em - .175rem);left:0}.portfolio-footer{width:min(calc(100% - var(--page-gutter)),var(--portfolio-content-width));box-sizing:border-box;color:var(--text-faint);text-align:center;justify-content:center;align-items:center;margin:-.5rem auto 0;padding:0 0 3.5rem;font-size:max(.64rem,min(1.45vw,.76rem));font-weight:400;line-height:1.4;display:flex;overflow:hidden}.portfolio-footer__line{white-space:nowrap;flex-wrap:nowrap;justify-content:center;align-items:center;gap:.38rem;width:100%;min-width:0;margin:0;display:flex}.portfolio-footer__item,.portfolio-footer__stat{white-space:nowrap;flex-shrink:0;align-items:baseline;gap:.24rem;min-width:0;display:inline-flex}.portfolio-footer__item,.portfolio-footer__separator,.portfolio-footer__stat-label{color:var(--text-faint)}.portfolio-footer__separator{white-space:nowrap;flex-shrink:0;align-items:center;font-weight:400;display:inline-flex}.portfolio-footer__stat{white-space:nowrap}.portfolio-footer__stat-label{letter-spacing:.04em;font-weight:520}.portfolio-footer__stat-value{min-width:1ch;color:var(--text-muted);font-variant-numeric:tabular-nums}.archive-shell{width:min(calc(100% - var(--page-gutter)),var(--portfolio-content-width));margin:0 auto}.post-detail{width:100%}.post-detail>*+*{margin-top:2rem}.post-header,.post-body-inner{box-sizing:border-box;width:100%;max-width:var(--post-content-width);margin:0 auto;padding-left:max(1.25rem,min(4vw,2.25rem));padding-right:max(1.25rem,min(4vw,2.25rem))}.post-body-shell{background:var(--post-surface);border-top:1px solid var(--post-border);border-bottom:1px solid var(--post-border);width:100%}.post-body-inner{padding-top:max(2.8rem,min(5vw,4.5rem));padding-bottom:max(4rem,min(7vw,6rem))}.post-body-inner .post-content{max-width:var(--markdown-content-width)}.archive-shell>*+*{margin-top:2rem}.archive-header{justify-content:space-between;align-items:flex-end;gap:1rem;display:flex}.archive-header h1,.post-header h1{color:var(--text-heading);margin-top:.45rem;font-size:max(2rem,min(5vw,3.25rem));font-weight:750;line-height:1.25}.archive-header p:last-child,.post-header__description{max-width:620px;color:var(--text-muted);margin-top:.65rem;font-size:.96rem;line-height:1.8}.post-admin-actions{flex-wrap:wrap;align-items:center;gap:.55rem;margin-top:1.1rem;display:flex}.post-admin-delete-form{margin:0}.post-admin-action{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--portfolio-surface);min-height:2rem;color:var(--text-heading);justify-content:center;align-items:center;padding:.42rem .85rem;font-size:.82rem;font-weight:680;line-height:1;text-decoration:none;display:inline-flex}.post-admin-action:hover{border-color:var(--primary);background:var(--accent-muted);color:var(--primary-dark)}.post-admin-action:focus-visible{border-color:var(--primary);background:var(--accent-muted);color:var(--primary-dark)}.post-admin-action--danger{color:#dc2626}.post-admin-action--danger:hover{color:#b91c1c;background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.38)}.post-admin-action--danger:focus-visible{color:#b91c1c;background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.38)}:root[data-theme=dark] .post-admin-action--danger{color:#fca5a5}:root[data-theme=dark] .post-admin-action--danger:hover{color:#fecaca;background:rgba(248,113,113,.1);border-color:rgba(248,113,113,.4)}:root[data-theme=dark] .post-admin-action--danger:focus-visible{color:#fecaca;background:rgba(248,113,113,.1);border-color:rgba(248,113,113,.4)}.archive-grid{gap:.85rem;display:grid}.archive-card{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);padding:1.2rem;text-decoration:none;display:block}.archive-card:hover{border-color:var(--primary);background:var(--portfolio-surface)}@supports (color:color-mix(in lab, red, red)){.archive-card:hover{background:color-mix(in srgb,var(--portfolio-surface)78%,var(--accent-muted))}}.archive-card h2{color:var(--text-heading);font-size:1.15rem;font-weight:720}.archive-card p{color:var(--text-muted);margin-top:.45rem;font-size:.9rem;line-height:1.65}.admin-post-card{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);color:inherit;box-shadow:var(--shadow-sm);cursor:pointer;gap:.95rem;padding:1.2rem;text-decoration:none;transition:transform .18s,border-color .18s,box-shadow .18s,background-color .18s;display:grid}.admin-post-card:hover{border-color:var(--primary);transform:translateY(-2px)}.admin-post-card:focus-visible{border-color:var(--primary);transform:translateY(-2px)}@supports (color:color-mix(in lab, red, red)){.admin-post-card:hover{border-color:color-mix(in srgb,var(--primary)62%,var(--border-default))}.admin-post-card:focus-visible{border-color:color-mix(in srgb,var(--primary)62%,var(--border-default))}}.admin-post-card:hover{background:var(--portfolio-surface)}.admin-post-card:focus-visible{background:var(--portfolio-surface)}@supports (color:color-mix(in lab, red, red)){.admin-post-card:hover{background:color-mix(in srgb,var(--portfolio-surface)84%,var(--accent-muted))}.admin-post-card:focus-visible{background:color-mix(in srgb,var(--portfolio-surface)84%,var(--accent-muted))}}.admin-post-card:hover{box-shadow:var(--shadow-card)}.admin-post-card:focus-visible{box-shadow:var(--shadow-card)}.admin-post-card__eyebrow{color:var(--text-muted);font-size:.86rem;line-height:1.65}.admin-post-card__title{color:var(--text-heading);margin-top:.35rem;font-size:max(1.08rem,min(1vw,1.28rem));font-weight:740;line-height:1.45}.admin-post-card__excerpt{-webkit-line-clamp:2;color:var(--text-muted);-webkit-box-orient:vertical;margin-top:.75rem;font-size:.92rem;line-height:1.7;display:-webkit-box;overflow:hidden}.admin-post-card__footer{color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:.55rem;font-size:.82rem;line-height:1.5;display:flex}.admin-status-badge{border:1px solid var(--border-default);border-radius:var(--radius-pill);white-space:nowrap;align-items:center;min-height:1.55rem;padding:.22rem .55rem;font-size:.72rem;font-weight:700;line-height:1;display:inline-flex}.admin-status-badge--published{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.admin-status-badge--published{border-color:color-mix(in srgb,var(--primary)34%,var(--border-default))}}.admin-status-badge--published{background:var(--accent-muted);color:var(--primary-dark)}.admin-status-badge--private{border-color:var(--border-default);background:var(--portfolio-surface-muted);color:var(--text-muted)}.archive-list{border-top:1px solid var(--border-default)}.archive-post-link{border-bottom:1px solid var(--border-default);padding:1.4rem 0;text-decoration:none;display:block}.archive-post-link:hover .archive-post-title{color:var(--primary-dark)}.archive-post-layout{grid-template-columns:1fr;align-items:center;gap:0;display:grid}.archive-post-layout.has-thumbnail{grid-template-columns:minmax(0,1fr) max(13.75rem,min(28vw,16.25rem));gap:max(2rem,min(4vw,2.5rem))}.archive-post-layout.no-thumbnail{grid-template-columns:1fr}.archive-post-content{min-width:0}.archive-post-title{-webkit-line-clamp:2;color:var(--text-heading);-webkit-box-orient:vertical;font-size:1.35rem;font-weight:720;line-height:1.45;display:-webkit-box;overflow:hidden}.archive-post-excerpt{-webkit-line-clamp:3;color:var(--text-muted);-webkit-box-orient:vertical;margin-top:.65rem;font-size:.94rem;line-height:1.8;display:-webkit-box;overflow:hidden}.archive-post-date{color:var(--text-faint);margin-top:.9rem;font-size:.78rem;display:block}.archive-post-thumbnail{aspect-ratio:16/9;border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface-muted);justify-self:end;width:100%;overflow:hidden}.archive-post-thumbnail img{object-fit:cover;width:100%;height:100%;display:block}.archive-load-more-wrap{justify-content:center;gap:.75rem;padding-top:1.5rem;display:flex}.archive-load-more{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--portfolio-surface);min-height:2.35rem;color:var(--primary-dark);justify-content:center;align-items:center;padding:.55rem 1rem;font-size:.86rem;font-weight:650;line-height:1;text-decoration:none;display:inline-flex}.archive-load-more:hover{border-color:var(--primary);background:var(--accent-muted)}.archive-load-more:focus-visible{border-color:var(--primary);background:var(--accent-muted)}.markdown-content{--markdown-body-color:rgba(0,0,0,.82);--markdown-muted-color:rgba(0,0,0,.62);--markdown-divider-color:rgba(0,0,0,.14);width:100%;max-width:var(--markdown-content-width);color:var(--markdown-body-color);font-family:Pretendard,"Noto Sans KR","Apple SD Gothic Neo","Malgun Gothic",var(--font-geist-sans),system-ui,sans-serif;overflow-wrap:break-word;word-break:keep-all;margin-left:auto;margin-right:auto;font-size:1.125rem;line-height:1.92}:root[data-theme=dark] .markdown-content{--markdown-body-color:rgba(230,235,229,.86);--markdown-muted-color:rgba(230,235,229,.66);--markdown-divider-color:rgba(230,235,229,.18)}.markdown-content>:first-child{margin-top:0}.markdown-content>:last-child{margin-bottom:0}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4{color:var(--text-heading);letter-spacing:0;margin:3.1em 0 .75em;font-weight:720;line-height:1.38}.markdown-content h1{font-size:2.125rem}.markdown-content h2{font-size:1.625rem}.markdown-content h3{font-size:1.35rem}.markdown-content h4{font-size:1.12rem}.markdown-content p{white-space:pre-line;margin:22px 0}.markdown-content strong{color:var(--text-heading);font-weight:720}.markdown-content ul,.markdown-content ol{line-height:inherit;margin:22px 0;padding-left:1.45em}.markdown-content ul{list-style:outside}.markdown-content ol{list-style:decimal}.markdown-content li+li{margin-top:.42em}.markdown-content li>p{margin:.65em 0}.markdown-content a{color:var(--primary-dark);text-underline-offset:.18em;text-decoration:underline;text-decoration-thickness:1px}.markdown-content hr{border:0;border-top:1px solid var(--markdown-divider-color);margin:44px 0}.markdown-content img{border:1px solid var(--border-default);border-radius:var(--radius-card);max-width:100%;height:auto;margin:32px auto;display:block}.markdown-content figure{margin:32px 0}.markdown-content pre{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--code-bg);margin:32px 0;padding:1rem 1.25rem;line-height:1.65;overflow-x:auto}.markdown-content pre code{color:var(--code-text);white-space:pre;background:0 0;border-radius:0;padding:0;font-size:.875rem}.markdown-content code{background:var(--code-inline-bg);color:var(--code-text);word-break:break-word;border-radius:.3rem;padding:.15rem .35rem;font-size:.875em}.markdown-content blockquote{border-left:3px solid var(--primary);margin:32px 0}@supports (color:color-mix(in lab, red, red)){.markdown-content blockquote{border-left:3px solid color-mix(in srgb,var(--primary)72%,transparent)}}.markdown-content blockquote{color:var(--markdown-muted-color);background:0 0;padding:.1rem 0 .1rem 1.15rem}.markdown-content blockquote p{margin:.65em 0}.markdown-content table{border-collapse:collapse;border:1px solid var(--border-default);width:100%;margin:32px 0;display:block;overflow-x:auto}.markdown-content th,.markdown-content td{border:1px solid var(--border-default);text-align:left;padding:.75rem}input,textarea,select{color:var(--text-heading)}input::placeholder,textarea::placeholder{color:var(--text-faint)}.about-summary{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);box-shadow:var(--shadow-card);grid-template-columns:9.75rem minmax(0,1fr);align-items:center;gap:max(1.25rem,min(4vw,2.75rem));padding:max(1.25rem,min(4vw,2rem));display:grid}.about-summary__image{aspect-ratio:1;border:1px solid var(--border-default);align-self:center;width:max(8.75rem,min(20vw,9.75rem));overflow:hidden}@supports (color:color-mix(in lab, red, red)){.about-summary__image{border:1px solid color-mix(in srgb,var(--border-default)86%,var(--primary))}}.about-summary__image{background:var(--portfolio-surface-muted);border-radius:50%;box-shadow:0 14px 28px rgba(47,70,56,.1)}.about-summary__content{align-self:center}.about-summary__image img{object-fit:cover;object-position:center;width:100%;height:100%}.about-summary__name{color:var(--text-heading);font-size:max(1.3rem,min(4vw,1.65rem));font-weight:740;line-height:1.25}.about-summary__headline{color:var(--text-muted);margin-top:.25rem;font-size:.98rem;font-weight:560;line-height:1.7}.about-summary__text{color:var(--text-muted);margin-top:.55rem;font-size:.94rem;line-height:1.8}.about-summary .profile-list{border-top:0;gap:.65rem;margin-top:1.25rem;padding-top:0}.about-summary .profile-list li{color:var(--text-muted);padding-left:1.15rem;line-height:1.7}.about-summary .profile-list li:before{background:var(--primary);width:.42rem;height:.42rem;top:calc(.85em - .21rem)}@supports (color:color-mix(in lab, red, red)){.about-summary .profile-list li:before{background:color-mix(in srgb,var(--primary)84%,#fff)}}.about-summary .profile-list li:before{box-shadow:0 0 0 .18rem var(--primary)}@supports (color:color-mix(in lab, red, red)){.about-summary .profile-list li:before{box-shadow:0 0 0 .18rem color-mix(in srgb,var(--primary)12%,transparent)}}.tech-stack-section{gap:2rem;display:grid}.tech-stack-section .section-heading{margin-bottom:0}.tech-stack-group{gap:1rem;display:grid}.tech-stack-group+.tech-stack-group{margin-top:0}.tech-stack-group h3{color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;font-size:.95rem;font-weight:740;line-height:1.4}.tech-skill-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}.tech-skill-card{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);width:100%;min-height:4.5rem;box-shadow:var(--shadow-sm);color:var(--text-body);align-items:center;gap:.65rem;padding:.95rem 1.25rem;font-size:.88rem;font-weight:650;line-height:1.3;transition:transform .18s,border-color .18s,box-shadow .18s,background-color .18s;display:flex}.tech-skill-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-card);transform:translateY(-3px)}.tech-skill-card__icon{object-fit:contain;flex:none;width:1.55rem;height:1.55rem;display:block}.tech-skill-card span{white-space:nowrap;min-width:0}.works-publications-section{gap:1.45rem;margin-top:4.25rem;display:grid}.works-publications-section .section-heading{margin-bottom:0}.publication-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.publication-card{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);min-height:100%;box-shadow:var(--shadow-sm);color:inherit;grid-template-rows:auto 1fr;gap:1.1rem;padding:1.25rem;text-decoration:none;transition:transform .16s,border-color .16s,box-shadow .16s,background-color .16s;display:grid}.publication-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-card);transform:translateY(-2px)}.publication-card:focus-visible{outline:2px solid var(--accent-ring);outline-offset:3px}.publication-card__cover-wrap{border-radius:var(--radius-card);background:var(--portfolio-surface-muted);justify-content:center;align-items:center;min-height:9.6rem;display:flex}.publication-card__cover{border:1px solid var(--border-default);border-radius:var(--radius-small);width:6.75rem;height:9.75rem;box-shadow:var(--shadow-sm);object-fit:cover;display:block}.publication-card__body{grid-template-rows:auto auto 1fr;gap:.6rem;min-width:0;display:grid}.publication-card__title{min-height:3rem;color:var(--text-heading);letter-spacing:0;font-size:1.05rem;font-weight:740;line-height:1.45}.publication-card__description{-webkit-line-clamp:2;min-height:3.15rem;color:var(--text-muted);-webkit-box-orient:vertical;font-size:.92rem;line-height:1.7;display:-webkit-box;overflow:hidden}.publication-card__footer{justify-content:space-between;align-self:end;align-items:end;gap:1rem;margin-top:.2rem;display:flex}.publication-card__label{border:1px solid var(--border-default);align-items:center;min-height:1.8rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.publication-card__label{border:1px solid color-mix(in srgb,var(--border-default)78%,var(--primary))}}.publication-card__label{border-radius:var(--radius-pill);background:var(--accent-muted);color:var(--primary-dark);padding:.35rem .7rem;font-size:.73rem;font-weight:700;line-height:1}.publication-card__arrow{border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--accent-muted);width:2.25rem;height:2.25rem;color:var(--primary-dark);flex:none;justify-content:center;align-items:center;font-size:.95rem;font-weight:700;line-height:1;transition:transform .16s,border-color .16s,background-color .16s,color .16s;display:inline-flex}.publication-card:hover .publication-card__arrow{border-color:var(--primary);background:var(--primary);color:var(--portfolio-bg);transform:translate(2px)}.activities-exhibition-section{gap:1.45rem;margin-top:4.25rem;display:grid}.activities-exhibition-section .section-heading{margin-bottom:0}.activity-showcase-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.activity-showcase-card{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);min-height:100%;box-shadow:var(--shadow-sm);grid-template-rows:auto 1fr;gap:1.1rem;padding:1.25rem;transition:transform .22s,border-color .22s,box-shadow .22s,background-color .22s;display:grid}.activity-showcase-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-card);transform:translateY(-4px)}.activity-showcase-card__image-frame{border-radius:var(--radius-card);width:11.25rem;height:15rem;box-shadow:none;background:0 0;border:0;outline:0;justify-content:center;justify-self:center;align-items:center;display:flex;overflow:hidden}.activity-showcase-card__image{border-radius:var(--radius-small);width:100%;height:100%;box-shadow:none;object-fit:contain;border:0;outline:0;transition:transform .24s;display:block}.activity-showcase-card:hover .activity-showcase-card__image{transform:scale(1.02)}.activity-showcase-card__body{grid-template-rows:auto auto 1fr;gap:.6rem;min-width:0;display:grid}.activity-showcase-card__body h3{min-height:3rem;color:var(--text-heading);letter-spacing:0;font-size:1.05rem;font-weight:740;line-height:1.45}.activity-showcase-card__body p{-webkit-line-clamp:3;min-height:4.7rem;color:var(--text-muted);-webkit-box-orient:vertical;font-size:.92rem;line-height:1.7;display:-webkit-box;overflow:hidden}.activity-showcase-card__meta{justify-content:space-between;align-self:end;align-items:end;gap:1rem;margin-top:.25rem;display:flex}.activity-showcase-card__meta span{border:1px solid var(--border-default);align-items:center;min-height:1.8rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.activity-showcase-card__meta span{border:1px solid color-mix(in srgb,var(--border-default)78%,var(--primary))}}.activity-showcase-card__meta span{border-radius:var(--radius-pill);background:var(--accent-muted);color:var(--primary-dark);padding:.35rem .7rem;font-size:.73rem;font-weight:700;line-height:1}.activity-showcase-card__meta time{color:var(--text-faint);font-size:.78rem;font-weight:650;line-height:1.8}@media (max-width:1023px){.about-summary{grid-template-columns:8.75rem minmax(0,1fr)}.tech-skill-grid,.publication-grid,.activity-showcase-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:768px){:root{--page-gutter:32px;--site-header-height:60px}.site-header{padding:.45rem 0}.site-brand{font-size:.86rem}.site-nav{display:none}.site-header__actions{gap:.35rem}.site-menu-toggle{width:2.25rem;height:2.25rem;display:inline-flex}.site-mobile-menu{width:min(14rem,calc(100vw - var(--page-gutter)));display:grid;top:calc(100% + .55rem);left:auto;right:0}.link-pill{min-height:2.05rem;padding:.48rem .75rem;font-size:.8rem}.theme-toggle{width:2.25rem;height:2.25rem}.portfolio-main>*+*{margin-top:3.6rem}.hero-social-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem;display:grid}.social-link-pill{gap:.42rem;width:100%;min-height:2.55rem;padding:0 .7rem;font-size:.84rem}.social-link-pill__icon,.social-link-pill__image{width:1rem;height:1rem}.section-heading{margin-bottom:1.15rem}.section-eyebrow{letter-spacing:.15em;font-size:.66rem}.section-title{font-size:1.32rem}.section-description,.about-summary__text,.profile-list li{font-size:.9rem;line-height:1.65}.about-summary{grid-template-columns:1fr;gap:1.2rem;padding:1.25rem}.about-summary__image{justify-self:center;width:min(48vw,10rem)}.about-summary .profile-list{gap:.45rem;margin-top:1rem}.tech-stack-section{gap:1.45rem}.tech-stack-group{gap:.75rem}.tech-skill-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.tech-skill-card{gap:.55rem;min-height:4.75rem;padding:.875rem 1rem;font-size:max(.84rem,min(3.35vw,.92rem));line-height:1.2}.tech-skill-card__icon{width:1.45rem;height:1.45rem}.works-publications-section,.activities-exhibition-section{gap:1rem;margin-top:3rem}.publication-grid,.activity-showcase-grid{grid-template-columns:1fr}.publication-card{grid-template-rows:auto;grid-template-columns:5.9rem minmax(0,1fr);align-items:center;gap:.85rem;padding:.95rem}.publication-card__cover-wrap{min-height:0}.publication-card__cover{width:5.15rem;height:7.45rem}.publication-card__body{gap:.45rem}.publication-card__title,.activity-showcase-card__body h3{min-height:0;font-size:.98rem;line-height:1.4}.publication-card__description,.activity-showcase-card__body p{min-height:0;font-size:.86rem;line-height:1.55}.publication-card__footer,.activity-showcase-card__meta{gap:.55rem}.publication-card__label,.activity-showcase-card__meta span{min-height:1.55rem;padding:.28rem .56rem;font-size:.68rem}.publication-card__arrow{width:1.9rem;height:1.9rem}.activity-showcase-card{grid-template-rows:auto;grid-template-columns:6.25rem minmax(0,1fr);align-items:center;gap:.85rem;padding:.95rem}.activity-showcase-card__image-frame{width:5.9rem;height:7.9rem}.activity-showcase-card__body{gap:.45rem}.activity-showcase-card__meta{flex-wrap:wrap;align-items:center}.portfolio-footer{padding-bottom:2.5rem;font-size:max(.56rem,min(2.4vw,.68rem))}.portfolio-footer__line{letter-spacing:-.01em;gap:.24rem}.archive-post-link{padding:1.15rem 0}.archive-post-layout.has-thumbnail{grid-template-columns:minmax(0,1fr) 96px;align-items:flex-start;gap:1rem}.archive-post-layout.no-thumbnail{grid-template-columns:1fr}.archive-post-title{font-size:1.04rem;line-height:1.38}.archive-post-excerpt{margin-top:.5rem;font-size:.86rem;line-height:1.6}.archive-post-layout.has-thumbnail .archive-post-excerpt{-webkit-line-clamp:3}.archive-post-layout.no-thumbnail .archive-post-excerpt{-webkit-line-clamp:4}.archive-post-date{margin-top:.75rem}.archive-post-thumbnail{aspect-ratio:1;border-radius:var(--radius-small);align-self:flex-start;width:96px}.markdown-content{font-size:1.0625rem;line-height:1.88}.markdown-content h1{font-size:1.9rem}.markdown-content h2{font-size:1.5rem}.markdown-content h3{font-size:1.25rem}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4{margin-top:2.7em}.markdown-content p,.markdown-content ul,.markdown-content ol{margin-top:20px;margin-bottom:20px}.markdown-content hr{margin:36px 0}.markdown-content img,.markdown-content figure,.markdown-content pre,.markdown-content blockquote,.markdown-content table{margin-top:28px;margin-bottom:28px}}@media (max-width:479px){:root{--page-gutter:28px}.section-eyebrow{letter-spacing:.13em;font-size:.6rem}.social-link-pill{min-height:2.4rem;padding-left:.55rem;padding-right:.55rem;font-size:.8rem}.tech-skill-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.tech-skill-card{gap:.45rem;min-height:4.375rem;padding:.75rem;font-size:max(.8rem,min(3.8vw,.88rem))}.tech-skill-card__icon{width:1.3rem;height:1.3rem}.publication-card{grid-template-columns:5.2rem minmax(0,1fr)}.activity-showcase-card{grid-template-columns:5.55rem minmax(0,1fr)}.publication-card__cover{width:4.65rem;height:6.75rem}.activity-showcase-card__image-frame{width:5.2rem;height:7rem}.portfolio-footer__line{letter-spacing:-.03em;gap:.18rem;font-size:max(.48rem,min(2.35vw,.56rem))}.archive-post-layout.no-thumbnail .archive-post-excerpt{-webkit-line-clamp:4}.markdown-content{font-size:1rem;line-height:1.86}.markdown-content h1{font-size:1.75rem}.markdown-content h2{font-size:1.38rem}.markdown-content h3{font-size:1.18rem}.markdown-content p,.markdown-content ul,.markdown-content ol{margin-top:18px;margin-bottom:18px}}@media (max-width:360px){.archive-post-layout.has-thumbnail{grid-template-columns:1fr}.archive-post-thumbnail{display:none}}html:not([data-theme=dark]),html:not([data-theme=dark]) body,html:not([data-theme=dark]) .portfolio-page,html:not([data-theme=dark]) .portfolio-main,html:not([data-theme=dark]) .post-body-shell{background:#fff!important}html:not([data-theme=dark]) .site-header{background:rgba(255,255,255,.9)!important}.landing{--landing-word-size:clamp(2.4rem,5.4vw,4.5rem);--landing-word-top:clamp(8.5rem,24vh,12rem);--landing-word-center:calc(var(--landing-word-top) + var(--landing-word-size)*.58);--landing-axis-gap:clamp(2.25rem,4vw,3.5rem);--landing-outer-gap:clamp(1.25rem,4vw,3rem);height:calc(100svh - var(--site-header-height));flex-direction:column;display:flex;overflow:hidden}html:has(.landing){overflow:hidden}body:has(.landing){overflow:hidden}body:has(.landing) .portfolio-footer{display:none}.landing__name{color:var(--primary);letter-spacing:.28em;text-transform:uppercase;white-space:nowrap;font-size:.8rem;font-weight:800}.landing__name--stacked{display:none}.landing-split{flex:1;display:flex}.landing-door{isolation:isolate;min-width:0;color:var(--text-heading);padding-top:var(--landing-word-top);flex-direction:column;flex:1 1 0;padding-bottom:max(2.5rem,min(8vh,4.5rem));text-decoration:none;transition:background-color .24s;display:flex;position:relative;overflow:hidden}.landing-door--engineering{padding-left:var(--landing-outer-gap);padding-right:var(--landing-axis-gap);text-align:right;align-items:flex-end}.landing-door--literature{padding-left:var(--landing-axis-gap);padding-right:var(--landing-outer-gap);text-align:left;align-items:flex-start}.landing-door:before{z-index:-1;content:"";opacity:.9;transition:opacity .24s;position:absolute;top:0;bottom:0;left:0;right:0}.landing-door--engineering:before{background-image:radial-gradient(circle,var(--border-strong)1.1px,transparent 1.4px);background-size:22px 22px;-webkit-mask-image:radial-gradient(at 0 100%,#000 15%,transparent 72%);mask-image:radial-gradient(at 0 100%,#000 15%,transparent 72%)}.landing-door--literature:before{background-image:repeating-linear-gradient(to bottom,transparent 0 27px,var(--border-strong)27px 28px);-webkit-mask-image:radial-gradient(at 100% 100%,#000 15%,transparent 72%);mask-image:radial-gradient(at 100% 100%,#000 15%,transparent 72%)}.landing-door:focus-visible{outline:2px solid var(--accent-ring);outline-offset:-8px}.landing-door__content{align-items:inherit;flex-direction:column;gap:1.1rem;max-width:100%;transition:opacity .24s;display:flex}.landing-door__word{color:var(--text-heading);font-size:var(--landing-word-size);letter-spacing:0;font-weight:750;line-height:1.16;display:grid}.landing-door__word .hero-title__typed{text-align:left}.landing-door__tagline{max-width:21rem;color:var(--text-muted);font-size:max(1rem,min(1.8vw,1.15rem));font-weight:600;line-height:1.6}.landing-door__meta{align-items:center;gap:.75rem;display:inline-flex}.landing-door__icon{border:1px solid var(--border-default);justify-content:center;align-items:center;width:2.9rem;height:2.9rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.landing-door__icon{border:1px solid color-mix(in srgb,var(--border-default)82%,var(--primary))}}.landing-door__icon{border-radius:var(--radius-pill);background:var(--portfolio-surface);box-shadow:var(--shadow-sm);color:var(--primary-dark);transition:border-color .2s,background-color .2s}.landing-door__icon svg{width:1.2rem;height:1.2rem}.landing-door__arrow{color:var(--primary-dark);font-size:1.3rem;transition:color .2s}.landing-axis{z-index:1;flex:0 0 1px;position:relative}.landing-axis:before{top:calc(var(--landing-word-center) + 2.1rem);background:var(--border-default);content:"";width:1px;position:absolute;bottom:0;left:0}.landing-axis__name{top:calc(var(--landing-word-top) - 3.4rem);position:absolute;left:50%;transform:translate(-50%)}.landing-axis__cross{top:var(--landing-word-center);border:1px solid var(--border-default);justify-content:center;align-items:center;width:2.8rem;height:2.8rem;display:inline-flex;position:absolute;left:50%}@supports (color:color-mix(in lab, red, red)){.landing-axis__cross{border:1px solid color-mix(in srgb,var(--border-default)82%,var(--primary))}}.landing-axis__cross{border-radius:var(--radius-pill);background:var(--portfolio-bg);box-shadow:var(--shadow-sm);color:var(--primary);opacity:0;font-size:1.25rem;font-weight:600;line-height:1;transition:opacity .22s,transform .22s;transform:translate(-50%,-50%)scale(.85)}.landing-axis__cross--visible{opacity:1;transform:translate(-50%,-50%)scale(1)}@media (hover:hover) and (min-width:768px){.landing-door:hover{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.landing-door:hover{background:color-mix(in srgb,var(--primary)4%,transparent)}}.landing-door:hover:before{opacity:1}.landing-door:hover .landing-door__arrow{color:var(--primary)}.landing-door:hover .landing-door__icon{border-color:var(--primary);background:var(--accent-muted)}.landing-split:hover .landing-door:not(:hover) .landing-door__content{opacity:.55}}@media (max-width:767px){.landing{--landing-word-size:clamp(2.3rem,11vw,3rem);position:relative}.landing__name--stacked{z-index:1;text-align:center;pointer-events:none;padding:2.25rem 1rem .5rem;display:block;position:absolute;top:0;left:0;right:0}.landing-split{flex-direction:column}.landing-door{text-align:center;align-items:center}.landing-door--engineering{flex-grow:.94;justify-content:flex-end;padding:2rem 1.25rem 2.75rem}.landing-door--engineering .landing-door__content{flex-direction:column-reverse}.landing-door--literature{flex-grow:1.06;justify-content:flex-start;padding:2.75rem 1.25rem 2rem}.landing-door--engineering:before{-webkit-mask-image:radial-gradient(at 0 0,#000 15%,transparent 75%);mask-image:radial-gradient(at 0 0,#000 15%,transparent 75%)}.landing-axis{background:var(--border-default)}.landing-axis:before,.landing-axis__name{display:none}.landing-axis__cross{top:50%}}@media (max-width:767px) and (max-height:700px){.landing{--landing-word-size:clamp(2rem,9vw,2.5rem)}.landing__name--stacked{padding-top:1.25rem}.landing-door__content{gap:.7rem}.landing-door__icon{width:2.4rem;height:2.4rem}.landing-door--engineering{padding:1rem 1.25rem 1.9rem}.landing-door--literature{padding:1.9rem 1.25rem 1.5rem}}@media (min-width:768px) and (max-height:640px){.landing{--landing-word-top:clamp(6.5rem,22vh,8.5rem);--landing-word-size:clamp(2.2rem,4.6vw,3.4rem)}}@media (prefers-reduced-motion:reduce){.landing-door,.landing-door:before,.landing-door__content,.landing-door__arrow,.landing-axis__cross{transition:none}}.about-summary--no-image{grid-template-columns:1fr}.about-summary .hero-social-links{margin-top:1.5rem}.showcase-project-card--link{color:inherit;text-decoration:none;display:block}.showcase-project-card--link:focus-visible{outline:2px solid var(--accent-ring);outline-offset:3px}.showcase-project-card__title{color:var(--text-heading);letter-spacing:0;font-size:1.25rem;font-weight:720;line-height:1.4}.projects-grid--list{grid-template-columns:1fr}.projects-grid--list .showcase-project-card{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);display:grid}.projects-grid--list .showcase-project-card__media{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--border-default);min-height:16rem}.showcase-project-card__image--diagram{object-fit:contain;background:#fff;padding:.75rem}.showcase-project-card__fallback{height:100%;min-height:inherit;background:radial-gradient(circle,var(--primary)1px,transparent 1.4px)0 0/18px 18px,linear-gradient(135deg,var(--accent-muted),var(--portfolio-surface-muted));flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:.5rem;padding:max(1.2rem,min(3vw,1.75rem));display:flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.showcase-project-card__fallback{background:radial-gradient(circle,color-mix(in srgb,var(--primary)22%,transparent)1px,transparent 1.4px)0 0/18px 18px,linear-gradient(135deg,var(--accent-muted),var(--portfolio-surface-muted))}}.showcase-project-card__fallback-title{color:var(--primary-dark);letter-spacing:0;font-size:max(1.6rem,min(4vw,2.2rem));font-weight:780;line-height:1.15}.showcase-project-card__fallback-stack{color:var(--text-muted);font-family:var(--font-geist-mono),monospace;font-size:.8rem}.showcase-project-card__index{align-items:center;gap:.6rem;display:inline-flex}.showcase-project-card__category{border:1px solid var(--border-default)}@supports (color:color-mix(in lab, red, red)){.showcase-project-card__category{border:1px solid color-mix(in srgb,var(--border-default)70%,var(--primary))}}.showcase-project-card__category{color:var(--primary-dark);font-family:var(--font-geist-sans),sans-serif;letter-spacing:.02em;border-radius:999px;padding:.2rem .55rem;font-size:.7rem;font-weight:700}@media (max-width:767px){.projects-grid--list .showcase-project-card{display:block}.projects-grid--list .showcase-project-card__media{aspect-ratio:16/9;border-right:0;border-bottom:1px solid var(--border-default);min-height:0}}.site-nav__group{align-items:center;gap:1.25rem;display:flex}.site-nav__group+.site-nav__group{border-left:2px solid var(--border-default);margin-left:.15rem}@supports (color:color-mix(in lab, red, red)){.site-nav__group+.site-nav__group{border-left:2px solid color-mix(in srgb,var(--border-default)72%,var(--text-muted))}}.site-nav__group+.site-nav__group{padding-left:1.4rem}.site-nav__group--muted a{color:var(--text-faint)}.site-nav a[aria-current=location]{color:var(--primary);font-weight:650}.site-mobile-menu__group{gap:.12rem;display:grid}.site-mobile-menu__group--muted a{color:var(--text-muted)}.site-mobile-menu a[aria-current=location]{background:var(--accent-muted);color:var(--primary-dark)}@media (max-width:960px){.site-nav{display:none}.site-menu-toggle{display:inline-flex}.site-mobile-menu{display:grid}}.social-link-pill--pending{cursor:default}.social-link-pill--pending:hover{border-color:var(--border-default);box-shadow:var(--shadow-sm);color:var(--primary-dark);transform:none}.project-detail{grid-template-columns:minmax(0,1fr);gap:max(2.25rem,min(5vw,3rem));display:grid}.project-detail>*,.project-detail__section{min-width:0}.project-detail__back{justify-self:start;margin-top:0}.project-detail__meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.6rem;font-size:.86rem;display:flex}.project-detail__title{color:var(--text-heading);letter-spacing:0;margin-top:.9rem;font-size:max(2rem,min(6vw,2.9rem));font-weight:750;line-height:1.2}.project-detail__summary{color:var(--primary-dark);margin-top:.75rem;font-size:1.05rem;font-weight:650;line-height:1.6}.project-detail__background{color:var(--text-muted);margin-top:1rem;font-size:.96rem;line-height:1.8}.project-detail__facts{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.project-detail__fact,.project-detail__metric{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);box-shadow:var(--shadow-sm);padding:1rem 1.1rem}.project-detail__fact dt,.project-detail__metric dt{color:var(--text-faint);letter-spacing:.06em;font-size:.76rem;font-weight:700}.project-detail__fact dd{color:var(--text-heading);margin-top:.35rem;font-size:.95rem;font-weight:650;line-height:1.5}.project-detail__heading{color:var(--text-heading);margin-bottom:1rem;font-size:1.2rem;font-weight:740;line-height:1.35}.project-detail__stack{margin-top:0}.project-detail__choices{margin-top:1.25rem}.project-detail__subheading{color:var(--text-muted);margin-bottom:.6rem;font-size:.86rem;font-weight:700}.project-detail__choices dl{gap:.5rem;display:grid}.project-detail__choice{grid-template-columns:minmax(6rem,max-content) minmax(0,1fr);align-items:baseline;gap:.9rem;display:grid}.project-detail__choice dt{color:var(--primary-dark);font-size:.86rem;font-weight:700}.project-detail__choice dd{color:var(--text-muted);font-size:.92rem;line-height:1.7}.project-detail__list{border-top:0;margin-top:0;padding-top:0}.project-detail__note{border-left:2px solid var(--primary);margin-top:1.1rem;padding-left:.9rem}.project-detail__note strong{color:var(--text-heading);font-size:.86rem}.project-detail__note p{color:var(--text-muted);margin-top:.3rem;font-size:.92rem;line-height:1.7}.project-detail__figure{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);box-shadow:var(--shadow-sm);overflow:hidden}.project-detail__image-link{background:var(--portfolio-surface-muted);cursor:zoom-in;justify-content:center;display:flex}.project-detail__image{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:32rem;display:block}.project-detail__gallery--multi{grid-template-columns:repeat(2,minmax(0,1fr))}.project-detail__gallery .project-detail__figure{flex-direction:column;display:flex}.project-detail__gallery .project-detail__image-link{aspect-ratio:16/10;display:block;overflow:hidden}.project-detail__gallery .project-detail__image{object-fit:cover;object-position:top left;width:100%;height:100%;max-height:none}.project-detail__gallery figcaption{flex:1}.project-detail__gallery .project-detail__image--contain{object-fit:contain;object-position:center;background:#fff}.project-detail__table--wide tbody th{white-space:nowrap;width:auto}.project-detail__table--wide thead th:not(:first-child),.project-detail__table--wide tbody td{font-family:var(--font-geist-mono),monospace;text-align:right;font-size:.86rem}.project-detail__table-caption{color:var(--text-muted);margin-top:.6rem;font-size:.84rem;line-height:1.6}@media (max-width:767px){.project-detail__table--wide tbody tr{grid-template-columns:repeat(2,minmax(0,1fr));padding:.55rem 0;display:grid}.project-detail__table--wide tbody th{white-space:normal;grid-column:1/-1}.project-detail__table--wide tbody th,.project-detail__table--wide tbody td{text-align:left;padding-top:.3rem;padding-bottom:.3rem}}.project-detail__figure figcaption{border-top:1px solid var(--border-default);color:var(--text-muted);padding:.7rem .9rem;font-size:.86rem;line-height:1.6}.project-detail__troubles{gap:1.5rem;display:grid}.project-detail__trouble-item{gap:.75rem;display:grid}.project-detail__trouble{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);box-shadow:var(--shadow-sm);display:grid}.project-detail__trouble-row{grid-template-columns:4.5rem minmax(0,1fr);gap:.75rem;padding:.8rem 1.1rem;display:grid}.project-detail__trouble-row+.project-detail__trouble-row{border-top:1px solid var(--border-default)}.project-detail__trouble-row dt{color:var(--primary);font-size:.82rem;font-weight:750;line-height:1.7}.project-detail__trouble-row dd{color:var(--text-body);font-size:.92rem;line-height:1.7}.project-detail__trouble-row--solution dd{color:var(--text-heading);font-weight:650}.project-detail__metrics{grid-template-columns:repeat(auto-fit,minmax(min(12rem,100%),1fr));gap:1rem;margin-bottom:1rem;display:grid}.project-detail__metric dd{color:var(--primary-dark);font-family:var(--font-geist-mono),monospace;margin-top:.35rem;font-size:1.15rem;font-weight:700}.project-detail__gallery{gap:1rem;display:grid}.project-detail__reflection{grid-template-columns:repeat(auto-fit,minmax(min(18rem,100%),1fr));gap:max(1.5rem,min(4vw,2.5rem));display:grid}.project-detail__links{border-top:0;margin-top:0;padding-top:0}.project-detail__header .project-detail__links{margin-top:1.25rem}.project-detail__pager{border-top:1px solid var(--border-default);grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding-top:1.5rem;display:grid}.project-detail__pager-link{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);box-shadow:var(--shadow-sm);color:inherit;gap:.3rem;padding:.9rem 1.1rem;text-decoration:none;display:grid}.project-detail__pager-link:hover{border-color:var(--primary)}.project-detail__pager-link:focus-visible{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.project-detail__pager-link:hover{border-color:color-mix(in srgb,var(--primary)55%,var(--border-default))}.project-detail__pager-link:focus-visible{border-color:color-mix(in srgb,var(--primary)55%,var(--border-default))}}.project-detail__pager-link span{color:var(--text-faint);font-size:.78rem;font-weight:650}.project-detail__pager-link strong{color:var(--text-heading);font-size:.95rem}.project-detail__pager-link--next{text-align:right;grid-column:2}@media (max-width:767px){.project-detail__facts{grid-template-columns:1fr}.project-detail__trouble-row{grid-template-columns:1fr;gap:.2rem}.project-detail__pager,.project-detail__gallery--multi{grid-template-columns:1fr}.project-detail__choice{grid-template-columns:1fr;gap:.15rem}.project-detail__pager-link--next{grid-column:auto}}.project-detail__trouble-title{color:var(--text-heading);align-items:baseline;gap:.6rem;font-size:1rem;font-weight:720;line-height:1.45;display:flex}.project-detail__trouble-title span{color:var(--text-faint);font-family:var(--font-geist-mono),monospace;font-size:.8rem}.project-detail__hypotheses{gap:.2rem;padding-left:1.2rem;list-style:decimal;display:grid}.project-detail__notes{gap:.4rem;display:grid}.project-detail__confirm{border-radius:var(--radius-small);color:#6b4a06;-webkit-box-decoration-break:clone;box-decoration-break:clone;background:#fff0c7;padding:.1rem .35rem;font-weight:650;line-height:1.7}:root[data-theme=dark] .project-detail__confirm{color:#ffd56b;background:rgba(255,196,0,.18)}.project-detail__inline-code{background:var(--code-inline-bg);box-shadow:inset 0 0 0 1px var(--border-default);color:var(--code-text);font-family:var(--font-geist-mono),monospace;overflow-wrap:anywhere;border-radius:4px;padding:.08rem .32rem;font-size:.84em}.project-detail__table{border:1px solid var(--border-default);border-radius:var(--radius-card);border-collapse:separate;border-spacing:0;background:var(--portfolio-surface);width:100%;box-shadow:var(--shadow-sm);font-size:.92rem;line-height:1.65;overflow:hidden}.project-detail__table thead th{background:var(--portfolio-surface-muted);color:var(--text-muted);text-align:left;padding:.7rem 1.1rem;font-size:.8rem;font-weight:700}.project-detail__table tbody th,.project-detail__table tbody td{border-top:1px solid var(--border-default);text-align:left;vertical-align:top;padding:.75rem 1.1rem}.project-detail__table tbody th{width:36%;color:var(--text-heading);font-weight:650}.project-detail__table tbody td{color:var(--text-body)}.project-detail__code{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--code-bg);box-shadow:var(--shadow-sm);overflow:hidden}.project-detail__code-header{border-bottom:1px solid var(--border-default);color:var(--text-muted);justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 1rem;font-size:.82rem;font-weight:650;display:flex}.project-detail__code-lang{color:var(--text-faint);font-family:var(--font-geist-mono),monospace;text-transform:uppercase;font-size:.74rem}.project-detail__code pre{margin:0;padding:1rem 1.1rem;line-height:1.6;overflow-x:auto}.project-detail__code pre code{color:var(--code-text);font-family:var(--font-geist-mono),monospace;white-space:pre;background:0 0;font-size:.8rem;display:block}.project-detail__code figcaption{border-top:1px solid var(--border-default);color:var(--text-muted);padding:.7rem 1rem;font-size:.86rem}:root[data-theme=dark] .project-detail__code .hljs-comment,:root[data-theme=dark] .project-detail__code .hljs-quote{color:#8b949e}:root[data-theme=dark] .project-detail__code .hljs-keyword,:root[data-theme=dark] .project-detail__code .hljs-built_in,:root[data-theme=dark] .project-detail__code .hljs-literal{color:#ff7b72}:root[data-theme=dark] .project-detail__code .hljs-string,:root[data-theme=dark] .project-detail__code .hljs-meta .hljs-string{color:#a5d6ff}:root[data-theme=dark] .project-detail__code .hljs-variable,:root[data-theme=dark] .project-detail__code .hljs-template-variable,:root[data-theme=dark] .project-detail__code .hljs-attr{color:#ffa657}:root[data-theme=dark] .project-detail__code .hljs-number,:root[data-theme=dark] .project-detail__code .hljs-title,:root[data-theme=dark] .project-detail__code .hljs-meta{color:#79c0ff}@media (max-width:767px){.project-detail__table,.project-detail__table tbody,.project-detail__table tr,.project-detail__table th,.project-detail__table td{width:100%;display:block}.project-detail__table thead{display:none}.project-detail__table tbody tr+tr{border-top:1px solid var(--border-default)}.project-detail__table tbody th,.project-detail__table tbody td{border-top:0;padding:.2rem 1rem}.project-detail__table tbody th{padding-top:.8rem}.project-detail__table tbody td{padding-bottom:.8rem}.project-detail__table tbody th:before,.project-detail__table tbody td:before{color:var(--text-faint);content:attr(data-label);font-size:.74rem;font-weight:700;display:block}}.project-detail__collapsible{border:1px solid var(--border-default);border-radius:calc(var(--radius-card) + 4px);background:var(--portfolio-surface)}.project-detail__summary{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 1.1rem;list-style:none;display:flex}.project-detail__summary::-webkit-details-marker{display:none}.project-detail__summary .project-detail__heading{margin-bottom:0;font-size:1.05rem}.project-detail__summary-hint{color:var(--text-muted);flex-shrink:0;align-items:center;gap:.35rem;font-size:.82rem;font-weight:600;display:inline-flex}.project-detail__summary-hint:after{content:"";border-bottom:1.5px solid;border-right:1.5px solid;width:.45rem;height:.45rem;transition:transform .16s;transform:translateY(-.12rem)rotate(45deg)}.project-detail__collapsible[open] .project-detail__summary-hint:after{transform:translateY(.1rem)rotate(-135deg)}.project-detail__summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:calc(var(--radius-card) + 4px)}.project-detail__collapsible-body{min-width:0;padding:0 1.1rem 1.1rem}.contact-section .section-heading{margin-bottom:1.7rem}.contact-card{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--portfolio-surface);box-shadow:var(--shadow-sm);padding:max(1.2rem,min(4vw,2rem))}.contact-card__link{max-width:100%;color:var(--primary-dark);align-items:center;gap:1rem;text-decoration:none;display:inline-flex}.contact-card__icon{border:1px solid var(--border-default);flex-shrink:0;justify-content:center;align-items:center;width:2.9rem;height:2.9rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.contact-card__icon{border:1px solid color-mix(in srgb,var(--border-default)82%,var(--primary))}}.contact-card__icon{border-radius:var(--radius-pill);background:var(--portfolio-surface);box-shadow:var(--shadow-sm);color:var(--primary-dark);transition:border-color .16s,background-color .16s}.contact-card__icon svg{width:1.2rem;height:1.2rem}.contact-card__email{overflow-wrap:anywhere;border-bottom:1px solid var(--primary);min-width:0}@supports (color:color-mix(in lab, red, red)){.contact-card__email{border-bottom:1px solid color-mix(in srgb,var(--primary)62%,transparent)}}.contact-card__email{font-size:max(1.15rem,min(2.4vw,1.5rem));font-weight:740;line-height:1.4;transition:border-color .16s,color .16s}.contact-card__link:hover .contact-card__email{border-color:var(--primary);color:var(--primary)}.contact-card__link:hover .contact-card__icon{border-color:var(--primary);background:var(--accent-muted)}.contact-card__link:focus-visible{border-radius:var(--radius-small);outline:2px solid var(--accent-ring);outline-offset:4px}@media (max-width:767px){.contact-card{padding:1.15rem}.contact-card__link{gap:.7rem}.contact-card__icon{width:2.3rem;height:2.3rem}.contact-card__email{font-size:max(.8rem,min(4.1vw,1.1rem))}}@keyframes reveal-up{0%{opacity:0;translate:0 var(--reveal-distance)}to{opacity:1;translate:0}}.reveal-ready{--reveal-distance:20px}.reveal-ready [data-reveal]:not(.is-revealed){opacity:0}@keyframes reveal-failsafe{to{opacity:1}}.reveal-ready:not(.reveal-active) [data-reveal]:not(.is-revealed){animation:0s linear 2.5s forwards reveal-failsafe}.reveal-ready [data-reveal].is-revealed{animation:.6s cubic-bezier(.22,1,.36,1) both reveal-up}@media (max-width:767px){.reveal-ready{--reveal-distance:14px}}@media (prefers-reduced-motion:reduce){.reveal-ready [data-reveal]:not(.is-revealed){opacity:1}.reveal-ready [data-reveal].is-revealed{animation:none}}@media print{.reveal-ready [data-reveal]:not(.is-revealed){opacity:1}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 transparent}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
