/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */
@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,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Consolas, monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-6xl:72rem;--container-7xl:80rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Inter", system-ui, sans-serif;--default-mono-font-family:"JetBrains Mono", "SFMono-Regular", Consolas, monospace;--font-display:"Plus Jakarta Sans", "Inter", system-ui, sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,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:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.invisible{visibility:hidden}.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}.static{position:static}.inset-0{inset:0}.inset-x-0{inset-inline:0}.top-1\/2{top:50%}.right-1{right:var(--spacing)}.bottom-0{bottom:0}.left-1{left:var(--spacing)}.isolate{isolation:isolate}.-z-10{z-index:calc(10 * -1)}.-z-20{z-index:calc(20 * -1)}.z-10{z-index:10}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-4{margin-top:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.aspect-\[16\/9\]{aspect-ratio:16/9}.h-2{height:calc(var(--spacing) * 2)}.h-11{height:calc(var(--spacing) * 11)}.h-full{height:100%}.w-2{width:calc(var(--spacing) * 2)}.w-5{width:calc(var(--spacing) * 5)}.w-11{width:calc(var(--spacing) * 11)}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:0}.shrink{flex-shrink:1}.grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.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}.touch-pan-y{--tw-pan-y:pan-y;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.items-center{align-items:center}.justify-center{justify-content:center}.gap-0{gap:0}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-line{border-color:var(--c-line)}.bg-accent{background-color:var(--c-accent)}.bg-black\/55{background-color:#0000008c}@supports (color:color-mix(in lab, red, red)){.bg-black\/55{background-color:color-mix(in oklab, var(--color-black) 55%, transparent)}}.bg-surface{background-color:var(--c-surface)}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\/60{background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-black\/60{--tw-gradient-from:#0009}@supports (color:color-mix(in lab, red, red)){.from-black\/60{--tw-gradient-from:color-mix(in oklab, var(--color-black) 60%, transparent)}}.from-black\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.px-4{padding-inline:calc(var(--spacing) * 4)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-white{color:var(--color-white)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-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,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))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.group-hover\/indicator\:bg-white:is(:where(.group\/indicator):hover *){background-color:var(--color-white)}.hover\:bg-black\/75:hover{background-color:#000000bf}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/75:hover{background-color:color-mix(in oklab, var(--color-black) 75%, transparent)}}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (width>=40rem){.sm\:right-2{right:calc(var(--spacing) * 2)}.sm\:left-2{left:calc(var(--spacing) * 2)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}}:root{--nav-h:76px;--c-base:#f3f7fa;--c-alt:#edf3f7;--c-surface:#e7eef3;--c-raised:#dce7ee;--c-fg:#1b3140;--c-muted:#4e6473;--c-line:#68859a57;--c-input:#e6eaed;--c-accent:#08758a;--c-warm:#8a5b1f;--c-star:#2c4457;--c-mascot:#08758a;--c-on-accent:#f7fbfd;--shadow-small:0 6px 8px #203e5014;--shadow-medium:0 20px 55px #28485c1c;--scene-halo:#4880972e;--keyboard-halo:#08758a26;--star-opacity:.6;--radius-sm:8px;--radius-md:14px;--content:72rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-tap:.12s;--dur-hover:.25s;--dur-shift:.4s}.dark{--c-base:#070b12;--c-alt:#0b121d;--c-surface:#111a26;--c-raised:#162231;--c-fg:#f4f7fa;--c-muted:#9aa9b8;--c-line:#8fabc233;--c-input:#23272e;--c-accent:#43cadd;--c-warm:#d6a15b;--c-star:#c9d8e3;--c-mascot:#f4f7fa;--c-on-accent:#071116;--shadow-small:0 6px 8px #0003;--shadow-medium:0 22px 60px #00000047;--scene-halo:#43cadd21;--keyboard-halo:#43cadd2b;--star-opacity:.72}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--c-base);color:var(--c-fg)}body{background:var(--c-base);min-width:320px;min-height:100vh;color:var(--c-fg);margin:0;font-family:Inter,system-ui,sans-serif;font-size:1rem;line-height:1.6;transition:background-color .35s,color .35s;overflow-x:hidden}#root{isolation:isolate;min-height:100vh;position:relative}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:inherit;text-decoration:none}img{max-width:100%}h1,h2,h3{text-wrap:balance}.wordmark,.hero-title,.section-intro__title,.build-index__title,.skill-context__active,.experience-entry__identity h3,.project-case__header h3,.project-media__index{font-family:var(--font-display)}p,li{text-wrap:pretty}.word-mask{vertical-align:bottom;margin-bottom:-.14em;margin-right:-.06em;padding-bottom:.14em;padding-right:.06em;display:inline-block;overflow:hidden}.word-mask__word{display:inline-block}::selection{background:var(--c-accent)}@supports (color:color-mix(in lab, red, red)){::selection{background:color-mix(in srgb, var(--c-accent) 28%, transparent)}}:focus-visible{outline:2px solid var(--c-accent);outline-offset:4px}.skip-link{z-index:100;border-radius:var(--radius-sm);background:var(--c-fg);color:var(--c-base);padding:.65rem 1rem;font-weight:700;transition:translate .2s;position:fixed;top:.75rem;left:.75rem;translate:0 -160%}.skip-link:focus{translate:0}.site-nav{z-index:50;height:var(--nav-h);background:var(--c-base);border-bottom:1px solid #0000;position:sticky;top:0}@supports (color:color-mix(in lab, red, red)){.site-nav{background:color-mix(in srgb, var(--c-base) 72%, transparent)}}.site-nav{transition:background-color .3s,border-color .3s,box-shadow .3s}.site-nav--scrolled{border-color:var(--c-line);background:var(--c-base)}@supports (color:color-mix(in lab, red, red)){.site-nav--scrolled{background:color-mix(in srgb, var(--c-base) 96%, transparent)}}.site-nav--scrolled{box-shadow:0 4px 8px #0000000f}.nav-shell{width:min(100% - 2rem, var(--content));grid-template-columns:1fr auto 1fr;align-items:center;height:100%;margin-inline:auto;display:grid}.wordmark{letter-spacing:-.025em;grid-column:1;justify-self:start;align-items:center;min-height:44px;font-size:1.25rem;font-weight:780;display:inline-flex}.wordmark span{color:var(--c-accent)}.nav-actions{--nav-glyph:34px;grid-column:3;justify-self:end;align-items:center;gap:.5rem;display:flex}.nav-sections{--nav-row-h:40px;--nav-mascot-size:24px;--nav-mascot-lift:22px;padding-top:var(--nav-mascot-lift);grid-column:2;position:relative}.nav-links{height:var(--nav-row-h);align-items:center;gap:clamp(.1rem,.6vw,.35rem);margin:0;padding:0;list-style:none;display:flex;position:relative}.nav-links a{height:var(--nav-row-h);border-radius:var(--radius-sm);color:var(--c-fg);transition:color var(--dur-hover) ease;align-items:center;padding-inline:.85rem;font-size:1rem;font-weight:560;display:inline-flex;position:relative}.nav-links a:hover,.nav-links a.is-active{color:var(--c-fg)}.nav-link__glow{border-radius:var(--radius-sm);background:var(--c-accent);position:absolute;inset:1px 0}@supports (color:color-mix(in lab, red, red)){.nav-link__glow{background:color-mix(in srgb, var(--c-accent) 20%, transparent)}}.nav-link__glow{box-shadow:0 0 10px 1px var(--c-accent)}@supports (color:color-mix(in lab, red, red)){.nav-link__glow{box-shadow:0 0 10px 1px color-mix(in srgb, var(--c-accent) 26%, transparent)}}.nav-link__label{position:relative}.nav-mascot{width:var(--nav-mascot-size);height:var(--nav-mascot-size);margin-left:calc(var(--nav-mascot-size) / -2);pointer-events:none;position:absolute;top:0;left:0}.nav-mascot__face{background:var(--c-mascot);border-radius:50%;position:absolute;inset:0}.nav-mascot__eye{background:var(--c-base);border-radius:50%;width:4px;height:4px;position:absolute;top:36%}.nav-mascot__eye--left{left:24%}.nav-mascot__eye--right{right:24%}.nav-mascot__cheek{background:#f79ec4;border-radius:50%;width:5px;height:3px;position:absolute;top:55%}.nav-mascot__cheek--left{left:10%}.nav-mascot__cheek--right{right:10%}.nav-mascot__mouth{border-bottom:1.5px solid var(--c-base);border-radius:0 0 999px 999px;width:8px;height:4px;margin-left:-4px;position:absolute;top:56%;left:50%}.nav-mascot__tail{background:var(--c-mascot);width:7px;height:7px;margin-left:-3.5px;position:absolute;bottom:-1px;left:50%;rotate:45deg}.nav-mascot__sparkle{color:#f5c74a;width:8px;height:8px;position:absolute}.nav-mascot__sparkle svg{fill:currentColor;width:100%;height:100%;display:block}.nav-mascot__sparkle--a{top:-3px;right:-4px}.nav-mascot__sparkle--b{width:6px;height:6px;top:-4px;left:-2px}.nav-icon-button{border-radius:var(--radius-sm);width:44px;height:44px;color:var(--c-fg);cursor:pointer;background:0 0;border:0;place-items:center;transition:color .25s,background-color .25s,transform .2s;display:inline-grid}.nav-icon-button:hover{color:var(--c-fg);background:var(--c-surface)}.nav-icon-button:active{transform:scale(.96)}.nav-icon-button svg{width:var(--nav-glyph);height:var(--nav-glyph);fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.like-wrap{display:inline-flex;position:relative}.like-button{isolation:isolate;border-radius:var(--radius-sm);width:44px;height:44px;color:var(--c-fg);cursor:pointer;background:0 0;border:0;place-items:center;transition:color .25s,background-color .25s,transform .2s;display:inline-grid;position:relative}.like-button:hover{color:var(--c-fg);background:var(--c-surface)}.like-button:active{transform:scale(.96)}.like-button.is-liked{color:#e0526b}.like-button__glyph{z-index:1;width:var(--nav-glyph);height:calc(var(--nav-glyph) + 6px);place-items:center;display:grid;position:relative}.like-button__glyph svg{width:100%;height:100%;transition:scale .3s var(--ease-out)}.like-button__count{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.6rem;font-weight:600;line-height:1;position:absolute;top:47%;left:50%;translate:-50% -50%}.like-button__count--wide{letter-spacing:-.02em;font-size:.5rem}.like-button.is-liked .like-button__count{color:#3d0f1a}.like-button.is-beating .like-button__glyph svg{animation:heart-pop .32s var(--ease-out)}@keyframes heart-pop{0%{scale:1}45%{scale:1.32}to{scale:1}}.like-confetti{z-index:0;pointer-events:none;width:14px;height:14px;animation:like-confetti-fly 1.5s var(--ease-out) forwards;will-change:transform, opacity;position:absolute;top:50%;left:50%}.like-confetti svg{width:100%;height:100%;display:block}@keyframes like-confetti-fly{0%{opacity:0;transform:translate(-50%,-50%)scale(.2)rotate(0)}15%{opacity:1}65%{opacity:1}to{transform:translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(var(--scale)) rotate(var(--rot));opacity:0}}@media (prefers-reduced-motion:reduce){.like-button.is-beating .like-button__glyph svg{animation:none}.like-confetti{opacity:0;animation:none}}.like-hint{z-index:60;border:1px solid var(--c-line);border-radius:var(--radius-sm);background:var(--c-base);width:max-content;max-width:15rem;padding:.5rem 1.6rem .5rem .7rem;position:absolute;top:calc(100% + 9px);right:-4px}@supports (color:color-mix(in lab, red, red)){.like-hint{background:color-mix(in srgb, var(--c-base) 96%, transparent)}}.like-hint{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--c-fg);box-shadow:var(--shadow-medium);text-align:left;transform-origin:100% 0;font-size:.78rem;line-height:1.35}.like-hint__text{display:inline}.like-hint__heart{vertical-align:-.16em;width:1.05em;height:1.05em;color:var(--c-fg);transition:color .35s;display:inline-flex}.like-hint__heart svg{width:100%;height:100%}.like-hint__heart.is-filled{color:#e0526b}.like-hint__close{width:22px;height:22px;color:var(--c-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:color .2s,background-color .2s;display:inline-flex;position:absolute;top:3px;right:3px}.like-hint__close:hover{color:var(--c-fg);background:var(--c-fg)}@supports (color:color-mix(in lab, red, red)){.like-hint__close:hover{background:color-mix(in srgb, var(--c-fg) 10%, transparent)}}.like-hint__close svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;width:13px;height:13px}.like-hint__arrow{background:var(--c-base);width:9px;height:9px;position:absolute;top:-5px;right:20px}@supports (color:color-mix(in lab, red, red)){.like-hint__arrow{background:color-mix(in srgb, var(--c-base) 96%, transparent)}}.like-hint__arrow{border-top:1px solid var(--c-line);border-left:1px solid var(--c-line);rotate:45deg}@media (width<=767px){.like-hint{top:calc(var(--nav-h) - 8px);transform-origin:100% 0;max-width:min(20rem,100vw - 1.5rem);position:fixed;left:auto;right:.75rem}.like-hint__arrow{right:172px}}.menu-toggle{align-items:center;gap:.5rem;width:auto;padding-inline:.55rem;display:none}.menu-toggle__label{letter-spacing:-.01em;font-size:.9rem;font-weight:560}.menu-toggle__bars{gap:6px;display:grid}.menu-toggle__bars span{width:26px;height:2px;transition:transform .3s var(--ease-out);background:currentColor;display:block}.menu-toggle.is-open .menu-toggle__bars span:first-child{transform:translateY(4px)rotate(45deg)}.menu-toggle.is-open .menu-toggle__bars span:last-child{transform:translateY(-4px)rotate(-45deg)}.mobile-navigation{inset:var(--nav-h) 0 auto;border-bottom:1px solid var(--c-line);background:var(--c-base);box-shadow:var(--shadow-medium);margin:0;padding:.5rem 1rem 1rem;list-style:none;position:absolute}.mobile-navigation a{text-align:right;border-bottom:1px solid var(--c-line);border-radius:var(--radius-sm);min-height:52px;color:var(--c-fg);transition:color var(--dur-tap) ease, background-color var(--dur-tap) ease;justify-content:flex-end;align-items:center;padding-inline:.8rem;font-size:1.05rem;display:flex}.mobile-navigation a:active,.mobile-navigation a:focus-visible{background:var(--c-accent)}@supports (color:color-mix(in lab, red, red)){.mobile-navigation a:active,.mobile-navigation a:focus-visible{background:color-mix(in srgb, var(--c-accent) 16%, transparent)}}.mobile-navigation a:active,.mobile-navigation a:focus-visible{color:var(--c-accent);outline:none}.mobile-navigation a[aria-current=location]{color:var(--c-accent)}.star-field{opacity:var(--star-opacity);transition:opacity .4s}.scene-atmosphere{z-index:-15;pointer-events:none;background:radial-gradient(circle at 74% 36%, var(--scene-halo), transparent 32%);transition:background .45s;position:fixed;inset:0}.scene-fallback__orb{aspect-ratio:1;background:radial-gradient(circle, var(--c-accent), transparent 68%);border-radius:50%;width:min(28vw,24rem);position:absolute;top:40%;left:73%;translate:-50% -50%}@supports (color:color-mix(in lab, red, red)){.scene-fallback__orb{background:radial-gradient(circle, color-mix(in srgb, var(--c-accent) 28%, transparent), transparent 68%)}}.scene-fallback__orb{filter:blur(18px)}@keyframes star-drift-1{to{transform:translate(50px,-34px)}}@keyframes star-drift-2{to{transform:translate(-42px,44px)}}@keyframes star-drift-3{to{transform:translate(34px,46px)}}.star-drift-1{animation:30s ease-in-out infinite alternate star-drift-1}.star-drift-2{animation:38s ease-in-out infinite alternate star-drift-2}.star-drift-3{animation:46s ease-in-out infinite alternate star-drift-3}.hero-section{min-height:calc(100svh - var(--nav-h));width:min(100% - 2rem, var(--content));align-items:stretch;margin-inline:auto;display:flex}.hero-composition{grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,57%) minmax(0,43%);gap:1rem 2rem;width:100%;padding:clamp(2.5rem,5vh,4rem) 0 clamp(1.75rem,3.5vh,2.75rem);display:grid;position:relative}.hero-heading{grid-column:1;align-self:end}.hero-greeting{color:var(--c-fg);margin:0 0 1.2rem;font-size:clamp(1.05rem,1.5vw,1.3rem)}.hero-greeting strong{color:var(--c-fg);font-weight:680}.hero-title{letter-spacing:-.04em;margin:0;font-size:clamp(3.25rem,min(6.7vw,10.5vh),5.85rem);font-weight:800;line-height:.94}.hero-title>span{display:block}.hero-title>span:last-child{color:var(--c-accent);font-weight:560}.hero-scene-space{grid-area:1/2/4;position:relative}.hero-support{grid-column:1;align-self:start;max-width:42rem;margin-top:clamp(1.25rem,3.5vh,2.5rem)}.hero-copy{max-width:62ch;color:var(--c-muted);margin:0;font-size:clamp(1.05rem,1.4vw,1.22rem);line-height:1.65}.hero-metadata{grid-template-columns:.75fr 1.6fr;gap:1rem;margin:2.5rem 0 0;padding-left:0;list-style:none;display:grid}.hero-metadata li{min-width:0;margin:0;font-size:.92rem;line-height:1.45}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.7rem;display:flex}@media (width>=768px) and (height<=760px){.hero-greeting{margin-bottom:.5rem}.hero-support{margin-top:.9rem}.hero-metadata{margin-top:1.6rem}.hero-actions{margin-top:1rem}}.button{border-radius:var(--radius-sm);min-height:48px;transition:transform var(--dur-hover) var(--ease-out), color var(--dur-hover) ease, background-color var(--dur-hover) ease, box-shadow var(--dur-hover) ease;justify-content:center;align-items:center;gap:.55rem;padding:.75rem 1.15rem;font-size:.92rem;font-weight:680;display:inline-flex}.button:hover{transform:translateY(-2px)}.button:active{transition-duration:var(--dur-tap);transform:translateY(0)scale(.98)}.button--primary{background:var(--c-fg);color:var(--c-base);box-shadow:var(--shadow-small)}.button--primary:hover{background:var(--c-accent);color:var(--c-on-accent)}.button--secondary{border:1px solid var(--c-line);color:var(--c-fg)}.button--secondary:hover{border-color:var(--c-accent);color:var(--c-accent)}.social-links{align-items:center;gap:.15rem;margin:0;padding:0;list-style:none;display:flex}.social-links a{border-radius:var(--radius-sm);width:44px;height:44px;color:var(--c-fg);transition:color var(--dur-hover) ease, background-color var(--dur-hover) ease, transform var(--dur-hover) var(--ease-out);place-items:center;display:grid}.social-links a:hover,.social-links a:focus-visible{color:var(--c-accent);background:var(--c-surface)}@supports (color:color-mix(in lab, red, red)){.social-links a:hover,.social-links a:focus-visible{background:color-mix(in srgb, var(--c-surface) 70%, transparent)}}.social-links a:hover,.social-links a:focus-visible{transform:translateY(-2px)}.social-links a:active{transition-duration:var(--dur-tap);transform:translateY(0)}.social-links svg{width:1.05rem;height:1.05rem}.hero-socials{margin-left:-.6rem}.section-shell{scroll-margin-top:var(--nav-h);position:relative}#work-experience,#projects{scroll-margin-top:calc(var(--nav-h) + 1.5rem - clamp(3.5rem, 5.5vw, 5.5rem))}.section-shell--base{background:var(--c-base)}.section-shell--alternate,.section-shell--deep{background:var(--c-alt)}@supports (color:color-mix(in lab, red, red)){.section-shell--deep{background:color-mix(in srgb, var(--c-alt) 88%, var(--c-base))}}.section-shell--transparent{background:0 0}.site-section{padding-block:clamp(3.5rem,5.5vw,5.5rem) clamp(6rem,10vw,10rem)}.section-intro{max-width:52rem;margin-bottom:clamp(3.5rem,7vw,6.5rem)}.section-intro--minimal{margin-bottom:clamp(2.5rem,5vw,4rem)}.section-intro__title{letter-spacing:-.04em;margin:0;font-size:clamp(2.75rem,6vw,5.5rem);font-weight:750;line-height:.98}.section-intro__statement{max-width:61ch;color:var(--c-muted);margin:1.5rem 0 0;font-size:clamp(1.05rem,1.4vw,1.2rem);line-height:1.65}.build-intro{max-width:42rem}.build-layout{grid-template-columns:minmax(0,58%) minmax(0,42%);min-height:24rem;display:grid}#about .site-section{padding-block:clamp(2rem,3vw,3rem) clamp(3.5rem,6vw,6rem)}#about .section-intro{margin-bottom:clamp(2rem,3.5vw,3rem)}@media (width>=768px) and (height<=760px){.build-layout{min-height:18rem}#about .site-section{padding-block:1.5rem 2.5rem}#about .section-intro{margin-bottom:1.5rem}}.build-index{align-content:start;gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.build-index button{width:100%;color:inherit;text-align:left;cursor:pointer;transition:transform .25s var(--ease-out);background:0 0;border:0;gap:.45rem;padding:1.15rem .25rem;display:grid}.build-index button:hover{transform:translate(.35rem)}.build-index__title{letter-spacing:-.02em;font-size:clamp(1.35rem,2.3vw,1.8rem);font-weight:670;transition:color .25s}.build-index button:hover .build-index__title,.build-index button:focus-visible .build-index__title{color:var(--c-accent)}.build-index__summary{max-width:48ch;color:var(--c-muted);font-size:.93rem;line-height:1.45}.build-scene-guide{min-height:100%;position:relative}.skills-section{overflow:hidden}#skills .site-section{padding-block:clamp(2rem,3vw,3rem) clamp(3rem,5vw,5rem)}#skills .section-intro{margin-bottom:clamp(1.5rem,2.5vw,2.25rem)}#skills .section-intro__title{font-size:clamp(2rem,3.6vw,3.25rem)}.skills-stage{grid-template-columns:minmax(0,3fr) minmax(17rem,.85fr);align-items:center;gap:clamp(1.5rem,4vw,4rem);display:grid}@media (width>=1024px){#skills .site-section{max-width:min(100% - 4rem,100rem)}.skills-stage{grid-template-columns:minmax(0,4.2fr) minmax(15rem,1fr)}}.keyboard-frame{isolation:isolate;min-width:0;position:relative}.keyboard-frame__light{z-index:-1;background:var(--keyboard-halo);filter:blur(52px);border-radius:50%;position:absolute;inset:13% 4%}.keyboard-crop{width:100%;overflow:hidden}.keyboard-scene{width:100%;position:relative}.keyboard-loading{z-index:2;color:var(--c-muted);flex-direction:column;justify-content:center;align-items:center;gap:.75rem;font-size:.9rem;display:flex;position:absolute;inset:0}.keyboard-loading__spinner{border:2px solid var(--c-line);border-top-color:var(--c-accent);border-radius:50%;width:1.6rem;height:1.6rem;animation:.9s linear infinite spinner}@keyframes spinner{to{transform:rotate(360deg)}}.skill-context{border-radius:var(--radius-md);background:var(--c-raised);min-height:21rem;box-shadow:var(--shadow-small);flex-direction:column;justify-content:center;padding:clamp(1.4rem,3vw,2.25rem);display:flex}.skill-context__active{color:var(--c-accent);letter-spacing:-.035em;overflow-wrap:anywhere;margin:0;font-size:clamp(1.7rem,3vw,2.7rem);font-weight:700;line-height:1}@media (width>=1024px){.skill-context{min-height:16rem}}.skill-context__hint{color:var(--c-muted);margin:.85rem 0 0;font-size:.9rem;line-height:1.55}.skill-context h3{margin:1rem 0 .6rem;font-size:.95rem;font-weight:620}.skill-context ul{color:var(--c-muted);margin:0;padding:0;font-size:.84rem;list-style:none}.skill-context li{display:inline}.skill-context li:not(:last-child):after{content:" | ";color:var(--c-line)}.skill-context li.is-active{color:var(--c-fg);font-weight:650}.skill-context button{border:0;border-bottom:1px solid var(--c-accent);min-height:44px;color:var(--c-fg);cursor:pointer;background:0 0;align-self:flex-start;align-items:center;gap:.4rem;margin-top:1.25rem;display:inline-flex}.skill-context__clear svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;width:.85rem;height:.85rem}.contact-section{overflow:hidden}#contact{scroll-margin-top:calc(var(--nav-h) + 1rem - clamp(2.5rem, 4vw, 3.5rem))}#contact .site-section{padding-block:clamp(2.5rem,4vw,3.5rem) clamp(3rem,5vw,4.5rem)}#contact .section-intro{max-width:none;margin-bottom:0}.contact-intro{grid-column:1/-1}#contact .contact-form{margin-top:0}.contact-layout{grid-template-columns:1fr;align-items:center;gap:clamp(2rem,3.6vw,3.25rem) clamp(1.75rem,4vw,3.5rem);display:grid}@media (width>=1280px){#contact .site-section{max-width:min(100% - 2rem,108rem)}.contact-layout:not(.contact-layout--solo){grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);align-items:start}}.contact-copy{min-width:0;max-width:46rem;container-type:inline-size}.contact-form{gap:.85rem;margin-top:clamp(1.25rem,2.4vw,1.9rem);display:grid}.contact-form__row{gap:.85rem;display:grid}@container (width>=415px){.contact-form__row{grid-template-columns:1fr 1fr}}.contact-field{align-content:start;gap:.4rem;min-width:0;display:grid}.contact-field__label{color:var(--c-fg);font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.07em;font-size:.75rem;font-weight:500}.contact-input{border-radius:calc(var(--radius-sm) + 1px);background:var(--c-line);transition:background-color var(--dur-hover) ease, box-shadow var(--dur-hover) ease;padding:1px;position:relative}.contact-input:focus-within{background:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent)}@supports (color:color-mix(in lab, red, red)){.contact-input:focus-within{box-shadow:0 0 0 3px color-mix(in srgb, var(--c-accent) 28%, transparent)}}.contact-input__glow{border-radius:inherit;opacity:0;pointer-events:none;transition:opacity var(--dur-shift) ease;background:radial-gradient(115px circle at var(--glow-x,50%) var(--glow-y,50%), var(--c-accent), transparent 72%);position:absolute;inset:0}.contact-input:hover .contact-input__glow{opacity:1}@media (prefers-reduced-motion:reduce){.contact-input__glow{display:none}}.contact-field input,.contact-field textarea{z-index:1;border-radius:var(--radius-sm);background:var(--c-input);width:100%;min-height:46px;color:var(--c-fg);font:inherit;border:0;padding:.7rem .85rem;font-size:.92rem;display:block;position:relative}.contact-field textarea{resize:vertical;line-height:1.6}.contact-field input:focus-visible,.contact-field textarea:focus-visible{outline:none}.contact-field input::placeholder,.contact-field textarea::placeholder{color:var(--c-muted)}.contact-field__error{color:#e0526b;font-family:var(--font-sans);text-transform:none;letter-spacing:normal;align-items:flex-start;gap:.35rem;font-size:.78rem;font-weight:400;line-height:1.45;display:flex}.contact-field__error svg{flex:none;margin-top:.18em}.contact-form__honeypot{opacity:0;width:1px;height:1px;position:absolute;left:-9999px}.contact-form__privacy{color:var(--c-muted);margin:0;font-size:.8rem;line-height:1.55}.contact-form__actions{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-top:.25rem;display:flex}.contact-form__actions .button{flex:none}.contact-form__actions .button[disabled]{opacity:.6;cursor:progress}.contact-form__status{color:#e0526b;margin:0;font-size:.82rem;line-height:1.5}.contact-form--sent{gap:.5rem}.contact-form--sent p{color:var(--c-muted);margin:0;font-size:.95rem;line-height:1.6}.contact-form__success{font-weight:650;color:var(--c-fg)!important}.contact-form__reset{min-height:44px;color:var(--c-fg);font:inherit;cursor:pointer;background:0 0;border:0;justify-self:start;align-items:center;gap:.5rem;margin-top:.25rem;padding:0;font-weight:650;display:inline-flex}.contact-form__reset svg{transition:transform .25s}.contact-form__reset:hover{color:var(--c-accent)}.contact-form__reset:hover svg{transform:translate(3px)}@media (prefers-reduced-motion:reduce){.contact-form__reset svg{transition:none}}.contact-keyboard{isolation:isolate;min-width:0;position:relative}@media (width<=1279px){.contact-keyboard{margin-inline:-1rem}}.skills-disclosure{margin-top:clamp(2.75rem,4.5vw,4.25rem)}.skills-disclosure summary{min-height:64px;color:var(--c-fg);cursor:pointer;justify-content:space-between;align-items:center;font-weight:620;list-style:none;transition:color .25s;display:flex}.skills-disclosure summary:hover,.skills-disclosure summary:focus-visible{color:var(--c-accent)}.skills-disclosure summary::-webkit-details-marker{display:none}.skills-disclosure summary span{color:var(--c-accent);transition:rotate .3s var(--ease-out);font-size:1.4rem}.skills-disclosure[open] summary span{rotate:45deg}.skills-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:3rem 2rem;padding-block:1.5rem 1rem;display:grid}.skill-group h3{margin:0 0 1rem;font-size:.95rem}.skill-group ul{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.skill-token{background:var(--c-surface);border-radius:6px;align-items:center;gap:.45rem;min-height:34px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.skill-token{background:color-mix(in srgb, var(--c-surface) 78%, transparent)}}.skill-token{color:var(--c-fg);padding:.35rem .55rem;font-size:.76rem;transition:background-color .25s,color .25s,box-shadow .25s}.skill-token--active{background:var(--c-accent)}@supports (color:color-mix(in lab, red, red)){.skill-token--active{background:color-mix(in srgb, var(--c-accent) 14%, var(--c-surface))}}.skill-token--active{color:var(--c-fg);box-shadow:inset 0 0 0 1px var(--c-accent)}.skill-token__icon{background:#162231;border-radius:4px;place-items:center;width:1.15rem;height:1.15rem;display:grid}.skill-token__icon img{object-fit:contain;width:.82rem;height:.82rem}.experience-timeline{--marker:18px;--rail-x:50%;--node-top:calc(clamp(1.3rem, 3vw, 2rem) + 1.375rem);position:relative}.experience-rail__track{top:var(--node-top);bottom:0;left:var(--rail-x);background:var(--c-fg);border-radius:2px;width:2px;position:absolute;transform:translate(-50%)}@supports (color:color-mix(in lab, red, red)){.experience-rail__track{background:color-mix(in srgb, var(--c-fg) 13%, transparent)}}.experience-rail__fill{border-radius:inherit;background:var(--c-fg);box-shadow:0 0 12px var(--c-fg);position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){.experience-rail__fill{box-shadow:0 0 12px color-mix(in srgb, var(--c-fg) 40%, transparent)}}.experience-rail__fill{transform-origin:top;will-change:transform;transform:scaleY(0)}.experience-rail__fill--static{transform:none}.experience-rail{margin:0;padding:0;list-style:none;position:relative}.experience-rail>li:not(:last-child){margin-bottom:clamp(3rem,6vw,5rem)}.experience-entry{grid-template-columns:minmax(0,1fr) 3.5rem minmax(0,1fr);align-items:start;display:grid}.experience-entry__content{border-radius:var(--radius-md);background:var(--c-surface);width:min(100%,30rem);box-shadow:var(--shadow-small);transition:transform var(--dur-hover) var(--ease-out), box-shadow var(--dur-hover) ease;padding:clamp(1.3rem,3vw,2rem)}.experience-entry__content:hover{box-shadow:var(--shadow-medium);transform:translateY(-3px)}.experience-entry--left .experience-entry__content{grid-column:1;justify-self:end}.experience-entry--left .experience-entry__date{text-align:left;grid-column:3}.experience-entry--right .experience-entry__content{grid-column:3;justify-self:start}.experience-entry--right .experience-entry__date{text-align:right;grid-area:1/1}.experience-entry__date{margin-top:calc(var(--node-top) - .65rem);color:var(--c-muted);padding-inline:clamp(1rem,3vw,2rem);font-size:.9rem;line-height:1.45}.experience-entry__date span{display:block}.experience-entry__date span:first-child{color:var(--c-fg);font-weight:620}.experience-entry__date span:last-child{margin-top:.3rem}.experience-entry__node{z-index:1;margin-top:calc(var(--node-top) - var(--marker) / 2);grid-area:1/2;justify-content:center;align-self:start;display:flex;position:relative}.experience-entry__node span{width:var(--marker);height:var(--marker);background:var(--c-base);box-shadow:inset 0 0 0 2px var(--c-fg);border-radius:50%}@supports (color:color-mix(in lab, red, red)){.experience-entry__node span{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--c-fg) 26%, transparent)}}.experience-entry__node span{transition:transform var(--dur-shift) var(--ease-out), background-color var(--dur-shift) ease, box-shadow var(--dur-shift) ease;transform:scale(.5)}.experience-entry__node[data-active=true] span{background:var(--c-fg);box-shadow:0 0 0 5px var(--c-fg), 0 0 18px 3px var(--c-fg);transform:scale(1)}@supports (color:color-mix(in lab, red, red)){.experience-entry__node[data-active=true] span{box-shadow:0 0 0 5px color-mix(in srgb, var(--c-fg) 9%, transparent), 0 0 18px 3px color-mix(in srgb, var(--c-fg) 40%, transparent)}}.experience-entry__identity{align-items:center;gap:.9rem;display:flex}.experience-entry__identity img{object-fit:contain;background:#fff;border-radius:8px;flex:none;width:2.75rem;height:2.75rem;padding:.25rem}.experience-entry__identity h3{letter-spacing:-.025em;margin:0;font-size:clamp(1.35rem,2.3vw,2rem);line-height:1.1}.experience-entry__identity p{color:var(--c-accent);margin:.25rem 0 0;font-size:.92rem}.experience-entry__summary{color:var(--c-fg);margin:1.25rem 0 0;font-size:1rem;line-height:1.55}.experience-entry__details{margin-top:1.6rem}.experience-entry__details summary,.project-case__details summary{min-height:44px;color:var(--c-muted);cursor:pointer;justify-content:space-between;align-items:center;font-size:.9rem;font-weight:620;list-style:none;transition:color .25s;display:flex}.experience-entry__details summary:hover,.experience-entry__details summary:focus-visible,.project-case__details summary:hover,.project-case__details summary:focus-visible{color:var(--c-accent)}.experience-entry__details summary::-webkit-details-marker{display:none}.project-case__details summary::-webkit-details-marker{display:none}.experience-entry__details summary span,.project-case__details summary span{color:var(--c-accent);transition:rotate .25s var(--ease-out);font-size:1.25rem}.experience-entry__details[open] summary span,.project-case__details[open] summary span{rotate:45deg}.experience-entry__details ul{color:var(--c-muted);margin:0;padding:0 0 .25rem;list-style:none}.experience-entry__details li{padding-left:1rem;position:relative}.experience-entry__details li+li{margin-top:.65rem}.experience-entry__details li:before{content:"";background:var(--c-accent);border-radius:50%;width:4px;height:4px;position:absolute;top:.72em;left:0}.experience-entry__summary strong{color:var(--c-fg);font-weight:680}.experience-entry__details strong{color:var(--c-fg);font-weight:640}.projects-section .section-intro{margin-bottom:clamp(2.5rem,4vw,3.5rem)}.project-case{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(1.5rem,2.2vw,2.25rem) clamp(2rem,5vw,5rem);padding-block:clamp(3rem,6vw,5.5rem);display:grid}.project-case__header{align-self:center}.project-case__header h3{letter-spacing:-.04em;overflow-wrap:anywhere;margin:0;font-size:clamp(2.1rem,4.4vw,4.6rem);font-weight:690;line-height:1}.project-case__overview{max-width:57ch;color:var(--c-muted);margin:1.5rem 0 0;font-size:1.02rem}.project-case--reverse .project-case__header{grid-column:2}.project-case--reverse .project-media{grid-area:1/1}.project-media{--media-gutter:3.25rem;--media-zoom:1.2;min-width:0;width:calc(100% / var(--media-zoom));align-self:center;margin-inline:auto;position:relative}@media (hover:none),(pointer:coarse){.project-media{--media-zoom:1}}.project-media__stage{padding-inline:var(--media-gutter);position:relative}.project-media__frame{aspect-ratio:var(--media-ratio,1.6);border-radius:var(--radius-md);position:relative;overflow:hidden}.project-media[data-frame=device]{width:min(calc(100% / var(--media-zoom)), calc(min(70vh, 30rem) * var(--media-ratio,.6) + 2 * var(--media-gutter)))}.project-media__frame img{object-fit:contain;object-position:center;width:100%;height:100%;display:block;position:absolute;inset:0}@media (hover:hover){.project-media{transition:transform .45s var(--ease-out)}.project-media:has(.project-media__frame:hover){z-index:2;transform:scale(var(--media-zoom))}}@media (prefers-reduced-motion:reduce){.project-media:has(.project-media__frame:hover){transform:none}}.project-media--pending{isolation:isolate;border-radius:var(--radius-md);background:radial-gradient(circle at 72% 25%, var(--c-accent), transparent 38%), var(--c-surface);align-items:flex-end;min-height:clamp(18rem,32vw,28rem);padding:clamp(1.4rem,3vw,2.4rem);display:flex;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.project-media--pending{background:radial-gradient(circle at 72% 25%, color-mix(in srgb, var(--c-accent) 14%, transparent), transparent 38%), var(--c-surface)}}.project-media--pending:before{content:"";z-index:-1;border:1px solid var(--c-line);border-radius:10px;position:absolute;inset:12% 9%}.project-media__index{z-index:-1;color:var(--c-fg);position:absolute;top:-.05em;right:.04em}@supports (color:color-mix(in lab, red, red)){.project-media__index{color:color-mix(in srgb, var(--c-fg) 8%, transparent)}}.project-media__index{letter-spacing:-.08em;font-size:clamp(8rem,18vw,17rem);font-weight:800;line-height:.8}.project-media__pending-copy{max-width:25rem}.project-media__pending-copy span{color:var(--c-fg);font-weight:640}.project-media__pending-copy p{color:var(--c-muted);margin:.5rem 0 0;font-size:.84rem}.project-media__nav{z-index:3;width:40px;height:40px;color:var(--c-muted);cursor:pointer;transition:color .2s ease, transform .15s var(--ease-out);background:0 0;border:0;border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;translate:0 -50%}.project-media__nav:before{content:"";background:var(--c-accent);border-radius:50%;position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){.project-media__nav:before{background:color-mix(in srgb, var(--c-accent) 14%, transparent)}}.project-media__nav:before{opacity:0;transition:opacity .2s ease, scale .2s var(--ease-out);scale:.6}.project-media__nav svg{width:20px;height:20px;position:relative}.project-media__nav--prev{left:0}.project-media__nav--next{right:0}.project-media__nav--next svg{scale:-1 1}.project-media__nav:hover,.project-media__nav:focus-visible{color:var(--c-accent)}.project-media__nav:hover:before,.project-media__nav:focus-visible:before{opacity:1;scale:1}.project-media__nav:active{transform:scale(.92)}.project-media__dots{justify-content:center;align-items:center;gap:.15rem;margin:.3rem 0 0;padding:0;list-style:none;display:flex}.project-media__dots button{cursor:pointer;background:0 0;border:0;place-items:center;width:28px;min-width:28px;height:28px;padding:0;display:grid}.project-media__dots button:before{content:"";background:var(--c-line);width:7px;height:7px;transition:background .25s ease, scale .25s var(--ease-out);border-radius:50%}.project-media__dots button:hover:before{background:var(--c-muted)}.project-media__dots button.is-active:before{background:var(--c-accent);scale:1.15}.project-case__body{grid-column:1/-1;gap:1.25rem;display:grid}.project-case__stack{min-width:0}.project-case__stack ul{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.project-case__details{margin-top:.35rem}.project-case__details-content{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem clamp(1.5rem,4vw,4rem);padding:.75rem 0 .5rem;display:grid}.project-case__details-content h4{color:var(--c-fg);margin:0 0 .55rem;font-size:.95rem;font-weight:650}.project-case__details-content p{color:var(--c-muted);margin:0}.project-case__details-content ol,.project-case__details-content ul{color:var(--c-muted);margin:0;padding:0;list-style:none}.project-case__details-content ol{counter-reset:project-approach}.project-case__details-content ol li{counter-increment:project-approach;grid-template-columns:1.5rem minmax(0,1fr);align-items:baseline;gap:.45rem;display:grid}.project-case__details-content ol li:before{content:counter(project-approach);color:var(--c-accent);font-weight:650}.project-case__details-content li+li{margin-top:.5rem}.project-case__details-content ul li{padding-left:1rem;position:relative}.project-case__details-content ul li:before{content:"";background:var(--c-warm);border-radius:50%;width:4px;height:4px;position:absolute;top:.72em;left:0}.project-case__overview strong{color:var(--c-fg);font-weight:680}.project-case__details-content strong{color:var(--c-fg);font-weight:640}.project-case__impact{grid-column:1/-1;margin:0;padding-top:.35rem;font-size:1rem;color:var(--c-fg)!important}.project-case__links{grid-column:1/-1;gap:1rem;display:flex}.project-case__links a{border-bottom:1px solid var(--c-accent);align-items:center;gap:.35rem;min-height:44px;font-weight:620;display:inline-flex}.site-footer{color:#f4f7fa;background:#070b12;position:relative}.site-footer__inner{width:min(100% - 2rem, var(--content));margin-inline:auto;padding-block:1.4rem}.site-footer__base{color:#9aa9b8;font-family:var(--font-mono);grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;font-size:.68rem;display:grid}.site-footer__base p{color:#f4f7fa;margin:0;font-size:.92rem}.site-footer__socials a{color:#f4f7fa}.site-footer__socials a:hover,.site-footer__socials a:focus-visible{color:#f4f7fa;background:#ffffff14}@media (width<=1023px){.hero-composition{text-align:center;grid-template-rows:auto minmax(17rem,40svh) auto auto;grid-template-columns:1fr;padding-top:clamp(3.5rem,8vh,5.5rem)}.hero-heading,.hero-support,.hero-scene-space{grid-column:1}.hero-heading{grid-row:1}.hero-scene-space{grid-row:2;min-height:17rem}.hero-support{grid-row:3;margin:0 auto}.hero-copy{margin-inline:auto}.hero-actions{justify-content:center}.hero-metadata{text-align:left}.scene-atmosphere{background:radial-gradient(circle at 50% 38%, var(--scene-halo), transparent 30%)}.scene-fallback__orb{width:min(58vw,20rem);top:40%;left:50%}.build-layout{grid-template-columns:1fr;min-height:0}.build-scene-guide{display:none}.skills-stage{grid-template-columns:1fr}.skill-context{max-width:42rem;min-height:auto;margin-inline:auto}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-case{grid-template-columns:1fr}.project-case--reverse .project-case__header,.project-case--reverse .project-media{grid-area:auto/1}.project-media{width:min(calc(100% / var(--media-zoom)), calc(70vh * var(--media-ratio,1.6) + 2 * var(--media-gutter)))}.project-case__body{grid-template-columns:1fr}.project-case__details-content{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=767px){.project-media{--media-gutter:2.4rem}.project-media__nav{width:34px;height:34px}.project-media__nav svg{width:17px;height:17px}.nav-sections{display:none}.menu-toggle{display:inline-flex}.hero-section{width:min(100% - 2rem,42rem)}.hero-title{font-size:clamp(2rem,8vw,2.5rem)}.hero-metadata{grid-template-columns:auto minmax(0,1fr);column-gap:1rem}.site-section{padding-block:clamp(3rem,12vw,4rem) clamp(5rem,20vw,7rem)}.section-intro{margin-bottom:3rem}.section-intro__title{font-size:clamp(2.6rem,13vw,4rem)}.build-index button{padding:1.2rem 0}.keyboard-frame{margin-inline:-1rem}.skill-context{border-radius:10px}.skills-grid{grid-template-columns:1fr;gap:2.35rem}.experience-timeline{--marker:15px;--rail-x:7.5px;--node-top:.65rem}.experience-entry{grid-template-columns:1.35rem minmax(0,1fr);gap:.65rem}.experience-entry__date,.experience-entry--left .experience-entry__date,.experience-entry--right .experience-entry__date{text-align:left;grid-area:1/2;margin-top:0;padding:0 0 .65rem}.experience-entry__date span:first-child,.experience-entry__date span:last-child{display:inline}.experience-entry__date span:last-child:before{content:" | "}.experience-entry__node{grid-area:1/1/3;justify-content:flex-start}.experience-entry__content,.experience-entry--left .experience-entry__content,.experience-entry--right .experience-entry__content{grid-area:2/2;justify-self:stretch;width:100%}.experience-entry__identity{align-items:flex-start}.experience-entry__identity h3{font-size:1.35rem}.project-case{gap:2rem;padding-block:3.75rem}.project-case__header h3{font-size:clamp(2rem,10vw,3.4rem)}.project-media--pending{min-height:18rem}.project-case__body,.project-case__details-content{grid-template-columns:1fr}.hero-socials{border-left:0;margin-left:0;padding-left:0}.site-footer__base{grid-template-columns:1fr auto}.site-footer__socials{margin-right:-.55rem}}@media (width<=374px){.hero-actions .button{width:100%}.hero-title{font-size:2rem}.project-media--pending{padding:1rem}.project-media{--media-gutter:2rem}.project-media__nav{width:30px;height:30px}.project-media__nav svg{width:15px;height:15px}}.cursor{z-index:9999;mix-blend-mode:difference;pointer-events:none;opacity:1;will-change:transform, width, height;background:#fff;place-items:center;width:38px;height:38px;transition:opacity .25s;display:grid;position:fixed;top:0;left:0}.cursor--away{opacity:0}.cursor__dot{mix-blend-mode:difference;width:6px;height:6px;transition:scale .25s var(--ease-out), opacity .2s ease;background:#fff;border-radius:50%}.cursor--snapped .cursor__dot{opacity:0;scale:0}body.has-cursor,body.has-cursor *{cursor:none!important}@media (hover:none),(pointer:coarse){.button:hover{transform:none}.social-links a:hover{background:0 0;transform:none}.experience-entry__content:hover{box-shadow:var(--shadow-small);transform:none}.nav-links a:hover:not(.is-active){color:var(--c-fg);background:0 0}.cursor{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.star-drift-1,.star-drift-2,.star-drift-3{animation:none}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@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-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}
