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

:root {
  --bg:     #0c0f0f;
  --teal:   #2a4a4a;
  --teal-light: #3d6b6b;
  --beige:  #e8dcc8;
  --dim:    rgba(232,220,200,0.3);
  --border: rgba(232,220,200,0.08);
  --font-display: 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-mono:    'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-serif:   'Helvetica Neue', Helvetica, Arial, sans-serif;
}

html { background: var(--bg); color: var(--beige); scroll-behavior: smooth; }
body { cursor: none; overflow-x: hidden; }

/* ─── Cursor ────────────────────────────────────────────────── */
.cursor {
  position: fixed;
  width: 10px; height: 10px;
  background: #e8dcc8;
  border-radius: 50%;
  pointer-events: none;
  z-index: 99999;
  top: 0; left: 0;
  transform: translate(-50%, -50%);
  transition: width 0.3s ease, height 0.3s ease, background 0.3s ease;
}
.cursor.hovering {
  width: 48px; height: 48px;
  background: #ffffff;
  mix-blend-mode: difference;
}

/* ─── Header ────────────────────────────────────────────────── */
.tp-header {
  position: fixed; top:0; left:0; right:0; z-index:500;
  display: flex; justify-content: space-between; align-items: center;
  padding: 22px 5vw;
  border-bottom: 1px solid var(--border);
  background: rgba(12,15,15,0.92);
  backdrop-filter: blur(8px);
}
.back-link, .header-logo {
  font-family: var(--font-mono); font-size: 10px;
  letter-spacing: 0.2em; color: var(--dim);
  text-decoration: none; transition: color 0.3s ease;
}
.back-link:hover, .header-logo:hover { color: var(--beige); }
.header-title {
  font-family: var(--font-display); font-size: 20px;
  letter-spacing: 0.2em; color: var(--beige);
}

/* ─── Hero section ──────────────────────────────────────────── */
.hero-section {
  position: relative;
  width: 100vw; height: 100vh;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.hero-section::before {
  content: '';
  position: fixed; inset: 0;
  background-image: url('../../images/trespasscover.png');
  background-size: cover;
  background-position: center;
  filter: brightness(0.75);
  z-index: -1;
}
.hero-fade {
  position: absolute; inset: 0;
  background: #0c0f0f;
  opacity: 0;
  z-index: 1;
  pointer-events: none;
}
.hero-scroll-hint { z-index: 2; }

.hero-scroll-hint {
  position: absolute; bottom: 36px; left: 50%;
  transform: translateX(-50%);
  display: flex; flex-direction: column;
  align-items: center; gap: 10px;
  font-family: var(--font-mono); font-size: 8px;
  letter-spacing: 0.3em; color: var(--dim);
  pointer-events: none;
  animation: fadeUp 1s ease forwards 0.5s; opacity: 0;
}
.hint-line {
  width: 1px; height: 40px;
  background: var(--teal-light);
  animation: pulse 1.8s ease-in-out infinite;
}
@keyframes pulse { 0%,100%{opacity:0.3;transform:scaleY(1)} 50%{opacity:1;transform:scaleY(0.4)} }
@keyframes fadeUp {
  from{opacity:0;transform:translateX(-50%) translateY(10px)}
  to{opacity:1;transform:translateX(-50%) translateY(0)}
}

/* ─── Spreads section ───────────────────────────────────────── */
.spreads-section {
  position: relative; z-index: 1;
  background: var(--bg);
  width: 100vw;
  padding: 10vh 0 6vh;
  display: flex; flex-direction: column;
  align-items: center; gap: 24px;
  border-top: 1px solid var(--border);
}

.spreads-header {
  width: 100%; padding: 0 5vw;
  display: flex; justify-content: space-between; align-items: center;
}
.spreads-label {
  font-family: var(--font-mono); font-size: 9px;
  letter-spacing: 0.25em; color: var(--dim);
}
.spread-counter {
  font-family: var(--font-mono); font-size: 9px;
  letter-spacing: 0.2em; color: var(--dim);
}
.spread-counter span {
  color: var(--beige);
  transition: all 0.3s ease;
}

/* ─── Viewer ────────────────────────────────────────────────── */
.spreads-viewer {
  position: relative;
  width: 100vw;
  height: min(calc(85vw * 1417 / 2007), 706px); /* matches 2007×1417 image ratio */
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}

.spreads-track {
  position: relative;
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
}

/* ─── Spread item ───────────────────────────────────────────── */
.spread-item {
  position: absolute;
  width: min(85vw, 1000px);
  height: 100%;
  opacity: 0;
  transform: translateX(60px) scale(0.96);
  transition: opacity 0.6s cubic-bezier(0.16,1,0.3,1),
              transform 0.6s cubic-bezier(0.16,1,0.3,1);
  pointer-events: none;
}
.spread-item.active {
  opacity: 1;
  transform: translateX(0) scale(1);
  pointer-events: all;
}
.spread-item.prev-item {
  opacity: 0;
  transform: translateX(-60px) scale(0.96);
}

.spread-img-wrap {
  width: 100%; height: 100%;
  overflow: hidden;
  border: 1px solid var(--border);
}

.spread-img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}

.spread-placeholder {
  width: 100%; height: 100%;
  background: linear-gradient(135deg, #0f1a1a 0%, #0c1515 100%);
  display: flex; align-items: center; justify-content: center;
  border: 1px dashed rgba(42,74,74,0.4);
}
.spread-placeholder span {
  font-family: var(--font-mono); font-size: 11px;
  letter-spacing: 0.3em; color: rgba(42,74,74,0.6);
}

/* ─── Nav arrows ────────────────────────────────────────────── */
.spread-nav {
  position: absolute;
  top: 50%; transform: translateY(-50%);
  background: none; border: 1px solid var(--border);
  color: var(--dim); cursor: none;
  font-family: var(--font-mono); font-size: 16px;
  padding: 16px 20px;
  transition: color 0.3s ease, border-color 0.3s ease,
              background 0.3s ease;
  z-index: 10;
}
.spread-nav:hover {
  color: var(--beige);
  border-color: rgba(232,220,200,0.3);
  background: rgba(232,220,200,0.04);
}
.spread-nav.prev { left: 3vw; }
.spread-nav.next { right: 3vw; }

/* ─── Progress bar ──────────────────────────────────────────── */
.spread-progress {
  width: min(85vw, 1000px);
  height: 1px;
  background: var(--border);
}
.spread-progress-fill {
  height: 100%;
  background: var(--teal-light);
  width: 4.16%; /* 1/24 */
  transition: width 0.4s ease;
}

/* ─── Description section ───────────────────────────────────── */
.description-section {
  position: relative; z-index: 1;
  background: var(--bg);
  padding: 14vh 8vw 12vh;
  border-top: 1px solid var(--border);
}

.desc-inner {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 8vw;
  align-items: start;
}

.desc-left {
  display: flex; flex-direction: column; gap: 8px;
  opacity: 0; transform: translateY(24px);
  transition: opacity 0.9s ease, transform 0.9s ease;
}
.desc-left.visible { opacity:1; transform:translateY(0); }

.desc-issue {
  font-family: var(--font-mono); font-size: 9px;
  letter-spacing: 0.3em; color: var(--teal-light);
}
.desc-title {
  font-family: var(--font-display);
  font-size: clamp(64px, 8vw, 120px);
  letter-spacing: 0.02em; color: var(--beige);
  line-height: 0.9;
}
.desc-subtitle {
  font-family: var(--font-serif);
  font-size: clamp(13px, 1.4vw, 18px);
  font-style: italic; color: var(--dim);
  margin-top: 8px;
}

.desc-right {
  display: flex; flex-direction: column; gap: 3vh;
  opacity: 0; transform: translateY(24px);
  transition: opacity 0.9s ease 0.15s, transform 0.9s ease 0.15s;
}
.desc-right.visible { opacity:1; transform:translateY(0); }

.desc-body {
  font-family: var(--font-mono); font-size: clamp(14px, 1.15vw, 17px);
  line-height: 1.9; color: var(--dim); font-weight: 400;
}

.desc-meta {
  display: flex; gap: 4vw;
  padding-top: 2vh;
  border-top: 1px solid var(--border);
}
.desc-meta-item {
  display: flex; flex-direction: column; gap: 6px;
}
.desc-meta-label {
  font-family: var(--font-mono); font-size: 8px;
  letter-spacing: 0.25em; color: var(--teal-light);
  text-transform: uppercase;
}
.desc-meta-val {
  font-family: var(--font-mono); font-size: 11px;
  color: var(--beige);
}

/* ─── Video section ─────────────────────────────────────────── */
.video-section {
  position: relative; z-index: 1;
  background: var(--bg);
  padding: 10vh 8vw 14vh;
  border-top: 1px solid var(--border);
}
.video-inner {
  max-width: 900px;
  margin: 0 auto;
  display: flex; flex-direction: column; gap: 28px;
}
.video-label-row {
  opacity: 0; transform: translateY(20px);
  transition: opacity 0.9s ease, transform 0.9s ease;
}
.video-label-row.visible { opacity: 1; transform: translateY(0); }
.video-label {
  font-family: var(--font-mono); font-size: 9px;
  letter-spacing: 0.3em; color: var(--teal-light);
}
.video-placeholder {
  width: 100%;
  aspect-ratio: 16 / 9;
  background: #0c1414;
  border: 1px solid var(--border);
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 16px;
  opacity: 0; transform: translateY(20px);
  transition: opacity 0.9s ease 0.1s, transform 0.9s ease 0.1s;
}
.video-placeholder.visible { opacity: 1; transform: translateY(0); }
.video-play-icon {
  font-size: 28px; color: var(--teal-light);
  opacity: 0.4;
}
.video-placeholder-text {
  font-family: var(--font-mono); font-size: 9px;
  letter-spacing: 0.3em; color: var(--teal-light);
  opacity: 0.4;
}
.video-caption {
  font-family: var(--font-mono); font-size: clamp(13px, 1.05vw, 15px);
  line-height: 1.9; color: var(--dim);
  max-width: 600px;
  opacity: 0; transform: translateY(20px);
  transition: opacity 0.9s ease 0.2s, transform 0.9s ease 0.2s;
}
.video-caption.visible { opacity: 1; transform: translateY(0); }

/* ─── Responsive ────────────────────────────────────────────── */
@media (max-width: 768px) {
  .desc-inner { grid-template-columns: 1fr; gap: 6vh; }
  .spread-nav { padding: 12px 14px; font-size: 14px; }
}

/* ─── Image display fix ─────────────────────────────────────── */
.spread-img-wrap {
  position: relative;
}
.spread-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  z-index: 2;
}
.spread-img--contain {
  object-fit: contain;
  background: var(--bg);
}
.spread-placeholder {
  position: absolute;
  inset: 0;
  z-index: 1;
}
/* ─── Video ─────────────────────────────────────────────────── */
.video-wrap {
  width: 100%;
  max-width: 1000px;
  margin: 0 auto;
}
.video-player {
  width: 100%;
  display: block;
  border: 1px solid rgba(232,220,200,0.08);
}
