/* ============================================================
   SERGE VASIL — Portfolio Design System
   Font: Rethink Sans (Google Fonts)
   Colors: #171717 (off-black) · #E8E0D4 (red)
   ============================================================ */

/* === LOADER — gray curtain that drops downward to reveal dark page === */
#loader {
  position: fixed;
  inset: 0;
  background: var(--bg);
  z-index: 10000;
  /* Curtain drops: no fade, pure transform */
  transition: none;
}
#loader.dropping {
  transform: translateY(100%);
  transition: transform 0.9s cubic-bezier(0.16, 1, 0.3, 1);
  pointer-events: none;
}

/* Loader ring = same 60px as cursor ring, same lerp delay */
.loader-ring {
  position: fixed;
  width: 60px;
  height: 60px;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 10002;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: none;
}
.loader-ring svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  transition: opacity 0.25s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.loader-ring.shrink svg { opacity: 0; }

#loader-pct {
  position: fixed;
  /* Independent follow position — set by JS with its own lerp (slight delay) */
  transform: translate(-50%, -50%);
  z-index: 10003;
  font-family: var(--font-ui);
  font-size: 12px;
  line-height: 20px;
  font-weight: 400;
  color: var(--text);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition: opacity 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  user-select: none;
  pointer-events: none;
}
#loader-pct.fade { opacity: 0; }

/* === LOCAL FONTS === */
@font-face {
  font-family: 'SDL';
  src: url('sdl.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'SDLI';
  src: url('data:font/woff2;base64,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') format('woff2');
  font-weight: 100 900;
  font-style: italic;
}


/* === RESET === */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; user-select: none; -webkit-user-select: none; }

/* === TEXT SELECTION === */
::selection { background: #171717; color: #E8E0D4; }

/* === ANIMATABLE CUSTOM PROPERTIES ===
   Registering --bg and --text as typed <color> properties lets the browser
   interpolate them directly. On iOS WebKit, transitions on background-color/color
   that USE a custom property don't fire reliably when the var changes — the browser
   doesn't detect the computed value changed. @property fixes this: the custom
   property itself animates, and every element using var(--bg) or var(--text) gets
   the interpolated colour each frame without any element-level transition needed. */
@property --bg {
  syntax: '<color>';
  inherits: true;
  initial-value: #E8E0D4;
}
@property --text {
  syntax: '<color>';
  inherits: true;
  initial-value: #171717;
}

/* === DESIGN TOKENS === */
:root {
  --bg:           #E8E0D4;
  --text:         #171717;
  transition: --bg 0.8s ease-out, --text 0.8s ease-out; /* suppressed on load by html.no-transition */
  --inv:          #E8E0D4;
  --font:         'DM Sans', sans-serif;
  --font-display: 'Mod', sans-serif;
  --font-ui:      'Mod', sans-serif;
  --nav-pad:      40px;  /* lerped 40→20px by JS on scroll */
  --nav-h:        calc(var(--nav-pad) * 2 + 20px);  /* 100px at rest, 60px scrolled */
  --pad:          clamp(16px, 2.78vw, 80px);
  --vpad:         clamp(60px, 8.3vw, 120px);
  --vpad-sm:      clamp(40px, 5.5vw, 80px);
  --gap:          16px;
  --max-w:        1440px;
}

/* === NIGHT MODE === */
.night-mode {
  --bg:   #171717;
  --text: #E8E0D4;
  --inv:  #171717;
}
.night-mode ::selection { background: #E8E0D4; color: #171717; }
.night-mode #loader-pct { color: #E8E0D4; }

/* ── Night mode cursor — mirrors day mode with colours swapped ─────────────
   Day:   bg=#E8E0D4  text=#171717  →  dot/ring use #171717; grown/filled use #E8E0D4+diff
   Night: bg=#171717  text=#E8E0D4  →  dot/ring use #E8E0D4; grown/filled use #E8E0D4+diff
   ────────────────────────────────────────────────────────────────────────── */

/* Resting dot: already red via var(--text) — no override needed */

/* Resting ring: red outline, transparent interior, no blend */
.night-mode .cursor-ring {
  background:    transparent;
  border-color:  var(--text);
  mix-blend-mode: normal;
}

/* Grown dot (link hover / press): red + difference
   → near-red on dark bg; black over red text (inverts links) */
.night-mode .cursor-dot.grown {
  background:    var(--text);
  mix-blend-mode: difference;
}

/* Filled ring (link hover): red fill + difference
   → circle appears red on page; red text inside becomes black */
.night-mode .cursor-ring.filled {
  background:    var(--text);
  border-color:  transparent;
  mix-blend-mode: difference;
}

/* Over images: white + difference inverts image colours in both modes */
.night-mode .cursor-ring.card-hover {
  background:    #E8E0D4;
  border-color:  transparent;
  mix-blend-mode: difference;
}

/* <picture> wraps <img> with a WebP source; display:contents makes it
   layout-invisible so the <img> directly inherits the parent's box. */
picture { display: contents; }

/* === BASE === */
html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
  font-weight: 400;
  overflow-x: hidden;
  cursor: auto;
  /* background-color and color are driven by @property --bg/--text on :root — no element-level transition needed */
}

a { color: inherit; text-decoration: none; cursor: pointer; }

/* Hide native cursor on interactive hover (JS adds .cursor-hidden to body) */
body.cursor-hidden,
body.cursor-hidden * { cursor: none !important; }
img { display: block; max-width: 100%; }
button, input { font-family: var(--font); font-weight: 400; }

/* === CUSTOM CURSOR — ryota-sato.com style: ring + dot === */
/* Small dot — tracks mouse directly */
.cursor-dot {
  position: fixed;
  width: 4px;
  height: 4px;
  background: var(--text);
  border-radius: 50%;
  pointer-events: none;
  z-index: 9999;
  transform: translate(-50%, -50%);
  opacity: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  /* Default ease-out for size-down; JS overrides transition for size-up (spring) */
  transition: width  0.3s cubic-bezier(0.16, 1, 0.3, 1),
              height 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              border-radius 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              opacity 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.cursor-dot.active { opacity: 1; }
/* Grown state (hover/press/card): bg color + difference
   → circle appears as text color, content underneath inverts */
.cursor-dot.grown {
  background: var(--bg);
  mix-blend-mode: difference;
}
/* On-media state: dot + ring invert over images/videos */
.cursor-dot.on-media {
  background: #fff;
  mix-blend-mode: difference;
}
.cursor-ring.on-media {
  border-color: #fff;
  mix-blend-mode: difference;
}

/* Ring — follows cursor with lerp delay; size transitions via JS inline overrides */
.cursor-ring {
  position: fixed;
  width: 60px;
  height: 60px;
  border: 1px solid var(--text);
  border-radius: 50%;
  pointer-events: none;
  z-index: 9998;
  transform: translate(-50%, -50%);
  opacity: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  /* Default ease-out for size-down; JS overrides for size-up (spring) */
  transition: width  0.35s cubic-bezier(0.16, 1, 0.3, 1),
              height 0.35s cubic-bezier(0.16, 1, 0.3, 1),
              border-radius 0.35s cubic-bezier(0.16, 1, 0.3, 1),
              opacity 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              background 0.35s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}
.cursor-ring.active { opacity: 1; }

/* Filled state: link hover, card hover, or pressed — no dot visible */
.cursor-ring.filled {
  background: #E8E0D4;
  border-color: transparent;
  mix-blend-mode: difference;
}
/* Icons inside ring (card hover state) */
.cursor-ring-icon {
  opacity: 0;
  transition: opacity 0.15s 0.22s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  pointer-events: none;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #171717; /* ring fill is always #E8E0D4 — icon must always be dark */
  width: 12px;
  height: 12px;
  overflow: hidden;
  display: block;
}
.cursor-ring-icon svg {
  display: block;
  width: 12px;
  height: 12px;
}
/* Ring card-hover: filled light, dot hidden.
   mix-blend-mode reset to normal so the icon renders at true 12px —
   difference blending causes stroke antialiasing to bleed outward,
   making the icon appear larger than the card header icon. */
.cursor-ring.card-hover {
  background: #E8E0D4;
  border-color: transparent;
  mix-blend-mode: difference;
}
/* Show correct icon based on card type */
.cursor-ring.card-hover.type-plus .cursor-ring-icon--plus { opacity: 1; }
.cursor-ring.card-hover.type-lock .cursor-ring-icon--lock { opacity: 1; }
.cursor-dot.card-hover { opacity: 0 !important; }
/* Card header icon fades out when card is hovered */
.project-card:hover .project-card__icon { opacity: 0; }

/* === TYPOGRAPHY === */
.t-label {
  font-family: var(--font-ui);
  font-size: 11px;
  line-height: 20px;
  letter-spacing: 0.1em;
  font-weight: 400;
  text-transform: uppercase;
}
/* Display / editorial */
.t-h2 {
  font-family: 'SDL', sans-serif;
  font-size: clamp(28px, 4vw, 58px);
  line-height: 1.1;
  letter-spacing: 0;
  font-weight: 300;
}
/* === NAV — item 13: transparent, no black box === */
.nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  height: var(--nav-h);
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 0 var(--nav-pad);
  background: transparent;
  opacity: 0;
  transition: opacity 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.nav.revealed { opacity: 1; }
.nav.nav--hidden { transform: translateY(-100%); }

/* ── Unified link style — ALL nav/footer links share one rule ───────────────
   .nav-link   = top-right nav links
   .nav-mode   = top-left night/day toggle button
   .hero-scroll = bottom-left scroll/back link
   .site-email  = bottom-right email link
   color: var(--text) = #171717 in day, #E8E0D4 in night — no blend mode so
   the colour is identical regardless of what content sits behind the element.
   ─────────────────────────────────────────────────────────────────────────── */
.nav-link,
.nav-mode,
.hero-scroll,
.site-email {
  color: var(--text);
  font-family: var(--font-ui);
  font-size: 12px;
  line-height: 20px;
  font-weight: 400;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* Mode toggle — upper left, mirrors nav-right on the right */
.nav-left {
  position: absolute;
  left: var(--nav-pad);
  display: flex;
  align-items: center;
}
.nav-mode {
  -webkit-appearance: none;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--text);
  -webkit-tap-highlight-color: transparent; /* removes rectangular tap flash on iOS */
  outline: none;
  /* no permanent color transition — @property --text on :root handles mode changes */
}
.nav-mode-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 0;
  color: var(--text);
}
.nav-mode-icon-svg {
  display: block;
  color: var(--text);
}
/* Icon morph: a circular cutout in the mask slides into the body of the
   visible circle to create the crescent. Off-canvas (default) = solid
   dot; in position = moon. Mode + hover toggle which state shows. */
.nav-mode-icon-cutout {
  transition: transform 1.2s cubic-bezier(.19,1,.22,1);
  transform-origin: 0 0;
}
:root.night-mode .nav-mode-icon-cutout {
  transform: translate(-13px, 9px); /* in position → crescent */
}
.nav-mode:hover .nav-mode-icon-cutout {
  transform: translate(-13px, 9px); /* preview night while in day mode */
}
:root.night-mode .nav-mode:hover .nav-mode-icon-cutout {
  transform: translate(0, 0); /* preview day while in night mode */
}

/* Two stacked text labels — "Day" and "Night" — that translate vertically
   between three positions (above / visible / below) so the active label
   sits at 0 and the OTHER label slides into view on hover. */
.nav-mode-labels {
  position: relative;
  display: inline-block;
  overflow: hidden;
  height: 20px;
  vertical-align: middle;
  line-height: 20px;
}
.nav-mode-label {
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  white-space: nowrap;
  color: var(--text);
  transition: transform 1.2s cubic-bezier(.19,1,.22,1);
}
/* Day mode rest: "Day" visible, "Night" below */
.nav-mode-label--day   { transform: translateY(0); }
.nav-mode-label--night { transform: translateY(100%); }
/* Night mode rest: "Night" visible, "Day" below */
:root.night-mode .nav-mode-label--day   { transform: translateY(100%); }
:root.night-mode .nav-mode-label--night { transform: translateY(0); }
/* Day mode hover: "Day" up off-screen, "Night" slides into view */
.nav-mode:hover .nav-mode-label--day   { transform: translateY(-100%); }
.nav-mode:hover .nav-mode-label--night { transform: translateY(0); }
/* Night mode hover: "Night" up off-screen, "Day" slides into view */
:root.night-mode .nav-mode:hover .nav-mode-label--day   { transform: translateY(0); }
:root.night-mode .nav-mode:hover .nav-mode-label--night { transform: translateY(-100%); }

/* Logo — centered absolutely in the nav bar */
.nav-logo {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text);
  /* color driven by @property --text — no separate transition needed */
}
.nav-logo img { height: 14px; width: auto; }
.nav-logo svg { display: block; height: 14px; width: auto; }
.nav-logo svg path { fill: var(--text); /* fill driven by @property --text via mode-transitioning fill transition */ }

.nav-right {
  display: flex;
  align-items: center;
  gap: 48px;
}

.nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
}


/* Cuberto-style slide-up hover: overflow clip on inner wrap */
.nav-link-wrap {
  display: inline-block;
  overflow: hidden;
  height: 20px;
  vertical-align: middle;
  line-height: 20px;
}
.nav-link-text {
  display: block;
  position: relative;
  color: var(--text); /* explicit — iOS WebKit won't transition inherited color */
  transition: transform 1.2s cubic-bezier(.19,1,.22,1); /* hover slide only — color handled by @property --text */
}
.nav-link-text::after {
  content: attr(data-text);
  display: block;
  position: absolute;
  top: 100%;
  left: 0;
  white-space: nowrap;
  pointer-events: none;
}
.nav-link:hover .nav-link-text {
  transform: translateY(-100%);
}

/* Active page dot */
.nav-link--active::after {
  content: '';
  position: absolute;
  bottom: -6px;
  left: 50%;
  transform: translateX(-50%);
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: currentColor;
}

/* === PAGE WRAPPER === */
.page {
  padding-top: var(--nav-h);
  position: relative;
}

/* === PAGE FADE TRANSITION ===
   We fade <body> opacity 1 ↔ 0. <html> itself never fades, and the
   film-grain canvas (appended to <html>, sibling of <body>) stays at
   its constant 3% opacity throughout — so the bg color and shimmer
   remain visible *through* the cross-page dissolve.

   Inline head script sets .sv-arriving on <html> before first paint
   when sessionStorage 'sv-fade' is present, so body paints invisible
   immediately on arrival. transition.js then removes the class to
   trigger the fade-in via the standard CSS transition on body. */
html {
  background: var(--bg);
}
body {
  transition: opacity 520ms cubic-bezier(0.76, 0, 0.24, 1);
}
body.sv-leaving {
  opacity: 0;
  pointer-events: none;
}
html.sv-arriving body {
  opacity: 0;
  transition: none;
}
/* #sv-panel element kept in markup for backward compat, unused */
#sv-panel { display: none; }

.hero-text-wrap {
  padding: calc(var(--vpad) * 0.5) clamp(16px, 19vw, 320px) calc(var(--vpad) * 0.5);
  max-width: 1680px; /* container ~20% narrower than the previous spec across all viewport widths */
  margin: 0 auto;
}

/* email link — fixed bottom-left, same style as nav & scroll links */
.site-email {
  position: fixed;
  bottom: calc((var(--nav-h) - 20px) / 2);
  left: var(--nav-pad);
  z-index: 50;
  display: inline-flex;
  align-items: center;
  transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.site-email.footer--hidden { transform: translateY(80px); }
.site-email:hover .nav-link-text {
  transform: translateY(-100%);
}

/* scroll/back link — fixed bottom-right, aligned with nav padding */
.hero-scroll {
  position: fixed;
  bottom: calc((var(--nav-h) - 20px) / 2);
  right: var(--nav-pad);
  transform: none;
  z-index: 50;
  display: flex;
  align-items: center;
  gap: 8px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.hero-scroll.footer--hidden { transform: translateY(80px); }
.hero-scroll.active {
  opacity: 1;
  pointer-events: auto;
}
.hero-scroll-wrap {
  display: inline-block;
  overflow: hidden;
  height: 20px;
  vertical-align: middle;
  line-height: 20px;
}
.hero-scroll-text {
  display: block;
  position: relative;
  color: var(--text); /* explicit — iOS WebKit won't transition inherited color */
  transition: transform 1.2s cubic-bezier(.19, 1, .22, 1);
}
.hero-scroll-text::after {
  content: attr(data-text);
  display: block;
  position: absolute;
  top: 100%;
  left: 0;
  white-space: nowrap;
  pointer-events: none;
}
.hero-scroll:hover .hero-scroll-text {
  transform: translateY(-100%);
}

/* Icon — clip container + duplicate-reveal, mirrors text animation */
.hero-scroll-icon-clip {
  overflow: hidden;
  height: 11px;
  position: relative;
  top: -1px;
  width: 12px;
  flex-shrink: 0;
  display: inline-flex;
  align-items: flex-start;
  vertical-align: middle;
}
.hero-scroll-icon-slide {
  display: flex;
  flex-direction: column;
  transition: transform 1.2s cubic-bezier(.19, 1, .22, 1);
}
.hero-scroll:hover .hero-scroll-icon-slide {
  transform: translateY(-50%);
}
.hero-scroll-icon-svg {
  display: block;
  flex-shrink: 0;
  width: 11px;
  height: 11px;
  transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
/* Explicit stroke/fill on SVG icons — iOS WebKit won't transition
   currentColor (inherited) so we bind directly to var(--text) */
.hero-scroll-icon-svg path,
.project-card__icon svg rect,
.project-card__icon svg path,
.project-card__icon svg line {
  stroke: var(--text);
}
.vibe-note__logo path {
  fill: var(--text);
}

/* hero text — font style inherits from .t-h2 */
.hero-text-wrap p,
.hero-text-wrap h1 {
  color: var(--text);
  text-align: center;
  margin: 0; /* zero browser-default h1 margin */
  font-weight: inherit;
}
.hero-libra {
  font-family: 'SDLI', sans-serif;
  font-style: italic;
  font-weight: 300; /* explicit — prevents browser weight mismatch when switching font families */
  color: var(--text); /* explicit — avoids inheritance lag during mode transition */
}
.hero-text-wrap p .hero-line,
.hero-text-wrap h1 .hero-line {
  display: inline;
  line-height: inherit;
  color: var(--text); /* explicit — iOS WebKit won't transition inherited color */
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.hero-text-wrap p .hero-line.visible,
.hero-text-wrap h1 .hero-line.visible {
  opacity: 1;
  transform: translateY(0);
}


/* === PROJECT GRID — item 12: per-column precise gaps === */
.work-grid {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 0 calc(var(--pad) * 0.55);
  padding-bottom: 248px;
  margin-top: clamp(32px, 4.4vw, 62px);
}

.work-col {
  flex: none; /* sized by card content, not stretching to fill */
  display: flex;
  flex-direction: column;
}

/* Column start offsets — left col starts slightly lower than right */
.work-col:nth-child(1) { margin-top: 64px; }
.work-col:nth-child(2) { margin-top: 0; }

/* Explicit card widths from Figma (at 1440px viewport) */
.work-col:nth-child(1) .project-card:nth-child(1) { width: 35.1vw; margin-bottom: 215px; margin-left: 80px; }
.work-col:nth-child(1) .project-card:nth-child(2) { width: 35.1vw; margin-left: 10.56vw; }
.work-col:nth-child(2) .project-card:nth-child(1) { width: 30.9vw; margin-bottom: 163px; }
.work-col:nth-child(2) .project-card:nth-child(2) { width: 35.1vw; margin-left: 7.43vw; }

/* Cards — clip-panel image reveal replaces card fade-in */
.project-card {
  position: relative;
  transition: opacity 0.5s cubic-bezier(0.42, 0, 0.58, 1),
              filter  0.5s cubic-bezier(0.42, 0, 0.58, 1);
}

.project-card__inner {
  will-change: transform;
  transform: scale(1);
  transition: transform 0.5s cubic-bezier(0.42, 0, 0.58, 1);
}

/* Hover-blur + scale effect — non-hovered cards dim, blur, and shrink */
.work-grid.has-hover .project-card {
  opacity: 0.35;
  filter: blur(12px);
}
.work-grid.has-hover .project-card.is-hovered {
  opacity: 1;
  filter: blur(0);
}
.work-grid.has-hover .project-card:not(.is-hovered) .project-card__inner {
  transform: scale(1);
}
.work-grid.has-hover .project-card.is-hovered .project-card__inner {
  transform: scale(1);
}

/* Reveal panel — cover that slides up to reveal image on scroll.
   Used on homepage cards (.card-reveal-panel) and project pages (.img-reveal-panel).
   Background matches page bg so it's invisible before sliding away. */
.card-reveal-panel,
.img-reveal-panel {
  position: absolute;
  inset: 0;
  background: var(--bg);
  z-index: 3;
  pointer-events: none;
  transition: transform 1.0s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}
.project-card__image.img-revealed .card-reveal-panel,
.img-revealed .img-reveal-panel {
  transform: translateY(-101%);
}

/* Card column parallax — each column gets subtle independent translate */
.work-col {
  will-change: transform;
}



.project-card__header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 16px;
}
/* Two-line label block: name + descriptor stacked */
.project-card__label {
  display: flex;
  flex-direction: column;
}
.project-card__name {
  font-family: var(--font-ui);
  font-size: 12px;
  line-height: 18px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text);
  font-weight: 400;
}
.project-card__descriptor {
  /* Matches .project-card__sub style — sentence case, looser tracking, no uppercase */
  font-family: var(--font-ui);
  font-size: 12px;
  line-height: 18px;
  letter-spacing: 0.04em;
  color: var(--text);
  font-weight: 400;
}
/* Sub text below the image */
.project-card__sub {
  font-family: var(--font-ui);
  font-size: 12px;
  line-height: 18px;
  letter-spacing: 0.04em;
  color: var(--text);
  font-weight: 400;
  margin-top: 16px;
  margin-bottom: 0;
}
.project-card__icon {
  flex-shrink: 0;
  width: 12px;
  height: 12px;
  margin-left: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.25s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.project-card__icon svg {
  width: 12px;
  height: 12px;
  flex-shrink: 0;
}
.project-card__image {
  position: relative;
  overflow: hidden;
  border-radius: 2px;
  display: block;
}
.project-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Per-card aspect ratios from Figma */
.work-col:nth-child(1) .project-card:nth-child(1) .project-card__image { aspect-ratio: 506 / 399; }
.work-col:nth-child(1) .project-card:nth-child(2) .project-card__image { aspect-ratio: 506 / 353; }
.work-col:nth-child(2) .project-card:nth-child(1) .project-card__image { aspect-ratio: 446 / 332; }
.work-col:nth-child(2) .project-card:nth-child(2) .project-card__image { aspect-ratio: 506 / 399; }


/* .project-card__footer / year / desc removed — new lockup has name above image, sub below */

.icon-lock, .icon-plus { width: 12px; height: 12px; }

/* === VIBE NOTE — fixed footer center, scroll-linked slide-up === */
.vibe-note {
  position: fixed;
  bottom: calc((var(--nav-h) - 20px) / 2);
  left: 50%;
  /* initial off-screen state set by JS on first scroll tick */
  transform: translateX(-50%) translateY(120px);
  z-index: 50;
  white-space: nowrap;
  /* same as .project-card__sub */
  font-family: var(--font-ui);
  font-size: 12px;
  line-height: 18px;
  font-weight: 400;
  letter-spacing: 0.04em;
  color: var(--text);
  opacity: 0.4;
  margin: 0;
  padding: 0;
}
.vibe-note__logo {
  display: inline;
  height: 0.75em;
  width: auto;
  vertical-align: calc(-0.05em + 0.5px); /* optical baseline alignment */
}

/* === ICONS === */
svg.icon { display: inline-block; vertical-align: middle; overflow: visible; }

/* ============================================================
   NAV / FOOTER GRADIENT FADE
   Separates fixed nav and footer links from scrolling content.
   background-color + mask-image (instead of gradient background)
   allows background-color to transition smoothly on mode switch.
   ============================================================ */
body::before,
body::after {
  content: '';
  position: fixed;
  left: 0;
  right: 0;
  pointer-events: none;
  z-index: 49;  /* above content, below footer links (50) and nav (100) */
  background-color: var(--bg);
  /* background-color driven by @property --bg — no separate transition needed */
}

body::before {
  top: 0;
  height: calc(var(--nav-h) + 48px);
  -webkit-mask-image: linear-gradient(to bottom, black 0%, transparent 100%);
          mask-image: linear-gradient(to bottom, black 0%, transparent 100%);
}

body::after {
  bottom: 0;
  height: calc(var(--nav-h) + 16px);
  -webkit-mask-image: linear-gradient(to top, black 0%, transparent 100%);
          mask-image: linear-gradient(to top, black 0%, transparent 100%);
}

/* ============================================================
   NO-TRANSITION — applied on initial page load to suppress all
   permanent colour transitions so the saved mode is applied
   instantly without any flash or animation.
   ============================================================ */
html.no-transition,
html.no-transition *,
html.no-transition *::before,
html.no-transition *::after {
  transition: none !important;
}

/* @property --bg and --text on :root handle all colour transitions automatically.
   No mode-transitioning class needed — every element using var(--bg) or var(--text)
   follows the :root animation in lockstep, with no element-level transitions to compete. */

/* === MAGNETIC HOVER ===
   Attach data-magnetic to a CTA wrapper; the rAF loop in magnetic.js writes
   transform inline. Inner [data-magnetic-label] gets 0.5x parallax.
   Note: no `transition: transform` here — gotcha #3, the rAF loop smooths it. */
[data-magnetic] {
  will-change: transform;
}
[data-magnetic-label] {
  display: inline-block;
  will-change: transform;
}
/* Icon children inside CTAs shouldn't capture pointer events — keeps
   pointerenter/leave bound to the wrapper only (gotcha #2). */
[data-magnetic] > svg,
[data-magnetic] > img,
[data-magnetic] > .icon {
  pointer-events: none;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */

@media (max-width: 1023px) {
  .nav-right { gap: 32px; }
  .proj-page { padding-bottom: 100px; }
}

@media (max-width: 639px) {
  :root { --pad: 32px; --nav-pad: 32px; }
  .nav-about-suffix { display: none; }
  #navAbout .nav-link-text::after { content: "Info"; }
  body, body.cursor-hidden, body.cursor-hidden * { cursor: auto !important; }
  a { cursor: auto; }
  button { cursor: pointer; }
  .cursor-dot, .cursor-ring { display: none; }
  .hero { height: 100svh; }
  /* Logo 20% smaller on mobile */
  /* Disable blur effect on mobile (no hover on touch) */
  .work-grid.has-hover .project-card { filter: none !important; opacity: 1 !important; }

  .work-grid {
    flex-direction: column;
    align-items: stretch;
    padding: 0 var(--pad);
    gap: 0;
  }
  /* display:contents removes .work-col from layout so all 4 cards become
     direct flex children of .work-grid. That lets us reorder them across
     columns via the `order` property below — desktop two-column layout
     stays untouched. */
  .work-col {
    display: contents;
  }
  /* Reset all desktop vw widths and margins; cards fill row width */
  .work-col .project-card,
  .work-col:nth-child(1) .project-card:nth-child(1),
  .work-col:nth-child(1) .project-card:nth-child(2),
  .work-col:nth-child(2) .project-card:nth-child(1),
  .work-col:nth-child(2) .project-card:nth-child(2) {
    width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin-bottom: 40px !important;
  }
  /* Mobile-only order: Vimeo → Aura → Redfin → Hotspot Shield */
  .work-col:nth-child(1) .project-card:nth-child(1) { order: 1; } /* Vimeo */
  .work-col:nth-child(2) .project-card:nth-child(1) { order: 2; } /* Aura */
  .work-col:nth-child(1) .project-card:nth-child(2) { order: 3; } /* Redfin */
  .work-col:nth-child(2) .project-card:nth-child(2) { order: 4; } /* Hotspot Shield */
  /* Last visual card (Hotspot Shield) gets extra bottom margin */
  .work-col:nth-child(2) .project-card:nth-child(2) {
    margin-bottom: 100px !important;
  }
  /* Unify image aspect ratios on mobile so all cards share the same visual size */
  .work-col:nth-child(1) .project-card:nth-child(1) .project-card__image,
  .work-col:nth-child(1) .project-card:nth-child(2) .project-card__image,
  .work-col:nth-child(2) .project-card:nth-child(1) .project-card__image,
  .work-col:nth-child(2) .project-card:nth-child(2) .project-card__image {
    aspect-ratio: 506 / 399;
  }

  /* Hero h1 20% larger on mobile */
  .t-h2 { font-size: 34px; }

  .nav-right { gap: 20px; }
  .hero-text-wrap {
    padding-left: var(--pad);
    padding-right: var(--pad);
  }

  /* Mobile: top gradient fades with nav on scroll; bottom gradient removed (footer is in-flow) */
  body::after { display: none; }
  body::before {
    transition: opacity 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    /* background-color driven by @property --bg — no separate transition */
  }
  body.nav-faded::before { opacity: 0; }

  /* Mobile scroll-hide: shrink nav height (vertical pad collapses), never translate horizontally */
  .nav {
    overflow: hidden;
    transition: opacity 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94),
                height 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  }
  .nav.nav--hidden {
    height: 0;
    transform: none;
  }

  /* Project pages: remove the 100px bottom pad — mobile-footer-row provides spacing */
  .proj-page { padding-bottom: 0; }

  /* Mobile in-flow footer — JS moves these into .mobile-footer-row at page bottom */
  .mobile-footer-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: calc((var(--nav-h) - 20px) / 2) var(--nav-pad);
  }
  .mobile-footer-row .site-email,
  .mobile-footer-row .hero-scroll {
    position: static;
    bottom: auto; left: auto; right: auto;
    opacity: 1;
    pointer-events: auto;
    transform: none;
  }

}

/* ============================================================
   PROJECT PAGES
   Shared styles for aura / hotspot-shield / redfin / vimeo.
   Extracted from per-page inline <style> blocks.
   ============================================================ */

/* Noise overlay */
.proj-noise {
  position: fixed;
  inset: 0;
  background-image: url('https://images.squarespace-cdn.com/content/v1/5b2491974cde7a990396abd2/1667941381254-7VMCBMQVLHFMV2UADZEX/noise.png');
  background-size: 174px 174px;
  mix-blend-mode: soft-light;
  opacity: 0.16;
  pointer-events: none;
  z-index: 1;
}

/* Scroll progress — left vertical bar */
.proj-progress {
  position: fixed;
  left: 0;
  top: 0;
  width: 2px;
  height: 100vh;
  background: var(--text);
  transform-origin: top;
  transform: scaleY(0);
  z-index: 200;
}

/* Page padding — match homepage h1 distance from top */
.proj-page {
  padding-top: calc(var(--nav-h) + calc(var(--vpad) * 0.5));
}

/* Title */
.proj-title {
  text-align: center;
  padding: 0 var(--nav-pad) 40px;
  max-width: calc(806px + var(--nav-pad) * 2);
  margin: 0 auto;
}
.proj-title h1 {
  font-family: 'SDL', sans-serif;
  font-size: clamp(28px, 4vw, 58px);
  font-weight: 300;
  line-height: 1.1;
  letter-spacing: 0;
  color: var(--text);
}
.proj-title h1 em {
  font-family: 'SDLI', sans-serif;
  color: var(--text);
  font-style: italic;
  font-weight: 300;
}
.proj-year {
  font-family: var(--font-ui);
  font-size: 12px;
  line-height: 20px; /* match top nav */
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text);
  font-weight: 400;
  margin: 40px 0 0;
}

/* Content area */
.proj-content {
  display: flex;
  flex-direction: column;
  gap: 40px;
  padding: 0 var(--nav-pad) var(--vpad-sm);
}

/* Full-width image block */
.proj-wide {
  width: 100%;
  overflow: hidden;
  position: relative;
  aspect-ratio: 16/9; /* reserve height before lazy image loads */
}
.proj-wide img {
  width: 100%;
  height: auto;
  display: block;
  transform-origin: center;
  will-change: transform;
}

/* Body text paragraph */
.proj-text {
  max-width: 806px;
  margin: 0 auto;
  width: 100%;
  font-family: var(--font);
  font-size: 15px;
  line-height: 26px;
  font-weight: 300;
  color: var(--text);
}
ul.proj-text {
  padding-left: 0;
  list-style: none;
}
ul.proj-text li::before {
  content: "\2022\00a0";
}

/* Video embed */
.proj-video {
  width: 100%;
  aspect-ratio: 16 / 9;
  position: relative;
  overflow: hidden;
}
.proj-video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  transform-origin: center;
  will-change: transform;
  pointer-events: none; /* prevents iframe from swallowing wheel events */
}

/* Two-column image block */
.proj-2col {
  width: 100%;
  display: flex;
  gap: 16px;
}
.proj-2col img {
  flex: 1;
  min-width: 0;
  height: auto;
  display: block;
  transform-origin: center;
  will-change: transform;
}


@media (max-width: 639px) {
  .proj-2col { flex-direction: column; }
  .proj-text { font-size: 14px; line-height: 23px; }
  .proj-page { padding-top: calc(var(--nav-h) + 60px); }
  .proj-title h1 { font-size: 34px; }
  .proj-nav .nav-right { gap: 24px; }
  /* Unify side padding on mobile — all sections use --nav-pad (32px) flat,
     no multipliers, matching top nav and work-grid. */
  .proj-title { padding: 0 var(--nav-pad) 40px; max-width: 100%; }
  .proj-content { padding: 0 var(--nav-pad) var(--vpad-sm); }
}

/* --pad is clamp(16px, 2.78vw, 80px) in :root — scales at all breakpoints */
