:root {
  --forest: #173b35;
  --forest-deep: #0d2925;
  --cream: #f3efe4;
  --paper: #faf7ef;
  --gold: #d0aa65;
  --ink: #1b2926;
  --muted: #63716d;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; overflow-x: hidden; background: var(--paper); color: var(--ink); font-family: "Avenir Next", "Segoe UI", sans-serif; }
a { color: inherit; }
.skip-link { position: fixed; z-index: 100; top: 1rem; left: 1rem; transform: translateY(-150%); background: var(--cream); padding: .75rem 1rem; }
.skip-link:focus { transform: translateY(0); }

.hero { min-height: 100svh; position: relative; overflow: hidden; color: var(--cream); background: linear-gradient(135deg, var(--forest-deep), var(--forest) 60%, #245148); }
.hero::after { content: ""; position: absolute; inset: 0; opacity: .11; pointer-events: none; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.28'/%3E%3C/svg%3E"); }
.hero__glow { position: absolute; width: 42rem; height: 42rem; right: 10%; top: 13%; border-radius: 50%; background: #f3d092; opacity: .11; filter: blur(1px); }
.hero__content { position: relative; z-index: 1; display: grid; grid-template-columns: 1.1fr .9fr; align-items: center; gap: clamp(3rem, 7vw, 7rem); width: min(1180px, calc(100% - 3rem)); min-height: 100svh; margin: auto; padding: 4rem 0; }
.eyebrow { margin: 0 0 1.3rem; color: var(--gold); font-size: .72rem; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; }
h1, h2 { margin: 0; font-family: "Iowan Old Style", "Palatino Linotype", Georgia, serif; font-weight: 400; line-height: .96; }
h1 { max-width: 760px; font-size: clamp(3.9rem, 8vw, 7.8rem); letter-spacing: -.045em; }
.dates { display: flex; align-items: center; gap: .9rem; margin: 1.8rem 0; color: rgba(243,239,228,.7); font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; }
.dates span { width: 1.4rem; height: 1px; background: var(--gold); }
.hero__lede { max-width: 35rem; margin: 0; color: rgba(243,239,228,.78); font-family: "Iowan Old Style", "Palatino Linotype", Georgia, serif; font-size: clamp(1.15rem, 2vw, 1.55rem); line-height: 1.55; }
.scroll-cue { display: inline-flex; gap: .7rem; align-items: center; margin-top: 2.2rem; color: var(--cream); font-size: .75rem; letter-spacing: .1em; text-decoration: none; text-transform: uppercase; }
.scroll-cue span { color: var(--gold); font-size: 1.2rem; }
.portrait-wrap { position: relative; width: min(100%, 410px); margin: 0 auto; }
.portrait-wrap::before { content: ""; position: absolute; inset: -1rem 1.1rem 2rem -1rem; border: 1px solid rgba(208,170,101,.55); border-radius: 20px; }
.portrait-wrap img { position: relative; display: block; width: 100%; height: min(62vh, 620px); border-radius: 16px; object-fit: cover; object-position: center; filter: saturate(.82) contrast(1.04); }
.portrait-wrap figcaption { position: relative; margin-top: 1rem; color: rgba(243,239,228,.55); font-size: .68rem; letter-spacing: .12em; text-align: right; text-transform: uppercase; }

.section { position: relative; width: min(1180px, calc(100% - 3rem)); margin: auto; padding: clamp(6rem, 12vw, 10rem) 0; }
.story { width: min(880px, calc(100% - 3rem)); }
.story__body { color: var(--muted); font-size: 1rem; line-height: 1.9; text-align: center; }
.story__body p { max-width: 760px; margin: 1.35rem auto; }
.story__lead { max-width: 820px !important; color: var(--ink); font-family: "Iowan Old Style", "Palatino Linotype", Georgia, serif; font-size: clamp(1.6rem, 3vw, 2.25rem); line-height: 1.45; }

.gallery { padding-top: 0; content-visibility: auto; contain-intrinsic-size: auto 1800px; }
.gallery__grid {
  column-count: 4;
  column-gap: .75rem;
}
.gallery__item { position: relative; break-inside: avoid; overflow: hidden; margin: 0 0 .75rem; background: #d9ddd5; }
.gallery__button { display: block; width: 100%; padding: 0; border: 0; color: inherit; background: none; cursor: zoom-in; }
.gallery__item img { display: block; width: 100%; height: auto; filter: saturate(.9) contrast(1.02); transition: transform .7s ease, filter .7s ease; }
.gallery__item:hover img { transform: scale(1.025); filter: saturate(1) contrast(1.02); }
.gallery__button:focus-visible { outline: 3px solid var(--gold); outline-offset: -3px; }

.lightbox { max-width: none; max-height: none; padding: 0; border: 0; overflow: visible; color: var(--cream); background: transparent; }
.lightbox::backdrop { background: rgba(5, 25, 22, .94); backdrop-filter: blur(8px); }
.lightbox__image { display: block; max-width: min(92vw, 1800px); max-height: 88vh; object-fit: contain; box-shadow: 0 24px 80px rgba(0, 0, 0, .45); }
.lightbox__close { position: absolute; z-index: 2; top: -2.8rem; right: 0; width: 2.4rem; height: 2.4rem; padding: 0; border: 1px solid rgba(243,239,228,.45); border-radius: 50%; color: var(--cream); background: rgba(13,41,37,.72); font: 300 1.65rem/1 sans-serif; cursor: pointer; }
.lightbox__close:hover, .lightbox__close:focus-visible { border-color: var(--gold); color: var(--gold); }
body.lightbox-open { overflow: hidden; }

.films {
  padding-top: clamp(5rem, 9vw, 8rem);
  padding-bottom: clamp(5rem, 9vw, 8rem);
  background: var(--forest);
  box-shadow: 0 0 0 100vmax var(--forest);
  clip-path: inset(0 -100vmax);
  content-visibility: auto;
  contain-intrinsic-size: auto 700px;
}
.film-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; }
.embed-wrap { position: relative; overflow: hidden; background: var(--forest-deep); aspect-ratio: 16 / 9; box-shadow: 0 16px 42px rgba(5, 22, 19, .28); }
.embed-wrap video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.embed-wrap video { object-fit: contain; background: #071b18; }

footer { padding: 2.5rem 1.5rem; color: rgba(243,239,228,.82); background: var(--forest); text-align: center; }
footer p { margin: 0; font-family: "Iowan Old Style", "Palatino Linotype", Georgia, serif; font-size: .95rem; letter-spacing: .06em; }
footer span { margin: 0 .45rem; color: var(--gold); }

@media (prefers-reduced-motion: no-preference) {
  .reveal { opacity: 0; transform: translateY(22px); transition: opacity .8s ease, transform .8s ease; }
  .reveal.is-visible { opacity: 1; transform: none; }
}

@media (max-width: 850px) {
  .hero__content {
    grid-template-columns: 1fr;
    gap: 3.5rem;
    min-height: auto;
    padding: 4rem 0 5rem;
  }
  .portrait-wrap { width: min(80%, 390px); }
  .story__body { max-width: 44rem; }
  .gallery__grid { column-count: 3; }
}
@media (max-width: 560px) {
  .hero__content, .section { width: min(100% - 2rem, 1180px); }
  .hero__content { gap: 2.75rem; padding: 3.25rem 0 4rem; }
  .hero__glow { width: 26rem; height: 26rem; top: 15rem; right: -9rem; }
  .eyebrow { margin-bottom: 1rem; font-size: .66rem; letter-spacing: .21em; }
  h1 { font-size: clamp(3rem, 15.5vw, 4.25rem); line-height: .93; }
  .dates {
    flex-wrap: nowrap;
    gap: .55rem;
    margin: 1.45rem 0;
    font-size: clamp(.59rem, 2.7vw, .68rem);
    letter-spacing: .045em;
    white-space: nowrap;
  }
  .dates span { flex: 0 0 .85rem; width: .85rem; }
  .hero__lede { font-size: clamp(1.08rem, 4.8vw, 1.25rem); line-height: 1.48; }
  .scroll-cue {
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    margin-top: 1.25rem;
    border: 1px solid rgba(208,170,101,.42);
    border-radius: 50%;
  }
  .scroll-cue span { font-size: 1.3rem; line-height: 1; }
  .portrait-wrap { width: min(calc(100% - .75rem), 23rem); }
  .portrait-wrap::before { inset: -.65rem .7rem 1.2rem -.65rem; border-radius: 18px; }
  .portrait-wrap img {
    height: auto;
    aspect-ratio: 4 / 5;
    border-radius: 14px;
    object-position: center 30%;
  }
  .portrait-wrap figcaption { margin-top: .8rem; font-size: .62rem; text-align: center; }
  .story { width: min(100% - 2rem, 880px); }
  .story.section { padding-top: 4.5rem; padding-bottom: 4.5rem; }
  .story__body { font-size: .96rem; line-height: 1.78; }
  .story__body p { margin: 1.15rem auto; }
  .story__lead { font-size: clamp(1.45rem, 7vw, 1.85rem); line-height: 1.4; }
  .gallery { padding-bottom: 4.5rem; }
  .gallery__grid { column-count: 2; column-gap: .5rem; }
  .gallery__item { margin-bottom: .5rem; }
  .films { padding-top: 4rem; padding-bottom: 4rem; }
  .film-grid { grid-template-columns: 1fr; gap: 1rem; }
  .lightbox { max-width: calc(100vw - 1.5rem); }
  .lightbox__image { max-width: calc(100vw - 1.5rem); max-height: 80svh; }
  .lightbox__close { top: -3rem; right: 0; width: 2.75rem; height: 2.75rem; }
  footer { padding: 2rem 1rem; }
}
@media (max-width: 360px) {
  .hero__content { width: min(100% - 1.5rem, 1180px); }
  .dates { gap: .4rem; letter-spacing: .025em; }
  .dates span { flex-basis: .65rem; width: .65rem; }
  .gallery__grid { column-count: 1; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
