.site-header{z-index:40;border-bottom:1px solid #0000;transition:border-color .3s;position:fixed;top:0;left:0;right:0}.site-header:before{content:"";z-index:-1;background:color-mix(in srgb, var(--color-bg) 80%, transparent);backdrop-filter:blur(12px);position:absolute;inset:0}.site-header[data-scrolled]{border-bottom-color:var(--color-border)}.site-header__inner{max-width:72rem;padding:calc(1.25rem + env(safe-area-inset-top,0px)) calc(1.5rem + env(safe-area-inset-right,0px)) 1.25rem calc(1.5rem + env(safe-area-inset-left,0px));justify-content:space-between;align-items:center;margin-inline:auto;display:flex}.site-header__logo{min-block-size:var(--size-touch-target);min-inline-size:var(--size-touch-target);font-family:var(--font-display);letter-spacing:-.025em;align-items:center;font-size:1.25rem;font-weight:700;line-height:1.75rem;display:inline-flex}.site-header__logo-dot{color:var(--color-accent)}.site-header__nav{align-items:center;gap:2rem;display:none}.site-header__link{min-block-size:var(--size-touch-target);min-inline-size:var(--size-touch-target);color:var(--color-text-muted);align-items:center;font-size:.875rem;line-height:1.25rem;transition:color .15s;display:inline-flex}.site-header__link:hover{color:var(--color-text)}.site-header__cta{min-block-size:var(--size-touch-target);border:1px solid var(--color-text);color:var(--color-text);align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;line-height:1.25rem;transition:color .15s,border-color .15s;display:inline-flex}.site-header__cta:hover{border-color:var(--color-accent-warm)}.mobile-menu{display:block}.menu-toggle{z-index:50;width:var(--size-touch-target);height:var(--size-touch-target);justify-content:center;align-items:center;display:flex;position:relative}.menu-toggle__lines{width:1.5rem;height:.8125rem;display:block;position:relative}.menu-line{background:var(--color-text);width:1.5rem;height:1px;transition:transform .3s cubic-bezier(.22,1,.36,1);display:block;position:absolute;left:0}.menu-line-top{top:0}.menu-line-bottom{bottom:0}[data-menu-toggle][aria-expanded=true] .menu-line-top{transform:translateY(6px)rotate(45deg)}[data-menu-toggle][aria-expanded=true] .menu-line-bottom{transform:translateY(-6px)rotate(-45deg)}.menu-overlay{z-index:40;overscroll-behavior:contain;padding:calc(5.5rem + env(safe-area-inset-top,0px)) calc(1.5rem + env(safe-area-inset-right,0px)) calc(2rem + env(safe-area-inset-bottom,0px)) calc(1.5rem + env(safe-area-inset-left,0px));background:var(--color-bg);flex-direction:column;animation:.24s backwards menu-overlay-in;display:flex;position:fixed;inset:0;overflow-y:auto}@keyframes menu-overlay-in{0%{opacity:0}to{opacity:1}}.menu-overlay__nav{flex-direction:column;margin-block:auto;display:flex}.menu-overlay__link{font-family:var(--font-display);letter-spacing:-.025em;animation:.48s cubic-bezier(.22,1,.36,1) backwards menu-item-in;animation-delay:calc(var(--i,0) * 60ms);align-items:baseline;gap:1rem;padding:.75rem 0;font-size:clamp(2rem,8vw,2.75rem);font-weight:500;line-height:1.05;display:flex}.menu-overlay__num{font-family:var(--font-body);letter-spacing:.18em;color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:.75rem;font-weight:600}@keyframes menu-item-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.menu-overlay__contact{border-top:1px solid var(--color-border);animation:.48s cubic-bezier(.22,1,.36,1) backwards menu-item-in;animation-delay:calc(var(--i,0) * 60ms + 80ms);flex-direction:column;gap:.75rem;padding-top:1.5rem;display:flex}.menu-overlay__email{width:fit-content;min-block-size:var(--size-touch-target);font-family:var(--font-display);letter-spacing:-.01em;text-decoration:underline;text-decoration-color:var(--color-border);text-underline-offset:6px;align-items:center;font-size:1.25rem;font-weight:500;line-height:1.75rem;transition:text-decoration-color .15s;display:inline-flex}.menu-overlay__email:hover{text-decoration-color:var(--color-accent-warm)}@media (prefers-reduced-motion:reduce){.menu-overlay__link,.menu-overlay__contact{animation:none}}@media (width>=48rem){.site-header__inner{padding-right:calc(2.5rem + env(safe-area-inset-right,0px));padding-left:calc(2.5rem + env(safe-area-inset-left,0px))}.site-header__nav{display:flex}.mobile-menu{display:none}}.site-footer{border-top:1px solid var(--color-border)}.site-footer__inner{flex-direction:column;gap:2.5rem;max-width:72rem;margin-inline:auto;padding:3.5rem 1.5rem;display:flex}.site-footer__top{flex-direction:column;gap:1.5rem;display:flex}.site-footer__tagline{font-family:var(--font-display);letter-spacing:-.025em;font-size:1.5rem;font-weight:500;line-height:2rem}.site-footer__email{min-block-size:var(--size-touch-target);text-underline-offset:4px;align-items:center;font-size:.875rem;font-weight:500;line-height:1.25rem;transition:opacity .15s;display:inline-flex}.site-footer__email:hover{opacity:.7}.site-footer__bottom{flex-direction:column;gap:1.5rem;display:flex}.site-footer__socials{gap:1.5rem;display:flex}.site-footer__social-link{min-block-size:var(--size-touch-target);color:var(--color-text-muted);text-underline-offset:4px;align-items:center;font-size:.875rem;line-height:1.25rem;transition:color .15s;display:inline-flex}.site-footer__social-link:hover{color:var(--color-text);text-decoration:underline}.site-footer__copyright{color:var(--color-text-muted);font-size:.875rem;line-height:1.25rem}@media (width>=48rem){.site-footer__inner{padding-inline:2.5rem}.site-footer__top{flex-direction:row;justify-content:space-between;align-items:flex-start}.site-footer__bottom{flex-direction:row;justify-content:space-between;align-items:center}}.project-cover-frame{aspect-ratio:4/3;width:100%;position:relative;overflow:hidden}.project-cover{object-fit:cover;object-position:center;transform-origin:50%;width:100%;height:100%;transition:transform .7s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.project-row:hover .project-cover{transform:scale(1.035)}@keyframes drift{0%{transform:translate(0)}to{transform:translate(-2%,2%)}}.project-cover-drift{transform-origin:50%;animation:14s ease-in-out infinite alternate drift}@media (width>=48rem){.project-cover-frame{aspect-ratio:16/10}}@media (prefers-reduced-motion:reduce){.project-cover-drift{animation:none}}
