/* COGS: an illustrated proclamation. All assets are served locally. */
@font-face {
  font-family: "Cormorant Garamond";
  src: url("fonts/cormorant-medium.woff2") format("woff2");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Cormorant Garamond";
  src: url("fonts/cormorant-italic.woff2") format("woff2");
  font-weight: 500;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "DM Sans";
  src: url("fonts/dm-sans.woff2") format("woff2");
  font-weight: 100 1000;
  font-style: normal;
  font-display: swap;
}
:root {
  color-scheme: light;
  --paper: #f0ead8;
  --paper-light: #f6f1e4;
  --ink: #233e32;
  --forest: #203b32;
  --muted: #656950;
  --brass: #806331;
  --gold: #c6aa70;
  --rule: #b6b59a;
  --serif: "Cormorant Garamond", "Palatino Linotype", "Book Antiqua", Palatino, serif;
  --sans: "DM Sans", "Trebuchet MS", sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 1rem; }
body { margin: 0; padding: 18px; background: var(--forest); color: var(--ink); font-family: var(--sans); font-size: 15px; line-height: 1.65; }
body::selection { color: var(--paper-light); background: var(--forest); }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 5px; }
button { font: inherit; cursor: pointer; }
button, a { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible { outline: 3px solid #98742f; outline-offset: 5px; }
button:disabled { cursor: default; }
[hidden] { display: none !important; }
svg { display: block; }
p, h1, h2, figure { margin: 0; }
.skip-link { position: fixed; z-index: 10; left: 30px; top: 0; padding: 14px 20px; color: var(--paper); background: var(--forest); transform: translateY(-140%); }
.skip-link:focus { transform: translateY(0); }
/* Skip-link target is a landmark, not a control; avoid a page-sized focus ring. */
main:focus { outline: none; }
.page-frame { max-width: 1700px; margin: 0 auto; background: var(--paper); border: 1px solid var(--gold); position: relative; }
.page-frame::before { position: absolute; inset: 6px; border: 1px solid #c5bfa7; content: ""; pointer-events: none; z-index: 2; }
.masthead { margin: 0 4.6%; min-height: 115px; display: flex; align-items: center; justify-content: space-between; gap: 24px; border-bottom: 1px solid var(--rule); }
.brand { display: inline-flex; align-items: center; gap: 13px; text-decoration: none; }
.brand-mark { width: 53px; height: 53px; color: var(--brass); }
.brand-type { display: block; font-family: var(--serif); font-size: 39px; font-weight: 600; line-height: .9; letter-spacing: .1em; }
.brand-type > span { display: block; margin-top: 10px; font-family: var(--sans); font-weight: 500; font-size: 9px; letter-spacing: .125em; text-transform: uppercase; }
.header-nav { display: flex; align-items: center; gap: 42px; font-size: 12px; }
.chapter-link { min-height: 44px; display: inline-flex; align-items: center; gap: 15px; text-decoration: none; }
.chapter-link:hover { text-decoration: underline; }
.chapter-link > span { font-size: 19px; }
.coming-soon { display: inline-flex; align-items: center; gap: 9px; text-transform: uppercase; letter-spacing: .14em; font-size: 10px; font-weight: 600; padding: 7px 13px; border: 1px solid var(--rule); }
.status-dot { width: 5px; height: 5px; background: var(--brass); border-radius: 50%; }
.proclamation { display: grid; grid-template-columns: 1fr 1.04fr; align-items: center; padding: 34px 3.4% 37px 6.5%; position: relative; }
.hero-copy { position: relative; z-index: 1; padding: 30px 0 36px; }
.eyebrow { text-transform: uppercase; font-size: 10px; font-weight: 600; letter-spacing: .16em; line-height: 1.6; }
.hero-copy .eyebrow { margin-bottom: 25px; display: flex; align-items: center; gap: 11px; color: var(--brass); }
.hero-copy .eyebrow > span { font-size: 19px; line-height: 1; }
h1 { font-family: var(--serif); font-size: clamp(68px, 6.6vw, 106px); font-weight: 500; line-height: .99; letter-spacing: -.045em; }
.hero-aside { font-family: var(--serif); font-size: clamp(29px, 2.75vw, 42px); font-style: italic; font-weight: 500; letter-spacing: -.025em; color: var(--brass); margin-top: 15px; line-height: 1.2; }
.small-rule { display: flex; align-items: center; width: 85px; gap: 10px; font-size: 15px; color: var(--brass); margin: 26px 0 20px; }
.small-rule > span { height: 1px; flex: 1; background: var(--rule); }
.hero-description { max-width: 383px; font-size: 14px; line-height: 1.85; color: #535d4b; text-wrap: pretty; }
.primary-link { display: inline-flex; align-items: center; justify-content: space-between; gap: 24px; background: var(--forest); color: var(--paper-light); padding: 15px 20px; min-height: 52px; margin-top: 28px; text-decoration: none; font-size: 12px; font-weight: 500; border: 1px solid var(--forest); transition: background-color .18s, box-shadow .18s; }
.primary-link:hover { background: #314e3e; box-shadow: 3px 3px 0 #b4a478; }
.primary-link > span { color: var(--gold); font-size: 21px; line-height: 1; }
.hero-footnote { color: var(--muted); margin-top: 12px; font-size: 10px; letter-spacing: .025em; }
.illustration-panel { align-self: stretch; display: flex; flex-direction: column; justify-content: center; min-width: 0; position: relative; }
.drawing-heading { display: flex; align-items: center; justify-content: space-between; margin: 10px 5% -6px 12%; font-family: var(--serif); font-size: 14px; font-style: italic; color: var(--muted); gap: 20px; }
.drawing-heading > span:last-child { font-style: normal; font-size: 11px; letter-spacing: .08em; }
.contraption { width: 100%; }
.landscape { width: 100%; height: auto; overflow: visible; }
.contraption figcaption { display: flex; align-items: center; justify-content: center; gap: 12px; margin: -12px 6% 0 10%; font-family: var(--serif); font-size: 16px; font-style: italic; color: #5e614b; }
.figure-number { color: var(--brass); font-family: var(--sans); font-size: 9px; font-weight: 600; font-style: normal; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }
.caption-line { width: 35px; height: 1px; background: var(--rule); }
.launch-controls { display: flex; flex-direction: column; align-items: center; margin: 17px 0 0; }
.launch-button { display: inline-flex; align-items: center; justify-content: center; gap: 10px; border: 0; padding: 7px 13px; background: transparent; color: var(--ink); min-height: 44px; font-size: 12px; font-weight: 600; }
.launch-button > span { border-bottom: 1px solid var(--brass); }
.launch-button svg { width: 20px; height: 20px; color: var(--brass); transition: transform .2s; }
.launch-button:hover svg { transform: translate(2px, -2px); }
.launch-button[aria-disabled="true"] { cursor: progress; }
.launch-status { min-height: 33px; max-width: 350px; padding: 0 12px; font-size: 10px; color: var(--muted); text-align: center; line-height: 1.6; }
.no-script { font-size: 11px; text-align: center; margin: 20px; color: var(--muted); }
.quest { position: relative; display: grid; grid-template-columns: 1fr 1.18fr; align-items: start; column-gap: 65px; background: var(--forest); color: var(--paper); margin: 0 13px; padding: 51px 5.8% 50px; overflow: hidden; scroll-margin-top: 18px; }
.quest::before, .quest::after { content: ""; position: absolute; left: 12px; right: 12px; border-top: 1px solid #6c7654; pointer-events: none; }
.quest::before { top: 9px; }
.quest::after { bottom: 9px; }
.quest-heading .eyebrow { color: var(--gold); margin-bottom: 14px; }
h2 { font-family: var(--serif); font-weight: 500; font-size: clamp(30px, 3vw, 45px); letter-spacing: -.025em; line-height: 1.08; }
.quest-copy { max-width: 570px; padding-right: 48px; font-size: 12px; line-height: 1.85; position: relative; z-index: 1; }
.quest-copy p + p { margin-top: 12px; }
.quest-copy strong { color: var(--paper-light); font-weight: 600; }
.quest-signoff { color: var(--gold); font-family: var(--serif); font-size: 18px; font-style: italic; line-height: 1.4; }
.council-seal { position: absolute; width: 105px; height: 105px; border: 1px solid #7f865d; border-radius: 50%; right: -26px; top: 61px; color: var(--gold); display: flex; align-items: center; justify-content: center; flex-direction: column; transform: rotate(-19deg); }
.council-seal::before { content: ""; position: absolute; inset: 5px; border: 1px dashed #7f865d; border-radius: 50%; }
.council-seal svg { width: 35px; height: 35px; }
.seal-top, .seal-bottom { font-size: 8px; text-transform: uppercase; letter-spacing: .14em; }
.footer { margin: 0 4.6%; padding: 16px 0 15px; display: flex; align-items: center; justify-content: space-between; gap: 18px; color: var(--muted); font-size: 10px; }
.footer p > span { margin: 0 8px; color: var(--brass); }
.footer-domain { font-size: 9px; letter-spacing: .045em; }
.motion-button { display: flex; align-items: center; gap: 7px; padding: 8px; min-height: 44px; border: 0; color: var(--muted); background: transparent; font-size: 10px; }
.motion-button:hover:not(:disabled) { color: var(--ink); text-decoration: underline; text-underline-offset: 4px; }
.pause-icon { height: 12px; width: 12px; }
.motion-button[aria-pressed="true"] .pause-icon { opacity: .5; }

/* The motion state is shared by ambient and interaction animations. */
.pennant, .pennant-mark { transform-origin: 468px 278px; animation: pennant-breeze 5s ease-in-out infinite; }
.flight-guide { animation: drafting-line 22s linear infinite; }
#throwing-arm { transform-origin: 350px 333px; }
#flying-stone, .launch-spark { opacity: 0; }
.launching #throwing-arm { animation: arm-launch 2.4s ease-in-out both; }
.launching #loaded-stone { animation: loaded-stone 2.4s linear both; }
.launching #flying-stone { animation: projectile-flight 2.4s linear both; }
.launching .launch-spark { animation: launch-spark 2.4s ease-out both; }
[data-motion="paused"] *, [data-motion="paused"] *::before, [data-motion="paused"] *::after { animation-play-state: paused !important; }
[data-motion="paused"] { scroll-behavior: auto; }
@keyframes pennant-breeze { 0%, 100% { transform: skewY(-1deg) scaleX(1); } 50% { transform: skewY(3deg) scaleX(.94); } }
@keyframes drafting-line { to { stroke-dashoffset: -110; } }
@keyframes arm-launch { 0% { transform: rotate(0); } 15% { transform: rotate(-8deg); } 28%, 65% { transform: rotate(57deg); } 88%, 100% { transform: rotate(0); } }
@keyframes loaded-stone { 0%, 18% { opacity: 1; } 19%, 88% { opacity: 0; } 95%, 100% { opacity: 1; } }
@keyframes projectile-flight {
  0%, 18% { opacity: 0; transform: translate(289px, 217px) rotate(0); }
  19% { opacity: 1; transform: translate(300px, 206px) rotate(0); }
  32% { opacity: 1; transform: translate(343px, 146px) rotate(90deg); }
  44% { opacity: 1; transform: translate(400px, 123px) rotate(180deg); }
  56% { opacity: 1; transform: translate(465px, 124px) rotate(270deg); }
  68% { opacity: 1; transform: translate(527px, 151px) rotate(360deg); }
  80% { opacity: 1; transform: translate(579px, 193px) rotate(450deg); }
  81%, 100% { opacity: 0; transform: translate(579px, 193px) rotate(450deg); }
}
@keyframes launch-spark { 0%, 79% { opacity: 0; } 82% { opacity: 1; } 100% { opacity: 0; } }

/* Error document shares the same proclamation vocabulary. */
.error-body { min-height: 100vh; display: grid; place-items: center; }
.error-page { padding: 75px clamp(28px, 8vw, 100px); max-width: 820px; width: 100%; }
.error-page .brand { margin-bottom: 55px; }
.error-page h1 { font-size: clamp(56px, 8vw, 88px); margin: 18px 0; }
.error-page .hero-description { max-width: 450px; }
.error-page .eyebrow { color: var(--brass); }

@media (min-width: 1550px) {
  .proclamation { padding-top: 55px; padding-bottom: 55px; }
  .hero-description { font-size: 16px; max-width: 420px; }
  .quest-copy { font-size: 14px; }
}
@media (max-width: 1100px) {
  body { padding: 12px; }
  .masthead { min-height: 99px; }
  .header-nav { gap: 24px; }
  .proclamation { padding: 30px 2.8% 28px 5.5%; grid-template-columns: 1fr 1fr; }
  h1 { font-size: clamp(61px, 7.1vw, 78px); }
  .hero-copy .eyebrow { font-size: 8px; letter-spacing: .12em; }
  .hero-description { font-size: 12px; max-width: 320px; }
  .desktop-break { display: none; }
  .drawing-heading { font-size: 12px; margin-top: 20px; }
  .contraption figcaption { font-size: 13px; gap: 8px; }
  .caption-line { width: 20px; }
  .quest { gap: 34px; padding-top: 42px; padding-bottom: 42px; }
  .quest-copy { padding-right: 10px; }
  .council-seal { display: none; }
}
@media (max-width: 760px) {
  body { padding: 9px; }
  .page-frame::before { inset: 4px; }
  .masthead { min-height: 92px; margin: 0 6%; gap: 14px; }
  .brand { gap: 9px; }
  .brand-mark { width: 41px; height: 41px; }
  .brand-type { font-size: 32px; }
  .brand-type > span { font-size: 6.5px; letter-spacing: .095em; margin-top: 7px; }
  .chapter-link { display: none; }
  .coming-soon { padding: 5px 7px; font-size: 8px; letter-spacing: .08em; gap: 6px; white-space: nowrap; }
  .proclamation { display: flex; flex-direction: column; align-items: stretch; padding: 38px 7% 27px; }
  .hero-copy { padding: 0; }
  .hero-copy .eyebrow { font-size: 8px; letter-spacing: .12em; gap: 8px; margin-bottom: 20px; }
  h1 { font-size: clamp(60px, 10.9vw, 83px); }
  .hero-aside { font-size: clamp(28px, 5.3vw, 39px); margin-top: 12px; }
  .small-rule { margin: 21px 0 15px; }
  .hero-description { font-size: 13px; line-height: 1.8; max-width: 410px; }
  .primary-link { margin-top: 23px; }
  .hero-footnote { font-size: 9px; }
  .illustration-panel { margin: 35px -4% 0; }
  .drawing-heading { margin: 0 7% -10px 10%; font-size: 12px; }
  .contraption figcaption { font-size: 15px; margin: -12px 5% 0; }
  .launch-controls { margin-top: 10px; }
  .launch-status { max-width: 300px; }
  .quest { grid-template-columns: 1fr; margin: 0 9px; gap: 22px; padding: 36px 7% 38px; }
  .quest .eyebrow { font-size: 9px; }
  h2 { font-size: 35px; }
  .quest-copy { font-size: 12px; padding-right: 0; max-width: 500px; }
  .quest-signoff { font-size: 19px; }

  .footer { padding: 16px 0 18px; flex-wrap: wrap; gap: 0 14px; margin: 0 7%; font-size: 9px; }
  .footer p { flex-basis: 100%; }
  .footer-domain { margin-left: auto; }
  .motion-button { padding-left: 0; }
}
@media (max-width: 360px) {
  .brand-type > span { max-width: 100px; line-height: 1.45; }
  .coming-soon { font-size: 7px; }
  .masthead { gap: 7px; }
  .hero-copy .eyebrow { font-size: 7px; }
  h1 { font-size: 52px; }
  .hero-aside { font-size: 25px; }
  .contraption figcaption { font-size: 13px; }
  .caption-line { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
@media (forced-colors: active) {
  .primary-link, .launch-button, .motion-button { border: 1px solid ButtonText; }
  .landscape { forced-color-adjust: none; }
}
