:root {
  --walnut: #211610;
  --green: #1b2a22;
  --gold: #c09a4b;
  --gold-soft: #8f7236;
  --paper: #e5d7b5;
  --ink: #2a1c12;
  --oxblood: #6e2a26;
  --display: "Playfair Display", "Times New Roman", serif;
  --text: "Old Standard TT", Georgia, serif;
}

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  color: #e9dcc0;
  font-family: var(--text);
  font-size: clamp(1rem, 0.95rem + 0.3vw, 1.2rem);
  line-height: 1.7;
  background:
    radial-gradient(ellipse at 50% 0%, #2f4237 0%, transparent 60%),
    linear-gradient(var(--green), var(--walnut) 70%);
  background-attachment: fixed;
}

/* aged-print grain over everything */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 10;
  pointer-events: none;
  opacity: 0.22;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .6 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 11;
  pointer-events: none;
  box-shadow: inset 0 0 140px rgba(0, 0, 0, 0.55);
}

/* hero */
.hero { text-align: center; padding: clamp(3rem, 9vw, 6rem) 1.25rem 1rem; }
.years {
  margin: 0;
  font-family: var(--display);
  font-style: italic;
  font-size: clamp(1.1rem, 3vw, 1.6rem);
  letter-spacing: 0.25em;
  color: var(--gold);
}
h1 {
  margin: 0.2em 0 0.1em;
  font-family: var(--display);
  font-weight: 900;
  font-size: clamp(2.8rem, 12vw, 7rem);
  line-height: 1.05;
  color: var(--gold);
  text-shadow: 0 1px 0 #f0d99a, 0 3px 0 var(--gold-soft), 0 10px 24px rgba(0, 0, 0, 0.6);
}
.roles { margin: 0; font-style: italic; font-size: 1.15em; opacity: 0.85; }

.ornament {
  height: 14px;
  width: min(320px, 70%);
  margin: 1.75rem auto 0;
  border-top: 1px solid var(--gold);
  border-bottom: 1px solid var(--gold);
  position: relative;
}
.ornament::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 12px; height: 12px;
  background: var(--gold);
  transform: translate(-50%, -50%) rotate(45deg);
  box-shadow: 0 0 0 4px var(--walnut);
}

/* sections */
main { width: min(1000px, 100% - 2.5rem); margin: 0 auto; }
.block { padding: clamp(2rem, 6vw, 4rem) 0; }

h2 {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0 0 1.75rem;
  font-family: var(--display);
  font-style: italic;
  font-weight: 500;
  font-size: clamp(1.7rem, 5vw, 2.5rem);
  color: var(--gold);
}
h2::before, h2::after { content: ""; flex: 1; border-top: 1px solid var(--gold-soft); }

/* gilded double frame, used for both viewer and video */
.frame {
  margin: 0;
  padding: 10px;
  background: #0f0a07;
  box-shadow: 0 0 0 1px var(--gold), 0 0 0 7px #0f0a07, 0 0 0 8px var(--gold-soft), 0 24px 60px rgba(0, 0, 0, 0.65);
}
.frame > model-viewer { display: block; width: 100%; }

model-viewer {
  height: clamp(340px, 68vh, 640px);
  background: radial-gradient(ellipse at 50% 40%, #4a3a2a 0%, #1a120c 75%);
  --poster-color: transparent;
  --progress-bar-color: var(--gold);
  --progress-bar-height: 3px;
}
.video-wrap { aspect-ratio: 16 / 9; background: #000; }
.video-wrap iframe { display: block; width: 100%; height: 100%; border: 0; }

figcaption {
  margin: 14px 4px 4px;
  text-align: center;
  font-style: italic;
  font-size: 0.92em;
  color: #cbb98f;
}
.load-error { margin: 12px 4px 0; text-align: center; color: #e2a08f; }

.ar-btn {
  position: absolute;
  right: 14px; bottom: 14px;
  padding: 0.65em 1.2em;
  font: 700 0.95rem var(--text);
  color: var(--paper);
  background: var(--oxblood);
  border: 1px solid var(--gold);
  cursor: pointer;
}
.ar-btn:hover { background: #853730; }

/* biography on aged paper */
.paper {
  padding: clamp(1.5rem, 5vw, 3.5rem);
  color: var(--ink);
  text-align: justify;
  hyphens: auto;
  background:
    radial-gradient(ellipse at center, transparent 55%, rgba(110, 70, 30, 0.35) 100%),
    var(--paper);
  box-shadow: inset 0 0 0 6px var(--paper), inset 0 0 0 7px var(--oxblood), 0 20px 50px rgba(0, 0, 0, 0.55);
  columns: 2 22rem;
  column-gap: 3rem;
}
.paper p { margin: 0 0 1em; }
.paper p:first-child::first-letter {
  float: left;
  margin: 0.08em 0.1em 0 0;
  font: 900 4.2em/0.8 var(--display);
  color: var(--oxblood);
}

footer { text-align: center; padding: 2rem 1.25rem 3.5rem; font-style: italic; color: #b8a67f; }

:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }

@media (max-width: 560px) {
  .paper { text-align: left; }
  h2::before { display: none; }
  h2 { justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}