@font-face{font-family:Mulish;src:url(/fonts/mulish-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Mulish;src:url(/fonts/mulish-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth;color-scheme:light;font-size:100%}body{font-family:var(--font-primary);font-size:var(--text-base);line-height:1.6;color:var(--color-text);background-color:var(--color-bg);overflow-x:hidden;cursor:default;transition:background-color .3s ease,color .3s ease;min-height:100vh}img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}input,button,textarea,select{font:inherit}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:root{--color-black: #111111;--color-white: #ffffff;--color-gray-50: #fafafa;--color-gray-100: #f5f5f5;--color-gray-200: #e5e5e5;--color-gray-300: #d4d4d4;--color-gray-400: #a3a3a3;--color-gray-500: #737373;--color-gray-600: #525252;--color-gray-700: #404040;--color-gray-800: #262626;--color-gray-900: #171717;--color-gray-950: #111111;--color-text: var(--color-black);--color-text-muted: var(--color-gray-500);--color-text-light: var(--color-gray-400);--color-bg: var(--color-white);--color-bg-subtle: var(--color-gray-50);--color-bg-dark: var(--color-gray-950);--color-border: var(--color-gray-200);--color-footer-bg: var(--color-white);--color-footer-text: var(--color-black);--color-danger: #b00020;--color-input-bg: var(--color-gray-100);--color-input-bg-hover: var(--color-gray-200);--color-input-focus: var(--color-white);--color-button-bg: var(--color-black);--color-button-text: var(--color-white);--color-cursor-text: var(--color-white)}html.dark-mode{--color-text: var(--color-white);--color-text-muted: var(--color-gray-400);--color-text-light: var(--color-gray-500);--color-bg: var(--color-gray-950);--color-bg-subtle: var(--color-gray-900);--color-bg-dark: var(--color-black);--color-border: var(--color-gray-800);--color-footer-bg: var(--color-black);--color-footer-text: var(--color-white);--color-danger: #ff6b6b;--color-input-bg: var(--color-gray-900);--color-input-bg-hover: var(--color-gray-800);--color-input-focus: var(--color-gray-950);--color-button-bg: var(--color-white);--color-button-text: var(--color-black);--color-cursor-text: var(--color-white);--color-gray-100: #1a1a1a;--color-gray-200: #262626;--color-gray-300: #404040;--shadow-xl: 0 1rem 2.5rem -1rem rgba(0, 0, 0, .55);color-scheme:dark}:root{--font-primary: "Mulish", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--text-xs: clamp(.75rem, .7rem + .25vw, .875rem);--text-sm: clamp(.875rem, .8rem + .375vw, 1rem);--text-base: clamp(1rem, .925rem + .375vw, 1.125rem);--text-lg: clamp(1.125rem, 1rem + .625vw, 1.375rem);--text-xl: clamp(1.25rem, 1.1rem + .75vw, 1.625rem);--text-2xl: clamp(1.5rem, 1.25rem + 1.25vw, 2.25rem);--text-3xl: clamp(2rem, 1.5rem + 2.5vw, 3.5rem);--text-4xl: clamp(2.5rem, 1.75rem + 3.75vw, 5rem);--text-5xl: clamp(2.75rem, 1.9rem + 4.25vw, 7.5rem);--text-6xl: var(--text-5xl);--font-light: 400;--font-normal: 400;--font-medium: 500;--font-semibold: 500;--tracking-tighter: -.05em;--tracking-tight: -.025em;--tracking-normal: 0;--tracking-wider: .05em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-32: 8rem;--container-max: 112.5rem;--container-inline-padding: clamp(2.5rem, 4vw, 5rem);--radius-button: 1rem;--radius-image: 1.5rem;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .3s cubic-bezier(.4, 0, .2, 1);--shadow-md: 0 .25rem .375rem -.0625rem rgba(0, 0, 0, .1);--shadow-xl: 0 1rem 2.5rem -1rem rgba(0, 0, 0, .22);--z-sticky: 200;--z-overlay: 300;--z-cursor: 9999}h1,h2,h3,h4,h5,h6{font-family:var(--font-primary);font-weight:var(--font-medium);line-height:1.05;letter-spacing:var(--tracking-tighter)}h1{font-size:var(--text-6xl)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}p{line-height:1.6}.custom-cursor{position:fixed;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;z-index:var(--z-cursor);opacity:0;transform:translate(-50%,-50%);transition:opacity .25s ease;text-align:center;white-space:nowrap}.custom-cursor.is-visible{opacity:1}.custom-cursor__plus{font-size:2rem;font-weight:var(--font-light);color:var(--color-white);line-height:1}.custom-cursor__label{font-size:1.125rem;font-weight:var(--font-medium);color:var(--color-white);letter-spacing:.02em;margin-top:.25rem}.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--container-inline-padding)}.container--full{max-width:100%;padding-inline:var(--container-inline-padding)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.parallax-section{position:relative;overflow:hidden}.parallax-image{will-change:transform;transition:transform .1s linear}.reveal{opacity:0;transform:translateY(3.75rem);transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1)}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}.reveal-delay-4{transition-delay:.4s}.stagger-reveal>*{opacity:0;transform:translateY(2.5rem);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.stagger-reveal.is-visible>*:nth-child(1){transition-delay:.05s}.stagger-reveal.is-visible>*:nth-child(2){transition-delay:.1s}.stagger-reveal.is-visible>*:nth-child(3){transition-delay:.15s}.stagger-reveal.is-visible>*:nth-child(4){transition-delay:.2s}.stagger-reveal.is-visible>*:nth-child(5){transition-delay:.25s}.stagger-reveal.is-visible>*{opacity:1;transform:translateY(0)}.is-hidden{display:none!important}.hover-line{position:relative;display:inline-block}.hover-line:after{content:"";position:absolute;bottom:-.125rem;left:0;width:100%;height:.0625rem;background-color:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .3s ease}.hover-line:hover:after{transform:scaleX(1);transform-origin:left}@media(hover:none)and (pointer:coarse){a,button{-webkit-tap-highlight-color:rgba(17,17,17,.12);touch-action:manipulation}:global(html.dark-mode) a,:global(html.dark-mode) button{-webkit-tap-highlight-color:rgba(255,255,255,.14)}.project-full__image-link,.project-full__link,.project-card-grid__link,.insight-card__link,.insights-nav__link,.insight-back,.project-filter__button,.header__menu-btn,.mobile-menu__close,.back-to-top,button[aria-label="Toggle theme"]{transition:transform .12s cubic-bezier(.2,.8,.2,1),filter .12s linear;will-change:transform}.project-full__image-link:active,.project-full__link:active,.project-card-grid__link:active,.insight-card__link:active,.insights-nav__link:active,.insight-back:active,.project-filter__button:active,.header__menu-btn:active,.mobile-menu__close:active,.back-to-top:active,button[aria-label="Toggle theme"]:active{transform:scale(.985);filter:brightness(.98)}.hover-line:active:after,.hover-line:focus-visible:after{transform:scaleX(1);transform-origin:left}}:focus-visible{outline:.125rem solid var(--color-text);outline-offset:.25rem;border-radius:.375rem}::selection{background-color:var(--color-text);color:var(--color-bg)}.toast{position:fixed;left:50%;bottom:1.25rem;transform:translate(-50%) translateY(1rem);z-index:var(--z-overlay);padding:.75rem 1rem;border-radius:var(--radius-button);background:var(--color-black);color:var(--color-white);border:.0625rem solid rgba(255,255,255,.12);opacity:0;pointer-events:none;transition:opacity var(--transition-fast),transform var(--transition-fast);box-shadow:var(--shadow-md)}:global(html.dark-mode) .toast{background:var(--color-white);color:var(--color-black);border-color:#0000001f}.toast.is-visible{opacity:1;transform:translate(-50%) translateY(0)}::-webkit-scrollbar{width:.5rem}::-webkit-scrollbar-track{background:var(--color-bg-subtle)}::-webkit-scrollbar-thumb{background:var(--color-text-muted);border-radius:.25rem}::-webkit-scrollbar-thumb:hover{background:var(--color-text-light)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.parallax-image{transform:none!important}}.section-dark{background-color:var(--color-bg-dark);color:var(--color-white)}.section-dark ::selection{background-color:var(--color-white);color:var(--color-black)}.header[data-astro-cid-3ef6ksr2]{position:fixed;top:0;left:0;right:0;z-index:var(--z-sticky);padding:var(--space-8) 0;background-color:transparent;color:var(--color-text);transition:background-color .4s ease,color .4s ease,backdrop-filter .4s ease}.header--dark[data-astro-cid-3ef6ksr2]{background-color:transparent;color:var(--color-white)}.header[data-astro-cid-3ef6ksr2].is-scrolled{background-color:#ffffffd9;backdrop-filter:blur(2.25rem) saturate(180%);-webkit-backdrop-filter:blur(2.25rem) saturate(180%);border-bottom:.0625rem solid rgba(0,0,0,.08);color:var(--color-text)}html.dark-mode .header[data-astro-cid-3ef6ksr2].is-scrolled{background-color:#111111d9;border-bottom:.0625rem solid rgba(255,255,255,.1)}.header__container[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:space-between;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--container-inline-padding)}.header__logo-link[data-astro-cid-3ef6ksr2]{display:block;line-height:0;transition:opacity var(--transition-fast)}.header__logo-link[data-astro-cid-3ef6ksr2]:hover{opacity:.7}.header__logo[data-astro-cid-3ef6ksr2]{display:block;height:3.5rem;width:3.5rem}.header__logo--light[data-astro-cid-3ef6ksr2]{display:block}.header__logo--dark[data-astro-cid-3ef6ksr2],html.dark-mode .header__logo--light[data-astro-cid-3ef6ksr2]{display:none}html.dark-mode .header__logo--dark[data-astro-cid-3ef6ksr2]{display:block}.header__nav[data-astro-cid-3ef6ksr2]{display:none}@media(min-width:48em){.header__nav[data-astro-cid-3ef6ksr2]{display:block}.header__menu-btn[data-astro-cid-3ef6ksr2]{display:none}}.header__nav-list[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:var(--space-10)}.header__nav-link[data-astro-cid-3ef6ksr2]{font-size:var(--text-sm);font-weight:var(--font-normal);color:currentColor;transition:opacity var(--transition-fast);padding:var(--space-2) 0}.header__nav-link[data-astro-cid-3ef6ksr2]:hover{opacity:.6}.header__nav-link[data-astro-cid-3ef6ksr2].is-active{opacity:.5}.theme-toggle[data-astro-cid-3ef6ksr2]{background:none;border:none;cursor:pointer;padding:var(--space-2);margin:calc(var(--space-2) * -1);color:currentColor;display:flex;align-items:center;justify-content:center;transition:opacity var(--transition-fast),transform var(--transition-base);-webkit-tap-highlight-color:transparent}.theme-toggle[data-astro-cid-3ef6ksr2]:hover{opacity:.6;transform:rotate(15deg)}.theme-toggle[data-astro-cid-3ef6ksr2]:active{transform:scale(.95)}.theme-toggle__icon[data-astro-cid-3ef6ksr2]{transition:opacity .3s ease,transform .3s ease}.theme-toggle__icon--sun[data-astro-cid-3ef6ksr2]{display:block}.theme-toggle__icon--moon[data-astro-cid-3ef6ksr2],html.dark-mode .theme-toggle__icon--sun[data-astro-cid-3ef6ksr2]{display:none}html.dark-mode .theme-toggle__icon--moon[data-astro-cid-3ef6ksr2]{display:block}.theme-toggle--mobile[data-astro-cid-3ef6ksr2]{margin-top:var(--space-8);margin-inline:auto;display:flex}.theme-toggle--mobile[data-astro-cid-3ef6ksr2] .theme-toggle__icon[data-astro-cid-3ef6ksr2]{width:2rem;height:2rem}.header__menu-btn[data-astro-cid-3ef6ksr2]{font-size:var(--text-sm);font-weight:var(--font-medium);color:currentColor;background:none;border:none;cursor:pointer;padding:var(--space-2);margin:calc(var(--space-2) * -1);transition:opacity var(--transition-fast)}.header__menu-btn[data-astro-cid-3ef6ksr2]:hover{opacity:.6}.mobile-menu[data-astro-cid-3ef6ksr2]{position:fixed;inset:0;z-index:var(--z-overlay);background-color:#fffc;backdrop-filter:blur(2.5rem) saturate(180%);-webkit-backdrop-filter:blur(2.5rem) saturate(180%);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity var(--transition-base),visibility var(--transition-base)}html.dark-mode .mobile-menu[data-astro-cid-3ef6ksr2]{background-color:#111c}.mobile-menu[data-astro-cid-3ef6ksr2].is-open{opacity:1;visibility:visible}.mobile-menu__content[data-astro-cid-3ef6ksr2]{text-align:center}.mobile-menu__close[data-astro-cid-3ef6ksr2]{position:absolute;top:var(--space-8);right:var(--container-inline-padding);background:none;border:none;cursor:pointer;padding:var(--space-2);color:var(--color-text);transition:opacity var(--transition-fast),transform var(--transition-base)}.mobile-menu__close[data-astro-cid-3ef6ksr2] svg[data-astro-cid-3ef6ksr2]{width:1.5rem;height:1.5rem}.mobile-menu__close[data-astro-cid-3ef6ksr2]:hover{opacity:.6;transform:rotate(90deg)}.mobile-menu__list[data-astro-cid-3ef6ksr2]{display:flex;flex-direction:column;gap:var(--space-6)}.mobile-menu__link[data-astro-cid-3ef6ksr2]{font-size:var(--text-4xl);font-weight:var(--font-medium);color:var(--color-text);transition:opacity .3s ease,transform .3s cubic-bezier(.16,1,.3,1);display:inline-block;position:relative}.mobile-menu__link[data-astro-cid-3ef6ksr2]:after{content:"";position:absolute;bottom:-.25rem;left:0;width:0;height:.125rem;background-color:currentColor;transition:width .3s cubic-bezier(.16,1,.3,1)}.mobile-menu__link[data-astro-cid-3ef6ksr2]:hover{opacity:.6;transform:translate(.5rem)}.mobile-menu__link[data-astro-cid-3ef6ksr2]:hover:after{width:100%}.mobile-menu__link[data-astro-cid-3ef6ksr2].is-active{opacity:.5}.mobile-menu__link[data-astro-cid-3ef6ksr2]:active{transform:scale(.98)}.footer[data-astro-cid-sz7xmlte]{background-color:var(--color-footer-bg);color:var(--color-footer-text);padding:var(--space-20) 0}.footer__container[data-astro-cid-sz7xmlte]{max-width:var(--container-max);margin-inline:auto;padding-inline:var(--container-inline-padding);display:grid;gap:var(--space-16)}@media(min-width:48em){.footer__container[data-astro-cid-sz7xmlte]{grid-template-columns:1fr auto;align-items:start}}.footer__cta-label[data-astro-cid-sz7xmlte]{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-4)}.footer__email[data-astro-cid-sz7xmlte]{display:inline-flex;align-items:center;gap:var(--space-4);font-size:var(--text-xl);color:var(--color-footer-text);transition:opacity var(--transition-fast)}.footer__email[data-astro-cid-sz7xmlte]:hover{opacity:.8}.footer__email-icon[data-astro-cid-sz7xmlte]{flex-shrink:0;width:1.375rem;height:1.375rem;transition:transform var(--transition-base)}.footer__email[data-astro-cid-sz7xmlte]:hover .footer__email-icon[data-astro-cid-sz7xmlte]{transform:translate(-.1875rem)}.footer__email-row[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-4)}.footer__nav[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;gap:var(--space-16)}@media(min-width:48em){.footer__nav[data-astro-cid-sz7xmlte]{gap:var(--space-20)}}.footer__nav-group[data-astro-cid-sz7xmlte]{min-width:8.75rem}.footer__nav-label[data-astro-cid-sz7xmlte]{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-5)}.footer__nav-list[data-astro-cid-sz7xmlte]{display:flex;flex-direction:column;gap:var(--space-3)}.footer__nav-link[data-astro-cid-sz7xmlte]{font-size:var(--text-base);color:var(--color-footer-text);transition:opacity var(--transition-fast);display:inline-block}.footer__nav-link[data-astro-cid-sz7xmlte]:hover{opacity:.7}.footer__copyright[data-astro-cid-sz7xmlte]{font-size:var(--text-sm);color:var(--color-gray-500);align-self:flex-end}@media(min-width:48em){.footer__copyright[data-astro-cid-sz7xmlte]{margin-left:var(--space-12)}}.skip-link{position:absolute;left:1rem;top:1rem;z-index:10000;padding:.75rem 1rem;border-radius:var(--radius-full);background:var(--color-bg);color:var(--color-text);border:.0625rem solid var(--color-border);transform:translateY(-200%);transition:transform var(--transition-fast)}.skip-link:focus-visible{transform:translateY(0)}.has-dark-hero{background-color:var(--color-bg-dark)}
