/* =========================================================================
   Atra, Shared Itinerary
   Editorial "travel journal" layout. Tokens mirror packages/tokens.
   ========================================================================= */

:root {
  /* Sand, warm paper / card surfaces */
  --sand-0:  #fdf8f3;
  --sand-50: #faf3ea;
  --sand-100:#f5ebdf;
  --sand-200:#efe1d2;
  --sand-700:#826652;

  /* Moss, brand sage accent */
  --moss-100:#d2e6dd;
  --moss-400:#8db2a3;
  --moss-500:#779e8f;
  --moss-600:#62867a;
  --moss-700:#4d6b62;

  /* Ink + neutrals */
  --ink:      #1a1a1a;
  --ink-70:   rgba(26,26,26,.70);
  --ink-55:   rgba(26,26,26,.55);
  --ink-40:   rgba(26,26,26,.40);
  --border:   #e5e7eb;
  --hairline: rgba(26,26,26,.10);

  /* Immersive ground + media */
  --teal-black: #16272d;
  --media-black:#0b1517;
  --cream:      #fdf8f3;
  --cream-70:   rgba(253,248,243,.72);
  --cream-50:   rgba(253,248,243,.55);

  /* Type */
  --font-sans: "Satoshi","Inter","Inter Variable",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-serif:"Fraunces","Times New Roman",Times,serif;

  /* Shape + shadow (radii.ts / shadows.ts) */
  --r-sm:10px; --r-md:14px; --r-lg:16px; --r-xl:24px;
  --shadow-md: 0 2px 6px rgba(40,53,69,.10);
  --shadow-lg: 0 8px 26px rgba(40,53,69,.20);

  /* Layout */
  --maxw: 1360px;
  --topbar-h: 60px;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--font-sans);
  color: var(--ink);
  background: var(--teal-black);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

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

/* ---------- Decorative left ruler (cartographic tick marks) ------------- */
.ruler { position: absolute; left: clamp(20px, 3vw, 54px); top: 50%; transform: translateY(-50%);
  display: flex; flex-direction: column; gap: 7px; z-index: 3; pointer-events: none; }
.ruler i { height: 1px; background: rgba(253,248,243,.7); display: block; }
.ruler i:nth-child(5n+1) { width: 26px; }
.ruler i:not(:nth-child(5n+1)) { width: 14px; opacity: .8; }

/* ======================================================================
   Sticky compact header
   ====================================================================== */
.topbar {
  position: fixed; inset: 0 0 auto 0; height: var(--topbar-h); z-index: 50;
  display: flex; align-items: center; gap: 22px; padding: 0 clamp(18px,3vw,40px);
  background: rgba(17,30,35,.62);
  backdrop-filter: blur(14px) saturate(1.1); -webkit-backdrop-filter: blur(14px) saturate(1.1);
  border-bottom: 1px solid rgba(253,248,243,.10);
  color: var(--cream);
  opacity: 0; transform: translateY(-100%); transition: opacity .4s ease, transform .4s ease;
}
.topbar.is-visible { opacity: 1; transform: none; }
.topbar__brand { text-decoration: none; color: var(--cream); }
.wordmark { font-family: var(--font-sans); font-weight: 700; letter-spacing: .16em; font-size: 16px; white-space: nowrap; }
.topbar__trip { display: flex; flex-direction: column; line-height: 1.2; border-left: 1px solid rgba(253,248,243,.22); padding-left: 22px; }
.topbar__title { font-weight: 700; font-size: 14px; }
.topbar__date { font-size: 12px; color: var(--cream-70); }

/* ======================================================================
   Download button (fixed), triggers print-to-PDF
   ====================================================================== */
.download-btn {
  position: fixed; left: clamp(16px,2.5vw,30px); bottom: clamp(16px,2.5vw,30px); z-index: 60;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 11px 18px 11px 15px; border: 1px solid rgba(253,248,243,.16); border-radius: 999px;
  background: rgba(17,30,35,.82); color: var(--cream);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  font-family: var(--font-sans); font-weight: 600; font-size: 14px; cursor: pointer;
  box-shadow: var(--shadow-lg); transition: background .2s ease, transform .2s ease;
}
.download-btn:hover { background: var(--moss-700); transform: translateY(-1px); }
.download-btn svg { opacity: .95; }

/* ======================================================================
   Full-bleed hero
   ====================================================================== */
.hero { position: relative; height: 100vh; min-height: 620px; width: 100%; overflow: hidden; color: var(--cream); }
.hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero__scrim { position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(11,21,23,.28) 0%, rgba(11,21,23,.10) 32%, rgba(11,21,23,.14) 60%, rgba(11,21,23,.55) 100%); }
.hero__wordmark { position: absolute; top: clamp(22px,3vw,34px); left: clamp(22px,3.5vw,46px); z-index: 3;
  font-weight: 700; letter-spacing: .18em; font-size: clamp(18px,1.6vw,22px); }
.hero__body { position: absolute; left: clamp(70px,9vw,150px); top: 50%; transform: translateY(-50%); z-index: 3; max-width: 62%; }
.hero__title { font-family: var(--font-serif); font-weight: 500; font-optical-sizing: auto;
  font-size: clamp(2.6rem,6.2vw,5.4rem); line-height: 1.02; letter-spacing: -.02em; margin: 0 0 .4em; }
.hero__meta { display: flex; flex-direction: column; gap: 10px; }
.hero__date { font-weight: 700; font-size: clamp(1rem,1.5vw,1.35rem); letter-spacing: .01em; }
.hero__region { display: inline-flex; align-items: center; gap: 8px; font-weight: 500; font-size: clamp(.9rem,1.1vw,1.05rem); color: var(--cream-70); }
.hero__scroll { position: absolute; right: clamp(24px,4vw,64px); bottom: clamp(26px,4vh,52px); z-index: 3;
  display: flex; flex-direction: column; align-items: center; gap: 10px; font-weight: 600; font-size: 13px; letter-spacing: .04em; color: var(--cream-70); }
.hero__scroll .arrow { width: 1px; height: 34px; background: var(--cream-50); position: relative; animation: nudge 1.8s ease-in-out infinite; }
.hero__scroll .arrow::after { content: ""; position: absolute; left: -3px; bottom: 0; width: 7px; height: 7px; border-right: 1px solid var(--cream-50); border-bottom: 1px solid var(--cream-50); transform: rotate(45deg); }
@keyframes nudge { 0%,100% { transform: translateY(0); opacity: .8; } 50% { transform: translateY(6px); opacity: 1; } }

/* ======================================================================
   Overview, index table over a scenic backdrop
   ====================================================================== */
.overview { position: relative; min-height: 100vh; display: flex; align-items: center; justify-content: center;
  overflow: hidden; padding: 96px clamp(18px,5vw,60px); }
.overview__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.overview__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,21,23,.58), rgba(11,21,23,.40)); }
.overview__card { position: relative; z-index: 2; width: min(680px, 100%); background: var(--sand-0);
  border-radius: var(--r-xl); box-shadow: var(--shadow-lg); padding: clamp(22px,3vw,40px);
  border: 1px solid rgba(253,248,243,.5); }
.overview__eyebrow { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--moss-600); font-weight: 700; margin: 0 0 6px; }
.overview__label { font-family: var(--font-serif); font-weight: 500; font-size: clamp(1.9rem,3.4vw,2.7rem);
  color: var(--ink); margin: 0 0 20px; letter-spacing: -.01em; }
.otable { width: 100%; border-collapse: collapse; font-size: 15px; }
.otable th, .otable td { text-align: left; padding: 12px 14px; }
.otable thead th { font-size: 11px; letter-spacing: .07em; text-transform: uppercase; color: var(--moss-700); font-weight: 700; border-bottom: 1px solid var(--hairline); }
.otable tbody tr:nth-child(odd) { background: var(--sand-50); }
.otable td:first-child { font-weight: 600; color: var(--ink); white-space: nowrap; width: 38%; }
.otable td:last-child { color: var(--ink-70); }

/* ======================================================================
   Day, sticky two-column "scrollytelling" spread
   ====================================================================== */
.day { position: relative; display: grid; grid-template-columns: 44% 56%; background: var(--teal-black); }
.day__cover { position: relative; }
.day__cover-inner { position: sticky; top: 0; height: 100vh; overflow: hidden; display: flex; align-items: center; }
.day__cover-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.day__cover-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,21,23,.42) 0%, rgba(11,21,23,.20) 45%, rgba(11,21,23,.52) 100%); }
.day__heading { position: relative; z-index: 3; width: 100%; }
.day__title { position: relative; z-index: 3; font-family: var(--font-serif); font-weight: 500; color: var(--cream);
  font-size: clamp(1.9rem,3.1vw,3.1rem); line-height: 1.05; letter-spacing: -.015em;
  margin: 0; padding-left: clamp(70px,7vw,120px); padding-right: 8%; max-width: 92%; }
/* Per-day calendar subtitle ("Monday, Jun 1"), under the Day N anchor */
.day__date { margin: 12px 0 0; padding-left: clamp(70px,7vw,120px); padding-right: 8%;
  font-weight: 700; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--cream-70); }

.day__content { padding: clamp(64px,10vh,120px) clamp(24px,4vw,64px) clamp(64px,10vh,120px); display: flex; flex-direction: column; gap: 20px; }

/* Period block card (Morning / Afternoon / Evening) */
.block { background: var(--sand-0); border-radius: var(--r-lg); box-shadow: var(--shadow-md);
  padding: clamp(22px,2.4vw,32px); }
.block + .block { margin-top: 4px; }
.block__head { display: flex; align-items: baseline; gap: 10px; margin: 0 0 18px; font-size: clamp(1.05rem,1.4vw,1.3rem); font-weight: 700; color: var(--ink); }
.block__icon { align-self: center; display: inline-flex; color: var(--moss-700); }
.block__period { color: var(--moss-700); }

/* Items */
.item { padding: 14px 0; border-top: 1px solid var(--hairline); }
.item:first-of-type { border-top: 0; padding-top: 0; }
.item__line { font-size: 15.5px; line-height: 1.5; color: var(--ink); }
.item__time { font-weight: 700; color: var(--ink); margin-right: 6px; }
.item__bullets { margin: 8px 0 0; padding-left: 20px; color: var(--ink-70); font-size: 14.5px; line-height: 1.6; }
.item__bullets li { margin: 3px 0; }
.item__subhead { font-weight: 700; font-size: 14px; color: var(--ink); margin: 2px 0 4px; }
.item__narrative { font-size: 15px; line-height: 1.62; color: var(--ink-70); margin: 2px 0 0; }

/* Inline 4-up gallery strip */
.gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 14px; }
.gallery img { aspect-ratio: 4/5; width: 100%; object-fit: cover; border-radius: var(--r-md); background: var(--sand-100); }
.gallery.is-3 { grid-template-columns: repeat(3, 1fr); }

/* Venue card, hero carousel + address + website */
.venue { margin-top: 14px; }
.venue__name { font-family: var(--font-serif); font-weight: 500; font-size: clamp(1.35rem,1.8vw,1.7rem); color: var(--ink); margin: 0 0 12px; }
.carousel { position: relative; border-radius: var(--r-lg); overflow: hidden; background: var(--sand-100); }
.carousel__track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; aspect-ratio: 16/10; }
.carousel__track::-webkit-scrollbar { display: none; }
.carousel__track img { flex: 0 0 100%; width: 100%; height: 100%; object-fit: cover; scroll-snap-align: center; }
.carousel__dots { position: absolute; left: 0; right: 0; bottom: 8px; display: flex; justify-content: center; gap: 4px; }
.carousel__dot { appearance: none; border: 0; margin: 0; padding: 4px; background: none; cursor: pointer; display: flex; }
.carousel__dot::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: rgba(253,248,243,.55); box-shadow: 0 0 3px rgba(0,0,0,.4); transition: background .2s, transform .2s; }
.carousel__dot.is-active::before { background: var(--cream); transform: scale(1.25); }
.carousel__dot:focus-visible { outline: 2px solid var(--cream); outline-offset: 1px; border-radius: 50%; }
.carousel__arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 32px; height: 32px; border: 0; border-radius: 50%; cursor: pointer;
  display: flex; align-items: center; justify-content: center; color: var(--cream); background: rgba(11,21,23,.38); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  opacity: 0; transition: opacity .2s, background .2s; }
.carousel__arrow--prev { left: 10px; }
.carousel__arrow--next { right: 10px; }
.carousel:hover .carousel__arrow, .carousel:focus-within .carousel__arrow { opacity: 1; }
.carousel__arrow:hover { background: rgba(11,21,23,.6); }
.carousel__arrow:focus-visible { opacity: 1; outline: 2px solid var(--cream); outline-offset: 1px; }
.carousel__track:focus-visible { outline: 2px solid var(--moss-500); outline-offset: -2px; }
.venue__meta { margin-top: 16px; display: flex; flex-direction: column; gap: 12px; }
.venue__row { display: flex; gap: 10px; font-size: 14.5px; }
.venue__row .ico { flex: 0 0 auto; margin-top: 1px; }
.venue__row .label { font-weight: 700; color: var(--ink); display: block; margin-bottom: 1px; }
.venue__row a, .venue__row .val { color: var(--ink-70); text-decoration: none; }
.venue__row a { color: var(--moss-700); text-decoration: underline; text-underline-offset: 2px; word-break: break-word; }
.venue__maps { margin-left: 8px; font-weight: 700; font-size: 13.5px; white-space: nowrap; }
.item__maps { margin-left: 6px; font-weight: 700; font-size: 12.5px; white-space: nowrap; opacity: 0.85; }
.venue__desc { font-size: 14.5px; line-height: 1.6; color: var(--ink-70); margin: 4px 0 0; }

/* ======================================================================
   Finale
   ====================================================================== */
.finale { position: relative; min-height: 100vh; display: flex; align-items: center; overflow: hidden; color: var(--cream); }
.finale__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.finale__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,21,23,.25), rgba(11,21,23,.35)); }
.finale__title { position: absolute; left: clamp(70px,9vw,150px); top: 50%; transform: translateY(-50%); z-index: 2;
  font-family: var(--font-serif); font-weight: 500; font-size: clamp(2rem,4vw,3.4rem); }
.finale__card { position: relative; z-index: 3; margin-left: auto; margin-right: clamp(24px,6vw,110px);
  width: min(520px,80vw); background: var(--sand-0); color: var(--ink); border-radius: var(--r-xl); box-shadow: var(--shadow-lg); padding: 28px 30px; }
.finale__card h3 { font-family: var(--font-serif); font-weight: 500; font-size: 1.4rem; margin: 0 0 12px; }
.finale__card ul { margin: 0; padding-left: 20px; color: var(--ink-70); line-height: 1.7; }

/* ======================================================================
   Responsive, stack columns on narrow screens
   ====================================================================== */
@media (max-width: 900px) {
  .day { grid-template-columns: 1fr; }
  .day__cover-inner { position: relative; height: 56vh; min-height: 320px; }
  .day__title { padding-left: clamp(28px,8vw,70px); padding-right: 12%; font-size: clamp(1.9rem,7vw,2.5rem); }
  .day__date { padding-left: clamp(28px,8vw,70px); padding-right: 12%; }
  .hero__body { max-width: 90%; left: clamp(28px,7vw,70px); }
  .overview { min-height: auto; }
  .finale__title { position: static; transform: none; display: block; padding: 0 24px 20px clamp(28px,8vw,70px); }
  .finale { flex-direction: column; justify-content: center; padding: 90px 0; }
  .finale__card { margin: 0 auto; }
  .gallery { grid-template-columns: repeat(2, 1fr); }
  .day__intro { font-size: 1.05rem; }
}

@media (max-width: 560px) {
  .topbar__trip { display: none; }
  .hero__body { max-width: 92%; }
  .hero__title { font-size: clamp(2.4rem,11vw,3.2rem); }
  .overview { padding: 80px 16px; }
  .otable { font-size: 13.5px; }
  .otable th, .otable td { padding: 10px 10px; }
  .otable td:first-child { width: 42%; }
  .day__content { padding: 40px 18px 56px; }
  .block { padding: 20px 18px; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero__scroll .arrow { animation: none; }
}

/* Loading overlay */
.loading { position: fixed; inset: 0; z-index: 80; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px;
  background: var(--teal-black); color: var(--cream-70); font-size: 14px; transition: opacity .4s ease; }
.loading.is-hidden { opacity: 0; pointer-events: none; }
.loading__spinner { width: 34px; height: 34px; border-radius: 50%; border: 2px solid rgba(253,248,243,.2); border-top-color: var(--moss-400); animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ======================================================================
   Atra brand elements
   ====================================================================== */
/* Subtle unifying warmth over mixed real-world photography */
.hero__img, .day__cover-img, .overview__img, .finale__img,
.gallery img, .carousel__track img { filter: saturate(1.03) contrast(.99); }
/* Broken real posters fall back to an on-brand moss→sand gradient */
.img--fallback { filter: none; object-fit: cover; }

/* Seal + wordmark */
.seal { width: 26px; height: 26px; border-radius: 50%; object-fit: cover; box-shadow: 0 1px 4px rgba(11,21,23,.35); }
.hero__wordmark { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; color: var(--cream); }
.hero__wordmark span { font-weight: 700; letter-spacing: .18em; }

/* Hero eyebrow, the brand question */
.hero__eyebrow { font-size: clamp(12px,1.1vw,13px); letter-spacing: .2em; text-transform: uppercase;
  color: var(--moss-400); font-weight: 700; margin: 0 0 14px; }

/* Day narrative, Atra's editorial voice, as an italic serif lead */
.day__intro { font-family: var(--font-serif); font-style: italic; font-weight: 400;
  font-size: clamp(1.1rem,1.5vw,1.4rem); line-height: 1.5; color: var(--cream);
  margin: 0 0 4px; padding-left: 16px; border-left: 2px solid var(--moss-500); max-width: 40em; }

/* Category chip */
.chip { display: inline-block; margin-left: 10px; padding: 2px 9px; border-radius: 999px;
  background: var(--moss-100); color: var(--moss-700); font-size: 11px; font-weight: 700;
  letter-spacing: .02em; text-transform: capitalize; vertical-align: middle; white-space: nowrap; }

/* Reserved marker, same family as the category chip but outlined + quieter */
.chip--reserved { background: transparent; border: 1px solid var(--moss-400); color: var(--moss-700);
  letter-spacing: .04em; }
.item__time + .chip--reserved { margin-left: 0; margin-right: 10px; }
.venue__name .chip { font-family: var(--font-sans); }

/* Finale date subtitle */
.finale__date { display: block; margin-top: 10px; font-family: var(--font-sans); font-weight: 700;
  font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--cream-70); }

/* Transit (flight) line, de-emphasised */
.item__line--transit { color: var(--ink-55); font-size: 14.5px; }
.item__line--transit .item__time { color: var(--ink-55); }

/* Single-image gallery reads as one hero photo */
.gallery.is-1 { grid-template-columns: 1fr; }
.gallery.is-1 img { aspect-ratio: 16/10; }

/* Atra outro / CTA */
.outro { background: var(--media-black); color: var(--cream); padding: clamp(80px,12vh,140px) 24px; text-align: center; }
.outro__inner { max-width: 620px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 2px; }
.outro .seal { width: 42px; height: 42px; margin-bottom: 14px; }
.outro__eyebrow { font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--moss-400); font-weight: 700; margin: 0; }
.outro__title { font-family: var(--font-serif); font-weight: 500; font-size: clamp(2.2rem,5vw,3.2rem); margin: 6px 0 14px; letter-spacing: -.02em; }
.outro__sub { font-size: clamp(1rem,1.3vw,1.1rem); line-height: 1.6; color: var(--cream-70); margin: 0 0 10px; }
.outro__manifesto { font-family: var(--font-serif); font-style: italic; color: var(--cream); opacity: .85; margin: 0 0 26px; }
.outro__cta { display: inline-block; padding: 13px 28px; border-radius: 999px; background: var(--moss-500);
  color: #0b1517; font-weight: 700; text-decoration: none; transition: background .2s, transform .2s; }
.outro__cta:hover { background: var(--moss-400); transform: translateY(-1px); }

/* ======================================================================
   Print, linearized "PDF" document (the Download output)
   ====================================================================== */
@media print {
  @page { size: A4 portrait; margin: 13mm 12mm; }
  html { scroll-behavior: auto; }
  body { background: #fff; color: #1a1a1a; overflow: visible; font-size: 10.5pt; }
  .topbar, .download-btn, .hero__scroll, .ruler, .loading { display: none !important; }

  /* Cover */
  .hero { height: 230px; min-height: 0; page-break-after: always; color: var(--cream); }
  .hero__img { position: absolute; }
  .hero__eyebrow { display: none; }
  .hero__body { position: absolute; top: auto; bottom: 16px; transform: none; }
  .hero__title { font-size: 30pt; }

  /* Overview */
  .overview { min-height: 0; display: block; page-break-after: always; padding: 0; }
  .overview__img, .overview__scrim { display: none; }
  .overview__card { width: 100%; margin: 0; box-shadow: none; background: #fff; border: 0; padding: 0; }
  .overview__eyebrow { color: var(--moss-700); }
  .overview__label { color: #000; font-size: 20pt; margin-bottom: 10px; }
  .otable { font-size: 10pt; }
  .otable th, .otable td { padding: 6px 8px; }

  /* Days, single column, tighter */
  .day { display: block; page-break-before: always; background: #fff; }
  .day__cover { height: 150px; }
  .day__cover-inner { position: relative; height: 150px; }
  .day__title { color: var(--cream); font-size: 19pt; padding-left: 18px; padding-right: 6%; }
  .day__date { color: var(--cream); padding-left: 18px; padding-right: 6%; margin-top: 5px; font-size: 8.5pt; }
  .day__content { display: block; padding: 12px 0 0; gap: 8px; }
  .day__intro { color: #1a1a1a; font-size: 11.5pt; padding-left: 12px; margin-bottom: 8px; }
  .block { box-shadow: none; border: 1px solid var(--hairline); border-radius: 8px; padding: 12px 14px; margin-bottom: 9px; background: #fff; page-break-inside: avoid; }
  .block__head { font-size: 11.5pt; margin-bottom: 8px; }
  .item { padding: 7px 0; }
  .item__line { font-size: 10.5pt; }
  .item__narrative { font-size: 9.5pt; margin-top: 2px; }
  .item__bullets { font-size: 9.5pt; }
  .chip { border: 1px solid var(--moss-100); padding: 1px 7px; }
  .chip--reserved { background: transparent; border-color: var(--moss-400); }

  /* Venue details: the address, hours, and website ARE the printed payload.
     The maps anchor is web-only chrome; the website link prints as its
     hostname text (links are dead on paper anyway). */
  .venue__maps { display: none; }
  .item__maps { display: none; }
  .venue__meta { margin-top: 8px; gap: 6px; }
  .venue__row { font-size: 9.5pt; }
  .venue__row a { text-decoration: none; }
  .venue__desc { font-size: 9.5pt; }

  /* Images, small + side-by-side, never full-bleed */
  .gallery { grid-template-columns: repeat(4, 1fr); gap: 6px; margin-top: 8px; }
  .gallery img { height: 82px; aspect-ratio: auto; object-fit: cover; }
  .gallery.is-1 { grid-template-columns: 1fr; max-width: 240px; }
  .gallery.is-1 img { height: 145px; }
  .gallery.is-3 { grid-template-columns: repeat(3, 1fr); }
  .item--pictured { page-break-inside: avoid; }

  /* Venue carousel → a small side-by-side strip */
  .venue__name { font-size: 14pt; }
  .carousel { break-inside: avoid; }
  .carousel__track { overflow: visible; aspect-ratio: auto; display: flex; gap: 6px; }
  .carousel__track img { height: 118px; width: auto; flex: 0 0 auto; border-radius: 6px; }
  .carousel__dots, .carousel__arrow { display: none; }

  /* Finale / outro */
  .finale { min-height: 0; page-break-before: always; }
  .finale__img, .finale__scrim, .finale__title { display: none; }
  .finale__card { width: 100%; margin: 0; box-shadow: none; }
  .outro { background: #fff; color: #1a1a1a; page-break-before: always; padding: 18px 0; text-align: left; }
  .outro .seal, .outro__cta { display: none; }
  .outro__eyebrow, .outro__manifesto { color: var(--moss-700); }
  .outro__title, .outro__sub { color: #1a1a1a; }
}

/* Dead or revoked share link: quiet full-page state instead of the demo trip */
.share-error { min-height: 100svh; display: flex; align-items: center; justify-content: center; padding: 24px; background: var(--teal-black); }
.share-error__card { max-width: 460px; text-align: center; background: var(--sand-0); border-radius: var(--r-lg); box-shadow: var(--shadow-md); padding: clamp(32px,6vw,52px) clamp(24px,5vw,44px); }
.share-error__card .seal { width: 44px; height: 44px; object-fit: contain; margin: 0 auto 10px; display: block; }
.share-error__eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--moss-700); margin: 0 0 10px; }
.share-error__title { font-family: var(--font-serif); font-weight: 500; font-size: clamp(1.4rem,3vw,1.8rem); color: var(--ink); margin: 0 0 10px; }
.share-error__sub { font-size: 15px; line-height: 1.6; color: var(--ink-70); margin: 0; }
.share-error__retry { display: inline-block; margin-top: 18px; font-weight: 700; font-size: 14.5px; color: var(--moss-700); text-decoration: underline; text-underline-offset: 3px; }
.share-error__retry:hover { color: var(--moss-600); }
