/* =====================================================================
   FREE SPEECH — Block styles
   ===================================================================== */

/* --- Hero ----------------------------------------------------------- */
.fs-hero{
  position:relative;
  overflow:hidden;
  padding:clamp(3rem,10vw,9rem) var(--fs-gap);
  border-bottom:2px solid var(--fs-rule);
  background:var(--fs-paper);
}
.fs-hero--inverted{
  background:var(--fs-ink);
  color:var(--fs-paper);
  border-bottom-color:var(--fs-rule-invert);
}
.fs-hero__canvas{
  position:absolute; inset:0;
  width:100%; height:100%;
  z-index:0; opacity:.55;
}
.fs-hero__inner{
  position:relative; z-index:1;
  max-width:var(--fs-max); margin:0 auto;
}
.fs-hero__headline{ font-size:var(--fs-display); max-width:16ch; }
.fs-hero--inverted .fs-hero__headline{ color:var(--fs-paper); }
.fs-hero__deck{
  font-family:var(--fs-font-head);
  font-size:var(--fs-lead);
  font-weight:500;
  max-width:52ch;
  margin:1.5rem 0 0;
}
.fs-hero__byline{ font-family:var(--fs-font-mono); font-size:var(--fs-meta); text-transform:uppercase; letter-spacing:.08em; margin:1rem 0 2rem; color:var(--fs-ash); }
.fs-hero__inner .fs-btn{ margin-top:1rem; }

/* --- Ticker --------------------------------------------------------- */
.fs-ticker{
  display:flex; align-items:stretch;
  background:var(--fs-ink); color:var(--fs-paper);
  border-bottom:2px solid var(--fs-red);
  font-family:var(--fs-font-mono);
  overflow:hidden;
}
.fs-ticker__label{
  flex:0 0 auto;
  background:var(--fs-red); color:var(--fs-paper);
  font-weight:700; text-transform:uppercase; letter-spacing:.1em;
  font-size:var(--fs-meta);
  display:flex; align-items:center;
  padding:.75em 1.1em;
}
.fs-ticker__track{ flex:1 1 auto; overflow:hidden; }
.fs-ticker__run{
  display:inline-flex; white-space:nowrap;
  padding:.75em 0;
  animation:fs-ticker 40s linear infinite;
}
.fs-ticker__item{ padding:0 2.5em; font-size:var(--fs-meta); text-transform:uppercase; letter-spacing:.06em; }
.fs-ticker__item a{ color:var(--fs-paper); text-decoration:none; }
.fs-ticker__item a:hover{ color:var(--fs-red); }
@keyframes fs-ticker{ from{ transform:translateX(0);} to{ transform:translateX(-50%);} }

/* --- Pull-quote ----------------------------------------------------- */
.fs-pullquote{
  margin:3rem 0;
  padding-left:1.5rem;
  border-left:6px solid var(--fs-red);
}
.fs-pullquote blockquote{ font-size:var(--fs-h2); max-width:20ch; }
.fs-pullquote figcaption{
  font-family:var(--fs-font-mono);
  font-size:var(--fs-meta);
  text-transform:uppercase; letter-spacing:.08em;
  color:var(--fs-ash);
  margin-top:1rem;
}

/* --- Speech block --------------------------------------------------- */
.fs-speech{ max-width:var(--fs-read); margin:2.5rem auto; }
.fs-speech__meta{
  border-top:2px solid var(--fs-ink);
  border-bottom:1px solid var(--fs-line-faint);
  padding:1rem 0;
  margin-bottom:2rem;
}
.fs-speech__speaker{
  display:block;
  font-family:var(--fs-font-head);
  font-weight:900; text-transform:uppercase;
  font-size:var(--fs-h3);
  letter-spacing:-0.01em;
}
.fs-speech__line{
  font-family:var(--fs-font-mono);
  font-size:var(--fs-meta);
  text-transform:uppercase; letter-spacing:.08em;
  color:var(--fs-ash);
}
.fs-speech__body{ font-size:1.2rem; line-height:1.8; }
.fs-speech__body > p:first-of-type::first-letter{
  font-family:var(--fs-font-display);
  float:left; font-size:4.2rem; line-height:.8;
  padding:.05em .12em 0 0; color:var(--fs-red);
}
.fs-speech__source a{ font-family:var(--fs-font-mono); font-size:var(--fs-meta); text-transform:uppercase; letter-spacing:.08em; color:var(--fs-red); }

/* --- Engagement ----------------------------------------------------- */
.fs-engage{
  display:flex; flex-wrap:wrap; gap:1.5rem; align-items:center; justify-content:space-between;
  max-width:var(--fs-read); margin:3rem auto;
  padding:1.25rem 0;
  border-top:2px solid var(--fs-ink);
  border-bottom:2px solid var(--fs-ink);
}
.fs-engage__voice{
  display:inline-flex; align-items:center; gap:.75rem;
  font-family:var(--fs-font-mono); font-weight:700;
  text-transform:uppercase; letter-spacing:.06em; font-size:.85rem;
  background:var(--fs-paper); color:var(--fs-ink);
  border:2px solid var(--fs-ink); padding:.6em 1.1em; cursor:pointer;
  transition:.15s ease-out;
}
.fs-engage__voice[aria-pressed="true"],
.fs-engage__voice:hover{ background:var(--fs-red); border-color:var(--fs-red); color:var(--fs-paper); }
.fs-engage__count{ font-variant-numeric:tabular-nums; }
.fs-engage__share{ display:flex; align-items:center; gap:1rem; }
.fs-engage__share a,.fs-engage__share button{
  font-family:var(--fs-font-mono); font-weight:700; font-size:.85rem;
  text-transform:uppercase; letter-spacing:.06em;
  color:var(--fs-ink); background:none; border:0; cursor:pointer; text-decoration:none;
}
.fs-engage__share a:hover,.fs-engage__share button:hover{ color:var(--fs-red); }

/* --- Manifesto CTA -------------------------------------------------- */
.fs-cta{ background:var(--fs-ink); color:var(--fs-paper); padding:clamp(3rem,7vw,6rem) var(--fs-gap); text-align:center; }
.fs-cta__inner{ max-width:var(--fs-max); margin:0 auto; }
.fs-cta__heading{ font-size:var(--fs-h1); color:var(--fs-paper); }
.fs-cta__sub{ font-family:var(--fs-font-head); font-size:var(--fs-lead); margin:1rem 0 2rem; color:var(--fs-line-faint); }

/* --- Reading progress bar ------------------------------------------- */
.fs-progress{
  position:fixed; top:0; left:0; height:4px; width:0;
  background:var(--fs-red); z-index:9999;
}
