@font-face {
  font-family: 'Blair';
  src: url('/assets/fonts/blair-itc-light.woff2') format('woff2'),
       url('/assets/fonts/blair-itc-light.woff') format('woff');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}

:root {
  --bg: #060607;
  --fg: #e8e6e1;
  --display: 'Blair', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--fg);
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
}

body { overflow-x: hidden; }

a { color: var(--fg); text-decoration: none; }
a:hover { color: #fff; }

img { display: block; max-width: 100%; }

@keyframes cuePulse {
  0%   { transform: scaleY(0); transform-origin: top; }
  45%  { transform: scaleY(1); transform-origin: top; }
  55%  { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}
@keyframes vignetteBreathe {
  0%, 100% { box-shadow: inset 0 0 240px rgba(0,0,0,0.78); }
  50%      { box-shadow: inset 0 0 300px rgba(0,0,0,0.86); }
}
@keyframes kenBurns { from { scale: 1; } to { scale: 1.08; } }

/* ---------- Intro ---------- */

.intro {
  height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 30px;
  position: relative;
  overflow: hidden;
}

#letterbox {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 0;
  transform: translateY(-50%);
  overflow: hidden;
  opacity: 0;
  transition: height 2.4s cubic-bezier(0.22, 1, 0.36, 1), opacity 2s ease;
  pointer-events: none;
}
#letterbox picture { display: contents; }
#letterbox img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.intro__content {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 30px;
  text-shadow: 0 2px 30px rgba(0, 0, 0, 0.9);
}

.intro__mark {
  width: 220px;
  height: auto;
  opacity: 0.92;
  filter: drop-shadow(0 2px 24px rgba(0, 0, 0, 0.85));
}

.intro__name {
  font-family: var(--display);
  font-size: clamp(22px, 3.2vw, 40px);
  font-weight: 300;
  letter-spacing: 0.55em;
  margin: 0 0 0 0.55em;
  text-transform: uppercase;
  text-align: center;
}

.intro__tagline {
  margin: 0;
  font-size: 11px;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  color: rgba(232, 230, 225, 0.55);
  text-align: center;
}

.intro__cue {
  position: absolute;
  bottom: 36px;
  left: calc(50% - 0.5px);
  width: 1px;
  height: 56px;
  background: rgba(232, 230, 225, 0.5);
  animation: cuePulse 2.6s ease-in-out infinite;
}

/* ---------- Photo sections ---------- */

.shot {
  height: 112vh;
  position: relative;
  overflow: hidden;
  background: var(--bg);
}

.shot__backdrop {
  position: absolute;
  inset: 0;
  background-image: var(--backdrop);
  background-size: cover;
  background-position: center;
  filter: blur(34px) brightness(0.3) saturate(0.85);
  transform: scale(1.12);
}

.shot__stage { position: absolute; inset: 0; }
.shot__stage picture { display: contents; }

.shot__img {
  opacity: 0;
  transition: opacity 1.8s ease;
  will-change: transform, opacity;
  object-fit: cover;
  object-position: center;
}
.shot__img.is-visible { opacity: 1; }

/* Full-bleed treatment: landscape images on wide viewports */
.shot--landscape .shot__backdrop { display: none; }
.shot--landscape .shot__img {
  position: absolute;
  left: 0;
  top: -8vh;
  width: 100%;
  height: 128vh;
}

/* Framed treatment: portrait always, landscape below 760px */
.shot--portrait .shot__stage {
  display: flex;
  align-items: center;
  justify-content: center;
}
.shot--portrait .shot__img {
  height: 94vh;
  width: auto;
  aspect-ratio: 2 / 3;
  max-width: 92vw;
  max-height: 94vh;
  box-shadow: 0 40px 120px rgba(0, 0, 0, 0.65);
}

@media (max-width: 759px) {
  .shot--landscape .shot__backdrop { display: block; }
  .shot--landscape .shot__stage {
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .shot--landscape .shot__img {
    position: static;
    left: auto;
    top: auto;
    width: 92vw;
    height: auto;
    aspect-ratio: 3 / 2;
    max-width: 92vw;
    max-height: 94vh;
    box-shadow: 0 40px 120px rgba(0, 0, 0, 0.65);
  }
}

.shot__vignette {
  position: absolute;
  inset: 0;
  pointer-events: none;
  animation: vignetteBreathe 9s ease-in-out infinite;
}

.shot__caption {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  padding: 8vh 6vw;
  opacity: 0;
  transition: opacity 0.7s ease;
  background: linear-gradient(to top, rgba(4, 4, 5, 0.72), rgba(4, 4, 5, 0) 44%);
  cursor: default;
}
.shot__caption.is-active,
.shot:hover .shot__caption { opacity: 1; }

.shot__caption-inner { display: flex; flex-direction: column; gap: 12px; }

.shot__num {
  font-size: 11px;
  letter-spacing: 0.4em;
  color: rgba(232, 230, 225, 0.6);
}

.shot__title {
  margin: 0;
  font-weight: 400;
  font-family: var(--display);
  font-size: clamp(19px, 2.3vw, 32px);
  letter-spacing: 0.28em;
  text-transform: uppercase;
}

/* ---------- Interlude ---------- */

.interlude {
  height: 64vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 24px;
}
.interlude p {
  margin: 0;
  font-family: var(--display);
  font-size: clamp(15px, 1.6vw, 22px);
  letter-spacing: 0.5em;
  text-transform: uppercase;
  color: rgba(232, 230, 225, 0.45);
  text-align: center;
}

/* ---------- About / Contact ---------- */

.about {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 36px;
  padding: 14vh 24px;
  text-align: center;
}

.about__mark { width: 150px; height: auto; opacity: 0.85; }

.about__bio {
  margin: 0;
  max-width: 52ch;
  font-size: 15px;
  line-height: 1.9;
  letter-spacing: 0.02em;
  color: rgba(232, 230, 225, 0.72);
}

.about__links {
  display: flex;
  gap: 44px;
  flex-wrap: wrap;
  justify-content: center;
}
.about__links a {
  font-size: 11px;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  border-bottom: 1px solid transparent;
  padding-bottom: 4px;
}
.about__links a:hover,
.about__links a:focus-visible { border-bottom-color: rgba(232, 230, 225, 0.6); }

.about__footer {
  margin: 24px 0 0;
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: rgba(232, 230, 225, 0.35);
}

/* ---------- Film grain ---------- */

.grain {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 50;
  mix-blend-mode: overlay;
  opacity: 0.55;
  background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='240'%20height='240'%3E%3Cfilter%20id='n'%3E%3CfeTurbulence%20type='fractalNoise'%20baseFrequency='0.75'%20numOctaves='2'%20stitchTiles='stitch'/%3E%3CfeColorMatrix%20values='0%200%200%200%201%200%200%200%200%201%200%200%200%200%201%200%200%200%200.16%200'/%3E%3C/filter%3E%3Crect%20width='240'%20height='240'%20filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- Focus ---------- */

:focus-visible { outline: 1px solid rgba(232, 230, 225, 0.7); outline-offset: 4px; }

/* ---------- Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
  .intro__cue { animation: none; opacity: 0.5; }
  .shot__vignette { animation: none; box-shadow: inset 0 0 240px rgba(0, 0, 0, 0.78); }
  .shot__img { animation: none !important; scale: 1 !important; transform: none !important; }
  #letterbox { transition: opacity 0.6s ease; }
  html { scroll-behavior: auto; }
}
