:root {
  /* Typography tokens: Space Grotesk** parsed from DESIGN.md, implemented as "Space Grotesk". */
  --ledger-burgundy: #5A1726;
  --oxide-wine: #7B2435;
  --archive-cream: #F5E8CF;
  --tea-paper: #D9C39A;
  --pressed-sage: #687C4A;
  --brass-foil: #C69A46;
  --ink-brown: #2B1914;
  --shadow-color: rgba(43, 25, 20, 0.38);
  --paper-depth: 0 26px 70px var(--shadow-color), 0 7px 18px rgba(43, 25, 20, 0.22);
  --card-rotation: -1deg;
}

* { box-sizing: border-box; }

html, body { margin: 0; min-height: 100%; overflow: hidden; }

body {
  color: var(--archive-cream);
  background: radial-gradient(circle at 50% 42%, #7B2435 0%, #5A1726 36%, #2B1914 100%);
  font-family: "Poppins", "Jost", "Futura", "Century Gothic", Arial, sans-serif;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  background-image:
    linear-gradient(rgba(245, 232, 207, 0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245, 232, 207, 0.028) 1px, transparent 1px),
    radial-gradient(circle at 20% 18%, rgba(198, 154, 70, 0.16), transparent 30%),
    radial-gradient(circle at 82% 80%, rgba(104, 124, 74, 0.16), transparent 34%);
  background-size: 92px 92px, 92px 92px, 100% 100%, 100% 100%;
  pointer-events: none;
}

.cursor-halo {
  position: fixed;
  width: 86px;
  height: 86px;
  border: 1px solid rgba(198, 154, 70, 0.55);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(198, 154, 70, 0.2), transparent 62%);
  pointer-events: none;
  transform: translate(-50%, -50%);
  z-index: 20;
  opacity: 0;
  transition: opacity 450ms ease;
}

.annual-stage { position: relative; width: 100vw; height: 100vh; isolation: isolate; }

.top-ledger {
  position: fixed;
  top: 24px;
  left: 32px;
  right: 32px;
  display: flex;
  align-items: center;
  gap: 18px;
  z-index: 12;
  color: var(--tea-paper);
  font-family: "Space Grotesk", "Poppins", sans-serif;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.22em;
}

.ledger-rule { height: 1px; flex: 1; background: linear-gradient(90deg, var(--brass-foil), transparent); }
.ledger-date { color: var(--brass-foil); }

.scene {
  position: absolute;
  inset: 0;
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 90px 6vw 72px;
  opacity: 0;
  transform: translateY(38px) scale(0.985);
  pointer-events: none;
  transition: opacity 900ms ease, transform 900ms cubic-bezier(.19,1,.22,1);
}

.scene.active { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }

.desk-grid {
  position: absolute;
  inset: 10vh 8vw;
  border: 1px solid rgba(217, 195, 154, 0.16);
  background: linear-gradient(90deg, transparent calc(12.5% - 1px), rgba(217,195,154,.08) 12.5%, transparent calc(12.5% + 1px));
  background-size: 12.5% 100%;
  box-shadow: inset 0 0 80px rgba(43,25,20,.34);
}

.folder-stack { position: absolute; width: min(840px, 80vw); height: min(540px, 58vh); }
.quarter-folder {
  position: absolute;
  border-radius: 18px 18px 26px 26px;
  background: linear-gradient(135deg, var(--archive-cream), var(--tea-paper));
  box-shadow: 0 24px 48px rgba(43,25,20,.38);
  border: 1px solid rgba(198, 154, 70, 0.5);
  color: var(--oxide-wine);
  font-family: "Space Grotesk", sans-serif;
  font-weight: 700;
  letter-spacing: .15em;
}
.quarter-folder::before { content:""; position:absolute; top:-18px; left:28px; width:108px; height:34px; border-radius:14px 14px 0 0; background: inherit; border: 1px solid rgba(198,154,70,.45); border-bottom:0; }
.quarter-folder span { position:absolute; right:24px; top:16px; }
.folder-one { width: 54%; height: 39%; left: 3%; top: 16%; transform: rotate(-5deg); }
.folder-two { width: 50%; height: 42%; right: 2%; top: 10%; transform: rotate(4deg); background: linear-gradient(135deg, #D9C39A, #F5E8CF); }
.folder-three { width: 49%; height: 40%; left: 8%; bottom: 8%; transform: rotate(2deg); background: linear-gradient(135deg, #7B2435, #5A1726); color: #F5E8CF; }
.folder-four { width: 52%; height: 41%; right: 6%; bottom: 5%; transform: rotate(-3deg); }

.yearbook-card {
  position: relative;
  width: min(520px, 82vw);
  min-height: 660px;
  padding: 58px 48px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background:
    linear-gradient(90deg, rgba(245,232,207,.18) 0 10px, transparent 10px 18px),
    radial-gradient(circle at 50% 28%, rgba(198,154,70,.22), transparent 38%),
    linear-gradient(145deg, #7B2435, #5A1726 54%, #2B1914);
  border: 10px solid var(--archive-cream);
  border-radius: 34px;
  box-shadow: var(--paper-depth);
  text-align: center;
  overflow: hidden;
}

.cover-border { position:absolute; inset:28px; border: 1px solid rgba(198,154,70,.78); border-radius: 22px; }
.corner { position:absolute; width:44px; height:44px; border-color: var(--brass-foil); opacity:.8; }
.corner-tl { top:22px; left:22px; border-top:2px solid; border-left:2px solid; }
.corner-tr { top:22px; right:22px; border-top:2px solid; border-right:2px solid; }
.corner-bl { bottom:22px; left:22px; border-bottom:2px solid; border-left:2px solid; }
.corner-br { bottom:22px; right:22px; border-bottom:2px solid; border-right:2px solid; }

.cover-kicker, .final-label, .section-heading span {
  font-family: "Space Grotesk", sans-serif;
  text-transform: uppercase;
  letter-spacing: .22em;
  font-size: 11px;
  color: var(--brass-foil);
}

h1, h2, h3, p { margin: 0; }
h1 {
  position: relative;
  z-index: 2;
  margin-top: 34px;
  color: var(--archive-cream);
  font-family: "Poppins", "League Spartan", "Futura", sans-serif;
  font-size: clamp(48px, 7vw, 84px);
  line-height: .86;
  letter-spacing: .08em;
  text-transform: uppercase;
  text-shadow: 0 4px 0 rgba(43,25,20,.22);
}
.brass-dot { color: var(--brass-foil); }
.cover-subtitle {
  position: relative;
  z-index: 2;
  margin: 30px auto 0;
  max-width: 310px;
  font-family: "Cormorant Garamond", Georgia, serif;
  font-size: 28px;
  font-style: italic;
  color: var(--tea-paper);
}

.cover-seal {
  position: absolute;
  right: 44px;
  bottom: 52px;
  width: 106px;
  height: 106px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: radial-gradient(circle, #D9C39A, #C69A46 62%, #7B2435 64%);
  color: var(--ledger-burgundy);
  box-shadow: 0 14px 26px rgba(43,25,20,.34), inset 0 0 0 6px rgba(245,232,207,.42);
  font-family: "Space Grotesk", sans-serif;
  text-transform: uppercase;
}
.cover-seal span { display:block; font-size:34px; font-weight:700; line-height: .9; }
.cover-seal small { display:block; font-size:9px; letter-spacing:.16em; }

.botanical { position:absolute; fill:none; stroke: var(--pressed-sage); stroke-width:3; stroke-linecap:round; stroke-linejoin:round; opacity:.88; }
.botanical-cover { left: -22px; bottom: -38px; width: 210px; transform: rotate(-7deg); }
.scene.active .botanical path, .scene.active .botanical circle, .scene.active .sprig path, .scene.active .sprig circle { animation: drawStem 2200ms ease forwards; }
.botanical path, .botanical circle, .sprig path, .sprig circle { stroke-dasharray: 500; stroke-dashoffset: 500; }

.vellum {
  position: absolute;
  right: 8vw;
  bottom: 12vh;
  width: 280px;
  padding: 22px;
  border: 1px solid rgba(245,232,207,.48);
  border-radius: 18px;
  background: rgba(245,232,207,.16);
  backdrop-filter: blur(8px);
  box-shadow: 0 18px 42px rgba(43,25,20,.3);
}
.opening-note span { font-family:"Space Grotesk"; text-transform:uppercase; letter-spacing:.18em; color:var(--brass-foil); font-size:11px; }
.opening-note p { margin-top:10px; font-family:"Cormorant Garamond"; font-size:20px; color:var(--archive-cream); }

.section-heading { position:absolute; top: 92px; left: 8vw; max-width: 560px; }
.section-heading h2, .final-folio h2 {
  margin-top: 12px;
  font-family: "Jost", "Poppins", sans-serif;
  font-size: clamp(36px, 5.6vw, 74px);
  line-height: .95;
  color: var(--archive-cream);
  letter-spacing: -.04em;
}
.section-heading.compact h2 { font-size: clamp(28px, 4.2vw, 54px); }

.quarter-cabinet {
  width: min(1000px, 86vw);
  height: min(620px, 68vh);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  transform: translateY(42px);
}
.folio-card {
  position: relative;
  min-height: 250px;
  padding: 32px;
  border-radius: 24px;
  background: linear-gradient(145deg, var(--archive-cream), var(--tea-paper));
  color: var(--ink-brown);
  border: 1px solid rgba(198,154,70,.7);
  box-shadow: var(--paper-depth);
  overflow: hidden;
}
.folio-card:nth-child(2) { transform: rotate(1deg); background: linear-gradient(145deg, #F5E8CF, #D9C39A 72%); }
.folio-card:nth-child(3) { transform: rotate(-1deg); background: linear-gradient(145deg, #7B2435, #5A1726); color: #F5E8CF; }
.folio-card:nth-child(4) { transform: rotate(.6deg); }
.folio-number { position:absolute; top:22px; right:26px; color: var(--brass-foil); font-family:"Space Grotesk"; font-size: 42px; font-weight:700; }
.folio-card h3 { font-family:"Jost"; font-size: 34px; margin-top: 42px; }
.folio-card p { width: 70%; margin-top: 14px; font-family:"Cormorant Garamond"; font-size: 21px; line-height:1.16; }
.sprig { position:absolute; right:18px; bottom:10px; width: 210px; fill:none; stroke: var(--pressed-sage); stroke-width:3; stroke-linecap:round; opacity:.7; }
.folio-card:nth-child(3) .sprig { stroke: var(--tea-paper); opacity: .78; }

.month-grid {
  width: min(1120px, 90vw);
  margin-top: 120px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}
.month-card {
  position: relative;
  min-height: 142px;
  padding: 18px 18px 20px;
  border-radius: 18px;
  background: linear-gradient(160deg, var(--archive-cream), #ead7ae);
  color: var(--ink-brown);
  border: 1px solid rgba(198,154,70,.62);
  box-shadow: 0 14px 30px rgba(43,25,20,.3);
  overflow: hidden;
  transition: transform 420ms ease, box-shadow 420ms ease, background 420ms ease;
}
.month-card:nth-child(3n) { transform: rotate(.8deg); }
.month-card:nth-child(4n) { transform: rotate(-.8deg); }
.month-card b { font-family:"Space Grotesk"; font-size: 28px; color: var(--brass-foil); }
.month-card h3 { margin-top: 6px; font-family:"Jost"; font-size: 22px; }
.month-card p { margin-top: 8px; max-width: 170px; font-family:"Cormorant Garamond"; font-size: 17px; line-height: 1.1; opacity: 0; transform: translateY(8px); transition: opacity 320ms ease, transform 320ms ease; }
.month-card::after { content:""; position:absolute; width:76px; height:76px; right:-18px; bottom:-26px; border-radius:50%; border:1px solid rgba(104,124,74,.5); background: radial-gradient(circle, transparent 45%, rgba(104,124,74,.13) 46%); }
.month-card .tab { position:absolute; top:16px; right:-1px; width: 14px; height:48px; border-radius: 8px 0 0 8px; background: var(--pressed-sage); }
.month-card:hover { box-shadow: 0 22px 48px rgba(43,25,20,.4); background: linear-gradient(160deg, #F5E8CF, #D9C39A); }
.month-card:hover p { opacity: 1; transform: translateY(0); }

.final-stack { position: relative; width: min(760px, 84vw); height: min(610px, 72vh); display:grid; place-items:center; }
.final-sheet { position:absolute; width: 78%; height: 74%; border-radius:28px; border:1px solid rgba(198,154,70,.5); background: var(--tea-paper); box-shadow: var(--paper-depth); }
.sheet-a { transform: rotate(-7deg) translate(-32px, 18px); background: linear-gradient(145deg, #F5E8CF, #D9C39A); }
.sheet-b { transform: rotate(5deg) translate(36px, 28px); background: linear-gradient(145deg, #7B2435, #5A1726); }
.final-folio {
  position: relative;
  width: 78%;
  min-height: 430px;
  padding: 48px;
  border-radius: 30px;
  color: var(--ink-brown);
  background: linear-gradient(145deg, var(--archive-cream), var(--tea-paper));
  border: 1px solid rgba(198,154,70,.72);
  box-shadow: var(--paper-depth);
}
.final-folio h2 { color: var(--ink-brown); font-size: clamp(34px, 5vw, 62px); }
.final-folio p { margin-top: 24px; font-family:"Cormorant Garamond"; font-size: 24px; line-height:1.18; }
.brass-line { margin-top: 34px; height:2px; width:100%; background: linear-gradient(90deg, var(--brass-foil), transparent); animation: foilDraw 1600ms ease infinite alternate; }
.final-mark { position:absolute; right:42px; bottom:30px; width:72px; height:72px; border-radius:50%; display:grid; place-items:center; background:var(--ledger-burgundy); color:var(--brass-foil); font-family:"Space Grotesk"; font-weight:700; }

.scene-tabs {
  position: fixed;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  z-index: 14;
  display: flex;
  gap: 8px;
  padding: 8px;
  border: 1px solid rgba(217,195,154,.24);
  border-radius: 999px;
  background: rgba(43,25,20,.34);
  backdrop-filter: blur(10px);
}
.scene-tab {
  border: 0;
  border-radius: 999px;
  padding: 10px 15px;
  background: transparent;
  color: var(--tea-paper);
  font-family: "Space Grotesk", sans-serif;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .16em;
  cursor: pointer;
}
.scene-tab.active { background: var(--brass-foil); color: var(--ledger-burgundy); }

.magnetic { will-change: transform; transition: transform 500ms cubic-bezier(.19,1,.22,1); }

@keyframes drawStem { to { stroke-dashoffset: 0; } }
@keyframes foilDraw { from { transform: scaleX(.28); transform-origin:left; } to { transform: scaleX(1); transform-origin:left; } }

@media (max-width: 850px) {
  html, body { overflow: auto; }
  .annual-stage { height: auto; min-height: 100vh; }
  .scene { position: relative; min-height: 100vh; opacity: 1; transform: none; pointer-events: auto; }
  .scene:not(.active) { display: none; }
  .yearbook-card { min-height: 560px; padding: 42px 28px; }
  .quarter-cabinet, .month-grid { grid-template-columns: 1fr; height: auto; margin-top: 160px; }
  .month-grid { width: min(420px, 90vw); }
  .section-heading { left: 6vw; right: 6vw; }
  .opening-note { display: none; }
}
