:root {
  --forest: #173b2c;
  --forest-dark: #0b2017;
  --forest-soft: #2d5e45;
  --parchment: #f4e7c5;
  --parchment-deep: #dfc98f;
  --gold: #c89b49;
  --gold-bright: #e5c673;
  --oak: #4d301e;
  --ink: #1d2018;
  --cream: #fff8e7;
  --purple: #321744;
  --purple-soft: #4b2661;
  --muted-green: #b8c9a9;
  --muted-green-deep: #91a982;
  --danger: #a53d30;
  --shadow: 0 18px 45px rgba(8, 24, 17, .2);
  --heading-font: 'Pirata One', Georgia, 'Times New Roman', serif;
  --body-font: 'IM Fell English', Georgia, 'Times New Roman', serif;
  --header-height: 110px;
  --section-banner-height: 220px;
  --section-banner-half: 110px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: clip; }
body {
  margin: 0;
  min-width: 320px;
  overflow-x: clip;
  color: var(--ink);
  background: #edf0e7;
  font-family: var(--body-font);
  font-size: 17px;
  line-height: 1.62;
  letter-spacing: .004em;
}
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .25;
  background-image:
    radial-gradient(circle at 18% 10%, rgba(255,255,255,.7), transparent 30%),
    repeating-linear-gradient(90deg, rgba(55,43,25,.024) 0 1px, transparent 1px 7px);
}
[hidden] { display: none !important; }
a { color: inherit; }
img { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
:focus-visible { outline: 3px solid #f2d680; outline-offset: 3px; }
.container { width: min(1240px, calc(100% - 44px)); margin-inline: auto; }
/* Header and hanging sign */
.site-header {
  position: sticky;
  top: 0;
  z-index: 90;
  height: var(--header-height);
  color: var(--cream);
  background: linear-gradient(rgba(7,13,9,.28), rgba(7,13,9,.28)), url('/assets/brand/hero-fair-scene.webp') center top / cover no-repeat;
}
.header-shell { position: relative; width: 100%; height: 100%; margin-inline: auto; }
.menu-bar {
  position: relative;
  z-index: 4;
  display: grid;
  grid-template-columns: minmax(310px, 1fr) auto;
  align-items: center;
  gap: 18px;
  width: 100%;
  min-height: var(--header-height);
  padding: 10px clamp(28px, 3.8vw, 78px) 12px;
  background: url('/assets/brand/menu-bar-frame.webp') center / 100% 100% no-repeat;
  filter: drop-shadow(0 8px 12px rgba(0,0,0,.38));
}
.header-left-cluster {
  position: relative;
  display: flex;
  align-items: center;
  min-width: 0;
  min-height: 82px;
  padding-left: 132px;
}
.header-crest {
  position: absolute;
  top: -9px;
  left: 0;
  z-index: 5;
  width: 126px;
  height: 126px;
  filter: drop-shadow(0 9px 8px rgba(0,0,0,.48));
}
.header-crest img { width: 100%; height: 100%; object-fit: contain; }
.header-wordmark {
  display: grid;
  min-width: 0;
  color: #f6ead3;
  line-height: .92;
  text-decoration: none;
  text-shadow: 0 3px 4px #000, 0 0 14px rgba(0,0,0,.5);
}
.header-wordmark-main {
  white-space: nowrap;
  font-family: var(--heading-font);
  font-size: clamp(2rem, 3vw, 3.25rem);
  letter-spacing: .025em;
}
.header-wordmark-sub {
  margin-top: 5px;
  color: #ead8b7;
  font-family: var(--heading-font);
  font-size: clamp(1rem, 1.08vw, 1.22rem);
  font-weight: 400;
  letter-spacing: .08em;
  text-transform: none;
}
.header-right-cluster {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: clamp(12px, 1.45vw, 24px);
  min-width: 0;
}
.header-socials .socials,
.socials { display: flex; align-items: center; gap: 9px; }
.social-link {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  flex: 0 0 auto;
  padding: 6px;
  overflow: hidden;
  border: 2px solid #858991;
  border-radius: 50%;
  background: linear-gradient(145deg, #a6a9af, #363940 70%);
  box-shadow: inset 0 0 0 2px rgba(16,17,19,.75), 0 4px 8px rgba(0,0,0,.36);
}
.social-link img {
  width: 100%;
  height: 100%;
  padding: 3px;
  border-radius: 50%;
  object-fit: contain;
  background: #fff;
}
.header-actions { display: flex; align-items: center; gap: 10px; }
.header-summon,
.menu-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 58px;
  border: 0;
  color: #fff;
  font-family: var(--heading-font);
  font-size: 1.24rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .02em;
  text-decoration: none;
  text-shadow: 0 2px 3px rgba(0,0,0,.78);
  filter: drop-shadow(0 4px 5px rgba(0,0,0,.35));
  transition: transform .16s ease, filter .16s ease;
}
.header-summon {
  min-width: 182px;
  padding: 11px 26px;
  background: url('/assets/ui/button-red.webp') center / 100% 100% no-repeat;
}
.menu-toggle {
  min-width: 136px;
  padding: 11px 22px;
  gap: 7px;
  background: url('/assets/ui/button-green.webp') center / 100% 100% no-repeat;
}
.header-summon:hover,
.menu-toggle:hover,
.menu-toggle.active { transform: translateY(1px) scale(.988); filter: brightness(1.08) drop-shadow(0 3px 4px rgba(0,0,0,.36)); }
.menu-caret { font-size: .95em; margin-left: 2px; }
.nav-sign {
  position: absolute;
  top: calc(100% - 5px);
  right: clamp(20px, 4vw, 76px);
  z-index: 3;
  display: none;
  width: min(318px, calc(100vw - 16px));
  height: 574px;
  overflow: visible;
  pointer-events: none;
}
.nav-sign.open { display: block; pointer-events: auto; animation: signDrop .25s ease-out; }
.nav-sign-hanging {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: visible;
  transform-origin: 50% 0;
}
.nav-sign.open .nav-sign-hanging { animation: gentleSwing 4.4s ease-in-out .2s infinite; }
.nav-chain {
  position: absolute;
  top: -73px;
  z-index: 0;
  width: 21px;
  height: 112px;
  object-fit: fill;
  pointer-events: none;
  filter: drop-shadow(0 3px 4px rgba(0,0,0,.55));
}
.nav-chain-left { left: 73px; }
.nav-chain-right { right: 73px; }
.nav-sign-panel {
  position: absolute;
  top: 27px;
  left: 0;
  z-index: 2;
  width: 100%;
  aspect-ratio: 345 / 535;
  filter: drop-shadow(0 18px 25px rgba(0,0,0,.5));
}
.nav-sign-frame {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  object-fit: fill;
  pointer-events: none;
  user-select: none;
}
.nav-sign-scroll {
  position: absolute;
  inset: 17.2% 10.7% 11.4%;
  z-index: 2;
  overflow-y: auto;
  padding: 0 8px 1px 4px;
  background: transparent;
  scrollbar-color: #a88a61 transparent;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
}
.nav-sign-scroll::-webkit-scrollbar { width: 6px; }
.nav-sign-scroll::-webkit-scrollbar-track { background: transparent; }
.nav-sign-scroll::-webkit-scrollbar-thumb {
  border: 1px solid rgba(40,25,12,.58);
  border-radius: 999px;
  background: linear-gradient(#c3a982, #654423);
}
.nav-sign a {
  display: flex;
  align-items: center;
  min-height: 34px;
  padding: 5px 8px;
  border-bottom: 1px solid rgba(242,220,183,.1);
  color: #f8f2e5;
  font-family: var(--heading-font);
  font-size: 1.22rem;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: .02em;
  text-decoration: none;
  text-shadow: 0 2px 3px rgba(0,0,0,.95);
}
.nav-sign a:hover,
.nav-sign a[aria-current='page'] { color: #fff0b3; background: linear-gradient(90deg, rgba(238,205,125,.16), transparent); }
@keyframes signDrop { from { opacity: 0; transform: translateY(-12px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes gentleSwing { 0%,100% { transform: rotate(.95deg) translateX(0); } 50% { transform: rotate(-.95deg) translateX(-2px); } }

/* Illustrated public buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 54px;
  padding: 11px 26px;
  border: 0;
  color: #fff;
  font-family: var(--heading-font);
  font-size: 1.2rem;
  font-weight: 700;
  letter-spacing: .018em;
  line-height: 1.02;
  text-align: center;
  text-decoration: none;
  text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b, 0 2px 3px rgba(0,0,0,.88), 0 0 7px rgba(0,0,0,.22);
  background: url('/assets/ui/button-gold.webp') center / 100% 100% no-repeat;
  filter: drop-shadow(0 4px 5px rgba(0,0,0,.28));
  transition: transform .15s ease, filter .15s ease;
}
.btn:hover { transform: translateY(1px) scale(.99); filter: brightness(1.06) drop-shadow(0 3px 4px rgba(0,0,0,.3)); }
.btn.secondary { background-image: url('/assets/ui/button-white.webp'); color: #fff; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b, 0 2px 3px rgba(0,0,0,.88), 0 0 7px rgba(0,0,0,.22); }
.btn.green { background-image: url('/assets/ui/button-green.webp'); color: #fff; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b, 0 2px 3px rgba(0,0,0,.88), 0 0 7px rgba(0,0,0,.18); }
.btn.danger { background-image: url('/assets/ui/button-red.webp'); color: #fff; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b, 0 2px 3px rgba(0,0,0,.88), 0 0 7px rgba(0,0,0,.18); }
.btn.small { min-height: 48px; padding: 9px 21px; font-size: 1.08rem; }
.btn.ghost { border: 1px solid rgba(38,52,39,.35); border-radius: 10px; background: transparent; filter: none; }

/* Above-the-fold scene and exact banner transition */
.hero-scene {
  position: relative;
  isolation: isolate;
  color: var(--cream);
  background-image: url('/assets/brand/hero-fair-scene.webp');
  background-position: center center;
  background-size: cover;
}
.hero-scene::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgba(4,8,6,.78) 0%, rgba(5,10,7,.58) 44%, rgba(5,9,7,.24) 72%, rgba(3,7,5,.35) 100%);
}
.premium-hero { position: relative; min-height: 0; }
.premium-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, .92fr) minmax(430px, 1.08fr);
  align-items: center;
  gap: clamp(34px, 5vw, 82px);
  min-height: 510px;
  padding: 34px 0 30px;
}
.premium-hero-copy { max-width: 650px; text-shadow: 0 3px 5px rgba(0,0,0,.9); }
.hero-kicker,
.eyebrow,
.cookie-kicker {
  margin: 0 0 10px;
  color: #e8d8b5;
  font-family: var(--heading-font);
  font-size: 1rem;
  font-weight: 400;
  letter-spacing: .06em;
  text-transform: uppercase;
  text-shadow: 0 2px 4px rgba(0,0,0,.72);
}
h1, h2, h3 { margin: 0 0 16px; font-family: var(--heading-font); font-weight: 400; line-height: 1.04; }
h1 { font-size: clamp(3.25rem, 6.1vw, 5.4rem); }
h2 { font-size: clamp(2.15rem, 4.1vw, 3.55rem); }
h3 { font-size: 1.55rem; }
.premium-hero h1 {
  max-width: 590px;
  margin-bottom: 12px;
  color: #fff;
  font-size: clamp(4rem, 6.7vw, 6.45rem);
  letter-spacing: .012em;
  line-height: .87;
  text-transform: uppercase;
}
.hero-tagline {
  max-width: 630px;
  margin: 0 0 12px;
  color: #fff8e9;
  font-size: clamp(1.22rem, 1.55vw, 1.52rem);
  line-height: 1.42;
}
.lead { max-width: 760px; font-size: clamp(1.02rem, 1.35vw, 1.22rem); }
.premium-hero .lead { margin: 0; color: #efe5d0; line-height: 1.52; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 13px; margin-top: 24px; }
.hero-actions.centered { justify-content: center; }
.hero-primary,
.hero-secondary { min-width: 214px; min-height: 58px; color: #fff; text-shadow: 0 2px 3px rgba(0,0,0,.78); }
.hero-primary { background-image: url('/assets/ui/button-red.webp'); }
.hero-secondary { color: #2c2116; text-shadow: 0 1px 0 rgba(255,255,255,.2); background-image: url('/assets/ui/button-gold.webp'); }
.premium-hero-media { min-width: 0; text-align: center; }
.hero-frame-stage {
  position: relative;
  width: min(100%, 510px);
  aspect-ratio: 1;
  margin: 0 auto;
  filter: drop-shadow(0 24px 25px rgba(0,0,0,.52));
}
.hero-frame-art { position: absolute; inset: 0; z-index: 3; width: 100%; height: 100%; object-fit: contain; pointer-events: none; }
.hero-media-window {
  position: absolute;
  inset: 26.2% 29.7% 10.8%;
  z-index: 1;
  overflow: hidden;
  background: #11100e url('/assets/brand/hero-portrait-filled-v2.webp') center 15% / cover no-repeat;
  clip-path: polygon(12% 0, 88% 0, 100% 8%, 100% 73%, 85% 91%, 50% 100%, 15% 91%, 0 73%, 0 8%);
}
.hero-media-window::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,.14) 58%, rgba(0,0,0,.34));
}
.hero-media-window img,
.hero-portrait {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center 14%;
  transform: translateY(5.5%) scale(1.2);
  transform-origin: center center;
}
.hero-video {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: contain;
  object-position: center center;
  background: #0b0b0a;
}
.hero-video[hidden] { display: none; }
.hero-sound-toggle {
  position: absolute;
  left: 50%;
  bottom: 13px;
  z-index: 4;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 38px;
  max-width: calc(100% - 24px);
  padding: 7px 12px 8px;
  border: 1px solid rgba(238, 210, 143, .86);
  border-radius: 8px;
  color: #fff8e8;
  font-family: var(--heading-font);
  font-size: clamp(.72rem, 1vw, .88rem);
  font-weight: 700;
  letter-spacing: .035em;
  line-height: 1;
  text-shadow: -1px -1px 0 #1b1008, 1px -1px 0 #1b1008, -1px 1px 0 #1b1008, 1px 1px 0 #1b1008, 0 2px 3px rgba(0,0,0,.8);
  white-space: nowrap;
  background: linear-gradient(180deg, rgba(91,58,25,.96), rgba(44,26,13,.98));
  box-shadow: inset 0 0 0 2px rgba(15,8,4,.48), 0 5px 12px rgba(0,0,0,.42);
  transform: translateX(-50%);
  cursor: pointer;
  transition: transform .16s ease, filter .16s ease, background .16s ease;
}
.hero-sound-toggle:hover { filter: brightness(1.1); transform: translateX(-50%) translateY(-1px); }
.hero-sound-toggle:focus-visible { outline: 3px solid #f3d67e; outline-offset: 3px; }
.hero-sound-toggle[hidden] { display: none; }
.hero-sound-toggle[data-sound='on'] { background: linear-gradient(180deg, rgba(36,91,59,.96), rgba(16,48,31,.98)); }
.hero-sound-icons { display: grid; place-items: center; width: 19px; height: 19px; flex: 0 0 19px; }
.hero-sound-icon { grid-area: 1 / 1; width: 19px; height: 19px; overflow: visible; color: #f5dda0; }
.hero-sound-icon path:first-child { fill: currentColor; stroke: none; }
.hero-sound-icon path:not(:first-child) { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.hero-sound-icon-on { display: none; }
.hero-sound-toggle[data-sound='on'] .hero-sound-icon-muted { display: none; }
.hero-sound-toggle[data-sound='on'] .hero-sound-icon-on { display: block; }
.hero-arrow {
  position: absolute;
  top: 52%;
  z-index: 5;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(255,255,255,.55);
  border-radius: 50%;
  color: #fff;
  background: rgba(5,10,7,.62);
  font-size: 2rem;
  line-height: 1;
  transform: translateY(-50%);
}
.hero-prev { left: 0; }
.hero-next { right: 0; }
.hero-dots { display: flex; justify-content: center; gap: 8px; min-height: 16px; margin-top: 7px; }
.hero-dot { width: 11px; height: 11px; padding: 0; border: 1px solid rgba(255,255,255,.8); border-radius: 50%; background: rgba(255,255,255,.26); }
.hero-dot.active { background: #eee0b8; }
.premium-feature-band {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: center;
  width: 100%;
  min-height: 176px;
  padding: 38px clamp(54px, 7vw, 132px) 42px;
  background: url('/assets/brand/banner-purple.webp') center / 100% 100% no-repeat;
}
.premium-feature-band a {
  display: grid;
  grid-template-columns: 66px minmax(0, 1fr);
  align-items: center;
  gap: 13px;
  min-width: 0;
  min-height: 86px;
  padding: 8px clamp(12px, 1.4vw, 23px);
  color: #f5f1ed;
  text-decoration: none;
  text-shadow: 0 2px 3px rgba(0,0,0,.82);
}
.premium-feature-band a + a { border-left: 1px solid rgba(226,223,227,.24); }
.premium-feature-band a:hover { background: rgba(255,255,255,.055); }
.feature-icon { display: grid; place-items: center; width: 66px; height: 66px; }
.feature-icon img { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 3px 3px rgba(0,0,0,.42)); }
.premium-feature-band strong { display: block; color: #fff; font-size: clamp(1rem, 1.2vw, 1.25rem); letter-spacing: .035em; text-transform: uppercase; }
.premium-feature-band small { display: block; margin-top: 3px; color: #e6dceb; font-size: .9rem; line-height: 1.28; }
.hero-scene-strip { height: calc(var(--section-banner-half) + 28px); }

/* Full-width alternating homepage banners and surfaces */
.section-block {
  position: relative;
  isolation: isolate;
  padding-top: calc(var(--section-banner-half) + 36px);
  background: var(--section-bg);
}
.block-purple { --section-bg: var(--purple); }
.block-green { --section-bg: var(--muted-green); }
.section-banner {
  position: absolute;
  top: 0;
  left: -1.5%;
  z-index: 4;
  display: grid;
  place-items: center;
  width: 103%;
  height: var(--section-banner-height);
  padding: 30px clamp(72px, 10vw, 220px);
  transform: translateY(-50%);
  filter: drop-shadow(0 10px 11px rgba(0,0,0,.3));
}
.section-banner-green { background: url('/assets/brand/banner-green.webp') center / 100% 100% no-repeat; }
.section-banner-purple { background: url('/assets/brand/banner-purple.webp') center / 100% 100% no-repeat; }
.section-banner-inner {
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 4px;
  width: min(1180px, 100%);
  text-align: center;
  text-shadow: 0 3px 4px rgba(0,0,0,.9);
  transform: translateY(3px);
}
.section-banner p { margin: 0; color: #ece7e9; font-size: .82rem; font-weight: 400; letter-spacing: .08em; text-transform: uppercase; }
.section-banner h2 { margin: 0; color: #fff; font-size: clamp(2rem, 3.75vw, 3.5rem); line-height: .94; }
.section-surface { padding: 30px 0 calc(var(--section-banner-half) + 55px); background: transparent; }
.section-content { width: min(1160px, calc(100% - 44px)); margin: 0 auto; }
.section-intro { max-width: 850px; margin: 0 auto 28px; font-size: clamp(1.08rem, 1.55vw, 1.28rem); text-align: center; }
.left-intro { margin-inline: 0; text-align: left; }
.block-purple { background: url('/assets/brand/section-texture-purple-v2.webp') center / cover no-repeat; }
.block-green { background: url('/assets/brand/section-texture-green-v2.webp') center / cover no-repeat; }
.surface-purple { color: #faf4fd; background: transparent; }
.surface-purple .section-intro { color: #f2e9f5; }
.surface-green { color: #132014; background: transparent; }
.surface-green .section-intro { color: #1e301f; }
.centered-copy { text-align: center; }
.last-home-block { padding-bottom: 0; }
.last-home-block .section-surface { padding-bottom: 132px; }
.section-content.split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; gap: 34px; }
.section-content .feature-photo { max-width: 520px; justify-self: end; }
.summon-priority-shell { align-items: stretch; }
.summon-priority-panel { display: grid; align-content: center; }
.feature-bullet-list { display: grid; gap: 10px; margin: 16px 0 0; padding: 0; list-style: none; }
.feature-bullet-list li { position: relative; padding-left: 22px; color: #2b312b; font-weight: 700; }
.feature-bullet-list li::before { content: '✦'; position: absolute; left: 0; top: 1px; color: #7d5b24; }
.home-facts-shell { align-items: stretch; }
.dislikes-panel { display: grid; align-content: start; gap: 12px; }
.dislikes-preview { display: grid; gap: 12px; }
.dislikes-preview .card { padding: 18px; }
.dislikes-preview.full-list .card { padding: 22px; }

/* Reusable public page system */
.breadcrumbs { display: none; }
.page-hero {
  position: relative;
  isolation: isolate;
  margin-top: calc(-1 * var(--header-height));
  padding: calc(var(--header-height) + 68px) 0 62px;
  overflow: hidden;
  color: var(--cream);
  background-image: linear-gradient(90deg, rgba(5,13,9,.84), rgba(8,20,14,.56)), url('/assets/brand/hero-fair-scene.webp');
  background-position: center 38%;
  background-size: cover;
}
.page-hero::after { content: ''; position: absolute; inset: auto 0 0; z-index: -1; height: 15px; background: linear-gradient(#61646a, #24272c 45%, #080a0b 52%, #4c5055); box-shadow: 0 -2px 7px rgba(0,0,0,.45); }
.page-hero h1 { max-width: 980px; color: #fff; }
.page-hero .lead { color: #efe7d6; }
.section { padding: 68px 0; background: url('/assets/brand/section-texture-green-v2.webp') center / cover no-repeat; }
.section:nth-of-type(even) { background: url('/assets/brand/section-texture-green-v2.webp') center / cover no-repeat; }
.section.tight { padding-block: 44px; }
.dark-section { color: var(--cream); background: url('/assets/brand/section-texture-purple-v2.webp') center / cover no-repeat; }
.section-title { max-width: 800px; margin-bottom: 32px; }
.section-title.center { margin-inline: auto; text-align: center; }
.split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; gap: 36px; }
.split-top { align-items: start; }
.grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.grid.two,
.grid-two-compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.three-tight { align-items: stretch; }
.single-column-grid { grid-template-columns: 1fr; }
.left-aligned { margin-inline: 0; text-align: left; }
.section-mini-title { margin-bottom: 18px; }
.section-mini-title h3 { margin-bottom: 8px; }
.card,
.panel,
.parchment-card,
.legal-copy {
  position: relative;
  padding: 28px;
  border: 1px solid rgba(94,71,37,.22);
  border-radius: 18px;
  color: #231d14;
  background: linear-gradient(145deg, rgba(255,250,238,.97), rgba(239,223,184,.96));
  box-shadow: var(--shadow);
}
.card::before,
.parchment-card::before,
.panel::before {
  content: '';
  position: absolute;
  inset: 8px;
  border: 1px solid rgba(117,89,48,.12);
  border-radius: 12px;
  pointer-events: none;
}
.card p,
.panel p { color: #4e4638; }
.card-media { aspect-ratio: 4 / 3; margin: -28px -28px 22px; overflow: hidden; border-radius: 18px 18px 0 0; background: #d8c69d; }
.card-media.portrait { aspect-ratio: 4 / 5; }
.card-media img { width: 100%; height: 100%; object-fit: cover; }
.card-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; color: #71552d; font-size: .78rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.feature-photo { min-height: 430px; overflow: hidden; border: 7px double #5e6269; border-radius: 22px; background: linear-gradient(145deg, var(--forest), var(--oak)); box-shadow: var(--shadow); }

.video-frame-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  justify-items: center;
  gap: clamp(18px, 2.4vw, 34px);
}
.video-frame-grid .empty-state {
  grid-column: 1 / -1;
  width: 100%;
}
.showcase-frame-card {
  position: relative;
  width: min(100%, 360px);
  padding-bottom: 12px;
}
.showcase-frame-shell {
  position: relative;
  z-index: 2;
  width: 100%;
  aspect-ratio: 1024 / 1536;
  filter: drop-shadow(0 18px 22px rgba(0,0,0,.33));
}
.showcase-frame-overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
  user-select: none;
}
.showcase-frame-media {
  position: absolute;
  inset: 9.5% 24.5% 21.48%;
  overflow: hidden;
  border-radius: 0;
  background: #090705;
  box-shadow: inset 0 0 0 1px rgba(255,240,212,.12), inset 0 14px 28px rgba(0,0,0,.24);
}
.showcase-frame-media-asset {
  width: 100%;
  height: 100%;
  display: block;
  border: 0;
  object-fit: cover;
  background: #000;
}
.showcase-tiktok-player {
  position: absolute;
  inset: 0;
}
.showcase-video-fallback-link {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  padding: 20px;
  color: #fff5d9;
  font-weight: 800;
  text-align: center;
  text-decoration: none;
  text-shadow: 0 2px 4px rgba(0,0,0,.9);
  background: radial-gradient(circle at 50% 30%, #392618, #080604 76%);
}
.showcase-video-fallback-link:hover,
.showcase-video-fallback-link:focus-visible {
  color: #fff;
  text-decoration: underline;
}
.showcase-frame-placeholder {
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 12px;
  width: 100%;
  height: 100%;
  padding: 24px 18px;
  color: #e7d6ad;
  font-size: .86rem;
  font-weight: 800;
  letter-spacing: .11em;
  text-align: center;
  text-transform: uppercase;
  background: radial-gradient(circle at 50% 25%, rgba(80,56,28,.5), rgba(17,10,6,.98));
}
.showcase-frame-placeholder img {
  width: min(46%, 118px);
  height: auto;
  opacity: .86;
  filter: drop-shadow(0 10px 12px rgba(0,0,0,.28));
}
.showcase-sign-shell {
  position: relative;
  z-index: 1;
  width: min(94%, 332px);
  margin: -78px auto 0;
  transform-origin: 50% 12%;
  animation: showcaseSignSway 7.2s ease-in-out infinite;
}
.showcase-frame-card:nth-child(2n) .showcase-sign-shell {
  animation-duration: 7.8s;
  animation-delay: -1.3s;
}
.showcase-frame-card:nth-child(3n) .showcase-sign-shell {
  animation-duration: 8.3s;
  animation-delay: -.7s;
}
.showcase-sign-image {
  width: 100%;
  height: auto;
  display: block;
  filter: drop-shadow(0 16px 18px rgba(0,0,0,.26));
  user-select: none;
}
.showcase-sign-copy {
  position: absolute;
  inset: 22% 11.5% 9%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 9px;
  text-align: center;
}
.showcase-sign-kicker {
  margin: 0;
  color: #caa461;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .1em;
  line-height: 1.25;
  text-transform: uppercase;
}
.showcase-sign-copy h3 {
  margin: 0;
  color: #f7f0de;
  font-size: clamp(1.3rem, 1.95vw, 1.72rem);
  line-height: 1.04;
  text-wrap: balance;
  text-shadow: 0 2px 4px rgba(0,0,0,.72);
}
.showcase-sign-description {
  margin: 0;
  max-width: 96%;
  color: #ece0c7;
  font-size: clamp(.92rem, 1.1vw, 1rem);
  font-weight: 600;
  line-height: 1.42;
  text-shadow: 0 2px 3px rgba(0,0,0,.72);
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
.showcase-sign-actions {
  margin-top: auto;
  padding-top: 4px;
}
.showcase-sign-actions .btn {
  min-width: min(100%, 190px);
  box-shadow: 0 8px 14px rgba(0,0,0,.22);
}

@keyframes showcaseSignSway {
  0%, 100% { transform: rotate(-1.15deg); }
  50% { transform: rotate(1.15deg); }
}

.feature-photo img { width: 100%; height: 100%; max-height: 570px; object-fit: contain; object-position: center bottom; }
.empty-state { padding: 28px; border: 1px dashed rgba(55,72,57,.45); border-radius: 14px; color: #435145; background: rgba(255,255,255,.48); text-align: center; }
.surface-purple .empty-state { color: #f1e9f4; border-color: rgba(255,255,255,.35); background: rgba(255,255,255,.07); }
.review-stars { margin-bottom: 7px; color: #a66d0f; letter-spacing: .08em; }
.centered-title { margin-inline: auto; text-align: center; }
.schedule-preview-shell { display: grid; grid-template-columns: minmax(0, .95fr) minmax(360px, 1.05fr); align-items: center; gap: clamp(28px, 5vw, 62px); }
.schedule-preview-copy { display: grid; align-content: center; gap: 17px; color: #f8f1df; }
.schedule-preview-copy .eyebrow { color: #e8cf92; }
.schedule-preview-copy .empty-state { color: #f3ead8; border-color: rgba(241,216,137,.42); background: rgba(7,15,10,.42); }
.schedule-preview-heading { margin: 0; color: #fff7e5; font-size: clamp(2rem, 3.3vw, 3rem); line-height: 1.02; text-shadow: 0 2px 4px rgba(0,0,0,.55); }
.schedule-preview-pitch { margin: 0; max-width: 720px; color: #eee3cd; font-size: 1.12rem; line-height: 1.7; }
.schedule-calendar-link { position: relative; display: block; width: 100%; min-width: 0; color: inherit; text-decoration: none; transform: translateZ(0); transition: transform .18s ease, filter .18s ease; }
.schedule-calendar-link:hover { transform: translateY(-4px) scale(1.01); filter: brightness(1.05); }
.schedule-calendar-link:focus-visible { outline: 3px solid #f1d889; outline-offset: 7px; border-radius: 22px; }
.schedule-calendar-cta { display: none; }
.calendar-ledger { width: 100%; min-width: 0; }
.calendar-ledger.compact { width: min(100%, 700px); margin-inline: auto; }
.event-teaser-list { display: grid; gap: 12px; }
.event-teaser { display: grid; grid-template-columns: 58px 1fr; gap: 14px; align-items: center; width: 100%; padding: 16px 18px; border: 1px solid rgba(255,255,255,.22); border-radius: 16px; color: #f8f1df; background: rgba(9,18,13,.42); box-shadow: 0 10px 20px rgba(0,0,0,.18); text-align: left; }
.event-teaser-button { cursor: pointer; font: inherit; transition: transform .16s ease, border-color .16s ease, background .16s ease; }
.event-teaser-button:hover { transform: translateY(-2px); border-color: rgba(241,216,137,.72); background: rgba(20,31,23,.58); }
.event-teaser-button:focus-visible { outline: 3px solid #f1d889; outline-offset: 3px; }
.event-teaser-icon { display: grid; place-items: center; width: 58px; height: 58px; border: 1px solid rgba(236, 217, 169, .4); border-radius: 50%; background: rgba(17, 8, 4, .56); box-shadow: inset 0 0 0 2px rgba(0,0,0,.35); }
.event-teaser-icon img { width: 34px; height: 34px; object-fit: contain; }
.event-teaser-copy { display: grid; gap: 4px; min-width: 0; }
.event-teaser-copy strong { color: #fff4dc; font-family: var(--heading-font); font-size: 1.22rem; font-weight: 400; line-height: 1.15; }
.event-teaser-copy span:not(.event-teaser-date) { color: #ddd2bd; }
.event-teaser-date { color: #f1d994 !important; font-size: .8rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.schedule-booking-card { display: grid; align-content: center; padding: clamp(24px, 4vw, 42px); border: 1px solid rgba(255,255,255,.18); border-radius: 22px; color: #f7ecd8; background: linear-gradient(145deg, rgba(14,27,18,.78), rgba(29,14,38,.64)); box-shadow: 0 20px 38px rgba(0,0,0,.2); }
.schedule-booking-card h3 { margin-bottom: 12px; color: #fff5dd; font-size: clamp(2rem, 3.4vw, 3rem); }

.summon-signs-surface { padding-top: 14px; padding-bottom: calc(var(--section-banner-half) + 28px); }
.summon-signs-content { display: grid; gap: 16px; margin-top: -8px; }
.summon-signs-intro { max-width: 850px; margin: 0 auto; color: #f4ebf7; }
.summon-signs-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(18px, 2vw, 28px); align-items: start; }
.summon-sign-card {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  align-items: stretch;
  width: 100%;
  max-width: 370px;
  aspect-ratio: 900 / 1120;
  margin-inline: auto;
  padding: 17% 14.5% 12.5%;
  overflow: hidden;
  color: #fff8ea;
  text-align: center;
  text-shadow: 0 2px 4px rgba(0,0,0,.94), 0 0 2px rgba(0,0,0,.86);
  background-position: center;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  filter: drop-shadow(0 14px 15px rgba(0,0,0,.3));
}
.summon-sign-yellow { color: #fff; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b, 0 2px 3px rgba(0,0,0,.88); background-image: url('/assets/brand/sign-panel-yellow-v2.webp'); }
.summon-sign-red { background-image: url('/assets/brand/sign-panel-red-v2.webp'); }
.summon-sign-green { background-image: url('/assets/brand/sign-panel-green-v2.webp'); }
.summon-sign-copy { display: grid; align-content: center; justify-items: center; gap: 10px; width: 90%; min-width: 0; margin-inline: auto; padding: 0; }
.summon-sign-card .eyebrow { margin: 0; color: #f3e2b8; font-size: clamp(.72rem, .8vw, .9rem); letter-spacing: .07em; }
.summon-sign-yellow .eyebrow { color: #fff4d6; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b; }
.summon-sign-card h3 { max-width: 100%; margin: 0; color: #fff8ea; font-size: clamp(1.35rem, 1.58vw, 1.76rem); line-height: 1.06; text-wrap: balance; }
.summon-sign-yellow h3 { color: #fff; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b, 0 2px 3px rgba(0,0,0,.88); }
.summon-sign-card p { max-width: 100%; margin: 0; color: #f7eee2; font-size: clamp(.86rem, .94vw, 1rem); line-height: 1.42; text-wrap: pretty; }
.summon-sign-yellow p { color: #fff8e9; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b; }
.summon-sign-btn { align-self: end; justify-self: center; width: min(94%, 258px); min-height: 52px; margin-bottom: 1%; padding-inline: 15px; font-size: clamp(.9rem, .98vw, 1.04rem); }
.summon-signs-footer { margin-top: -4px; }


.realm-sign-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(24px, 4vw, 48px); align-items: stretch; justify-items: center; }
.realm-sign-grid-two { max-width: 930px; margin-inline: auto; }
.realm-sign-card { display: grid; grid-template-rows: minmax(0, 1fr) auto; width: min(100%, 430px); aspect-ratio: 900 / 1120; padding: 16% 14% 12%; overflow: hidden; color: #fff; text-align: center; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b, 0 2px 3px rgba(0,0,0,.86); background-position: center; background-size: 100% 100%; background-repeat: no-repeat; filter: drop-shadow(0 15px 16px rgba(0,0,0,.3)); }
.realm-sign-yellow { background-image: url('/assets/brand/sign-panel-yellow-v2.webp'); }
.realm-sign-red { background-image: url('/assets/brand/sign-panel-red-v2.webp'); }
.realm-sign-green { background-image: url('/assets/brand/sign-panel-green-v2.webp'); }
.realm-sign-copy { display: grid; align-content: center; justify-items: center; gap: 9px; min-width: 0; }
.realm-sign-card .eyebrow { margin: 0; color: #fff1c9; font-size: .85rem; }
.realm-sign-card h3 { margin: 0; max-width: 95%; color: #fff; font-size: clamp(1.55rem, 2.2vw, 2rem); line-height: 1.04; }
.realm-sign-card p { margin: 0; max-width: 92%; color: #fff8e9; font-size: .94rem; line-height: 1.38; }
.realm-sign-intro { margin-bottom: 4px !important; }
.realm-sign-list { display: grid; gap: 6px; width: 94%; }
.realm-sign-list .card { padding: 5px 4px; border: 0; border-radius: 0; color: #fff; background: transparent; box-shadow: none; }
.realm-sign-list .card::before { display: none; }
.realm-sign-list .card h3 { font-size: .95rem; line-height: 1.13; }
.realm-sign-list .card p { display: none; }
.realm-sign-list .card-meta { display: none; }
.realm-sign-btn { align-self: end; justify-self: center; width: min(92%, 265px); min-height: 54px; }

.merch-sign-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(22px, 2.5vw, 34px); align-items: start; }
.merch-sign-card {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  align-items: stretch;
  width: 100%;
  max-width: 350px;
  aspect-ratio: 900 / 1120;
  margin-inline: auto;
  padding: 14% 13% 10.5%;
  overflow: hidden;
  color: #fff8ea;
  text-align: center;
  text-shadow: 0 2px 4px rgba(0,0,0,.92);
  background-position: center;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  filter: drop-shadow(0 14px 15px rgba(0,0,0,.28));
}
.merch-sign-yellow { color: #fff; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b; background-image: url('/assets/brand/sign-panel-yellow-v2.webp'); }
.merch-sign-red { background-image: url('/assets/brand/sign-panel-red-v2.webp'); }
.merch-sign-purple { background-image: url('/assets/brand/sign-panel-purple-v2.webp'); }
.merch-sign-media { width: min(72%, 190px); aspect-ratio: 1; margin: 2% auto 10px; overflow: hidden; border: 3px solid rgba(214,202,173,.72); border-radius: 10px; background: rgba(9,8,7,.62); box-shadow: 0 5px 12px rgba(0,0,0,.3); }
.merch-sign-media img { width: 100%; height: 100%; object-fit: cover; }
.merch-sign-copy { display: grid; align-content: start; justify-items: center; gap: 7px; min-width: 0; padding-inline: 2%; }
.merch-sign-card .card-meta { justify-content: center; margin: 0; color: #f0dba7; font-size: .72rem; }
.merch-sign-yellow .card-meta { color: #fff4d6; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b; }
.merch-sign-card h3 { margin: 0; color: #fff7e7; font-size: clamp(1.3rem, 1.55vw, 1.72rem); line-height: 1.05; text-wrap: balance; }
.merch-sign-yellow h3 { color: #fff; text-shadow: -1px -1px 0 #17110b, 1px -1px 0 #17110b, -1px 1px 0 #17110b, 1px 1px 0 #17110b; }
.merch-sign-btn { align-self: end; justify-self: center; width: min(92%, 220px); }

.schedule-booking-card p { margin: 0; color: #e9dfcf; }
.schedule-booking-card .hero-actions { margin-top: 22px; }
.schedule-section { background: linear-gradient(180deg, #edf0e7, #dce4d3); }
.schedule-page-shell { display: grid; gap: 28px; overflow: visible; padding-inline: clamp(8px, 2vw, 26px); }
.schedule-page-shell > .calendar-ledger { display: flex; justify-content: center; width: 100%; overflow: visible; }
.schedule-page-shell .ledger-shell { position: relative; width: min(100%, 1180px); margin-inline: auto; aspect-ratio: 558 / 447; container-type: inline-size; }
.ledger-shell-preview { width: min(100%, 700px); container-type: inline-size; }
.ledger-art { width: 100%; height: 100%; object-fit: contain; display: block; image-rendering: auto; filter: drop-shadow(0 10px 16px rgba(0,0,0,.32)); }
.ledger-month-plaque, .ledger-year-plaque { position: absolute; display: flex; align-items: center; justify-content: center; text-align: center; color: #cdbb91; text-shadow: 0 2px 4px rgba(0,0,0,.92); pointer-events: none; }
.ledger-month-plaque { top: 5.45%; left: 30.2%; width: 39.6%; min-height: 14.8%; font-family: var(--heading-font); font-size: clamp(1.95rem, 4.08cqw, 3.34rem); letter-spacing: .015em; }
.ledger-year-plaque { top: 21.02%; left: 39.5%; width: 21%; min-height: 6%; font-family: var(--heading-font); font-size: clamp(1rem, 1.95cqw, 1.56rem); font-weight: 400; letter-spacing: .015em; }
.ledger-nav { position: absolute; top: 8.7%; z-index: 8; width: 10.8%; aspect-ratio: 1; border: 0; padding: 0; background: transparent; cursor: pointer; }
.ledger-nav:focus-visible { outline: 2px solid rgba(245,224,166,.85); outline-offset: 2px; border-radius: 50%; }
.ledger-nav-prev { left: 15.6%; }
.ledger-nav-next { right: 15.6%; }
.ledger-grid { position: absolute; top: 34.62%; left: 16.68%; width: 65.25%; height: 42.95%; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); grid-template-rows: repeat(6, minmax(0, 1fr)); }
.ledger-day { position: relative; min-width: 0; overflow: hidden; padding: 2px; }
.ledger-day[data-request-date] { cursor: pointer; }
.ledger-day[data-request-date]:hover::after,
.ledger-day[data-request-date]:focus-visible::after { content: ''; position: absolute; inset: 3px; border: 1px solid rgba(233,210,151,.5); border-radius: 5px; pointer-events: none; }
.ledger-day[data-request-date]:focus-visible { outline: 2px solid rgba(243,221,159,.9); outline-offset: -2px; }
.ledger-day.empty { pointer-events: none; }
.ledger-day-number { position: absolute; top: clamp(1px, .42cqw, 6px); left: clamp(8px, .92cqw, 12px); color: #e1cb93; font-family: var(--heading-font); font-size: clamp(.84rem, 1.62cqw, 1.54rem); font-weight: 400; line-height: 1; text-shadow: 0 2px 3px rgba(0,0,0,.96), 0 0 1px rgba(0,0,0,.94); }
.ledger-day.has-events .ledger-day-number { color: #ead9a7; }

.ledger-day:nth-child(7n + 1) .ledger-day-number { left: clamp(9px, 1cqw, 13px); }
.ledger-day:nth-child(7n + 2) .ledger-day-number,
.ledger-day:nth-child(7n + 3) .ledger-day-number { left: calc(clamp(8px, .92cqw, 12px) + 2px); }
.ledger-shell-preview .ledger-month-plaque { font-size: clamp(.92rem, 2.85cqw, 1.44rem); }
.ledger-shell-preview .ledger-year-plaque { font-size: clamp(.52rem, 1.5cqw, .92rem); }
.ledger-shell-preview .ledger-day-number { left: clamp(5px, .78cqw, 8px); font-size: clamp(.54rem, 1cqw, .92rem); }
.ledger-shell-preview .ledger-day:nth-child(7n + 1) .ledger-day-number { left: clamp(6px, .96cqw, 10px); }
.ledger-shell-preview .ledger-day:nth-child(7n + 2) .ledger-day-number,
.ledger-shell-preview .ledger-day:nth-child(7n + 3) .ledger-day-number { left: calc(clamp(5px, .78cqw, 8px) + 2px); }
.ledger-events { position: absolute; top: 27%; left: 7%; right: 6%; bottom: 5%; display: flex; flex-wrap: wrap; align-content: flex-start; align-items: flex-start; gap: clamp(2px, .35cqw, 5px); overflow: hidden; }
.ledger-event { display: grid; place-items: center; width: clamp(16px, 1.55cqw, 24px); height: clamp(16px, 1.55cqw, 24px); min-width: 0; flex: 0 0 auto; padding: 2px; overflow: hidden; border: 1px solid rgba(235,217,172,.24); border-radius: 50%; color: #f3e7c9; background: rgba(8,12,9,.76); box-shadow: 0 1px 5px rgba(0,0,0,.38); font: inherit; line-height: 1; text-decoration: none; cursor: pointer; }
span.ledger-event { cursor: default; }
button.ledger-event:hover,
button.ledger-event:focus-visible { filter: brightness(1.22); outline: 2px solid rgba(246,223,163,.82); outline-offset: 1px; }
.ledger-event.is-private { color: #f0e2f3; background: rgba(62,31,73,.88); border-color: rgba(225,189,236,.28); }
.ledger-event img { width: clamp(12px, 1.08cqw, 17px); height: clamp(12px, 1.08cqw, 17px); flex: 0 0 auto; object-fit: contain; }
.ledger-event-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.ledger-more-count { align-self: center; padding: 2px 5px; border-radius: 999px; color: #f2dfad; background: rgba(42,29,16,.82); font-size: clamp(.38rem, .55cqw, .62rem); font-weight: 800; line-height: 1.1; }
.ledger-shell-preview .ledger-event { width: clamp(12px, 1.35cqw, 18px); height: clamp(12px, 1.35cqw, 18px); padding: 1px; }
.ledger-shell-preview .ledger-event img { width: clamp(9px, 1cqw, 14px); height: clamp(9px, 1cqw, 14px); }
.form-shell { max-width: 940px; margin-inline: auto; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.field { display: grid; gap: 7px; }
.field.full { grid-column: 1 / -1; }
label { color: #352d1f; font-weight: 700; }
input, select, textarea { width: 100%; border: 1px solid #bca674; border-radius: 10px; color: #252117; background: #fffdf7; padding: 11px 12px; }
textarea { min-height: 150px; resize: vertical; }
.honeypot { position: absolute; left: -9999px; }
.form-status { min-height: 24px; margin-top: 10px; }
.form-status.success { color: #1f6b3e; }
.form-status.error { color: #9b2f25; }
.draft-list { display: grid; gap: 15px; }
.draft { padding: 20px; border: 1px solid #dbc58e; border-radius: 14px; color: var(--ink); background: #fffaf0; }
.draft-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }


.petition-email-builder-heading { max-width: 840px; margin-inline: auto; }
.petition-email-builder-heading h2,
.petition-email-builder-heading p { color: #fff; text-shadow: 0 2px 4px rgba(0,0,0,.58); }
.petition-email-builder-heading .eyebrow { color: #f0d88e; }
.petition-email-builder-shell { display: grid; place-items: center; }
.inline-scroll-email-builder { width: min(100%, 430px); }
.petition-email-builder-card { gap: 10px; }
.petition-email-generator-form { display: grid; align-content: center; min-height: 100%; }
.petition-email-generator-form .form-grid { max-width: 620px; width: 100%; margin-inline: auto; }
.petition-email-result { display: grid; align-content: center; gap: 14px; min-height: 100%; }
.generated-email-version { margin: -4px 0 0; color: #6a4d2d; font-size: .88rem; font-weight: 700; line-height: 1.4; text-align: center; }
.generated-email-field { display: grid; gap: 7px; width: 100%; }
.generated-email-field > span { color: #63431d; font-size: .82rem; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.generated-email-subject,
.generated-email-body {
  width: 100%;
  border: 1px solid #b48e50;
  border-radius: 10px;
  color: #2e2115;
  background: rgba(255,253,247,.94);
  box-shadow: inset 0 1px 4px rgba(93,60,22,.08);
}
.generated-email-subject { padding: 12px 14px; font-weight: 750; line-height: 1.4; }
.generated-email-body { min-height: 290px; padding: 14px; resize: vertical; font: 650 1rem/1.55 var(--body-font); }
.petition-email-result-actions { gap: 9px; }
.petition-email-result-actions .btn { min-width: min(100%, 190px); }
.legal-section { background: #dbe3d4; }
.legal-copy { width: min(920px, calc(100% - 44px)); margin-inline: auto; }
.legal-copy h2 { margin-top: 34px; font-size: clamp(1.8rem, 3vw, 2.45rem); }
.legal-copy a { color: #24543e; font-weight: 700; }

/* Footer: same wood and forged-metal family as the header */
.site-footer {
  position: relative;
  z-index: 6;
  margin-top: -54px;
  padding-bottom: 0;
  color: #f5ead3;
  background: url('/assets/brand/section-texture-green-v2.webp') center top / cover no-repeat;
}
.home-page .site-footer { margin-top: -54px; background-image: url('/assets/brand/section-texture-purple-v2.webp'); }
.footer-frame {
  min-height: 470px;
  padding: 108px 0 34px;
  background:
    linear-gradient(rgba(7,8,7,.2), rgba(7,8,7,.42)),
    url('/assets/brand/menu-bar-frame.webp') center / 100% 100% no-repeat;
  filter: drop-shadow(0 -8px 14px rgba(0,0,0,.32));
}
.footer-grid { display: grid; grid-template-columns: 1.45fr .8fr .9fr; gap: clamp(28px, 5vw, 72px); align-items: start; padding-inline: clamp(24px, 4vw, 48px); }
.brand { display: flex; align-items: center; gap: 14px; min-width: 0; color: #fff; text-decoration: none; }
.brand img { width: 82px; height: 82px; object-fit: contain; filter: drop-shadow(0 5px 5px rgba(0,0,0,.45)); }
.brand strong { display: block; font-family: var(--heading-font); font-size: 1.75rem; line-height: 1; }
.brand span span { display: block; margin-top: 5px; color: #dfcfaf; font-size: .72rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.footer-about p { max-width: 590px; color: #e5d9c1; font-size: 1.06rem; line-height: 1.7; }
.footer-socials { margin-top: 18px; }
.footer-grid nav { display: grid; align-content: start; gap: 9px; }
.footer-grid :is(h2, h3) { margin-bottom: 7px; color: #fff; font-size: 1.82rem; }
.site-footer a,
.site-footer button { color: #ead8ae; }
.footer-grid nav a { text-decoration: none; }
.footer-grid nav a:hover { color: #fff4cf; }
.footer-cta { margin-top: 7px; font-weight: 700; }
.footer-bottom { display: flex; align-items: center; justify-content: space-between; gap: 22px; margin-top: 34px; padding: 21px clamp(24px, 4vw, 48px) 8px; border-top: 1px solid rgba(255,255,255,.16); color: #d8ceb7; font-size: 1.08rem; }
.footer-legal { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 15px; }
.footer-legal a,
.footer-legal button { border: 0; padding: 0; color: #d8ccb4; background: transparent; font: inherit; text-decoration: none; }
.footer-legal a:hover,
.footer-legal button:hover { color: #fff3cb; text-decoration: underline; }

/* Consent controls */
.cookie-banner {
  position: fixed;
  right: 18px;
  bottom: 18px;
  left: 18px;
  z-index: 160;
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) auto;
  align-items: center;
  gap: 26px;
  width: min(1120px, calc(100% - 36px));
  margin-inline: auto;
  padding: 24px 27px;
  border: 5px double #777b81;
  border-radius: 13px;
  color: #f7ead0;
  background: linear-gradient(rgba(29,18,11,.2), rgba(10,8,6,.34)), #2e1d12;
  box-shadow: 0 20px 55px rgba(0,0,0,.5), inset 0 0 0 2px rgba(0,0,0,.5);
}
.cookie-banner h2 { margin-bottom: 5px; font-size: 1.8rem; }
.cookie-banner p { margin: 0; color: #e6dbc7; }
.cookie-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 9px; }
.cookie-button {
  min-height: 43px;
  padding: 9px 14px;
  border: 1px solid #aeb0b5;
  border-radius: 7px;
  color: #fff;
  background: #35483d;
  font-weight: 700;
}
.cookie-button:hover { background: #496051; }
.cookie-modal { position: fixed; inset: 0; z-index: 170; display: grid; place-items: center; padding: 18px; background: rgba(5,10,7,.76); }
.cookie-modal-card { position: relative; width: min(650px, 100%); max-height: calc(100vh - 36px); overflow: auto; padding: 30px; border: 6px double #747980; border-radius: 14px; color: #f6ead3; background: linear-gradient(145deg, #3c2718, #1f160f); box-shadow: 0 30px 70px rgba(0,0,0,.55); }
.cookie-close { position: absolute; top: 10px; right: 12px; width: 38px; height: 38px; border: 1px solid #8f949a; border-radius: 50%; color: #fff; background: #24372d; font-size: 1.5rem; }
.cookie-option { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 15px 0; padding: 16px; border: 1px solid rgba(219,211,195,.25); border-radius: 9px; background: rgba(255,255,255,.055); }
.cookie-option p { margin: 4px 0 0; color: #ded3bf; }
.cookie-option input { width: 22px; height: 22px; flex: 0 0 auto; }
.cookie-policy-link { margin-bottom: 0; }
.cookie-policy-link a { color: #f0d996; }
.toast { position: fixed; right: 18px; bottom: 18px; z-index: 180; padding: 13px 17px; border-radius: 10px; color: #fff; background: var(--forest); box-shadow: var(--shadow); }


/* Full-width calendar event-key ribbon */
.calendar-legend-wrap {
  position: relative;
  left: 50%;
  width: 100vw;
  margin: -2px 0 2px -50vw;
  overflow: visible;
}
.calendar-legend-ribbon {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: clamp(154px, 13.5vw, 210px);
  padding: clamp(31px, 3.5vw, 54px) clamp(70px, 8vw, 150px);
  background: center / 100% 100% no-repeat url("/assets/brand/banner-purple.webp");
  filter: drop-shadow(0 12px 14px rgba(0,0,0,.28));
}
.calendar-legend-inner {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: clamp(28px, 4vw, 64px);
  width: min(1180px, 100%);
}
.calendar-legend-title {
  color: #fff8e9;
  font-family: var(--heading-font);
  font-size: clamp(2rem, 3.4vw, 3.35rem);
  line-height: .95;
  white-space: nowrap;
  text-shadow: 0 3px 5px rgba(0,0,0,.88);
}
.calendar-legend {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  align-items: center;
  gap: clamp(12px, 2.2vw, 30px);
}
.calendar-legend-item {
  display: grid;
  grid-template-columns: clamp(38px, 4vw, 54px) minmax(0, auto);
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-width: 0;
  padding: 5px 2px;
  color: #fff7e8;
  text-decoration: none;
  font-family: var(--heading-font);
  font-size: clamp(1.03rem, 1.55vw, 1.38rem);
  font-weight: 700;
  line-height: 1;
  text-align: left;
  text-shadow: 0 2px 4px rgba(0,0,0,.96);
  transition: transform .16s ease, filter .16s ease;
}
.calendar-legend-item:hover { transform: translateY(-2px) scale(1.025); filter: brightness(1.12); }
.calendar-legend-item:focus-visible { outline: 3px solid #f1d889; outline-offset: 4px; border-radius: 8px; }
.calendar-legend-item img {
  width: clamp(38px, 4vw, 54px);
  height: clamp(38px, 4vw, 54px);
  object-fit: contain;
  filter: drop-shadow(0 4px 4px rgba(0,0,0,.55));
}
.calendar-legend-item span { min-width: 0; color: inherit; }

.event-list-scroll { max-height: 760px; overflow-y: auto; padding-right: 8px; }
.event-list { display: grid; gap: 16px; }
.event-row { display: grid; grid-template-columns: minmax(120px, 160px) minmax(0, 1fr) auto; gap: 18px; align-items: center; padding: 18px 20px; border: 1px solid rgba(92,68,34,.24); border-radius: 18px; background: linear-gradient(145deg, rgba(255,250,238,.98), rgba(239,225,190,.96)); box-shadow: 0 14px 26px rgba(0,0,0,.12); }
.event-date { color: #6d5023; font-weight: 800; line-height: 1.35; }
.event-date small { color: #7f6844; font-weight: 700; }
.event-row h3 { margin: 8px 0 6px; color: #261d12; font-size: clamp(1.3rem, 2vw, 1.8rem); }
.event-row p { margin: 0; color: #4a4032; }
.event-row > div:nth-child(2) { display: grid; gap: 6px; }
.event-list-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; }
.event-list-heading .btn { flex: 0 0 auto; }
.schedule-upcoming-section { color: #fff8ea; }
.schedule-upcoming-section .event-list-heading .eyebrow { color: #f2d78d; }
.schedule-upcoming-section .event-list-heading h2 { color: #fff; text-shadow: 0 2px 4px rgba(0,0,0,.62); }
.schedule-upcoming-section .event-list-heading p { color: #f4eddf; font-size: 1.08rem; text-shadow: 0 1px 2px rgba(0,0,0,.48); }


/* Public event page */
.events-page-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 22px; }
.event-page-card { display: flex; min-width: 0; overflow: hidden; border: 1px solid rgba(92,68,34,.25); border-radius: 20px; color: #2e281f; background: linear-gradient(145deg, rgba(255,250,238,.98), rgba(238,220,181,.96)); box-shadow: 0 18px 34px rgba(0,0,0,.14); flex-direction: column; }
.event-page-media { display: block; width: 100%; padding: 0; border: 0; background: #1a251d; cursor: pointer; }
.event-page-media img { display: block; width: 100%; aspect-ratio: 16/10; object-fit: cover; }
.event-page-icon { display: grid; place-items: center; width: 100%; min-height: 155px; padding: 0; border: 0; background: linear-gradient(145deg, #173126, #29172f); cursor: pointer; }
.event-page-icon img { width: 58px; height: 58px; object-fit: contain; }
.event-page-body { display: flex; flex: 1; padding: 22px; flex-direction: column; }
.event-page-body h3 { margin: 8px 0 9px; color: #261d12; font-size: clamp(1.55rem, 2.35vw, 2.05rem); }
.event-page-date { margin: 0; color: #725222; font-weight: 700; }
.event-page-location { color: #3f4b3e; font-weight: 700; }
.event-page-excerpt { flex: 1; }
.event-page-action { align-self: flex-start; margin-top: 8px; }
.event-row-location { color: #314b39 !important; font-weight: 800; }
.events-booking-panel { max-width: 920px; margin-inline: auto; padding-inline: clamp(12px, 3vw, 32px); color: #fff9ed; text-align: center; background: transparent; }
.events-booking-panel :is(h2, p) { color: #fff9ed !important; text-shadow: 0 2px 5px rgba(0,0,0,.82); }
.events-booking-panel .eyebrow { color: #f5dda0 !important; }
.events-booking-panel .btn { margin-top: 14px; }
.event-type-pill {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: 7px;
  width: max-content;
  max-width: 100%;
  padding: 4px 9px;
  border: 1px solid rgba(96,69,33,.25);
  border-radius: 999px;
  color: #4b361f;
  background: rgba(255,249,229,.58);
  font-size: .9rem;
  font-weight: 800;
  line-height: 1.1;
}
.event-type-pill img {
  flex: 0 0 auto;
  width: 26px !important;
  height: 26px !important;
  object-fit: contain !important;
}

/* Reusable animated scroll popup system */
body.event-modal-open { overflow: hidden; }
.scroll-modal {
  position: fixed;
  inset: 0;
  z-index: 5000;
  display: grid;
  place-items: center;
  overflow: hidden;
  padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));
  isolation: isolate;
}
.scroll-modal[hidden] { display: none !important; }
.scroll-modal-backdrop {
  position: absolute;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 0;
  background:
    radial-gradient(circle at 50% 45%, rgba(53,36,19,.2), transparent 38%),
    rgba(3,8,6,.86);
  backdrop-filter: blur(8px);
  cursor: default;
  animation: scrollBackdropIn .24s ease-out both;
}
.scroll-dialog {
  position: relative;
  width: min(94vw, 52dvh, 560px);
  aspect-ratio: 375 / 666;
  max-height: 94dvh;
  outline: none;
}
.scroll-canvas {
  position: relative;
  width: 100%;
  height: 100%;
  transform-origin: center;
  filter: drop-shadow(0 28px 30px rgba(0,0,0,.58));
}
.scroll-modal.is-opening .scroll-canvas { animation: scrollArrival .2s cubic-bezier(.18,.74,.24,1) both; }
.scroll-modal.is-closing .scroll-canvas { animation: scrollDeparture .3s ease-in both; }
.scroll-stage-stack {
  position: absolute;
  inset: 0;
  z-index: 1;
  transform-origin: center;
  transition: transform .09s cubic-bezier(.2,.74,.25,1);
}
.scroll-modal[data-scroll-stage='1'] .scroll-stage-stack { transform: scaleX(.965) scaleY(.92); }
.scroll-modal[data-scroll-stage='2'] .scroll-stage-stack { transform: scaleX(.975) scaleY(.95); }
.scroll-modal[data-scroll-stage='3'] .scroll-stage-stack { transform: scaleX(.985) scaleY(.975); }
.scroll-modal[data-scroll-stage='4'] .scroll-stage-stack { transform: scaleX(.994) scaleY(.99); }
.scroll-modal[data-scroll-stage='5'] .scroll-stage-stack { transform: scale(1); }
.scroll-stage-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  object-fit: contain;
  user-select: none;
  pointer-events: none;
  transform: scaleY(.975);
  transform-origin: center;
  transition: opacity .035s linear, transform .07s cubic-bezier(.18,.75,.24,1);
}
.scroll-stage-image.is-visible { opacity: 1; transform: scaleY(1); }
.scroll-modal.stage-settle .scroll-stage-image.is-visible { animation: scrollStageSettle .08s cubic-bezier(.2,.74,.24,1) both; }
.scroll-paper-viewport {
  position: absolute;
  z-index: 2;
  overflow: hidden;
  opacity: 0;
  transform: translateY(6px) scaleY(.96);
  transform-origin: center;
  transition: opacity .22s ease, transform .28s ease;
}
.scroll-dialog[data-scroll-size='full'] .scroll-paper-viewport { inset: 10.7% 11.8% 10.6%; }
.scroll-dialog[data-scroll-size='compact'] .scroll-paper-viewport { inset: 27.1% 11.9% 28.3%; }
.scroll-modal.is-ready .scroll-paper-viewport {
  opacity: 1;
  transform: none;
}
.scroll-modal.is-closing .scroll-paper-viewport { opacity: 0; transform: translateY(-4px) scaleY(.97); transition-duration: .12s; }
.scroll-paper-content {
  width: 100%;
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: #765631 rgba(91,57,26,.12);
  padding: clamp(7px, 1.4vw, 14px) clamp(12px, 2.5vw, 24px) clamp(20px, 3.8vw, 38px);
  color: #302417;
  text-align: center;
  -webkit-overflow-scrolling: touch;
}
.scroll-dialog[data-scroll-size='compact'] .scroll-paper-content {
  display: grid;
  align-items: center;
  padding: clamp(4px, 1vw, 9px) clamp(10px, 2vw, 18px) clamp(9px, 1.5vw, 15px);
}
.scroll-paper-content::-webkit-scrollbar { width: 9px; }
.scroll-paper-content::-webkit-scrollbar-track { background: rgba(91,57,26,.08); border-radius: 99px; }
.scroll-paper-content::-webkit-scrollbar-thumb { border: 2px solid rgba(225,196,145,.72); border-radius: 99px; background: linear-gradient(#8a683d, #4d321a); }
.scroll-control {
  position: absolute;
  z-index: 5;
  display: grid;
  place-items: center;
  width: clamp(34px, 6.2vw, 44px);
  height: clamp(34px, 6.2vw, 44px);
  border: 2px solid #92969c;
  border-radius: 50%;
  color: #fff7e5;
  background: radial-gradient(circle at 34% 28%, #73777d, #26292d 64%, #111315);
  box-shadow: inset 0 0 0 2px rgba(15,16,18,.78), 0 6px 15px rgba(0,0,0,.45);
  font-family: Georgia, serif;
  font-weight: 700;
  line-height: 1;
  text-shadow: 0 2px 3px #000;
  opacity: 0;
  pointer-events: none;
  transform: scale(.86);
  transition: opacity .18s ease, transform .18s ease, filter .15s ease;
}
.scroll-modal.is-ready .scroll-control { opacity: 1; pointer-events: auto; transform: none; }
.scroll-control:hover { transform: translateY(1px) scale(.97); filter: brightness(1.16); }
.scroll-control:focus-visible { outline: 3px solid #f2d680; outline-offset: 3px; }
.scroll-close { right: .5%; font-size: clamp(1.4rem, 4vw, 1.9rem); }
.scroll-dialog[data-scroll-size='full'] .scroll-control { top: 3.5%; }
.scroll-dialog[data-scroll-size='compact'] .scroll-control { top: 19%; }
.scroll-copy { min-height: 100%; padding: 2px 0 10px; }
.scroll-copy-compact { display: grid; align-content: center; justify-items: center; min-height: 100%; padding: 0; }
.scroll-copy .eyebrow {
  margin-bottom: 6px;
  color: #6b4d27;
  font-size: clamp(.82rem, 1.55vw, 1rem);
  font-weight: 800;
  letter-spacing: .075em;
  text-shadow: none;
}
.scroll-copy h2 {
  margin: 0 0 9px;
  color: #281a0f;
  font-size: clamp(1.45rem, 4.5vw, 2.55rem);
  line-height: .98;
  text-wrap: balance;
}
.scroll-copy-compact h2 { font-size: clamp(1.24rem, 4vw, 2rem); }
.scroll-copy p { margin: 0 0 13px; color: #332719; font-size: clamp(.98rem, 1.7vw, 1.1rem); font-weight: 600; line-height: 1.55; }
.scroll-copy-compact p { max-width: 96%; margin-bottom: 10px; font-size: clamp(.9rem, 1.65vw, 1.03rem); line-height: 1.43; }
.scroll-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 15px;
  padding-bottom: 2px;
}
.scroll-actions .btn { min-width: min(100%, 220px); min-height: 52px; padding: 10px 18px; font-size: clamp(1rem, 1.9vw, 1.16rem); line-height: 1.02; }
.scroll-copy-compact .scroll-actions { margin-top: 5px; gap: 5px; }
.scroll-copy-compact .scroll-actions .btn { min-width: min(100%, 190px); min-height: 48px; padding: 9px 14px; font-size: clamp(.92rem, 1.55vw, 1.05rem); }
.scroll-private-status {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 0 0 8px;
  padding: 6px 12px;
  border: 1px solid rgba(91,61,26,.3);
  border-radius: 999px;
  background: rgba(255,248,225,.46);
}
.scroll-private-status img { width: 24px; height: 24px; object-fit: contain; }
.scroll-private-status strong { color: #2f2114; font-size: 1rem; }
.scroll-event-media {
  width: 100%;
  margin: 0 auto 14px;
  overflow: hidden;
  border: 3px solid rgba(89,61,30,.55);
  border-radius: 10px;
  background: #18251d;
  box-shadow: 0 8px 18px rgba(54,34,14,.22);
}
.scroll-event-media img { display: block; width: 100%; max-height: 190px; aspect-ratio: 16 / 9; object-fit: cover; }
.event-detail-date { color: #704c20 !important; font-weight: 800; }
.scroll-event-location { color: #304a38 !important; font-weight: 800; }
.scroll-event-description { white-space: pre-line; text-align: left; }
.day-events-note { margin-top: -2px !important; margin-bottom: 12px !important; }
.day-events-list { display: grid; gap: 10px; margin-top: 8px; }
.day-events-entry {
  display: grid;
  gap: 6px;
  width: 100%;
  padding: 12px 13px;
  border: 1px solid rgba(92,68,34,.26);
  border-radius: 13px;
  color: #261d12;
  background: rgba(255,252,240,.58);
  text-align: left;
  cursor: pointer;
  transition: transform .16s ease, border-color .16s ease, background .16s ease, box-shadow .16s ease;
}
.day-events-entry:hover { transform: translateY(-1px); border-color: rgba(103,73,34,.5); background: rgba(255,255,255,.82); box-shadow: 0 8px 18px rgba(0,0,0,.1); }
.day-events-entry:focus-visible { outline: 3px solid #83602c; outline-offset: 2px; }
.day-events-entry-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.day-events-entry strong { color: #25190f; font-family: var(--heading-font); font-size: clamp(1.06rem, 2.5vw, 1.45rem); font-weight: 400; line-height: 1.06; }
.day-events-time { color: #5f421d; font-size: .95rem; font-weight: 800; }
.day-events-location { color: #2d3d31; font-size: 1rem; font-weight: 800; }
.day-events-excerpt { color: #3b3125; font-size: .98rem; font-weight: 600; line-height: 1.48; }
.day-events-actions { margin-top: 15px; }
@keyframes scrollBackdropIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes scrollStageSettle { 0% { transform: scaleY(.985); } 100% { transform: scaleY(1); } }
@keyframes scrollArrival { from { opacity: 0; transform: translateY(18px) scale(.94); } to { opacity: 1; transform: none; } }
@keyframes scrollDeparture { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(10px) scale(.97); } }

.footer-legal a,
.footer-legal button { font-size: 1.02rem; }

/* Admin and media bank remain fully functional, with their own practical UI */
.admin-body { color: var(--ink); background: #eef0ea; }
.admin-body::before { display: none; }
.admin-body .btn {
  min-height: 42px;
  padding: 9px 15px;
  border: 1px solid #6d4b22;
  border-radius: 10px;
  color: #21180c;
  background: linear-gradient(var(--gold-bright), var(--gold));
  box-shadow: 0 3px 0 #6d4b22;
  filter: none;
}
.admin-body .btn.secondary { color: #fff; border-color: #081b13; background: var(--forest); box-shadow: 0 3px 0 #081b13; }
.admin-body .btn.ghost { color: var(--forest-dark); border-color: rgba(23,59,44,.35); background: transparent; box-shadow: none; }
.admin-body .btn.danger { color: #fff; border-color: #622016; background: var(--danger); box-shadow: none; }
.admin-body .btn.small { min-height: 36px; padding: 7px 12px; font-size: .86rem; }
.admin-top { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 13px 22px; color: #fff; background: var(--forest-dark); }
.admin-top .brand img { width: 58px; height: 58px; border-radius: 50%; object-fit: cover; }
.admin-top .brand strong { font-size: 1.3rem; }
.admin-shell { display: grid; grid-template-columns: 250px minmax(0, 1fr); min-height: calc(100vh - 84px); }
.admin-nav { padding: 20px 14px; color: #fff; background: var(--forest); }
.admin-nav button { width: 100%; margin-bottom: 5px; padding: 10px 12px; border: 0; border-radius: 8px; color: #fff; background: transparent; text-align: left; }
.admin-nav button.active,
.admin-nav button:hover { color: #281a0b; background: var(--gold-bright); }
.admin-nav-group + .admin-nav-group { margin-top: 18px; }
.admin-nav-group > p {
  margin: 0 8px 8px;
  color: #d9c789;
  font-size: .74rem;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.admin-page-shell { display: grid; gap: 18px; }
.admin-page-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 22px 24px;
  border: 1px solid rgba(54,78,62,.16);
  border-radius: 18px;
  background: linear-gradient(145deg, #fffdf7, #f4eedf);
  box-shadow: 0 14px 30px rgba(35,48,39,.1);
}
.admin-page-header h1 { margin: 2px 0 8px; font-size: clamp(2rem, 4vw, 3rem); }
.admin-page-header p:last-child { max-width: 780px; margin: 0; color: #514c43; line-height: 1.55; }
.admin-page-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 8px;
  border: 1px solid #d7cfba;
  border-radius: 14px;
  background: #fff;
}
.admin-page-tabs button {
  min-height: 42px;
  padding: 9px 15px;
  border: 1px solid transparent;
  border-radius: 9px;
  color: #284235;
  background: #edf0e9;
  font-weight: 800;
}
.admin-page-tabs button:hover,
.admin-page-tabs button.active { color: #241808; border-color: #9b7739; background: var(--gold-bright); }
.admin-page-tabs button:focus-visible { outline: 3px solid #1f5b42; outline-offset: 2px; }
.admin-tool-view { min-width: 0; }
.admin-page-shell .admin-tool-view > .admin-toolbar h1 { font-size: clamp(1.75rem, 3vw, 2.35rem) !important; }
.admin-dashboard-card { text-align: left; border: 1px solid rgba(110,79,37,.25); cursor: pointer; }
.admin-dashboard-card:hover { transform: translateY(-2px); }
.media-field-preview video { width: 100%; max-height: 280px; background: #161916; }
.admin-main { min-width: 0; padding: 28px; overflow: hidden; }
.admin-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.admin-table-wrap { overflow: auto; border-radius: 14px; background: #fff; box-shadow: var(--shadow); }
.admin-table { width: 100%; min-width: 820px; border-collapse: collapse; }
.admin-table th,
.admin-table td { padding: 12px 14px; border-bottom: 1px solid #e8e8e1; text-align: left; vertical-align: top; }
.admin-table th { position: sticky; top: 0; color: #43351d; background: #f7f1df; }
.admin-table td { max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-actions { display: flex; gap: 7px; }
.admin-modal { position: fixed; inset: 0; z-index: 100; display: none; place-items: center; padding: 18px; background: rgba(6,18,13,.72); }
.admin-modal.open { display: grid; }
.admin-modal-card { width: min(760px, 100%); max-height: calc(100vh - 36px); overflow: auto; padding: 26px; border-radius: 18px; background: #fffaf0; }
.admin-schedule-panel { padding: 20px; border-radius: 18px; background: #fff; box-shadow: var(--shadow); }
.admin-calendar-head { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px; margin-bottom: 12px; }
.admin-calendar-head h2 { margin: 0; text-align: center; }
.admin-calendar-weekdays, .admin-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.admin-calendar-weekdays span { padding: 8px 4px; color: #fff; background: var(--forest); font-weight: 700; text-align: center; }
.admin-calendar-grid { border-top: 1px solid #d9d6ca; border-left: 1px solid #d9d6ca; }
.admin-calendar-day { min-height: 112px; padding: 7px; border-right: 1px solid #d9d6ca; border-bottom: 1px solid #d9d6ca; background: #fffdf8; }
.admin-calendar-day.muted { background: #f1f1ed; }
.admin-calendar-date { display: grid; place-items: center; width: 30px; height: 30px; margin-bottom: 5px; border: 0; border-radius: 50%; color: var(--forest-dark); background: #e8eadf; font-weight: 700; }
.admin-calendar-date:hover { color: #fff; background: var(--forest); }
.admin-calendar-events { display: grid; gap: 4px; }
.admin-calendar-event { width: 100%; overflow: hidden; padding: 5px 7px; border: 0; border-radius: 7px; color: #fff; font-size: .78rem; line-height: 1.2; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.admin-calendar-event.public { background: var(--forest-soft); }
.admin-calendar-event.private { background: var(--purple-soft); }
.admin-calendar-key { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; color: #514c43; font-size: .9rem; }
.admin-calendar-key span { display: inline-flex; align-items: center; gap: 6px; }
.admin-calendar-key i { width: 12px; height: 12px; border-radius: 50%; }
.admin-calendar-key i.public { background: var(--forest-soft); }
.admin-calendar-key i.private { background: var(--purple-soft); }
.admin-upcoming-heading { margin-top: 28px; }
.event-admin-intro { margin-bottom: 18px; padding: 14px 16px; border-left: 5px solid var(--gold); border-radius: 10px; background: #f3ead3; }
.event-admin-intro p { margin: 0; }
.event-active-toggle { display: inline-flex; align-items: center; gap: 10px; }
.event-active-toggle input { width: auto; }
.event-admin-form small { display: block; color: #696155; line-height: 1.35; }
.private-event-form [name="ticket_url"], .private-event-form [name="details"] { opacity: .58; }
.admin-events-table td { white-space: normal; }

.admin-login { min-height: 100vh; display: grid; place-items: center; padding: 20px; color: #fff; background: linear-gradient(135deg, var(--forest-dark), var(--forest)); }
.admin-login-card { width: min(470px, 100%); padding: 34px; border-radius: 22px; color: var(--ink); background: var(--parchment); box-shadow: 0 30px 80px rgba(0,0,0,.35); }
.media-upload { margin-bottom: 22px; }
.media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 14px; }
.media-card { padding: 12px; border-radius: 14px; background: #fff; box-shadow: var(--shadow); }
.media-card img,
.media-card video { width: 100%; aspect-ratio: 1; border-radius: 10px; object-fit: cover; background: #ddd; }
.media-bank-tools { display: grid; grid-template-columns: minmax(0,1fr) minmax(210px,.35fr); gap: 14px; margin-bottom: 18px; }
.media-field { display: grid; gap: 10px; padding: 12px; border: 1px solid #d8c797; border-radius: 14px; background: rgba(255,255,255,.55); }
.media-field-preview { display: grid; place-items: center; min-height: 150px; overflow: hidden; border: 1px dashed #bca674; border-radius: 11px; color: #6b624f; background: #f7f1df; }
.media-field-preview img { width: 100%; max-height: 260px; object-fit: contain; background: #e8e1cf; }
.media-field-selected { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 1px solid #e2d4aa; border-radius: 10px; background: #fffaf0; }
.media-field-selected strong { color: #3f2b16; overflow-wrap: anywhere; }
.media-field-selected span { color: #6b624f; font-size: .88rem; text-align: right; }
.media-field-actions { flex-wrap: wrap; }
.media-picker-modal { z-index: 130; }
.media-picker-card { width: min(1180px,100%); }
.picker-layout { display: grid; grid-template-columns: minmax(0,1.55fr) minmax(280px,.65fr); gap: 20px; align-items: start; }
.picker-grid { max-height: 58vh; overflow: auto; padding: 4px; }
.picker-upload-panel { position: sticky; top: 0; }
.media-card.selectable { padding: 9px; }
.media-select-button { width: 100%; padding: 0; overflow: hidden; border: 0; border-radius: 10px; color: #fff; background: var(--forest); font-weight: 700; text-align: center; }
.media-select-button img { border-radius: 0; }
.media-select-button span { display: block; padding: 8px; }
.media-select-button:hover,
.media-select-button:focus { outline: 3px solid var(--gold); }
.qr-card { width: min(420px, 100%); margin: 20px auto; padding: 24px; border: 5px double var(--oak); border-radius: 18px; background: var(--parchment); text-align: center; }
.qr-card canvas { max-width: 100%; height: auto; margin: 14px auto; padding: 10px; background: #fff; }

@media (max-width: 1120px) {
  :root { --section-banner-height: 204px; --section-banner-half: 102px; }
  .menu-bar { grid-template-columns: minmax(250px, 1fr) auto; padding-inline: 26px; }
  .header-left-cluster { padding-left: 108px; }
  .header-crest { width: 104px; height: 104px; top: 0; }
  .header-wordmark-main { font-size: clamp(1.65rem, 3.2vw, 2.45rem); }
  .header-right-cluster { gap: 10px; }
  .social-link { width: 42px; height: 42px; }
  .header-summon { min-width: 142px; padding-inline: 18px; }
  .menu-toggle { min-width: 108px; padding-inline: 15px; }
  .premium-hero-grid { grid-template-columns: minmax(290px, .9fr) minmax(340px, 1.1fr); gap: 28px; min-height: 490px; }
  .premium-hero h1 { font-size: clamp(3.7rem, 7.3vw, 5.35rem); }
  .hero-frame-stage { width: min(100%, 435px); }
  .premium-feature-band { grid-template-columns: repeat(2, minmax(0, 1fr)); min-height: 252px; padding: 44px 44px 48px; }
  .premium-feature-band a + a { border-left: 0; }
  .premium-feature-band a:nth-child(even) { border-left: 1px solid rgba(226,223,227,.24); }
  .premium-feature-band a:nth-child(n+3) { border-top: 1px solid rgba(226,223,227,.2); }
  .hero-scene-strip { height: calc(var(--section-banner-half) + 25px); }
  .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-calendar-weekdays span { font-size: .72rem; }
  .admin-calendar-day { min-height: 82px; padding: 4px; }
  .admin-calendar-date { width: 25px; height: 25px; font-size: .8rem; }
  .admin-calendar-event { padding: 4px; font-size: .68rem; }
  .admin-shell { grid-template-columns: 1fr; }
  .admin-nav { display: block; overflow: visible; padding: 8px 10px; }
  .admin-nav-group { display: flex; align-items: center; gap: 5px; overflow-x: auto; padding: 4px 0; scrollbar-width: thin; }
  .admin-nav-group + .admin-nav-group { margin-top: 4px; }
  .admin-nav-group > p { flex: 0 0 auto; margin: 0 8px 0 2px; }
  .admin-nav button { width: auto; flex: 0 0 auto; margin: 0; white-space: nowrap; }
}

@media (max-width: 800px) {
  :root { --header-height: 116px; }
  .container { width: min(100% - 28px, 1240px); }
  .menu-bar { gap: 8px; padding: 8px 16px 10px; }
  .header-left-cluster { min-height: 88px; padding-left: 88px; }
  .header-crest { width: 86px; height: 86px; top: 5px; }
  .header-wordmark-main { font-size: clamp(1.35rem, 4.2vw, 2rem); }
  .header-wordmark-sub { margin-top: 4px; font-size: .9rem; letter-spacing: .05em; }
  .header-right-cluster { gap: 7px; }
  .header-socials .socials { gap: 5px; }
  .social-link { width: 36px; height: 36px; padding: 4px; }
  .header-actions { gap: 5px; }
  .header-summon,
  .menu-toggle { min-height: 46px; font-size: .95rem; }
  .header-summon { min-width: 118px; padding-inline: 11px; }
  .menu-toggle { min-width: 88px; padding-inline: 9px; }
  .nav-sign { right: 5px; width: min(300px, calc(100vw - 10px)); height: 542px; }
  .nav-chain { top: -63px; width: 19px; height: 98px; }
  .nav-chain-left { left: 66px; }
  .nav-chain-right { right: 66px; }
  .nav-sign-panel { top: 24px; }
  .nav-sign a { min-height: 37px; font-size: 1.1rem; }
  .premium-hero-grid { grid-template-columns: minmax(245px, .88fr) minmax(310px, 1.12fr); min-height: 450px; padding-block: 27px 25px; }
  .premium-hero-copy { max-width: 470px; }
  .premium-hero h1 { font-size: clamp(3.15rem, 8vw, 4.35rem); }
  .hero-tagline { font-size: 1.12rem; }
  .premium-hero .lead { font-size: .98rem; }
  .hero-frame-stage { width: min(100%, 375px); }
  .hero-primary,
  .hero-secondary { min-width: 178px; min-height: 52px; padding-inline: 16px; font-size: .91rem; }
  .section-banner { padding-inline: 58px; }
  .schedule-preview-shell,
  .home-facts-shell,
  .section-content.split,
  .split { grid-template-columns: 1fr; }
  .schedule-preview-copy { order: 1; }
  .schedule-calendar-link { order: 2; width: min(100%, 680px); margin-inline: auto; }
  .section-content .feature-photo { justify-self: center; }
  .event-row { grid-template-columns: 1fr; }
  .event-list-scroll { max-height: none; padding-right: 0; }
  .footer-grid { grid-template-columns: 1.2fr 1fr; }
  .footer-about { grid-column: 1 / -1; }
  .footer-bottom { align-items: flex-start; flex-direction: column; }
  .footer-legal { justify-content: flex-start; }
  .cookie-banner { grid-template-columns: 1fr; gap: 15px; }
  .cookie-actions { justify-content: flex-start; }
  .media-bank-tools,
  .picker-layout { grid-template-columns: 1fr; }
  .picker-upload-panel { position: static; }
}

@media (max-width: 620px) {
  :root { --header-height: 132px; --section-banner-height: 184px; --section-banner-half: 92px; }
  body { font-size: 16px; }
  .menu-bar { grid-template-columns: minmax(142px, 1fr) auto; align-items: center; min-height: var(--header-height); padding: 7px 12px 9px; }
  .header-left-cluster { min-height: 102px; padding-left: 72px; }
  .header-crest { width: 75px; height: 75px; top: 17px; left: -3px; }
  .header-wordmark-main { font-size: clamp(1.15rem, 5.2vw, 1.55rem); line-height: .96; white-space: normal; }
  .header-wordmark-sub { font-size: .82rem; letter-spacing: .03em; }
  .header-right-cluster { display: grid; grid-template-columns: auto; justify-items: end; gap: 3px; }
  .header-socials .socials { gap: 4px; }
  .social-link { width: 31px; height: 31px; padding: 3px; }
  .header-summon,
  .menu-toggle { min-height: 41px; font-size: .86rem; }
  .header-summon { min-width: 104px; padding-inline: 8px; }
  .menu-toggle { min-width: 78px; padding-inline: 7px; }
  .nav-sign { top: calc(100% - 3px); right: 2px; width: min(288px, calc(100vw - 4px)); height: 520px; }
  .nav-chain { top: -55px; width: 18px; height: 87px; }
  .nav-chain-left { left: 62px; }
  .nav-chain-right { right: 62px; }
  .nav-sign-panel { top: 22px; }
  .nav-sign-scroll { inset: 17.1% 10.8% 11.6%; }
  .nav-sign a { min-height: 35px; padding-block: 4px; font-size: 1.05rem; }
  .premium-hero-grid { grid-template-columns: 1fr; gap: 16px; min-height: 0; padding: 28px 0 24px; }
  .premium-hero-copy { max-width: none; text-align: center; }
  .premium-hero h1 { max-width: none; font-size: clamp(3.35rem, 15vw, 4.8rem); }
  .hero-tagline,
  .premium-hero .lead { margin-inline: auto; }
  .hero-actions { justify-content: center; margin-top: 18px; }
  .hero-primary,
  .hero-secondary { min-width: 154px; min-height: 48px; padding: 9px 13px; font-size: .82rem; }
  .premium-hero-media { order: 2; }
  .hero-frame-stage { width: min(92vw, 365px); }
  .hero-sound-toggle { bottom: 10px; min-height: 35px; padding: 6px 10px 7px; font-size: .72rem; }
  .premium-feature-band { min-height: 244px; padding: 43px 12px 47px; }
  .premium-feature-band a { grid-template-columns: 48px minmax(0,1fr); min-height: 71px; gap: 7px; padding: 5px 7px; }
  .feature-icon { width: 48px; height: 48px; }
  .premium-feature-band strong { font-size: .87rem; line-height: 1.08; }
  .premium-feature-band small { display: none; }
  .hero-scene-strip { height: calc(var(--section-banner-half) + 21px); }
  .section-block { padding-top: calc(var(--section-banner-half) + 27px); }
  .section-banner { padding: 24px 42px; }
  .section-banner p { font-size: .72rem; }
  .section-banner h2 { font-size: clamp(1.56rem, 7.4vw, 2.18rem); line-height: .95; }
  .section-surface { padding-top: 21px; padding-bottom: calc(var(--section-banner-half) + 42px); }
  .section-content { width: min(100% - 26px, 1160px); }
  .calendar-legend-inner { grid-template-columns: 1fr; justify-items: center; gap: 15px; }
  .calendar-legend-title { white-space: normal; text-align: center; }
  .calendar-legend { width: min(680px, 100%); grid-template-columns: repeat(2, minmax(0,1fr)); }
  .calendar-legend-item { justify-content: center; }
  .event-row { grid-template-columns: 1fr; align-items: flex-start; }
  .ledger-event { width: 14px; height: 14px; padding: 1px; justify-content: center; border-radius: 50%; background: rgba(8,12,9,.7); box-shadow: 0 1px 3px rgba(0,0,0,.35); }
  .ledger-event img { width: 11px; height: 11px; }
  .ledger-event-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .section-intro { margin-bottom: 22px; font-size: 1.04rem; }
  .summon-signs-surface { padding-top: 10px; padding-bottom: calc(var(--section-banner-half) + 24px); }
  .summon-signs-grid,
  .merch-sign-grid,
  .realm-sign-grid { grid-template-columns: 1fr; gap: 18px; }
  .realm-sign-card { width: min(100%, 365px); }
  .summon-sign-card,
  .merch-sign-card { max-width: 355px; }
  .summon-sign-card { padding: 17% 14.5% 12.5%; }
  .summon-sign-copy { width: 90%; }
  .left-intro,
  .left-aligned { text-align: center; }
  .grid,
  .grid.two,
  .grid-two-compact,
  .single-column-grid,
  .footer-grid { grid-template-columns: 1fr; }
  .card,
  .panel,
  .parchment-card { padding: 23px; }
  .card-media { margin: -23px -23px 19px; }
  .page-hero { padding: calc(var(--header-height) + 51px) 0 46px; }
  .section { padding: 45px 0; }
  .form-grid { grid-template-columns: 1fr; }
  .field.full { grid-column: auto; }
  .footer-frame { padding-top: 88px; background-size: auto 100%; }
  .footer-about { grid-column: auto; }
  .cookie-banner { right: 8px; bottom: 8px; left: 8px; width: calc(100% - 16px); padding: 19px; }
  .cookie-banner h2 { font-size: 1.55rem; }
  .cookie-button { flex: 1 1 130px; }
  .cookie-option { align-items: flex-start; }
  .admin-main { padding: 18px 12px; }
  .admin-page-header { align-items: stretch; flex-direction: column; gap: 14px; padding: 18px; }
  .admin-page-header .btn { align-self: flex-start; }
  .admin-page-tabs { flex-wrap: nowrap; overflow-x: auto; }
  .admin-page-tabs button { flex: 0 0 auto; white-space: nowrap; }
  .admin-top { padding: 10px; }
  .admin-top .brand span { display: none; }
  .media-picker-card { padding: 16px; }
}

@media (max-width: 390px) {
  .container { width: calc(100% - 20px); }
  .header-left-cluster { padding-left: 65px; }
  .header-crest { width: 69px; height: 69px; top: 20px; }
  .header-wordmark-main { font-size: 1.12rem; }
  .header-wordmark-sub { font-size: .78rem; letter-spacing: .02em; }
  .header-summon { min-width: 96px; }
  .menu-toggle { min-width: 74px; }
  .hero-primary,
  .hero-secondary { min-width: 145px; }
  .premium-feature-band a { grid-template-columns: 43px minmax(0,1fr); }
  .feature-icon { width: 43px; height: 43px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  /* The menu sway and staged scroll opening are functional themed feedback,
     so they remain active instead of collapsing into an instant desktop swap. */
}


@media (max-width: 900px) {
  .calendar-legend-ribbon { min-height: 205px; padding-inline: 72px; }
  .calendar-legend-inner { grid-template-columns: 1fr; justify-items: center; gap: 14px; }
  .calendar-legend { width: min(680px, 100%); grid-template-columns: repeat(2, minmax(0,1fr)); }
  .events-page-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 620px) {
  .calendar-legend-wrap { margin-top: 0; }
  .calendar-legend-ribbon { min-height: 250px; padding: 43px 48px 46px; }
  .calendar-legend-inner { gap: 12px; }
  .calendar-legend-title { font-size: clamp(1.8rem, 8vw, 2.35rem); }
  .calendar-legend { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px 12px; }
  .calendar-legend-item { grid-template-columns: 34px minmax(0, auto); gap: 7px; font-size: clamp(.94rem, 4vw, 1.1rem); }
  .calendar-legend-item img { width: 34px; height: 34px; }
  .events-page-grid { grid-template-columns: 1fr; }
  .event-list-heading { align-items: flex-start; flex-direction: column; }
  .scroll-dialog { width: min(98vw, 53dvh, 500px); }
  .scroll-paper-content { padding-inline: 10px; padding-bottom: 22px; }
  .scroll-dialog[data-scroll-size='compact'] .scroll-paper-content { padding-inline: 8px; }
  .scroll-copy h2 { font-size: clamp(1.28rem, 6.2vw, 2.05rem); }
  .scroll-copy-compact h2 { font-size: clamp(1.05rem, 5vw, 1.55rem); }
  .scroll-copy-compact p { font-size: clamp(.84rem, 3.1vw, .96rem); line-height: 1.4; }
  .scroll-actions { gap: 7px; }
  .scroll-actions .btn { min-width: min(100%, 205px); min-height: 47px; padding: 9px 13px; font-size: .94rem; }
  .scroll-copy-compact .scroll-actions .btn { min-width: min(100%, 175px); min-height: 43px; padding: 8px 10px; font-size: .84rem; }
  .day-events-entry { padding: 9px 10px; }
  .day-events-excerpt { display: none; }
}

/* Reusable on-page scrolls: staged parchment opening as sections enter view */
.scroll-card-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: start;
  gap: clamp(18px, 2.4vw, 32px);
}
.inline-scroll {
  position: relative;
  isolation: isolate;
  width: min(100%, 430px);
  aspect-ratio: 375 / 115;
  margin-inline: auto;
  overflow: visible;
  color: #2d2116;
  transform: translateZ(0);
  transition: aspect-ratio .075s linear;
}
.inline-scroll[data-inline-scroll-stage='1'] { aspect-ratio: 375 / 115; }
.inline-scroll[data-inline-scroll-stage='2'] { aspect-ratio: 375 / 176; }
.inline-scroll[data-inline-scroll-stage='3'] { aspect-ratio: 375 / 282; }
.inline-scroll[data-inline-scroll-stage='4'] { aspect-ratio: 375 / 405; }
.inline-scroll[data-inline-scroll-stage='5'] { aspect-ratio: 375 / 666; }
.inline-scroll-stage-stack,
.inline-scroll-stage-image {
  position: absolute;
  inset-inline: 0;
  top: 0;
  width: 100%;
  height: auto;
  aspect-ratio: 375 / 666;
}
.inline-scroll-stage-stack {
  z-index: 1;
  pointer-events: none;
  filter: drop-shadow(0 16px 18px rgba(0,0,0,.36));
  transition: transform .075s linear;
  transform-origin: center top;
}
.inline-scroll[data-inline-scroll-stage='1'] .inline-scroll-stage-stack { transform: translateY(-41.6%) scaleX(.97) scaleY(.94); }
.inline-scroll[data-inline-scroll-stage='2'] .inline-scroll-stage-stack { transform: translateY(-36.9%) scaleX(.98) scaleY(.96); }
.inline-scroll[data-inline-scroll-stage='3'] .inline-scroll-stage-stack { transform: translateY(-27.8%) scaleX(.988) scaleY(.978); }
.inline-scroll[data-inline-scroll-stage='4'] .inline-scroll-stage-stack { transform: translateY(-17.9%) scaleX(.995) scaleY(.99); }
.inline-scroll[data-inline-scroll-stage='5'] .inline-scroll-stage-stack { transform: translateY(0) scale(1); }
.inline-scroll-stage-image {
  object-fit: contain;
  opacity: 0;
  transform: scaleY(.985);
  transform-origin: center;
  transition: opacity .045s linear;
  user-select: none;
}
.inline-scroll-stage-image.is-visible { opacity: 1; transform: scaleY(1); }
.inline-scroll.stage-settle .inline-scroll-stage-image.is-visible { animation: inlineScrollSettle .075s cubic-bezier(.2,.75,.25,1) both; }
.inline-scroll-viewport {
  position: absolute;
  inset: 10.7% 11.8% 10.5%;
  z-index: 2;
  overflow: hidden;
  opacity: 0;
  transform: translateY(-7px) scaleY(.92);
  transform-origin: 50% 0;
  pointer-events: none;
  touch-action: pan-y;
  transition: opacity .18s ease, transform .2s cubic-bezier(.18,.78,.24,1);
}
.inline-scroll.is-open .inline-scroll-viewport {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}
.inline-scroll[data-inline-scroll-target='4'] .inline-scroll-viewport { inset: 11.6% 12% 11.5%; }
.inline-scroll[data-inline-scroll-target='4'] .inline-scroll-content { padding: 8px 8px 10px; }
.inline-scroll-content {
  width: 100%;
  height: 100%;
  overflow-y: auto;
  overscroll-behavior-y: auto;
  touch-action: pan-y;
  -webkit-overflow-scrolling: touch;
  padding: clamp(10px, 1.7vw, 19px) clamp(8px, 1.4vw, 16px) clamp(14px, 2vw, 22px);
  scrollbar-width: thin;
  scrollbar-color: #76552d rgba(117,83,39,.09);
}
.inline-scroll-content::-webkit-scrollbar { width: 7px; }
.inline-scroll-content::-webkit-scrollbar-track { border-radius: 99px; background: rgba(117,83,39,.08); }
.inline-scroll-content::-webkit-scrollbar-thumb { border: 2px solid rgba(226,198,147,.75); border-radius: 99px; background: linear-gradient(#9a7545, #563819); }
.inline-scroll-card .inline-scroll-content { overflow: hidden; padding: 9px 8px 11px; }
.inline-scroll-card-body {
  display: flex;
  min-height: 100%;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: #2c2116;
  text-align: center;
}
.inline-scroll-card-body h3 {
  margin: 0;
  color: #2b1d12;
  font-size: clamp(1.25rem, 2vw, 1.72rem);
  line-height: 1.05;
  text-wrap: balance;
}
.inline-scroll-card-body p { margin: 0; }
.scroll-card-kicker,
.scroll-card-meta {
  color: #704d24;
  font-size: clamp(.72rem, 1vw, .84rem);
  font-weight: 800;
  letter-spacing: .085em;
  line-height: 1.22;
  text-transform: uppercase;
}
.scroll-card-copy {
  color: #3b3024;
  font-size: clamp(.9rem, 1.25vw, 1.02rem);
  font-weight: 600;
  line-height: 1.46;
}
.scroll-card-date {
  color: #6a451c;
  font-size: clamp(.77rem, 1.05vw, .9rem);
  font-weight: 850;
  line-height: 1.32;
}
.scroll-card-location { color: #2d4936; font-size: .96rem; font-weight: 800; line-height: 1.32; }
.scroll-card-price { color: #6f4412; font-family: var(--heading-font); font-size: clamp(1.22rem, 1.8vw, 1.55rem); }
.scroll-card-emblem {
  display: grid;
  place-items: center;
  width: 58px;
  height: 58px;
  flex: 0 0 auto;
  border: 1px solid rgba(104,70,30,.24);
  border-radius: 50%;
  background: rgba(255,248,225,.48);
  box-shadow: inset 0 0 0 3px rgba(100,66,28,.08);
}
.scroll-card-emblem img { width: 39px; height: 39px; object-fit: contain; }
.scroll-card-media {
  width: min(82%, 230px);
  max-height: 31%;
  aspect-ratio: 4 / 3;
  margin: 0 auto 2px;
  overflow: hidden;
  border: 3px double rgba(101,72,36,.58);
  border-radius: 10px;
  background: #d7bd85;
  box-shadow: 0 6px 12px rgba(72,45,19,.22);
}
.scroll-card-media img { width: 100%; height: 100%; object-fit: cover; }
button.scroll-card-media { padding: 0; cursor: pointer; }
.inline-scroll-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  width: 100%;
  margin-top: auto;
  padding-top: 5px;
}
.inline-scroll-actions .btn {
  min-width: min(100%, 190px);
  min-height: 45px;
  padding: 8px 13px;
  font-size: clamp(.82rem, 1.15vw, .97rem);
}
.inline-scroll-event-card.is-next-event .scroll-card-kicker { color: #5c3510; }
.event-scroll-card-body { gap: 6px; }
.event-scroll-card-body .event-type-pill { margin: 0; }
.event-scroll-card-body .scroll-card-copy {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}
.inline-scroll-event-card.has-event-image .event-scroll-card-body .scroll-card-copy { -webkit-line-clamp: 2; }
.event-scroll-media { max-height: 21%; }
.review-scroll-card-body .review-stars { margin: 0; font-size: 1.13rem; }
.review-scroll-copy { font-style: italic; }
.inline-scroll-review-card .review-scroll-copy,
.inline-scroll-fact-card .fact-scroll-copy {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}
.inline-scroll-review-card,
.inline-scroll-fact-card,
.inline-scroll-dislike-card { width: min(100%, 395px); }
.inline-scroll-review-card .scroll-card-media { max-height: 24%; }
.inline-scroll-review-card .inline-scroll-card-body,
.inline-scroll-fact-card .inline-scroll-card-body { gap: 6px; }
.scroll-review-full { font-size: clamp(1rem, 1.8vw, 1.18rem); line-height: 1.68; white-space: pre-line; }
.scroll-review-detail .review-stars { font-size: 1.35rem; }
.scroll-fact-detail > p:not(.eyebrow) { font-size: clamp(1rem, 1.8vw, 1.18rem); line-height: 1.68; white-space: pre-line; }
.merch-scroll-media { max-height: 36%; aspect-ratio: 1; }
.fact-scroll-card-body,
.review-scroll-card-body { justify-content: center; }
.dislike-scroll-card-body h3 { max-width: 94%; font-size: clamp(1.36rem, 2.2vw, 1.88rem); }
.scroll-group-heading {
  max-width: 820px;
  margin: 0 auto 18px;
  color: #fff;
  text-align: center;
  text-shadow: 0 2px 4px rgba(0,0,0,.55);
}
.scroll-group-heading h3 { margin-bottom: 8px; color: #fff; font-size: clamp(2rem, 3.5vw, 3rem); }
.scroll-group-heading p { margin: 0; color: #f2e9f4; }
.scroll-group-heading .eyebrow { color: #f0d88e; }
.scroll-group-heading-secondary { margin-top: 42px; }
.fact-scroll-grid,
.dislike-scroll-grid { max-width: 930px; margin-inline: auto; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.schedule-preview-copy { justify-items: center; }
.schedule-preview-label { color: #f1d994 !important; text-align: center; }
.event-teaser-list { width: min(100%, 430px); }
.inline-scroll-next-event { width: min(100%, 420px); }
.inline-scroll-next-event .inline-scroll-card-body h3 { font-size: clamp(1.36rem, 2.3vw, 1.92rem); }
.home-events-grid,
.review-scroll-grid,
.merch-scroll-grid,
.schedule-event-scroll-grid { margin-inline: auto; }
.schedule-event-scroll-grid { max-width: 1180px; }
.home-page .surface-green .section-intro {
  color: #fff8e8;
  text-shadow: 0 2px 4px rgba(0,0,0,.52);
}

/* Full-page scroll forms */
.form-shell { max-width: 1000px; }
.inline-scroll-form { width: min(100%, 930px); max-width: none; }
.inline-scroll-form .inline-scroll-stage-stack { filter: drop-shadow(0 18px 22px rgba(0,0,0,.42)); }
.inline-scroll-form .inline-scroll-viewport { inset: 8.8% 10.4% 9.1%; }
.inline-scroll-form .inline-scroll-content { padding: clamp(18px, 3vw, 45px) clamp(16px, 4.2vw, 55px) clamp(24px, 4vw, 52px); }
.scroll-form { width: 100%; min-height: 100%; color: #2d2419; }
.scroll-form .form-grid { gap: clamp(11px, 1.7vw, 18px); }
.scroll-form .field { align-content: start; gap: 5px; }
.scroll-form label { color: #332516; font-family: var(--heading-font); font-size: clamp(.92rem, 1.25vw, 1.08rem); font-weight: 700; }
.scroll-form input,
.scroll-form select,
.scroll-form textarea {
  min-height: 47px;
  border-color: #b48e50;
  background: rgba(255,253,247,.92);
  box-shadow: inset 0 1px 4px rgba(93,60,22,.08);
}
.scroll-form textarea { min-height: 125px; }
.scroll-form small { color: #614c32; font-weight: 650; }
.scroll-form .field.full:last-child { align-items: center; justify-items: center; }
.scroll-form .field.full:last-child .btn { width: min(100%, 500px); }
.inline-scroll-contact-form,
.inline-scroll-review-form,
.inline-scroll-collaborate-form { width: min(100%, 760px); }
.scroll-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: start;
  gap: clamp(24px, 4vw, 50px);
  width: min(100% - 32px, 1500px);
  margin-inline: auto;
}
.scroll-form-grid .inline-scroll-form { width: min(100%, 720px); }
.scroll-form h2 { margin: 0 0 5px; color: #2b1d12; text-align: center; }
.scroll-form-intro { max-width: 620px; margin: 0 auto 18px; color: #5a4329; font-weight: 650; line-height: 1.5; text-align: center; }
.field-optional { color: #725d40; font-family: var(--body-font); font-size: .78em; font-weight: 700; }
.scroll-form .checkbox-field { display: block; }
.scroll-form .checkbox-field label { display: flex; align-items: flex-start; gap: 9px; font-family: var(--body-font); line-height: 1.4; }
.scroll-form .checkbox-field input { width: auto; min-height: 0; margin-top: 3px; }
.inline-scroll-contact-form .scroll-form { display: grid; align-content: center; }
.inline-scroll-contact-form textarea { min-height: 180px; }

@keyframes inlineScrollSettle {
  from { transform: scaleY(.982); }
  to { transform: scaleY(1); }
}

@media (max-width: 980px) {
  .video-frame-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .scroll-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .schedule-preview-shell { grid-template-columns: 1fr; }
  .schedule-preview-copy { order: 1; }
  .schedule-calendar-link { order: 2; }
}

@media (max-width: 620px) {
  .video-frame-grid { grid-template-columns: 1fr; gap: 14px; }
  .showcase-frame-card { width: min(100%, 372px); }
  .showcase-sign-shell { width: min(92%, 322px); margin-top: -68px; }
  .showcase-sign-copy { inset: 21.5% 11% 9%; gap: 8px; }
  .showcase-sign-description { font-size: .9rem; }
  .scroll-card-grid,
  .fact-scroll-grid,
  .dislike-scroll-grid { grid-template-columns: 1fr; gap: 12px; }
  .inline-scroll { width: min(100%, 390px); }
  .inline-scroll-content { padding: 8px 7px 14px; }
  .inline-scroll-card-body { gap: 6px; }
  .inline-scroll-card-body h3 { font-size: clamp(1.2rem, 5.6vw, 1.55rem); }
  .scroll-card-copy { font-size: clamp(.86rem, 3.8vw, .98rem); line-height: 1.4; }
  .scroll-card-media { width: min(80%, 210px); }
  .inline-scroll-actions .btn { min-height: 42px; padding: 7px 10px; font-size: .82rem; }
  .scroll-group-heading-secondary { margin-top: 30px; }
  .inline-scroll-form { width: min(100%, 520px); }
  .inline-scroll-form .inline-scroll-viewport { inset: 9.6% 10.8% 10%; }
  .inline-scroll-form .inline-scroll-content { padding: 14px 10px 22px; }
  .scroll-form .form-grid { grid-template-columns: 1fr; gap: 12px; }
  .scroll-form .field.full { grid-column: auto; }
  .scroll-form input,
  .scroll-form select,
  .scroll-form textarea { min-height: 44px; padding: 9px 10px; }
  .scroll-form textarea { min-height: 120px; }
  .inline-scroll-contact-form textarea { min-height: 145px; }
  .scroll-form-grid { grid-template-columns: 1fr; width: min(100% - 20px, 720px); gap: 22px; }
  .scroll-form-grid .inline-scroll-form { width: min(100%, 520px); }
  .inline-scroll-review-card .review-scroll-copy,
  .inline-scroll-fact-card .fact-scroll-copy { -webkit-line-clamp: 3; }
}

/* Let visitors keep scrolling the page while the pointer is over decorative scroll cards. */
.inline-scroll-card .inline-scroll-viewport,
.inline-scroll-card .inline-scroll-content,
.inline-scroll-card .inline-scroll-card-body,
.inline-scroll-card .scroll-card-media,
.inline-scroll-card .scroll-card-media img,
.inline-scroll-card .scroll-card-emblem,
.inline-scroll-card .scroll-card-emblem img {
  pointer-events: none;
  touch-action: pan-y;
  user-select: none;
}
.inline-scroll-card a,
.inline-scroll-card button,
.inline-scroll-card .inline-scroll-actions {
  pointer-events: auto;
}
.inline-scroll-form .inline-scroll-content {
  overscroll-behavior: auto;
  scrollbar-gutter: stable;
}
.media-field-preview a {
  display: grid;
  place-items: center;
  gap: 4px;
  width: 100%;
  min-height: 150px;
  padding: 18px;
  color: #3f2b16;
  font-weight: 800;
  text-align: center;
}
.media-field-preview a small { color: #6b624f; font-weight: 650; }
.media-field[data-kind='all'] > input[data-media-value] { width: 100%; }
.merch-scroll-card-body .scroll-card-copy {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

/* Final public readability and contrast pass — July 2026 */
body:not(.admin-body) {
  font-size: 18px;
  line-height: 1.65;
}

/* Every interior page alternates the supplied green and purple textures. */
.site-page main > .section:nth-of-type(even) {
  color: #fff9ed;
  background:
    linear-gradient(rgba(4, 16, 10, .22), rgba(4, 16, 10, .22)),
    url('/assets/brand/section-texture-green-v2.webp') center / cover no-repeat;
}
.site-page main > .section:nth-of-type(odd) {
  color: #fff9ed;
  background:
    linear-gradient(rgba(22, 7, 29, .24), rgba(22, 7, 29, .24)),
    url('/assets/brand/section-texture-purple-v2.webp') center / cover no-repeat;
}
.site-page main > .section .section-title,
.site-page main > .section .section-mini-title,
.site-page main > .section .centered-title,
.site-page main > .section .event-list-heading > div,
.site-page main > .section .split > :not(.panel):not(.card):not(.parchment-card):not(.feature-photo),
.site-page main > .section > .container > :is(h2, h3, p) {
  color: #fff9ed;
}
.site-page main > .section .section-title :is(h2, h3, p),
.site-page main > .section .section-mini-title :is(h2, h3, p),
.site-page main > .section .centered-title :is(h2, h3, p),
.site-page main > .section .event-list-heading > div :is(h2, h3, p),
.site-page main > .section .split > :not(.panel):not(.card):not(.parchment-card):not(.feature-photo) :is(h2, h3, p, li) {
  color: inherit;
  text-shadow: 0 2px 4px rgba(0, 0, 0, .78);
}
.site-page main > .section .eyebrow,
.home-page .section-block .eyebrow {
  color: #f5dda0;
  text-shadow: 0 2px 4px rgba(0, 0, 0, .88);
}

/* Parchment and card surfaces always return to dark ink. */
.site-page :is(.card, .panel, .parchment-card, .legal-copy, .draft),
.home-page :is(.summon-sign-card, .realm-sign-card) {
  color: #251c12;
  text-shadow: none;
}
.site-page :is(.card, .panel, .parchment-card, .legal-copy, .draft) :is(h2, h3, p, li, small, strong),
.home-page :is(.summon-sign-card, .realm-sign-card) :is(h2, h3, p, li, small, strong) {
  text-shadow: none;
}
.site-page :is(.card, .panel, .parchment-card, .legal-copy, .draft) .eyebrow,
.home-page :is(.summon-sign-card, .realm-sign-card) .eyebrow {
  color: #654319;
  text-shadow: none;
}

/* Green homepage sections use light text just like the purple sections. */
.home-page .surface-green {
  color: #fff9ed;
}
.home-page .surface-green .section-intro,
.home-page .surface-green .scroll-group-heading p,
.home-page .surface-green .schedule-preview-copy {
  color: #fff9ed;
  text-shadow: 0 2px 4px rgba(0, 0, 0, .78);
}
.home-page .surface-green .feature-bullet-list li {
  color: #fff9ed;
  text-shadow: 0 2px 3px rgba(0, 0, 0, .76);
}
.home-page .surface-purple .section-intro,
.home-page .surface-purple .scroll-group-heading p {
  color: #fff9ed;
  text-shadow: 0 2px 4px rgba(0, 0, 0, .76);
}
.section-intro {
  font-size: clamp(1.15rem, 1.6vw, 1.34rem);
  font-weight: 650;
  line-height: 1.62;
}
.section-banner p {
  color: #fff8ea;
  font-size: clamp(.92rem, 1.1vw, 1.05rem);
  font-weight: 700;
  text-shadow: 0 2px 4px rgba(0, 0, 0, .95);
}
.section-banner h2 {
  text-shadow: 0 3px 5px rgba(0, 0, 0, .98);
}
.premium-feature-band small {
  color: #f1e8f4;
  font-size: clamp(.96rem, 1.05vw, 1.04rem);
  font-weight: 650;
  text-shadow: 0 2px 3px rgba(0, 0, 0, .9);
}

/* Strong, consistent lettering on every public illustrated button. */
.home-page .btn,
.site-page .btn {
  min-height: 58px;
  padding: 12px 27px;
  color: #fff;
  font-size: clamp(1.22rem, 1.45vw, 1.38rem);
  font-weight: 700;
  line-height: 1.06;
  letter-spacing: .022em;
  text-shadow:
    -1px -1px 0 #0c0906,
     1px -1px 0 #0c0906,
    -1px  1px 0 #0c0906,
     1px  1px 0 #0c0906,
     0 3px 3px rgba(0, 0, 0, .98),
     0 0 8px rgba(0, 0, 0, .48);
}
.home-page .btn.small,
.site-page .btn.small {
  min-height: 50px;
  padding: 9px 18px;
  font-size: clamp(1.02rem, 1.2vw, 1.16rem);
}
.home-page .hero-secondary,
.site-page .hero-secondary,
.home-page .btn.secondary,
.site-page .btn.secondary,
.home-page .btn.green,
.site-page .btn.green,
.home-page .btn.danger,
.site-page .btn.danger {
  color: #fff;
  text-shadow:
    -1px -1px 0 #0c0906,
     1px -1px 0 #0c0906,
    -1px  1px 0 #0c0906,
     1px  1px 0 #0c0906,
     0 3px 3px rgba(0, 0, 0, .98),
     0 0 8px rgba(0, 0, 0, .46);
}
.inline-scroll-actions .btn,
.scroll-actions .btn {
  min-height: 49px;
  padding: 9px 15px;
  font-size: clamp(1rem, 1.16vw, 1.13rem);
}
.cookie-button {
  min-height: 48px;
  font-size: 1.05rem;
  text-shadow: 0 2px 3px rgba(0, 0, 0, .92);
}

/* Small public copy gets a little more size and stronger ink. */
.scroll-card-kicker,
.scroll-card-meta,
.scroll-card-date {
  font-size: clamp(.82rem, 1.05vw, .94rem);
}
.scroll-card-copy {
  color: #30271d;
  font-size: clamp(.98rem, 1.25vw, 1.1rem);
  font-weight: 650;
  line-height: 1.48;
}
.scroll-card-location {
  color: #263e2f;
  font-size: 1.02rem;
}
.event-type-pill {
  color: #3e2b17;
  font-size: .98rem;
}
.card-meta {
  color: #674716;
  font-size: .88rem;
}
.scroll-form label {
  color: #2d1f11;
  font-size: clamp(1rem, 1.25vw, 1.14rem);
}
.scroll-form small,
.field-optional {
  color: #5b452b;
  font-size: .88rem;
}

/* Positive, readable event-empty messaging. */
.site-page main > .section .empty-state,
.home-page .section-block .empty-state {
  color: #fff9ed;
  border-color: rgba(255, 244, 212, .5);
  background: rgba(7, 12, 9, .55);
  font-size: 1.08rem;
  font-weight: 650;
  text-shadow: 0 2px 3px rgba(0, 0, 0, .82);
}
.event-empty-state {
  display: grid;
  justify-items: center;
  gap: 10px;
  width: min(760px, 100%);
  margin-inline: auto;
}
.event-empty-state strong {
  color: #fff;
  font-family: var(--heading-font);
  font-size: clamp(1.5rem, 2.3vw, 2rem);
  font-weight: 400;
}
.event-empty-state span {
  max-width: 620px;
}
.inline-scroll-schedule-invite {
  width: min(100%, 440px);
}
.schedule-invite-card {
  gap: 9px;
}
.schedule-invite-card h3 {
  font-size: clamp(1.42rem, 2.25vw, 2rem);
}
.schedule-invite-card .scroll-card-copy {
  max-width: 340px;
}

.schedule-invite-photo {
  position: relative;
  width: min(88%, 310px);
  aspect-ratio: 4 / 3;
  margin: 2px auto 5px;
  overflow: visible;
  border: 4px double rgba(92, 65, 31, .78);
  border-radius: 22px 22px 15px 15px;
  background: #332317;
  box-shadow: 0 9px 16px rgba(67, 40, 16, .3), inset 0 0 0 2px rgba(245, 223, 171, .2);
}
.schedule-invite-photo > img {
  width: 100%;
  height: 100%;
  display: block;
  border-radius: 17px 17px 10px 10px;
  object-fit: cover;
  object-position: 50% 50%;
}
.schedule-invite-photo > span {
  position: absolute;
  right: -11px;
  bottom: -11px;
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border: 2px solid rgba(105, 74, 34, .68);
  border-radius: 50%;
  background: radial-gradient(circle at 35% 28%, #f7e8bd, #b68945 68%, #69451f);
  box-shadow: 0 5px 10px rgba(63, 38, 15, .3);
}
.schedule-invite-photo > span img {
  width: 29px;
  height: 29px;
  object-fit: contain;
}

/* Footer and legal links stay legible on textured backgrounds. */
.site-footer,
.site-footer a,
.site-footer button,
.site-footer p {
  text-shadow: 0 2px 3px rgba(0, 0, 0, .86);
}
.site-footer a,
.site-footer button {
  color: #f3e4bd;
  font-size: 1.08rem;
}
.footer-about p {
  color: #f2e8d4;
}
.legal-copy a {
  color: #174d37;
  text-decoration-thickness: 2px;
  text-underline-offset: 2px;
}

@media (max-width: 620px) {
  body:not(.admin-body) { font-size: 17px; }
  .home-page .btn,
  .site-page .btn {
    min-height: 54px;
    padding: 10px 18px;
    font-size: 1.12rem;
  }
  .home-page .btn.small,
  .site-page .btn.small,
  .inline-scroll-actions .btn,
  .scroll-actions .btn {
    min-height: 48px;
    font-size: 1rem;
  }
  .section-banner p { font-size: .88rem; }
  .scroll-card-copy { font-size: .96rem; }
}


/* Video-player alignment and dark-sign readability corrections — July 28, 2026 */
.home-page .summon-sign-card .eyebrow,
.home-page .summon-sign-yellow .eyebrow,
.home-page .summon-sign-red .eyebrow,
.home-page .summon-sign-green .eyebrow {
  color: #fff6dc;
  font-size: clamp(.82rem, 1vw, .96rem);
  text-shadow:
    -1px -1px 0 #0c0906,
     1px -1px 0 #0c0906,
    -1px  1px 0 #0c0906,
     1px  1px 0 #0c0906,
     0 2px 4px rgba(0,0,0,.98);
}
.showcase-frame-loading img {
  width: min(34%, 72px);
}
.showcase-frame-media video::-webkit-media-controls-panel {
  background: linear-gradient(transparent, rgba(0,0,0,.72));
}

/* Multiple-date booking, clearer admin typography, Cameo previews, and sign alignment — August 2026 */
.summon-date-manager {
  display: grid;
  gap: 12px;
  padding: 13px;
  border: 1px solid rgba(126, 87, 38, .32);
  border-radius: 14px;
  background: rgba(255, 248, 225, .42);
}
.summon-date-entry {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid rgba(126, 87, 38, .28);
  border-radius: 12px;
  background: rgba(255, 253, 246, .72);
}
.summon-date-entry + .summon-date-entry { margin-top: 10px; }
.summon-date-entry-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.summon-date-entry-head p {
  margin: 0;
  color: #493219;
  font-family: var(--heading-font);
  font-size: 1.08rem;
  font-weight: 700;
}
.summon-date-fields { gap: 10px 12px !important; }
.summon-add-date { justify-self: center; width: min(100%, 280px); }

.showcase-cameo-preview-link {
  display: block;
  width: 100%;
  height: 100%;
  background: #000;
}
.showcase-sign-copy {
  inset: 25% 11.5% 8.5%;
  justify-content: flex-start;
  gap: 8px;
}
.showcase-sign-text {
  display: grid;
  justify-items: center;
  gap: 8px;
  width: 100%;
  margin-top: 8px;
  text-align: center;
}
.showcase-sign-actions {
  width: 100%;
  margin-top: auto;
  padding-top: 5px;
}

.admin-body,
.admin-body button,
.admin-body input,
.admin-body select,
.admin-body textarea,
.admin-body table,
.admin-body h1,
.admin-body h2,
.admin-body h3,
.admin-body h4,
.admin-body p,
.admin-body label,
.admin-body small,
.admin-body a {
  font-family: "Segoe UI", Arial, Helvetica, sans-serif;
}
.admin-body {
  font-size: 16px;
  line-height: 1.5;
}
.admin-body small,
.admin-nav-group > p,
.admin-calendar-event,
.admin-calendar-key,
.media-field-selected span,
.admin-table th,
.admin-table td {
  font-size: .92rem;
  line-height: 1.45;
}
.admin-nav button,
.admin-page-tabs button,
.admin-body .btn.small { font-size: .95rem; }
.admin-calendar-event { font-size: .82rem; }
.event-admin-form small { font-size: .9rem; }

.event-date-manager {
  display: grid;
  gap: 12px;
  padding: 14px;
  border: 1px solid #d8c797;
  border-radius: 14px;
  background: #fffdf7;
}
.event-date-entry {
  display: grid;
  gap: 12px;
  padding: 14px;
  border: 1px solid #ded5c0;
  border-radius: 12px;
  background: #f6f1e5;
}
.event-date-entry + .event-date-entry { margin-top: 10px; }
.event-date-entry-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.event-date-entry-head .eyebrow { margin: 0 0 2px; color: #6c5228; }
.event-date-entry-head h3 { margin: 0; color: #263d31; font-size: 1.2rem; }
.event-date-fields { gap: 12px 14px; }
.event-add-date { justify-self: start; }

.summons-review-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.summons-review-grid .full { grid-column: 1 / -1; }
.summons-review-card {
  padding: 14px 16px;
  border: 1px solid #ddd2b8;
  border-radius: 12px;
  background: #fffdf7;
}
.summons-review-card h3 { margin: 2px 0 7px; color: #203d30; }
.summons-review-card p { margin: 0; color: #423b31; }
.summons-date-list { display: grid; gap: 6px; margin: 8px 0 0; padding-left: 22px; }
.summons-message { white-space: pre-wrap; line-height: 1.6; }
.admin-summons-table .admin-date-summary { min-width: 260px; white-space: normal; }
.admin-external-preview {
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 8px;
  width: 100%;
  min-height: 150px;
  color: #fff;
  background: #17120d;
  text-align: center;
  text-decoration: none;
}
.admin-external-preview img {
  width: 100%;
  max-height: 250px;
  object-fit: contain;
  background: #000;
}
.admin-external-preview span { padding: 8px 12px; font-weight: 700; }
.admin-external-preview-fallback { padding: 20px; }

@media (max-width: 620px) {
  .showcase-sign-copy { inset: 24.5% 11% 8%; }
  .showcase-sign-text { gap: 7px; margin-top: 5px; }
  .summon-date-fields { grid-template-columns: 1fr !important; }
  .summons-review-grid { grid-template-columns: 1fr; }
  .summons-review-grid .full { grid-column: auto; }
  .event-date-entry-head { align-items: flex-start; }
  .event-date-fields { grid-template-columns: 1fr !important; }
}

/* Unified multi-date events, Cameo still previews, and compact admin layout — August 2026 */
.event-detail-dates {
  width: min(100%, 520px);
  margin: 4px auto 14px;
  padding: 12px 14px;
  border: 1px solid rgba(102,72,35,.28);
  border-radius: 12px;
  background: rgba(255,248,225,.48);
}
.event-detail-dates-title {
  margin: 0 0 8px !important;
  color: #5f421d !important;
  font-size: .84rem !important;
  font-weight: 850 !important;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.event-detail-dates ul {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.event-detail-dates li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 9px;
  color: #2e2114;
  background: rgba(255,255,255,.58);
  text-align: left;
}
.event-detail-dates li strong { font-size: .98rem; line-height: 1.3; }
.event-detail-dates li span { color: #67491f; font-size: .92rem; font-weight: 800; white-space: nowrap; }

.showcase-cameo-preview-link {
  position: relative;
  overflow: hidden;
  cursor: pointer;
}
.showcase-cameo-resolved-still,
.showcase-cameo-branded-fallback .showcase-frame-media-asset {
  object-fit: cover;
  object-position: center;
}
.showcase-cameo-branded-fallback {
  background: radial-gradient(circle at 50% 24%, rgba(74,51,29,.8), #080604 72%);
}

.showcase-cameo-still-stack {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #000;
}
.showcase-cameo-still-poster,
.showcase-cameo-still-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.showcase-cameo-still-poster {
  z-index: 1;
}
.showcase-cameo-still-placeholder {
  background: radial-gradient(circle at 50% 24%, rgba(75,50,28,.72), #070504 72%);
}
.showcase-cameo-still-video {
  z-index: 2;
  opacity: 0;
  transition: opacity .18s ease;
}
.showcase-cameo-still-stack[data-cameo-frame-ready='true'] .showcase-cameo-still-video {
  opacity: 1;
}
.showcase-cameo-preview-link video,
.admin-cameo-still video {
  pointer-events: none;
}
.showcase-cameo-preview-label {
  position: absolute;
  right: 10px;
  bottom: 10px;
  z-index: 3;
  padding: 6px 9px;
  border: 1px solid rgba(255,255,255,.5);
  border-radius: 999px;
  color: #fff;
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .06em;
  text-transform: uppercase;
  background: rgba(12,9,7,.76);
  box-shadow: 0 4px 12px rgba(0,0,0,.34);
}
.admin-cameo-still { cursor: pointer; }
.admin-cameo-still video { width: 100%; max-height: 280px; object-fit: contain; background: #000; }

.admin-calendar-mobile-list { display: none; }
.admin-body { overflow-x: hidden; }
.admin-shell,
.admin-main,
.admin-page-shell,
.admin-tool-view,
.admin-toolbar,
.admin-toolbar > *,
.admin-page-header > * { min-width: 0; }
.admin-toolbar-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
}
.admin-body .btn,
.admin-body .btn.small,
.admin-nav button,
.admin-page-tabs button {
  font-weight: 800;
  line-height: 1.2;
  text-shadow: none;
  white-space: normal;
}
.admin-body .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.admin-body .btn.ghost {
  background: #f7f2e6;
}
.admin-body .btn.ghost:hover,
.admin-body .btn.ghost:focus-visible {
  color: #fff;
  background: var(--forest);
}
.admin-table td[data-label="Dates"],
.admin-date-summary { white-space: normal; }

.admin-agenda-day {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid #e2ded3;
}
.admin-agenda-date button {
  display: grid;
  width: 100%;
  gap: 1px;
  padding: 10px 8px;
  border: 1px solid #cfc7b6;
  border-radius: 10px;
  color: #173b2c;
  background: #f5f1e7;
  text-align: left;
}
.admin-agenda-date strong { font-size: .78rem; letter-spacing: .05em; text-transform: uppercase; }
.admin-agenda-date span { font-size: 1rem; font-weight: 800; }
.admin-agenda-date small { color: #6a5a42; font-size: .72rem; }
.admin-agenda-events { display: grid; align-content: center; gap: 6px; min-width: 0; }
.admin-agenda-events .admin-calendar-event {
  min-height: 38px;
  padding: 8px 10px;
  font-size: .92rem;
  white-space: normal;
}
.admin-agenda-empty { color: #777064; font-size: .9rem; }

@media (max-width: 900px) {
  .admin-top { flex-wrap: wrap; padding: 10px 14px; }
  .admin-top > div:last-child { display: flex; flex-wrap: wrap; gap: 8px; }
  .admin-main { padding: 18px 14px 24px; overflow: visible; }
  .admin-page-header { flex-direction: column; gap: 14px; padding: 18px; }
  .admin-toolbar { align-items: flex-start; }
  .admin-toolbar-actions { width: 100%; justify-content: flex-start; }
  .admin-nav-group { flex-wrap: wrap !important; overflow: visible !important; }
  .admin-nav { overflow: visible !important; }
  .admin-page-tabs { overflow: visible; }
  .admin-modal-card { width: min(720px, calc(100vw - 20px)); padding: 18px; }
}

@media (max-width: 760px) {
  .admin-calendar-weekdays,
  .admin-calendar-grid { display: none; }
  .admin-calendar-mobile-list { display: block; }
  .admin-schedule-panel { padding: 14px; }
  .admin-calendar-head {
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }
  .admin-calendar-head h2 {
    grid-column: 1 / -1;
    grid-row: 1;
    font-size: 1.45rem;
  }
  .admin-calendar-head [data-admin-cal-prev] { grid-column: 1; grid-row: 2; }
  .admin-calendar-head [data-admin-cal-next] { grid-column: 2; grid-row: 2; }
  .admin-calendar-key { gap: 9px 12px; font-size: .84rem; }

  .admin-table-wrap {
    overflow: visible;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
  }
  .admin-table {
    display: block;
    width: 100%;
    min-width: 0;
  }
  .admin-table thead { display: none; }
  .admin-table tbody { display: grid; gap: 12px; }
  .admin-table tr {
    display: grid;
    gap: 0;
    padding: 10px 12px;
    border: 1px solid #ddd6c8;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 8px 18px rgba(28,39,31,.08);
  }
  .admin-table td {
    display: grid;
    grid-template-columns: minmax(106px, .42fr) minmax(0, 1fr);
    gap: 10px;
    width: 100%;
    max-width: none;
    padding: 8px 0;
    overflow: visible;
    border-bottom: 1px solid #eee9de;
    text-overflow: clip;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .admin-table td:last-child { border-bottom: 0; }
  .admin-table td::before {
    content: attr(data-label);
    color: #5a4a32;
    font-size: .78rem;
    font-weight: 900;
    letter-spacing: .04em;
    text-transform: uppercase;
  }
  .admin-table td[colspan] {
    display: block;
    padding: 16px;
    text-align: center;
  }
  .admin-table td[colspan]::before { display: none; }
  .admin-actions { flex-wrap: wrap; justify-content: flex-start; }
  .admin-actions .btn { flex: 1 1 120px; }

  .event-admin-form,
  .event-date-fields,
  .summons-review-grid,
  .media-bank-tools,
  .picker-layout { grid-template-columns: 1fr !important; }
  .event-admin-form .field.full,
  .summons-review-grid .full { grid-column: auto; }
  .event-date-entry-head { flex-wrap: wrap; }
  .event-add-date { width: 100%; }
  .media-field-actions .btn { flex: 1 1 150px; }
}

@media (max-width: 480px) {
  .admin-main { padding-inline: 10px; }
  .admin-page-header,
  .admin-schedule-panel,
  .admin-modal-card { border-radius: 12px; }
  .admin-toolbar h1,
  .admin-page-header h1 { font-size: 2rem !important; }
  .admin-toolbar-actions .btn,
  .admin-top .btn { flex: 1 1 130px; }
  .admin-agenda-day { grid-template-columns: 88px minmax(0, 1fr); }
  .admin-agenda-date button { padding: 8px 6px; }
  .admin-table td { grid-template-columns: 92px minmax(0, 1fr); gap: 8px; }
  .event-detail-dates li { grid-template-columns: 1fr; gap: 3px; }
  .event-detail-dates li span { white-space: normal; }
}

/* Photo hall / realm gallery */
.realm-gallery {
  width: 100%;
  margin-inline: auto;
}
.realm-gallery-mosaic {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-auto-rows: clamp(72px, 7.5vw, 116px);
  grid-auto-flow: dense;
  gap: clamp(10px, 1.4vw, 18px);
}
.realm-gallery-card {
  position: relative;
  display: block;
  width: 100%;
  min-width: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
  border: 4px double #8d806c;
  border-radius: 8px;
  color: #fff;
  background: #160f0a;
  box-shadow: 0 13px 24px rgba(0, 0, 0, .32), inset 0 0 0 1px rgba(231, 203, 143, .22);
  cursor: zoom-in;
  isolation: isolate;
  appearance: none;
}
.realm-gallery-card::before {
  content: '';
  position: absolute;
  inset: 5px;
  z-index: 2;
  border: 1px solid rgba(220, 184, 111, .42);
  border-radius: 4px;
  pointer-events: none;
  box-shadow: inset 0 0 14px rgba(0,0,0,.2);
}
.realm-gallery-card::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(to top, rgba(8, 6, 4, .72), transparent 42%);
  opacity: .72;
  transition: opacity .2s ease;
}
.realm-gallery-card img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform .32s ease, filter .32s ease;
}
.realm-gallery-card:hover img,
.realm-gallery-card:focus-visible img {
  transform: scale(1.035);
  filter: brightness(1.05) contrast(1.02);
}
.realm-gallery-card:hover::after,
.realm-gallery-card:focus-visible::after { opacity: .9; }
.realm-gallery-card:focus-visible {
  outline: 3px solid #f2d98f;
  outline-offset: 4px;
}
.realm-gallery-caption {
  position: absolute;
  inset-inline: 15px;
  bottom: 13px;
  z-index: 3;
  max-width: calc(100% - 30px);
  color: #fff8e5;
  font-size: clamp(.78rem, 1vw, .94rem);
  font-weight: 750;
  line-height: 1.3;
  text-align: left;
  text-shadow: 0 2px 4px rgba(0,0,0,.95);
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.realm-gallery-mosaic .realm-gallery-card {
  grid-column: span 4;
  grid-row: span 3;
}
.realm-gallery-mosaic .realm-gallery-card.is-wide {
  grid-column: span 8;
  grid-row: span 3;
}
.realm-gallery-mosaic .realm-gallery-card.is-tall {
  grid-column: span 4;
  grid-row: span 5;
}
.realm-gallery-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(14px, 2vw, 24px);
  max-width: 1120px;
}
.realm-gallery-strip .realm-gallery-card {
  aspect-ratio: 4 / 3;
}
.content-gallery-section .section-title,
.gallery-strip-section .section-title { max-width: 920px; }


.realm-gallery-rail-shell {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(8px, 1.2vw, 16px);
  width: 100%;
}
.realm-gallery-rail {
  display: flex;
  gap: clamp(12px, 1.5vw, 20px);
  width: 100%;
  padding: 8px 4px 16px;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: thin;
  scrollbar-color: rgba(216,186,120,.7) rgba(255,255,255,.08);
}
.realm-gallery-rail::-webkit-scrollbar { height: 8px; }
.realm-gallery-rail::-webkit-scrollbar-track { border-radius: 99px; background: rgba(255,255,255,.08); }
.realm-gallery-rail::-webkit-scrollbar-thumb { border-radius: 99px; background: rgba(216,186,120,.75); }
.realm-gallery-rail .realm-gallery-card {
  flex: 0 0 clamp(220px, 28vw, 360px);
  aspect-ratio: 4 / 3;
  scroll-snap-align: start;
}
.realm-gallery-rail-control {
  display: grid;
  place-items: center;
  width: clamp(42px, 4vw, 54px);
  height: clamp(58px, 5.4vw, 72px);
  border: 2px solid rgba(233,208,151,.58);
  border-radius: 10px;
  color: #fff8e8;
  background: rgba(16,10,7,.78);
  box-shadow: 0 10px 20px rgba(0,0,0,.28);
  font-family: Georgia, serif;
  font-size: clamp(2rem, 3vw, 2.8rem);
  line-height: 1;
  cursor: pointer;
}
.realm-gallery-rail-control:hover,
.realm-gallery-rail-control:focus-visible { color: #24160b; background: #efd28a; outline: 2px solid #fff0bf; outline-offset: 2px; }
.content-gallery-rail-section .section-title { max-width: 940px; }
.home-content-gallery { margin: 4px 0 clamp(28px, 4vw, 46px); }
.home-content-gallery-label {
  margin: 0 0 8px;
  color: #f4dfa7;
  font-family: var(--heading-font);
  font-size: clamp(1.25rem, 2vw, 1.7rem);
  text-align: center;
  text-shadow: 0 2px 4px rgba(0,0,0,.72);
}
.realm-gallery-rail-shell-home .realm-gallery-rail .realm-gallery-card { flex-basis: clamp(190px, 23vw, 290px); }
.realm-gallery-rail-shell-home .realm-gallery-rail-control { width: clamp(38px, 3.6vw, 48px); height: clamp(52px, 4.8vw, 64px); }

body.gallery-modal-open { overflow: hidden; }
.gallery-modal {
  position: fixed;
  inset: 0;
  z-index: 220;
  display: grid;
  place-items: center;
  padding: clamp(12px, 3vw, 32px);
}
.gallery-modal[hidden] { display: none; }
.gallery-modal-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  background: rgba(4, 6, 4, .91);
  backdrop-filter: blur(5px);
  cursor: zoom-out;
}
.gallery-modal-dialog {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  width: min(1200px, 100%);
  max-height: calc(100vh - 40px);
  padding: clamp(12px, 2vw, 22px);
  border: 4px double #887b68;
  border-radius: 12px;
  background: linear-gradient(145deg, #17100a, #271a10);
  box-shadow: 0 28px 70px rgba(0,0,0,.62), inset 0 0 0 1px rgba(231,203,143,.18);
  outline: none;
}
.gallery-modal-figure {
  min-width: 0;
  margin: 0;
  text-align: center;
}
.gallery-modal-figure img {
  width: 100%;
  max-height: calc(100vh - 150px);
  object-fit: contain;
  border-radius: 6px;
  background: #090806;
}
.gallery-modal-figure figcaption {
  margin: 10px auto 0;
  max-width: 920px;
  color: #f4ead6;
  font-size: clamp(.92rem, 1.2vw, 1.05rem);
  line-height: 1.4;
}
.gallery-modal-count {
  display: block;
  margin-top: 4px;
  color: #d0b677;
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .1em;
}
.gallery-modal-control {
  display: grid;
  place-items: center;
  border: 1px solid rgba(236, 214, 163, .42);
  color: #fff8e5;
  background: rgba(20, 13, 8, .82);
  box-shadow: 0 8px 18px rgba(0,0,0,.3);
  cursor: pointer;
}
.gallery-modal-prev,
.gallery-modal-next {
  width: clamp(42px, 5vw, 58px);
  height: clamp(58px, 7vw, 82px);
  border-radius: 8px;
  font-family: Georgia, serif;
  font-size: clamp(2rem, 4vw, 3.2rem);
  line-height: 1;
}
.gallery-modal-prev { margin-right: clamp(8px, 1.5vw, 18px); }
.gallery-modal-next { margin-left: clamp(8px, 1.5vw, 18px); }
.gallery-modal-close {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 3;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  font-size: 1.8rem;
  line-height: 1;
}
.gallery-modal-control:hover,
.gallery-modal-control:focus-visible {
  color: #26160a;
  background: #efd28a;
  outline: 2px solid #fff2c9;
  outline-offset: 2px;
}

@media (max-width: 980px) {
  .realm-gallery-mosaic { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-rows: clamp(78px, 13vw, 120px); }
  .realm-gallery-mosaic .realm-gallery-card { grid-column: span 3; grid-row: span 3; }
  .realm-gallery-mosaic .realm-gallery-card.is-wide { grid-column: span 6; grid-row: span 3; }
  .realm-gallery-mosaic .realm-gallery-card.is-tall { grid-column: span 3; grid-row: span 4; }
}

@media (max-width: 620px) {
  .realm-gallery-rail-shell { grid-template-columns: 34px minmax(0, 1fr) 34px; gap: 6px; }
  .realm-gallery-rail-control { width: 34px; height: 52px; border-radius: 8px; font-size: 1.9rem; }
  .realm-gallery-rail .realm-gallery-card { flex-basis: min(78vw, 300px); }
  .realm-gallery-rail { gap: 10px; padding-bottom: 12px; }
  .realm-gallery-mosaic,
  .realm-gallery-strip {
    display: grid;
    grid-template-columns: 1fr;
    grid-auto-rows: auto;
    gap: 12px;
  }
  .realm-gallery-mosaic .realm-gallery-card,
  .realm-gallery-mosaic .realm-gallery-card.is-wide,
  .realm-gallery-mosaic .realm-gallery-card.is-tall,
  .realm-gallery-strip .realm-gallery-card {
    grid-column: auto;
    grid-row: auto;
    aspect-ratio: 4 / 3;
  }
  .realm-gallery-caption { font-size: .85rem; }
  .gallery-modal { padding: 8px; }
  .gallery-modal-dialog {
    grid-template-columns: 1fr;
    padding: 48px 8px 10px;
  }
  .gallery-modal-figure img { max-height: calc(100vh - 180px); }
  .gallery-modal-prev,
  .gallery-modal-next {
    position: absolute;
    bottom: 12px;
    z-index: 3;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    font-size: 2rem;
  }
  .gallery-modal-prev { left: 12px; margin: 0; }
  .gallery-modal-next { right: 12px; margin: 0; }
  .gallery-modal-figure figcaption { padding: 0 58px; font-size: .88rem; }
}

@media (prefers-reduced-motion: reduce) {
  .realm-gallery-card img { transition: none; }
}


/* August 2026 readability safeguards */
.site-page .events-booking-section,
.site-page .content-gallery-rail-section,
.site-page .content-video-section { color: #fff9ed; }
.site-page .content-gallery-rail-section .section-title :is(h2,p),
.site-page .content-video-section .section-title :is(h2,p) { color: #fff9ed; text-shadow: 0 2px 4px rgba(0,0,0,.78); }
.site-page .content-gallery-rail-section .eyebrow,
.site-page .content-video-section .eyebrow { color: #f5dda0; }

/* Owner-friendly homepage media control — August 2026 */
.home-media-editor {
  display: grid;
  gap: 18px;
  max-width: 820px;
  margin-inline: auto;
}
.home-media-editor-heading { display: grid; gap: 6px; }
.home-media-editor-heading h2 { margin: 0; color: #213b2f; font-size: clamp(1.7rem, 3vw, 2.3rem); }
.home-media-editor-heading p { margin: 0; max-width: 680px; color: #514a3e; }
.home-media-field { padding: clamp(14px, 2.4vw, 22px); background: #fffdf7; }
.home-media-preview { min-height: 260px; background: #171b17; }
.home-media-preview img,
.home-media-preview video { width: 100%; max-height: 520px; object-fit: contain; background: #111; }
.home-media-actions { justify-content: center; gap: 10px; }
.home-media-actions .btn { flex: 1 1 250px; min-height: 48px; }
.home-media-save-status {
  padding: 11px 14px;
  border: 1px solid #d6c79f;
  border-radius: 10px;
  color: #574a36;
  background: #f8f2e4;
  font-weight: 750;
  text-align: center;
}
.home-media-save-status.saving { color: #66521d; background: #fff7d8; }
.home-media-save-status.success { color: #194b34; background: #e9f5ed; border-color: #afcfb9; }
.home-media-save-status.error { color: #7d251f; background: #fae9e6; border-color: #d8aaa4; }
@media (max-width: 620px) {
  .home-media-preview { min-height: 190px; }
  .home-media-actions .btn { flex-basis: 100%; }
}

/* August 2026 public text sharpening and petition layout refinement */
body:not(.admin-body) {
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* Keep the illustrated buttons, but remove the soft glow that made small lettering look fuzzy. */
.home-page .btn,
.site-page .btn {
  text-shadow:
    -1px 0 0 #0b0805,
     1px 0 0 #0b0805,
     0 -1px 0 #0b0805,
     0 1px 0 #0b0805,
     0 2px 1px rgba(0,0,0,.96);
}
.home-page .btn.secondary,
.site-page .btn.secondary,
.home-page .btn.green,
.site-page .btn.green,
.home-page .btn.danger,
.site-page .btn.danger,
.inline-scroll-actions .btn,
.scroll-actions .btn {
  text-shadow:
    -1px 0 0 #0b0805,
     1px 0 0 #0b0805,
     0 -1px 0 #0b0805,
     0 1px 0 #0b0805,
     0 2px 1px rgba(0,0,0,.96);
}

/* Event cards use a cleaner reading face for dates, locations and descriptions. */
.site-page .event-page-body,
.site-page .event-type-pill,
.site-page .event-row {
  font-family: Georgia, 'Times New Roman', serif;
}
.site-page .event-page-body h3,
.site-page .event-row h3 {
  font-family: var(--heading-font);
  text-shadow: none;
}
.site-page .event-page-date,
.site-page .event-page-location,
.site-page .event-page-excerpt,
.site-page .event-row p,
.site-page .event-date,
.site-page .event-row-location {
  font-size: clamp(1rem, 1.15vw, 1.1rem);
  line-height: 1.52;
  text-shadow: none;
}
.site-page .event-page-date { color: #5d421c; font-weight: 800; }
.site-page .event-page-location { color: #263c2d; font-weight: 800; }
.site-page .event-page-excerpt { color: #342e25; font-weight: 600; }
.site-page .event-type-pill { color: #3e2e1d; font-weight: 800; }

/* The petition email maker is now the primary action immediately under the hero. */
.petition-primary-section .scroll-form-grid { align-items: start; }
.inline-scroll-petition-email-form .petition-email-generator-inline { display: grid; align-content: center; min-height: 100%; }
.inline-scroll-petition-email-form .petition-email-generator-inline .form-grid { width: 100%; max-width: 620px; margin-inline: auto; }
.inline-scroll-petition-email-form .petition-email-generator-inline .eyebrow { text-align: center; }

@media (max-width: 620px) {
  .site-page .event-page-date,
  .site-page .event-page-location,
  .site-page .event-page-excerpt,
  .site-page .event-row p,
  .site-page .event-date,
  .site-page .event-row-location { font-size: 1rem; }
}

/* Final crisp public-text and calendar readability pass — August 27, 2026 */
body:not(.admin-body) {
  font-family: Georgia, 'Times New Roman', serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

body:not(.admin-body) :is(
  p, li, small, label, input, select, textarea,
  .card-meta, .scroll-card-kicker, .scroll-card-meta, .scroll-card-date,
  .scroll-card-location, .scroll-card-copy, .event-type-pill,
  .event-page-date, .event-page-location, .event-page-excerpt,
  .event-detail-date, .event-detail-dates, .scroll-event-location,
  .scroll-event-description, .day-events-note, .day-events-entry,
  .calendar-legend-item span, .ledger-event-label
) {
  font-family: Georgia, 'Times New Roman', serif;
  font-kerning: normal;
}

.home-page .btn,
.site-page .btn {
  filter: none;
  transform: none;
  transition: transform .14s ease;
  text-shadow:
    -1px -1px 0 #080604,
     1px -1px 0 #080604,
    -1px  1px 0 #080604,
     1px  1px 0 #080604,
     0 2px 0 #080604;
}
.home-page .btn:hover,
.site-page .btn:hover {
  filter: none;
  transform: translateY(-1px);
}

.event-scroll-card-body {
  gap: 7px;
  font-family: Georgia, 'Times New Roman', serif;
}
.event-scroll-card-body h3 {
  color: #1c140d;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(1.42rem, 2vw, 1.82rem);
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1.14;
  text-shadow: none;
}
.event-scroll-card-body .scroll-card-kicker,
.event-scroll-card-body .scroll-card-date,
.event-scroll-card-body .scroll-card-location,
.event-scroll-card-body .scroll-card-copy,
.event-scroll-card-body .event-type-pill {
  text-shadow: none;
}
.event-scroll-card-body .scroll-card-kicker {
  color: #5c3b17;
  font-size: clamp(.84rem, 1vw, .96rem);
  font-weight: 800;
  letter-spacing: .055em;
}
.event-scroll-card-body .scroll-card-date {
  color: #4d3517;
  font-size: clamp(.92rem, 1.05vw, 1.02rem);
  font-weight: 800;
}
.event-scroll-card-body .scroll-card-location {
  color: #203a2a;
  font-size: clamp(.96rem, 1.05vw, 1.08rem);
  font-weight: 800;
}
.event-scroll-card-body .scroll-card-copy {
  color: #211b14;
  font-size: clamp(1rem, 1.18vw, 1.1rem);
  font-weight: 650;
  line-height: 1.5;
}
.event-scroll-card-body .event-type-pill {
  color: #2d2114;
  background: rgba(255, 250, 232, .84);
  font-size: .95rem;
  font-weight: 800;
}

.events-page-grid,
.schedule-event-scroll-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 1020px;
  margin-inline: auto;
}
.events-page-grid .inline-scroll-event-card,
.schedule-event-scroll-grid .inline-scroll-event-card {
  width: min(100%, 465px);
}

.ledger-shell:not(.ledger-shell-preview) .ledger-events {
  top: 28%;
  left: 5%;
  right: 5%;
  bottom: 5%;
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-start;
  align-content: flex-start;
  gap: 3px;
}
.ledger-shell:not(.ledger-shell-preview) .ledger-event {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: clamp(3px, .35cqw, 6px);
  width: 100%;
  height: clamp(24px, 2.35cqw, 31px);
  min-width: 0;
  padding: 2px clamp(4px, .42cqw, 7px);
  border-radius: 7px;
  color: #fff7de;
  background: rgba(6, 12, 8, .88);
  box-shadow: 0 2px 4px rgba(0,0,0,.42);
}
.ledger-shell:not(.ledger-shell-preview) .ledger-event.is-private {
  color: #fff3ff;
  background: rgba(67, 31, 78, .94);
  border-color: rgba(236, 205, 245, .52);
}
.ledger-shell:not(.ledger-shell-preview) .ledger-event img {
  width: clamp(17px, 1.55cqw, 23px);
  height: clamp(17px, 1.55cqw, 23px);
  flex: 0 0 auto;
}
.ledger-shell:not(.ledger-shell-preview) .ledger-event-label {
  position: static;
  display: block;
  width: auto;
  min-width: 0;
  height: auto;
  overflow: hidden;
  clip-path: none;
  color: inherit;
  font-size: clamp(.58rem, .82cqw, .78rem);
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1.05;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-shadow: 0 1px 1px rgba(0,0,0,.96);
}
.ledger-shell:not(.ledger-shell-preview) .ledger-more-count {
  flex: 0 0 auto;
  padding: 3px 5px;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(.56rem, .7cqw, .72rem);
}

.ledger-shell-preview .ledger-events {
  top: 25%;
  left: 6%;
  right: 5%;
  bottom: 4%;
}
.ledger-shell-preview .ledger-event {
  width: clamp(18px, 2.7cqw, 24px);
  height: clamp(18px, 2.7cqw, 24px);
  padding: 2px;
  border-width: 1px;
}
.ledger-shell-preview .ledger-event img {
  width: clamp(14px, 2cqw, 19px);
  height: clamp(14px, 2cqw, 19px);
}
.ledger-shell-preview .ledger-event-label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.scroll-private-reserved .scroll-private-status strong {
  color: #2b2016;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(1rem, 1.7vw, 1.2rem);
  line-height: 1.35;
  text-shadow: none;
}
.scroll-private-reserved > p:not(.eyebrow) {
  color: #2e251c;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: clamp(1rem, 1.5vw, 1.12rem);
  font-weight: 650;
  line-height: 1.5;
  text-shadow: none;
}

@media (max-width: 760px) {
  .events-page-grid,
  .schedule-event-scroll-grid { grid-template-columns: 1fr; }
  .events-page-grid .inline-scroll-event-card,
  .schedule-event-scroll-grid .inline-scroll-event-card { width: min(100%, 440px); }

  .ledger-shell:not(.ledger-shell-preview) .ledger-event {
    display: grid;
    place-items: center;
    width: clamp(18px, 3.8cqw, 24px);
    height: clamp(18px, 3.8cqw, 24px);
    padding: 2px;
    border-radius: 50%;
  }
  .ledger-shell:not(.ledger-shell-preview) .ledger-event img {
    width: clamp(14px, 2.8cqw, 19px);
    height: clamp(14px, 2.8cqw, 19px);
  }
  .ledger-shell:not(.ledger-shell-preview) .ledger-event-label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }
}

/* Homepage schedule scroll polish — August 30, 2026 */
.inline-scroll-schedule-invite .inline-scroll-viewport {
  inset: 8.6% 10.8% 7.5%;
}
.inline-scroll-schedule-invite .inline-scroll-content {
  padding: 8px 7px 12px;
}
.schedule-invite-card {
  justify-content: flex-start;
  gap: 7px;
}
.schedule-invite-card .scroll-card-kicker {
  margin: 2px 0 1px;
  color: #3a2815;
  font-family: var(--body-font);
  font-size: clamp(.88rem, 1.05vw, .98rem);
  font-weight: 800;
  letter-spacing: .055em;
  line-height: 1.16;
  text-shadow: none;
}
.schedule-invite-photo {
  width: min(82%, 282px);
  margin: 0 auto 3px;
}
.schedule-invite-card h3 {
  max-width: 355px;
  margin-top: 1px;
  color: #1b120b;
  font-family: var(--heading-font);
  font-size: clamp(1.58rem, 2.35vw, 2.08rem);
  font-weight: 400;
  letter-spacing: .012em;
  line-height: 1.02;
  text-shadow: 0 1px 0 rgba(255,247,222,.2);
}
.schedule-invite-card .scroll-card-copy {
  max-width: 350px;
  color: #21170f;
  font-family: var(--body-font);
  font-size: clamp(.96rem, 1.08vw, 1.05rem);
  font-weight: 700;
  letter-spacing: .005em;
  line-height: 1.34;
  text-shadow: none;
}
.inline-scroll-schedule-invite .inline-scroll-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  width: min(100%, 344px);
  margin: clamp(14px, 1.8vw, 20px) auto 0;
  padding: 0 4px 12px;
}
.inline-scroll-schedule-invite .inline-scroll-actions .btn {
  width: 100%;
  min-width: 0;
  min-height: 47px;
  padding: 8px 7px 9px;
  font-family: var(--heading-font);
  font-size: clamp(.91rem, 1.08vw, 1.02rem);
  font-weight: 400;
  letter-spacing: .015em;
  line-height: 1.02;
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
  text-shadow:
    -1px -1px 0 #080604,
     1px -1px 0 #080604,
    -1px  1px 0 #080604,
     1px  1px 0 #080604,
     0 2px 2px rgba(0,0,0,.55);
}

@media (max-width: 620px) {
  .inline-scroll-schedule-invite .inline-scroll-viewport { inset: 8.4% 10.2% 7.1%; }
  .schedule-invite-photo { width: min(79%, 260px); }
  .schedule-invite-card h3 { font-size: clamp(1.5rem, 7vw, 1.88rem); }
  .schedule-invite-card .scroll-card-copy { font-size: .93rem; line-height: 1.31; }
  .inline-scroll-schedule-invite .inline-scroll-actions {
    width: min(100%, 330px);
    margin-top: 13px;
    padding-bottom: 10px;
  }
  .inline-scroll-schedule-invite .inline-scroll-actions .btn {
    min-height: 45px;
    padding-inline: 5px;
    font-size: clamp(.84rem, 3.6vw, .94rem);
  }
}


/* Homepage upcoming-event scroll fit — August 30, 2026 */
.home-events-grid .inline-scroll-viewport {
  inset: 9.8% 11.4% 8.2%;
}
.home-events-grid .inline-scroll-content {
  padding: 8px 7px 13px;
}
.home-events-grid .event-scroll-card-body {
  justify-content: flex-start;
  gap: 5px;
  padding-bottom: 5px;
}
.home-events-grid .event-scroll-media {
  width: min(78%, 220px);
  max-height: 22%;
  margin-bottom: 1px;
}
.home-events-grid .event-scroll-card-body .scroll-card-kicker {
  font-size: clamp(.76rem, .92vw, .88rem);
  line-height: 1.12;
}
.home-events-grid .event-scroll-card-body .event-type-pill {
  min-height: 34px;
  padding: 5px 11px;
  font-size: clamp(.86rem, .98vw, .94rem);
}
.home-events-grid .event-scroll-card-body .scroll-card-date {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  font-size: clamp(.86rem, .98vw, .96rem);
  line-height: 1.24;
}
.home-events-grid .event-scroll-card-body h3 {
  margin-top: 1px;
  font-size: clamp(1.38rem, 1.8vw, 1.7rem);
  line-height: 1.06;
}
.home-events-grid .event-scroll-card-body .scroll-card-location {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  font-size: clamp(.9rem, 1vw, 1rem);
  line-height: 1.25;
}
.home-events-grid .event-scroll-card-body .scroll-card-copy {
  display: none;
}
.home-events-grid .inline-scroll-actions {
  flex: 0 0 auto;
  margin-top: 9px;
  padding: 0 5px 9px;
}
.home-events-grid .inline-scroll-actions .btn {
  min-width: min(100%, 205px);
  min-height: 46px;
  padding: 8px 12px 9px;
  font-family: var(--heading-font);
  font-size: clamp(.88rem, 1.02vw, .98rem);
  font-weight: 400;
  line-height: 1.02;
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
}

@media (max-width: 620px) {
  .home-events-grid .inline-scroll-viewport { inset: 9.4% 10.8% 7.8%; }
  .home-events-grid .event-scroll-media { width: min(76%, 215px); max-height: 21%; }
  .home-events-grid .event-scroll-card-body h3 { font-size: clamp(1.34rem, 6vw, 1.6rem); }
  .home-events-grid .inline-scroll-actions { margin-top: 8px; padding-bottom: 8px; }
  .home-events-grid .inline-scroll-actions .btn { min-height: 44px; font-size: clamp(.84rem, 3.5vw, .94rem); }
}

/* Search-readiness audit: crisp public type and reduced glow — August 30, 2026 */
body:not(.admin-body) {
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Keep textured-background copy readable without the soft halo that made small type look blurry. */
.site-page main > .section .section-title :is(p, li),
.site-page main > .section .section-mini-title :is(p, li),
.site-page main > .section .centered-title :is(p, li),
.site-page main > .section .event-list-heading > div :is(p, li),
.site-page main > .section .split > :not(.panel):not(.card):not(.parchment-card):not(.feature-photo) :is(p, li),
.home-page .surface-green .section-intro,
.home-page .surface-purple .section-intro,
.home-page .surface-green .scroll-group-heading p,
.home-page .surface-purple .scroll-group-heading p,
.home-page .surface-green .feature-bullet-list li {
  text-shadow: 0 1px 1px rgba(0, 0, 0, .92);
}

/* Preserve the illustrated medieval buttons while replacing fuzzy outer glow with a hard, readable edge. */
.home-page .btn,
.site-page .btn,
.home-page .btn.secondary,
.site-page .btn.secondary,
.home-page .btn.green,
.site-page .btn.green,
.home-page .btn.danger,
.site-page .btn.danger {
  text-shadow:
    -1px -1px 0 #090604,
     1px -1px 0 #090604,
    -1px  1px 0 #090604,
     1px  1px 0 #090604,
     0 2px 1px rgba(0, 0, 0, .9);
}
