/* ==========================================================================
   investor-hub — page styles  (Swiss editorial rework)
   --------------------------------------------------------------------------
   Light institutional investor hub for /design/investors.html.
     • dark hero with a flat data plate (top)
     • paper container with a sticky, numbered left rail and a main column
       of stacked, rule-delimited sections.

   Design discipline (deliberately NOT a grid-of-cards):
     – Müller-Brockmann grid + baseline rhythm; generous, asymmetric space.
     – Hairline rules instead of boxes; ledgers instead of tiles where the
       content is a list (financials, filings, governance).
     – Sharp corners everywhere (no pills, no rounded cards).
     – No drop shadows, no glass, no hover "lift". Hover = colour, a rule
       wipe, or a 2px arrow nudge — never movement of a whole block.
     – Tabular figures for all numerics; mono caps only for labels/indices.
     – Milano Red (#C42800) is structural punctuation, used sparingly.

   PLAYGROUND MODE: raw values, no token snap.
   ========================================================================== */

.iv {
  --iv-bg:          #F4F5F7;
  --iv-surface:     #FFFFFF;
  --iv-ink:         #141A26;
  --iv-ink-2:       #2C3340;
  --iv-dim:         rgba(20, 26, 38, 0.58);
  --iv-faint:       rgba(20, 26, 38, 0.40);
  --iv-rule:        rgba(20, 26, 38, 0.14);
  --iv-rule-strong: rgba(20, 26, 38, 0.92);
  --iv-rule-soft:   rgba(20, 26, 38, 0.07);
  --iv-accent:      #C42800;
  --iv-up:          #1F7A3C;
  --iv-down:        #B0301D;

  /* Page grid (2026-08-20): was a hub-only 1340px measure, which put the
     Investor Hub's left edge 26px inboard of every other page. Both knobs
     now read the site-wide grid in css/layout.css — one measure everywhere.
     Local names kept so the ~40 consumers below don't have to change. */
  --iv-max:         var(--teako-page-max);
  --iv-pad:         var(--teako-page-gutter);

  --iv-mono: 'Space Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --iv-sans: 'IBM Plex Sans', system-ui, sans-serif;
  --iv-disp: 'Geologica', 'IBM Plex Sans', system-ui, sans-serif;

  color: var(--iv-ink);
  font-family: var(--iv-sans);
}

/* Shared label atom — every mono caps kicker reads off this. */
.iv__eyebrow,
.iv__rail-kicker,
.iv__section-kicker,
.iv__stock-symbol,
.iv__contact-kicker {
  font-family: var(--iv-mono);
  /* Space Mono ships 400 and 700 only — 500 just resolved to 400. Say 400. */
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-size: 11px;
}

/* =====================================================================
   Hero (dark)
   ===================================================================== */

.iv__hero {
  position: relative;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  background: #0B0F16;
  color: #F4F5F7;
  padding: 184px 0 88px;
  overflow: hidden;
}
.iv__hero-topo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.07;
  background-image: repeating-linear-gradient(
    45deg, #ffffff 0, #ffffff 1px, transparent 1px, transparent 16px
  );
  -webkit-mask-image: linear-gradient(135deg, #000 0%, transparent 58%);
  mask-image: linear-gradient(135deg, #000 0%, transparent 58%);
}
.iv__hero-inner {
  position: relative;
  width: 100%;
  max-width: var(--iv-max);
  margin: 0 auto;
  padding: 0 var(--iv-pad);
  display: grid;
  grid-template-columns: 1.5fr 0.9fr;
  gap: 80px;
  align-items: end;
}
.iv__eyebrow {
  display: inline-block;
  color: rgba(244, 245, 247, 0.55);
  margin-bottom: 26px;
}
.iv__h1 {
  margin: 0 0 26px;
  font-family: var(--iv-disp);
  font-weight: 300;
  font-size: clamp(52px, 6.4vw, 104px);
  line-height: 0.94;
  letter-spacing: -0.03em;
}
.iv__lede {
  margin: 0;
  max-width: 54ch;
  font-size: clamp(15px, 1.1vw, 17px);
  line-height: 1.6;
  color: rgba(244, 245, 247, 0.68);
}

/* Hero data plate — flat, ruled, institutional (no glass, no blur). */
.iv__ticker {
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(244, 245, 247, 0.18);
  background: transparent;
}
.iv__ticker-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid rgba(244, 245, 247, 0.14);
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(244, 245, 247, 0.66);
}
.iv__ticker-live {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: rgba(244, 245, 247, 0.9);
}
.iv__ticker-live::before {
  content: '';
  width: 6px; height: 6px;
  background: var(--iv-accent);
  box-shadow: 0 0 9px rgba(196, 40, 0, 0.7);
  animation: iv-pulse 1.7s ease-in-out infinite;
}
@keyframes iv-pulse {
  0%, 100% { opacity: 0.55; }
  50%      { opacity: 1; }
}
.iv__ticker-price-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  padding: 22px 20px 20px;
}
.iv__ticker-price {
  font-family: var(--iv-disp);
  font-weight: 400;
  font-size: clamp(38px, 4vw, 52px);
  letter-spacing: -0.02em;
  line-height: 1;
  color: #F4F5F7;
  font-variant-numeric: tabular-nums;
}
.iv__ticker-change {
  font-family: var(--iv-mono);
  font-size: 12.5px;
  letter-spacing: 0.04em;
  color: #5FCF8A;
  font-variant-numeric: tabular-nums;
}
.iv__ticker-change[data-dir="down"] { color: #FF8A78; }
.iv__ticker-foot {
  display: flex;
  justify-content: space-between;
  padding: 12px 20px;
  border-top: 1px solid rgba(244, 245, 247, 0.14);
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(244, 245, 247, 0.46);
}

/* =====================================================================
   Body — sticky rail + content column
   ===================================================================== */

.iv__body {
  position: relative;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  background: var(--iv-bg);
  color: var(--iv-ink);
  padding: 104px 0 140px;
}
.iv__container {
  width: 100%;
  max-width: var(--iv-max);
  margin: 0 auto;
  padding: 0 var(--iv-pad);
  display: grid;
  grid-template-columns: 232px 1fr;
  gap: 104px;
  align-items: start;
}
/* Disclosure page: no scrollspy sidebar, narrower document measure. */
.iv__container--doc {
  grid-template-columns: 1fr;
  max-width: 1060px;
  gap: 0;
}
/* The "/ 09" section index is the hub's; not meaningful on the 2-section doc page. */
.iv--doc .iv__section-head::after { content: none; }

/* ---------- Sticky left rail (numbered) ---------- */

.iv__rail {
  position: sticky;
  top: 116px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.iv__rail-kicker {
  color: var(--iv-faint);
  padding-bottom: 18px;
  border-bottom: 1px solid var(--iv-rule-strong);
}
.iv__nav {
  display: flex;
  flex-direction: column;
  counter-reset: ivnav;
}
.iv__nav-link {
  position: relative;
  display: grid;
  grid-template-columns: 24px 1fr;
  align-items: baseline;
  gap: 12px;
  padding: 11px 0;
  border-bottom: 1px solid var(--iv-rule);
  font-family: var(--iv-sans);
  font-size: 14.5px;
  line-height: 1.3;
  color: var(--iv-dim);
  text-decoration: none;
  transition: color 200ms ease;
}
.iv__nav-link::before {
  counter-increment: ivnav;
  content: counter(ivnav, decimal-leading-zero);
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  color: var(--iv-faint);
  transition: color 200ms ease;
}
.iv__nav-link:hover { color: var(--iv-ink); }
.iv__nav-link.is-active { color: var(--iv-ink); font-weight: 500; }
.iv__nav-link.is-active::before { color: var(--iv-accent); }

/* ---------- Main column ---------- */

.iv__main {
  display: flex;
  flex-direction: column;
  gap: 128px;
  min-width: 0;
  counter-reset: ivsec;
}
.iv__section { scroll-margin-top: 116px; counter-increment: ivsec; }

/* Section topbar — a hairline bookend carrying the mono label (left) and an
   auto section index (right). Paces the page like a document. Sections are
   counted on .iv__section (incl. the head-less Subscribe) so the index matches
   the sidebar's 01–12 numbering. */
.iv__section-head {
  position: relative;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  padding-top: 20px;
  margin-bottom: 48px;
  border-top: 1px solid var(--iv-rule-strong);
}
.iv__section-head::after {
  content: none; /* "SEC. 0X / 09" index removed (2026-07) — the rail already labels sections */
}
.iv__section-kicker {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--iv-dim);
  margin-bottom: 16px;
}
.iv__section-kicker::before {
  content: '';
  width: 7px; height: 7px;
  background: var(--iv-accent);
  flex-shrink: 0;
}
.iv__section-h {
  margin: 0;
  font-family: var(--iv-disp);
  font-weight: 300; /* D1 */
  font-size: clamp(30px, 3vw, 46px);
  line-height: 1.04;
  letter-spacing: -0.025em;
  color: var(--iv-ink);
}
.iv__section-action {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 4px;
  font-family: var(--iv-mono);
  font-size: 11.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-ink);
  text-decoration: none;
  background-image: linear-gradient(var(--iv-accent), var(--iv-accent));
  background-size: 0% 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  transition: background-size 320ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__section-action::after {
  content: '';
  width: 6px; height: 6px;
  border-top: 1.4px solid var(--iv-accent);
  border-right: 1.4px solid var(--iv-accent);
  transform: rotate(45deg);
  transition: transform 240ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__section-action:hover { background-size: 100% 1px; }
.iv__section-action:hover::after { transform: rotate(45deg) translate(1px, -1px); }

/* =====================================================================
   01 — Stock information
   ===================================================================== */

.iv__stock {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: end;
}
.iv__stock-symbol { display: block; color: var(--iv-dim); margin-bottom: 14px; }
.iv__stock-price-row {
  display: flex;
  align-items: baseline;
  gap: 18px;
  margin-bottom: 14px;
}
.iv__stock-price {
  font-family: var(--iv-disp);
  font-weight: 400;
  font-size: clamp(60px, 7vw, 92px);
  line-height: 0.9;
  letter-spacing: -0.03em;
  color: var(--iv-ink);
  font-variant-numeric: tabular-nums;
}
.iv__stock-change {
  font-family: var(--iv-mono);
  font-size: 15px;
  letter-spacing: 0.03em;
  color: var(--iv-up);
  font-variant-numeric: tabular-nums;
}
.iv__stock-change[data-dir="down"] { color: var(--iv-down); }
.iv__stock-note {
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  line-height: 1.6;
  color: var(--iv-faint);
}

/* Sparkline — thin line over faint baseline gridlines; no heavy fill. */
/* Live TradingView chart (CSE:TMIN) in place of the old static sparkline.
   Kept inside the editorial top/bottom hairline frame; the widget autosizes
   to fill the box. */
.iv__chart {
  position: relative;
  align-self: end;
  height: 172px;
  border-top: 1px solid var(--iv-rule);
  border-bottom: 1px solid var(--iv-rule);
  overflow: hidden;
}
.iv__chart .tradingview-widget-container,
.iv__chart .tradingview-widget-container__widget,
.iv__chart iframe {
  height: 100% !important;
  width: 100% !important;
}

/* Listings strip — where Teako trades, with live local-currency prices.
   Lighter than the KPI ledger (top rule + column dividers, no boxes). */
.iv__listings {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 32px;
  border-top: 1px solid var(--iv-rule);
}
.iv__listing {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 24px 0 0;
}
.iv__listing:not(:last-child) { border-right: 1px solid var(--iv-rule); }
.iv__listing + .iv__listing { padding-left: 24px; }
.iv__listing-ex {
  font-family: var(--iv-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--iv-dim);
}
.iv__listing-price {
  font-family: var(--iv-mono);
  font-size: 13px;
  /* Regular: Space Mono has no 500/600, so anything above 400 rendered bold —
     the odd typewriter weight the client spotted. Ink vs dim carries the
     emphasis against the exchange label. */
  font-weight: 400;
  color: var(--iv-ink);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

/* Corporate information — a small ruled definition list in the Contact section. */
.iv__corp {
  margin-top: 56px;
  padding-top: 36px;
  border-top: 1px solid var(--iv-rule);
  max-width: 640px;
}
.iv__corp-label {
  display: block;
  font-family: var(--iv-mono);
  font-size: 11.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-dim);
  margin-bottom: 18px;
}
.iv__corp-list { margin: 0; }
.iv__corp-row {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding: 12px 0;
  border-top: 1px solid var(--iv-rule-soft);
}
.iv__corp-row dt {
  font-family: var(--iv-mono);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--iv-dim);
  flex-shrink: 0;
}
.iv__corp-row dd {
  margin: 0;
  font-size: 14px;
  color: var(--iv-ink);
  text-align: right;
}

/* Leadership grid — monogram placeholder (or headshot) + name + role + bio. */
.iv__leaders {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px 20px;
  border-top: 1px solid var(--iv-rule-strong);
  padding-top: 36px;
}
/* Compact rows (client, 1 Sep 2026): headshots are not ready, so the board
   uses the same monogram-chip layout as the advisors below — small chip
   left, name + role beside it. Real headshots still drop into
   .iv__leader-photo as a background-image when they arrive. */
.iv__leader { display: flex; flex-direction: row; gap: 14px; align-items: center; }
.iv__leader-photo {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(20, 26, 38, 0.06);
  background-size: cover;
  background-position: center top;
  font-family: var(--iv-mono);
  font-size: 13px;
  letter-spacing: 0.06em;
  color: var(--iv-faint);
}
.iv__leader-name {
  display: block;
  font-weight: 600;
  font-size: 17px;
  color: var(--iv-ink);
}
.iv__leader-role {
  display: block;
  margin-top: 4px;
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--iv-accent);
}
/* Leadership cards (client, 9 Sep 2026): name + role + hats on the card; the full biography opens
   in a centred dialog over a frosted page (investor-hub.js). Board/management hats replace the old
   two-list split so people who do both are shown as both. */
.iv__leader { position: relative; align-items: flex-start; }
.iv__leader--has-bio { cursor: pointer; }
.iv__leader--has-bio:focus-visible { outline: 2px solid var(--iv-accent); outline-offset: 6px; }
.iv__leader-hats { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.iv__hat {
  font-family: var(--iv-mono);
  font-size: 9.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  line-height: 1;
  padding: 5px 7px 4px;
  border: 1px solid var(--iv-rule);
  color: var(--iv-dim);
}
.iv__hat--board { border-color: var(--iv-rule-strong); color: var(--iv-ink); }
.iv__leader-more {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 10px;
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--iv-accent);
}
.iv__leader-more::before { content: ''; width: 5px; height: 5px; background: var(--iv-accent); }
.iv__leader--has-bio:hover .iv__leader-more { text-decoration: underline; text-underline-offset: 3px; }
.iv__leader-bio[hidden] { display: none; }

.iv__gov-note {
  margin-top: 52px;
  padding-top: 32px;
  border-top: 1px solid var(--iv-rule);
  max-width: 640px;
}
.iv__gov-note p {
  margin: 0;
  font-size: 14px;
  line-height: 1.6;
  color: var(--iv-dim);
}

/* KPI ledger — a single ruled block, figures tabular. */
.iv__kpis {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 48px;
  border-top: 1px solid var(--iv-rule-strong);
  border-left: 1px solid var(--iv-rule);
}
.iv__kpi {
  padding: 20px 24px 22px;
  border-right: 1px solid var(--iv-rule);
  border-bottom: 1px solid var(--iv-rule);
}
.iv__kpi-label {
  display: block;
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--iv-dim);
  margin-bottom: 10px;
}
.iv__kpi-value {
  display: block;
  font-family: var(--iv-disp);
  font-weight: 400;
  font-size: 26px;
  letter-spacing: -0.015em;
  color: var(--iv-ink);
  font-variant-numeric: tabular-nums;
}

/* =====================================================================
   02 — Financials  ·  04 — Filings   (shared ledger language)
   ===================================================================== */

.iv__docs,
.iv__filings {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--iv-rule-strong);
}
.iv__doc {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 8px 32px;
  padding: 22px 0;
  border-bottom: 1px solid var(--iv-rule);
  text-decoration: none;
  color: var(--iv-ink);
}
.iv__doc-title {
  grid-row: 1;
  grid-column: 1;
  margin: 0;
  font-family: var(--iv-disp); /* D1: h3 on the display face */
  font-weight: 300;
  font-size: 19px;
  line-height: 1.3;
  letter-spacing: -0.012em;
  color: var(--iv-ink);
  transition: color 200ms ease;
}
.iv__doc:hover .iv__doc-title { color: var(--iv-accent); }
.iv__doc-meta {
  grid-row: 2;
  grid-column: 1;
  display: flex;
  gap: 16px;
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--iv-dim);
}
.iv__doc-foot {
  grid-row: 1 / span 2;
  grid-column: 2;
  display: flex;
  align-items: center;
  gap: 28px;
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--iv-faint);
}
.iv__doc-dl {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--iv-ink);
}
.iv__doc-dl svg {
  width: 15px; height: 15px;
  transition: transform 240ms cubic-bezier(0.33, 1, 0.68, 1), color 200ms ease;
}
.iv__doc:hover .iv__doc-dl svg { transform: translateY(3px); color: var(--iv-accent); }

/* Filings — same ledger, four ruled columns. */
.iv__filing {
  display: grid;
  grid-template-columns: 132px 1fr 150px 28px;
  align-items: center;
  gap: 24px;
  padding: 18px 0;
  border-bottom: 1px solid var(--iv-rule);
  text-decoration: none;
  color: var(--iv-ink);
}
.iv__filing-date {
  font-family: var(--iv-mono);
  font-size: 11.5px;
  letter-spacing: 0.06em;
  color: var(--iv-dim);
  font-variant-numeric: tabular-nums;
}
.iv__filing-title {
  font-family: var(--iv-sans);
  font-size: 16px;
  font-weight: 500;
  color: var(--iv-ink);
  transition: color 200ms ease;
}
.iv__filing:hover .iv__filing-title { color: var(--iv-accent); }
.iv__filing-type {
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-dim);
  text-align: right;
}
.iv__filing-arrow {
  width: 17px; height: 17px;
  color: var(--iv-faint);
  justify-self: end;
  transition: transform 240ms cubic-bezier(0.33, 1, 0.68, 1), color 200ms ease;
}
.iv__filing:hover .iv__filing-arrow { color: var(--iv-accent); transform: translate(2px, -2px); }

/* =====================================================================
   03 — Events  (date-led, flat, hairline)
   ===================================================================== */

/* Presentations — prominent download tiles (deck + fact sheet). */
.iv__pres {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}
.iv__pres-card {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 32px;
  border-radius: 0;
  background: var(--iv-surface);
  border: 1px solid var(--iv-rule);
  text-decoration: none;
  color: var(--iv-ink);
  transition: border-color 220ms ease;
}
.iv__pres-card:hover { border-color: var(--iv-rule-strong); }
.iv__pres-kicker {
  font-family: var(--iv-mono);
  font-size: 11.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-accent);
}
.iv__pres-title {
  margin: 0;
  font-family: var(--iv-disp);
  font-weight: 300; /* D1 */
  font-size: 22px;
  letter-spacing: -0.02em;
  color: var(--iv-ink);
}
.iv__pres-desc {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--iv-dim);
  max-width: 42ch;
}
.iv__pres-dl {
  margin-top: 12px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--iv-mono);
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--iv-ink);
}
.iv__pres-dl svg { width: 18px; height: 18px; color: var(--iv-accent); }
.iv__pres-sublabel {
  display: block;
  margin: 52px 0 24px;
  font-family: var(--iv-mono);
  font-size: 11.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-dim);
}

/* Hero quick-access chips (sit on the dark hero). */
.iv__quick {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 30px;
}
.iv__quick a {
  display: inline-flex;
  align-items: center;
  padding: 10px 16px;
  border: 1px solid rgba(255, 255, 255, 0.22);
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #F4F5F7;
  text-decoration: none;
  transition: background-color 200ms ease, border-color 200ms ease;
}
.iv__quick a:hover { background: var(--iv-accent); border-color: var(--iv-accent); color: #fff; }

/* Why invest — numbered investment highlights. */
.iv__why {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px 56px;
}
.iv__why-item { display: flex; gap: 20px; align-items: flex-start; }
.iv__why-num {
  flex-shrink: 0;
  font-family: var(--iv-mono);
  font-size: 12px;
  color: var(--iv-accent);
  padding-top: 4px;
}
.iv__why-h {
  margin: 0 0 8px;
  font-family: var(--iv-disp);
  font-weight: 300; /* D1 */
  font-size: 20px;
  letter-spacing: -0.02em;
  color: var(--iv-ink);
}
.iv__why-b {
  margin: 0;
  font-size: 14px;
  line-height: 1.6;
  color: var(--iv-dim);
  max-width: 46ch;
}

/* Projects snapshot. */
.iv__projects {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}
.iv__project {
  padding: 32px;
  background: var(--iv-surface);
  border: 1px solid var(--iv-rule);
}
.iv__project-tag {
  display: inline-block;
  margin-bottom: 14px;
  font-family: var(--iv-mono);
  font-size: 11.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-accent);
}
.iv__project-body {
  margin: 0;
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--iv-dim);
}
.iv__project-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 32px;
  margin-top: 20px;
  padding-top: 20px;
  border-top: 1px solid var(--iv-rule);
  font-family: var(--iv-mono);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--iv-ink);
}

.iv__events {
  display: grid;
  /* Columns follow the actual event count (set inline by the template, capped
     at 3) so 2 events fill the row evenly instead of leaving an empty third. */
  grid-template-columns: repeat(var(--iv-events-cols, 3), 1fr);
  border-top: 1px solid var(--iv-rule-strong);
}
.iv__event {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 28px 28px 26px 0;
  border-bottom: 1px solid var(--iv-rule);
  text-decoration: none;
  color: var(--iv-ink);
}
.iv__event:not(:last-child) {
  border-right: 1px solid var(--iv-rule);
  padding-right: 28px;
}
/* Cards after the first sit to the right of a divider — pad their left so the
   text clears the rule instead of hugging it. The first card stays flush-left,
   aligned to the section margin. */
.iv__event:not(:first-child) {
  padding-left: 28px;
}
.iv__event-date {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-dim);
}
.iv__event-date-big {
  font-family: var(--iv-disp);
  font-size: 30px;
  font-weight: 400;
  letter-spacing: -0.02em;
  color: var(--iv-ink);
  font-variant-numeric: tabular-nums;
  text-transform: none;
}
.iv__event-title {
  margin: 0;
  font-family: var(--iv-disp); /* D1: h3 on the display face */
  font-weight: 300;
  font-size: 18px;
  line-height: 1.28;
  letter-spacing: -0.012em;
  color: var(--iv-ink);
  transition: color 200ms ease;
}
.iv__event:hover .iv__event-title { color: var(--iv-accent); }
.iv__event-body {
  margin: 0;
  font-family: var(--iv-sans);
  font-size: 14px;
  line-height: 1.55;
  color: var(--iv-dim);
}
.iv__event-foot {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin-top: auto;
  padding-top: 16px;
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-ink);
}
.iv__event-foot::after {
  content: '';
  width: 6px; height: 6px;
  border-top: 1.4px solid var(--iv-accent);
  border-right: 1.4px solid var(--iv-accent);
  transform: rotate(45deg);
  transition: transform 240ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__event:hover .iv__event-foot::after { transform: rotate(45deg) translate(1px, -1px); }

/* =====================================================================
   05 — Latest news  (image-led editorial cards)
   ===================================================================== */

.iv__news {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}
.iv__news-card {
  display: flex;
  flex-direction: column;
  gap: 18px;
  min-height: 208px;
  padding: 28px 26px 24px;
  /* Red 2px top keyline removed (client, 2026-08-20). Cards on this page now
     share one container recipe: white surface, 1px hairline, border darkens
     on hover — identical to .iv__pres-card and .iv__agg-box. */
  border: 1px solid var(--iv-rule);
  background: var(--iv-surface);
  text-decoration: none;
  color: inherit;
  transition: border-color 220ms ease;
}
.iv__news-card:hover { border-color: var(--iv-rule-strong); }
.iv__news-read {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-family: var(--iv-mono);
  font-size: 11.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--iv-dim);
  transition: color 200ms ease, gap 240ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__news-read svg { width: 16px; height: 16px; }
.iv__news-card:hover .iv__news-read { color: var(--iv-ink); gap: 13px; }
.iv__news-media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: #0B141C;
}
.iv__news-media img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform 620ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__news-card:hover .iv__news-media img { transform: scale(1.04); }
.iv__news-meta {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--iv-dim);
  text-transform: uppercase;
}
.iv__news-tag { display: inline-flex; align-items: center; gap: 7px; }
.iv__news-tag::before { content: ''; width: 7px; height: 7px; background: var(--iv-accent); }
.iv__news-title {
  margin: 0;
  font-family: var(--iv-disp); /* D1: h3 on the display face */
  font-weight: 300;
  font-size: 18px;
  line-height: 1.3;
  letter-spacing: -0.012em;
  color: var(--iv-ink);
  transition: color 200ms ease;
}
.iv__news-card:hover .iv__news-title { color: var(--iv-accent); }

/* =====================================================================
   06 — Governance  (ledger + sustainability note)
   ===================================================================== */

.iv__gov {
  display: grid;
  grid-template-columns: 1.25fr 1fr;
  gap: 72px;
  align-items: start;
}
.iv__gov-list {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--iv-rule-strong);
}
.iv__gov-list li {
  display: flex;
  align-items: baseline;
  gap: 18px;
  padding: 15px 0;
  border-bottom: 1px solid var(--iv-rule);
}
.iv__gov-name {
  flex: 1;
  font-family: var(--iv-sans);
  font-weight: 500;
  font-size: 16.5px;
  color: var(--iv-ink);
}
.iv__gov-role {
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-dim);
  text-align: right;
}
.iv__gov-doc {
  display: flex;
  flex-direction: column;
  gap: 20px;
  border-top: 1px solid var(--iv-rule-strong);
  padding-top: 26px;
}
.iv__gov-doc h4 {
  margin: 0;
  font-family: var(--iv-disp);
  font-weight: 400;
  font-size: 23px;
  line-height: 1.2;
  letter-spacing: -0.02em;
}
.iv__gov-doc p {
  margin: 0;
  font-family: var(--iv-sans);
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--iv-dim);
}
.iv__gov-doc a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  align-self: flex-start;
  padding: 13px 22px;
  border: 1px solid var(--iv-ink);
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-ink);
  text-decoration: none;
  transition: background 220ms ease, color 220ms ease;
}
.iv__gov-doc a:hover { background: var(--iv-ink); color: #fff; }
.iv__gov-doc a svg { width: 14px; height: 14px; }

/* =====================================================================
   07 — FAQ
   ===================================================================== */

.iv__faq {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--iv-rule-strong);
}
.iv__faq-item { border-bottom: 1px solid var(--iv-rule); }
.iv__faq-q {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 22px 0;
  background: transparent;
  border: 0;
  font-family: var(--iv-sans);
  font-weight: 500;
  font-size: 18.5px;
  letter-spacing: -0.012em;
  color: var(--iv-ink);
  text-align: left;
  cursor: pointer;
  transition: color 200ms ease;
}
.iv__faq-q:hover { color: var(--iv-accent); }
.iv__faq-q::after {
  content: '';
  flex-shrink: 0;
  width: 11px; height: 11px;
  background:
    linear-gradient(var(--iv-ink), var(--iv-ink)) center / 11px 1.5px no-repeat,
    linear-gradient(var(--iv-ink), var(--iv-ink)) center / 1.5px 11px no-repeat;
  transition: transform 260ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__faq-item[data-open="true"] .iv__faq-q::after {
  transform: rotate(135deg);
  background:
    linear-gradient(var(--iv-accent), var(--iv-accent)) center / 11px 1.5px no-repeat,
    linear-gradient(var(--iv-accent), var(--iv-accent)) center / 1.5px 11px no-repeat;
}
.iv__faq-a {
  max-height: 0;
  overflow: hidden;
  transition: max-height 340ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__faq-a-inner {
  padding: 0 0 26px;
  max-width: 68ch;
  font-family: var(--iv-sans);
  font-size: 15px;
  line-height: 1.65;
  color: var(--iv-dim);
}
.iv__faq-item[data-open="true"] .iv__faq-a { max-height: 360px; }

/* =====================================================================
   Email signup
   ===================================================================== */

.iv__signup {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  padding: 56px 0;
  border-top: 1px solid var(--iv-rule-strong);
  border-bottom: 1px solid var(--iv-rule-strong);
}
.iv__signup-text h3 {
  margin: 0 0 12px;
  font-family: var(--iv-disp);
  font-weight: 300; /* D1 */
  font-size: clamp(24px, 2.6vw, 36px);
  letter-spacing: -0.025em;
  line-height: 1.05;
  color: var(--iv-ink);
}
.iv__signup-text p {
  margin: 0;
  font-family: var(--iv-sans);
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--iv-dim);
  max-width: 40ch;
}
.iv__signup-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
  align-self: center;
}
.iv__signup-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 0 14px;
  border-bottom: 1px solid var(--iv-rule-strong);
}
.iv__signup-row:focus-within { border-color: var(--iv-accent); }
.iv__signup-row input {
  flex: 1;
  border: 0;
  background: transparent;
  font-family: var(--iv-sans);
  font-size: 16px;
  color: var(--iv-ink);
  outline: none;
}
.iv__signup-row input::placeholder { color: var(--iv-faint); }
.iv__signup-row button {
  appearance: none;
  border: 0;
  padding: 0;
  background: transparent;
  font-family: var(--iv-mono);
  font-size: 11.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-ink);
  cursor: pointer;
}
.iv__signup-row button::after {
  content: '→';
  color: var(--iv-accent);
  margin-left: 10px;
  display: inline-block;
  transition: transform 240ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__signup-row button:hover::after { transform: translateX(5px); }
.iv__signup-consent {
  font-family: var(--iv-sans);
  font-size: 12px;
  line-height: 1.6;
  color: var(--iv-faint);
  max-width: 52ch;
}

/* =====================================================================
   08 — Contact
   ===================================================================== */

.iv__contact {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: 1px solid var(--iv-rule-strong);
  border-left: 1px solid var(--iv-rule);
}
.iv__contact-card {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 36px 40px 40px;
  border-right: 1px solid var(--iv-rule);
  border-bottom: 1px solid var(--iv-rule);
}
.iv__contact-kicker { color: var(--iv-dim); }
.iv__contact-name {
  font-family: var(--iv-disp);
  font-weight: 400;
  font-size: 25px;
  letter-spacing: -0.02em;
  color: var(--iv-ink);
  margin-bottom: 6px;
}
.iv__contact-row {
  display: flex;
  align-items: baseline;
  gap: 16px;
  font-family: var(--iv-sans);
  font-size: 15px;
  line-height: 1.5;
  color: var(--iv-ink);
}
.iv__contact-row .lbl {
  width: 70px;
  flex-shrink: 0;
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-dim);
}
.iv__contact-row a {
  color: var(--iv-ink);
  text-decoration: none;
  background-image: linear-gradient(var(--iv-accent), var(--iv-accent));
  background-size: 100% 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  padding-bottom: 2px;
  transition: background-size 280ms cubic-bezier(0.33, 1, 0.68, 1);
}
.iv__contact-row a:hover { background-size: 0% 1px; }

/* =====================================================================
   Responsive
   ===================================================================== */

@media (max-width: 1080px) {
  .iv { --iv-pad: var(--teako-page-gutter); }
  .iv__hero { padding: 140px 0 64px; }
  .iv__hero-inner { grid-template-columns: 1fr; gap: 40px; }
  .iv__container { grid-template-columns: 1fr; gap: 56px; }
  .iv__main { gap: 96px; }
  .iv__rail { position: static; }
  .iv__nav { flex-flow: row wrap; gap: 8px 20px; }
  .iv__nav-link { border: 0; padding: 6px 0; }
  .iv__stock,
  .iv__gov,
  .iv__signup { grid-template-columns: 1fr; gap: 40px; }
  .iv__news { grid-template-columns: repeat(2, 1fr); }
  .iv__events { grid-template-columns: 1fr; }
  .iv__event { border-right: 0; padding-right: 0; padding-left: 0; }
  .iv__contact { grid-template-columns: 1fr; }
  .iv__listings { grid-template-columns: 1fr; }
  .iv__listing { border-right: 0; padding: 12px 0 0 0; }
  .iv__pres { grid-template-columns: 1fr; }
  .iv__leaders { grid-template-columns: repeat(2, 1fr); gap: 32px 20px; }
  .iv__why { grid-template-columns: 1fr; gap: 28px; }
  .iv__projects { grid-template-columns: 1fr; }
  .iv__filing { grid-template-columns: 104px 1fr 0 28px; gap: 14px; }
  .iv__filing-type { display: none; }
}
@media (max-width: 640px) {
  .iv__news { grid-template-columns: 1fr; }
  .iv__kpis { grid-template-columns: repeat(2, 1fr); }
  .iv__doc { grid-template-columns: 1fr; gap: 12px; }
  .iv__doc-foot { grid-row: auto; grid-column: 1; }
}

/* =====================================================================
   Investor Hub — 2026 upgrades (snapshot · catalysts · map · CTAs)
   ===================================================================== */

/* ---- Investor snapshot / capital structure strip ----
   Rebuilt 2026-08-20 (client: "significantly more tidy … slightly larger with
   more padding … let's just use a consistent font"). Three changes:
     • 6 cells in one row forced 21px figures and 2px of vertical padding.
       Two columns of three (3 × 2) buys ~2× the cell width, so the figures
       can carry the page's normal display size and the cells can breathe.
     • Qualifiers ("@ CA$0.20", "· avg CA$0.09") moved out of the figure onto
       a sub-note line, so every figure is a figure and the baselines align.
     • The grid's outer edges are flush with the section head and the listings
       strip below it (no inset left rule, no padding on the outer columns). */
.iv__snapshot { background: var(--iv-surface); border-top: 1px solid var(--iv-rule); padding-block: 56px; }
.iv__snap-head { display: flex; align-items: center; gap: 10px; margin-bottom: 28px; }
.iv__snap-tick { width: 8px; height: 8px; background: var(--iv-accent); flex: 0 0 auto; }
.iv__snap-kicker { font-family: var(--iv-mono); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--iv-ink); font-weight: 400; }
.iv__snap-asof { font-family: var(--iv-mono); font-size: 10px; letter-spacing: 0.06em; color: var(--iv-faint); margin-left: auto; }
.iv__snap-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--iv-rule); border-left: none; }
.iv__snap-cell { padding: 26px 34px; border-right: 1px solid var(--iv-rule); display: flex; flex-direction: column; gap: 12px; }
.iv__snap-cell:nth-child(n + 4) { border-top: 1px solid var(--iv-rule); }
.iv__snap-cell:nth-child(3n) { border-right: none; padding-right: 0; }
.iv__snap-cell:nth-child(3n + 1) { padding-left: 0; }
.iv__snap-l { font-family: var(--iv-mono); font-size: 10.5px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--iv-dim); }
.iv__snap-v { font-family: var(--iv-disp); font-size: 30px; font-weight: 400; color: var(--iv-ink); letter-spacing: -0.015em; font-variant-numeric: tabular-nums; line-height: 1; }
/* Qualifier line — sans, so it reads as prose against the tabular figure. */
.iv__snap-s { font-family: var(--iv-sans); font-size: 12px; line-height: 1.45; color: var(--iv-faint); margin-top: -2px; }
.iv__snap-listings { display: flex; gap: 22px; align-items: center; margin-top: 28px; padding-top: 20px; border-top: 1px solid var(--iv-rule-soft); font-family: var(--iv-mono); font-size: 11px; letter-spacing: 0.08em; color: var(--iv-ink-2); }
.iv__snap-note { margin-left: auto; color: var(--iv-faint); letter-spacing: 0.03em; }
@media (max-width: 900px) {
  .iv__snapshot { padding-block: 44px; }
  .iv__snap-grid { grid-template-columns: repeat(2, 1fr); }
  .iv__snap-cell { padding: 22px 26px; }
  .iv__snap-cell:nth-child(n + 3) { border-top: 1px solid var(--iv-rule); }
  .iv__snap-cell:nth-child(3n) { border-right: 1px solid var(--iv-rule); padding-right: 26px; }
  .iv__snap-cell:nth-child(3n + 1) { padding-left: 26px; }
  .iv__snap-cell:nth-child(2n) { border-right: none; padding-right: 0; }
  .iv__snap-cell:nth-child(2n + 1) { padding-left: 0; }
  .iv__snap-v { font-size: 26px; }
}
@media (max-width: 560px) {
  .iv__snap-grid { grid-template-columns: 1fr; }
  .iv__snap-cell { padding: 18px 0; border-right: none; }
  .iv__snap-cell:nth-child(n + 2) { border-top: 1px solid var(--iv-rule); }
  .iv__snap-cell:nth-child(3n), .iv__snap-cell:nth-child(3n + 1),
  .iv__snap-cell:nth-child(2n), .iv__snap-cell:nth-child(2n + 1) { border-right: none; padding-inline: 0; }
  .iv__snap-listings { flex-wrap: wrap; gap: 12px; }
  .iv__snap-note { margin-left: 0; width: 100%; }
}

/* ---- Interactive 3D map embed (Projects) ---- */
.iv__map { display: block; text-decoration: none; border: 1px solid var(--iv-rule); background: #0b0d12; margin-bottom: 30px; overflow: hidden; transition: border-color 0.2s ease; }
.iv__map:hover { border-color: rgba(196, 40, 0, 0.5); }
/* Tall portfolio map (2026-07): the strip preview undersold the 78-licence
   story — near-viewport height so the whole country reads at once. Clicking
   still opens the interactive 3D full-screen. */
.iv__map-frame { display: block; position: relative; width: 100%; height: min(78vh, 820px); overflow: hidden; background: #0b0d12; }
.iv__map-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; pointer-events: none; }
.iv__map-bar { display: flex; align-items: center; gap: 18px; padding: 15px 20px; border-top: 1px solid rgba(255,255,255,0.08); background: #0b0d12; color: #F4F5F7; font-family: var(--iv-mono); }
.iv__map-live { display: inline-flex; align-items: center; gap: 8px; font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(244,245,247,0.72); white-space: nowrap; }
.iv__map-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--iv-accent); box-shadow: 0 0 8px rgba(196,40,0,0.9); }
.iv__map-label { font-family: var(--iv-sans); font-size: 13px; color: rgba(244,245,247,0.85); }
.iv__map-cta { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: #fff; white-space: nowrap; }
.iv__map-cta svg { width: 14px; height: 14px; color: var(--iv-accent); }
@media (max-width: 640px) { .iv__map-frame { height: 62vh; } .iv__map-bar { flex-wrap: wrap; gap: 10px; } .iv__map-label { order: 3; width: 100%; } .iv__map-cta { margin-left: 0; } }

/* ---- Catalyst calendar / "The road ahead" ---- */
.iv__road-legend { font-family: var(--iv-mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--iv-faint); align-self: center; }
.iv__road { list-style: none; margin: 0; padding: 0; position: relative; }
/* Vertical spine removed (2026-08-20) — same fault the client flagged on the
   left rail: a line drawn through the dots and across every separator. The
   hairline separators already pace the list; the marks carry state alone. */
.iv__road::before { content: none; }
.iv__road-item { display: grid; grid-template-columns: 96px 24px 1fr; align-items: start; gap: 0; padding: 18px 0; border-top: 1px solid var(--iv-rule-soft); }
.iv__road-item:first-child { border-top: none; }
.iv__road-when { font-family: var(--iv-mono); font-size: 12px; letter-spacing: 0.04em; color: var(--iv-ink-2); padding-top: 2px; font-variant-numeric: tabular-nums; }
.iv__road-mark { position: relative; width: 11px; height: 11px; border-radius: 50%; margin: 4px auto 0; background: var(--iv-surface); border: 1.5px solid var(--iv-faint); z-index: 1; }
.iv__road-item[data-state="next"] .iv__road-mark { background: var(--iv-accent); border-color: var(--iv-accent); box-shadow: none; }
/* Space Mono ships 400/700 only, so a 700 here rendered as the page's one
   bold-mono word. The accent colour is already the "you are here" cue. */
.iv__road-item[data-state="next"] .iv__road-when { color: var(--iv-accent); font-weight: 400; }
.iv__road-item[data-state="ongoing"] .iv__road-mark { border-style: dashed; }
.iv__road-h { font-family: var(--iv-disp); font-size: 17px; font-weight: 300; /* D1 */ color: var(--iv-ink); margin: 0 0 4px; letter-spacing: -0.01em; }
.iv__road-p { font-size: 13.5px; line-height: 1.55; color: var(--iv-dim); margin: 0; max-width: 62ch; }
@media (max-width: 640px) {
  .iv__road::before { left: 5px; }
  .iv__road-item { grid-template-columns: 16px 1fr; gap: 12px; }
  .iv__road-when { grid-column: 2; padding-top: 0; margin-bottom: 4px; }
  .iv__road-mark { grid-column: 1; grid-row: 1; margin: 4px 0 0; }
  .iv__road-body { grid-column: 2; }
}

/* ---- Hero conversion CTAs ---- */
.iv__hero-cta { display: flex; gap: 12px; flex-wrap: wrap; margin: 26px 0 18px; }
.iv__cta { display: inline-flex; align-items: center; gap: 9px; font-family: var(--iv-mono); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; text-decoration: none; padding: 13px 22px; transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease; }
.iv__cta svg { width: 15px; height: 15px; }
.iv__cta--primary { background: var(--iv-accent); color: #fff; border: 1px solid var(--iv-accent); }
.iv__cta--primary:hover { background: #A62200; border-color: #A62200; } /* D2: shared hover red */
.iv__cta--ghost { background: transparent; color: var(--iv-ink); border: 1px solid var(--iv-rule); }
.iv__cta--ghost:hover { border-color: var(--iv-rule-strong); }

/* ---- Fix: snapshot must not inherit the body .iv__container grid ---- */
.iv__snapshot > .iv__container { display: block; max-width: var(--iv-max); margin: 0 auto; }

/* ============================================================================
   CREATIVE SYSTEM — "the IR page as a geophysical field survey"
   Governing idea: Teako's value is underground and largely undrilled. So the
   page is read like a survey instrument — mono readouts, measurement ticks,
   coordinates, one live cue, a single accent. Restraint over decoration.
   ============================================================================ */

/* Section kickers removed from markup (2026-07) — the rail labels sections. */

/* --- Measurement-tick rule: a survey ruler, used as a divider motif --- */
.iv-ticks {
  height: 9px;
  background-image:
    linear-gradient(var(--iv-rule) 0 0),                       /* baseline */
    repeating-linear-gradient(90deg, var(--iv-rule) 0 1px, transparent 1px 13px); /* ticks */
  background-size: 100% 1px, 100% 100%;
  background-position: 0 0, 0 0;
  background-repeat: no-repeat, repeat-x;
  opacity: 0.75;
}

/* --- Snapshot head --- */
/* Pulsing halo dropped (2026-08-20): the tick marks a live figure, it does not
   need to advertise itself. A flat 8px accent square, like the news tag. */
.iv__snap-tick { border-radius: 0; box-shadow: none; animation: none; }
.iv__snap-head { position: relative; }
/* Decorative "63.4°N 10.9°E" survey stamp removed (2026-08-20) — the client
   asked for this block tidied, and a coordinate that means nothing here was
   the first thing to go. */
.iv__snap-head::after { content: none; }
.iv__snap-asof { margin-left: auto; }
/* NOTE (2026-08-20): the snapshot figures used to be overridden to Space Mono
   700 here — the one bold-mono in the page, and the "font I'm not sure where
   it comes from". Figures now use the page's display face at the same weight
   as every other figure (.iv__kpi-value, .iv__agg-v, .iv__stock-price), set
   once in the block above. This override is deliberately left neutral. */
.iv__snap-v { font-family: var(--iv-disp); font-weight: 400; font-size: 30px; letter-spacing: -0.015em; }
@media (max-width: 900px) { .iv__snap-v { font-size: 26px; } }

/* --- Instrument frame ticks on the map readout --- */
.iv__map { position: relative; }
.iv__map::before, .iv__map::after {
  content: ""; position: absolute; width: 13px; height: 13px; z-index: 2; pointer-events: none;
  border-color: rgba(244,245,247,0.55);
}
.iv__map::before { top: 12px; left: 12px; border-top: 1.5px solid; border-left: 1.5px solid; }
.iv__map::after  { top: 12px; right: 12px; border-top: 1.5px solid; border-right: 1.5px solid; }

/* Hero corner survey stamp removed (2026-07) — hero reads cleaner bare. */
.iv__hero-inner { position: relative; }
/* Thesis headline: a sentence, not a two-word title — right-size it so it
   reads as a sharp argument, not a shout. */
.iv__h1 {
  max-width: 20ch;
  font-size: clamp(32px, 3.6vw, 52px) !important;
  line-height: 1.08 !important;
  letter-spacing: -0.02em;
}

/* --- The rail: a quiet numbered index --- */
/* Was a "drill-core depth spine": a vertical line down the nav with a dot per
   section sitting on it. The client (2026-08-20) called it out — the line ran
   through every dot AND crossed every separator, so the rail read as a grid of
   crosses rather than a list. Reverted to the index language used elsewhere:
   mono leading-zero numerals, hairline separators, no vertical line, no red.
   The active/passed states now speak in ink weight, not colour. */
.iv__nav {
  position: relative;
  background-image: none;
}
.iv__nav-link { grid-template-columns: 26px 1fr; }
.iv__nav-link::before {              /* leading-zero index, not a node */
  content: counter(ivnav, decimal-leading-zero);
  width: auto; height: auto;
  background: none; border: 0; border-radius: 0; box-shadow: none;
  margin: 0;
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  color: var(--iv-faint);
  transition: color 220ms ease;
}
.iv__nav-link.is-passed::before { color: var(--iv-faint); }
.iv__nav-link.is-active::before { color: var(--iv-ink); }
.iv__rail-kicker { position: relative; }

/* --- Share price as an instrument channel --- */
/* The real red area-line IS the trace; we frame it as one channel of the
   survey — a mono channel label + a faint amplitude tick ruler down the
   left edge. No fake seismic squiggle: the price data stays honest. */
.iv__chart-channel {
  position: absolute; top: 9px; left: 14px; z-index: 3; pointer-events: none;
  font-family: var(--iv-mono); font-size: 9.5px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--iv-faint);
}
.iv__chart::before {              /* amplitude tick ruler */
  content: ""; position: absolute; top: 0; bottom: 0; left: 0; width: 6px; z-index: 2;
  pointer-events: none;
  background-image: repeating-linear-gradient(
    to bottom, var(--iv-rule-strong) 0 1px, transparent 1px 22px);
}

/* --- Drill-depth readout: the whole page as a descent --- */
.iv__depth {
  position: fixed; left: 22px; bottom: 20px; z-index: 40; pointer-events: none;
  font-family: var(--iv-mono); font-size: 10px; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--iv-faint);
}
.iv__depth b {
  font-weight: 500; color: var(--iv-dim);
  font-variant-numeric: tabular-nums; letter-spacing: 0.04em;
}
@media (max-width: 900px) { .iv__depth { display: none; } }

/* --- Investment case: synthesizing lede + ledger-of-reasons weighting --- */
.iv__why-lede {
  margin: 16px 0 0; max-width: 60ch;
  font-family: var(--iv-disp); font-weight: 400;
  font-size: 19px; line-height: 1.5; letter-spacing: -0.01em;
  color: var(--iv-ink);
}
.iv__why { margin-top: 44px; }
.iv__why-item {                 /* each reason is a logged entry, not a card */
  border-top: 1px solid var(--iv-rule);
  padding-top: 20px;
}
.iv__why-num { font-size: 13px; letter-spacing: 0.06em; padding-top: 2px; }

/* ---------- Disclosure register toolbar (filter + sort, 2026-07) ---------- */
.iv__reg-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 26px;
}
.iv__reg-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.iv__reg-chip {
  appearance: none;
  border: 1px solid var(--iv-rule-strong);
  background: transparent;
  padding: 8px 14px;
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-dim);
  cursor: pointer;
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
.iv__reg-chip:hover { border-color: var(--iv-accent); color: var(--iv-ink); }
.iv__reg-chip--link { text-decoration: none; display: inline-flex; align-items: center; }
.iv__filing[hidden] { display: none; }
.iv__reg-chip.is-active { background: var(--iv-ink); border-color: var(--iv-ink); color: var(--iv-bg); }
.iv__reg-controls { display: flex; align-items: center; gap: 16px; }
.iv__reg-select { display: inline-flex; align-items: center; gap: 10px; font-family: var(--iv-mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--iv-dim); }
.iv__reg-select select {
  appearance: none;
  border: 1px solid var(--iv-rule-strong);
  background: transparent;
  padding: 8px 12px;
  font-family: var(--iv-mono);
  font-size: 11.5px;
  color: var(--iv-ink);
  cursor: pointer;
}
.iv__reg-sort {
  appearance: none;
  border: none;
  border-bottom: 1px solid var(--iv-rule-strong);
  background: transparent;
  padding: 8px 2px;
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-ink);
  cursor: pointer;
}
.iv__reg-sort:hover { border-color: var(--iv-accent); color: var(--iv-accent); }
.iv__reg-empty { font-family: var(--iv-mono); font-size: 12.5px; color: var(--iv-dim); padding: 28px 0; }

/* ---------- Cautionary statements block (disclosure page, 2026-07) ---------- */
.iv__fls h3 {
  margin: 34px 0 10px;
  font-size: 15px;
  font-weight: 300; /* D1 */
  color: var(--iv-ink);
}
.iv__fls h3:first-child { margin-top: 0; }
.iv__fls p {
  margin: 0 0 14px;
  font-size: 13.5px;
  line-height: 1.7;
  color: var(--iv-dim);
  max-width: 76ch;
}

/* ==========================================================================
   Capital structure (deck slides 7-8) — share table + 45° hatch bars.
   ========================================================================== */
.iv__cap {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
  margin-top: 36px;
  padding-top: 28px;
  border-top: 1px solid var(--iv-rule);
}
.iv__cap-list { margin: 14px 0 0; }
.iv__cap-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 9px 0;
  border-bottom: 1px solid var(--iv-rule-soft);
}
.iv__cap-row dt { font-size: 13px; color: var(--iv-ink-2); }
.iv__cap-row dd {
  margin: 0;
  font-family: var(--iv-mono);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  color: var(--iv-ink);
}
.iv__cap-row:last-child dd { color: #C42800; }
.iv__cap-bar { margin-top: 14px; }
.iv__cap-bar-head {
  display: flex;
  gap: 10px;
  align-items: baseline;
  font-size: 12px;
  color: var(--iv-ink-2);
}
.iv__cap-bar-head b {
  font-family: var(--iv-mono);
  font-weight: 400;
  font-size: 12px;
  min-width: 52px;
  font-variant-numeric: tabular-nums;
  color: var(--iv-ink);
}
.iv__cap-bar-track {
  display: block;
  margin-top: 5px;
  height: 10px;
  border: 1px solid var(--iv-rule);
}
.iv__cap-bar-fill {
  display: block;
  height: 100%;
  /* 45° survey hatch — the brand mark carrying the data */
  background: repeating-linear-gradient(
    45deg,
    var(--iv-ink) 0, var(--iv-ink) 1.5px,
    transparent 1.5px, transparent 5px
  );
}
.iv__cap-bar--mgmt .iv__cap-bar-fill {
  background: repeating-linear-gradient(
    45deg,
    #C42800 0, #C42800 1.5px,
    transparent 1.5px, transparent 5px
  );
}
.iv__cap-src {
  margin: 22px 0 0;
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(20, 26, 38, 0.45);
}

/* ---------- Partner agreements ---------- */
.iv__pstrip {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 36px;
  padding: 16px 0;
  border-top: 1px solid var(--iv-rule);
  border-bottom: 1px solid var(--iv-rule);
  font-size: 12.5px;
  color: var(--iv-ink-2);
}
.iv__pstrip b {
  font-family: var(--iv-mono);
  font-weight: 400;
  font-size: 17px;
  margin-right: 8px;
  color: var(--iv-ink);
}
.iv__deals { margin-top: 8px; }
.iv__deal {
  display: grid;
  grid-template-columns: 44px 1fr auto;
  gap: 18px;
  padding: 22px 0;
  border-bottom: 1px solid var(--iv-rule-soft);
}
/* Index numerals are set once, for all three lists — see "INDEX ATOM" below. */
.iv__deal-num {
  font-family: var(--iv-mono);
}
.iv__deal-projects {
  margin: 0 0 4px;
  font-size: 16.5px;
  font-weight: 300; /* D1 */
  letter-spacing: -0.01em;
}
.iv__deal-partner {
  display: block;
  font-family: var(--iv-mono);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(20, 26, 38, 0.55);
}
.iv__deal-interest { margin: 8px 0 0; font-size: 13.5px; color: var(--iv-ink-2); max-width: 560px; }
.iv__deal-metals {
  font-family: var(--iv-mono);
  font-size: 12px;
  white-space: nowrap;
  color: var(--iv-ink);
}

/* ---------- Strategy pillars ---------- */
.iv__pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
  margin-top: 14px;
}
/* Red 2px keyline → house hairline (client, 2026-08-20). */
.iv__pillar { border-top: 1px solid var(--iv-rule); padding-top: 16px; }
.iv__pillar-h { margin: 8px 0 6px; font-size: 16px; font-weight: 300; } /* D1 */
.iv__pillar-b { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--iv-ink-2); }

/* ---------- Advisors ---------- */
.iv__advisors {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 14px;
}
.iv__advisor { display: flex; gap: 14px; align-items: center; }
.iv__leader-photo--sm { width: 44px; height: 44px; font-size: 13px; }

@media (max-width: 900px) {
  .iv__cap, .iv__pillars, .iv__advisors { grid-template-columns: 1fr; gap: 28px; }
  .iv__deal { grid-template-columns: 32px 1fr; }
  .iv__deal-metals { grid-column: 2; }
}

/* Anchor landings — clear the fixed nav, and never land off-screen */
.iv__section { scroll-margin-top: 92px; }

/* ---------- Enquiry form (native) ---------- */
.iv__cform { margin-top: 40px; max-width: 640px; position: relative; }
.iv__cform-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
  margin-top: 14px;
}
.iv__cform label { display: block; margin-bottom: 18px; }
.iv__cform-l {
  display: block;
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(20, 26, 38, 0.5);
  margin-bottom: 7px;
}
.iv__cform input[type="text"],
.iv__cform input[type="email"],
.iv__cform textarea {
  width: 100%;
  padding: 9px 2px 12px;
  border: 0;
  border-radius: 0;
  background: repeating-linear-gradient(
    45deg,
    rgba(20, 26, 38, 0.35) 0, rgba(20, 26, 38, 0.35) 1.5px,
    transparent 1.5px, transparent 5px
  ) left bottom / 100% 5px no-repeat;
  font-family: 'IBM Plex Sans', system-ui, sans-serif;
  font-size: 14.5px;
  color: var(--iv-ink);
  outline: none;
  resize: vertical;
}
.iv__cform input:focus,
.iv__cform textarea:focus {
  background-image: repeating-linear-gradient(
    45deg,
    #C42800 0, #C42800 1.5px,
    transparent 1.5px, transparent 5px
  );
}
.iv__cform-foot { display: flex; align-items: center; gap: 18px; margin-top: 4px; }
.iv__cform button {
  appearance: none;
  cursor: pointer;
  padding: 11px 22px 11px 26px;
  border: 1px solid var(--iv-ink);
  border-radius: 0;
  background: repeating-linear-gradient(
    45deg,
    #C42800 0, #C42800 1.5px,
    transparent 1.5px, transparent 5px
  ) left top / 6px 100% no-repeat;
  font-family: var(--iv-mono);
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--iv-ink);
  transition: background 200ms ease, color 200ms ease, border-color 200ms ease;
}
.iv__cform button:hover { background: #C42800; border-color: #C42800; color: #fff; }
.iv__cform-note {
  font-family: var(--iv-mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(20, 26, 38, 0.45);
}
@media (max-width: 640px) { .iv__cform-grid { grid-template-columns: 1fr; gap: 0; } }

/* Aggregated exposures — boxed cards (client, 2026-08-04): the combined
   position across every deal, in the same card register as the deals below. */
.iv__agg {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin: 14px 0 26px;
}
/* One even row of five on wide screens (client, 2026-08-06: "one box below
   the four looks funny"). */
@media (min-width: 1100px) { .iv__agg { grid-template-columns: repeat(5, 1fr); } }
.iv__agg-box {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 18px 16px 16px;
  border: 1px solid var(--iv-rule);
  background: var(--iv-panel, transparent);
}
.iv__agg-v {
  font-family: var(--iv-mono);
  font-size: 22px;
  line-height: 1;
  color: var(--iv-ink);
}
.iv__agg-k {
  font-size: 13px;
  font-weight: 600;
  color: var(--iv-ink);
  line-height: 1.35;
}
.iv__agg-s {
  font-size: 11.5px;
  color: var(--iv-ink-2);
  line-height: 1.45;
}

/* Aggregated upside v2 (client, 2026-08-11: more prominent, more visual):
   red keyline, oversized Geologica values, hatch wash on hover. */
/* Red keyline dropped (client, 2026-08-20); these now match .iv__news-card and
   .iv__pres-card exactly — white surface, hairline, border darkens on hover. */
.iv__agg-box { position: relative; border: 1px solid var(--iv-rule); background: var(--iv-surface); transition: border-color .22s ease; }
.iv__agg-box:hover { border-color: var(--iv-rule-strong); }
.iv__agg-v { font-family: var(--iv-disp); font-weight: 400; font-size: 30px; letter-spacing: -0.015em; }

/* ==========================================================================
   D22 — PAGE CONSISTENCY PASS (2026-08-20)
   The client asked whether this page agrees with the rest of the site. Three
   things it did not agree with, fixed here in one place:
     1. Containers wore a red 2px top keyline (news cards, strategy pillars,
        aggregated-exposure boxes). Red keylines are out site-wide; every
        container on this page now uses the same hairline recipe.
     2. Index numerals came in three sizes and two colours across the three
        numbered lists. One atom below.
     3. Space Mono ships 400 and 700 only, so any 500/600/700 in a mono rule
        rendered as bold — the "font I'm not sure where it comes from". Mono is
        regular everywhere; emphasis comes from colour and size, not weight.
   ========================================================================== */

/* --- INDEX ATOM: one treatment for every numbered list on the page --- */
.iv__why-num,
.iv__pillar-num,
.iv__deal-num {
  font-family: var(--iv-mono);
  font-weight: 400;
  font-size: 12px;
  letter-spacing: 0.06em;
  color: var(--iv-dim);
  font-variant-numeric: tabular-nums;
}
.iv__why-num { padding-top: 3px; }

/* --- THE ROAD AHEAD: a ledger, not a timeline ------------------------------
   With the spine gone (see .iv__road::before above) the round state-dots were
   left floating beside each heading, reading as stray bullets — and a round
   dot breaks the page's own "radius 0 everywhere" rule anyway. They also said
   nothing the row did not already say: the state each dot encoded is written
   out in the column beside it ("Q3 2026" / "Ongoing" / "As applicable"). So
   the dots go and the list becomes what it always was — a two-column ledger
   paced by hairlines. The single "next" item keeps the accent, in the date. */
.iv__road-item { grid-template-columns: 160px 1fr; }
.iv__road-mark { display: none; }
.iv__road-when { grid-column: 1; grid-row: 1; padding-right: 24px; white-space: nowrap; }
.iv__road-body { grid-column: 2; grid-row: 1; }
@media (max-width: 640px) {
  .iv__road-item { grid-template-columns: 1fr; }
  .iv__road-when { grid-column: 1; grid-row: 1; margin-bottom: 6px; padding-right: 0; }
  .iv__road-body { grid-column: 1; grid-row: 2; }
}

/* --- FLUSH LEDGER GRIDS ---------------------------------------------------
   Every data grid on the page (snapshot, KPI ledger, listings strip, contact
   cards) was drawn as a boxed table: an outer left rule, then cell padding,
   so the first column's text sat 22–40px inside the page margin while the
   headings above it sat on the margin. The client noticed it on the snapshot
   ("aligned grid"); it is the same fault in four places. One recipe now:
   no outer rule, internal hairlines only, outer columns flush to the margin. */
.iv__kpis { border-left: none; }
.iv__kpi:nth-child(3n + 1) { padding-left: 0; }
.iv__kpi:nth-child(3n)     { padding-right: 0; border-right: none; }

.iv__listing:last-child { padding-right: 0; }

.iv__contact { border-left: none; }
.iv__contact-card:nth-child(odd)  { padding-left: 0; }
.iv__contact-card:nth-child(even) { padding-right: 0; border-right: none; }

@media (max-width: 1080px) {
  /* Single column: no card carries a side rule, only the row separator. */
  .iv__contact-card { border-right: none; padding-inline: 0; }
}
@media (max-width: 640px) {
  .iv__kpi:nth-child(3n), .iv__kpi:nth-child(3n + 1) { padding-inline: 24px; border-right: 1px solid var(--iv-rule); }
  .iv__kpi:nth-child(2n + 1) { padding-left: 0; }
  .iv__kpi:nth-child(2n)     { padding-right: 0; border-right: none; }
}

/* ==========================================================================
   D23 — DIVIDER SYSTEM (2026-08-20)
   Client: "some of them have double lines above, between each section. We've
   got a line, 'Investor Update', a line, and then it goes 'Investor Relation'."
   He is right: the page drew a rule for the section head AND another rule for
   the first block inside it, 48px apart, so most sections opened with two
   near-identical hairlines around the heading. One rule per boundary now:

     Section opener   1px  var(--iv-rule-strong)   .iv__section-head ONLY
     Group divider    1px  var(--iv-rule)          between blocks in a section
     Row separator    1px  var(--iv-rule) / -soft  inside a list or ledger

   Two standing rules follow from that:
     • A block sitting directly under a section head carries NO rule of its
       own — the head's rule already IS that boundary.
     • No block carries both a top and a bottom rule. Bands close with a
       change of ground (background), not with a second line.

   Spacing scale (unchanged where it already worked):
     128px between sections · 48px head → content · 52px between groups
     inside a section · 20–28px inside a group.
   ========================================================================== */

/* 1. Blocks that open a section: the head's rule is the only rule. */
.iv__docs,
.iv__filings,
.iv__faq,
.iv__contact { border-top: none; }
.iv__leaders { border-top: none; padding-top: 0; }
.iv__pstrip  { border-top: none; padding-top: 0; }
/* The reasons ledger: rows 2 and 3 keep their rules, row 1 does not. */
.iv__why-item:nth-child(-n + 2) { border-top: none; padding-top: 0; }

/* 2. Group dividers inside a section: the light hairline, never the strong one
      (the strong weight is reserved for section openers). */
.iv__kpis,
.iv__events { border-top: 1px solid var(--iv-rule); }

/*    …and a block that follows a ledger does not draw its own opening rule:
      the ledger's last row already closed with one. (Capital structure after
      the KPI grid; corporate information after the FAQ list.) */
.iv__cap,
.iv__corp { border-top: none; }

/* 3. No block carries both a top and a bottom rule. Subscribe opened AND
      closed with a strong rule, which put a line either side of its heading
      and then a third under "Investor relations." — the exact stutter the
      client described. The closing rule goes; the whitespace closes it. */
.iv__signup { border-bottom: none; padding-bottom: 0; }

@media (max-width: 1080px) {
  /* One column: only the true first row loses its rule. */
  .iv__why-item:nth-child(2) { border-top: 1px solid var(--iv-rule); padding-top: 20px; }
}

/* ==========================================================================
   TYPOGRAPHY SCALE — tidy pass, mobile + desktop (client, 29 Aug 2026)
   88 distinct text styles had drifted (h3 24/22/20/19/18/17/16.5/16; body
   15/14/13.5/13/12.5; mono 12/11.5/11/10.5/10/9.5). One scale from here:
     display  h2 .iv__section-h (unchanged)
     h3       22 · 20 · 18 · 17   (Geologica 300)
     body     14.5 · 14 · 13       (Plex 400)
     mono     12 numerals · 11 labels/actions · 10.5 sub-labels
   Trailing block so it wins at equal specificity.
   ========================================================================== */
.iv__signup h3, .iv__pres-title { font-size: 22px; }
.iv__why-h { font-size: 20px; }
.iv__doc-title, .iv__news-title { font-size: 18px; line-height: 1.3; }
.iv__road-h, .iv__deal-projects, .iv__pillar-h { font-size: 17px; }
.iv__faq-q { font-size: 17px; }
.iv__faq-a-inner { font-size: 14.5px; line-height: 1.6; }
.iv__why-b, .iv__pres-desc, .iv__pillar-b, .iv__road-p, .iv__deal-interest { font-size: 14px; line-height: 1.6; }
.iv__leader-bio { font-size: 13px; line-height: 1.55; }
.iv__agg-s, .iv__snap-s, .iv__signup-consent, .iv__cap-bar-head { font-size: 12px; }
.iv__pres-sublabel, .iv__corp-label, .iv__section-action, .iv__pres-kicker, .iv__news-read, .iv__filing-date,
.iv__signup button, .iv__cform button { font-size: 11px; letter-spacing: 0.12em; }
.iv__eyebrow, .iv__snap-kicker, .iv__contact-kicker, .iv__ticker-live, .iv__stock-symbol { font-size: 11px; letter-spacing: 0.18em; }
.iv__news-meta, .iv__news-tag, .iv__doc-meta, .iv__doc-dl, .iv__deal-partner { font-size: 11px; letter-spacing: 0.1em; }
.iv__snap-l, .iv__kpi-label, .iv__cap-src, .iv__leader-role, .iv__cform-l, .iv__cform-note, .iv__stock-note, .lbl,
.iv__snap-asof, .iv__road-legend, .iv__chart-channel { font-size: 10.5px; letter-spacing: 0.12em; }

/* ==========================================================================
   PHONES — Investor Hub (client, 29 Aug 2026)
   ========================================================================== */
@media (max-width: 760px) {
  /* Hero quick links on ONE line. */
  .iv__quick { gap: 6px; flex-wrap: nowrap; }
  .iv__quick a { padding: 8px 7px; font-size: 10px; letter-spacing: 0.04em; white-space: nowrap; }
  /* Section nav → sticky bar with a dropdown (built by investor-hub.js).
     The rail must not be a grid item: a grid row is exactly its own height,
     so sticky had nowhere to stick. Block flow on phones. */
  .iv__container { display: block; }
  .iv__main { margin-top: 40px; }
  /* Dark sticky bar (client, 29 Aug): no 'Section' label, no gap, no stray line. */
  .iv__rail { position: sticky; top: 0; z-index: 40; margin: 0 calc(-1 * var(--teako-page-gutter)); padding: 0; background: #141A26; border: 0; gap: 0; }
  .iv__rail-kicker { display: none; }
  .iv__navdd { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 12px; appearance: none; padding: 14px var(--teako-page-gutter); border: 0; background: #141A26; color: #F4F5F7; font-family: var(--iv-sans); font-size: 14px; font-weight: 500; text-align: left; cursor: pointer; }
  .iv__navdd-k { display: none; }
  .iv__navdd svg { color: #C42800; }
  .iv__navdd svg { width: 16px; height: 16px; flex: none; transition: transform 0.25s; }
  .iv__navdd[aria-expanded="true"] svg { transform: rotate(180deg); }
  /* The list overlays the page (absolute under the bar) so opening/closing
     never shifts the content the reader is about to scroll to. */
  .iv__nav { display: none; position: absolute; left: var(--teako-page-gutter); right: var(--teako-page-gutter); top: calc(100% - 2px); z-index: 41; flex-direction: column; gap: 0; max-height: calc(100vh - 120px); overflow-y: auto; border: 1px solid var(--iv-rule-strong); background: var(--iv-surface, #fff); box-shadow: 0 16px 40px rgba(20, 26, 38, 0.16); }
  .iv__rail.is-open .iv__nav { display: flex; }
  .iv__nav-link { border-bottom: 1px solid var(--iv-rule); padding: 11px 14px; font-size: 14px; }
  .iv__nav-link:last-child { border-bottom: 0; }
  .iv__section { scroll-margin-top: 64px; }
  /* Blocks that were 2-up: one card on top of the other. */
  .iv__agg { grid-template-columns: 1fr; }
  .iv__kpis { grid-template-columns: 1fr; }
  /* Filings / disclosure rows (this CSS also drives /disclosure/): date on its
     own line, title full width beneath, arrow right — the 104px date column
     left the title 160px wide on a phone. */
  .iv__filing { grid-template-columns: minmax(0, 1fr) 28px; grid-template-areas: "date arrow" "title arrow"; gap: 4px 12px; align-items: center; }
  .iv__filing-date { grid-area: date; }
  .iv__filing-title { grid-area: title; }
  .iv__filing-arrow { grid-area: arrow; }
  /* One-column "Why Teako" items: drop the 46ch measure so the body uses the column. */
  .iv__why-b { max-width: none; }
}
/* 7 Sep 2026 round: ownership attribution + headshots */
.iv__cap-note { margin: 18px 0 0; font-size: 12px; line-height: 1.55; color: var(--iv-dim, #8A9099); max-width: 72ch; }
.iv__leader-photo--img { background-size: cover; background-position: center top; color: transparent; }
