:root {
  --ink: #15211f;
  --deep: #0f3f44;
  --river: #1e7b83;
  --gulf: #47b8bd;
  --foam: #f4fbf8;
  --sand: #e8d5b7;
  --shell: #f6ead7;
  --sunset: #e46f3c;
  --grass: #5b7a4c;
  --muted: #66766f;
  --line: rgba(21, 33, 31, .14);
  --shadow: 0 24px 70px rgba(21, 33, 31, .18);
  --display: "Bodoni 72", Georgia, "Times New Roman", serif;
  --body: "Jost", "Avenir Next", "Helvetica Neue", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--foam);
  color: var(--ink);
  font-family: var(--body);
  line-height: 1.65;
  overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
:focus-visible { outline: 3px solid var(--river); outline-offset: 3px; }
.skip-link { position:absolute; left:1rem; top:-4rem; z-index:1000; background:var(--ink); color:white; padding:.75rem 1rem; }
.skip-link:focus { top:1rem; }

.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(244,251,248,.9); backdrop-filter: blur(18px);
  border-bottom: 1px solid var(--line);
}
.header-inner { max-width: 1180px; margin: 0 auto; min-height: 76px; padding: 0 1.25rem; display:flex; align-items:center; justify-content:space-between; gap:1.5rem; }
.brand { font-family: var(--display); font-size: clamp(1.4rem, 3vw, 2.25rem); line-height: .42em; letter-spacing: .12em; text-transform: uppercase; padding-top: .28rem; }
.brand span { display:block; font-family:var(--body); font-size:.45em; line-height:1; letter-spacing:.36em; color:var(--muted); margin-bottom:.04rem; }
.main-nav { display:flex; gap:1rem; align-items:center; }
.main-nav a { font-size:.78rem; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); }
.main-nav a:hover { color:var(--deep); }
.nav-toggle { display:none; border:1px solid var(--line); background:white; border-radius:999px; padding:.6rem .8rem; }

.hero { position:relative; min-height: calc(100vh - 76px); display:grid; place-items:center; padding: clamp(5rem, 9vw, 8rem) 1.25rem; overflow:hidden; }
.hero::before {
  content:""; position:absolute; inset:-20%;
  background:
    radial-gradient(circle at 15% 20%, rgba(71,184,189,.55), transparent 28%),
    radial-gradient(circle at 85% 10%, rgba(228,111,60,.38), transparent 24%),
    linear-gradient(145deg, rgba(244,251,248,.96), rgba(232,213,183,.7) 45%, rgba(15,63,68,.12));
  transform: rotate(-4deg);
  pointer-events: none;
}
.hero::after { content:""; position:absolute; inset:0; background-image: linear-gradient(rgba(21,33,31,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(21,33,31,.04) 1px, transparent 1px); background-size: 42px 42px; mask-image: linear-gradient(to bottom, black, transparent 85%); pointer-events: none; }
.hero-inner { position:relative; z-index:1; max-width:1180px; width:100%; display:grid; grid-template-columns: minmax(0, 1.1fr) minmax(280px, .75fr); gap: clamp(2rem, 6vw, 5rem); align-items:center; }
.eyebrow { color:var(--river); text-transform:uppercase; letter-spacing:.32em; font-weight:700; font-size:.72rem; }
.hero h1 { font-family:var(--display); font-size: clamp(3.4rem, 10vw, 8.8rem); line-height:.88; margin:.7rem 0 1.2rem; letter-spacing:-.045em; }
.hero h1 em { color:var(--river); font-style:italic; }
.lead { font-size: clamp(1.08rem, 2vw, 1.35rem); color:#3d504a; max-width: 58ch; }
.button-row { display:flex; flex-wrap:wrap; gap:.9rem; margin-top:2rem; }
.btn { display:inline-flex; align-items:center; justify-content:center; border-radius:999px; padding:.92rem 1.28rem; font-weight:800; text-transform:uppercase; letter-spacing:.12em; font-size:.76rem; border:1px solid var(--ink); }
.btn.primary { background:var(--ink); color:white; }
.btn.secondary { background:rgba(255,255,255,.72); }
.hero-card { background:rgba(255,255,255,.7); border:1px solid var(--line); border-radius:28px; padding:1.35rem; box-shadow:var(--shadow); backdrop-filter: blur(14px); }
.field-guide { aspect-ratio:4/5; border-radius:22px; background:linear-gradient(160deg, var(--deep), var(--river) 55%, var(--sand)); color:white; padding:1.25rem; display:flex; flex-direction:column; justify-content:space-between; position:relative; overflow:hidden; }
.field-guide::after { content:""; position:absolute; width:190px; height:190px; border:1px solid rgba(255,255,255,.2); border-radius:999px; right:-48px; top:-42px; }
.field-guide strong { font-family:var(--display); font-size:2.1rem; line-height:1; }

.section { padding: clamp(4rem, 8vw, 7rem) 1.25rem; }
.container { max-width:1180px; margin:0 auto; }
.section-head { max-width:720px; margin-bottom:2.5rem; }
.section-title { font-family:var(--display); font-size:clamp(2.2rem, 5vw, 4.6rem); line-height:.98; margin:.2rem 0 1rem; }
.muted { color:var(--muted); }
.grid { display:grid; gap:1.25rem; }
.cards-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cards-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.card { background:white; border:1px solid var(--line); border-radius:24px; padding:1.25rem; box-shadow:0 12px 38px rgba(21,33,31,.08); }
.card h3 { font-family:var(--display); font-size:1.65rem; margin:.2rem 0 .65rem; }
.card .meta { color:var(--river); font-size:.72rem; text-transform:uppercase; letter-spacing:.2em; font-weight:800; }
.visual-token { min-height:190px; border-radius:20px; background:linear-gradient(145deg, rgba(71,184,189,.28), rgba(228,111,60,.2)), repeating-linear-gradient(135deg, rgba(21,33,31,.07) 0 1px, transparent 1px 18px); margin-bottom:1rem; display:grid; place-items:center; color:var(--deep); font-family:var(--display); font-size:3rem; }
.character-portrait { width:100%; aspect-ratio:3/2; object-fit:cover; object-position:center; border-radius:20px; margin-bottom:1rem; border:1px solid var(--line); background:var(--shell); }
.band { background:var(--ink); color:white; }
.band .section-title, .band h3 { color:white; }
.band .muted { color:rgba(255,255,255,.72); }
.journal-card time { color:var(--river); font-size:.75rem; font-weight:800; text-transform:uppercase; letter-spacing:.16em; }
.footer { background:#0b1715; color:rgba(255,255,255,.78); padding:3rem 1.25rem; }
.footer a { color:white; }
/* Held in the stylesheet, not inline on the element, so the 900px block below can reach it.
   The right column holds an email address that cannot break, so on a narrow phone a two
   column track cannot shrink below it and the whole page scrolls sideways. */
.footer-grid { grid-template-columns:1.2fr .8fr; gap:2rem; }
.socials { display:flex; gap:.9rem; flex-wrap:wrap; }
.socials a { border:1px solid var(--line); border-radius:999px; padding:.55rem .85rem; font-size:.75rem; text-transform:uppercase; letter-spacing:.12em; }
.footer .socials a { border-color:rgba(255,255,255,.22); }
.placeholder-note { font-size:.75rem; color:var(--muted); border-top:1px solid var(--line); padding-top:.8rem; margin-top:.9rem; }
.prose { max-width: 860px; }
.prose p { font-size:1.07rem; }
.prose h2 { font-family:var(--display); font-size:2.4rem; margin-top:2.4rem; }
/* Not redundant: the global `a` reset strips colour and underline, so without this an
   inline body link is invisible. Kept off `.prose a` so it never hits a .btn or card. */
.prose p a, .prose li a { color:var(--river); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.18em; }
.prose p a:hover, .prose li a:hover { color:var(--deep); }
.launch-cta { display:grid; grid-template-columns: 1.2fr .8fr; gap:2rem; align-items:center; background:linear-gradient(145deg, #fff, var(--shell)); border:1px solid var(--line); border-radius:30px; padding:clamp(1.4rem, 4vw, 2.4rem); box-shadow:var(--shadow); }
.launch-cta h2 { font-family:var(--display); font-size:clamp(2rem, 4vw, 3.5rem); line-height:1; margin:.3rem 0 1rem; }
.launch-actions { display:grid; gap:1rem; }
.launch-form { display:grid; gap:.65rem; }
.launch-form label { font-size:.72rem; text-transform:uppercase; letter-spacing:.18em; font-weight:800; color:var(--river); }
.launch-form-row { display:grid; grid-template-columns: 1fr auto; gap:.55rem; }
.launch-form input[type="email"] { width:100%; border:1px solid var(--line); border-radius:999px; padding:.94rem 1.1rem; font:inherit; background:white; color:var(--ink); }
.form-note { font-size:.8rem; color:var(--muted); margin:0; }
.homepage-proof { border-left: 4px solid var(--sunset); padding-left: 1rem; color:#3d504a; }

.linkhub { max-width:560px; margin:0 auto; }
.linkhub-intro { text-align:center; margin-bottom:2.25rem; }
.linkhub-intro .section-title { font-size:clamp(2rem, 8vw, 3rem); }
.linkhub-intro p { color:var(--muted); margin:.4rem 0 0; }
.linkhub-stack { display:grid; gap:.8rem; }
.linkhub-item { display:grid; align-content:center; gap:.2rem; min-height:66px; padding:1rem 1.2rem; background:white; border:1px solid var(--line); border-radius:18px; box-shadow:0 10px 30px rgba(21,33,31,.07); transition:transform .15s ease, border-color .15s ease; }
.linkhub-item:hover { transform:translateY(-2px); border-color:var(--river); }
.linkhub-item strong { font-family:var(--display); font-size:1.35rem; line-height:1.12; }
.linkhub-item span { font-size:.86rem; color:var(--muted); line-height:1.4; }
.linkhub-item .linkhub-tag { color:var(--river); font-size:.66rem; text-transform:uppercase; letter-spacing:.2em; font-weight:800; margin-bottom:.1rem; }
.linkhub-item.feature { background:linear-gradient(145deg, var(--deep), var(--river)); border-color:transparent; color:white; box-shadow:var(--shadow); }
.linkhub-item.feature span { color:rgba(255,255,255,.82); }
.linkhub-item.feature .linkhub-tag { color:var(--gulf); }
.linkhub-item.feature:hover { border-color:var(--gulf); }
.linkhub-form { margin-top:2.25rem; }
.linkhub .socials { justify-content:center; margin-top:1.6rem; }
.linkhub .placeholder-note { text-align:center; }

@media (max-width: 900px) {
  .main-nav { display:none; position:absolute; top:76px; left:0; right:0; background:white; border-bottom:1px solid var(--line); padding:1rem 1.25rem; flex-direction:column; align-items:flex-start; }
  .main-nav.open { display:flex; }
  .nav-toggle { display:inline-flex; }
  .hero-inner { grid-template-columns:1fr; }
  .cards-3, .cards-4 { grid-template-columns:1fr; }
  .launch-cta { grid-template-columns:1fr; }
  .launch-form-row { grid-template-columns:1fr; }
  .footer-grid { grid-template-columns:1fr; }
}

/* ---------- Comics ---------- */
.comic-panels { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:1rem; }
.comic-panel { margin:0; background:var(--shell); border:2px solid var(--ink); border-radius:18px; overflow:hidden; box-shadow:0 12px 38px rgba(21,33,31,.08); }
/* <picture> is inline, so without this the block img leaves a baseline gap above the caption. */
.comic-panel picture { display:block; }
.comic-panel img { width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; }
.comic-panel figcaption { background:var(--ink); color:var(--foam); font-size:.7rem; font-weight:800; letter-spacing:.2em; text-transform:uppercase; padding:.5rem .9rem; }

.comic-transcript { max-width:860px; margin-top:3rem; padding-top:2rem; border-top:1px solid var(--line); }
.comic-transcript h2 { font-family:var(--display); font-size:clamp(1.9rem, 4vw, 2.4rem); margin:0 0 .4rem; }
.comic-transcript h3 { font-family:var(--display); font-size:1.35rem; margin:0 0 .3rem; }
.comic-transcript ol { list-style:none; margin:1.6rem 0 0; padding:0; display:grid; gap:1.6rem; }
.comic-scene { color:var(--muted); margin:0; }
.comic-silent { margin:.6rem 0 0; }
.comic-lines { margin:.6rem 0 0; }
.comic-lines dt { color:var(--deep); font-weight:800; font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; }
.comic-lines dd { margin:0 0 .7rem; }
.comic-lines dd:last-of-type { margin-bottom:0; }
.comic-lines dd.thought { font-style:italic; }

.comic-nav { display:flex; flex-wrap:wrap; gap:.8rem; margin-top:2.5rem; }
.comic-nav-link { flex:1 1 200px; display:grid; align-content:center; gap:.15rem; min-height:66px; padding:.9rem 1.15rem; background:white; border:1px solid var(--line); border-radius:18px; box-shadow:0 10px 30px rgba(21,33,31,.07); transition:transform .15s ease, border-color .15s ease; }
.comic-nav-link:hover { transform:translateY(-2px); border-color:var(--river); }
.comic-nav-link span { color:var(--river); font-size:.66rem; font-weight:800; letter-spacing:.2em; text-transform:uppercase; }
.comic-nav-link strong { font-family:var(--display); font-size:1.3rem; line-height:1.12; }
.comic-nav-next { text-align:right; }
.comic-notes { margin-top:2.5rem; }
.comic-notes p { margin:.45rem 0 0; }
.comic-notes p:first-child { margin-top:0; }

.comic-card { transition:transform .15s ease, border-color .15s ease; }
.comic-card:hover { transform:translateY(-3px); border-color:var(--river); }
.comic-thumb { width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; background:var(--shell); border:2px solid var(--ink); border-radius:16px; margin-bottom:1rem; }

/* Both steps are set by panel width, not by device class. A 2-up panel bottoms
   out at 248px just above the 1-col step; a 4-up panel is only that wide once
   the viewport passes ~1098px, so stepping to four any earlier would render
   panels smaller than the narrowest they ever get on a phone. Stepping at the
   existing 900px would put a 199px panel on a 901px laptop - the worst case in
   the whole layout. Nothing here overrides the 900px block; it does not touch
   .comic-panels. */
@media (max-width: 1100px) {
  .comic-panels { grid-template-columns:repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .comic-panels { grid-template-columns:1fr; }
  .comic-nav-next { text-align:left; }
}
@media (prefers-reduced-motion: reduce) {
  .comic-card, .comic-nav-link { transition:none; }
  .comic-card:hover, .comic-nav-link:hover { transform:none; }
}
