/* ============================================================================
   FAM JOURNAL - editorial stylesheet
   ----------------------------------------------------------------------------
   Additive only. Loaded AFTER style.css on Journal pages only, so no existing
   page is affected. Built on the site's own seasonal-mode custom properties
   (--mode-primary, --mode-accent, --mode-surface, --mode-bg) so the green /
   winter seasonal toggle keeps working on Journal pages too.

   Intent: quiet, photography-led, luxury editorial. Hairline rules, generous
   whitespace, Playfair display + Inter body. No card shadows, no card
   gradients, no glassmorphism.

   NOTE: .reveal is deliberately NOT redefined here - style.css already owns
   it, including its own prefers-reduced-motion fallback.
   ========================================================================== */

body {
  --jrnl-measure: 760px;                /* article reading column */
  --jrnl-hairline: rgba(10, 52, 29, 0.15);
  --jrnl-hairline-soft: rgba(10, 52, 29, 0.08);
  --jrnl-muted: #4a524b;
  --jrnl-accent: #a8894b;
  --jrnl-ink: #1a1c1a;
  --jrnl-panel: rgba(10, 52, 29, 0.035);
}

html.mode-winter body {
  --jrnl-hairline: rgba(30, 58, 138, 0.2);
  --jrnl-hairline-soft: rgba(30, 58, 138, 0.12);
  --jrnl-muted: #414f68;
  --jrnl-accent: #7d6a3f;
  --jrnl-ink: #16203a;
  --jrnl-panel: rgba(30, 58, 138, 0.05);
}

/* ---------- shared editorial primitives ---------- */

.journal-serif {
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: -0.01em;
}

.journal-category {
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--jrnl-accent);
}

.journal-dot { color: var(--jrnl-hairline); }

/* visible focus for every interactive element in the Journal */
.journal-filter:focus-visible,
.journal-card-title a:focus-visible,
.journal-back:focus-visible,
.journal-breadcrumb a:focus-visible,
.journal-cta a:focus-visible {
  outline: 2px solid var(--mode-primary);
  outline-offset: 4px;
  border-radius: 2px;
}

html.mode-winter .journal-filter:focus-visible,
html.mode-winter .journal-card-title a:focus-visible,
html.mode-winter .journal-back:focus-visible,
html.mode-winter .journal-breadcrumb a:focus-visible,
html.mode-winter .journal-cta a:focus-visible { outline-color: #1e3a8a; }

/* ---------- landing hero ---------- */

/* The landing hero is full-bleed: it starts at the very top of the page and
   runs behind the floating pill nav, exactly like the home hero. The nav is
   position:fixed, so it needs no reserved space above the hero - reserving it
   (main.pt-24) is what used to leave a bare strip of page background behind
   the bar. Article pages still use pt-24, because their content is in normal
   flow and genuinely needs to clear the bar. */
.journal-landing-main {
  padding-top: 0;
}

.journal-hero {
  position: relative;
  display: grid;
  place-items: center;
  overflow: hidden;
  min-height: clamp(460px, 100vh, 1000px);
}

/* svh keeps the hero exactly one screen tall on mobile, where 100vh includes
   the area behind the collapsing browser chrome. */
@supports (min-height: 100svh) {
  .journal-hero {
    min-height: clamp(460px, 100svh, 1000px);
  }
}

.journal-hero > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.journal-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(8, 14, 10, 0.52) 0%,
    rgba(8, 14, 10, 0.42) 45%,
    rgba(8, 14, 10, 0.66) 100%
  );
}

.journal-hero-content {
  position: relative;
  z-index: 1;
  text-align: center;
  padding: clamp(48px, 7vw, 96px) clamp(20px, 4.44vw, 64px);
  max-width: 940px;
}

.journal-hero-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 600;
  font-size: clamp(2.4rem, 7vw, 5rem);
  line-height: 1.04;
  letter-spacing: -0.015em;
  color: #fff;
  margin: 14px 0 0;
}

.journal-hero-dek {
  font-family: 'Inter', sans-serif;
  font-size: clamp(1rem, 1.35vw, 1.19rem);
  line-height: 1.62;
  color: rgba(255, 255, 255, 0.85);
  margin: 22px auto 0;
  max-width: 46ch;
}

/* ---------- category filter ---------- */

.journal-filterbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 20px;
  padding-top: clamp(20px, 2.6vw, 30px);
  padding-bottom: clamp(16px, 2.2vw, 24px);
  border-bottom: 1px solid var(--jrnl-hairline);
}

.journal-filters {
  display: flex;
  gap: clamp(20px, 2.4vw, 32px);
  overflow-x: auto;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x proximity;
  padding-bottom: 2px;
}

.journal-filters::-webkit-scrollbar { height: 3px; }
.journal-filters::-webkit-scrollbar-thumb {
  background: var(--jrnl-hairline);
  border-radius: 2px;
}

.journal-filter {
  flex: 0 0 auto;
  scroll-snap-align: start;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 8px 0 10px;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--jrnl-muted);
  white-space: nowrap;
  position: relative;
  transition: color 220ms ease;
}

.journal-filter::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 2px;
  background: var(--mode-primary);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 260ms cubic-bezier(0.25, 1, 0.5, 1);
}

.journal-filter:hover { color: var(--mode-primary); }
.journal-filter.is-active { color: var(--mode-primary); }
.journal-filter.is-active::after { transform: scaleX(1); }

html.mode-winter .journal-filter:hover,
html.mode-winter .journal-filter.is-active { color: #1e3a8a; }
html.mode-winter .journal-filter::after { background: #1e3a8a; }

.journal-count {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--jrnl-muted);
  flex: 0 0 auto;
}

/* ---------- section furniture ---------- */

.journal-section { padding-bottom: clamp(30px, 4vw, 54px); }

.journal-section-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 600;
  font-size: clamp(1.5rem, 3.1vw, 2.15rem);
  line-height: 1.14;
  color: var(--mode-primary);
  margin: 0 0 clamp(20px, 2.6vw, 32px);
  padding-bottom: 16px;
  border-bottom: 1px solid var(--jrnl-hairline);
}

html.mode-winter .journal-section-title { color: #1e3a8a; }

/* ---------- cards ---------- */

.journal-card {
  position: relative;
  display: flex;
  flex-direction: column;
  /* [hidden] must beat display:flex for the category filter to work */
}

.journal-card[hidden] { display: none !important; }

.journal-card-media {
  margin: 0;
  overflow: hidden;
  background: #0a0d0a;
  aspect-ratio: 4 / 3;
}

.journal-card-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 900ms cubic-bezier(0.25, 1, 0.5, 1);
}

.journal-card:hover .journal-card-media img { transform: scale(1.045); }

.journal-card-body { padding-top: 18px; }

.journal-card-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--jrnl-muted);
}

.journal-card-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 600;
  font-size: clamp(1.16rem, 1.9vw, 1.4rem);
  line-height: 1.26;
  color: var(--mode-primary);
  margin: 10px 0 0;
}

html.mode-winter .journal-card-title { color: #1e3a8a; }

.journal-card-title a {
  color: inherit;
  text-decoration: none;
}

/* stretched link: the whole card is clickable, but only the headline
   is ever announced, so screen readers are not given a duplicate link */
.journal-card-title a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}

.journal-card-title a:hover { text-decoration: underline; text-underline-offset: 4px; }

.journal-card-excerpt {
  font-family: 'Inter', sans-serif;
  font-size: 14.5px;
  line-height: 1.62;
  color: var(--jrnl-muted);
  margin: 10px 0 0;
}

.journal-card-more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 16px;
  padding-bottom: 3px;
  border-bottom: 1px solid var(--jrnl-hairline);
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--mode-primary);
  transition: border-color 220ms ease;
}

.journal-card:hover .journal-card-more { border-bottom-color: var(--mode-primary); }
html.mode-winter .journal-card-more { color: #1e3a8a; }

/* ---------- featured story ---------- */

.journal-featured { display: block; }

.journal-card-featured .journal-card-media { aspect-ratio: 16 / 10; }

.journal-card-featured .journal-card-title {
  font-size: clamp(1.85rem, 4.4vw, 3.15rem);
  line-height: 1.1;
}

.journal-card-featured .journal-card-excerpt {
  font-size: clamp(1rem, 1.25vw, 1.1rem);
  line-height: 1.66;
  max-width: 48ch;
}

@media (min-width: 900px) {
  .journal-card-featured {
    display: grid;
    grid-template-columns: 1.15fr 1fr;
    gap: clamp(24px, 3.2vw, 48px);
    align-items: center;
  }
  .journal-card-featured .journal-card-body { padding-top: 0; }
}

/* ---------- article grid ---------- */

.journal-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(30px, 3.4vw, 52px) clamp(22px, 2.6vw, 40px);
}

@media (min-width: 640px) { .journal-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .journal-grid { grid-template-columns: repeat(3, 1fr); } }

.journal-grid-related { padding-bottom: 0; }

/* empty state shown by the filter when a category has no stories */
.journal-empty {
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  color: var(--jrnl-muted);
  padding: 34px 0;
  border-top: 1px solid var(--jrnl-hairline);
}

.journal-empty[hidden] { display: none !important; }

/* the Featured block hides as a unit when its card is filtered out */
#journal-featured-section[hidden] { display: none !important; }

/* ---------- article page ---------- */

.journal-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  max-width: var(--jrnl-measure);
  margin: 0 auto;
  padding-top: clamp(22px, 2.8vw, 36px);
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--jrnl-muted);
}

.journal-breadcrumb a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid transparent;
}

.journal-breadcrumb a:hover { border-bottom-color: currentColor; }

.journal-article-head {
  max-width: var(--jrnl-measure);
  margin: 0 auto;
  padding-top: clamp(18px, 2.4vw, 30px);
}

.journal-article-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 600;
  font-size: clamp(2.1rem, 5.6vw, 3.9rem);
  line-height: 1.06;
  letter-spacing: -0.015em;
  color: var(--mode-primary);
  margin: 14px 0 0;
}

html.mode-winter .journal-article-title { color: #1e3a8a; }

.journal-article-dek {
  font-family: 'Playfair Display', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.08rem, 1.9vw, 1.4rem);
  line-height: 1.5;
  color: var(--jrnl-muted);
  margin: 20px 0 0;
}

.journal-article-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--jrnl-hairline-soft);
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--jrnl-muted);
}

.journal-hero-figure {
  margin: clamp(26px, 3.4vw, 44px) auto 0;
  max-width: 1160px;
}

.journal-hero-figure img {
  display: block;
  width: 100%;
  height: clamp(280px, 52vw, 640px);
  object-fit: cover;
}

.journal-hero-figure figcaption,
.journal-figure figcaption {
  font-family: 'Inter', sans-serif;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--jrnl-muted);
  margin-top: 11px;
  letter-spacing: 0.01em;
}

/* reading column */
.journal-prose {
  max-width: var(--jrnl-measure);
  margin: 0 auto;
  padding-top: clamp(26px, 3.4vw, 44px);
}

.journal-prose p {
  font-family: 'Inter', sans-serif;
  font-size: clamp(1.02rem, 1.15vw, 1.115rem);
  line-height: 1.78;
  color: #2b302c;
  margin: 0 0 1.45em;
}

html.mode-winter .journal-prose p { color: #26314a; }

.journal-prose h2 {
  font-family: 'Playfair Display', Georgia, serif;
  font-weight: 600;
  font-size: clamp(1.42rem, 2.5vw, 1.85rem);
  line-height: 1.22;
  color: var(--mode-primary);
  margin: 2.1em 0 0.7em;
  padding-top: 1.05em;
  border-top: 1px solid var(--jrnl-hairline-soft);
}

html.mode-winter .journal-prose h2 { color: #1e3a8a; }

.journal-prose blockquote {
  margin: 2.3em 0;
  padding-left: clamp(16px, 3vw, 30px);
  border-left: 2px solid var(--jrnl-accent);
}

.journal-prose blockquote p {
  font-family: 'Playfair Display', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.28rem, 2.5vw, 1.72rem);
  line-height: 1.42;
  color: var(--mode-primary);
  margin: 0;
}

html.mode-winter .journal-prose blockquote p { color: #1e3a8a; }

.journal-figure {
  margin: 2.3em 0;
}

.journal-figure img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 560px;
  object-fit: cover;
}

.journal-article-foot {
  max-width: var(--jrnl-measure);
  margin: clamp(34px, 4vw, 54px) auto 0;
  padding-top: clamp(20px, 2.4vw, 30px);
  border-top: 1px solid var(--jrnl-hairline);
}

.journal-back {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--mode-primary);
  text-decoration: none;
  border-bottom: 1px solid var(--jrnl-hairline);
  padding-bottom: 4px;
  transition: border-color 220ms ease;
}

.journal-back:hover { border-bottom-color: var(--mode-primary); }
html.mode-winter .journal-back { color: #1e3a8a; }

/* ---------- booking CTA ---------- */
/* Light surface on purpose: this reuses the site's own .btn-primary and
   text-primary utilities, which are designed for a light background. */

.journal-cta {
  margin-top: clamp(52px, 6.5vw, 96px);
  border-top: 1px solid var(--jrnl-hairline);
  border-bottom: 1px solid var(--jrnl-hairline);
  background: var(--jrnl-panel);
}

.journal-cta-inner {
  max-width: 1400px;
  margin: 0 auto;
  padding: clamp(48px, 6.5vw, 88px) clamp(20px, 4.44vw, 64px);
  text-align: center;
}

/* ---------- reduced motion: Journal's own motion only ---------- */

@media (prefers-reduced-motion: reduce) {
  .journal-card-media img {
    transition: none !important;
  }
  .journal-card:hover .journal-card-media img { transform: none !important; }
  .journal-filter,
  .journal-filter::after,
  .journal-card-more,
  .journal-back { transition: none !important; }
}