/* ─────────────────────────────────────────────────────────────────────────
   v2.css — components added in the August 2026 repositioning.

   Loaded LAST, after pages.css. Every class is namespaced `v2-` so nothing
   here collides with the existing cascade. Tokens come from tokens.css:
   sharp corners, hairline --ink-10 rules, mono uppercase micro-labels,
   Source Serif display at weight 500, --signal reserved for hover accents.

   Sections, in order:
     01  Page furniture — breadcrumbs, notes, section headers
     02  Video hero + click-to-play facade
     03  Proof line
     04  Offer ladder
     05  Audience cards
     06  Named testimonials
     07  Process steps
     08  FAQ accordion
     09  Talk list
     10  Sector page blocks
     11  Organiser kit
     12  Booking form
     13  Closing band
   ───────────────────────────────────────────────────────────────────────── */

/* ═══ 01 · Page furniture ═══════════════════════════════════════════════ */

/* Sections live inside .page, which already supplies max-width and the
   horizontal gutter. So .v2-wrap is a plain block — adding padding here would
   double the gutter and push content out of line with the masthead. Sections
   that need to bleed past the gutter (.v2-proofline, .v2-band) use the site's
   established 100vw + negative-margin pattern instead. */
.v2-wrap { width: 100%; }

.v2-section {
  padding: var(--space-6) 0;
  border-bottom: 1px solid var(--ink-10);
}
@media (min-width: 900px) {
  .v2-section { padding: var(--space-7) 0; }
}

.v2-label {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-60);
  margin-bottom: var(--space-2);
}

.v2-h2 {
  font-family: var(--body);
  font-weight: 500;
  font-size: clamp(28px, 3.6vw, 44px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  text-wrap: balance;
  max-width: 24ch;
}

.v2-h2 + .v2-intro { margin-top: var(--space-2); }

.v2-intro {
  font-size: 19px;
  line-height: 1.6;
  color: var(--ink-80);
  max-width: 62ch;
}

.v2-read { max-width: var(--read-max); }
.v2-read p + p { margin-top: var(--space-2); }

.v2-crumbs {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-40);
  padding: var(--space-3) 0 0;
}
.v2-crumbs a { color: var(--ink-60); text-decoration: none; }
.v2-crumbs a:hover { color: var(--signal); }
.v2-crumbs span { margin: 0 8px; }

.v2-note {
  border-left: 2px solid var(--ink-20);
  padding-left: var(--space-2);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-60);
  max-width: 60ch;
}

/* ═══ 02 · Video hero ═══════════════════════════════════════════════════ */

.v2-hero {
  padding: var(--space-5) 0 var(--space-6);
  border-bottom: 1px solid var(--ink-10);
}
.v2-hero-grid {
  display: grid;
  gap: var(--space-4);
  align-items: center;
}
@media (min-width: 1000px) {
  .v2-hero { padding: var(--space-6) 0 var(--space-7); }
  .v2-hero-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    gap: var(--space-5);
  }
}

.v2-hero-eyebrow {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  align-items: baseline;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-60);
  margin-bottom: var(--space-3);
}
.v2-hero-eyebrow .dot { color: var(--ink-20); }

.v2-h1 {
  font-family: var(--body);
  font-weight: 500;
  font-size: clamp(34px, 5.4vw, 62px);
  line-height: 1.03;
  letter-spacing: -0.025em;
  text-wrap: balance;
  max-width: 20ch;
}
.v2-h1 em {
  font-style: normal;
  box-shadow: inset 0 -0.14em 0 var(--signal);
}

.v2-hero-lede {
  margin-top: var(--space-3);
  font-size: clamp(18px, 2vw, 21px);
  line-height: 1.55;
  color: var(--ink-80);
  max-width: 46ch;
}

.v2-hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-top: var(--space-4);
}

.v2-hero-meta {
  margin-top: var(--space-3);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-40);
}

/* Click-to-play facade. Nothing is requested from YouTube until the visitor
   clicks, so the page carries no third-party cookie on load and the consent
   banner stays honest. js/video.js swaps in the iframe. */
.v2-video {
  position: relative;
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 1px solid var(--ink-20);
  background: var(--ink);
  overflow: hidden;
  cursor: pointer;
  padding: 0;
  text-align: left;
  color: var(--paper);
}
.v2-video img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.82;
  transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}
.v2-video:hover img { opacity: 0.66; transform: scale(1.02); }
.v2-video iframe { width: 100%; height: 100%; border: 0; display: block; }

.v2-video-play {
  position: absolute;
  inset: auto auto var(--space-3) var(--space-3);
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--paper);
  pointer-events: none;
}
.v2-video-play .disc {
  width: 44px;
  height: 44px;
  border: 1px solid rgba(246, 245, 242, 0.7);
  border-radius: 50%;
  display: grid;
  place-items: center;
  flex: none;
  transition: background 0.25s, border-color 0.25s;
}
.v2-video-play .disc::before {
  content: "";
  width: 0;
  height: 0;
  border-left: 11px solid currentColor;
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  margin-left: 3px;
}
.v2-video:hover .v2-video-play .disc {
  background: var(--signal);
  border-color: var(--signal);
}

.v2-video-caption {
  margin-top: 10px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-40);
}

/* Shown instead of the facade until a reel exists. Reads as intentional
   rather than unfinished: a stage still with a one-line caption. */
.v2-video.is-still { cursor: default; }
.v2-video.is-still .v2-video-play { display: none; }

/* ═══ 03 · Proof line ═══════════════════════════════════════════════════ */

.v2-proofline {
  background: var(--ink);
  color: var(--paper);
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  padding: var(--space-2) var(--space-4);
  border-top: 1px solid rgba(246, 245, 242, 0.1);
  border-bottom: 1px solid rgba(246, 245, 242, 0.1);
}
.v2-proofline-inner {
  max-width: var(--page-max);
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px var(--space-2);
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.v2-proofline-inner .sep { color: rgba(246, 245, 242, 0.3); }
.v2-proofline-inner b { font-weight: 700; }

/* ═══ 04 · Offer ladder ════════════════════════════════════════════════ */

.v2-ladder {
  display: grid;
  gap: 0;
  margin-top: var(--space-4);
  border-top: 1px solid var(--ink-10);
}
@media (min-width: 760px) {
  .v2-ladder { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1180px) {
  .v2-ladder { grid-template-columns: repeat(4, 1fr); }
}

.v2-rung {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--ink-10);
  border-left: 3px solid transparent;
  text-decoration: none;
  color: inherit;
  transition: background 0.25s cubic-bezier(0.16, 1, 0.3, 1),
              border-left-color 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}
@media (min-width: 760px) {
  .v2-rung + .v2-rung { border-left: 1px solid var(--ink-10); }
}
.v2-rung:hover {
  background: var(--ink-05);
  border-left-color: var(--signal);
}

.v2-rung-n {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-40);
}
.v2-rung h3 {
  font-family: var(--body);
  font-weight: 500;
  font-size: 23px;
  line-height: 1.15;
  letter-spacing: -0.015em;
}
.v2-rung p {
  font-size: 16px;
  line-height: 1.55;
  color: var(--ink-80);
  flex: 1;
}

/* The outcome line is the part a booker forwards to their budget holder,
   so it is set apart from the description rather than folded into it. */
.v2-rung-out {
  font-family: var(--mono);
  font-size: 12px;
  line-height: 1.55;
  letter-spacing: 0.01em;
  text-transform: none;
  color: var(--ink);
  border-top: 1px solid var(--ink-10);
  padding-top: var(--space-2);
}
.v2-rung-out b {
  display: block;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-40);
  margin-bottom: 6px;
  font-weight: 500;
}

.v2-rung-spec {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-60);
}
.v2-rung-spec span::after { content: " ·"; color: var(--ink-20); }
.v2-rung-spec span:last-child::after { content: ""; }

.v2-rung-more {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink);
}
.v2-rung:hover .v2-rung-more { color: var(--signal); }

/* ═══ 05 · Audience cards ══════════════════════════════════════════════ */

.v2-auds {
  display: grid;
  gap: var(--space-3);
  margin-top: var(--space-4);
}
@media (min-width: 860px) {
  .v2-auds { grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 1px solid var(--ink-10); }
}

.v2-aud {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-3) 0;
  border-top: 1px solid var(--ink-10);
  text-decoration: none;
  color: inherit;
}
@media (min-width: 860px) {
  .v2-aud { border-top: 0; padding: var(--space-4) var(--space-3); }
  .v2-aud + .v2-aud { border-left: 1px solid var(--ink-10); }
}
.v2-aud:hover { background: var(--ink-05); }

.v2-aud h3 {
  font-family: var(--body);
  font-weight: 500;
  font-size: 22px;
  line-height: 1.2;
  letter-spacing: -0.015em;
}
.v2-aud p { font-size: 16.5px; line-height: 1.6; color: var(--ink-80); flex: 1; }
.v2-aud-more {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.v2-aud:hover .v2-aud-more { color: var(--signal); }

/* ═══ 06 · Named testimonials ══════════════════════════════════════════ */

.v2-quotes {
  display: grid;
  gap: var(--space-3);
  margin-top: var(--space-4);
}
@media (min-width: 860px) {
  .v2-quotes { grid-template-columns: repeat(3, 1fr); }
}

.v2-quote {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-3);
  border: 1px solid var(--ink-10);
  background: var(--ink-05);
}
.v2-quote blockquote {
  font-size: 18px;
  line-height: 1.55;
  letter-spacing: -0.008em;
  flex: 1;
}
.v2-quote blockquote::before { content: "\201C"; }
.v2-quote blockquote::after { content: "\201D"; }
.v2-quote cite {
  font-family: var(--mono);
  font-size: 11px;
  font-style: normal;
  line-height: 1.6;
  letter-spacing: 0.06em;
  color: var(--ink-60);
}
.v2-quote cite b {
  display: block;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ink);
  font-weight: 500;
}

/* Placeholder state: an unnamed quote is marked as such in the markup so the
   named ones read as the standard and the gap stays visible while it lasts. */
.v2-quote.is-anon cite b { color: var(--ink-60); }

/* ═══ 07 · Process steps ═══════════════════════════════════════════════ */

.v2-steps {
  display: grid;
  gap: 0;
  margin-top: var(--space-4);
  border-top: 1px solid var(--ink-10);
  counter-reset: v2step;
}
@media (min-width: 1000px) {
  .v2-steps { grid-template-columns: repeat(4, 1fr); }
}

.v2-step {
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--ink-10);
  counter-increment: v2step;
}
@media (min-width: 1000px) {
  .v2-step { padding: var(--space-3); }
  .v2-step + .v2-step { border-left: 1px solid var(--ink-10); }
}
.v2-step::before {
  content: counter(v2step, decimal-leading-zero);
  display: block;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  color: var(--signal);
  margin-bottom: var(--space-1);
}
.v2-step h3 {
  font-family: var(--body);
  font-weight: 500;
  font-size: 19px;
  line-height: 1.25;
  margin-bottom: 6px;
}
.v2-step p { font-size: 16px; line-height: 1.55; color: var(--ink-80); }
.v2-step .when {
  display: block;
  margin-top: var(--space-1);
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-40);
}

/* ═══ 08 · FAQ accordion ══════════════════════════════════════════════ */

.v2-faq { margin-top: var(--space-4); border-top: 1px solid var(--ink-10); max-width: 78ch; }

.v2-faq details { border-bottom: 1px solid var(--ink-10); }
.v2-faq summary {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  padding: var(--space-2) 0;
  cursor: pointer;
  font-family: var(--body);
  font-weight: 500;
  font-size: 19px;
  line-height: 1.35;
  list-style: none;
}
.v2-faq summary::-webkit-details-marker { display: none; }
.v2-faq summary::after {
  content: "+";
  margin-left: auto;
  font-family: var(--mono);
  font-size: 18px;
  color: var(--ink-40);
  flex: none;
  transition: color 0.2s;
}
.v2-faq details[open] summary::after { content: "\2013"; color: var(--signal); }
.v2-faq summary:hover { color: var(--signal); }
.v2-faq .v2-faq-body {
  padding: 0 0 var(--space-3);
  max-width: 68ch;
  font-size: 17px;
  line-height: 1.65;
  color: var(--ink-80);
}
.v2-faq .v2-faq-body p + p { margin-top: var(--space-2); }

/* ═══ 09 · Talk list ══════════════════════════════════════════════════ */

.v2-talks { margin-top: var(--space-4); border-top: 1px solid var(--ink-10); }

.v2-talk {
  display: grid;
  gap: var(--space-2);
  padding: var(--space-4) 0;
  border-bottom: 1px solid var(--ink-10);
}
@media (min-width: 900px) {
  .v2-talk { grid-template-columns: 3.5rem minmax(0, 1.1fr) minmax(0, 1fr); gap: var(--space-3); }
}
.v2-talk-n {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  color: var(--ink-40);
  padding-top: 6px;
}
.v2-talk h3 {
  font-family: var(--body);
  font-weight: 500;
  font-size: clamp(21px, 2.3vw, 27px);
  line-height: 1.2;
  letter-spacing: -0.018em;
  text-wrap: balance;
}
/* The subtitle carries the argument, so it stays in the reading face.
   Only the language tag is set in mono caps. */
.v2-talk-sub {
  margin-top: 8px;
  font-size: 17px;
  line-height: 1.45;
  color: var(--ink-60);
  max-width: 34ch;
}
.v2-talk-lang {
  margin-top: var(--space-1);
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-40);
}
.v2-talk p { font-size: 16.5px; line-height: 1.6; color: var(--ink-80); }
.v2-talk-take {
  margin-top: var(--space-2);
  padding-top: var(--space-2);
  border-top: 1px solid var(--ink-10);
}
.v2-talk-take b {
  display: block;
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-40);
  margin-bottom: 6px;
}
.v2-talk-take ul { list-style: none; }
.v2-talk-take li {
  font-size: 16px;
  line-height: 1.5;
  padding-left: 18px;
  position: relative;
}
.v2-talk-take li + li { margin-top: 6px; }
.v2-talk-take li::before {
  content: "\2014";
  position: absolute;
  left: 0;
  color: var(--ink-40);
}

/* ═══ 10 · Sector page blocks ═════════════════════════════════════════ */

.v2-sector-hero {
  padding: var(--space-5) 0 var(--space-5);
  border-bottom: 1px solid var(--ink-10);
}
.v2-sector-hero .v2-h1 { max-width: 21ch; }
.v2-sector-hero .v2-hero-lede { max-width: 58ch; }

.v2-fails {
  display: grid;
  gap: 0;
  margin-top: var(--space-4);
  border-top: 1px solid var(--ink-10);
}
@media (min-width: 900px) {
  .v2-fails { grid-template-columns: repeat(3, 1fr); }
}
.v2-fail {
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--ink-10);
}
@media (min-width: 900px) {
  .v2-fail { padding: var(--space-3); }
  .v2-fail + .v2-fail { border-left: 1px solid var(--ink-10); }
}
.v2-fail h3 {
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--signal);
  margin-bottom: var(--space-1);
}
.v2-fail p { font-size: 16.5px; line-height: 1.6; color: var(--ink-80); }

.v2-logos-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-4);
  margin-top: var(--space-3);
}
.v2-logos-row img {
  height: 26px;
  width: auto;
  filter: grayscale(1);
  opacity: 0.62;
}

/* ═══ 11 · Organiser kit ══════════════════════════════════════════════ */

.v2-kit {
  display: grid;
  gap: 0;
  margin-top: var(--space-4);
  border-top: 1px solid var(--ink-10);
}
@media (min-width: 820px) {
  .v2-kit { grid-template-columns: 1fr 1fr; }
}
.v2-kit-item {
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--ink-10);
}
@media (min-width: 820px) {
  .v2-kit-item { padding: var(--space-3); }
  .v2-kit-item:nth-child(odd) { border-right: 1px solid var(--ink-10); }
}
.v2-kit-item h3 {
  font-family: var(--body);
  font-weight: 500;
  font-size: 20px;
  line-height: 1.25;
  margin-bottom: 6px;
}
.v2-kit-item p { font-size: 16px; line-height: 1.55; color: var(--ink-80); margin-bottom: var(--space-2); }
.v2-kit-item a.dl {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink);
}
.v2-kit-item a.dl:hover { color: var(--signal); }

.v2-copyable {
  font-family: var(--mono);
  font-size: 13px;
  line-height: 1.7;
  background: var(--ink-05);
  border: 1px solid var(--ink-10);
  padding: var(--space-2);
  white-space: pre-wrap;
  overflow-x: auto;
}

/* ═══ 12 · Booking form ═══════════════════════════════════════════════ */

.v2-book {
  display: grid;
  gap: var(--space-5);
  margin-top: var(--space-4);
}
@media (min-width: 980px) {
  .v2-book { grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr); gap: var(--space-6); }
}

.v2-form { display: grid; gap: var(--space-3); }
.v2-form-row { display: grid; gap: var(--space-3); }
@media (min-width: 600px) {
  .v2-form-row.two { grid-template-columns: 1fr 1fr; }
}
.v2-field { display: grid; gap: 6px; }
.v2-field label {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-60);
}
.v2-field .opt { color: var(--ink-40); }
.v2-field input,
.v2-field select,
.v2-field textarea {
  font-family: var(--body);
  font-size: 17px;
  line-height: 1.5;
  color: var(--ink);
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--ink-20);
  padding: 10px 0;
  border-radius: 0;
  appearance: none;
  width: 100%;
}
.v2-field select {
  font-family: var(--mono);
  font-size: 13px;
  background-image: linear-gradient(45deg, transparent 50%, var(--ink-60) 50%),
                    linear-gradient(135deg, var(--ink-60) 50%, transparent 50%);
  background-position: right 8px center, right 3px center;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
  padding-right: 22px;
}
.v2-field textarea { resize: vertical; min-height: 120px; }
.v2-field input:focus,
.v2-field select:focus,
.v2-field textarea:focus {
  border-bottom-color: var(--signal);
  outline: none;
}
.v2-field input:focus-visible,
.v2-field select:focus-visible,
.v2-field textarea:focus-visible { outline: 2px solid var(--signal); outline-offset: 4px; }

.v2-form-foot {
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink-60);
  max-width: 52ch;
}

.v2-routes { display: grid; gap: var(--space-3); }
.v2-route {
  border-top: 1px solid var(--ink-10);
  padding-top: var(--space-2);
}
.v2-route h3 {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  margin-bottom: 6px;
}
.v2-route p { font-size: 16px; line-height: 1.6; color: var(--ink-80); }
.v2-route a { color: var(--ink); }

/* ═══ 13 · Closing band ═══════════════════════════════════════════════ */

.v2-band {
  background: var(--ink);
  color: var(--paper);
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  padding: var(--space-6) var(--space-4);
}
@media (min-width: 900px) {
  .v2-band { padding: var(--space-7) var(--space-4); }
}
.v2-band-inner {
  max-width: var(--page-max);
  margin: 0 auto;
  display: grid;
  gap: var(--space-3);
}
.v2-band .v2-label { color: rgba(246, 245, 242, 0.6); }
.v2-band h2 {
  font-family: var(--body);
  font-weight: 500;
  font-size: clamp(28px, 4vw, 46px);
  line-height: 1.08;
  letter-spacing: -0.022em;
  max-width: 22ch;
  text-wrap: balance;
}
.v2-band p { font-size: 18px; line-height: 1.6; color: rgba(246, 245, 242, 0.8); max-width: 54ch; }
.v2-band-cta { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-1); }
.v2-band .cta-primary {
  background: var(--paper);
  color: var(--ink);
  border-color: var(--paper);
}
.v2-band .cta-primary:hover { background: var(--signal); border-color: var(--signal); color: var(--paper); }
.v2-band .cta-quiet { color: var(--paper); }
.v2-band a { color: var(--paper); }
.v2-band .fineprint {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(246, 245, 242, 0.55);
}

/* ═══ 14 · Print ═══════════════════════════════════════════════════════
   The organiser page offers "print this as a PDF", so printing has to
   produce something an event manager can circulate: no navigation, no dark
   bands, URLs spelled out after links, nothing orphaned across a page break. */
@media print {
  .masthead, .footer, .cookie-banner, .v2-band, .skip,
  .lang-switch, .v2-crumbs { display: none !important; }

  html, body { background: #fff; color: #000; font-size: 11pt; }
  .page { max-width: none; padding: 0; }

  .v2-section { padding: 12pt 0; border-bottom: 0.5pt solid #ccc; break-inside: avoid; }
  .v2-sector-hero { padding: 0 0 12pt; }
  .v2-h1 { font-size: 22pt; max-width: none; }
  .v2-h2 { font-size: 15pt; }
  .v2-hero-lede { font-size: 11.5pt; max-width: none; }

  .v2-kit { grid-template-columns: 1fr 1fr; }
  .v2-kit-item { break-inside: avoid; padding: 8pt; }
  .v2-copyable { background: #f4f4f4; border: 0.5pt solid #ccc; font-size: 9pt; }

  /* A printed link is useless without its address. */
  a[href^="http"]::after,
  a[href^="mailto"]::after { content: " (" attr(href) ")"; font-size: 8pt; color: #555; }
  a.dl::after, button::after { content: ""; }
  .v2-kit-item a.dl, .v2-kit-item button { display: none; }

  h1, h2, h3 { break-after: avoid; }
  img { max-width: 40%; }
}
