/* ============================================================
   Homepage — index.css
   Magazine-style index of all categories
   ============================================================ */

/* ---- Hero (three variants — switch via [data-hero] on <body>) ---- */
.hero {
  padding-block: calc(3rem * var(--density)) calc(5rem * var(--density));
  position: relative;
}

/* ===== Variant A — Editorial ===== */
body[data-hero="editorial"] .hero { padding-top: calc(4rem * var(--density)); }
body[data-hero="editorial"] .hero__editorial { display: grid; }
body[data-hero="stamp"]     .hero__editorial,
body[data-hero="postcard"]  .hero__editorial { display: none; }

.hero__editorial {
  grid-template-columns: 1fr;
  gap: 2.5rem;
  align-items: end;
}
.hero__eyebrow {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--muted);
}
.hero__eyebrow .dash { width: 64px; height: 1px; background: var(--accent); }
.hero__title {
  font-size: clamp(3rem, 11vw, 9rem);
  line-height: 0.94;
  letter-spacing: -0.03em;
  font-variation-settings: "opsz" 60;
  margin-block: 1.2rem 1.6rem;
  max-width: 12ch;
}
.hero__title em {
  font-style: italic;
  color: var(--accent);
  font-variation-settings: "opsz" 60;
}
.hero__sub {
  display: grid;
  grid-template-columns: 1.2fr auto 1fr;
  align-items: end;
  gap: 2rem;
  padding-top: 2rem;
  border-top: 1px solid var(--rule);
}
.hero__lede {
  font-size: var(--fs-xl);
  line-height: 1.4;
  max-width: 36ch;
  color: var(--ink-soft);
  font-variation-settings: "opsz" 20;
}
.hero__stamp {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
  text-align: right;
  line-height: 1.8;
}
.hero__stamp strong { color: var(--ink); font-weight: 400; }
.hero__divider {
  width: 1px;
  height: 60px;
  background: var(--rule-strong);
  justify-self: center;
}

@media (max-width: 760px) {
  .hero__sub { grid-template-columns: 1fr; gap: 1.5rem; }
  .hero__divider { display: none; }
  .hero__stamp { text-align: left; }
}

/* ===== Variant B — Stamp (passport stamp collage) ===== */
body[data-hero="stamp"] .hero__stamp-layout { display: grid; }
body[data-hero="editorial"] .hero__stamp-layout,
body[data-hero="postcard"]  .hero__stamp-layout { display: none; }

.hero__stamp-layout {
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: center;
  position: relative;
  min-height: 70vh;
}
.hero__stamp-text h1 {
  font-size: clamp(2.6rem, 8vw, 6.5rem);
  line-height: 0.96;
  letter-spacing: -0.02em;
  font-variation-settings: "opsz" 48;
}
.hero__stamp-text h1 em {
  font-style: italic;
  font-variation-settings: "opsz" 48;
  color: var(--accent);
}
.hero__stamp-text p {
  margin-top: 1.6rem;
  max-width: 38ch;
  font-size: var(--fs-lg);
  color: var(--ink-soft);
  line-height: 1.5;
}
.hero__stamp-collage {
  position: relative;
  height: 60vh;
  min-height: 480px;
}
.stamp-card {
  position: absolute;
  background: var(--paper);
  padding: 0.6rem;
  box-shadow:
    0 1px 0 var(--rule),
    0 20px 50px -25px rgba(42, 34, 24, 0.45);
  transition: transform var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease);
}
.stamp-card:hover {
  transform: translateY(-6px) rotate(0deg) !important;
  box-shadow: 0 30px 60px -25px rgba(42, 34, 24, 0.55);
  z-index: 5;
}
.stamp-card__img {
  width: 100%; height: 100%; object-fit: cover;
}
.stamp-card__cap {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  text-align: center;
  padding-block: 0.6rem 0.2rem;
}
.stamp-card--1 { top: 0;     left: 8%;  width: 56%; height: 58%;  transform: rotate(-3deg); }
.stamp-card--2 { top: 22%;   right: 0;  width: 48%; height: 50%;  transform: rotate(4deg); }
.stamp-card--3 { bottom: 0;  left: 22%; width: 46%; height: 38%;  transform: rotate(-1.5deg); z-index: 2; }

.stamp-mark {
  position: absolute;
  width: 130px; height: 130px;
  border-radius: 50%;
  border: 2px solid var(--accent);
  color: var(--accent);
  display: grid; place-items: center;
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  text-align: center;
  transform: rotate(-12deg);
  background: rgba(240, 235, 225, 0.6);
  bottom: -30px; right: -10px;
  z-index: 6;
  line-height: 1.3;
}
.stamp-mark::before, .stamp-mark::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  border: 1px solid var(--accent);
}
.stamp-mark::before { inset: 8px; opacity: 0.5; }

@media (max-width: 820px) {
  .hero__stamp-layout { grid-template-columns: 1fr; min-height: auto; }
  .hero__stamp-collage { height: 70vw; min-height: 320px; }
  .stamp-mark { width: 100px; height: 100px; font-size: 0.75rem; bottom: -16px; right: 0; }
}

/* ===== Variant C — Postcard (full-bleed) ===== */
body[data-hero="postcard"] .hero__postcard { display: block; }
body[data-hero="editorial"] .hero__postcard,
body[data-hero="stamp"]     .hero__postcard { display: none; }

.hero__postcard {
  position: relative;
  height: min(85vh, 720px);
  margin-inline: var(--gutter);
  overflow: hidden;
  background: var(--ink);
}
.hero__postcard img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  filter: brightness(0.78) contrast(1.05);
  opacity: 0;
  transition: opacity 0.6s var(--ease);
}
.hero__postcard img.is-ready { opacity: 1; }
.hero__postcard-grain {
  position: absolute; inset: 0;
  background-image:
    linear-gradient(90deg, rgba(0,0,0,0.80) 0%, rgba(0,0,0,0.55) 26%, rgba(0,0,0,0.18) 52%, rgba(0,0,0,0) 70%),
    linear-gradient(180deg, transparent 50%, rgba(0,0,0,0.45) 100%);
  pointer-events: none;
}
.hero__postcard-text {
  position: absolute;
  left: clamp(1.5rem, 5vw, 4rem);
  right: clamp(1.5rem, 5vw, 4rem);
  bottom: clamp(2rem, 6vw, 4rem);
  color: var(--paper);
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2rem;
  align-items: end;
}
.hero__postcard-text h1 {
  font-size: clamp(2.5rem, 9vw, 7rem);
  line-height: 0.94;
  letter-spacing: -0.02em;
  font-variation-settings: "opsz" 60;
}
.hero__postcard-text h1 em {
  font-style: italic;
  color: var(--accent-soft);
  font-variation-settings: "opsz" 60;
}
.hero__postcard-coords {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  text-align: right;
  line-height: 1.8;
  opacity: 0.92;
}
.hero__postcard-coords strong { color: var(--accent-soft); font-weight: 400; }
.hero__postcard-corner {
  position: absolute;
  top: clamp(1rem, 3vw, 2rem);
  left: clamp(1rem, 3vw, 2rem);
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--paper);
  opacity: 0.85;
}
@media (max-width: 760px) {
  .hero__postcard-text { grid-template-columns: 1fr; }
  .hero__postcard-coords { text-align: left; }
}

/* ---- Stats strip ---- */
.stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-block: 1px solid var(--ink);
}
.stats__cell {
  padding: 2rem 1.5rem;
  border-right: 1px solid var(--rule);
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.stats__cell:last-child { border-right: 0; }
.stats__cell:hover { background: var(--paper); }
.stats__cell { transition: background var(--t-base) var(--ease); }
.stats__num {
  font-size: clamp(2.5rem, 5vw, 4rem);
  line-height: 0.95;
  font-variation-settings: "opsz" 36;
  letter-spacing: -0.02em;
}
.stats__num em {
  font-style: italic;
  color: var(--accent);
  font-variation-settings: "opsz" 36;
}
.stats__label {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
}
@media (max-width: 760px) {
  .stats { grid-template-columns: 1fr 1fr; }
  .stats__cell:nth-child(2) { border-right: 0; }
  .stats__cell:nth-child(-n+2) { border-bottom: 1px solid var(--rule); }
}

/* ---- Index — magazine table of contents ---- */
.toc {
  display: grid;
  grid-template-columns: 1fr;
  border-top: 1px solid var(--ink);
}
.toc__row {
  display: grid;
  grid-template-columns: 80px 1fr auto 100px;
  gap: 1.5rem;
  align-items: baseline;
  padding-block: 1.8rem;
  border-bottom: 1px solid var(--rule);
  position: relative;
  overflow: hidden;
  transition: padding-inline var(--t-base) var(--ease);
}
.toc__row::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--ink);
  transform: translateX(-101%);
  transition: transform var(--t-slow) var(--ease);
  z-index: 0;
}
.toc__row:hover { padding-inline: 1rem; }
.toc__row:hover::before { transform: translateX(0); }
.toc__row:hover > * { color: var(--cream); position: relative; z-index: 1; }
.toc__row:hover .toc__title em { color: var(--accent-soft); }

.toc__num {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.18em;
  color: var(--muted);
  position: relative; z-index: 1;
}
.toc__title {
  font-size: clamp(1.6rem, 3.4vw, 2.6rem);
  line-height: 1;
  font-variation-settings: "opsz" 28;
  position: relative; z-index: 1;
}
.toc__title em {
  font-style: italic;
  color: var(--accent);
  font-variation-settings: "opsz" 28;
}
.toc__count {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  position: relative; z-index: 1;
}
.toc__arrow {
  font-family: var(--mono);
  font-size: 1.25rem;
  color: var(--ink);
  text-align: right;
  position: relative; z-index: 1;
  transition: transform var(--t-base) var(--ease);
}
.toc__row:hover .toc__arrow { transform: translateX(8px); color: var(--accent-soft); }

@media (max-width: 760px) {
  .toc__row {
    grid-template-columns: auto 1fr;
    grid-template-areas:
      "num title"
      ".   count";
    gap: 0.3rem 1.2rem;
    padding-block: 1.4rem;
  }
  .toc__num   { grid-area: num; }
  .toc__title { grid-area: title; }
  .toc__count { grid-area: count; }
  .toc__arrow { display: none; }
}

/* ---- Featured Article ---- */
.feature {
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}
.feature__media {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: var(--cream-deep);
}
.feature__media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform calc(1200ms * var(--motion) + 1ms) var(--ease);
}
.feature:hover .feature__media img { transform: scale(1.04); }
.feature__tag {
  position: absolute;
  top: 1.2rem; left: 1.2rem;
  background: var(--paper);
  padding: 0.4rem 0.7rem;
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink);
}
.feature__meta {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
}
.feature__title {
  font-size: clamp(2rem, 4.4vw, 3.6rem);
  line-height: 1.02;
  margin-block: 1.2rem 1.5rem;
  font-variation-settings: "opsz" 36;
  letter-spacing: -0.015em;
}
.feature__title em {
  font-style: italic;
  font-variation-settings: "opsz" 36;
}
.feature__lede {
  font-size: var(--fs-xl);
  line-height: 1.5;
  color: var(--ink-soft);
  max-width: 44ch;
  margin-bottom: 2rem;
}
@media (max-width: 820px) {
  .feature { grid-template-columns: 1fr; }
  .feature__media { aspect-ratio: 4 / 3; }
}

/* ---- Article grid (3 secondary) ---- */
.articles-grid {
  margin-top: clamp(3rem, 6vw, 5rem);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.5rem;
}
.article-card {
  display: grid;
  grid-template-rows: auto 1fr;
  gap: 1.2rem;
}
.article-card__media {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--cream-deep);
}
.article-card__media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform calc(900ms * var(--motion) + 1ms) var(--ease);
}
.article-card:hover .article-card__media img { transform: scale(1.05); }
.article-card__meta {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--muted);
  display: flex;
  gap: 1rem;
  align-items: center;
}
.article-card__meta .dot { width: 4px; height: 4px; background: var(--tan); border-radius: 50%; }
.article-card__title {
  font-size: var(--fs-2xl);
  line-height: 1.1;
  font-variation-settings: "opsz" 28;
  margin-block: 0.6rem;
  transition: color var(--t-base) var(--ease);
  /* uniform 2-line title — clamp longer ones with "…" so excerpts align across the row */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: calc(2 * 1.1em);
}
.article-card:hover .article-card__title { color: var(--accent); }
.article-card__excerpt {
  font-size: var(--fs-base);
  color: var(--ink-soft);
  line-height: 1.55;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
@media (max-width: 900px) { .articles-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .articles-grid { grid-template-columns: 1fr; gap: 3rem; } }

/* ---- Load more ---- */
.articles-more {
  margin-top: clamp(2.5rem, 5vw, 3.5rem);
  display: flex;
  justify-content: center;
}
.btn-more {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink);
  background: transparent;
  border: 1px solid var(--rule-strong);
  padding: 0.9rem 2.2rem;
  cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.btn-more:hover { background: var(--accent); color: var(--paper); border-color: var(--accent); }
.btn-more .arr { margin-left: 0.5rem; }

/* ---- Photos — mixed grid ---- */
.photos-mix {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-auto-rows: 14vw;
  gap: 0.8rem;
}
.photo {
  position: relative;
  overflow: hidden;
  background: var(--cream-deep);
}
.photo img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform var(--t-slow) var(--ease), filter var(--t-base) var(--ease);
}
.photo:hover img { transform: scale(1.05); filter: brightness(1.05); }
.photo__cap {
  position: absolute;
  left: 0.8rem; bottom: 0.8rem;
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--paper);
  background: rgba(42, 34, 24, 0.65);
  padding: 0.35rem 0.55rem;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity var(--t-base) var(--ease), transform var(--t-base) var(--ease);
}
.photo:hover .photo__cap { opacity: 1; transform: none; }

.photo--1 { grid-column: span 2; grid-row: span 2; }
.photo--2 { grid-column: span 2; grid-row: span 1; }
.photo--3 { grid-column: span 2; grid-row: span 1; }
.photo--4 { grid-column: span 1; grid-row: span 1; }
.photo--5 { grid-column: span 1; grid-row: span 1; }
.photo--6 { grid-column: span 2; grid-row: span 2; }
.photo--7 { grid-column: span 2; grid-row: span 1; }
.photo--8 { grid-column: span 2; grid-row: span 1; }

.photos-cta { margin-top: 2.5rem; text-align: right; }
@media (max-width: 760px) {
  .photos-mix { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 44vw; }
  .photo--1, .photo--6 { grid-column: span 2; grid-row: span 1; }
  .photo--2, .photo--3, .photo--7, .photo--8 { grid-column: span 1; }
}

/* ---- Quotes ---- */
.quotes {
  background: var(--paper);
}
.quotes-wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: start;
}
.quote {
  position: relative;
  padding-left: 2.5rem;
}
.quote::before {
  content: "“";
  position: absolute;
  left: -0.1rem; top: -2.2rem;
  font-size: 6rem;
  color: var(--accent);
  font-style: italic;
  line-height: 1;
  font-family: var(--serif);
}
.quote p {
  font-size: clamp(1.5rem, 2.6vw, 2.1rem);
  line-height: 1.3;
  font-style: italic;
  font-variation-settings: "opsz" 24;
  color: var(--ink);
  margin: 0 0 1.4rem;
  letter-spacing: -0.005em;
}
.quote cite {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-style: normal;
  color: var(--muted);
  display: block;
}
.quote cite em {
  font-family: var(--serif);
  font-style: italic;
  text-transform: none;
  letter-spacing: 0;
  color: var(--ink);
  font-size: 1.05rem;
  margin-left: 0.4rem;
}
@media (max-width: 820px) {
  .quotes-wrap { grid-template-columns: 1fr; gap: 4rem; }
}

/* ---- Musings — short paragraphs, journal style ---- */
.musings {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.5rem;
}
.musing {
  background: var(--paper);
  padding: 2rem 1.8rem 1.6rem;
  border-top: 3px solid var(--ink);
  display: flex;
  flex-direction: column;
  gap: 1rem;
  position: relative;
  transition: transform var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease);
}
.musing:nth-child(2) { border-top-color: var(--accent); }
.musing:nth-child(3) { border-top-color: var(--tan); }
.musing:hover {
  transform: translateY(-4px);
  box-shadow: 0 24px 50px -30px rgba(42, 34, 24, 0.35);
}
.musing__meta {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  display: flex;
  justify-content: space-between;
}
.musing__body {
  font-size: var(--fs-lg);
  line-height: 1.55;
  color: var(--ink);
}
.musing__body::first-letter {
  font-style: italic;
  font-size: 1.4em;
  color: var(--accent);
  font-variation-settings: "opsz" 24;
}
.musing__sign {
  margin-top: auto;
  padding-top: 1rem;
  border-top: 1px dotted var(--rule-strong);
  font-style: italic;
  font-size: 1rem;
  color: var(--muted);
}
@media (max-width: 900px) { .musings { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .musings { grid-template-columns: 1fr; } }

/* ---- Videos — film strip ---- */
.videos {
  background: var(--ink);
  color: var(--cream);
}
.videos .section-mark { border-color: var(--cream); }
.videos .section-mark__num { color: var(--accent-soft); }
.videos .section-mark__meta { color: var(--tan); }
.videos .section-mark__title { color: var(--cream); }

.video-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.video-card {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  cursor: pointer;
  background: #1a140e;
}
.video-card img {
  width: 100%; height: 100%; object-fit: cover;
  filter: brightness(0.7);
  transition: transform var(--t-slow) var(--ease), filter var(--t-base) var(--ease);
}
.video-card iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-card.is-playing .video-card__play,
.video-card.is-playing .video-card__info { display: none; }
.video-card:hover img { transform: scale(1.04); filter: brightness(0.85); }
.video-card__play {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 64px; height: 64px;
  border-radius: 50%;
  border: 1.5px solid var(--cream);
  display: grid; place-items: center;
  background: rgba(42, 34, 24, 0.35);
  backdrop-filter: blur(6px);
  transition: background var(--t-base) var(--ease), border-color var(--t-base) var(--ease);
}
.video-card:hover .video-card__play { background: var(--accent); border-color: var(--accent); }
.video-card__play::before {
  content: "";
  border-style: solid;
  border-width: 8px 0 8px 12px;
  border-color: transparent transparent transparent var(--cream);
  margin-left: 3px;
}
.video-card__info {
  position: absolute;
  left: 1rem; right: 1rem; bottom: 1rem;
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--cream);
  display: flex; justify-content: space-between;
  text-shadow: 0 1px 2px rgba(0,0,0,0.5);
}
@media (max-width: 820px) { .video-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .video-grid { grid-template-columns: 1fr; } }

/* ---- Subscribe / Sign-up strip ---- */
.subscribe {
  background: var(--cream-deep);
  padding-block: 5rem;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.subscribe__inner {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 3rem;
  align-items: end;
}
.subscribe h2 {
  font-size: clamp(2rem, 4vw, 3rem);
  line-height: 1;
  letter-spacing: -0.015em;
  font-variation-settings: "opsz" 36;
}
.subscribe h2 em { font-style: italic; color: var(--accent); font-variation-settings: "opsz" 36; }
.subscribe p {
  margin-top: 1.2rem;
  font-size: var(--fs-lg);
  color: var(--ink-soft);
  max-width: 50ch;
}
.subscribe__form {
  display: flex;
  align-items: stretch;
  border-bottom: 1px solid var(--ink);
  position: relative;
}
.subscribe__form input {
  flex: 1;
  background: transparent;
  border: 0;
  padding: 1rem 0;
  font-family: var(--serif);
  font-style: italic;
  font-size: var(--fs-xl);
  color: var(--ink);
  outline: none;
  min-width: 0;
}
.subscribe__form input::placeholder { color: var(--tan); }
.subscribe__form button {
  font-family: var(--mono);
  font-size: var(--fs-cap);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 1rem 1.4rem 1rem 1.6rem;
  background: var(--ink);
  color: var(--cream);
  align-self: stretch;
  transition: background var(--t-base) var(--ease);
}
.subscribe__form button:hover { background: var(--accent); }
@media (max-width: 760px) {
  .subscribe__inner { grid-template-columns: 1fr; gap: 2rem; }
}

/* ---- Stagger animation for hero text on first paint ---- */
.hero__editorial > *,
.hero__stamp-text > *,
.hero__postcard-text > * {
  opacity: 0;
  transform: translateY(calc(12px * var(--motion)));
  animation: hero-rise calc(900ms * var(--motion) + 1ms) var(--ease) forwards;
}
.hero__editorial > *:nth-child(1) { animation-delay: 80ms; }
.hero__editorial > *:nth-child(2) { animation-delay: 200ms; }
.hero__editorial > *:nth-child(3) { animation-delay: 320ms; }
.hero__stamp-text > *:nth-child(1) { animation-delay: 80ms; }
.hero__stamp-text > *:nth-child(2) { animation-delay: 200ms; }
.hero__stamp-text > *:nth-child(3) { animation-delay: 320ms; }
@keyframes hero-rise {
  to { opacity: 1; transform: none; }
}

.stamp-card { opacity: 0; animation: hero-rise 1000ms var(--ease) forwards; }
.stamp-card--1 { animation-delay: 200ms; }
.stamp-card--2 { animation-delay: 350ms; }
.stamp-card--3 { animation-delay: 500ms; }

/* The opening keyframe should preserve initial rotation — override transform end-state */
.stamp-card--1 { animation-name: stamp-rise-1; }
.stamp-card--2 { animation-name: stamp-rise-2; }
.stamp-card--3 { animation-name: stamp-rise-3; }
@keyframes stamp-rise-1 { from { opacity: 0; transform: translateY(16px) rotate(-3deg); } to { opacity: 1; transform: rotate(-3deg); } }
@keyframes stamp-rise-2 { from { opacity: 0; transform: translateY(16px) rotate(4deg); }  to { opacity: 1; transform: rotate(4deg); } }
@keyframes stamp-rise-3 { from { opacity: 0; transform: translateY(16px) rotate(-1.5deg); } to { opacity: 1; transform: rotate(-1.5deg); } }
