/* CORVO — Astro-native visual and motion system. */
@font-face { font-family: "Dune Rise"; src: url("/assets/fonts/dune-rise.woff") format("woff"); font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("/assets/fonts/ibm-plex-sans-latin.woff2") format("woff2"); font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("/assets/fonts/ibm-plex-mono-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("/assets/fonts/ibm-plex-mono-500.woff2") format("woff2"); font-weight: 500; font-display: swap; }

:root {
  color-scheme: dark;
  --ink: #090b0a;
  --surface: #101311;
  --paper: #eff2ed;
  --muted: #98a099;
  --muted-low: #626b65;
  --accent: #82b598;
  --line: rgba(239,242,237,.14);
  --line-strong: rgba(239,242,237,.25);
  --sans: "IBM Plex Sans", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
  --display: "Dune Rise", "IBM Plex Sans", sans-serif;
  --ease-out: cubic-bezier(.16,1,.3,1);
  --page-pad: clamp(1.25rem,4vw,4.75rem);
  --header-h: 5.25rem;
}

*,*::before,*::after { box-sizing: border-box; }
html { min-width: 320px; scroll-behavior: smooth; background: var(--ink); }
body { min-height: 100vh; margin: 0; overflow-x: clip; background: var(--ink); color: var(--paper); font-family: var(--sans); text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
body.home-page { height: 100dvh; min-height: 0; overflow: hidden; overscroll-behavior: none; }
body.work-page { height: 100svh; min-height: 0; overflow: hidden; overscroll-behavior: none; }
img,video { display: block; max-width: 100%; }
button,input { font: inherit; }
button,a { -webkit-tap-highlight-color: transparent; }
a,button { outline: none; }
a:focus-visible,button:focus-visible,input:focus-visible,[tabindex]:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
::selection { background: var(--accent); color: var(--ink); }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; border: 0 !important; }

.site-shell { position: relative; min-height: 100vh; }
.skip-link { position: fixed; z-index: 10000; top: .75rem; left: .75rem; padding: .75rem 1rem; background: var(--accent); color: var(--ink); font: 500 .75rem/1 var(--mono); text-decoration: none; transform: translateY(-180%); transition: transform 180ms ease; }
.skip-link:focus { transform: none; }

/* Header */
.site-header {
  position: fixed;
  z-index: 100;
  top: 0;
  left: 0;
  right: 0;
  display: grid;
  grid-template-columns: auto auto minmax(0,1fr) auto;
  column-gap: clamp(2rem,4vw,4.5rem);
  align-items: center;
  min-height: var(--header-h);
  padding: 0 var(--page-pad);
  border: 0;
  background: transparent;
}
.site-header__brand { position: relative; inset-block-start: .11em; color: var(--paper); font: 400 clamp(1.05rem,1.65vw,1.4rem)/1 var(--display); letter-spacing: .08em; text-decoration: none; text-shadow: 0 1px 1rem rgba(0,0,0,.72); }
html.home-intro-boot .site-header__brand { opacity: 0; visibility: hidden; pointer-events: none; }
html.home-intro-running .site-header__brand { pointer-events: none; animation: home-nav-brand-arrive 620ms 3500ms var(--ease-out) both; }
.site-nav { position: relative; justify-self: start; display: flex; gap: clamp(1.5rem,3vw,3.2rem); align-items: center; min-height: 2.75rem; }
.site-nav > a,.site-projects-menu > summary { position: relative; display: flex; align-items: center; justify-content: center; min-height: 2.75rem; color: rgba(239,242,237,.78); font: 500 .66rem/1 var(--mono); letter-spacing: .12em; text-decoration: none; text-shadow: 0 1px .8rem #000; cursor: pointer; transition: color 180ms ease; }
.site-nav > a::after,.site-projects-menu > summary::before { content: none; }
.site-nav > a:hover,.site-nav > a:focus-visible,.site-nav > a.is-current,.site-projects-menu > summary:hover,.site-projects-menu > summary:focus-visible,.site-projects-menu.is-current > summary,.site-projects-menu[open] > summary { color: var(--accent); }
.site-projects-menu { position: relative; }
.site-projects-menu > summary { list-style: none; }
.site-projects-menu > summary::-webkit-details-marker { display: none; }
.site-projects-menu > summary::after { content: ""; width: .36rem; height: .36rem; margin: -.18rem 0 0 .48rem; border-right: 1px solid currentColor; border-bottom: 1px solid currentColor; transform: rotate(45deg); transition: transform 220ms var(--ease-out); }
.site-projects-menu[open] > summary::after { transform: translateY(.18rem) rotate(225deg); }
.site-projects-menu > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.site-projects-menu__panel { position: absolute; left: 0; top: calc(100% - .05rem); display: grid; gap: .85rem; min-width: 10.5rem; padding: .55rem 0 0; border: 0; background: transparent; }
.site-projects-menu__panel a,.site-projects-menu__panel span { width: max-content; padding: 0; color: var(--paper); font: 500 .6rem/1.2 var(--mono); letter-spacing: .12em; text-decoration: none; text-shadow: 0 1px .8rem #000,0 1px 2px #000; transition: color 180ms ease,transform 220ms var(--ease-out); }
.site-projects-menu__panel a:hover,.site-projects-menu__panel a:focus-visible { color: var(--accent); transform: translateX(.22rem); }
.site-projects-menu__panel span[aria-disabled="true"] { color: rgba(239,242,237,.36); }
.site-language { grid-column: 4; justify-self: end; display: grid; place-items: center; min-width: 2.75rem; min-height: 2.75rem; color: var(--paper); font: 500 .62rem/1 var(--mono); letter-spacing: .12em; text-decoration: none; text-shadow: 0 1px .8rem #000; }
.site-language:hover,.site-language:focus-visible { color: var(--accent); }

/* View and route transitions */
::view-transition-old(root) { animation: corvo-view-old 260ms cubic-bezier(.55,0,.7,.2) both; }
::view-transition-new(root) { animation: corvo-view-new 480ms var(--ease-out) both; }
.route-aperture { position: fixed; z-index: 1000; inset: 0; display: grid; place-items: center; overflow: hidden; visibility: hidden; pointer-events: none; }
.route-aperture::before { content: ""; position: absolute; left: var(--route-x,50%); top: var(--route-y,50%); width: 1rem; height: 1rem; border-radius: 50%; background: var(--ink); transform: translate(-50%,-50%) scale(0); }
.route-aperture > span,.route-aperture > i { position: absolute; inset: 0; background: var(--ink); transform: scaleX(0); }
.route-aperture > span { transform-origin: left; clip-path: polygon(0 0,100% 0,91% 50%,100% 100%,0 100%); }
.route-aperture > i { transform-origin: right; clip-path: polygon(9% 50%,0 0,100% 0,100% 100%,0 100%); }
.route-aperture strong { position: relative; z-index: 1; color: var(--paper); font: 400 clamp(2rem,7vw,7rem)/1 var(--display); letter-spacing: .03em; opacity: 0; transform: translateY(1rem); }
html.route-transitioning .route-aperture { visibility: visible; }
html.route-transitioning .route-aperture > span,html.route-transitioning .route-aperture > i { animation: route-close 360ms cubic-bezier(.7,0,.24,1) both; }
html.route-transitioning .route-aperture strong { animation: route-title 340ms 80ms var(--ease-out) both; }
html.route-resolving .route-aperture { visibility: visible; }
html.route-resolving .route-aperture > span,html.route-resolving .route-aperture > i { transform: scaleX(1); animation: route-open 420ms cubic-bezier(.76,0,.24,1) both; }
html.route-resolving .route-aperture strong { animation: route-title-out 240ms ease both; }

html.language-bridge-enter,html.language-return-staging { overflow: hidden; background: var(--ink); }
html.language-bridge-enter::before { content: ""; position: fixed; z-index: 2147483646; inset: 0; background: var(--ink); opacity: 1; pointer-events: none; transform: translateZ(0); backface-visibility: hidden; will-change: opacity; }
html.language-bridge-enter body { overflow: hidden; opacity: 0; filter: blur(12px) saturate(.72) brightness(.56); transform: scale(1.022); animation: none; will-change: opacity,filter,transform; }
html.language-bridge-enter.language-bridge-entering body { animation: language-hall-arrive 860ms cubic-bezier(.16,1,.3,1) both; }
html.language-bridge-enter.language-bridge-entering::before { animation: language-black-release 860ms cubic-bezier(.3,0,.2,1) both; }
html.language-return-staging body { overflow: hidden; pointer-events: none; }
html.language-return-running body { animation: language-return-source-v5 1320ms cubic-bezier(.4,0,.2,1) both; will-change: opacity,filter,transform; }
.language-return-stage { position: fixed; z-index: 2147483647; inset: 0; overflow: hidden; visibility: hidden; pointer-events: none; isolation: isolate; transform: translateZ(0); backface-visibility: hidden; }
html.language-return-staging .language-return-stage { visibility: visible; }
.language-return-stage::before { content: ""; position: absolute; z-index: 0; inset: 0; background: var(--ink); opacity: 0; }
.language-return-stage__gate { position: absolute !important; z-index: 1; inset: 0; min-height: 100% !important; background: transparent !important; }
.language-return-stage__gate .gate-inner { opacity: 0; filter: blur(14px); transform: none; will-change: opacity,filter; }
.language-return-stage__gate .reactive-mark,.language-return-stage__gate .language-options { animation: none; }
.language-return-stage__aperture { position: absolute; z-index: 2; left: var(--language-return-stage-x,50%); top: var(--language-return-stage-y,50%); width: calc(var(--language-return-stage-cover-radius,100vmax) * 2); height: calc(var(--language-return-stage-cover-radius,100vmax) * 2); border: clamp(4px,.48vw,7px) solid #78ad8d; border-radius: 50%; opacity: 0; pointer-events: none; transform: translate(-50%,-50%); box-shadow: 0 0 0 200vmax rgba(0,0,0,0),0 0 1px rgba(205,239,217,.72),0 0 14px rgba(137,202,163,.76),0 0 34px rgba(91,154,118,.42),inset 0 0 13px rgba(174,223,193,.62); will-change: width,height,opacity,box-shadow; }
html.language-return-running .language-return-stage::before { animation: language-return-surface-v5 1320ms cubic-bezier(.4,0,.2,1) both; }
html.language-return-running .language-return-stage__gate .gate-inner { animation: language-return-gate-v5 1320ms cubic-bezier(.16,1,.3,1) both; }
html.language-return-running .language-return-stage__aperture { animation: language-return-aperture-v5 1320ms cubic-bezier(.4,0,.2,1) both; }
html.navigation-source-frozen body { pointer-events: none; }
html.navigation-source-frozen body *,html.navigation-source-frozen body *::before,html.navigation-source-frozen body *::after { animation-play-state: paused !important; transition: none !important; }
html.navigation-source-frozen.gate-exiting .language-options { opacity: 1; transform: none; }
html.navigation-source-frozen.gate-exiting .gate-inner { animation: language-gate-depart 860ms cubic-bezier(.55,0,.78,.42) both; animation-play-state: running !important; will-change: filter,opacity; }
html.navigation-source-frozen.gate-exiting .pupil-transition,html.navigation-source-frozen.gate-exiting .pupil-transition i { animation-play-state: running !important; }

/* Footer */
.site-footer { display: flex; justify-content: center; padding: 1.75rem var(--page-pad); }
.site-footer p { margin: 0; color: var(--muted); font: 500 .6rem/1.4 var(--mono); letter-spacing: .1em; text-align: center; }

/* Language gate */
.language-page { overflow: hidden; }

@keyframes corvo-view-old { to { opacity: 0; transform: translateY(-5px); } }
@keyframes corvo-view-new { from { opacity: 0; transform: translateY(8px); } }
@keyframes route-close { from { transform: scaleX(0); } to { transform: scaleX(.52); } }
@keyframes route-open { from { transform: scaleX(.52); } to { transform: scaleX(0); } }
@keyframes route-title { to { opacity: 1; transform: none; } }
@keyframes route-title-out { from { opacity: 1; } to { opacity: 0; transform: translateY(-.5rem); } }

/* CORVO heritage entrance, rebuilt natively in Astro. */
.language-gate.language-gate--classic {
  position: relative;
  display: grid;
  place-items: center;
  grid-template-columns: 1fr;
  grid-template-rows: 1fr;
  min-height: 100svh;
  padding: 2rem;
  overflow: hidden;
  background: var(--ink);
  isolation: isolate;
}
.gate-inner { position: relative; z-index: 2; width: min(36rem,100%); min-width: 0; text-align: center; }
.reactive-mark {
  position: relative;
  display: block;
  width: clamp(15rem,32vw,24rem);
  aspect-ratio: 1;
  margin: 0 auto 2.5rem;
  transform: perspective(800px) rotateX(var(--eye-rx,0deg)) rotateY(var(--eye-ry,0deg));
  transition: transform 140ms var(--ease-out);
}
.reactive-mark.eye-tracking-resuming { transition: transform 560ms var(--ease-out); }
.reactive-mark.eye-geometry-locked { transform: perspective(800px) rotateX(0deg) rotateY(0deg) !important; transition: none !important; animation: none !important; }
.reactive-mark.eye-geometry-locked .reactive-mark__pupil { transform: translate(-50%,-50%) !important; transition: none !important; }
.reactive-mark.eye-tracking-resuming .reactive-mark__pupil { transition: transform 560ms var(--ease-out); }
.reactive-mark__visual { position: absolute; inset: 0; display: block; }
.reactive-mark__image { position: relative; z-index: 1; display: block; width: 100%; height: 100%; object-fit: contain; }
.reactive-mark__pupil {
  position: absolute;
  z-index: 2;
  left: 50%;
  top: 44.5801%;
  width: 3.2%;
  aspect-ratio: 1;
  border-radius: 50%;
  background: #8fc5a4;
  box-shadow: 0 0 4px rgba(143,197,164,.62),0 0 10px rgba(130,181,152,.24);
  transform: translate(calc(-50% + var(--eye-x,0px)),calc(-50% + var(--eye-y,0px)));
  transition: transform 90ms var(--ease-out);
  pointer-events: none;
}
.reactive-mark__code {
  position: absolute;
  z-index: 3;
  inset: 13% 7%;
  display: none;
  overflow: hidden;
  color: var(--accent);
  font: 500 clamp(.42rem,1.25vw,.62rem)/1 var(--mono);
  letter-spacing: .08em;
  pointer-events: none;
}
.reactive-mark__code::after {
  content: "";
  position: absolute;
  z-index: 2;
  left: 5%;
  right: 5%;
  top: 0;
  height: 1px;
  background: linear-gradient(90deg,transparent,rgba(130,181,152,.82) 22% 78%,transparent);
  box-shadow: 0 0 9px rgba(130,181,152,.38);
  opacity: 0;
}
.reactive-mark__code span { --code-x: -42%; position: absolute; left: 50%; width: max-content; opacity: 0; transform: translate3d(var(--code-x),0,0); white-space: nowrap; }
.reactive-mark__code span:nth-child(1) { --code-x: -86%; top: 17%; }
.reactive-mark__code span:nth-child(2) { --code-x: 16%; top: 29%; }
.reactive-mark__code span:nth-child(3) { --code-x: -72%; top: 42%; }
.reactive-mark__code span:nth-child(4) { --code-x: 9%; top: 55%; }
.reactive-mark__code span:nth-child(5) { --code-x: -91%; top: 68%; }
.reactive-mark__code span:nth-child(6) { --code-x: 20%; top: 80%; }
.language-options { display: grid; grid-template-columns: minmax(0,1fr) 1px minmax(0,1fr); align-items: end; gap: 1.5rem; }
.language-options a { position: relative; display: flex; flex-direction: column; gap: 1.45rem; min-width: 0; width: 100%; padding: .7rem .35rem 1.1rem; color: var(--paper); text-decoration: none; }
.language-options a span { color: var(--muted); font: 400 .62rem/1.25 var(--mono); letter-spacing: .1em; text-transform: uppercase; overflow-wrap: anywhere; }
.language-options a strong { position: relative; z-index: 0; isolation: isolate; align-self: center; font: 500 1rem/1 var(--mono); letter-spacing: .18em; transition: color 220ms ease; }
.language-options a strong::before {
  content: "";
  position: absolute;
  z-index: -1;
  left: 50%;
  top: 50%;
  width: 3.6rem;
  height: 3.6rem;
  border: 1px solid transparent;
  border-top-color: rgba(130,181,152,.2);
  border-right-color: var(--accent);
  border-bottom-color: rgba(130,181,152,.55);
  border-radius: 50%;
  opacity: 0;
  transform: translate(-50%,-50%) rotate(-55deg) scale(.82);
  filter: drop-shadow(0 0 3px rgba(130,181,152,.18));
  transition: opacity 180ms ease,transform 420ms var(--ease-out);
}
.language-options a strong::after { content: ""; position: absolute; left: calc(50% - 1.5px); top: calc(50% - 1.5px); width: 3px; height: 3px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 5px rgba(130,181,152,.58); opacity: 0; transform: rotate(-55deg) translateY(-1.8rem); }
.language-options a:hover strong,.language-options a:focus-visible strong { color: var(--accent); }
.language-options a:hover strong::before,.language-options a:focus-visible strong::before { opacity: 1; transform: translate(-50%,-50%) rotate(305deg) scale(1); animation: language-trail 2.4s linear 420ms infinite; }
.language-options a:hover strong::after,.language-options a:focus-visible strong::after { opacity: 1; animation: language-trail-dot 2.4s linear 420ms infinite; }
.language-divider { width: 1px; height: 1.25rem; margin-bottom: .975rem; background: var(--line); }
html.gate-entrance-skip .reactive-mark,html.gate-entrance-skip .language-options { animation: none; }
html.gate-natural-entry .reactive-mark__code { display: block; }
html.gate-natural-entry .reactive-mark__code::after { animation: eye-code-scan 1480ms 80ms cubic-bezier(.5,0,.2,1) both; }
html.gate-natural-entry .reactive-mark__code span { animation: eye-code-lock 1240ms var(--ease-out) both; }
html.gate-natural-entry .reactive-mark__code span:nth-child(2) { animation-delay: 55ms; }
html.gate-natural-entry .reactive-mark__code span:nth-child(3) { animation-delay: 110ms; }
html.gate-natural-entry .reactive-mark__code span:nth-child(4) { animation-delay: 165ms; }
html.gate-natural-entry .reactive-mark__code span:nth-child(5) { animation-delay: 220ms; }
html.gate-natural-entry .reactive-mark__code span:nth-child(6) { animation-delay: 275ms; }
html.gate-natural-entry .reactive-mark__image { animation: eye-code-resolve 1640ms var(--ease-out) both; }
html.gate-natural-entry .reactive-mark__pupil { animation: eye-code-pupil 1640ms var(--ease-out) backwards; }
html.gate-natural-entry .language-options { animation: gate-copy 520ms 1180ms var(--ease-out) both; }
.gate-preparing .gate-inner { animation: eye-entry-tremor 360ms ease-out both; }
.gate-preparing .reactive-mark::after { content: ""; position: absolute; z-index: 4; left: 10%; right: 10%; top: 20%; height: 1px; background: linear-gradient(90deg,transparent,rgba(143,207,170,.95) 24% 76%,transparent); box-shadow: 0 0 6px rgba(143,207,170,.72),0 0 14px rgba(130,181,152,.34); opacity: 0; pointer-events: none; animation: eye-entry-scan 360ms cubic-bezier(.4,0,.2,1) both; }
.gate-preparing .language-options { opacity: .62; transition: opacity 300ms ease; }
.pupil-transition { position: fixed; z-index: 2147483647; inset: 0; overflow: hidden; background: var(--ink); opacity: 0; pointer-events: none; clip-path: circle(0 at var(--pupil-x,50%) var(--pupil-y,50%)); will-change: clip-path,opacity; }
.pupil-transition i { --pupil-edge-width: clamp(5px,.6vw,8px); position: absolute; left: var(--pupil-x,50%); top: var(--pupil-y,50%); display: block; width: calc(var(--pupil-radius,.5rem) * 2); height: calc(var(--pupil-radius,.5rem) * 2); border: var(--pupil-edge-width) solid #78ad8d; border-radius: 50%; opacity: 0; pointer-events: none; transform: translate(-50%,-50%); background: transparent; box-shadow: 0 0 0 1px rgba(183,229,201,.58),0 0 9px 2px rgba(145,207,170,.82),0 0 28px 7px rgba(112,174,139,.42),inset 0 0 0 1px rgba(34,61,45,.78),inset 0 0 11px 3px rgba(166,218,187,.66),inset 0 0 30px 8px rgba(93,151,119,.3); will-change: left,top,width,height,opacity; }
.gate-exiting .pupil-transition { animation: pupil-cover 860ms cubic-bezier(.55,0,.78,.42) forwards; }
.gate-exiting .pupil-transition i { animation: pupil-edge-cover 860ms cubic-bezier(.55,0,.78,.42) forwards; }

.cinematic-hall { position: relative; height: 100dvh; min-height: 0; overflow: hidden; isolation: isolate; background: #070908; }
.cinematic-hall__media,.cinematic-hall__media img,.cinematic-hall__media video { position: absolute; inset: 0; width: 100%; height: 100%; }
.cinematic-hall__media { z-index: 1; overflow: hidden; background: #070908; }
.cinematic-hall__media img,.cinematic-hall__media video { object-fit: cover; object-position: center; }
.cinematic-hall__media img { z-index: 0; filter: saturate(.42) brightness(.48) contrast(1.35); transform: scale(1.025); }
.cinematic-hall__media video { z-index: 1; opacity: 0; filter: saturate(.46) brightness(.68) contrast(1.34); transform: scale(1.025); transition: opacity 900ms ease,filter 500ms ease,transform 10s linear; }
.cinematic-hall.is-video-ready .cinematic-hall__media video { opacity: 1; }
.cinematic-hall.is-video-ready .cinematic-hall__media video { transform: scale(1); }
.cinematic-hall__veil { position: absolute; z-index: 2; inset: 0; pointer-events: none; background: linear-gradient(90deg,rgba(3,5,4,.58),transparent 54%),linear-gradient(180deg,rgba(3,5,4,.18),transparent 34%,rgba(3,5,4,.72)); }
.cinematic-hall__copy { --hero-title-half: clamp(1.968rem,4.1vw,4.1rem); --hero-signature-gap: 1.45rem; --hero-signature-bottom: max(2rem,env(safe-area-inset-bottom)); position: absolute; z-index: 3; left: 0; right: 0; top: 0; display: block; width: auto; height: 100%; padding: var(--page-pad); color: var(--paper); text-align: center; pointer-events: none; }
.cinematic-hall__brand { position: absolute; left: 50%; top: 50%; width: max-content; max-width: 100%; transform: translate(-50%,-50%); }
.cinematic-hall__copy h1 { margin: 0; opacity: 0; clip-path: inset(-.25em 48%); filter: blur(8px) brightness(1.7); transform: scale(.985); font: 400 clamp(4.8rem,10vw,10rem)/.82 var(--display); letter-spacing: .08em; text-shadow: 0 0 2rem rgba(2,3,2,.68),0 0 1.2rem rgba(130,181,152,.25); }
.cinematic-hall__scanner { position: absolute; z-index: 2; left: -.45rem; right: -.45rem; top: 50%; height: 1px; opacity: 0; background: linear-gradient(90deg,transparent 0,var(--accent) 12%,#e6fff0 50%,var(--accent) 88%,transparent 100%); box-shadow: 0 0 .4rem rgba(198,239,214,.9),0 0 1.25rem rgba(130,181,152,.72),0 0 2.5rem rgba(130,181,152,.34); pointer-events: none; }
.cinematic-hall__statement { position: absolute; width: max-content; max-width: calc(100% - var(--page-pad) * 2); margin: 0; color: var(--paper); font: 500 clamp(.86rem,1.15vw,1.08rem)/1.4 var(--sans); letter-spacing: .08em; text-align: left; text-transform: uppercase; text-shadow: 0 0 1rem #020302; }
.cinematic-hall__statement--origin { left: 50%; bottom: calc(50% - var(--hero-title-half) - var(--hero-signature-gap) - 1.4em); font-size: clamp(.92rem,1.25vw,1.16rem); text-align: center; transform: translateX(-50%); }
.cinematic-hall__statement--destination { left: var(--page-pad); bottom: var(--hero-signature-bottom); }
.cinematic-hall__statement span { display: block; opacity: 1; clip-path: inset(0); filter: none; transform: none; }
.cinematic-hall__statement--origin span { opacity: 0; clip-path: inset(0 100% 0 0); filter: blur(4px) brightness(1.55); transform: translateX(-.55rem); }
.cinematic-hall__statement::after { content: ""; position: absolute; left: 0; top: -.15em; width: 1px; height: 1.7em; opacity: 0; background: linear-gradient(180deg,transparent,var(--accent),transparent); box-shadow: 0 0 .7rem rgba(130,181,152,.55); pointer-events: none; }
.cinematic-hall__handoff { position: absolute; z-index: 5; left: 50%; top: 50%; width: .38rem; height: .38rem; border: 1px solid rgba(219,244,228,.9); border-radius: 50%; background: var(--accent); opacity: 0; pointer-events: none; box-shadow: 0 0 .3rem rgba(220,249,231,.95),0 0 1.1rem rgba(130,181,152,.82),0 0 2.4rem rgba(130,181,152,.38); }
.cinematic-hall__handoff::after { content: ""; position: absolute; left: 50%; top: 50%; width: clamp(2.6rem,6vw,6rem); height: 1px; background: linear-gradient(90deg,rgba(208,240,220,.9),transparent); transform: translate(.15rem,-50%) rotate(29deg); transform-origin: left center; opacity: .62; }
html.home-intro-boot .cinematic-hall__statement--destination span { opacity: 0; clip-path: inset(0 100% 0 0); filter: blur(4px) brightness(1.55); transform: translateX(-.55rem); }
html.home-intro-running .cinematic-hall__copy h1 { animation: corvo-impact-title 3300ms 120ms cubic-bezier(.22,1,.36,1) both; }
html.home-intro-running .cinematic-hall__scanner { animation: corvo-impact-scanner 3300ms 120ms cubic-bezier(.4,0,.2,1) both; }
html.home-intro-running .cinematic-hall__statement--origin span { animation: corvo-impact-signature 700ms 1200ms cubic-bezier(.55,0,.32,1) both,corvo-impact-signature-dematerialize 650ms 2550ms cubic-bezier(.55,0,.32,1) forwards; }
html.home-intro-running .cinematic-hall__statement--origin::after { animation: corvo-impact-signature-scan 700ms 1200ms cubic-bezier(.4,0,.2,1) both,corvo-impact-signature-descan 650ms 2550ms cubic-bezier(.4,0,.2,1) forwards; }
html.home-intro-running .cinematic-hall__statement--destination span { animation: corvo-impact-signature 750ms 3550ms cubic-bezier(.55,0,.32,1) both; }
html.home-intro-running .cinematic-hall__statement--destination::after { animation: corvo-impact-signature-scan 750ms 3550ms cubic-bezier(.4,0,.2,1) both; }
html.home-intro-running .cinematic-hall__handoff { animation: corvo-identity-handoff 1050ms 2600ms cubic-bezier(.55,0,.32,1) both; }
html.home-intro-complete .cinematic-hall__statement--origin span { opacity: 0; clip-path: inset(0 50%); filter: blur(7px) brightness(1.8); transform: scaleX(.7); animation: none; }
html.home-intro-complete .cinematic-hall__statement--destination span {
  opacity: 1;
  clip-path: inset(0);
  filter: none;
  transform: none;
  animation: none;
}

@keyframes corvo-impact-title {
  0%,5% { opacity: 0; clip-path: inset(-.25em 48%); filter: blur(8px) brightness(1.7); transform: scale(.985); }
  13% { opacity: .32; clip-path: inset(-.25em 15%); filter: blur(5px) brightness(1.5); }
  30% { opacity: 1; clip-path: inset(-.25em 0); filter: blur(0) brightness(1); transform: scale(1); }
  62% { opacity: 1; clip-path: inset(-.25em 0); filter: blur(0) brightness(1); transform: scale(1); }
  73% { opacity: .72; clip-path: inset(-.25em 2%); filter: blur(1px) brightness(1.22); }
  88% { opacity: .18; clip-path: inset(-.25em 28%); filter: blur(5px) brightness(1.55); transform: scale(.99); }
  100% { opacity: 0; clip-path: inset(-.25em 50%); filter: blur(9px) brightness(1.8); transform: scale(.98); }
}
@keyframes corvo-impact-scanner {
  0% { top: 50%; opacity: 0; transform: scaleX(.08); }
  7% { opacity: 1; transform: scaleX(.48); }
  29% { top: calc(100% + .15rem); opacity: 0; transform: scaleX(1); }
  64% { top: calc(100% + .15rem); opacity: 0; transform: scaleX(.38); }
  72% { opacity: .92; transform: scaleX(1); }
  97%,100% { top: 50%; opacity: 0; transform: scaleX(.05); }
}
@keyframes corvo-impact-signature {
  0% { opacity: 0; clip-path: inset(0 100% 0 0); filter: blur(4px) brightness(1.55); transform: translateX(-.55rem); }
  45% { opacity: .72; clip-path: inset(0 14% 0 0); filter: blur(1px) brightness(1.18); transform: translateX(-.1rem); }
  100% { opacity: 1; clip-path: inset(0); filter: none; transform: none; }
}
@keyframes corvo-impact-signature-dematerialize {
  0%,18% { opacity: 1; clip-path: inset(0); filter: none; transform: none; }
  58% { opacity: .42; clip-path: inset(0 34%); filter: blur(3px) brightness(1.5); transform: scaleX(.84); }
  100% { opacity: 0; clip-path: inset(0 50%); filter: blur(7px) brightness(1.8); transform: scaleX(.7); }
}
@keyframes corvo-impact-signature-scan { 0% { left: 0; opacity: 0; } 12% { opacity: .85; } 100% { left: 100%; opacity: 0; } }
@keyframes corvo-impact-signature-descan { 0% { left: 100%; opacity: 0; } 18% { opacity: .92; } 100% { left: 0; opacity: 0; } }
@keyframes corvo-identity-handoff {
  0%,8% { opacity: 0; transform: translate(-50%,-50%) scale(.2); filter: blur(2px); }
  16% { opacity: 1; transform: translate(-50%,-50%) scale(1); filter: blur(0); }
  82% { opacity: .92; }
  100% { opacity: 0; transform: translate(calc(-50% - 50vw + var(--page-pad) + clamp(2.6rem,4vw,3.6rem)),calc(-50% - 50svh + var(--header-h) / 2)) scale(.5); filter: blur(1px); }
}
@keyframes home-nav-brand-arrive {
  0%,12% { opacity: 0; visibility: hidden; clip-path: inset(0 100% 0 0); filter: blur(5px) brightness(1.55); transform: translate(-.35rem,.12rem); }
  13% { opacity: .08; visibility: visible; clip-path: inset(0 92% 0 0); filter: blur(4px) brightness(1.48); transform: translate(-.3rem,.1rem); }
  46% { opacity: .64; visibility: visible; clip-path: inset(0 28% 0 0); filter: blur(2px) brightness(1.25); }
  100% { opacity: 1; visibility: visible; clip-path: inset(0); filter: none; transform: none; }
}

@keyframes gate-copy { from { opacity: 0; transform: translateY(.3rem); } to { opacity: 1; transform: none; } }
@keyframes eye-code-lock { 0% { opacity: 0; transform: translate3d(var(--code-x),.35rem,0); filter: blur(2px); } 18% { opacity: .2; } 42%,62% { opacity: .72; transform: translate3d(-50%,0,0); filter: blur(0); } 76% { opacity: .28; transform: translate3d(-50%,0,0); } 100% { opacity: 0; transform: translate3d(-50%,0,0); filter: blur(1px); } }
@keyframes eye-code-scan { 0%,8% { opacity: 0; transform: translateY(0); } 16% { opacity: .82; } 72% { opacity: .34; } 100% { opacity: 0; transform: translateY(16.5rem); } }
@keyframes eye-code-resolve { 0%,20% { opacity: 0; clip-path: inset(48% 48% 48%); filter: blur(7px); } 32% { opacity: .2; clip-path: inset(41% 12% 40%); } 45% { opacity: .48; clip-path: inset(28% 7% 27%); filter: blur(2px); } 59% { opacity: .82; clip-path: inset(8% 3% 9%); } 72%,100% { opacity: 1; clip-path: inset(0); filter: blur(0); } }
@keyframes eye-code-pupil { 0%,61% { opacity: 0; transform: translate(-50%,-50%) scale(.15); } 72% { opacity: .45; transform: translate(-50%,-50%) scale(.55); } 82% { opacity: 1; transform: translate(-50%,-50%) scale(1.18); } 90%,100% { opacity: 1; transform: translate(-50%,-50%) scale(1); } }
@keyframes language-trail { to { transform: translate(-50%,-50%) rotate(665deg) scale(1); } }
@keyframes language-trail-dot { from { transform: rotate(305deg) translateY(-1.8rem); } to { transform: rotate(665deg) translateY(-1.8rem); } }
@keyframes eye-entry-tremor { 0%,100% { transform: translate3d(0,0,0); } 24% { transform: translate3d(-.7px,.2px,0); } 43% { transform: translate3d(.9px,-.3px,0); } 62% { transform: translate3d(-.45px,.15px,0); } 81% { transform: translate3d(.2px,0,0); } }
@keyframes eye-entry-scan { 0% { top: 20%; opacity: 0; transform: scaleX(.35); } 18% { opacity: .9; } 76% { opacity: .68; transform: scaleX(1); } 100% { top: 70%; opacity: 0; transform: scaleX(.72); } }
@keyframes pupil-cover { 0% { opacity: 1; clip-path: circle(var(--pupil-radius,.5rem) at var(--pupil-x,50%) var(--pupil-y,50%)); } 100% { opacity: 1; clip-path: circle(var(--pupil-cover-radius,100vmax) at var(--pupil-x,50%) var(--pupil-y,50%)); } }
@keyframes pupil-edge-cover { 0% { width: calc(var(--pupil-radius,.5rem) * 2); height: calc(var(--pupil-radius,.5rem) * 2); opacity: 1; } 68% { opacity: .96; } 100% { width: calc(var(--pupil-cover-radius,100vmax) * 2); height: calc(var(--pupil-cover-radius,100vmax) * 2); opacity: 0; } }
@keyframes language-gate-depart { 0%,34% { opacity: 1; filter: blur(0); } 72% { opacity: .22; filter: blur(7px); } 100% { opacity: 0; filter: blur(12px); } }
@keyframes language-hall-arrive { 0% { opacity: 0; filter: blur(12px) saturate(.72) brightness(.56); transform: scale(1.022); } 32% { opacity: .32; filter: blur(8px) saturate(.8) brightness(.7); } 68% { opacity: .86; filter: blur(2px) saturate(.96) brightness(.95); } 100% { opacity: 1; filter: blur(0) saturate(1) brightness(1); transform: scale(1); } }
@keyframes language-black-release { 0%,12% { opacity: 1; } 52% { opacity: .48; } 100% { opacity: 0; } }
@keyframes language-return-source-v5 { 0% { opacity: 1; filter: blur(0) saturate(1) brightness(1); transform: scale(1); } 24% { opacity: .94; filter: blur(1px) saturate(.97) brightness(.94); } 54% { opacity: .7; filter: blur(5px) saturate(.86) brightness(.7); transform: scale(1.006); } 78% { opacity: .22; filter: blur(12px) saturate(.7) brightness(.38); } 100% { opacity: 0; filter: blur(17px) saturate(.62) brightness(.24); transform: scale(1.014); } }
@keyframes language-return-surface-v5 { 0%,18% { opacity: 0; } 42% { opacity: .18; } 66% { opacity: .7; } 82%,100% { opacity: 1; } }
@keyframes language-return-gate-v5 { 0%,36% { opacity: 0; filter: blur(14px); } 54% { opacity: .16; filter: blur(10px); } 70% { opacity: .58; filter: blur(5px); } 86% { opacity: .94; filter: blur(1.5px); } 100% { opacity: 1; filter: blur(0); } }
@keyframes language-return-aperture-v5 {
  0% { width: calc(var(--language-return-stage-cover-radius,100vmax) * 2); height: calc(var(--language-return-stage-cover-radius,100vmax) * 2); opacity: 0; box-shadow: 0 0 0 200vmax rgba(0,0,0,0),0 0 1px rgba(205,239,217,.72),0 0 14px rgba(137,202,163,.76),0 0 34px rgba(91,154,118,.42),inset 0 0 13px rgba(174,223,193,.62); }
  15% { opacity: .24; }
  48% { opacity: .88; box-shadow: 0 0 0 200vmax rgba(0,0,0,.54),0 0 1px rgba(205,239,217,.72),0 0 14px rgba(137,202,163,.76),0 0 34px rgba(91,154,118,.42),inset 0 0 13px rgba(174,223,193,.62); }
  74% { opacity: .96; box-shadow: 0 0 0 200vmax rgba(0,0,0,.88),0 0 1px rgba(205,239,217,.72),0 0 14px rgba(137,202,163,.76),0 0 34px rgba(91,154,118,.42),inset 0 0 13px rgba(174,223,193,.62); }
  92% { width: calc(var(--language-return-stage-pupil-radius,.5rem) * 2); height: calc(var(--language-return-stage-pupil-radius,.5rem) * 2); opacity: .92; box-shadow: 0 0 0 200vmax rgba(0,0,0,.18),0 0 1px rgba(205,239,217,.72),0 0 12px rgba(137,202,163,.7),0 0 24px rgba(91,154,118,.34),inset 0 0 9px rgba(174,223,193,.56); }
  100% { width: calc(var(--language-return-stage-pupil-radius,.5rem) * 2); height: calc(var(--language-return-stage-pupil-radius,.5rem) * 2); opacity: 0; box-shadow: 0 0 0 200vmax rgba(0,0,0,0),0 0 1px rgba(205,239,217,0),0 0 10px rgba(137,202,163,0),0 0 20px rgba(91,154,118,0),inset 0 0 8px rgba(174,223,193,0); }
}

.home-experience { height: 100dvh; min-height: 0; overflow: hidden; background: var(--ink); color: var(--paper); }

/* Shared project rail */
.project-rail { display: block; position: relative; }
.project-rail__track { display: flex; gap: clamp(1.1rem,2.6vw,2.8rem); overflow-x: auto; overscroll-behavior-inline: contain; padding: 0 var(--page-pad) 1.5rem; scroll-padding-inline: var(--page-pad); scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--accent) transparent; }
.project-rail__track::-webkit-scrollbar { height: 2px; }
.project-rail__track::-webkit-scrollbar-thumb { background: var(--accent); }
.project-card { flex: 0 0 min(76vw,72rem); scroll-snap-align: start; }
.project-card > a { position: relative; display: grid; color: var(--paper); text-decoration: none; }
.project-card__media { position: relative; aspect-ratio: 16/8.6; overflow: hidden; background: var(--surface); isolation: isolate; }
.project-card__media::after { content: ""; position: absolute; z-index: 4; inset: 0; border: 1px solid var(--line); pointer-events: none; transition: border-color 260ms ease; }
.project-card__media img,.project-card__media video { position: absolute; z-index: 0; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: saturate(.78) contrast(1.08) brightness(.78); transition: opacity 520ms ease,transform 1.2s var(--ease-out),filter 520ms ease; }
.project-card__media video { z-index: 1; opacity: 0; }
.project-card__shade { position: absolute; z-index: 2; inset: 0; background: linear-gradient(90deg,rgba(5,7,6,.82),rgba(5,7,6,.35) 44%,transparent 72%),linear-gradient(180deg,transparent 38%,rgba(5,7,6,.74)); pointer-events: none; }
.project-card__signature { position: absolute; z-index: 3; left: 0; right: 0; bottom: 0; height: 2px; background: linear-gradient(90deg,var(--accent),rgba(130,181,152,.35) 34%,transparent 82%); transform: scaleX(0); transform-origin: left; }
.project-card__index { position: absolute; z-index: 3; right: clamp(1rem,2vw,2rem); bottom: clamp(.8rem,1.5vw,1.4rem); color: rgba(239,242,237,.68); font: 400 clamp(2.4rem,5vw,5.8rem)/1 var(--display); letter-spacing: .03em; }
.project-card.is-active .project-card__signature { animation: card-signature 760ms var(--ease-out) both; }
.project-card.is-active .project-card__media::after { border-color: rgba(130,181,152,.22); }
.project-card.is-playing .project-card__media img { opacity: 0; }
.project-card.is-playing .project-card__media video { opacity: 1; }
.project-card > a:hover .project-card__media img,.project-card > a:focus-visible .project-card__media img,.project-card.is-active .project-card__media img { transform: scale(1.012); filter: saturate(.9) contrast(1.04) brightness(.86); }
.project-card > a:hover .project-card__media video,.project-card > a:focus-visible .project-card__media video,.project-card.is-active .project-card__media video { transform: scale(1.012); filter: saturate(.92) contrast(1.04) brightness(.88); }
.project-card__body { display: grid; grid-template-columns: 1fr minmax(14rem,.55fr); gap: .75rem 2rem; padding-top: 1.15rem; }
.project-card__meta { grid-column: 1/-1; display: flex; justify-content: space-between; gap: 1rem; padding-bottom: .65rem; border-bottom: 1px solid var(--line); color: var(--muted); font: 500 .6rem/1 var(--mono); letter-spacing: .12em; }
.project-card h3 { grid-column: 1; margin: .35rem 0 0; font: 400 clamp(2.8rem,6vw,6.5rem)/.85 var(--display); letter-spacing: -.025em; }
.project-card p { grid-column: 2; margin: .5rem 0 0; color: var(--muted); font: 400 clamp(.92rem,1.1vw,1.08rem)/1.58 var(--sans); }
.project-card__footer { grid-column: 1/-1; display: flex; justify-content: space-between; gap: 1rem; margin-top: .65rem; color: var(--muted-low); font: 500 .58rem/1.4 var(--mono); letter-spacing: .1em; }
.project-card__footer strong { color: var(--paper); font-weight: 500; }
.project-card__footer i { color: var(--accent); font-style: normal; }
.project-rail[data-layout="vertical"] .project-card__footer > span { display: none; }
.project-rail[data-layout="vertical"] .project-card__footer strong { position: relative; isolation: isolate; display: inline-flex; gap: .7rem; align-items: center; justify-content: center; min-width: 12rem; min-height: 3.2rem; padding: .8rem 1rem; overflow: hidden; border: 1px solid rgba(239,242,237,.58); color: var(--paper); font: 500 .62rem/1 var(--mono); letter-spacing: .11em; }
.project-rail[data-layout="vertical"] .project-card__footer strong::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--paper); transform: translateY(102%); transition: transform 360ms var(--ease-out); }
.project-rail[data-layout="vertical"] .project-card > a:hover .project-card__footer strong,.project-rail[data-layout="vertical"] .project-card > a:focus-visible .project-card__footer strong { color: var(--ink); }
.project-rail[data-layout="vertical"] .project-card > a:hover .project-card__footer strong::before,.project-rail[data-layout="vertical"] .project-card > a:focus-visible .project-card__footer strong::before { transform: none; }
.project-rail[data-layout="vertical"] .project-card > a:hover .project-card__footer i,.project-rail[data-layout="vertical"] .project-card > a:focus-visible .project-card__footer i { color: var(--ink); }
.project-rail[data-layout="vertical"] .project-card--union .project-card__media img,.project-rail[data-layout="vertical"] .project-card--union .project-card__media video { object-position: 60% 50%; }
.project-rail[data-layout="vertical"] { display: block; background: var(--ink); }
.project-rail[data-layout="vertical"] .project-rail__track { display: block; overflow: visible; padding: 0; scroll-padding: 0; scroll-snap-type: none; scrollbar-width: none; }
.project-rail[data-layout="vertical"] .project-card { position: relative; width: 100%; min-height: 100svh; scroll-snap-align: none; }
.project-rail[data-layout="vertical"] .project-card > a { position: relative; isolation: isolate; display: grid; align-items: end; min-height: 100svh; overflow: hidden; }
.project-rail[data-layout="vertical"] .project-card__media { position: absolute; inset: 0; width: 100%; height: 100%; min-height: 0; aspect-ratio: auto; }
.project-rail[data-layout="vertical"] .project-card__media::after { border-color: rgba(239,242,237,.08); }
.project-rail[data-layout="vertical"] .project-card__media img,.project-rail[data-layout="vertical"] .project-card__media video { filter: saturate(.68) contrast(1.12) brightness(.66); transform: scale(1.018); }
.project-rail[data-layout="vertical"] .project-card__shade { background: linear-gradient(90deg,rgba(4,6,5,.88),rgba(4,6,5,.28) 48%,transparent 74%),linear-gradient(180deg,rgba(3,5,4,.55),transparent 29%,transparent 50%,rgba(3,5,4,.86)); }
.project-rail[data-layout="vertical"] .project-card__body { position: relative; z-index: 5; left: auto; bottom: auto; display: block; align-self: end; width: min(52rem,100%); padding: clamp(7rem,14vh,11rem) var(--page-pad) max(4.5rem,env(safe-area-inset-bottom)); }
.project-rail[data-layout="vertical"] .project-card__meta { position: relative; display: flex; justify-content: flex-start; gap: 1.1rem; width: max-content; max-width: 100%; margin: 0 0 1.2rem; padding: .68rem 1rem; border: 1px solid rgba(239,242,237,.16); color: rgba(239,242,237,.78); clip-path: polygon(.65rem 0,100% 0,calc(100% - .65rem) 100%,0 100%); background: rgba(6,9,7,.34); backdrop-filter: blur(8px); }
.project-rail[data-layout="vertical"] .project-card h3 { margin: 0; font-size: clamp(4.4rem,10vw,10rem); line-height: .78; text-shadow: 0 0 2.2rem rgba(0,0,0,.72); }
.project-rail[data-layout="vertical"] .project-card p { display: block; max-width: 38rem; margin: 1.4rem 0 0; color: rgba(239,242,237,.82); font-size: clamp(.96rem,1.2vw,1.12rem); line-height: 1.58; }
.project-rail[data-layout="vertical"] .project-card__footer { display: flex; justify-content: flex-start; margin-top: 1.7rem; }
.project-rail[data-layout="vertical"] .project-card__footer strong { min-width: 12.5rem; clip-path: polygon(.75rem 0,100% 0,calc(100% - .75rem) 100%,0 100%); }
.project-rail[data-layout="vertical"] .project-card:nth-child(even) .project-card__shade { background: linear-gradient(-90deg,rgba(4,6,5,.88),rgba(4,6,5,.28) 48%,transparent 74%),linear-gradient(180deg,rgba(3,5,4,.55),transparent 29%,transparent 50%,rgba(3,5,4,.86)); }
.project-rail[data-layout="vertical"] .project-card:nth-child(even) .project-card__signature { background: linear-gradient(-90deg,var(--accent),rgba(130,181,152,.35) 34%,transparent 82%); transform-origin: right; }
.project-rail[data-layout="vertical"] .project-card:nth-child(even) .project-card__body { justify-self: end; text-align: right; }
.project-rail[data-layout="vertical"] .project-card:nth-child(even) .project-card__meta { margin-left: auto; clip-path: polygon(0 0,calc(100% - .65rem) 0,100% 100%,.65rem 100%); }
.project-rail[data-layout="vertical"] .project-card:nth-child(even) .project-card p { margin-left: auto; }
.project-rail[data-layout="vertical"] .project-card:nth-child(even) .project-card__footer { justify-content: flex-end; }
.project-rail[data-layout="vertical"] .project-card:nth-child(even) .project-card__footer strong { clip-path: polygon(0 0,calc(100% - .75rem) 0,100% 100%,.75rem 100%); }
.project-rail[data-layout="vertical"].is-enhanced .project-card:not(.is-active) .project-card__body > * { opacity: 0; transform: translateY(1.35rem); }
.project-rail[data-layout="vertical"].is-enhanced .project-card.is-active .project-card__body > * { opacity: 1; transform: none; transition: opacity 620ms ease,transform 760ms var(--ease-out); }
.project-rail[data-layout="vertical"].is-enhanced .project-card.is-active .project-card__body > :nth-child(2) { transition-delay: 90ms; }
.project-rail[data-layout="vertical"].is-enhanced .project-card.is-active .project-card__body > :nth-child(3) { transition-delay: 170ms; }
.project-rail[data-layout="vertical"].is-enhanced .project-card.is-active .project-card__body > :nth-child(4) { transition-delay: 250ms; }
.project-rail__controls { display: flex; gap: 1rem; align-items: center; justify-content: flex-end; padding: 1rem var(--page-pad) 0; }
.project-rail__controls > button { display: grid; place-items: center; width: 3rem; height: 3rem; border: 1px solid var(--line-strong); background: transparent; color: var(--paper); cursor: pointer; transition: border-color 180ms ease,color 180ms ease,background 220ms ease; }
.project-rail__controls > button:hover,.project-rail__controls > button:focus-visible { border-color: var(--paper); color: var(--ink); background: var(--paper); }
.project-rail__controls > button:disabled { opacity: .28; cursor: default; transform: none; }
.project-rail__controls > span { display: flex; gap: .6rem; align-items: center; min-width: 5.5rem; color: var(--muted); font: 500 .58rem/1 var(--mono); }
.project-rail__controls b,.project-rail__controls em { font-style: normal; font-weight: 500; }
.project-rail__controls b { color: var(--accent); }
.project-rail__controls i { flex: 1; height: 1px; background: var(--line-strong); }
.project-rail--archive .project-card { flex-basis: min(68vw,64rem); }

/* Projects archive — the preview crystal is the interface. */
.work-main { min-height: 100svh; padding-top: 0; }
.work-archive {
  display: block;
  min-height: 100svh;
  padding: var(--header-h) var(--page-pad) max(1rem,env(safe-area-inset-bottom));
  overflow: clip;
  background: radial-gradient(ellipse at 50% 43%,rgba(130,181,152,.035),transparent 42%),#070908;
}
.project-orbit {
  --orbit-radius: clamp(5.5rem,8vw,8.5rem);
  --orbit-crystal-width: clamp(20rem,min(34vw,52svh),32rem);
  --orbit-center-y: 39%;
  --orbit-control-width: min(78vw,62rem);
  --crystal-path: polygon(50% 0,93% 50%,50% 100%,7% 50%);
  --orbit-drag-angle: 0deg;
  --orbit-tilt-x: 0deg;
  --orbit-tilt-y: 0deg;
  position: relative;
  z-index: 2;
  display: block;
  width: 100%;
  min-height: calc(100svh - var(--header-h) - max(1rem,env(safe-area-inset-bottom)));
}
.project-orbit__stage {
  position: relative;
  display: block;
  width: 100%;
  min-height: inherit;
  perspective: 1200px;
  perspective-origin: 50% var(--orbit-center-y);
  touch-action: pan-y;
  user-select: none;
  cursor: grab;
}
.project-orbit.is-dragging .project-orbit__stage { cursor: grabbing; }
.project-orbit__ring--outer {
  position: absolute;
  z-index: 0;
  left: 50%;
  top: var(--orbit-center-y);
  width: min(70vw,58rem);
  height: clamp(8rem,14vw,13rem);
  aspect-ratio: auto;
  border: 1px solid rgba(130,181,152,.13);
  border-radius: 50%;
  pointer-events: none;
  transform: translate(-50%,-50%) rotate(-3deg);
  box-shadow: 0 0 2.5rem rgba(130,181,152,.018),inset 0 0 2rem rgba(130,181,152,.018);
}
.project-orbit__ring--outer::before,.project-orbit__ring--outer::after { display: none; }
.project-orbit__system {
  position: absolute;
  z-index: 1;
  inset: 0;
  transform-style: preserve-3d;
  transform: rotateX(var(--orbit-tilt-x)) rotateY(var(--orbit-tilt-y));
  transition: transform 540ms var(--ease-out);
}
.project-orbit__carrier {
  position: absolute;
  left: 50%;
  top: var(--orbit-center-y);
  width: var(--orbit-crystal-width);
  aspect-ratio: 1;
  opacity: var(--orbit-opacity);
  filter: blur(var(--orbit-blur));
  transform-style: preserve-3d;
  transform: translate3d(calc(-50% + var(--orbit-shift-x,0rem)),calc(-50% + var(--orbit-shift-y)),0) rotateY(calc(var(--orbit-angle) + var(--orbit-drag-angle))) translateZ(var(--orbit-radius));
  transition: transform 720ms cubic-bezier(.18,.82,.18,1),opacity 520ms ease,filter 520ms ease;
  will-change: transform,opacity,filter;
}
.project-crystal {
  position: relative;
  isolation: isolate;
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--paper);
  text-decoration: none;
  cursor: pointer;
  clip-path: var(--crystal-path);
  transform-style: preserve-3d;
  transform: rotateY(calc(var(--orbit-counter-angle) - var(--orbit-drag-angle))) scale(var(--orbit-scale));
  transition: transform 720ms cubic-bezier(.18,.82,.18,1);
  will-change: transform;
}
.project-crystal::after {
  content: "";
  position: absolute;
  z-index: 0;
  inset: -.18rem;
  opacity: 0;
  pointer-events: none;
  clip-path: var(--crystal-path);
  background: rgba(218,238,226,.92);
  transform: scale(.99);
  transition: opacity 160ms ease,transform 260ms var(--ease-out);
}
.project-crystal:focus-visible::after { opacity: 1; transform: scale(1); }
.project-orbit.is-dragging .project-orbit__carrier,.project-orbit.is-dragging .project-crystal { transition-duration: 80ms; transition-timing-function: linear; }
.project-crystal__geometry {
  position: absolute;
  z-index: 1;
  inset: 0;
  display: block;
  overflow: hidden;
  clip-path: var(--crystal-path);
  background: rgba(130,181,152,.28);
  filter: drop-shadow(0 2rem 2.5rem rgba(0,0,0,.64));
  transition: background 260ms ease,filter 420ms ease;
}
.project-crystal__surface {
  position: absolute;
  inset: 1px;
  display: block;
  overflow: hidden;
  clip-path: inherit;
  background: #030504;
}
.project-crystal__surface img,.project-crystal__surface video {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  pointer-events: none;
  transform: scale(1.025);
  transition: opacity 520ms ease,filter 620ms ease,transform 1200ms var(--ease-out);
}
.project-crystal__surface img { z-index: 1; opacity: .72; filter: saturate(.62) contrast(1.08) brightness(.72); }
.project-crystal__surface video { z-index: 2; opacity: 0; filter: saturate(.74) contrast(1.08) brightness(.86); }
.project-orbit__carrier.is-playing .project-crystal__surface img { opacity: 0; }
.project-orbit__carrier.is-playing .project-crystal__surface video { opacity: 1; }
.project-crystal__surface::after {
  content: "";
  position: absolute;
  z-index: 4;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(135deg,rgba(239,242,237,.035),transparent 35%,rgba(0,0,0,.16)),linear-gradient(180deg,rgba(2,4,3,.08),transparent 54%,rgba(2,4,3,.34));
}
.project-orbit__carrier.is-active .project-crystal__geometry {
  background: rgba(162,206,179,.62);
  filter: drop-shadow(0 2.25rem 2.8rem rgba(0,0,0,.7)) drop-shadow(0 0 .75rem rgba(130,181,152,.08));
}
.project-orbit__carrier.is-active .project-crystal__surface img { opacity: .98; filter: saturate(.78) contrast(1.08) brightness(.92); transform: scale(1.035); }
.project-orbit__carrier.is-active.is-playing .project-crystal__surface img { opacity: 0; }
.project-orbit__carrier.is-active .project-crystal__surface video { transform: scale(1.035); }
.project-crystal:hover .project-crystal__geometry,.project-crystal:focus-visible .project-crystal__geometry {
  background: rgba(190,222,201,.78);
  filter: drop-shadow(0 2.2rem 2.7rem rgba(0,0,0,.7)) drop-shadow(0 0 .45rem rgba(130,181,152,.16));
}
.project-crystal:focus-visible .project-crystal__geometry { background: rgba(239,242,237,.92); filter: drop-shadow(0 0 .65rem rgba(239,242,237,.2)) drop-shadow(0 0 1rem rgba(130,181,152,.2)); }

.project-orbit__controls {
  position: absolute;
  z-index: 110;
  left: 50%;
  top: var(--orbit-center-y);
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: var(--orbit-control-width);
  transform: translate(-50%,-50%);
  pointer-events: none;
}
.project-orbit__control {
  position: relative;
  display: grid;
  place-items: center;
  width: 3.25rem;
  height: 3.25rem;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: rgba(239,242,237,.54);
  cursor: pointer;
  pointer-events: auto;
  transition: color 220ms ease,transform 320ms var(--ease-out);
}
.project-orbit__control::before,.project-orbit__control::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  pointer-events: none;
  transform: translate(-50%,-50%) rotate(45deg);
  transition: border-color 220ms ease,opacity 220ms ease,transform 320ms var(--ease-out);
}
.project-orbit__control::before {
  width: 2.35rem;
  height: 2.35rem;
  border: 1px solid rgba(130,181,152,.28);
  opacity: .72;
}
.project-orbit__control::after {
  width: .22rem;
  height: .22rem;
  background: var(--accent);
  box-shadow: 0 0 .55rem rgba(130,181,152,.28);
}
.project-orbit__control span {
  position: relative;
  z-index: 1;
  display: block;
  width: .62rem;
  height: .62rem;
  border-top: 1px solid currentColor;
  border-right: 1px solid currentColor;
}
.project-orbit__control--previous span { transform: translateX(.12rem) rotate(-135deg); }
.project-orbit__control--next span { transform: translateX(-.12rem) rotate(45deg); }
.project-orbit__control:hover,.project-orbit__control:focus-visible { color: var(--paper); }
.project-orbit__control:hover::before,.project-orbit__control:focus-visible::before { border-color: rgba(130,181,152,.72); opacity: 1; transform: translate(-50%,-50%) rotate(45deg) scale(1.08); }
.project-orbit__control:active { transform: scale(.92); }

.project-orbit__details {
  position: absolute;
  z-index: 120;
  left: 50%;
  top: calc(var(--orbit-center-y) + (var(--orbit-crystal-width) / 2) + clamp(.8rem,1.8vh,1.2rem));
  display: grid;
  width: min(92%,48rem);
  min-height: 7rem;
  text-align: center;
  transform: translateX(-50%);
  pointer-events: none;
}
.project-orbit__panel {
  grid-area: 1 / 1;
  align-self: end;
  visibility: hidden;
  opacity: 0;
  transform: translateY(.75rem);
  transition: opacity 260ms ease,transform 520ms var(--ease-out),visibility 0s linear 520ms;
}
.project-orbit__panel.is-active { visibility: visible; opacity: 1; transform: none; transition-delay: 250ms,250ms,0s; }
.project-orbit__eyebrow {
  display: block;
  margin: 0 0 .65rem;
  color: var(--accent);
  font: 500 clamp(.52rem,.65vw,.6rem)/1 var(--mono);
  letter-spacing: .17em;
}
.project-orbit__panel h2 {
  max-width: none;
  margin: 0;
  font: 400 clamp(2.25rem,4.5vw,4.6rem)/.86 var(--display);
  letter-spacing: .055em;
  text-shadow: 0 0 2rem rgba(0,0,0,.78);
}
.project-orbit__summary {
  max-width: 38rem;
  margin: .8rem auto 0;
  color: rgba(239,242,237,.7);
  font: 400 clamp(.86rem,1.05vw,1rem)/1.5 var(--sans);
}
project-orbit:not(:defined) .project-orbit__stage { display: block; }
project-orbit:not(:defined) .project-orbit__carrier:not(.is-active),project-orbit:not(:defined) .project-orbit__panel:not(.is-active) { visibility: hidden; pointer-events: none; }
project-orbit:not(:defined) .project-orbit__details { display: grid; min-height: 7rem; }

@media (max-width: 1000px) {
  .project-orbit { --orbit-radius: clamp(4.5rem,8vw,6.5rem); --orbit-crystal-width: clamp(18rem,min(45vw,49svh),27rem); grid-template-columns: none; column-gap: 0; }
  .project-orbit__panel h2 { font-size: clamp(2.15rem,5.5vw,3.8rem); }
}

@media (max-width: 760px) {
  .work-archive { padding: var(--header-h) var(--page-pad) max(.75rem,env(safe-area-inset-bottom)); }
  .project-orbit {
    --orbit-radius: clamp(3.25rem,13vw,4.75rem);
    --orbit-crystal-width: min(70vw,19.5rem);
    --orbit-control-width: min(100%,34rem);
    min-height: calc(100svh - var(--header-h) - max(.75rem,env(safe-area-inset-bottom)));
    padding-top: 0;
  }
  .project-orbit__stage { grid-column: auto; grid-row: auto; min-height: inherit; perspective: 920px; perspective-origin: 50% var(--orbit-center-y); }
  .project-orbit__ring--outer { width: min(112%,34rem); height: clamp(6rem,24vw,8.5rem); }
  .project-orbit__control { width: 2.9rem; height: 2.9rem; }
  .project-orbit__control::before { width: 2rem; height: 2rem; }
  .project-orbit__details { width: min(100%,31rem); min-height: 7rem; }
  .project-orbit__eyebrow { margin-bottom: .6rem; font-size: .49rem; }
  .project-orbit__panel h2 { font-size: clamp(2rem,11vw,3.5rem); }
  .project-orbit__summary { max-width: 28rem; margin-top: .65rem; font-size: .84rem; line-height: 1.44; }
}

@media (max-height: 650px) and (min-width: 761px) {
  .work-archive { padding-top: var(--header-h); padding-bottom: .5rem; }
  .project-orbit { --orbit-crystal-width: clamp(17rem,min(30vw,47svh),21rem); min-height: calc(100svh - var(--header-h) - .5rem); }
  .project-orbit__stage { min-height: inherit; }
  .project-orbit { --orbit-center-y: 37%; }
  .project-orbit__details { min-height: 6rem; }
  .project-orbit__eyebrow { margin-bottom: .45rem; }
  .project-orbit__panel h2 { font-size: clamp(2rem,4vw,3.15rem); }
  .project-orbit__summary { margin-top: .5rem; font-size: .85rem; }
}

@keyframes card-signature { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes panel-copy-reveal { from { opacity: 0; transform: translateY(1.25rem); } to { opacity: 1; transform: none; } }

/* About — the original CORVO composition, rendered by Astro. */
.internal-main { min-height: 100vh; padding: var(--header-h) var(--page-pad) 0; }
.info-about-page .internal-main { padding: var(--header-h) var(--page-pad) 0; }
.about-stage { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0; align-items: stretch; min-height: max(calc(100svh - var(--header-h)),42rem); width: 100%; max-width: none; margin-inline: auto; padding-block: clamp(3.5rem,7vh,6rem); }
.about-stage__copy { position: relative; z-index: 2; align-self: center; justify-self: center; width: min(100%,42rem); padding-inline: 0; text-align: center; }
.internal-header { width: max-content; max-width: 100%; margin: 0 auto clamp(2.75rem,4vw,3.5rem); text-align: center; }
.internal-kicker { width: 100%; margin: 0 0 1.5rem; color: var(--accent); font: 500 .61rem/1 var(--mono); letter-spacing: .16em; text-align: center; }
.internal-header h1 { margin: 0; font: 500 clamp(3.4rem,5.6vw,6rem)/.9 var(--sans); letter-spacing: -.05em; text-transform: uppercase; }
.internal-copy { width: 100%; max-width: 32rem; margin: 0 auto; color: #c3c9c3; font: 400 clamp(1rem,1.2vw,1.14rem)/1.62 var(--sans); text-align: center; }
.internal-copy > p { max-width: 32rem; margin: 0 auto; }
.internal-copy strong { color: var(--paper); }
.about-process { position: relative; align-self: stretch; justify-self: stretch; display: grid; grid-template-rows: auto minmax(6.5rem,auto); align-content: center; justify-items: center; row-gap: clamp(.65rem,1.8vh,1.25rem); width: 100%; min-width: 0; min-height: clamp(36rem,72svh,52rem); max-width: none; margin: 0; color: var(--accent); overflow: visible; }
.about-process__map { position: relative; width: min(100%,70rem); overflow: visible; isolation: isolate; touch-action: pan-y; }
.about-process__map::before,.about-process__map::after { content: ""; position: absolute; z-index: 3; top: 0; bottom: 0; width: 10%; pointer-events: none; }
.about-process__map::before { left: 0; background: linear-gradient(90deg,var(--ink),transparent); }
.about-process__map::after { right: 0; background: linear-gradient(-90deg,var(--ink),transparent); }
.about-process__visual { display: block; width: 100%; height: auto; }
.about-process__grid { color: var(--paper); }
.about-process__route { opacity: .42; transition: opacity 320ms ease; }
.about-process__idea,.about-process__software,.about-process__machine,.about-process__result { opacity: .075; filter: brightness(.56) blur(.25px); transform-box: fill-box; transform-origin: center; transition: opacity 260ms ease,filter 320ms ease; }
.about-process[data-active-phase="0"] .about-process__idea,.about-process[data-active-phase="1"] .about-process__software,.about-process[data-active-phase="2"] .about-process__machine,.about-process[data-active-phase="3"] .about-process__result { opacity: 1; filter: none; }
.about-process.is-phase-animating[data-active-phase="0"] .about-process__idea,.about-process.is-phase-animating[data-active-phase="1"] .about-process__software,.about-process.is-phase-animating[data-active-phase="2"] .about-process__machine,.about-process.is-phase-animating[data-active-phase="3"] .about-process__result { animation: about-phase-focus 520ms var(--ease-out) both; }
.about-process__idea { fill: currentColor; stroke: currentColor; stroke-width: 1; stroke-opacity: .28; }
.about-process__idea path { fill: none; }
.about-process__idea > circle:not(.about-process__idea-core) { opacity: .28; }
.about-process[data-active-phase="0"] .about-process__idea > circle:not(.about-process__idea-core) { opacity: .74; }
.about-process.is-phase-animating[data-active-phase="0"] .about-process__idea > circle:not(.about-process__idea-core) { animation: about-phase-particle 760ms ease-out both; }
.about-process.is-phase-animating[data-active-phase="0"] .about-process__idea > circle:nth-of-type(3n+2):not(.about-process__idea-core) { animation-delay: 60ms; }
.about-process.is-phase-animating[data-active-phase="0"] .about-process__idea > circle:nth-of-type(3n):not(.about-process__idea-core) { animation-delay: 110ms; }
.about-process__idea-core { fill: none; stroke-dasharray: 2 7; opacity: .25; transform-origin: 137px 254px; }
.about-process[data-active-phase="0"] .about-process__idea-core { opacity: .9; transform: rotate(250deg); }
.about-process.is-phase-animating[data-active-phase="0"] .about-process__idea-core { animation: about-phase-spin 820ms var(--ease-out) both; }
.about-process__software,.about-process__machine,.about-process__result { fill: none; stroke: currentColor; stroke-width: 1.4; }
.about-process__bracket { stroke-width: 1; opacity: .72; }
.about-process__code-line { stroke-dasharray: 96; stroke-dashoffset: 96; opacity: .14; }
.about-process[data-active-phase="1"] .about-process__code-line { stroke-dashoffset: 0; opacity: 1; }
.about-process.is-phase-animating[data-active-phase="1"] .about-process__code-line { animation: about-phase-code 620ms var(--ease-out) both; }
.about-process.is-phase-animating[data-active-phase="1"] .about-process__code-line--two { animation-delay: 80ms; }
.about-process.is-phase-animating[data-active-phase="1"] .about-process__code-line--three { animation-delay: 140ms; }
.about-process__orbit { stroke-dasharray: 3 8; stroke-dashoffset: 55; opacity: .15; transform-origin: 514px 255px; }
.about-process[data-active-phase="2"] .about-process__orbit { stroke-dashoffset: 0; opacity: .85; transform: rotate(-18deg) scale(1); }
.about-process.is-phase-animating[data-active-phase="2"] .about-process__orbit { animation: about-phase-orbit 800ms var(--ease-out) both; }
.about-process__arm,.about-process__grip { stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.about-process.is-phase-animating[data-active-phase="2"] .about-process__arm,.about-process.is-phase-animating[data-active-phase="2"] .about-process__grip { animation: about-phase-arm 720ms var(--ease-out) both; }
.about-process__joint { fill: var(--ink); opacity: .3; }
.about-process[data-active-phase="2"] .about-process__joint { opacity: .82; }
.about-process.is-phase-animating[data-active-phase="2"] .about-process__joint { animation: about-phase-joint 620ms ease-out both; }
.about-process.is-phase-animating[data-active-phase="2"] .about-process__joint--late { animation-delay: 100ms; }
.about-process__eye,.about-process__iris,.about-process__identity { vector-effect: none; stroke-width: 1.16; stroke-linecap: round; stroke-dasharray: var(--about-draw-length); stroke-dashoffset: 0; opacity: .2; }
.about-process__eye { --about-draw-length: 280; }
.about-process__iris { --about-draw-length: 180; }
.about-process__identity { --about-draw-length: 1; }
.about-process__lash { transform-box: view-box; }
.about-process__lash--left { transform-origin: 721px 210px; }
.about-process__lash--center { transform-origin: 752px 204px; }
.about-process__lash--right { transform-origin: 783px 210px; }
.about-process[data-active-phase="3"] .about-process__eye,.about-process[data-active-phase="3"] .about-process__iris,.about-process[data-active-phase="3"] .about-process__identity { stroke-dashoffset: 0; opacity: 1; }
.about-process.is-phase-animating[data-active-phase="3"] .about-process__eye { animation: about-phase-resolve 720ms var(--ease-out) both; }
.about-process.is-phase-animating[data-active-phase="3"] .about-process__iris { animation: about-phase-resolve 680ms 60ms var(--ease-out) both; }
.about-process.is-phase-animating[data-active-phase="3"] .about-process__identity { animation: about-phase-resolve 440ms 180ms var(--ease-out) both; }
.about-process__pupil { fill: #8fc5a4; stroke: none; opacity: .18; transform-box: fill-box; transform-origin: center; filter: drop-shadow(0 0 2px rgba(143,197,164,.5)) drop-shadow(0 0 6px rgba(130,181,152,.2)); transform: scale(.7); }
.about-process[data-active-phase="3"] .about-process__pupil { opacity: 1; transform: scale(1); }
.about-process.is-phase-animating[data-active-phase="3"] .about-process__pupil { animation: about-phase-pupil 620ms 160ms var(--ease-out) both; }
.about-process__result-glow { fill: currentColor; stroke: none; opacity: 0; filter: blur(14px); }
.about-process.is-phase-animating[data-active-phase="3"] .about-process__result-glow { animation: about-phase-result-glow 720ms 140ms ease-out both; }
.about-process__cursor { transform-box: view-box; transform-origin: 0 0; transition: transform 520ms var(--ease-out); }
.about-process[data-active-phase="0"] .about-process__cursor { transform: translate(137px,254px); }
.about-process[data-active-phase="1"] .about-process__cursor { transform: translate(331px,250px); }
.about-process[data-active-phase="2"] .about-process__cursor { transform: translate(514px,255px); }
.about-process[data-active-phase="3"] .about-process__cursor { transform: translate(752px,260px); }
.about-process__signal,.about-process__signal-glow { fill: currentColor; stroke: none; }
.about-process__signal { filter: drop-shadow(0 0 5px rgba(220,249,231,.85)); }
.about-process__signal-glow { opacity: .42; }
.about-process__scan { fill: none; stroke: var(--paper); stroke-width: 1; opacity: 0; }
.about-process.is-phase-animating[data-active-phase="3"] .about-process__scan { animation: about-phase-scan 720ms ease-out both; }
.about-process__phases { position: absolute; z-index: 5; inset: 0; margin: 0; padding: 0; list-style: none; pointer-events: none; }
.about-process__phase { position: absolute; left: var(--about-phase-x); top: 8%; bottom: 8%; width: min(20.5%,12.5rem); pointer-events: none; transform: translateX(-50%); }
.about-process__phase:nth-child(1) { --about-phase-x: 15.22%; }
.about-process__phase:nth-child(2) { --about-phase-x: 36.78%; }
.about-process__phase:nth-child(3) { --about-phase-x: 57.11%; }
.about-process__phase:nth-child(4) { --about-phase-x: 83.56%; }
.about-process__phase-trigger { position: absolute; inset: 0; display: block; width: 100%; min-height: 0; height: 100%; padding: 0; border: 0; border-radius: 0; outline: 0; background: transparent; color: inherit; cursor: pointer; pointer-events: auto; -webkit-tap-highlight-color: transparent; }
.about-process__phase-trigger:focus-visible { outline: 1px solid rgba(239,242,237,.62); outline-offset: -.35rem; background: rgba(130,181,152,.018); }
.about-process__details { position: relative; z-index: 6; display: grid; align-self: start; width: min(36rem,82%); min-height: 6.5rem; margin: 0 auto; pointer-events: none; }
.about-process__phase-copy { position: relative; grid-area: 1/1; min-width: 0; padding-top: .9rem; outline: 0; color: var(--paper); text-align: center; visibility: hidden; opacity: 0; filter: blur(.75px); transform: translateY(.24rem); pointer-events: none; transition: opacity 180ms ease,filter 220ms ease,transform 260ms var(--ease-out),visibility 0s linear 260ms; }
.about-process__phase-copy.is-active { visibility: visible; opacity: 1; filter: none; transform: none; pointer-events: auto; transition-delay: 90ms,90ms,90ms,0s; transition-duration: 360ms,320ms,440ms,0s; }
.about-process__phase-copy::before { content: ""; position: absolute; left: 50%; top: .82rem; width: 34%; height: 1px; opacity: 0; background: linear-gradient(90deg,transparent,var(--accent) 36%,var(--paper) 50%,var(--accent) 64%,transparent); box-shadow: 0 0 .7rem rgba(130,181,152,.4); transform: translateX(-50%) scaleX(.12); pointer-events: none; }
.about-process__phase-title { display: block; width: 100%; padding-top: .75rem; border-top: 1px solid rgba(130,181,152,.34); color: var(--paper); font: 500 clamp(.72rem,1vw,.88rem)/1.25 var(--mono); letter-spacing: .14em; }
.about-process__phase-copy p { max-width: 31rem; margin: .75rem auto 0; color: var(--muted); font: 400 clamp(.8rem,.95vw,.9rem)/1.52 var(--sans); }
.about-process.is-phase-animating .about-process__phase-copy.is-active::before { animation: about-readout-pulse 620ms 80ms var(--ease-out) both; }
.about-process__caption { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.about-contact-cta { position: relative; isolation: isolate; display: grid; grid-template-columns: .4rem minmax(0,1fr) 1.5rem; align-items: center; gap: .8rem; width: min(23rem,100%); min-height: 3.4rem; margin: 3rem auto 0; padding: .8rem 1rem; overflow: hidden; border: 1px solid rgba(239,242,237,.48); color: var(--paper); font: 500 .65rem/1.25 var(--mono); letter-spacing: .12em; text-decoration: none; transition: color 180ms ease,border-color 180ms ease; }
.about-contact-cta::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--paper); transform: translateY(102%); transition: transform 360ms var(--ease-out); }
.about-contact-cta__signal { position: relative; z-index: 1; width: .28rem; height: .28rem; justify-self: center; background: var(--accent); transform: rotate(45deg); transition: transform 420ms var(--ease-out),box-shadow 260ms ease; }
.about-contact-cta__label { position: relative; z-index: 1; text-align: left; white-space: nowrap; transition: transform 420ms var(--ease-out); }
.about-contact-cta__arrow { position: relative; z-index: 1; width: .4rem; height: .4rem; justify-self: end; border-top: 1px solid currentColor; border-right: 1px solid currentColor; opacity: .74; transform: translateY(-.08rem) rotate(135deg); transition: opacity 160ms ease,transform 420ms var(--ease-out); }
.about-contact-cta:hover,.about-contact-cta:focus-visible { border-color: var(--paper); color: var(--ink); }
.about-contact-cta:hover::before,.about-contact-cta:focus-visible::before { transform: none; }
.about-contact-cta:hover .about-contact-cta__signal,.about-contact-cta:focus-visible .about-contact-cta__signal { background: var(--ink); transform: rotate(45deg) scale(1.08); }
.about-contact-cta:hover .about-contact-cta__label,.about-contact-cta:focus-visible .about-contact-cta__label { transform: translateX(.1rem); }
.about-contact-cta:hover .about-contact-cta__arrow,.about-contact-cta:focus-visible .about-contact-cta__arrow { opacity: 1; transform: translateY(.22rem) rotate(135deg); }

.contact-chamber { position: relative; display: grid; grid-template-columns: minmax(18rem,.7fr) minmax(25rem,1.3fr); grid-template-rows: auto auto; gap: 3rem clamp(4rem,8vw,9rem); align-items: center; min-height: min(76svh,52rem); max-width: 92rem; margin: clamp(5rem,9vw,9rem) auto 0; padding: clamp(4rem,8vw,7rem) clamp(1.5rem,4vw,4rem); overflow: hidden; border-block: 1px solid var(--line); scroll-margin-top: var(--header-h); isolation: isolate; }
.contact-chamber::before { content: ""; position: absolute; left: 30%; top: 0; bottom: 0; width: 1px; background: linear-gradient(180deg,transparent,rgba(130,181,152,.32),transparent); }
.contact-chamber__portal { position: relative; grid-column: 1; grid-row: 1/3; justify-self: center; width: clamp(10rem,19vw,18rem); aspect-ratio: 1; }
.contact-chamber__portal > span { position: absolute; inset: 0; border: 1px solid rgba(239,242,237,.18); transform: rotate(45deg); }
.contact-chamber__portal > span:nth-child(2) { inset: 20%; border-color: rgba(130,181,152,.38); animation: contact-orbit 11s linear infinite; }
.contact-chamber__portal > i { position: absolute; left: 50%; top: 50%; width: .55rem; aspect-ratio: 1; background: var(--accent); transform: translate(-50%,-50%) rotate(45deg); box-shadow: 0 0 1.2rem rgba(130,181,152,.48); }
.contact-chamber:target .contact-chamber__portal > span:first-child { animation: contact-arrival 900ms var(--ease-out) both; }
.contact-chamber__copy { grid-column: 2; align-self: end; max-width: 46rem; text-align: center; }
.contact-chamber__heading { width: max-content; max-width: 100%; margin-inline: auto; }
.contact-chamber__heading > p { width: 100%; margin: 0 0 1.5rem; color: var(--accent); font: 500 .6rem/1.35 var(--mono); letter-spacing: .16em; text-align: center; }
.contact-chamber__heading h2 { margin: 0; font: 500 clamp(3.8rem,7vw,7.5rem)/.82 var(--sans); letter-spacing: -.055em; }
.contact-chamber__copy > span { display: block; max-width: 37rem; margin: 1.75rem auto 0; color: var(--muted); font: 400 clamp(1rem,1.25vw,1.16rem)/1.62 var(--sans); }
.contact-chamber__copy.is-revealed > span[data-reveal-item] { transition-delay: 180ms; }
.contact-chamber__actions { grid-column: 2; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; align-self: start; }
.contact-chamber__actions a { position: relative; display: grid; gap: .65rem; min-height: 6.5rem; padding: 1.2rem 2.2rem 1.2rem 1.25rem; border: 1px solid rgba(239,242,237,.2); background: rgba(11,15,12,.36); color: var(--paper); text-decoration: none; clip-path: polygon(.8rem 0,100% 0,calc(100% - .8rem) 100%,0 100%); transition: border-color 220ms ease,background 260ms ease,transform 360ms var(--ease-out); }
.contact-chamber__actions a:hover,.contact-chamber__actions a:focus-visible { border-color: rgba(239,242,237,.72); background: rgba(130,181,152,.08); transform: translateY(-.2rem); }
.contact-chamber__actions small { color: var(--accent); font: 500 .53rem/1 var(--mono); letter-spacing: .12em; }
.contact-chamber__actions strong { align-self: end; overflow-wrap: anywhere; font: 500 clamp(.7rem,1vw,.86rem)/1.4 var(--mono); letter-spacing: .04em; }
.contact-chamber__actions i { position: absolute; right: 1rem; top: 1rem; color: var(--muted); font-style: normal; }
@keyframes contact-orbit { to { transform: rotate(405deg); } }
@keyframes contact-arrival { from { opacity: .2; transform: rotate(45deg) scale(.72); } to { opacity: 1; transform: rotate(135deg) scale(1); } }

/* Project detail */
.project-detail { min-height: 100vh; padding: 0 var(--page-pad); }
.project-detail__hero { position: relative; min-height: max(100svh,46rem); margin-inline: calc(var(--page-pad) * -1); overflow: hidden; isolation: isolate; background: var(--surface); }
.project-detail__header { position: absolute; z-index: 5; left: var(--page-pad); bottom: clamp(6.8rem,13vh,10rem); width: calc(100% - var(--page-pad) * 2); }
.project-detail__meta { display: flex; gap: 1rem; align-items: center; width: min(100%,27rem); color: rgba(239,242,237,.78); font: 500 .61rem/1 var(--mono); letter-spacing: .14em; }
.project-detail__meta i { flex: 1; height: 1px; background: linear-gradient(90deg,var(--accent),rgba(239,242,237,.2)); }
.project-detail__header h1 { max-width: 100%; margin: 1.4rem 0 0; font: 400 clamp(1.65rem,8vw,9.5rem)/.78 var(--display); letter-spacing: -.04em; white-space: nowrap; text-shadow: 0 0 2rem rgba(0,0,0,.68); }
.project-media { position: absolute; z-index: 1; inset: 0; display: block; }
.project-media__frame { position: absolute; inset: 0; overflow: hidden; background: var(--surface); isolation: isolate; }
.project-media__frame video,.project-media__frame img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.82) contrast(1.08) brightness(.78); }
.project-detail--union .project-media__frame video,.project-detail--union .project-media__frame img { object-position: 60% 50%; }
.project-media__frame::after { content: ""; position: absolute; z-index: 4; inset: 0; background: linear-gradient(90deg,rgba(5,7,6,.82),rgba(5,7,6,.32) 44%,transparent 72%),linear-gradient(180deg,rgba(5,7,6,.44),transparent 28%,transparent 58%,rgba(5,7,6,.78)); pointer-events: none; }
.project-media__aperture { position: absolute; z-index: 3; inset: 0; background: var(--ink); transform: scaleX(1); pointer-events: none; animation: media-aperture 820ms 180ms var(--ease-out) both; }
.project-media__signature { position: absolute; z-index: 5; inset: auto 0 0; height: 2px; background: linear-gradient(90deg,var(--accent),transparent 72%); transform-origin: left; animation: card-signature 780ms 420ms var(--ease-out) both; }
.media-controls { position: absolute; z-index: 6; left: var(--page-pad); right: var(--page-pad); bottom: 1.5rem; display: grid; grid-template-columns: auto 1fr auto auto; gap: 1rem; align-items: center; padding: 0; }
.media-controls button { display: grid; place-items: center; width: 2.8rem; height: 2.8rem; border: 1px solid rgba(239,242,237,.4); background: rgba(5,7,6,.24); color: var(--paper); cursor: pointer; transition: color 180ms ease,background 180ms ease,border-color 180ms ease; }
.media-controls button:hover,.media-controls button:focus-visible { border-color: var(--paper); background: var(--paper); color: var(--ink); }
.media-controls button[data-media-toggle] span { width: .5rem; height: .68rem; border-left: 2px solid currentColor; border-right: 2px solid currentColor; }
.media-controls button[data-media-toggle].is-paused span { width: 0; height: 0; border: 0; border-top: .34rem solid transparent; border-bottom: .34rem solid transparent; border-left: .52rem solid currentColor; }
.media-controls input { width: 100%; height: 1.5rem; accent-color: var(--accent); cursor: pointer; }
.media-controls output { color: rgba(239,242,237,.72); font: 500 .6rem/1 var(--mono); }
.media-controls output i { font-style: normal; }
.project-overview { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(18rem,.55fr); gap: clamp(3rem,8vw,9rem); padding: clamp(5rem,10vw,10rem) 0; }
.project-overview__copy > span { color: var(--accent); font: 500 .58rem/1 var(--mono); letter-spacing: .12em; }
.project-overview__copy h2 { margin: 1.2rem 0 1.5rem; font: 400 clamp(2.2rem,5vw,5rem)/1 var(--sans); letter-spacing: -.04em; }
.project-overview__copy p { max-width: 62rem; margin: 0; color: var(--muted); font: 400 clamp(1rem,1.3vw,1.24rem)/1.72 var(--sans); }
.project-facts { align-self: start; margin: 0; border-top: 1px solid var(--line); }
.project-facts > div { display: grid; grid-template-columns: 1fr 1.4fr; gap: 1rem; padding: 1.25rem 0; border-bottom: 1px solid var(--line); }
.project-facts dt { color: var(--muted-low); font: 500 .56rem/1.4 var(--mono); letter-spacing: .1em; }
.project-facts dd { margin: 0; color: var(--paper); font: 500 .62rem/1.5 var(--mono); letter-spacing: .08em; }
.project-gallery { position: relative; isolation: isolate; display: block; width: 100%; margin-top: clamp(3rem,7vw,6rem); overflow: hidden; background: var(--ink); }
.project-gallery::after { content: ""; position: absolute; z-index: 4; inset: -1px; pointer-events: none; background: linear-gradient(to bottom,var(--ink) 0,transparent 7%,transparent 91%,var(--ink) 100%),linear-gradient(to right,var(--ink) 0,transparent 6%,transparent 94%,var(--ink) 100%); }
.project-gallery__track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-inline: contain; }
.project-gallery__track::-webkit-scrollbar { display: none; }
.project-gallery__slide { flex: 0 0 100%; height: min(72svh,720px); margin: 0; scroll-snap-align: start; scroll-snap-stop: always; }
.project-gallery__slide img { display: block; width: 100%; height: 100%; object-fit: cover; border: 0; }
.project-gallery__controls { position: absolute; z-index: 5; inset: 50% clamp(.75rem,2vw,2rem) auto; display: flex; justify-content: space-between; pointer-events: none; transform: translateY(-50%); }
.project-gallery__control { display: grid; place-items: center; width: clamp(3rem,4vw,3.75rem); aspect-ratio: 1; padding: 0; border: 0; border-radius: 50%; background: rgba(9,11,10,.22); color: var(--accent); backdrop-filter: blur(3px); pointer-events: auto; cursor: pointer; transition: background 180ms ease,transform 180ms ease,opacity 180ms ease; }
.project-gallery__control:hover:not(:disabled),.project-gallery__control:focus-visible { background: rgba(9,11,10,.72); transform: scale(1.06); }
.project-gallery__control:disabled { opacity: 0; pointer-events: none; }
.project-gallery__chevron { display: block; width: clamp(.7rem,1vw,.95rem); aspect-ratio: 1; border-top: 1px solid currentColor; border-right: 1px solid currentColor; }
.project-gallery__control--previous .project-gallery__chevron { margin-left: .25rem; transform: rotate(-135deg); }
.project-gallery__control--next .project-gallery__chevron { margin-right: .25rem; transform: rotate(45deg); }
.project-repository { display: flex; justify-content: center; padding: clamp(4rem,9vw,8rem) 0 clamp(4rem,7vw,7rem); }
.project-repository__link { position: relative; isolation: isolate; display: grid; grid-template-columns: .4rem minmax(0,1fr) 1.5rem; align-items: center; gap: .8rem; width: min(23rem,100%); min-height: 3.4rem; padding: .8rem 1rem; overflow: hidden; border: 1px solid rgba(239,242,237,.48); color: var(--paper); font: 500 .65rem/1.25 var(--mono); letter-spacing: .12em; text-decoration: none; transition: color 180ms ease,border-color 180ms ease; }
.project-repository__link::before { content: ""; position: absolute; z-index: -1; inset: 0; background: var(--paper); transform: translateY(102%); transition: transform 360ms var(--ease-out); }
.project-repository__signal { position: relative; z-index: 1; width: .28rem; height: .28rem; justify-self: center; background: var(--accent); transform: rotate(45deg); transition: transform 420ms var(--ease-out),background 180ms ease; }
.project-repository__label { position: relative; z-index: 1; text-align: center; white-space: nowrap; transition: transform 420ms var(--ease-out); }
.project-repository__arrow { position: relative; z-index: 1; width: .4rem; height: .4rem; justify-self: end; border-top: 1px solid currentColor; border-right: 1px solid currentColor; opacity: .74; transition: opacity 160ms ease,transform 420ms var(--ease-out); }
.project-repository__link:hover,.project-repository__link:focus-visible { border-color: var(--paper); color: var(--ink); }
.project-repository__link:hover::before,.project-repository__link:focus-visible::before { transform: none; }
.project-repository__link:hover .project-repository__signal,.project-repository__link:focus-visible .project-repository__signal { background: var(--ink); transform: rotate(45deg) scale(1.08); }
.project-repository__link:hover .project-repository__label,.project-repository__link:focus-visible .project-repository__label { transform: translateX(.1rem); }
.project-repository__link:hover .project-repository__arrow,.project-repository__link:focus-visible .project-repository__arrow { opacity: 1; transform: translate(.18rem,-.18rem); }
.project-repository__status { padding: 0 0 .55rem; border-bottom: 1px solid var(--line); color: var(--muted); font: 500 .68rem/1 var(--mono); letter-spacing: .11em; text-transform: uppercase; }

@keyframes about-phase-focus { 0% { opacity: .075; filter: brightness(.68); transform: scale(.975); } 58% { opacity: .82; filter: brightness(1.08); transform: scale(.995); } 100% { opacity: 1; filter: none; transform: scale(1); } }
@keyframes about-phase-particle { 0% { opacity: .22; transform: translate(0); } 38% { opacity: 1; transform: translate(2px,-4px); } 72% { opacity: .68; transform: translate(-2px,2px); } 100% { opacity: .74; transform: translate(0); } }
@keyframes about-phase-spin { 0% { opacity: .25; transform: rotate(0); } 72% { opacity: 1; transform: rotate(230deg); } 100% { opacity: .9; transform: rotate(250deg); } }
@keyframes about-phase-code { 0% { stroke-dashoffset: 96; opacity: .12; } 100% { stroke-dashoffset: 0; opacity: 1; } }
@keyframes about-phase-orbit { 0% { stroke-dashoffset: 55; opacity: .15; transform: rotate(-18deg) scale(.96); } 72% { stroke-dashoffset: 0; opacity: 1; transform: rotate(-18deg) scale(1.02); } 100% { stroke-dashoffset: 0; opacity: .85; transform: rotate(-18deg) scale(1); } }
@keyframes about-phase-arm { 0% { stroke-dasharray: 180; stroke-dashoffset: 180; opacity: .18; } 100% { stroke-dasharray: 180; stroke-dashoffset: 0; opacity: 1; } }
@keyframes about-phase-joint { 0% { stroke: currentColor; opacity: .3; } 55% { stroke: var(--paper); opacity: 1; } 100% { stroke: currentColor; opacity: .82; } }
@keyframes about-phase-resolve { 0% { stroke-dashoffset: var(--about-draw-length); opacity: 0; } 100% { stroke-dashoffset: 0; opacity: 1; } }
@keyframes about-phase-pupil { 0% { opacity: 0; transform: scale(.25); } 70% { opacity: 1; transform: scale(1.16); } 100% { opacity: 1; transform: scale(1); } }
@keyframes about-phase-result-glow { 0% { opacity: 0; transform: scale(.5); } 55% { opacity: .16; transform: scale(.95); } 100% { opacity: 0; transform: scale(1.2); } }
@keyframes about-phase-scan { 0% { opacity: 0; transform: translateY(-86px); } 42% { opacity: .14; } 100% { opacity: 0; transform: translateY(86px); } }
@keyframes about-readout-pulse { 0% { opacity: 0; transform: translateX(-50%) scaleX(.12); } 42% { opacity: .78; transform: translateX(-50%) scaleX(1); } 100% { opacity: 0; transform: translateX(-50%) scaleX(2.45); } }
@keyframes media-aperture { from { clip-path: inset(0); opacity: 1; } to { clip-path: inset(0 50%); opacity: 0; } }

[data-reveal] { opacity: 1; transform: none; }
[data-reveal].is-reveal-pending { opacity: 0; transform: translateY(2rem); transition: opacity 700ms ease,transform 900ms var(--ease-out); }
[data-reveal].is-revealed { opacity: 1; transform: none; }
[data-reveal-group].is-reveal-pending { opacity: 1; transform: none; }
[data-reveal-group] [data-reveal-item] { opacity: 1; transform: none; }
[data-reveal-group].is-reveal-pending [data-reveal-item] { opacity: 0; transform: translateY(1.25rem); }
[data-reveal-group].is-revealed [data-reveal-item] { opacity: 1; transform: none; transition: opacity 620ms ease,transform 700ms var(--ease-out); }
[data-reveal-group].is-revealed [data-reveal-item]:nth-child(2) { transition-delay: 90ms; }
[data-reveal-group].is-revealed [data-reveal-item]:nth-child(3) { transition-delay: 180ms; }
[data-reveal-group].is-revealed [data-reveal-item]:nth-child(4) { transition-delay: 270ms; }

@media (max-width: 1000px) {
  .site-language > span { display: none; }
  .project-card { flex-basis: 82vw; }
  .project-card__body { grid-template-columns: 1fr; }
  .project-card p { grid-column: 1; max-width: 44rem; }
  .about-stage { grid-template-columns: 1fr; gap: clamp(3.5rem,7vw,5rem); align-items: start; padding-block: clamp(4rem,8vw,6rem); }
  .about-stage__copy { justify-self: center; width: min(100%,46rem); max-width: 46rem; padding-inline: 0; }
  .about-process { width: min(68rem,100%); min-height: clamp(32rem,72vw,44rem); margin-inline: auto; }
  .contact-chamber { grid-template-columns: minmax(13rem,.55fr) minmax(22rem,1.45fr); gap: 2.5rem clamp(3rem,6vw,5rem); }
  .project-overview { grid-template-columns: 1fr; }
  .project-facts { max-width: 42rem; }
}

@media (max-width: 760px) {
  :root { --header-h: 4.5rem; --page-pad: 1.25rem; }
  .site-header { grid-template-columns: auto auto minmax(0,1fr) auto; column-gap: clamp(.85rem,4vw,1.35rem); min-height: var(--header-h); padding-top: max(.25rem,env(safe-area-inset-top)); background: transparent; }
  .site-header__brand { font-size: clamp(.84rem,4vw,1rem); }
  .site-language { grid-column: 4; min-width: 2rem; }
  .site-nav { grid-column: 2; gap: clamp(.7rem,3vw,1.25rem); }
  .site-nav > a,.site-projects-menu > summary { min-width: 0; min-height: 2.6rem; font-size: clamp(.47rem,2.1vw,.57rem); letter-spacing: .04em; }
  .site-projects-menu__panel { left: 0; min-width: 9rem; transform: none; }
  .language-page { overflow-y: auto; }
  .language-gate.language-gate--classic { min-height: 100dvh; padding: max(1rem,env(safe-area-inset-top)) 1.25rem max(1rem,env(safe-area-inset-bottom)); }
  .gate-inner { width: min(24rem,100%); }
  .reactive-mark { width: clamp(11rem,45dvh,17rem); margin-bottom: 1.4rem; }
  .reactive-mark__code { font-size: clamp(.36rem,2.2vw,.5rem); }
  .language-options { gap: 1rem; }
  .language-options a { gap: 1rem; padding-bottom: .75rem; }
  .language-options a span { font-size: .54rem; }
  .cinematic-hall { height: 100dvh; min-height: 0; }
  .cinematic-hall__media img,.cinematic-hall__media video { object-position: 46% center; }
  .cinematic-hall__veil { background: linear-gradient(90deg,rgba(3,5,4,.52),transparent 68%),linear-gradient(180deg,rgba(3,5,4,.14),transparent 34%,rgba(3,5,4,.74)); }
  .cinematic-hall__copy { --hero-title-half: clamp(1.312rem,6.97vw,2.214rem); --hero-signature-gap: 1rem; left: 0; right: 0; top: 0; bottom: auto; width: auto; height: 100%; padding: var(--page-pad); }
  .cinematic-hall__copy h1 { font-size: clamp(3.2rem,17vw,5.4rem); }
  .cinematic-hall__statement { max-width: min(20rem,calc(100% - var(--page-pad) * 2)); font-size: .76rem; }
  .project-card,.project-rail--archive .project-card { flex-basis: 88vw; }
  .project-card__media { aspect-ratio: 4/5; }
  .project-rail[data-layout="vertical"] .project-card { width: 100%; min-height: 100svh; flex-basis: auto; }
  .project-rail[data-layout="vertical"] .project-card > a { min-height: 100svh; }
  .project-rail[data-layout="vertical"] .project-card__media { height: 100%; min-height: 0; }
  .project-rail[data-layout="vertical"] .project-card__body { left: auto; bottom: auto; width: 100%; padding: 8rem var(--page-pad) max(4.25rem,calc(3rem + env(safe-area-inset-bottom))); }
  .project-rail[data-layout="vertical"] .project-card__meta { margin-bottom: .75rem; font-size: .54rem; }
  .project-rail[data-layout="vertical"] .project-card h3 { font-size: clamp(3.8rem,17vw,6.2rem); }
  .project-rail[data-layout="vertical"] .project-card p { display: -webkit-box; max-width: 27rem; margin-top: .85rem; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: .9rem; }
  .project-rail[data-layout="vertical"] .project-card__footer { margin-top: 1.15rem; }
  .project-rail[data-layout="vertical"] .project-card__footer strong { min-width: 10.5rem; min-height: 3rem; font-size: .58rem; }
  .project-rail[data-layout="vertical"] .project-card--union .project-card__media img,.project-rail[data-layout="vertical"] .project-card--union .project-card__media video { object-position: 68% 50%; }
  .project-card__body { gap: .65rem; }
  .project-card h3 { font-size: clamp(2.8rem,13vw,4.8rem); }
  .project-card p { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 4; }
  .project-card__footer > span:first-child { display: none; }
  .project-card__footer { justify-content: flex-end; }
  .project-rail__controls { justify-content: space-between; }

  .internal-main { padding-top: calc(var(--header-h) + 2.5rem); }
  .info-about-page .internal-main { min-height: 100svh; padding: calc(var(--header-h) + 2.5rem) var(--page-pad) 2rem; }
  .about-stage { display: grid; grid-template-columns: 1fr; gap: 3.25rem; min-height: auto; padding: 0; }
  .internal-header { margin-bottom: 2.25rem; }
  .internal-kicker { margin-bottom: 1.25rem; font-size: .56rem; }
  .internal-header h1 { font-size: clamp(3.2rem,15vw,5.2rem); }
  .internal-copy { font-size: .92rem; line-height: 1.55; }
  .about-process { width: 100%; min-height: clamp(20rem,96vw,24rem); margin-inline: 0; }
  .about-process__visual { width: 100%; transform: none; }
  .about-process__map::before,.about-process__map::after { width: 5%; }
  .about-process__phase { width: 22%; }
  .about-process__details { width: min(21rem,calc(100vw - var(--page-pad) * 2)); }
  .about-process__phase-copy { padding-top: .7rem; }
  .about-process__phase-copy::before { top: .62rem; }
  .about-process__phase-title { padding-top: .62rem; font-size: .68rem; }
  .about-process__phase-copy p { max-width: 100%; margin-top: .6rem; font-size: .79rem; line-height: 1.48; }
  .about-contact-cta { grid-template-columns: .35rem minmax(0,1fr) 1.25rem; gap: .55rem; width: 100%; min-height: 3.15rem; padding: .7rem .8rem; font-size: .58rem; letter-spacing: .08em; }
  .contact-chamber { grid-template-columns: 1fr; grid-template-rows: auto; gap: 3rem; min-height: auto; margin-top: 6rem; padding: 4rem 0; }
  .contact-chamber::before { left: 50%; top: 0; bottom: auto; width: 1px; height: 2.5rem; }
  .contact-chamber__portal { grid-column: 1; grid-row: auto; width: min(11rem,48vw); }
  .contact-chamber__copy,.contact-chamber__actions { grid-column: 1; }
  .contact-chamber__heading h2 { font-size: clamp(3.6rem,17vw,5.8rem); }
  .contact-chamber__actions { grid-template-columns: 1fr; }

  .project-detail { padding: 0 var(--page-pad); }
  .project-detail__hero { min-height: max(100svh,40rem); }
  .project-detail__header { left: var(--page-pad); bottom: max(6.7rem,calc(5.8rem + env(safe-area-inset-bottom))); width: calc(100% - var(--page-pad) * 2); }
  .project-detail__meta { width: min(100%,20rem); font-size: .54rem; }
  .project-detail--union .project-media__frame video,.project-detail--union .project-media__frame img { object-position: 68% 50%; }
  .media-controls { left: var(--page-pad); right: var(--page-pad); bottom: max(1.25rem,env(safe-area-inset-bottom)); }
  .media-controls { grid-template-columns: auto 1fr auto; }
  .media-controls output { display: none; }
  .project-overview { gap: 3rem; padding-block: 4.5rem; }
  .project-gallery { width: calc(100% + (2 * var(--page-pad))); margin-inline: calc(-1 * var(--page-pad)); }
  .project-gallery::after { background: linear-gradient(to bottom,var(--ink) 0,transparent 5%,transparent 94%,var(--ink) 100%),linear-gradient(to right,var(--ink) 0,transparent 9%,transparent 91%,var(--ink) 100%); }
  .project-gallery__slide { height: auto; aspect-ratio: 4/5; }
  .project-gallery__control { width: 2.75rem; background: transparent; color: color-mix(in srgb,var(--accent) 88%,var(--paper)); box-shadow: none; backdrop-filter: none; }
  .project-gallery__chevron { filter: drop-shadow(0 0 1px rgba(0,0,0,.98)) drop-shadow(0 0 .28rem color-mix(in srgb,var(--accent) 72%,transparent)); }
  .project-gallery__control:hover:not(:disabled),.project-gallery__control:focus-visible { background: rgba(9,11,10,.42); }
  .project-repository__link { grid-template-columns: .35rem minmax(0,1fr) 1.25rem; gap: .55rem; width: 100%; min-height: 3.15rem; padding: .7rem .8rem; font-size: .58rem; letter-spacing: .08em; }
}

@media (max-height: 650px) {
  .language-page { overflow-y: auto; }
  .language-gate.language-gate--classic { min-height: 100dvh; padding-block: .75rem; }
  .reactive-mark { width: clamp(9rem,38dvh,14rem); margin-bottom: .75rem; }
  .language-options a { gap: .75rem; padding-block: .45rem .65rem; }
  .language-options a strong::before { width: 3rem; height: 3rem; }
}

@media (hover: none) {
  .project-rail--archive .project-card__media video { display: none; }
}

@media (max-width: 760px) and (orientation: portrait) {
  .cinematic-hall__handoff::after { transform: translate(.15rem,-50%) rotate(69deg); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,*::before,*::after { animation-duration: .01ms !important; animation-delay: 0ms !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .route-aperture { display: none; }
  .project-rail[data-layout="vertical"].is-enhanced .project-card .project-card__body > * { opacity: 1; transform: none; transition: none; }
  .about-process__visual * { animation: none !important; }
  .about-process__idea,.about-process__software,.about-process__machine,.about-process__result { opacity: .075; filter: brightness(.56); }
  .about-process__code-line { stroke-dashoffset: 0; opacity: .72; }
  .about-process__orbit { stroke-dashoffset: 0; opacity: .65; }
  .about-process__joint { opacity: .58; }
  .about-process__eye,.about-process__iris,.about-process__identity { stroke-dashoffset: 0; opacity: 1; }
  .about-process__pupil { opacity: 1; transform: scale(1); }
  .about-process__scan,.about-process__result-glow { display: none; }
  [data-reveal] { opacity: 1; transform: none; transition: none; }
  html.home-intro-boot .site-header__brand,html.home-intro-running .site-header__brand { visibility: visible; opacity: 1; clip-path: none; filter: none; transform: none; animation: none; pointer-events: auto; }
  .cinematic-hall__copy h1 { opacity: 0; clip-path: none; filter: none; transform: none; animation: none; }
  .cinematic-hall__statement { animation: none; }
  .cinematic-hall__statement--origin { display: none; }
  .cinematic-hall__statement--destination span { opacity: 1; clip-path: none; filter: none; transform: none; animation: none; }
  .cinematic-hall__scanner,.cinematic-hall__statement::after,.cinematic-hall__handoff { display: none; animation: none; }
}
