:root{--primitive-black: #000000;--primitive-white: #ffffff;--primitive-white-texture: #f2f2f2;--primitive-charcoal: #272727;--primitive-orange: #ff6a18;--primitive-orange-lt: #ff894a;--primitive-coral: #fd7249;--primitive-yellow: #fcffba;--primitive-yellow-lt: #fdffdd;--primitive-teal: #4399a2;--primitive-deep-teal: #45787e;--primitive-aqua: #93f5ff;--primitive-ice-blue: #d5fbff;--primitive-olive: #a4b50f;--primitive-neutral-50: #f9f9f9;--primitive-neutral-100: #f4f4f4;--primitive-neutral-200: #e4e4e4;--primitive-neutral-300: #d9d9d9;--primitive-neutral-400: #c0c0c0;--primitive-neutral-600: #6d6d6d;--primitive-neutral-700: #5d5d5d;--primitive-neutral-800: #3d3d3d;--primitive-neutral-900: #272727;--primitive-font-display: "Saira", system-ui, sans-serif;--primitive-font-body: "Plus Jakarta Sans", system-ui, sans-serif;--primitive-font-mono: "VT323", "DM Mono", monospace;--primitive-size-h1: clamp(2rem, 4vw, 2.5rem);--primitive-size-h2: clamp(1.5rem, 3vw, 2rem);--primitive-size-h3: clamp(1.125rem, 2vw, 1.5rem);--primitive-size-h4: clamp(1rem, 1.5vw, 1.25rem);--primitive-size-body: 1rem;--primitive-size-label: clamp(.8125rem, .9vw, .875rem);--primitive-size-caption: clamp(.6875rem, .8vw, .75rem);--primitive-size-button: clamp(.875rem, 1vw, 1rem);--primitive-size-ticker: clamp(1.5rem, 4vw, 2.5rem);--primitive-lh-tight: 1.1;--primitive-lh-heading: 1.3;--primitive-lh-body: 1.5;--primitive-lh-relaxed: 1.65;--primitive-lh-loose: 2;--primitive-ls-tight: -.02em;--primitive-ls-body: .03em;--primitive-ls-meta: .06em;--primitive-ls-display: .08em;--primitive-space-4xs: .125rem;--primitive-space-3xs: .25rem;--primitive-space-2xs: .5rem;--primitive-space-xs: .75rem;--primitive-space-sm: 1rem;--primitive-space-md: 1.5rem;--primitive-space-lg: 2rem;--primitive-space-xl: 3rem;--primitive-space-2xl: 4rem;--primitive-space-3xl: 5rem;--primitive-space-4xl: 6rem;--primitive-space-5xl: 7.5rem;--primitive-space-6xl: 10rem;--primitive-space-7xl: 12.5rem;--primitive-radius-sm: .25rem;--primitive-radius-md: .5rem;--primitive-radius-mdlg: .8rem;--primitive-radius-lg: 1rem;--primitive-radius-xl: 1.5rem;--primitive-radius-2xl: 1.875rem;--primitive-radius-full: 50px;--primitive-ease-out-quart: cubic-bezier(.25, 1, .5, 1);--primitive-ease-out-expo: cubic-bezier(.16, 1, .3, 1);--primitive-ease-spring: cubic-bezier(.175, .885, .32, 1.1);--primitive-ease-emphasized: cubic-bezier(.4, 0, .2, 1)}:root{--font-display: var(--primitive-font-display);--font-body: var(--primitive-font-body);--font-mono: var(--primitive-font-mono);--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--font-size-h1: var(--primitive-size-h1);--font-size-h2: var(--primitive-size-h2);--font-size-h3: var(--primitive-size-h3);--font-size-h4: var(--primitive-size-h4);--font-size-body: var(--primitive-size-body);--font-size-label: var(--primitive-size-label);--font-size-caption: var(--primitive-size-caption);--font-size-button: var(--primitive-size-button);--font-size-ticker: var(--primitive-size-ticker);--lh-tight: var(--primitive-lh-tight);--lh-heading: var(--primitive-lh-heading);--lh-body: var(--primitive-lh-body);--lh-relaxed: var(--primitive-lh-relaxed);--lh-loose: var(--primitive-lh-loose);--lh-label: var(--primitive-lh-heading);--ls-tight: var(--primitive-ls-tight);--ls-body: var(--primitive-ls-body);--ls-meta: var(--primitive-ls-meta);--ls-display: var(--primitive-ls-display);--color-bg-white: var(--primitive-white);--color-bg-page: var(--primitive-neutral-900);--color-bg-surface: var(--primitive-white-texture);--color-bg-subtle: var(--primitive-neutral-50);--color-bg-card: var(--primitive-neutral-100);--color-bg-dark: var(--primitive-neutral-900);--color-text-primary: #252525;--color-text-secondary: #3a3a3a;--color-text-body: #3a3a3a;--color-text-muted: #7d7d7d;--color-text-disabled: var(--primitive-neutral-400);--color-text-inverse: var(--primitive-white);--color-text-on-dark: var(--primitive-white);--color-text-on-dark-accent: var(--primitive-orange);--color-text-on-dark-subtle: rgba(255, 255, 255, .4);--color-text-on-dark-faint: rgba(255, 255, 255, .3);--color-text-on-accent: var(--primitive-black);--color-border: var(--primitive-neutral-200);--color-border-light: var(--primitive-neutral-300);--color-border-focus: var(--primitive-teal);--color-border-on-dark: rgba(255, 255, 255, .2);--color-neutral-50: var(--primitive-neutral-50);--color-neutral-100: var(--primitive-neutral-100);--color-neutral-200: var(--primitive-neutral-200);--color-neutral-300: var(--primitive-neutral-300);--color-neutral-400: var(--primitive-neutral-400);--color-neutral-600: var(--primitive-neutral-600);--color-neutral-700: var(--primitive-neutral-700);--color-neutral-800: var(--primitive-neutral-800);--color-neutral-900: var(--primitive-neutral-900);--color-accent: var(--primitive-orange);--color-accent-light: var(--primitive-orange-lt);--color-accent-hover: var(--primitive-coral);--color-accent-yellow: var(--primitive-yellow);--color-accent-yellow-light: var(--primitive-yellow-lt);--color-accent-teal: var(--primitive-teal);--color-accent-teal-hover: var(--primitive-deep-teal);--color-accent-aqua: var(--primitive-aqua);--color-accent-ice: var(--primitive-ice-blue);--color-accent-olive: var(--primitive-olive);--color-button-bg: #1a1a1a;--color-button-text: var(--primitive-white);--color-button-hover: #333333;--opacity-hover: .7;--space-4xs: var(--primitive-space-4xs);--space-3xs: var(--primitive-space-3xs);--space-2xs: var(--primitive-space-2xs);--space-xs: var(--primitive-space-xs);--space-sm: var(--primitive-space-sm);--space-md: var(--primitive-space-md);--space-lg: var(--primitive-space-lg);--space-xl: var(--primitive-space-xl);--space-2xl: var(--primitive-space-2xl);--space-3xl: var(--primitive-space-3xl);--space-4xl: var(--primitive-space-4xl);--space-5xl: var(--primitive-space-5xl);--space-6xl: var(--primitive-space-6xl);--space-7xl: var(--primitive-space-7xl);--radius-sm: var(--primitive-radius-sm);--radius-md: var(--primitive-radius-md);--radius-mdlg: var(--primitive-radius-mdlg);--radius-lg: var(--primitive-radius-lg);--radius-xl: var(--primitive-radius-xl);--radius-2xl: var(--primitive-radius-2xl);--radius-full: var(--primitive-radius-full);--ease-out-quart: var(--primitive-ease-out-quart);--ease-out-expo: var(--primitive-ease-out-expo);--duration-fast: .2s;--duration-base: .3s;--duration-slow: .4s;--duration-slower: .5s;--duration-enter-sm: .7s;--duration-enter-md: .9s;--duration-enter-lg: 1s;--duration-enter-xl: 1.3s;--transition-fast: var(--duration-base) ease;--transition-default: var(--duration-slow) var(--primitive-ease-spring);--transition-slow: var(--duration-slower) var(--primitive-ease-spring);--transition-expand: .8s var(--primitive-ease-emphasized);--motion-nudge-xs: 1px;--motion-nudge-sm: 2px;--motion-nudge-md: 3px;--motion-inline-nudge-sm: .4rem;--motion-inline-nudge-md: .6rem;--motion-enter-y-sm: 1.25rem;--motion-enter-y-md: 1.5rem;--motion-enter-y-lg: 2.5rem;--motion-enter-y-xl: 3.5rem;--motion-page-enter-y: 1.125rem;--motion-page-settle-y: .125rem;--z-base: 1;--z-raised: 10;--z-sidebar: 50;--z-navbar: 100;--z-modal: 200;--z-overlay: 9999;--max-width: 75rem;--content-padding: var(--space-xl);--page-edge: 4vw;--page-edge-tablet: 4vw;--page-edge-home: 4vw;--footer-reveal-height: 50vh;--logo-pill-size: 4rem;--icon-btn-size: 3rem;--icon-size-xs: .8rem;--icon-size-sm: 1.25rem;--icon-size-md: 1rem;--icon-size-lg: 1.5rem;--control-height-md: 2.5rem;--touch-target: 44px;--carousel-stage-top: 2vh;--carousel-stage-height: 65vh;--hero-bottom-offset: 2%;--surface-bg: rgba(250, 250, 250, .8);--surface-border: 2px solid rgb(235, 235, 235);--surface-shadow: inset 0 3px 3px rgba(74, 74, 74, .4), inset 0 6px 8px rgba(200, 200, 200, .2), inset 0 -1px 2px rgba(175, 175, 175, .3);--card-shadow: inset 0 3px 2px rgba(179, 179, 179, .3), inset 0 6px 8px rgba(27, 20, 20, .3), inset 0 -6px 8px rgba(180, 180, 180, .3), inset 0 -3px 2px rgba(136, 136, 136, .3);--item-border: 1px solid rgb(210, 210, 210);--item-drop-shadow: 0 3px 2px rgba(3, 3, 3, .15), 0 3px 12px rgba(141, 141, 141, .25);--overlay-bg: rgba(205, 204, 204, .5);--overlay-backdrop: blur(15px);--overlay-border: 1px solid rgba(255, 255, 255, .5);--overlay-radius: var(--radius-lg);--overlay-scrim-strong: rgba(0, 0, 0, .6);--blur-sm: blur(2px);--blur-md: blur(4px);--blur-lg: blur(6px);--blur-xl: blur(10px);--blur-gate: var(--blur-lg);--nav-bg: rgba(239, 239, 239, .7);--nav-border: 1px solid rgb(255, 255, 255);--nav-shadow: inset 0 2px 2px rgba(255, 255, 255, .4), inset 0 6px 8px rgba(255, 255, 255, .3), inset 0 -4px 4px rgba(239, 239, 239, .2);--nav-drop-shadow: 0 2px 2px rgba(0, 0, 0, .15), 0 5px 15px rgba(47, 47, 47, .2);--nav-chip-bg: rgba(215, 215, 215, 0);--nav-chip-shadow: inset 0 4px 2px rgba(152, 152, 152, .4), inset 0 6px 8px rgba(174, 174, 174, .3), inset 0 -6px 4px rgba(231, 231, 231, .25);--nav-chip-focus-shadow: inset 0 4px 2px rgba(111, 50, 7, .287), inset 0 6px 8px rgba(255, 244, 239, .455), inset 0 -6px 4px rgba(79, 28, 0, .167);--sidebar-width: 12rem;--sidebar-bottom: 3%;--sidebar-bg-expanded: rgba(231, 231, 231, .8);--sidebar-bg-collapsed: rgba(0, 0, 0, .05);--sidebar-text-color: rgb(160, 160, 160);--dot-size: 5px;--dot-offset: 10px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:100%;scroll-behavior:smooth;-webkit-text-size-adjust:100%;overscroll-behavior:none}body{font-family:var(--font-body);font-size:var(--font-size-body);font-weight:var(--fw-regular);line-height:var(--lh-body);color:var(--color-text-body);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body:after{content:"";position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.68' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23g)'/%3E%3C/svg%3E");background-size:300px 300px;background-repeat:repeat}img,video,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none;font-family:inherit}ul,ol{list-style:none}input,textarea,select{font-family:inherit;font-size:inherit}.page-transition-wrapper{position:relative;z-index:1;background-color:var(--color-bg-surface);transform-origin:50% 0%;animation:pageEnter .52s cubic-bezier(.16,1,.3,1);min-height:100dvh}.page-skeleton{min-height:100dvh}body.page-transitioning .footer,body.page-transitioning .project-next{opacity:0;transition:none}@keyframes pageEnter{0%{opacity:0;transform:translate3d(0,var(--motion-page-enter-y),0) scale(.995);filter:var(--blur-xl)}55%{opacity:1;transform:translate3d(0,var(--motion-page-settle-y),0) scale(1);filter:var(--blur-sm)}to{opacity:1;transform:translateZ(0) scale(1);filter:blur(0)}}@media(prefers-reduced-motion:reduce){.page-transition-wrapper{animation:none;will-change:auto}.work-item__title,.work-item__index,.footer__email,.footer__link,.about-photo img,.navbar__links li a,.sound-toggle,.prj-modal__close svg{transition:none}}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:var(--fw-medium);line-height:var(--lh-heading);color:var(--color-text-primary)}h1{font-size:var(--font-size-h1)}h2{font-size:var(--font-size-h2)}h3{font-size:var(--font-size-h3)}h4{font-size:var(--font-size-h4)}h5{font-size:var(--font-size-label)}h6{font-size:var(--font-size-caption)}p{font-size:var(--font-size-body);line-height:var(--lh-body);color:var(--color-text-body)}small,.caption{font-size:var(--font-size-caption);line-height:var(--lh-heading);color:var(--color-text-muted)}label,.label{font-size:var(--font-size-label);font-weight:var(--fw-medium);line-height:var(--lh-heading)}.container{width:100%;max-width:var(--max-width);margin-inline:auto;padding-inline:var(--content-padding)}.section{padding-block:var(--space-6xl)}@media(max-width:48rem){.section{padding-block:var(--space-4xl)}}:focus-visible{outline:.125rem solid var(--color-border-focus);outline-offset:.1875rem;border-radius:var(--radius-sm)}@keyframes blurUp{0%{opacity:0;transform:translateY(var(--motion-enter-y-md));filter:var(--blur-md)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.navbar__links li a[aria-current=page]{color:var(--color-accent)}.section-label{font-family:var(--font-display);font-size:var(--font-size-caption);font-weight:var(--fw-medium);letter-spacing:var(--ls-display);text-transform:uppercase;color:var(--color-text-muted)}:is(.about-heading,.project__header-title,.prj-modal__title,.project-next__title,.work-header__title,.notfound-heading){font-family:var(--font-display);font-weight:var(--fw-semibold);letter-spacing:var(--ls-tight);line-height:var(--lh-tight);color:var(--color-text-primary)}.tag,.project-meta__tag{display:inline-block;font-family:var(--font-body);font-weight:var(--fw-semibold);font-size:var(--font-size-label);letter-spacing:var(--ls-body);background:var(--color-accent-yellow-light);border-radius:var(--radius-md);padding:var(--space-2xs) var(--space-sm);color:var(--color-text-primary)}:is(.footer__connect,.footer__eyebrow,.notfound-code,.prj-modal__meta-label,.project-meta__detail-label,.project-next__eyebrow,.skill-card__label,.work-header__eyebrow){font-size:var(--font-size-caption);font-weight:var(--fw-medium);letter-spacing:var(--ls-meta);text-transform:uppercase}:is(.about-bio p,.notfound-body,.project-section__body,.project-tech-stack__body,.work-item__description){font-family:var(--font-body);color:var(--color-text-secondary);line-height:var(--lh-relaxed);letter-spacing:var(--ls-body)}:is(.project__header-description,.prj-modal__description){font-family:var(--font-body);font-weight:var(--fw-medium);font-size:var(--font-size-h4);color:var(--color-text-primary);line-height:var(--lh-body);letter-spacing:var(--ls-body)}:is(.project-meta__detail,.prj-modal__meta-item,.skill-card){display:flex;align-items:baseline;gap:var(--meta-surface-gap, var(--space-md));padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);background-color:var(--meta-surface-bg, var(--color-bg-white))}:is(.project-meta__detail,.skill-card){--meta-surface-bg: var(--color-bg-white)}.prj-modal__meta-item{--meta-surface-bg: var(--color-neutral-200);--meta-surface-gap: var(--space-sm)}:is(.prj-modal__meta-value,.project-meta__detail-value,.skill-card__list li){font-family:var(--font-body);font-size:var(--font-size-label);font-weight:var(--fw-medium);letter-spacing:var(--ls-body);color:var(--color-text-primary)}:is(.about-photo img,.application__image img,.prj-modal__hero-img,.project-hero img,.project-hero video,.work-item__image img,.work-item__image-placeholder){width:100%;height:100%;object-fit:cover;display:block}.link-arrow{display:inline-flex;align-items:center;gap:var(--space-xs);font-family:var(--font-body);font-size:var(--font-size-body);color:var(--color-text-primary);transition:gap var(--duration-base) var(--ease-out-expo),opacity var(--duration-base) ease}.link-arrow:hover{gap:var(--space-sm);opacity:var(--opacity-hover)}.link-arrow svg{transition:transform var(--duration-base) var(--ease-out-expo);flex-shrink:0}.link-arrow:hover svg{transform:translate(var(--motion-inline-nudge-sm))}.link-arrow:active{opacity:.7;transform:scale(.97);transition-duration:80ms}.reveal{opacity:0;transform:translateY(var(--motion-enter-y-md));transition:opacity .65s var(--ease-out-quart),transform .65s var(--ease-out-quart)}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal-stagger>*{opacity:0;transform:translateY(var(--space-sm));transition:opacity .5s var(--ease-out-quart),transform .5s var(--ease-out-quart)}.reveal-stagger.is-visible>*{opacity:1;transform:translateY(0)}.reveal-stagger.is-visible>*:nth-child(1){transition-delay:0ms}.reveal-stagger.is-visible>*:nth-child(2){transition-delay:80ms}.reveal-stagger.is-visible>*:nth-child(3){transition-delay:.16s}.reveal-stagger.is-visible>*:nth-child(4){transition-delay:.24s}.reveal-stagger.is-visible>*:nth-child(5){transition-delay:.32s}.reveal-stagger.is-visible>*:nth-child(6){transition-delay:.4s}.reveal-stagger.is-visible>*:nth-child(n+7){transition-delay:.48s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal,.reveal-stagger>*{opacity:1;transform:none;transition:none}}.navbar{position:fixed;bottom:var(--space-md);left:50%;transform:translate(-50%);z-index:var(--z-navbar);display:flex;align-items:center;gap:var(--space-xs)}.navbar__logo,.navbar__inner{background:var(--nav-bg);border-radius:var(--radius-lg);box-shadow:var(--nav-shadow),var(--nav-drop-shadow);border:var(--nav-border);backdrop-filter:var(--overlay-backdrop);-webkit-backdrop-filter:var(--overlay-backdrop)}.navbar__logo{width:var(--logo-pill-size);height:auto;align-self:stretch;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;position:relative;font-size:0;transition:background-color var(--duration-fast) var(--ease-out-expo),transform .15s ease}.navbar__logo.is-active{background-color:var(--color-accent);box-shadow:var(--nav-shadow),var(--nav-drop-shadow),var(--nav-chip-focus-shadow)}.navbar__logo.is-active:hover{transform:translateY(calc(-1 * var(--motion-nudge-md)))}.navbar__logo.is-active p{color:var(--primitive-white)}.navbar__logo:hover{background-color:var(--color-accent)}.navbar__logo p{font-family:var(--font-mono);font-size:3.5rem;color:var(--color-accent);font-weight:var(--fw-medium);padding:0 var(--space-2xs) .5rem;line-height:1;transition:color var(--duration-fast) var(--ease-out-expo)}.navbar__logo:hover p{color:var(--primitive-white);animation:logo-hop .32s var(--ease-out-expo)}@keyframes logo-hop{0%{transform:translateY(0)}35%{transform:translateY(calc(-1 * var(--motion-nudge-sm)))}65%{transform:translateY(var(--motion-nudge-xs))}to{transform:translateY(0)}}.navbar__inner{display:flex;align-items:center;gap:var(--space-lg);padding:var(--space-xs) var(--space-md)}.navbar__greeting{font-family:var(--font-display);font-size:var(--font-size-label);font-weight:var(--fw-medium);color:var(--color-text-primary);white-space:nowrap}.navbar__links{display:flex;gap:var(--space-xs);list-style:none}.navbar__links li a{display:inline-flex;align-items:center;padding:var(--space-2xs) var(--space-md);border-radius:var(--radius-lg);background-color:var(--nav-chip-bg);border:var(--nav-border);box-shadow:var(--nav-chip-shadow);backdrop-filter:var(--overlay-backdrop);-webkit-backdrop-filter:var(--overlay-backdrop);white-space:nowrap;font-family:var(--font-mono);font-weight:var(--fw-medium);color:var(--color-text-primary);transition:background-color .2s ease,color .2s ease,transform .15s ease,box-shadow .15s ease}.navbar__links li a:hover{background-color:var(--color-accent);color:var(--color-text-inverse);box-shadow:var(--nav-chip-shadow);transform:translateY(-2px)}.navbar__links li a:active{transform:translateY(0) scale(.96);transition-duration:80ms}.navbar__links li a:active{transform:translateY(var(--motion-nudge-xs));box-shadow:none}.navbar__links li a span{display:inline-block}.navbar__links li a:hover span{animation:logo-hop .32s var(--ease-out-expo)}.navbar__links li a[aria-current=page]{background-color:var(--color-accent);color:var(--primitive-white);box-shadow:var(--nav-chip-focus-shadow);transition:background-color .2s ease,color .2s ease,transform .15s ease,box-shadow .15s ease}.navbar__links li a[aria-current=page]:hover{transform:translateY(calc(-1 * var(--motion-nudge-sm)))}@media(max-width:48em){.navbar__greeting{display:none}.navbar__inner{gap:var(--space-xs);padding:var(--space-xs) var(--space-sm)}.navbar__links li a{padding:var(--space-xs) var(--space-sm);min-height:44px}.navbar__logo{width:3.25rem}}.footer{position:sticky;bottom:0;z-index:0;background-color:var(--color-bg-page);padding:var(--space-2xl) var(--page-edge);display:flex;flex-direction:column;gap:var(--space-xl);overflow:hidden;height:80vh;opacity:0;transition:opacity .45s var(--ease-out-expo)}.footer.is-ready{opacity:1}.footer:after{content:"";position:absolute;inset:0;background:#000;opacity:var(--footer-overlay, .85);transition:opacity .2s ease;pointer-events:none;z-index:10}.footer__top{display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-xs)}.footer__connect{font-family:var(--font-body);font-size:var(--font-size-body);color:var(--color-text-on-dark-subtle)}.footer__email{font-family:var(--font-display);font-size:8.5rem;font-weight:var(--fw-semibold);color:var(--color-neutral-400);transition:color .3s var(--ease-out-expo),transform .4s var(--ease-out-expo);display:inline-block}.footer__email:hover{color:var(--color-accent);transform:translateY(-5px)}.footer__socials{width:100%;display:flex;justify-content:space-between}.footer__link{font-family:var(--font-display);font-size:var(--font-size-h4);letter-spacing:var(--ls-body);color:var(--color-text-on-dark-subtle);transition:color .25s var(--ease-out-expo),transform .25s var(--ease-out-expo);display:inline-block}.footer__link:hover{color:var(--color-text-inverse);transform:translateY(-3px)}.footer__bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-md);margin-top:8rem}.footer__bottom__left{display:flex;flex-direction:column}.footer__copy{font-family:var(--font-display);font-size:var(--font-size-body);line-height:var(--lh-body);color:var(--color-neutral-600)}@media(max-width:64em){.footer__email{font-size:clamp(2.5rem,6vw,5rem)}}@media(max-width:48em){.footer{padding:var(--space-xl) var(--space-md);gap:var(--space-lg)}.footer__email{font-size:var(--font-size-h3)}.footer__copy{font-size:var(--font-size-label)}}@media(max-width:36em){.footer__bottom{flex-direction:column;align-items:flex-start;gap:var(--space-md)}}.project-next{position:sticky;bottom:0;z-index:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:var(--space-lg);min-height:100vh;padding:var(--page-edge);overflow:hidden;cursor:pointer;text-decoration:none;background-color:var(--color-bg-page);opacity:0;transition:opacity .45s var(--ease-out-expo)}.project-next.is-ready{opacity:1}.project-next__scrim{position:absolute;inset:0;z-index:10;background:#000;opacity:var(--project-next-overlay, .85);transition:opacity .2s ease;pointer-events:none}.project-next__media{position:absolute;inset:0;z-index:0}.project-next__media img,.project-next__media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}.project-next__media video{opacity:0;transition:opacity .5s var(--ease-out-expo)}.project-next__overlay{position:absolute;bottom:0;left:0;right:0;height:30%;z-index:1;background:linear-gradient(to top,rgba(0,0,0,.75) 0%,rgba(0,0,0,.3) 50%,transparent 100%);transition:opacity .5s var(--ease-out-expo)}.project-next:has(.project-next__arrow:hover) .project-next__overlay{opacity:.35}.project-next__bottom{position:relative;z-index:2;width:100%;display:flex;flex-direction:row;align-items:flex-end;justify-content:space-between;gap:var(--space-xl)}.project-next__eyebrow{font-family:var(--font-body);color:var(--color-text-on-dark-subtle);margin-bottom:var(--space-2xs)}.project-next__title{font-size:var(--font-size-h1);color:var(--color-text-inverse);transition:transform .4s var(--ease-out-quart)}.project-next__arrow{flex-shrink:0;width:6rem;height:6rem;border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;color:var(--color-text-inverse);transition:background-color .25s ease,border-color .25s ease}.project-next__arrow svg{width:2.5rem;height:2.5rem;transition:transform .3s var(--ease-out-quart)}.project-next__arrow:hover{background-color:var(--color-accent);border-color:var(--color-accent)}.project-next__arrow:hover svg{transform:rotate(-45deg)}@media(max-width:64em){.project-next{padding:var(--space-2xl) var(--space-md)}}@media(max-width:48em){.project-next{padding:var(--space-xl) var(--space-md);min-height:70vh}.project-next__title{font-size:clamp(1.5rem,7vw,2rem)}.project-next__arrow{width:3.5rem;height:3.5rem}.project-next__arrow svg{width:1.5rem;height:1.5rem}}@media(prefers-reduced-motion:reduce){.project-next__scrim,.project-next__title{transition:none}}.page-topbar{position:fixed;top:0;left:0;right:0;z-index:var(--z-sidebar);display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-lg) var(--page-edge);pointer-events:none;background:none}.page-topbar>*{pointer-events:auto}.hero__wordmark{display:block;line-height:0}.hero__wordmark img{height:var(--icon-size-xs);width:auto}.topbar-right{display:flex;align-items:center;gap:var(--space-md)}.sound-toggle,.live-clock{font-family:var(--font-body);font-size:var(--font-size-caption);font-weight:var(--fw-medium);color:var(--color-text-muted);letter-spacing:var(--ls-meta)}.sound-toggle{background:none;border:none;cursor:pointer;padding:0;line-height:1;transition:color .2s ease,transform .15s var(--ease-out-expo)}.sound-toggle:hover{color:var(--color-text-primary)}.sound-toggle:active{transform:scale(.88);transition-duration:60ms}.sound-toggle.is-on{color:var(--color-accent)}.live-clock{white-space:nowrap;line-height:1}body:has(.home-page) .page-topbar{padding-inline:var(--page-edge-home)}@media(max-width:48em){.page-topbar{padding:var(--space-md) var(--space-md)}}.gradual-blur{pointer-events:none;isolation:isolate}.gradual-blur-parent{overflow:hidden}.gradual-blur-inner{position:relative;width:100%;height:100%;pointer-events:none}.gradual-blur-inner>div{-webkit-backdrop-filter:inherit;backdrop-filter:inherit}@supports not (backdrop-filter: blur(1px)){.gradual-blur-inner>div{background:#0009}}.prj-modal{position:fixed;inset:0;z-index:calc(var(--z-navbar) - 1);display:flex;align-items:flex-end;animation:prj-modal-in .3s var(--ease-out-expo) both}@keyframes prj-modal-in{0%{opacity:0}to{opacity:1}}.prj-modal__backdrop{position:absolute;inset:0;background-color:var(--overlay-scrim-strong);backdrop-filter:var(--blur-lg);-webkit-backdrop-filter:var(--blur-lg)}.prj-modal__panel{position:relative;z-index:1;width:100%;height:90dvh;overflow-y:auto;border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:prj-modal-up .38s var(--ease-out-expo) both;contain:paint}@keyframes prj-modal-up{0%{transform:translateY(var(--motion-enter-y-lg));opacity:0}to{transform:translateY(0);opacity:1}}.prj-modal.is-closing{animation:prj-modal-out .26s var(--ease-out-expo) both;pointer-events:none}.prj-modal.is-closing .prj-modal__panel{animation:prj-modal-down .26s var(--ease-out-expo) both}@keyframes prj-modal-out{0%{opacity:1}to{opacity:0}}@keyframes prj-modal-down{0%{transform:translateY(0);opacity:1}to{transform:translateY(var(--motion-enter-y-lg));opacity:0}}.prj-modal__topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) var(--page-edge);background-color:var(--color-neutral-50);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.prj-modal__header{background-color:var(--color-bg-white);padding:var(--space-xl) var(--page-edge) var(--space-lg);display:flex;flex-direction:column;border-bottom:1px solid var(--color-border)}.prj-modal__tags{display:flex;align-items:center;gap:var(--space-xs);flex-wrap:wrap;list-style:none;padding:0;margin:0}.prj-modal__actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.prj-modal__cta,.prj-modal__close{display:inline-flex;align-items:center;justify-content:center;height:var(--control-height-md);min-height:50px;min-width:50px;border-radius:var(--radius-md);border:1px solid var(--color-border);cursor:pointer;white-space:nowrap;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.prj-modal__cta{gap:var(--space-xs);font-family:var(--font-body);font-size:var(--font-size-label);font-weight:var(--fw-medium);letter-spacing:var(--ls-body);text-decoration:none;color:var(--color-text-inverse);background-color:var(--color-button-bg);padding:0 var(--space-md);border-color:var(--color-button-bg)}.prj-modal__cta:hover{background-color:var(--color-accent);border-color:var(--color-accent)}.prj-modal__cta svg{width:1rem;height:1rem;flex-shrink:0;transition:transform .25s var(--ease-out-quart)}.prj-modal__cta:hover svg{transform:rotate(-45deg)}.prj-modal__close{flex-shrink:0;width:var(--control-height-md);padding:0;background-color:transparent;color:var(--color-text-primary)}.prj-modal__close:hover{background-color:var(--color-accent);border-color:var(--color-accent);color:var(--primitive-white)}.prj-modal__close svg{width:var(--icon-size-md);height:var(--icon-size-md);transition:transform .25s var(--ease-out-expo)}.prj-modal__close:hover svg{transform:rotate(90deg)}.prj-modal__header-body{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between;padding:var(--space-md) 0}.prj-modal__description{max-width:60ch;flex-shrink:0;color:var(--color-text-secondary);line-height:var(--lh-relaxed)}.prj-modal__title{font-size:var(--font-size-h1)}.prj-modal__meta-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--space-xs);padding:var(--space-md) 0}.prj-modal__meta-label{font-family:var(--font-display);color:var(--color-text-muted);flex-shrink:0}.prj-modal__meta-value{font-weight:var(--fw-regular)}.prj-modal__body{background-color:var(--color-bg-surface)}.prj-modal__hero{width:100%;aspect-ratio:16 / 9;overflow:hidden;flex-shrink:0;margin-bottom:var(--space-2xl)}.prj-modal__hero-img{object-position:top center}.prj-modal__section{padding:var(--space-2xl) var(--page-edge);opacity:0;transform:translateY(var(--motion-enter-y-sm));transition:opacity .55s var(--ease-out-quart),transform .55s var(--ease-out-quart)}.prj-modal__section.is-visible{opacity:1;transform:translateY(0)}.prj-modal__section-label{font-size:var(--font-size-h3);font-weight:var(--fw-medium);line-height:var(--lh-heading);letter-spacing:var(--ls-tight);color:var(--color-text-primary);margin-bottom:var(--space-sm)}.prj-modal__body>.prj-modal__section:last-child{padding-bottom:var(--space-5xl)}.prj-modal__section--gallery{padding-inline:0}.prj-modal .application__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-xs)}.prj-modal .application__image{overflow:hidden;background-color:var(--color-bg-subtle);aspect-ratio:4 / 3}.prj-modal .application__image--full{aspect-ratio:16 / 7;grid-column:1 / -1}.prj-modal .application__image img{width:100%;height:100%;object-fit:cover;display:block}.prj-modal .reveal-stagger>*{opacity:1;transform:none;transition:none}.prj-modal__overview-body{font-size:var(--font-size-h3);font-weight:var(--fw-medium);line-height:var(--lh-body);letter-spacing:var(--ls-body);color:var(--color-text-primary);max-width:72ch}.prj-modal__stack{display:flex;gap:var(--space-md);flex-wrap:wrap;padding:var(--space-2xl) var(--page-edge) calc(var(--space-5xl) + var(--space-sm));border-top:1px solid var(--color-border)}.prj-modal__stack-item{flex:1;min-width:10rem;background-color:var(--color-bg-white);padding:var(--space-lg);border-radius:var(--radius-md)}.prj-modal__stack-label{font-size:var(--font-size-h4);font-weight:var(--fw-medium);color:var(--color-text-secondary);margin-bottom:var(--space-xs)}.prj-modal__stack-body{font-size:var(--font-size-body);line-height:var(--lh-body);letter-spacing:var(--ls-body);color:var(--color-text-body);font-weight:var(--fw-medium)}@media(max-width:48em){.prj-modal__topbar{padding:var(--space-sm) var(--space-md);gap:var(--space-sm)}.prj-modal__header{padding:var(--space-md) var(--space-md)}.prj-modal__header-body{flex-direction:column;gap:var(--space-md)}.prj-modal__description{max-width:100%}.prj-modal__meta-list{gap:var(--space-sm)}.prj-modal__hero{aspect-ratio:4 / 3}.prj-modal__section{padding:var(--space-xl) var(--space-md)}.prj-modal__body>.prj-modal__section:last-child{padding-bottom:var(--space-4xl)}.prj-modal__stack{padding:var(--space-xl) var(--space-md) var(--space-4xl);flex-direction:column}.prj-modal .application__grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.prj-modal,.prj-modal__panel,.prj-modal.is-closing,.prj-modal.is-closing .prj-modal__panel{animation:none}.prj-modal__section{opacity:1;transform:none;transition:none}}body{background-color:var(--color-bg-page);overflow-x:hidden;overflow-y:auto;min-height:100vh}.home-page{position:relative;z-index:var(--z-base)}.carousel-wrapper:after{content:"";position:absolute;inset:0;z-index:200;pointer-events:none;opacity:.12;mix-blend-mode:screen;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)'/%3E%3C/svg%3E")}.bottom-zone{position:absolute;bottom:var(--hero-bottom-offset);left:0;right:0;z-index:var(--z-raised);padding:var(--space-lg) var(--page-edge-home) calc(var(--space-4xl) + var(--space-sm));display:flex;flex-direction:column;gap:var(--space-3xs);pointer-events:none}.bottom-zone>*{pointer-events:auto}.hero__eyebrow{font-family:var(--font-display);font-size:var(--font-size-h1);font-weight:var(--fw-medium);line-height:var(--lh-heading);color:var(--color-text-primary);letter-spacing:var(--ls-tight);animation:blurUp .9s var(--ease-out-expo) .2s both}.hero__headline{display:flex;align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-size:var(--font-size-h1);font-weight:var(--fw-medium);line-height:var(--lh-heading);letter-spacing:var(--ls-tight);color:var(--color-text-primary);flex-wrap:wrap;animation:blurUp 1s var(--ease-out-expo) .36s both}.hero__headline-word{white-space:nowrap}.ticker-pill{display:inline-flex;align-items:center;justify-content:center;background:var(--surface-bg);border:var(--surface-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--surface-shadow),inset 0 1px 1px #fff9;padding:.3rem .5rem}.ticker-pill__track{position:relative;height:1.25em;min-width:6.5ch;display:flex;align-items:center;justify-content:center;overflow:hidden}.ticker-pill__word{position:absolute;left:0;right:0;text-align:center;font-family:var(--font-mono);font-size:var(--font-size-ticker);font-weight:var(--fw-medium);color:var(--color-text-primary);opacity:0;transition:opacity .2s ease;white-space:nowrap;will-change:opacity}.ticker-pill__word.is-active{opacity:1;transform:translateY(0);animation:ticker-hop .32s var(--ease-out-expo)}@keyframes ticker-hop{0%{transform:translateY(0)}35%{transform:translateY(calc(-2 * var(--motion-nudge-sm)))}65%{transform:translateY(var(--motion-nudge-xs))}to{transform:translateY(0)}}.ticker-pill__word.is-exiting{opacity:0;transition:opacity .15s ease}.hero__tagline{font-family:var(--font-body);font-size:var(--font-size-h4);color:var(--color-text-secondary);line-height:var(--lh-body);display:flex;gap:var(--space-xs);padding-top:.5rem;letter-spacing:var(--ls-body);font-weight:var(--fw-medium);animation:blurUp 1s var(--ease-out-expo) .5s both}.smile{display:inline-block;vertical-align:middle;line-height:0;flex-shrink:0}.smile img{width:var(--icon-size-lg);height:var(--icon-size-lg);animation:spin 3s linear infinite;transform-origin:center}.page-transition-wrapper:has(.home-page){background-color:var(--color-bg-page)}.page-transition-wrapper:has(.home-page)~.footer{min-height:var(--footer-reveal-height);padding:var(--space-2xl) var(--page-edge-home) calc(var(--space-5xl) + var(--space-lg));visibility:hidden;animation:footer-reveal 0s linear .45s forwards}@keyframes footer-reveal{to{visibility:visible}}@media(max-width:48em){.page-topbar{padding:var(--space-md) var(--space-md)}.bottom-zone{padding:var(--space-md) var(--space-md) calc(var(--space-4xl) + var(--space-sm))}.hero__eyebrow,.hero__headline{font-size:clamp(1.75rem,8vw,2.5rem)}.hero__headline{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}.scroll-nudge{display:none}}@media(prefers-reduced-motion:reduce){.ticker-pill__word,.smile img,.hero__eyebrow,.hero__headline,.hero__tagline,.scroll-nudge,.scroll-nudge__line{animation:none!important;transition-duration:.01ms!important;opacity:1!important;transform:none!important;filter:none!important}}
