/* ==========================================================================
   Self-hosted fonts (offline — no Google Fonts CDN).
   Geist — Vercel's open-source type family (SIL OFL 1.1), sourced from the
   official "geist" npm package. Used for everything: body copy AND display
   headings/big numbers, for one clean, modern, highly-legible-at-a-distance
   look suited to a projected presentation. See vendor/geist-font-LICENSE.txt.
   ========================================================================== */
@font-face { font-family: "Geist"; font-style: normal; font-weight: 400; font-display: swap; src: url("../assets/fonts/Geist-Regular.woff2") format("woff2"); }
@font-face { font-family: "Geist"; font-style: normal; font-weight: 500; font-display: swap; src: url("../assets/fonts/Geist-Medium.woff2") format("woff2"); }
@font-face { font-family: "Geist"; font-style: normal; font-weight: 600; font-display: swap; src: url("../assets/fonts/Geist-SemiBold.woff2") format("woff2"); }
@font-face { font-family: "Geist"; font-style: normal; font-weight: 700; font-display: swap; src: url("../assets/fonts/Geist-Bold.woff2") format("woff2"); }
@font-face { font-family: "Geist"; font-style: normal; font-weight: 900; font-display: swap; src: url("../assets/fonts/Geist-Black.woff2") format("woff2"); }

/* ==========================================================================
   Design tokens
   ========================================================================== */
:root {
  /* Mediterranean olive + terracotta + warm cream palette, Canada red used
     sparingly for Canada-specific badges/accents only. */
  --olive-900: #26301a;
  --olive-800: #313f21;
  --olive-700: #435529;
  --olive-600: #566e34;
  --olive-500: #6f8a41;
  --olive-400: #8fa863;
  --olive-300: #b7c896;
  --olive-100: #e4ead4;

  --terracotta-700: #9c3f19;
  --terracotta-600: #bd4f20;
  --terracotta-500: #d4652f;
  --terracotta-400: #e28a54;
  --terracotta-100: #f6e2d3;

  --gold-600: #a8791f;
  --gold-500: #c99a3c;
  --gold-300: #e8cd8f;

  --canada-red: #d52b1e;
  --canada-red-dark: #a3160c;

  --cream-50: #fbf8f1;
  --cream-100: #f5efe1;
  --cream-200: #ece2ca;

  --ink-900: #211d15;
  --ink-700: #423b2c;
  --ink-500: #6b6250;
  --ink-300: #9b917c;

  --white: #ffffff;

  --pos: #3f7a4a;
  --neg: #b3401f;

  --font-display: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-body: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-num: "Geist", sans-serif;

  --radius-sm: 8px;
  --radius-md: 14px;
  --radius-lg: 22px;

  --shadow-sm: 0 1px 2px rgba(38, 48, 26, 0.06), 0 1px 1px rgba(38, 48, 26, 0.04);
  --shadow-md: 0 8px 24px rgba(38, 48, 26, 0.10), 0 2px 6px rgba(38, 48, 26, 0.06);
  --shadow-lg: 0 18px 48px rgba(38, 48, 26, 0.16), 0 4px 12px rgba(38, 48, 26, 0.08);

  --nav-w: 300px;
  --content-max: 1040px;
  --wide-max: 1320px;
}

/* Intentionally always light — no automatic dark-mode variant. This page is
   built for a live webinar presentation (projected), with a fixed white
   background and deliberately large type; following the OS/browser
   dark-mode preference risks unreadable contrast on someone else's screen
   during the talk, which matters more here than dark-mode support does. */

:root {
  /* Fixed (never swapped) — used ONLY by chrome elements that keep a solid
     olive background regardless of site theme (nav active state, roadmap
     badges, table header bar). */
  --chrome-text: #ffffff;
  --chrome-text-soft: #eef2e4;
}

/* ==========================================================================
   Reset / base — sized for projection: a live audience reads this from
   across a room, not a laptop at arm's length.
   ========================================================================== */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--white);
  color: var(--ink-900);
  font-family: var(--font-body);
  font-size: 19px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; }
h1, h2, h3, h4 { font-family: var(--font-display); margin: 0 0 .5em; line-height: 1.15; font-weight: 600; color: var(--ink-900); }
p { margin: 0 0 1em; }
ul, ol { margin: 0; padding: 0; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* ==========================================================================
   Layout shell
   ========================================================================== */
.app-shell { display: flex; min-height: calc(100 * var(--vh)); }

.top-progress {
  position: fixed; top: 0; left: 0; height: 4px; width: 0%;
  background: linear-gradient(90deg, var(--terracotta-500), var(--gold-500));
  z-index: 500; transition: width .1s linear;
}

/* ---- sidebar nav ---- */
.nav-sidebar {
  width: var(--nav-w); flex: 0 0 var(--nav-w);
  position: sticky; top: 0; align-self: flex-start; height: calc(100 * var(--vh));
  overflow-y: auto; background: var(--white); color: var(--ink-700);
  border-right: 1px solid var(--cream-200);
  padding: 30px 22px 40px;
  z-index: 200;
}
.nav-brand { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin-bottom: 28px; padding-right: 6px; }
.nav-brand-logo { width: 100%; max-width: 190px; height: auto; display: block; }
.nav-brand-text { font-size: 14.5px; line-height: 1.3; color: var(--ink-500); }
.nav-brand-text strong { display: block; color: var(--olive-800); font-size: 17px; font-family: var(--font-display); }

.nav-list { list-style: none; display: flex; flex-direction: column; gap: 3px; }
.nav-link {
  display: flex; align-items: baseline; gap: 10px; text-decoration: none;
  padding: 9px 11px; border-radius: var(--radius-sm); color: var(--ink-500);
  font-size: 15.5px; font-weight: 600; letter-spacing: .01em;
  transition: background .15s, color .15s;
}
.nav-link .n { font-family: var(--font-num); font-size: 12px; opacity: .65; min-width: 18px; }
.nav-link:hover { background: var(--cream-100); color: var(--olive-800); }
.nav-link.active { background: var(--terracotta-600); color: var(--chrome-text); }
.nav-sub-list { list-style: none; margin: 2px 0 6px 26px; display: flex; flex-direction: column; gap: 1px; }
.nav-sub-link { display: block; padding: 5px 8px; font-size: 13.5px; color: var(--ink-500); text-decoration: none; border-radius: 6px; }
.nav-sub-link:hover { color: var(--olive-800); background: var(--cream-100); }
.nav-sub-link.active { color: var(--terracotta-600); }

.nav-toggle {
  display: none;
}

/* ---- main content ---- */
.main {
  flex: 1 1 auto; min-width: 0;
}
.section {
  padding: 100px max(24px, calc((100% - var(--wide-max)) / 2)) 0;
  scroll-margin-top: 12px;
}
.section:last-of-type { padding-bottom: 100px; }
.section-inner { max-width: var(--content-max); margin: 0 auto; }
.section-inner.wide { max-width: var(--wide-max); }

.chapter-kicker { display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-num); font-weight: 700; font-size: 15px; letter-spacing: .08em; text-transform: uppercase; color: var(--terracotta-600); margin-bottom: 12px; }
.chapter-kicker .num { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: var(--terracotta-600); color: var(--chrome-text); font-size: 13px; }
.chapter-title { font-size: clamp(32px, calc(3.8 * var(--vw)), 48px); max-width: 900px; }
.chapter-intro { font-size: 19px; color: var(--ink-500); max-width: 700px; }

.sub-block { margin-top: 60px; padding-top: 10px; border-top: 1px solid var(--cream-200); }
.sub-block:first-of-type { border-top: none; margin-top: 44px; }
.sub-title { font-size: clamp(25px, calc(2.4 * var(--vw)), 31px); display: flex; align-items: baseline; gap: 12px; }
.sub-title .id { font-family: var(--font-num); font-size: 16px; color: var(--terracotta-600); font-weight: 700; }
.sub-body p { color: var(--ink-700); max-width: 800px; }
.sub-caption { font-size: 18px; color: var(--ink-500); max-width: 700px; margin-bottom: 4px; }
.sub-sources { margin-top: 14px; font-size: 11.5px; color: var(--ink-300); font-style: italic; max-width: 800px; opacity: .8; }

/* per-block citation, attached directly under a stat grid/list/table/chart
   instead of only once at the end of a subsection — travels with the number. */
.source-tag { margin-top: 8px; font-size: 12px; color: var(--terracotta-600); font-style: italic; opacity: .85; }

/* climat des affaires: map + facts */
.climat-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 28px; align-items: start; margin: 24px 0; }
@media (max-width: 900px) { body:not(.paged) .climat-grid { grid-template-columns: 1fr; } }

/* sommaire */
.hero-sommaire { margin-top: 30px; }
.hero-sommaire .chapter-title { font-size: clamp(24px, calc(2.6 * var(--vw)), 32px); }
.sommaire-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; margin-top: 26px; }
.sommaire-card { display: flex; align-items: center; gap: 14px; padding: 18px 20px; background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); text-decoration: none; color: var(--ink-900); transition: transform .15s ease, border-color .15s ease; }
.sommaire-card:hover { transform: translateY(-2px); border-color: var(--terracotta-500); }
.sommaire-num { flex: none; width: 40px; height: 40px; border-radius: 50%; background: var(--terracotta-600); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; }
.sommaire-title { flex: 1; font-weight: 600; font-size: 17px; line-height: 1.3; }
.sommaire-meta { flex: none; font-size: 12.5px; color: var(--ink-500); }

/* reveal-on-scroll */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity .6s ease, transform .6s ease; }
.reveal.in { opacity: 1; transform: translateY(0); }
.reveal-stagger > * { opacity: 0; transform: translateY(16px); transition: opacity .5s ease, transform .5s ease; }
.reveal-stagger.in > * { opacity: 1; transform: translateY(0); }
.reveal-stagger.in > *:nth-child(1) { transition-delay: .02s; }
.reveal-stagger.in > *:nth-child(2) { transition-delay: .08s; }
.reveal-stagger.in > *:nth-child(3) { transition-delay: .14s; }
.reveal-stagger.in > *:nth-child(4) { transition-delay: .20s; }
.reveal-stagger.in > *:nth-child(5) { transition-delay: .26s; }
.reveal-stagger.in > *:nth-child(6) { transition-delay: .32s; }
.reveal-stagger.in > *:nth-child(n+7) { transition-delay: .36s; }

/* ==========================================================================
   Hero
   ========================================================================== */
.hero { position: relative; padding: 72px max(24px, calc((100% - var(--wide-max)) / 2)) 60px; overflow: hidden; background: var(--white); border-bottom: 1px solid var(--cream-200); }
/* slides are plain white: no gradient wash on the hero */
.hero-inner { position: relative; max-width: var(--wide-max); margin: 0 auto; }
.hero-kicker { font-family: var(--font-num); font-size: 15px; letter-spacing: .12em; text-transform: uppercase; color: var(--terracotta-600); font-weight: 700; margin-bottom: 16px; }
.hero-title { font-size: clamp(38px, calc(5.4 * var(--vw)), 64px); max-width: 980px; color: var(--olive-900); }
.hero-subtitle { display: none; }
.hero-intro { display: none; }

.hero-stats { margin-top: 34px; display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }
.hero-stat { flex: 1 1 210px; max-width: 280px; background: var(--cream-50); border: 1px solid var(--cream-200); border-radius: var(--radius-md); padding: 22px 18px; }
.hero-stat .value { font-family: var(--font-display); font-size: clamp(30px, calc(2.8 * var(--vw)), 40px); color: var(--olive-800); font-weight: 700; }
.hero-stat .label { font-size: 15px; color: var(--ink-500); margin-top: 7px; line-height: 1.35; }

/* ==========================================================================
   Stat tiles / grids
   ========================================================================== */
/* flex+wrap (not grid) so a leftover tile from an uneven count centers
   itself instead of stranding alone at the left edge of an empty row. */
.stat-grid { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: center; gap: 16px; margin: 30px 0; }
.stat-tile { flex: 1 1 200px; max-width: 270px; background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); padding: 20px 20px 18px; box-shadow: var(--shadow-sm); }
.stat-tile .icon { width: 30px; height: 30px; margin-bottom: 10px; color: var(--terracotta-600); }
.stat-tile .value { font-family: var(--font-display); font-size: 34px; font-weight: 700; color: var(--olive-800); line-height: 1.1; }
.stat-tile .label { font-size: 15px; color: var(--ink-500); margin-top: 7px; line-height: 1.4; }

/* macro-indicator tiles carry a full descriptive sentence, not a short
   number, so they get their own heading/fact/meaning hierarchy instead of
   reusing the big-number .value style (which made the sentence look like a
   shouted headline and, being the tallest tile, stretched every sibling in
   the flex row to match it). */
.stat-tile .macro-heading { font-size: 16.5px; font-weight: 700; color: var(--olive-800); margin-bottom: 6px; line-height: 1.3; }
.stat-tile .macro-fact { font-size: 14.5px; color: var(--ink-500); line-height: 1.5; }
.stat-tile .macro-meaning { font-size: 13px; font-style: italic; color: var(--terracotta-600); margin-top: 8px; line-height: 1.4; }

/* ==========================================================================
   Cards / bullets / chips
   ========================================================================== */
.card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: 16px; margin: 26px 0; }
.card { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); padding: 22px; box-shadow: var(--shadow-sm); }
.card h4 { font-size: 19px; }
.card p { font-size: 16.5px; color: var(--ink-700); margin-bottom: 8px; display: flex; align-items: center; gap: 8px; }
.card p:last-child { margin-bottom: 0; }

.bullet-list { list-style: none; display: flex; flex-direction: column; gap: 16px; margin: 22px 0; }
.bullet-list li { display: flex; gap: 14px; max-width: 800px; }
.bullet-list li::before { content: ""; flex: 0 0 auto; width: 9px; height: 9px; border-radius: 50%; background: var(--terracotta-500); margin-top: 10px; }
.bullet-list b { color: var(--olive-800); }
.bullet-list p, .bullet-list span { color: var(--ink-700); font-size: 17.5px; margin: 0; }

.chip-row { display: flex; flex-wrap: wrap; gap: 9px; margin: 20px 0; }
.chip { display: inline-flex; align-items: center; gap: 7px; padding: 8px 16px; border-radius: 999px; background: var(--olive-100); color: var(--olive-800); font-size: 14.5px; font-weight: 700; }
.chip .icon { width: 16px; height: 16px; }
.chip.terracotta { background: var(--terracotta-100); color: var(--terracotta-700); }
.chip.gold { background: var(--gold-300); color: var(--terracotta-700); }
.chip.canada { background: #fdecea; color: var(--canada-red-dark); }
.chip.filter { cursor: pointer; background: var(--cream-200); color: var(--ink-700); border: 1px solid transparent; user-select: none; }
.chip.filter:hover { border-color: var(--terracotta-400); }
.chip.filter.active { background: var(--terracotta-600); color: var(--chrome-text); }

.callout { border-left: 5px solid var(--terracotta-500); background: var(--terracotta-100); border-radius: 0 var(--radius-md) var(--radius-md) 0; padding: 18px 22px; margin: 24px 0; max-width: 800px; font-size: 17.5px; color: var(--terracotta-700); }
.callout.warning { border-color: var(--neg); background: #fbe9e2; color: #7a2c10; }
.callout strong { color: inherit; }
.callout-quote { font-family: var(--font-display); font-size: 26px; font-style: italic; color: var(--olive-800); border-left: 5px solid var(--gold-500); padding: 8px 24px; margin: 28px 0; max-width: 760px; line-height: 1.3; }
.callout-quote cite { display: block; font-family: var(--font-body); font-style: normal; font-size: 14px; color: var(--ink-500); margin-top: 10px; }

/* ==========================================================================
   Tables
   ========================================================================== */
.data-table-wrap { overflow-x: auto; margin: 24px 0; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); }
table.data-table { width: 100%; border-collapse: collapse; background: var(--white); font-size: 16px; }
table.data-table th { text-align: left; background: var(--cream-100); color: var(--olive-800); font-family: var(--font-num); font-size: 13px; letter-spacing: .04em; text-transform: uppercase; padding: 14px 16px; position: sticky; top: 0; border-bottom: 2px solid var(--olive-300); }
table.data-table td { padding: 14px 16px; border-bottom: 1px solid var(--cream-200); color: var(--ink-700); vertical-align: top; }
table.data-table tr:last-child td { border-bottom: none; }
table.data-table tr:hover td { background: var(--cream-100); }
table.data-table td.num { font-family: var(--font-num); font-weight: 700; color: var(--olive-800); white-space: nowrap; }

/* ==========================================================================
   SWOT
   ========================================================================== */
.swot-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin: 28px 0; }
.swot-col { border-radius: var(--radius-md); padding: 22px; }
.swot-col.pos { background: var(--olive-100); }
.swot-col.neg { background: var(--terracotta-100); }
.swot-col h4 { font-size: 15px; text-transform: uppercase; letter-spacing: .06em; font-family: var(--font-num); }
.swot-col.pos h4 { color: var(--olive-700); }
.swot-col.neg h4 { color: var(--terracotta-700); }
.swot-col ul { list-style: none; display: flex; flex-direction: column; gap: 11px; margin-top: 14px; }
.swot-col li { font-size: 16px; color: var(--ink-700); padding-left: 18px; position: relative; }
.swot-col li::before { content: "＋"; position: absolute; left: 0; color: var(--olive-600); font-weight: 700; }
.swot-col.neg li::before { content: "－"; color: var(--terracotta-600); }
@media (max-width: 720px) { body:not(.paged) .swot-grid { grid-template-columns: 1fr; } }

/* ==========================================================================
   Two-column
   ========================================================================== */
.two-col { display: grid; grid-template-columns: 1.1fr .9fr; gap: 32px; align-items: start; }
@media (max-width: 860px) { body:not(.paged) .two-col { grid-template-columns: 1fr; } }

/* ==========================================================================
   Logos
   ========================================================================== */
.logo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; margin: 24px 0; }
.logo-badge {
  display: flex; align-items: center; justify-content: center; text-align: center;
  background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-sm);
  padding: 16px 12px; height: 84px; box-shadow: var(--shadow-sm);
  transition: transform .15s, box-shadow .15s;
}
.logo-badge:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.logo-badge img { max-height: 46px; max-width: 100%; object-fit: contain; }
.logo-badge .fallback-text { font-family: var(--font-display); font-weight: 700; font-size: 15px; color: var(--olive-800); line-height: 1.25; }
.logo-badge.small { height: 64px; }
.logo-badge.small img { max-height: 32px; }

/* ==========================================================================
   Icons / pictograms / flow diagrams
   ========================================================================== */
.icon { display: inline-flex; color: var(--olive-600); }
.icon svg { width: 1em; height: 1em; }
.stat-icon { width: 32px; height: 32px; color: var(--terracotta-600); margin-bottom: 10px; }
.stat-icon svg { width: 100%; height: 100%; }

.pictogram-block { margin: 24px 0; }
.pictogram { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 12px; }
.pictogram-icon { width: 28px; height: 28px; color: var(--cream-200); }
.pictogram-icon svg { width: 100%; height: 100%; }
.pictogram-icon.filled { color: var(--terracotta-600); }
.pictogram-caption { font-size: 16.5px; color: var(--ink-700); }
.pictogram-caption b { font-family: var(--font-display); font-size: 24px; color: var(--olive-800); margin-right: 6px; }

.flow-diagram { display: flex; align-items: stretch; flex-wrap: wrap; gap: 12px; margin: 26px 0; }
.flow-node { flex: 1 1 170px; background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); padding: 18px 16px; text-align: center; box-shadow: var(--shadow-sm); }
.flow-icon { width: 32px; height: 32px; color: var(--olive-600); margin: 0 auto 10px; }
.flow-icon svg { width: 100%; height: 100%; }
.flow-title { font-weight: 700; font-size: 16px; color: var(--olive-800); }
.flow-sub { font-size: 14.5px; color: var(--terracotta-600); font-weight: 700; margin-top: 5px; }
.flow-arrow { display: flex; align-items: center; justify-content: center; flex: 0 0 auto; color: var(--olive-300); font-size: 24px; font-weight: 700; }
@media (max-width: 700px) { body:not(.paged) .flow-diagram { flex-direction: column; } body:not(.paged) .flow-arrow { transform: rotate(90deg); } }

/* ---- flags (real country flags, not decorative icons) ---- */
.flag { display: inline-flex; width: 1.5em; height: 1.13em; border-radius: 2px; overflow: hidden; box-shadow: 0 0 0 1px rgba(0,0,0,.08); vertical-align: middle; flex: 0 0 auto; }
.flag svg { width: 100%; height: 100%; object-fit: cover; display: block; }
.flag-lg { width: 56px; height: 42px; border-radius: 4px; }
.flag-row { display: flex; align-items: center; gap: 10px; }
.flag-row .flag-lg { box-shadow: var(--shadow-sm); }

/* ---- real photographs (Wikimedia Commons, properly licensed) — the
   report's actual "pictures", distinct from decorative icons ---- */
.photo-block { margin: 26px 0; border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-md); }
.photo-block img { width: 100%; height: 100%; object-fit: cover; display: block; max-height: 420px; }
.photo-block figcaption { padding: 10px 16px; font-size: 13.5px; color: var(--ink-500); background: var(--white); }
.photo-hero { position: absolute; inset: 0; z-index: 0; }
.photo-hero img { width: 100%; height: 100%; object-fit: cover; }
.photo-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(251,248,241,.75), rgba(251,248,241,.96) 75%); }
.photo-split { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; align-items: center; margin: 26px 0; }
.photo-split .photo-block { margin: 0; }
@media (max-width: 780px) { body:not(.paged) .photo-split { grid-template-columns: 1fr; } }

/* ---- accent color rotation (icon + number pairs get a distinct hue each,
   matching the reference infographic style instead of one color for all) ---- */
:root {
  --accent-olive: #566e34;
  --accent-terracotta: #bd4f20;
  --accent-gold: #a8791f;
  --accent-teal: #157a76;
  --accent-plum: #7a3f8a;
}
.accent-olive { color: var(--accent-olive); }
.accent-terracotta { color: var(--accent-terracotta); }
.accent-gold { color: var(--accent-gold); }
.accent-teal { color: var(--accent-teal); }
.accent-plum { color: var(--accent-plum); }
.accent-bg-olive { background: var(--accent-olive); }
.accent-bg-terracotta { background: var(--accent-terracotta); }
.accent-bg-gold { background: var(--accent-gold); }
.accent-bg-soft-olive { background: #eef1e6; }
.accent-bg-soft-terracotta { background: var(--terracotta-100); }
.accent-bg-soft-gold { background: #faf1de; }

/* ---- stat list — icon + big colored number + label per row, dotted
   separators. The compact "fact list" infographic pattern. ---- */
.stat-list { margin: 26px 0; max-width: 720px; }
.stat-row { display: flex; align-items: center; gap: 18px; padding: 16px 0; border-bottom: 1px dashed var(--cream-200); }
.stat-row:last-child { border-bottom: none; }
.stat-row-icon { flex: 0 0 auto; width: 52px; height: 52px; border-radius: 50%; border: 2px solid currentColor; display: flex; align-items: center; justify-content: center; }
.stat-row-icon .icon { width: 26px; height: 26px; color: inherit; }
.stat-row-text { flex: 1; }
.stat-row-value { font-family: var(--font-display); font-weight: 700; font-size: 28px; }
.stat-row-label { font-size: 17px; color: var(--ink-700); }

/* ---- lever panel — solid color header bar + floating icon + tinted body
   panel with an icon grid. Matches the reference 3-lever infographic. ---- */
.lever-panel { text-align: center; }
.lever-head { color: #fff; font-weight: 800; font-size: 16px; letter-spacing: .03em; text-transform: uppercase; padding: 14px 10px; border-radius: var(--radius-sm); }
.lever-head-icon { width: 56px; height: 56px; border-radius: 50%; background: var(--white); border: 2px solid currentColor; margin: -20px auto 0; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-sm); position: relative; }
.lever-head-icon .icon { width: 28px; height: 28px; }
.lever-body { border-radius: var(--radius-lg); padding: 30px 16px 18px; margin-top: -20px; }
/* flex+wrap so an odd leftover item (e.g. 3 items in a "2-column" panel)
   centers on its own row instead of sitting alone against the left edge. */
.lever-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 20px 10px; }
.lever-item { flex: 1 1 45%; max-width: 220px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.lever-item-icon { width: 34px; height: 34px; color: var(--olive-800); }
.lever-item-icon .icon { width: 100%; height: 100%; }
.lever-item-label { font-size: 14px; font-weight: 600; color: var(--olive-800); line-height: 1.3; }
.lever-panels-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 22px; margin: 34px 0 24px; }

/* ---- radial gauge (big-number headline stat, Chart.js doughnut dressed
   up as a gauge — see Charts.gauge in js/charts.js) ---- */
.gauge-card { text-align: center; }
.gauge-wrap { position: relative; max-width: 220px; margin: 0 auto; }
.gauge-value { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 30px; font-weight: 700; color: var(--olive-800); }
.gauge-label { font-size: 15px; color: var(--ink-500); margin-top: 10px; max-width: 220px; margin-left: auto; margin-right: auto; }

/* ---- animated big number (CountUp.js — see js/charts.js countUpValue) ---- */
.big-number { font-family: var(--font-display); font-weight: 700; color: var(--olive-800); font-size: clamp(44px, calc(6 * var(--vw)), 76px); line-height: 1; }
.big-number-label { font-size: 17px; color: var(--ink-500); margin-top: 10px; }
.big-number-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 22px; margin: 30px 0; text-align: center; }
.big-number-card { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); padding: 30px 20px; box-shadow: var(--shadow-sm); }

/* ==========================================================================
   Charts
   ========================================================================== */
.chart-card { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); padding: 24px 24px 16px; box-shadow: var(--shadow-sm); margin: 24px 0; }
.chart-card h4 { font-size: 18px; color: var(--olive-800); }
.chart-card .chart-caption { font-size: 14px; color: var(--ink-300); margin-top: 8px; }
.chart-canvas-wrap { position: relative; width: 100%; }
.chart-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 780px) { body:not(.paged) .chart-grid-2 { grid-template-columns: 1fr; } }

/* ==========================================================================
   Map
   ========================================================================== */
.map-wrap { display: grid; grid-template-columns: 1.3fr 1fr; gap: 26px; align-items: start; margin: 28px 0; }
@media (max-width: 900px) { body:not(.paged) .map-wrap { grid-template-columns: 1fr; } }
.map-card { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); padding: 20px; box-shadow: var(--shadow-sm); }
.ca-map { width: 100%; height: auto; display: block; }
.ca-map .province { fill: var(--olive-100); stroke: var(--cream-50); stroke-width: 60; transition: fill .15s; cursor: default; }
.ca-map .province.interactive { cursor: pointer; }
.ca-map .province.interactive:hover, .ca-map .province.active { fill: var(--terracotta-500); }
.ca-map .province.priority { fill: var(--olive-400); }
.ca-map .province.priority.interactive:hover, .ca-map .province.priority.active { fill: var(--terracotta-500); }
.map-legend { display: flex; gap: 18px; margin-top: 16px; font-size: 14.5px; color: var(--ink-500); flex-wrap: wrap; }
.map-legend span { display: inline-flex; align-items: center; gap: 7px; }
.map-legend i { width: 14px; height: 14px; border-radius: 3px; display: inline-block; }

/* ---- world map (cross-country comparisons) ---- */
.world-map-card { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); padding: 22px; box-shadow: var(--shadow-sm); margin: 26px 0; }
.world-map { width: 100%; height: auto; display: block; background: var(--cream-50); border-radius: var(--radius-md); }
.world-map path, .world-map g { fill: #e4ddc8; stroke: #fff; stroke-width: .6; }
.province-panel { background: var(--cream-50); border: 1px solid var(--cream-200); border-left: 5px solid var(--terracotta-500); border-radius: var(--radius-lg); padding: 26px; min-height: 320px; }
.province-panel .ph-title { color: var(--olive-900); font-family: var(--font-display); font-size: 28px; margin-bottom: 6px; }
.province-panel .ph-share { font-family: var(--font-num); color: var(--terracotta-600); font-weight: 700; font-size: 15px; margin-bottom: 16px; }
.province-panel p { font-size: 16.5px; color: var(--ink-500); }
.province-panel .placeholder { color: var(--ink-300); font-size: 16.5px; }

/* ==========================================================================
   Timeline (Canada-EU chapter)
   ========================================================================== */
.timeline { position: relative; margin: 32px 0; padding-left: 30px; border-left: 3px solid var(--olive-300); }
.timeline-item { position: relative; padding-bottom: 32px; }
.timeline-item:last-child { padding-bottom: 4px; }
.timeline-item::before { content: ""; position: absolute; left: -36px; top: 3px; width: 15px; height: 15px; border-radius: 50%; background: var(--terracotta-500); border: 3px solid var(--cream-50); }
.timeline-item.milestone::before { background: var(--gold-500); width: 19px; height: 19px; left: -38px; }
.timeline-date { font-family: var(--font-num); font-weight: 700; font-size: 14.5px; color: var(--terracotta-600); text-transform: uppercase; letter-spacing: .04em; }
.timeline-label { font-size: 20px; font-weight: 700; color: var(--olive-800); margin: 4px 0 5px; }
.timeline-detail { font-size: 16.5px; color: var(--ink-700); max-width: 680px; }

/* ==========================================================================
   Roadmap stepper
   ========================================================================== */
.roadmap { display: flex; flex-direction: column; gap: 14px; margin: 30px 0; counter-reset: step; }
.roadmap-step { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); overflow: hidden; }
.roadmap-step-head { display: flex; align-items: center; gap: 18px; padding: 18px 22px; cursor: pointer; user-select: none; }
.roadmap-step-num { flex: 0 0 auto; width: 42px; height: 42px; border-radius: 50%; background: var(--olive-800); color: var(--chrome-text); display: flex; align-items: center; justify-content: center; font-family: var(--font-num); font-weight: 700; font-size: 17px; }
.roadmap-step-title { font-weight: 700; color: var(--olive-800); flex: 1; font-size: 18px; }
.roadmap-step-caret { color: var(--ink-300); transition: transform .2s; font-size: 18px; }
.roadmap-step.open .roadmap-step-caret { transform: rotate(180deg); }
.roadmap-step-body { max-height: 0; overflow: hidden; transition: max-height .25s ease; }
.roadmap-step.open .roadmap-step-body { max-height: 260px; }
.roadmap-step-body-inner { padding: 0 22px 22px 82px; font-size: 16.5px; color: var(--ink-700); }

/* ==========================================================================
   Pillars (chapter 9)
   ========================================================================== */
.pillar-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; margin: 28px 0; }
@media (max-width: 780px) { body:not(.paged) .pillar-grid { grid-template-columns: 1fr; } }
.pillar-card { background: var(--white); border: 1px solid var(--cream-200); border-top: 4px solid var(--olive-500); border-radius: var(--radius-lg); padding: 24px; box-shadow: var(--shadow-sm); }
.pillar-card .pnum { font-family: var(--font-num); color: var(--terracotta-600); font-size: 14px; font-weight: 700; }
.pillar-card h4 { color: var(--olive-900); font-size: 21px; margin-top: 8px; }
.pillar-card ul { list-style: none; display: flex; flex-direction: column; gap: 11px; margin-top: 14px; }
.pillar-card li { font-size: 15.5px; color: var(--ink-700); padding-left: 16px; position: relative; }
.pillar-card li::before { content: "—"; position: absolute; left: 0; color: var(--gold-600); }

/* ==========================================================================
   Retailer table filters
   ========================================================================== */
.table-toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 22px 0 8px; }
.table-search { flex: 1 1 220px; padding: 11px 16px; border-radius: 999px; border: 1px solid var(--cream-200); background: var(--white); font-size: 16px; font-family: var(--font-body); }
.table-search:focus { outline: 2px solid var(--terracotta-400); }
.table-count { font-size: 14px; color: var(--ink-300); margin: 6px 0 0; }
.retailer-cell { display: flex; align-items: center; gap: 12px; }
.retailer-cell .logo-badge { width: 48px; height: 48px; padding: 5px; flex: 0 0 auto; }
.retailer-cell .logo-badge img { max-height: 28px; }

/* ==========================================================================
   Footer / sources
   ========================================================================== */
.site-footer { background: var(--white); color: var(--ink-500); border-top: 1px solid var(--cream-200); padding: 54px max(24px, calc((100% - var(--wide-max)) / 2)) 44px; }
.footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 28px; max-width: var(--wide-max); margin: 0 auto; }
.footer-grid h5 { color: var(--terracotta-600); font-size: 14px; text-transform: uppercase; letter-spacing: .06em; font-family: var(--font-num); margin-bottom: 12px; }
.footer-grid ul { list-style: none; display: flex; flex-direction: column; gap: 7px; }
.footer-grid li { font-size: 14.5px; color: var(--ink-500); }
.footer-note { max-width: var(--wide-max); margin: 36px auto 0; font-size: 13.5px; color: var(--ink-300); border-top: 1px solid var(--cream-200); padding-top: 22px; }

/* ==========================================================================
   Responsive nav (mobile)
   ========================================================================== */
@media (max-width: 980px) {
  body:not(.paged) .nav-sidebar {
    position: fixed; inset: 0 auto 0 0; transform: translateX(-100%);
    transition: transform .25s ease; box-shadow: var(--shadow-lg);
  }
  body:not(.paged) .nav-sidebar.open { transform: translateX(0); }
  body:not(.paged) .nav-toggle {
    display: flex; position: fixed; top: 14px; left: 14px; z-index: 300;
    width: 44px; height: 44px; border-radius: 50%; background: var(--olive-900);
    color: var(--chrome-text); align-items: center; justify-content: center; border: none;
    box-shadow: var(--shadow-md);
  }
  body:not(.paged) .section { padding-left: 20px; padding-right: 20px; }
}


/* ---- pager (page-by-page view) ---- */
.pg-hide { display: none !important; }
.pager { position: fixed; left: var(--nav-w, 245px); right: 0; bottom: 0; z-index: 40; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 28px; background: rgba(255,255,255,.94); backdrop-filter: blur(6px); border-top: 1px solid var(--cream-200); box-shadow: 0 -4px 18px rgba(38,48,26,.08); }
.pager-mid { display: flex; flex-direction: column; align-items: center; line-height: 1.25; text-align: center; min-width: 0; }
.pager-label { font-weight: 600; color: var(--olive-800); font-size: 15px; }
.pager-count { font-size: 13px; color: var(--ink-500); font-variant-numeric: tabular-nums; }
.pager-btn { flex: none; border: 0; border-radius: 999px; padding: 11px 22px; font-size: 15px; font-weight: 600; cursor: pointer; background: var(--terracotta-600); color: #fff; transition: background .15s, opacity .15s; }
.pager-btn:hover:not(:disabled) { background: var(--terracotta-700); }
.pager-btn:disabled { opacity: .35; cursor: default; }
@media (max-width: 900px) { body:not(.paged) .pager { left: 0; padding: 10px 14px; } body:not(.paged) .pager-btn { padding: 10px 14px; font-size: 14px; } }

/* slide mode: every page fits the screen, nothing scrolls */
html:has(body.paged), body.paged { height: calc(100 * var(--vh)); overflow: hidden; }
/* slide view = a fixed-size stage (like a slide deck) scaled to the window by pager.js,
   so screen size and browser zoom never change how slides are laid out or counted */
:root { --vw: 1vw; --vh: 1vh; }
html:has(body.paged) { width: 100%; height: 100%; background: #fff; }
body.paged { position: absolute; top: 0; left: 0; margin: 0; transform-origin: 0 0; background: #fff; }
body.paged.pg-layout { visibility: hidden; }
body.paged .app-shell { min-height: 0; height: calc(100 * var(--vh)); }
body.paged .main { height: calc(100 * var(--vh)); overflow: hidden; }
body.paged .section { padding: 18px 40px 0; min-height: 0; }
body.paged .section:last-of-type { padding-bottom: 0; }
body.paged .hero { padding: 22px max(24px, calc((100% - var(--wide-max)) / 2)) 0; border-bottom: 0; }
body.paged .site-footer { height: auto; overflow: hidden; padding-top: 24px; }
.pg { display: flow-root; }
.suite-mark { font-weight: 500; font-size: .6em; color: var(--ink-500); }
.table-pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 10px; font-size: 14px; color: var(--ink-500); }
.table-pager-btn { border: 1px solid var(--cream-200); background: var(--white); border-radius: 999px; width: 36px; height: 36px; font-size: 20px; line-height: 1; cursor: pointer; color: var(--olive-800); }
.table-pager-btn:disabled { opacity: .35; cursor: default; }

.pg-fill { display: flex; flex-direction: column; justify-content: space-evenly; }
.pg-fill > * { flex: 0 0 auto; }

/* slide mode: every roadmap step is shown open, no animation */
body.paged .roadmap-step-body { max-height: none; transition: none; }
body.paged .roadmap-step-caret { display: none; }
body.paged .roadmap-step-head { cursor: default; }
.table-select { border: 1px solid var(--cream-200); border-radius: 999px; padding: 8px 14px; font: inherit; font-size: 14px; background: var(--white); color: var(--ink-700); max-width: 100%; }

body.paged .site-footer { min-height: calc(calc(100 * var(--vh)) - 96px); display: flex; flex-direction: column; justify-content: center; }
body.paged .footer-grid { width: 100%; }

/* slide mode: the map and its key figures share one slide — figures in two compact columns */
body.paged .climat-grid { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.4fr); gap: 20px; margin: 8px 0; align-items: center; }
body.paged .climat-grid .stat-list { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 18px; }
body.paged .climat-grid .stat-row { padding: 8px 0; }
body.paged .climat-grid .map-card { padding: 12px; }
body.paged .climat-grid .stat-row-value { font-size: 19px; }
body.paged .climat-grid .stat-row-label { font-size: 13px; line-height: 1.3; }
body.paged .climat-grid .stat-row-icon { width: 32px; height: 32px; flex: none; }
body.paged .climat-grid .stat-row { gap: 10px; }

/* icons inside circles: the icon box now centres its glyph and the glyph fills the box */
.icon { align-items: center; justify-content: center; }
.stat-row-icon .icon, .lever-head-icon .icon, .lever-item-icon .icon, .roadmap-step-icon { align-items: center; justify-content: center; }
.stat-row-icon .icon svg, .lever-head-icon .icon svg { width: 100%; height: 100%; display: block; }
body.paged .climat-grid .stat-row-icon .icon { width: 18px; height: 18px; }


/* ---- slide mode: every slide is a grid — equal columns, equal heights ---- */
body.paged .g-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 22px; align-items: stretch; }
body.paged .g-grid > * { margin-top: 0; margin-bottom: 0; min-width: 0; }
body.paged .g-grid > .g-full { grid-column: 1 / -1; }
body.paged .g-grid > .g-half { height: 100%; }
body.paged .g-grid > .g-half.chart-card, body.paged .g-grid > .g-half.lever-panel { height: 100%; }
body.paged .g-grid > .g-half.stat-list { max-width: none; align-self: center; }
body.paged .sub-block { margin-top: 0; padding-top: 0; border-top: 0; }
body.paged .hero-stats, body.paged .stat-grid { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); gap: 14px; align-items: stretch; justify-content: normal; }
body.paged .hero-stat, body.paged .stat-tile { max-width: none; width: auto; flex: none; height: 100%; }
body.paged .logo-grid { grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); align-items: stretch; }
body.paged .lever-panels-row, body.paged .card-grid, body.paged .pillar-grid { align-items: stretch; }
body.paged .lever-panels-row > *, body.paged .card-grid > *, body.paged .pillar-grid > * { height: 100%; }

/* ---- uniform slide padding: every slide (hero, chapters, footer) shares the same content zone ---- */
body.paged { --slide-pad-t: 20px; --slide-pad-x: 40px; }
body.paged .hero,
body.paged .section,
body.paged .section:last-of-type,
body.paged .site-footer { padding: var(--slide-pad-t) var(--slide-pad-x) 0; }
body.paged .hero-inner,
body.paged .section-inner,
body.paged .section-inner.wide,
body.paged .footer-grid,
body.paged .footer-note { max-width: none; width: 100%; margin-left: 0; margin-right: 0; box-sizing: border-box; }

/* ---- uniform typography and spacing scale for every slide ---- */
body.paged { --sp-1: 10px; --sp-2: 16px; --sp-3: 22px; }
body.paged .chapter-kicker { margin: 0 0 var(--sp-1); font-size: 15px; }
body.paged .chapter-title { font-size: 40px; line-height: 1.15; margin: 0 0 var(--sp-2); max-width: none; }
body.paged .chapter-intro { font-size: 18px; line-height: 1.5; margin: 0 0 var(--sp-2); max-width: none; }
body.paged .sub-title { font-size: 28px; line-height: 1.2; margin: 0 0 var(--sp-2); }
body.paged .sub-body p, body.paged .sub-body li { font-size: 17px; line-height: 1.55; max-width: none; }
body.paged .sub-body p { margin: 0 0 var(--sp-1); }
body.paged .sub-body > :last-child { margin-bottom: 0; }
body.paged .source-tag { margin: var(--sp-1) 0 0; font-size: 12px; }
body.paged .g-grid { gap: var(--sp-2) var(--sp-3); }
body.paged .hero-stats, body.paged .stat-grid, body.paged .card-grid, body.paged .pillar-grid, body.paged .swot-grid { gap: var(--sp-2); }
body.paged .callout, body.paged .callout-quote { margin: var(--sp-2) 0 0; }

/* ---- slides: text uses the full width of its zone (no narrow max-width caps) ---- */
body.paged .hero-title, body.paged .chapter-title, body.paged .chapter-intro, body.paged .sub-caption,
body.paged .sub-sources, body.paged .bullet-list li, body.paged .callout, body.paged .callout-quote,
body.paged .stat-list, body.paged .timeline-detail, body.paged .sub-body, body.paged .sub-body p { max-width: none; }
body.paged h1, body.paged h2, body.paged h3, body.paged h4, body.paged p, body.paged li { text-wrap: wrap; overflow-wrap: normal; hyphens: none; }
body.paged .sub-title { display: block; }
body.paged .sub-title .id { margin-right: 12px; }

/* ---- infographic slides: bigger type, cards instead of stacked text, spare height goes to visuals ---- */
body.paged .pg-fill { justify-content: flex-start; }
body.paged .pg-fill > .g-grid { flex: 1 1 auto; }
body.paged .sub-caption, body.paged .sub-body p { font-size: 21px; line-height: 1.45; }
body.paged .chapter-intro { font-size: 21px; }
body.paged .sub-title { font-size: 32px; }
body.paged .chapter-title { font-size: 46px; }
body.paged .bullet-list { display: grid; grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr)); grid-auto-rows: 1fr; gap: var(--sp-2); list-style: none; margin: 0; padding: 0; counter-reset: card; }
body.paged .bullet-list li { display: flex; flex-direction: column; justify-content: center; gap: 10px; max-width: none; position: relative; counter-increment: card;
  background: var(--white); border: 1px solid var(--cream-200); border-top: 5px solid var(--terracotta-500); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 22px 24px; font-size: 20px; line-height: 1.45; color: var(--ink-700); }
body.paged .bullet-list li::before { content: counter(card); display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; flex: none; border-radius: 50%; background: var(--terracotta-600); color: var(--chrome-text); font-family: var(--font-num); font-weight: 700; font-size: 17px; }
body.paged .bullet-list li > span { display: flex; flex-direction: column; gap: 8px; }
body.paged .bullet-list li b { display: block; font-family: var(--font-display); font-size: 24px; line-height: 1.2; color: var(--ink-900); }

/* ---- bigger type ---- */
body.paged .sub-caption, body.paged .sub-body p { font-size: 24px; line-height: 1.4; }
body.paged .chapter-intro { font-size: 24px; }
body.paged .sub-title { font-size: 36px; }
body.paged .chapter-title { font-size: 52px; }
body.paged .bullet-list li { font-size: 23px; }
body.paged .bullet-list li b { font-size: 28px; }
body.paged .callout { font-size: 21px; }
body.paged .data-table th, body.paged .data-table td, body.paged table th, body.paged table td { font-size: 17px; line-height: 1.35; }
body.paged .source-tag, body.paged .sub-sources { font-size: 14px; }
body.paged .photo-block img, body.paged .photo-split img, body.paged .hero-photo-row img { max-height: calc(34 * var(--vh)); width: 100%; object-fit: cover; }

/* ---- tables fill their slide: rows share the free height ---- */
body.paged .data-table-wrap { margin: 0; overflow: visible; }
body.paged table.data-table th { font-size: 15px; padding: 12px 16px; position: static; }
body.paged table.data-table td { font-size: 19px; line-height: 1.35; padding: 10px 16px; vertical-align: middle; }
body.paged .g-grid > :has(> table), body.paged .g-grid > :has(> * > table), body.paged .g-grid > :has(> * > * > table) { display: flex; flex-direction: column; }
body.paged .g-grid table.data-table { flex: 1 1 auto; height: auto; }
body.paged .g-grid > :has(> * > table) > *, body.paged .g-grid > :has(> * > * > table) > *, body.paged .g-grid > :has(> * > * > table) > * > * { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }

/* slides whose visual sits directly in the slide: it takes the free height and stretches its content */
body.paged .pg-fill > .pg-grow { flex: 1 1 auto; min-height: 0; align-content: stretch; align-items: stretch; }
body.paged .pg-fill > .photo-split.pg-grow, body.paged .pg-fill > .roadmap.pg-grow, body.paged .pg-fill > .timeline.pg-grow, body.paged .pg-fill > .flow-diagram.pg-grow, body.paged .pg-fill > .climat-grid.pg-grow { grid-auto-rows: 1fr; }
body.paged .pg-grow.photo-split img { max-height: none; height: 100%; }
body.paged .pg-grow.photo-split figure, body.paged .pg-grow.photo-split .photo-block { display: flex; flex-direction: column; }
body.paged .pg-grow.photo-split figure img, body.paged .pg-grow.photo-split .photo-block img { flex: 1 1 auto; min-height: 0; }
body.paged .pg-fill > .chart-card.pg-grow { display: flex; flex-direction: column; }

/* filter table: compact toolbar so more rows fit */
body.paged .table-toolbar { gap: 6px 8px; margin: 0 0 6px; }
body.paged .table-toolbar .chip { padding: 5px 12px; font-size: 14px; }
body.paged .table-toolbar select, body.paged .table-toolbar input { padding: 6px 10px; font-size: 14px; }
body.paged .filter-table-mount table.data-table td { font-size: 17px; padding: 8px 14px; }
body.paged .table-toolbar .chip-row { margin: 0; gap: 6px; }
body.paged .table-toolbar .chip { padding: 4px 10px; font-size: 13.5px; }
body.paged .table-pager { margin-top: 6px; flex-wrap: nowrap; }
body.paged .table-count { margin: 0; }

/* photos share the free height of their cell (the image itself adds no height of its own) */
body.paged .pg-fill figure.photo-block { display: flex; flex-direction: column; }
body.paged .pg-fill figure.photo-block img { flex: 1 1 0; height: 0; min-height: 150px; max-height: none; width: 100%; object-fit: cover; }
body.paged .pg-fill .g-grid > figure.photo-block { height: 100%; }

/* pillars: three equal cards side by side with readable text */
body.paged .pillar-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
body.paged .pillar-card { padding: 22px 24px; display: flex; flex-direction: column; justify-content: center; }
body.paged .pillar-card h4 { font-size: 26px; }
body.paged .pillar-card .pnum { font-size: 18px; }
body.paged .pillar-card li { font-size: 19px; line-height: 1.4; padding-left: 20px; }

/* insight card: one big number + the takeaway */
.insight-card { background: linear-gradient(160deg, var(--terracotta-600), var(--terracotta-700)); color: #fff; border-radius: var(--radius-lg); padding: 26px 28px; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; justify-content: center; gap: 10px; position: relative; overflow: hidden; }
.insight-card .insight-icon { width: 34px; height: 34px; color: var(--gold-300); }
.insight-card .insight-title { font-family: var(--font-num); font-size: 15px; letter-spacing: .06em; text-transform: uppercase; font-weight: 700; opacity: .9; }
.insight-card .insight-big { font-family: var(--font-display); font-size: 84px; line-height: 1; font-weight: 700; color: var(--gold-300); }
.insight-card p { font-size: 19px; line-height: 1.45; margin: 0; color: #fff; }
.insight-card .source-tag { color: #fff; opacity: .75; margin-top: 4px; }

/* retailer cards (3.1): big share + name + banner chips */
.retailer-cards { display: flex; flex-direction: column; gap: 12px; }
.retailer-card { display: grid; grid-template-columns: auto 1fr; grid-template-areas: "share name" "share banners"; column-gap: 18px; row-gap: 6px; align-items: center; background: var(--white); border: 1px solid var(--cream-200); border-left: 5px solid var(--terracotta-500); border-radius: var(--radius-md); padding: 12px 18px; box-shadow: var(--shadow-sm); }
.retailer-card .rc-share { grid-area: share; font-family: var(--font-display); font-size: 40px; font-weight: 700; color: var(--terracotta-600); min-width: 3.2ch; text-align: right; }
.retailer-card .rc-name { grid-area: name; font-size: 20px; font-weight: 700; color: var(--ink-900); }
.retailer-card .rc-banners { grid-area: banners; display: flex; flex-wrap: wrap; gap: 6px; }
.retailer-card .chip { padding: 3px 10px; font-size: 13px; }
body.paged .retailer-cards { height: 100%; justify-content: space-between; }
body.paged .retailer-cards > .retailer-card { flex: 1 1 0; }

/* province cards (2.2) */
.province-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.province-card { background: var(--white); border: 1px solid var(--cream-200); border-top: 6px solid var(--terracotta-500); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 20px 20px 18px; display: flex; flex-direction: column; gap: 6px; }
.province-card:nth-child(2) { border-top-color: var(--olive-500); }
.province-card:nth-child(3) { border-top-color: var(--gold-500); }
.province-card:nth-child(4) { border-top-color: var(--ink-300); }
.province-card .pc-name { font-family: var(--font-num); font-size: 15px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-500); }
.province-card .pc-kpi { font-family: var(--font-display); font-size: 56px; line-height: 1; font-weight: 700; color: var(--olive-900); }
.province-card .pc-kpi-label { font-size: 17px; color: var(--ink-700); min-height: 2.6em; }
.province-card .pc-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: auto; }
.province-card .chip { padding: 4px 10px; font-size: 13.5px; }
body.paged .province-cards > .province-card { height: 100%; justify-content: center; }
.province-card .pc-kpi { white-space: nowrap; }

/* margin range bars (3.2) */
.margin-bars { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 20px 26px; display: flex; flex-direction: column; gap: 14px; }
.margin-bars .mb-title { font-family: var(--font-num); font-size: 15px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-500); }
.margin-bars .mb-row { display: grid; grid-template-columns: minmax(200px, 1.1fr) 2fr 110px; gap: 20px; align-items: center; }
.margin-bars .mb-label { display: flex; gap: 12px; align-items: center; }
.margin-bars .mb-label > div { display: flex; flex-direction: column; gap: 2px; }
.margin-bars .mb-label b { font-size: 18px; color: var(--ink-900); line-height: 1.2; }
.margin-bars .mb-label span { font-size: 14.5px; color: var(--ink-500); }
.margin-bars .mb-icon { width: 34px; height: 34px; flex: none; color: var(--terracotta-600); }
.margin-bars .mb-track { position: relative; height: 26px; border-radius: 13px; background: var(--cream-200); }
.margin-bars .mb-range { position: absolute; top: 0; bottom: 0; border-radius: 13px; background: linear-gradient(90deg, var(--terracotta-400), var(--terracotta-600)); }
.margin-bars .mb-value { font-family: var(--font-display); font-size: 26px; font-weight: 700; color: var(--terracotta-600); white-space: nowrap; }
.margin-bars .mb-axis { display: grid; grid-template-columns: minmax(200px, 1.1fr) 2fr 110px; gap: 20px; }
.margin-bars .mb-axis { display: flex; justify-content: space-between; font-size: 13px; color: var(--ink-300); padding-left: calc((100% - 40px) * 1.1 / 3.2 + 20px); padding-right: 130px; }

/* KPI rows inside pillar cards: big number + one short label */
.pillar-card ul { gap: 14px; }
.pillar-card li.kpi-row { display: flex; flex-direction: column; gap: 2px; padding-left: 0; }
.pillar-card li.kpi-row::before { content: none; }
.pillar-card .kpi-value { font-family: var(--font-display); font-size: 38px; line-height: 1.05; font-weight: 700; color: var(--terracotta-600); }
.pillar-card .kpi-label { font-size: 16.5px; color: var(--ink-700); line-height: 1.3; }
body.paged .pillar-card li.kpi-row { padding-left: 0; }
body.paged .pillar-card .kpi-value { font-size: 44px; }
body.paged .pillar-card li.kpi-row .kpi-label { font-size: 20px; }
.roadmap-step-body-inner .chip { margin: 0 6px 6px 0; }
body.paged .roadmap-step-body-inner { display: flex; flex-wrap: wrap; gap: 8px; align-content: flex-start; }
body.paged .roadmap-step-body-inner .chip { font-size: 16px; padding: 7px 14px; margin: 0; }

/* ==========================================================================
   CORPORATE TYPE SCALE — one fixed scale for every slide (no per-slide zoom)
   title 38 / subtitle 28 / lead 19 / body 17 / label 14 / big figure 44
   ========================================================================== */
body.paged .chapter-kicker { font-size: 14px; }
body.paged .chapter-title { font-size: 38px; line-height: 1.15; }
body.paged .chapter-intro { font-size: 19px; line-height: 1.5; color: var(--ink-500); }
body.paged .sub-title { font-size: 28px; line-height: 1.2; padding-bottom: 10px; border-bottom: 2px solid var(--cream-200); position: relative; }
body.paged .sub-title::after { content: ""; position: absolute; left: 0; bottom: -2px; width: 72px; height: 2px; background: var(--terracotta-600); }
body.paged .sub-caption, body.paged .sub-body p { font-size: 19px; line-height: 1.5; color: var(--ink-500); }
body.paged .callout { font-size: 18px; }
body.paged .bullet-list li { font-size: 18px; }
body.paged .bullet-list li b { font-size: 22px; }
body.paged .bullet-list li::before { width: 32px; height: 32px; font-size: 15px; }
body.paged .pillar-card h4 { font-size: 22px; }
body.paged .pillar-card .kpi-value { font-size: 36px; }
body.paged .pillar-card li.kpi-row .kpi-label { font-size: 17px; }
body.paged .province-card .pc-kpi { font-size: 44px; }
body.paged .province-card .pc-kpi-label { font-size: 16px; }
body.paged .retailer-card .rc-share { font-size: 34px; }
body.paged .retailer-card .rc-name { font-size: 19px; }
body.paged .margin-bars .mb-value { font-size: 24px; }
body.paged .stat-tile .value, body.paged .hero-stat .value { font-size: 36px; }
body.paged .stat-tile .label, body.paged .hero-stat .label { font-size: 15.5px; }
body.paged table.data-table td { font-size: 16px; }
body.paged .filter-table-mount table.data-table td { font-size: 16px; }
body.paged .roadmap-step-body-inner .chip { font-size: 15px; }
body.paged .pg-fill { justify-content: center; }
body.paged .pg-fill > .g-grid { justify-content: stretch; }

/* --- webinar polish: lever panels as tiles, roadmap as a 3-column grid, section openers, hidden hints --- */
body.paged .filter-hint { display: none; }

body.paged .lever-panel { display: flex; flex-direction: column; }
body.paged .lever-panel .lever-body { flex: 1 1 auto; display: flex; align-items: center; }
body.paged .lever-grid { width: 100%; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
body.paged .lever-item { max-width: none; flex: none; justify-content: center; background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); padding: 18px 12px; box-shadow: var(--shadow-sm); gap: 10px; }
body.paged .lever-item-icon { width: 46px; height: 46px; color: var(--terracotta-600); }
body.paged .lever-item-label { font-size: 17px; line-height: 1.3; }
body.paged .lever-head { font-size: 17px; padding: 16px 12px; }
body.paged .lever-head-icon { width: 60px; height: 60px; }

body.paged .roadmap { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 0; }
body.paged .roadmap-step { display: flex; flex-direction: column; height: 100%; border-top: 5px solid var(--olive-800); }
body.paged .roadmap-step-head { padding: 18px 20px 8px; align-items: flex-start; flex-direction: column; gap: 12px; }
body.paged .roadmap-step-title { font-size: 20px; line-height: 1.25; display: flex; align-items: center; gap: 10px; }
body.paged .roadmap-step-body-inner { padding: 0 20px 20px; }
body.paged .roadmap-step-icon { width: 26px; height: 26px; flex: none; }

/* section opener: a clean divider-style slide, vertically centred */
body.paged .pg-opener { justify-content: center; }
body.paged .pg-opener .chapter-title { font-size: 46px; }
body.paged .pg-opener .stat-list, body.paged .pg-opener .stat-grid { margin-top: 10px; }

/* --- infographic components: one consistent size everywhere on the slides --- */
body.paged .stat-list { max-width: none; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 16px; align-items: stretch; align-content: stretch; grid-auto-rows: minmax(96px, 1fr); }
body.paged .stat-row { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 16px 22px; gap: 20px; border-bottom: 1px solid var(--cream-200); }
body.paged .stat-row-icon { width: 64px; height: 64px; }
body.paged .stat-row-icon .icon { width: 32px; height: 32px; }
body.paged .stat-row-text { display: flex; flex-direction: column; gap: 2px; }
body.paged .stat-row-value { font-size: 40px; line-height: 1.05; }
body.paged .stat-row-label { font-size: 18px; line-height: 1.3; }

body.paged .chart-grid-2 { gap: 16px; align-items: stretch; }
body.paged .pictogram-block { margin: 0; background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 24px 26px; display: flex; flex-direction: column; justify-content: center; }
body.paged .pictogram { gap: 10px; margin-bottom: 16px; }
body.paged .pictogram-icon { width: 40px; height: 40px; }
body.paged .pictogram-caption { font-size: 19px; line-height: 1.35; }
body.paged .pictogram-caption b { font-size: 40px; }

body.paged .logo-grid { margin: 0; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 14px; }
body.paged .logo-badge { min-height: 84px; }
body.paged .logo-badge img { max-height: 54px; }
body.paged .logo-badge .fallback-text { font-size: 17px; }
body.paged .flag-row { font-size: 18px; }
body.paged .chip { font-size: 15px; padding: 7px 14px; }
body.paged .chip-row { margin: 0; gap: 10px; }
body.paged .pg-wrap { display: flex; flex-direction: column; gap: 10px; }
body.paged .pg-wrap > * { flex: 1 1 auto; }
body.paged .pg-wrap > .source-tag, body.paged .pg-wrap > .sub-sources { flex: 0 0 auto; }
body.paged .stat-list { grid-auto-rows: minmax(96px, 160px); align-content: center; }
body.paged .stat-row-value { font-size: 46px; }
body.paged .stat-row-label { font-size: 20px; }
body.paged .pictogram-block { max-height: 300px; align-self: center; }

/* hero KPI cards: 2-3 headline figures, big and centred, filling the slide */
body.paged .stat-list.stat-hero { grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr)); grid-auto-rows: minmax(200px, 1fr); align-content: stretch; }
body.paged .stat-hero .stat-row { flex-direction: column; justify-content: center; text-align: center; gap: 14px; padding: 26px; border-top: 6px solid var(--terracotta-500); }
body.paged .stat-hero .stat-row-icon { width: 84px; height: 84px; }
body.paged .stat-hero .stat-row-icon .icon { width: 42px; height: 42px; }
body.paged .stat-hero .stat-row-text { align-items: center; gap: 8px; flex: none; }
body.paged .stat-hero .stat-row-value { font-size: 84px; line-height: 1; }
body.paged .stat-hero .stat-row-label { font-size: 21px; max-width: 460px; }

/* lever tiles: big icons, tiles share the height */
body.paged .lever-item-icon { width: 52px; height: 52px; }
body.paged .lever-item-icon .icon, body.paged .lever-item-icon .icon svg { width: 100%; height: 100%; display: block; }
body.paged .lever-grid { grid-auto-rows: minmax(120px, 1fr); align-content: stretch; }
body.paged .lever-item-label { font-size: 18px; font-weight: 700; }
body.paged .lever-panel .lever-body { align-items: stretch; }
body.paged .stat-list:not(.stat-hero) { grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); }
body.paged .stat-list:not(.stat-hero) .stat-row-value { font-size: 36px; }
body.paged .stat-list:not(.stat-hero) .stat-row-label { font-size: 17px; }
body.paged .stat-list:not(.stat-hero) { grid-auto-rows: minmax(110px, 1fr); align-content: stretch; }
body.paged .stat-hero .stat-row-value { font-size: 54px; white-space: nowrap; }
body.paged .stat-hero .stat-row-label { font-size: 19px; }
body.paged .stat-hero .stat-row-icon { width: 72px; height: 72px; }
body.paged .stat-hero .stat-row-icon .icon { width: 36px; height: 36px; }
body.paged .pictogram-block { max-height: none; align-self: stretch; }
body.paged .chart-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
body.paged .table-toolbar { flex-wrap: nowrap; align-items: flex-start; }
body.paged .table-toolbar .chip-row { flex: 1 1 auto; flex-direction: row; flex-wrap: wrap; }
body.paged .table-toolbar select, body.paged .table-toolbar input { flex: 0 0 auto; width: auto; max-width: 240px; }

/* ---- 2.2 map: one colour per province, province box + its retail banners ---- */
.ca-map .province.interactive { transition: opacity .15s; }
.ca-map.has-active .province.interactive:not(.active) { opacity: .6; }
.ca-map .province.interactive:hover { opacity: 1; }
.ca-map .province.interactive.active { stroke: var(--olive-900); stroke-width: 140; }
.map-wrap:has(.province-side) { align-items: stretch; }
.province-side { display: flex; flex-direction: column; gap: 14px; min-height: 0; }
.province-side .province-panel { min-height: 0; flex: 0 0 auto; padding: 18px 22px; }
.province-side .province-panel .ph-title { font-size: 24px; }
.province-side .province-panel .ph-share { margin-bottom: 8px; }
.province-side .province-panel p { font-size: 14.5px; margin: 0 0 6px; }
.province-side .province-panel .ph-weight { color: var(--ink-700); }
.prov-brands { flex: 1 1 0; min-height: 180px; display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--cream-200); border-top: 5px solid var(--terracotta-500); border-radius: var(--radius-lg); padding: 14px 16px; box-shadow: var(--shadow-sm); }
.prov-brands .pb-title { font-family: var(--font-num); font-weight: 700; font-size: 14px; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-500); margin-bottom: 10px; }
.prov-brands .pb-list { flex: 1 1 0; min-height: 0; overflow-y: auto; padding-right: 4px; }
.prov-brands .pb-sub { font-size: 13px; font-weight: 700; color: var(--ink-500); margin: 12px 0 8px; }
.prov-brands .pb-sub:first-child { margin-top: 0; }
.prov-brand-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 8px; }
.prov-brand { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; }
.prov-brand span { font-size: 11.5px; line-height: 1.2; color: var(--ink-700); }
.prov-brands .logo-badge, body.paged .prov-brands .logo-badge { width: 100%; height: 52px; min-height: 0; padding: 6px; }
.prov-brands .logo-badge img, body.paged .prov-brands .logo-badge img { max-height: 36px; }
.prov-brands .logo-badge .fallback-text, body.paged .prov-brands .logo-badge .fallback-text { font-size: 11px; }
.stat-tile .stat-names { font-size: 12px; line-height: 1.35; color: var(--ink-700); margin: 8px 0 0; padding-left: 20px; }
.stat-tile .stat-names li::marker { color: var(--terracotta-600); font-weight: 700; }
.retailer-card .rc-banners { gap: 10px; align-items: flex-start; }
.retailer-card .rc-banner { display: flex; flex-direction: column; align-items: center; gap: 3px; width: 92px; text-align: center; }
.retailer-card .rc-banner span { font-size: 11.5px; line-height: 1.2; color: var(--ink-700); }
.retailer-card .logo-badge, body.paged .retailer-card .logo-badge { width: 92px; height: 44px; min-height: 0; padding: 5px; }
.retailer-card .logo-badge img, body.paged .retailer-card .logo-badge img { max-height: 32px; }

/* ---- 3.2 organigramme de la distribution ---- */
.org-card { display: flex; flex-direction: column; }
.org-chart { flex: 1 1 auto; min-height: 0; display: flex; align-items: center; justify-content: center; margin: 8px 0; }
.org-chart svg { width: 100%; height: auto; max-height: calc(42 * var(--vh)); display: block; }
.org-chart text { font-family: var(--font-num, inherit); font-size: 19px; font-weight: 700; fill: var(--ink-900); text-anchor: middle; }
.org-chart .org-pct { font-size: 17px; }
.org-chart rect { fill: var(--white); stroke-width: 3.5; }
.org-chart ellipse { fill: var(--white); stroke-width: 3; }
.org-chart .org-line { fill: none; stroke: var(--ink-700); stroke-width: 3; }
.org-chart .org-prod { stroke: var(--olive-800); }
.org-chart .org-mid, .org-chart .org-mid-o { stroke: var(--gold-500); }
.org-chart .org-broker, .org-chart .org-broker-o { stroke: var(--olive-500); }
.org-chart .org-ret, .org-chart .org-ret-o { stroke: var(--terracotta-500); }

/* ---- enseignes table: one slide, rows scroll inside the box ---- */
.ft-scroll { overflow-y: auto; overscroll-behavior: contain; border-radius: var(--radius-md); }
.ft-scroll thead th, body.paged .ft-scroll table.data-table th { position: sticky; top: 0; z-index: 1; }
body.paged .ft-scroll .data-table-wrap { overflow: visible; }
a.logo-badge { text-decoration: none; color: inherit; cursor: pointer; }
a.logo-badge:focus-visible { outline: 2px solid var(--terracotta-500); outline-offset: 2px; }
/* the map's height follows its width; cap it so the 2.2 slide fits without shrinking */
body.paged .map-wrap .ca-map { max-height: calc(calc(100 * var(--vh)) - 300px); }
.lever-item-text { font-size: 13.5px; line-height: 1.4; color: var(--ink-500); }
body.paged .lever-item-text { font-size: 16.5px; line-height: 1.35; }
/* 4.1: five figure tiles in a 3-column grid beside the chart */
.stat-grid.stat-grid-3, body.paged .stat-grid.stat-grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.stat-grid-3 .stat-tile, body.paged .stat-grid-3 .stat-tile { max-width: none; height: auto; padding: 14px 14px 12px; }
.stat-grid-3 .stat-tile .value, body.paged .stat-grid-3 .stat-tile .value { font-size: 28px; }
.stat-grid-3 .stat-tile .label, body.paged .stat-grid-3 .stat-tile .label { font-size: 14px; }
.stat-grid-3 .stat-tile .icon { width: 24px; height: 24px; margin-bottom: 6px; }

/* ---- 8.2 salons: one card per show ---- */
.salon-grid { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); }
.salon-card { display: flex; flex-direction: column; gap: 6px; border-top: 5px solid var(--olive-400); padding: 16px 16px 14px; }
.salon-card.salon-forte { border-top-color: var(--terracotta-500); }
.salon-card.salon-faible { border-top-color: var(--cream-200); }
.salon-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 4px; }
.salon-date { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 64px; padding: 6px 8px; border-radius: var(--radius-md); background: var(--cream-100); color: var(--olive-900); line-height: 1.05; }
.salon-date b { font-family: var(--font-display); font-size: 26px; }
.salon-date span { font-size: 11.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--ink-500); }
.salon-card .logo-badge { width: 120px; height: 56px; min-height: 0; padding: 6px; }
.salon-card .logo-badge img { max-height: 42px; }
.salon-card h4 { font-size: 16.5px; line-height: 1.25; margin: 0; }
.salon-card p { font-size: 13.5px; margin: 0; line-height: 1.4; align-items: flex-start; }
.salon-card p .icon { width: 15px; height: 15px; flex: 0 0 15px; margin-top: 2px; color: var(--terracotta-600); }
.salon-card .salon-focus { color: var(--ink-500); display: block; }
.salon-card .salon-rel { color: var(--olive-800); font-weight: 600; margin-top: auto; padding-top: 4px; }

/* ---- 4.2 consumers by generation ---- */
.gen-col { display: flex; flex-direction: column; gap: 14px; }
.gen-bars { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 16px 20px; display: flex; flex-direction: column; gap: 9px; }
.gen-title { font-weight: 700; font-size: 16px; color: var(--olive-800); margin-bottom: 4px; }
.gen-row { display: grid; grid-template-columns: 120px 1fr 48px; align-items: center; gap: 12px; }
.gen-name { font-size: 14.5px; color: var(--ink-700); }
.gen-track { height: 14px; background: var(--cream-100); border-radius: 999px; overflow: hidden; }
.gen-fill { display: block; height: 100%; background: var(--olive-500); border-radius: 999px; }
.gen-row:first-of-type .gen-fill { background: var(--terracotta-500); }
.gen-pct { font-weight: 700; font-size: 15px; color: var(--olive-900); text-align: right; }

/* ---- chapter 5: Canada Organic badges, top right of every slide ---- */
.section.has-corner-badge { position: relative; }
.section-corner-badge { position: absolute; top: 12px; right: 24px; height: 64px; width: auto; z-index: 5; pointer-events: none; mix-blend-mode: multiply; }
@media (max-width: 700px) { body:not(.paged) .section-corner-badge { height: 40px; right: 12px; } }
.has-corner-badge .chapter-title, .has-corner-badge .sub-title { padding-right: 170px; }
.salon-legend { margin: 0 0 4px; font-size: 13px; }
.salon-card .logo-badge.small { background: var(--white); }

/* ---- 2.1 Marché global Amérique du Nord ---- */
.na-panel { grid-template-columns: 1fr; align-items: center; justify-items: center; }
.na-map-card { display: flex; flex-direction: column; width: fit-content; max-width: 100%; padding: 10px 14px; }
.na-map { flex: 1 1 auto; min-height: 0; display: flex; }
.na-map svg { height: calc(calc(100 * var(--vh)) - 445px); width: auto; max-width: 100%; display: block; }
.na-map { justify-content: center; }
.na-map svg path, .na-map svg g { fill: #efe9dc; stroke: #ffffff; stroke-width: 0.5; }
.na-map svg #ca, .na-map svg #ca path, .na-map svg #ca g { fill: #d98a5f; }
.na-map svg #us, .na-map svg #us path, .na-map svg #us g { fill: #c9d3b0; }
.na-map svg .na-pin path { fill: var(--terracotta-600); stroke: #fff; stroke-width: 1; }
.na-map svg .na-pin:not(.is-ca) path { fill: var(--olive-700); }
.na-map svg .na-pin circle { fill: #fff; stroke: none; }
.na-map svg .na-pin text { font-family: var(--font-num, sans-serif); font-size: 11px; font-weight: 700; fill: var(--ink-900); stroke: #fff; stroke-width: 3px; paint-order: stroke; }
@media (max-width: 900px) { body:not(.paged) .na-panel { grid-template-columns: 1fr; } }

/* ---- 3.5 private labels: logo + owner ---- */
.mdd-cards { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
.mdd-card { background: var(--white); border: 1px solid var(--cream-200); border-top: 5px solid var(--olive-400); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 14px; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; }
.mdd-card > .logo-badge, body.paged .mdd-card > .logo-badge { width: 100%; height: 64px; min-height: 0; padding: 6px; }
.mdd-card > .logo-badge img, body.paged .mdd-card > .logo-badge img { max-height: 50px; }
.mdd-name { font-weight: 700; font-size: 16px; color: var(--olive-900); }
.mdd-tier { font-size: 12.5px; color: var(--terracotta-600); font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
.mdd-owner { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 6px; font-size: 13px; color: var(--ink-500); border-top: 1px solid var(--cream-200); padding-top: 8px; margin-top: auto; width: 100%; }
.mdd-owner .logo-badge, body.paged .mdd-owner .logo-badge { width: 64px; height: 30px; min-height: 0; padding: 3px; }
.mdd-owner .logo-badge img, body.paged .mdd-owner .logo-badge img { max-height: 22px; }
.mdd-owner b { width: 100%; font-size: 13px; color: var(--ink-700); }
@media (max-width: 900px) { body:not(.paged) .mdd-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---- 3.6 e-commerce: four boxes in one row, logos below ---- */
.ecom-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.ecom-card { background: var(--white); border: 1px solid var(--cream-200); border-top: 5px solid var(--terracotta-500); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 16px; display: flex; flex-direction: column; gap: 8px; }
.ecom-icon { width: 40px; height: 40px; color: var(--terracotta-600); }
.ecom-icon .icon, .ecom-icon svg { width: 100%; height: 100%; }
.ecom-title { font-weight: 700; font-size: 16.5px; color: var(--olive-900); line-height: 1.3; }
.ecom-profile { font-size: 14px; color: var(--ink-500); line-height: 1.4; }
.ecom-logos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: auto; padding-top: 8px; border-top: 1px solid var(--cream-200); }
.ecom-logos .logo-badge, body.paged .ecom-logos .logo-badge { width: 100%; height: 52px; min-height: 0; padding: 5px; }
.ecom-logos .logo-badge img, body.paged .ecom-logos .logo-badge img { max-height: 38px; }
@media (max-width: 900px) { body:not(.paged) .ecom-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.na-map svg .na-lead { stroke: var(--ink-500); stroke-width: 0.8; }

/* ---- 4.2 organic olive oil brands in Canada ---- */
.bio-brands { display: flex; flex-direction: column; gap: 10px; }
.bio-brands-title { font-weight: 700; font-size: 16px; color: var(--olive-800); }
.bio-brand-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.bio-brand { background: var(--white); border: 1px solid var(--cream-200); border-top: 4px solid var(--olive-400); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 10px; display: flex; flex-direction: column; gap: 4px; }
.bio-brand.is-tn { border-top-color: var(--terracotta-500); }
.bio-brand > .logo-badge, body.paged .bio-brand > .logo-badge { width: 100%; height: 50px; min-height: 0; padding: 5px; }
.bio-brand > .logo-badge img, body.paged .bio-brand > .logo-badge img { max-height: 38px; }
.bio-name { font-weight: 700; font-size: 13.5px; color: var(--olive-900); line-height: 1.25; }
.bio-owner { font-size: 12px; color: var(--ink-700); display: flex; align-items: center; gap: 4px; }
.bio-owner .flag { width: 16px; height: 12px; }
.bio-product { font-size: 12px; color: var(--ink-500); line-height: 1.3; }
.bio-retail { font-size: 11.5px; color: var(--ink-500); line-height: 1.3; display: flex; gap: 4px; align-items: flex-start; }
.bio-retail .icon { width: 13px; height: 13px; flex: 0 0 13px; margin-top: 1px; color: var(--terracotta-600); }
/* 4.2 brand cards: larger 5-column grid (they have their own slide) */
.bio-brand-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; }
.bio-brand { padding: 14px; gap: 6px; }
.bio-brand > .logo-badge, body.paged .bio-brand > .logo-badge { height: 72px; }
.bio-brand > .logo-badge img, body.paged .bio-brand > .logo-badge img { max-height: 56px; }
.bio-name { font-size: 16px; }
.bio-owner { font-size: 13.5px; }
.bio-owner .flag { width: 20px; height: 15px; }
.bio-product { font-size: 13.5px; }
.bio-retail { font-size: 13px; }
.bio-brands-title { font-size: 18px; }
@media (max-width: 900px) { body:not(.paged) .bio-brand-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* 5.4: lever cards with definitions, compact enough to keep the warning on the same slide */
body.paged .lever-panel.with-defs .lever-item { padding: 10px 12px; gap: 5px; }
body.paged .lever-panel.with-defs .lever-item-icon { width: 34px; height: 34px; }
body.paged .lever-panel.with-defs .lever-item-label { font-size: 16px; }
body.paged .lever-panel.with-defs .lever-item-text { font-size: 14.5px; line-height: 1.35; }
body.paged .lever-panel.with-defs .lever-body { padding-top: 22px; padding-bottom: 12px; }
.bio-brands-title { font-weight: 700; font-size: 18px; color: var(--olive-800); margin-top: 4px; }
.card-grid.bio-brand-grid { margin: 0; }

/* ---- Aperçu: producing countries' market share box ---- */
.hero-share { display: flex; flex-direction: column; gap: 8px; }
.hero-share-title { font-weight: 700; font-size: 15px; color: var(--olive-800); line-height: 1.25; }
.hero-share-rows { display: flex; flex-direction: column; gap: 7px; }
.hero-share-row { display: grid; grid-template-columns: 20px 62px 1fr 48px; align-items: center; gap: 6px; font-size: 13.5px; color: var(--ink-700); }
.hero-share-row .flag { width: 20px; height: 15px; display: block; }
.hero-share-row .flag svg { width: 100%; height: 100%; display: block; }
.hero-share-row b { text-align: right; font-size: 14px; color: var(--olive-900); }
.hs-track { height: 9px; background: var(--cream-200); border-radius: 999px; overflow: hidden; }
.hs-fill { display: block; height: 100%; background: var(--olive-500); border-radius: 999px; }
.hero-share-row.is-tn .hs-fill { background: var(--terracotta-500); }
.hero-share-row.is-tn b, .hero-share-row.is-tn .hs-name { color: var(--terracotta-600); font-weight: 700; }
.hero-share-src { font-size: 11.5px; color: var(--ink-300); margin-top: auto; }
/* logo badges sitting in a flag row (e.g. CHFA in chapter 6) must not shrink to nothing */
.flag-row .logo-badge { flex: 0 0 auto; width: 170px; height: 70px; min-height: 0; padding: 8px 12px; }
.flag-row .logo-badge img { width: 100%; height: 100%; max-height: 54px; object-fit: contain; }
/* the ACIA/CFIA Government of Canada signature is ~11:1 wide: give it room */
.flag-row .logo-badge:has(img[src*="cfia-acia"]) { width: 400px; }
.flag-row .logo-badge img[src*="cfia-acia"] { max-height: 36px; }
/* 4.2 brand groups: compact cards, both groups on one slide */
.bio-brands { gap: 8px; }
.bio-brand-grid, .card-grid.bio-brand-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; }
.bio-brand { padding: 10px; gap: 4px; cursor: help; }
.bio-brand > .logo-badge, body.paged .bio-brand > .logo-badge { height: 58px; }
.bio-brand > .logo-badge img, body.paged .bio-brand > .logo-badge img { max-height: 44px; }
.bio-name { font-size: 14px; }
.bio-owner { font-size: 12.5px; }
.bio-brands-title { font-size: 16px; margin-top: 6px; }
@media (max-width: 900px) { body:not(.paged) .bio-brand-grid, body:not(.paged) .card-grid.bio-brand-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---- first slide: partner logos ---- */
.hero-partners { display: flex; align-items: center; justify-content: center; gap: 48px; margin-bottom: 6px; }
.hero-partners img { height: 130px; width: auto; display: block; }
.hero-partners img[src*="global-bridge"] { height: 74px; }
@media (max-width: 700px) { body:not(.paged) .hero-partners { gap: 20px; } body:not(.paged) .hero-partners img { height: 56px; } body:not(.paged) .hero-partners img[src*="global-bridge"] { height: 42px; } }
/* first slide: partner logos pinned top right, beside the flags and title (no extra height) */
.hero-inner { position: relative; }
.hero-partners { justify-content: flex-end; gap: 28px; }
.hero-partners img[src*="global-bridge"] { height: 48px; }
/* top right, side by side, vertically centred on each other */
body.paged .hero-partners { position: absolute; top: 20px; right: 0; margin: 0; flex-direction: row; align-items: center; gap: 28px; z-index: 2; }
body.paged .hero-partners img { height: 84px; }
body.paged .hero-partners img[src*="global-bridge"] { height: 44px; }
/* the pager tags the logo row .pg-grow after layout, whose align-items: stretch would top-align the logos */
body.paged .pg-fill > .hero-partners.pg-grow { flex: none; align-items: center; }

/* ---- closing "Merci" slide ---- */
.merci-card { min-height: calc(70 * var(--vh)); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 18px; }
.merci-logos { display: flex; align-items: center; justify-content: center; gap: 56px; }
.merci-logos img { height: 130px; width: auto; }
.merci-logos img[src*="global-bridge"] { height: 96px; }
.merci-title { font-family: var(--font-display); font-size: clamp(72px, calc(11 * var(--vw)), 150px); line-height: 1; color: var(--olive-900); margin: 10px 0 0; }
.merci-sub { font-size: 24px; color: var(--terracotta-600); font-weight: 600; margin: 0; }
.merci-note { font-size: 15px; color: var(--ink-500); margin: 0; }
@media (max-width: 700px) { body:not(.paged) .merci-logos { gap: 24px; } body:not(.paged) .merci-logos img { height: 80px; } body:not(.paged) .merci-logos img[src*="global-bridge"] { height: 40px; } }

/* slide 2: the two photos fill the space down to the KPI boxes */
body.paged .pg-fill > .hero-photo-row.pg-grow { display: flex; flex-direction: column; }
body.paged .hero-photo-row.pg-grow > .photo-split { flex: 1 1 auto; min-height: 0; margin: 0; align-items: stretch; grid-auto-rows: 1fr; }
body.paged .hero-photo-row.pg-grow .photo-block { display: flex; flex-direction: column; height: 100%; }
body.paged .hero-photo-row.pg-grow .photo-block img { flex: 1 1 auto; min-height: 0; max-height: none; height: 100%; }

/* slide 3: the map legend explains each colour, one line per colour */
.climat-grid .map-legend { flex-direction: column; gap: 8px; }
.climat-grid .map-legend > span { align-items: flex-start; line-height: 1.4; }
.climat-grid .map-legend > span > i { flex: none; margin-top: 3px; }
.climat-grid .map-legend b { color: var(--ink-700); }
.climat-grid .map-legend > span > span { display: block; }

/* ---- 2.1 North America map: provinces/states with borders, zoomable ---- */
.na-map { position: relative; overflow: hidden; border-radius: var(--radius-md); }
.na-map svg { touch-action: none; cursor: grab; }
.na-map.is-dragging svg { cursor: grabbing; }
.na-map svg .na-sea { fill: #f4f1ea; stroke: none; }
.na-map svg .na-land path { stroke: #ffffff; stroke-width: 0.9px; vector-effect: non-scaling-stroke; stroke-linejoin: round; }
.na-map svg .na-ctx path { fill: #e6e1d6; }
.na-map svg .na-us path { fill: #c9d3b0; }
.na-map svg .na-ca path { fill: #d98a5f; stroke-width: 1.2px; }
.na-map svg .na-lakes path { fill: #f4f1ea; stroke: none; }
.na-map svg .na-land path[data-name]:hover { filter: brightness(1.06); }
.na-map svg .na-pins { pointer-events: none; }
.na-zoom { position: absolute; top: 10px; right: 10px; display: flex; flex-direction: column; gap: 4px; z-index: 2; }
.na-zoom button { width: 32px; height: 32px; border: 1px solid var(--cream-200); border-radius: 8px; background: rgba(255,255,255,.95); color: var(--ink-900); font-size: 18px; font-weight: 700; line-height: 1; cursor: pointer; box-shadow: var(--shadow-sm); }
.na-zoom button:hover { background: var(--cream-100); }
/* bigger map, legend sits on the map's lower-left corner */
.na-map-card { position: relative; }
.na-map svg, body.paged .na-map svg { height: calc(calc(100 * var(--vh)) - 425px); }
.na-map-card > .map-legend { position: absolute; left: 26px; bottom: 20px; margin: 0; padding: 6px 10px; background: rgba(255,255,255,.92); border-radius: 8px; box-shadow: var(--shadow-sm); z-index: 2; }
.na-map svg { user-select: none; -webkit-user-select: none; }

/* ---- 3.1 layout: KPI row, then cities + market-share donut ---- */
.stat-grid.kpi-row, body.paged .stat-grid.kpi-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 0; }
.kpi-row .stat-tile, body.paged .kpi-row .stat-tile { max-width: none; height: auto; display: grid; grid-template-columns: auto 1fr; column-gap: 14px; align-items: center; padding: 16px 18px; }
.kpi-row .stat-tile .stat-icon { grid-row: 1 / span 2; margin: 0; width: 34px; height: 34px; }
.kpi-row .stat-tile .value, body.paged .kpi-row .stat-tile .value { white-space: nowrap; font-size: 34px; line-height: 1.1; }
.kpi-row .stat-tile .label, body.paged .kpi-row .stat-tile .label { font-size: 15px; line-height: 1.35; }
.market-split { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.4fr); gap: 16px; align-items: stretch; }
.cities-card { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 20px 24px; display: flex; flex-direction: column; }
.cities-card h4 { margin: 0; font-size: 19px; color: var(--olive-900); }
.cities-sub { margin: 4px 0 14px; font-size: 14.5px; color: var(--terracotta-600); font-weight: 600; }
.cities-list { margin: 0; padding: 0; list-style: none; counter-reset: city; columns: 2; column-gap: 24px; flex: 1 1 auto; }
.cities-list li { counter-increment: city; break-inside: avoid; display: flex; align-items: baseline; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--cream-100); font-size: 16px; color: var(--ink-700); }
.cities-list li::before { content: counter(city); font-family: var(--font-num); font-weight: 700; font-size: 13px; color: #fff; background: var(--terracotta-600); border-radius: 50%; width: 22px; height: 22px; flex: none; display: inline-flex; align-items: center; justify-content: center; }
.market-split > .chart-card { margin: 0; height: 100%; display: flex; flex-direction: column; }
.market-split > .chart-card .chart-canvas-wrap { flex: 1 1 auto; min-height: 0; }
@media (max-width: 900px) { body:not(.paged) .stat-grid.kpi-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } body:not(.paged) .market-split { grid-template-columns: 1fr; } }

/* ---- 3.1 banner cards + store photo on the right ---- */
.retailer-split { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 16px; align-items: stretch; }
.retailer-split > .photo-block { margin: 0; display: flex; flex-direction: column; height: 100%; }
.retailer-split > .photo-block img { flex: 1 1 auto; min-height: 0; height: 100%; max-height: none; object-fit: cover; }
@media (max-width: 900px) { body:not(.paged) .retailer-split { grid-template-columns: 1fr; } }

/* ---- 82-retailer table: the filter bar keeps its natural size (a generic table
   rule made it flex:1, so with few rows the chips grew into big round pills) ---- */
body.paged .g-grid .filter-table-mount > .table-toolbar { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; flex: 0 0 auto; min-height: 0; }
body.paged .g-grid .filter-table-mount > .table-toolbar > * { flex: 0 0 auto; }
body.paged .g-grid .filter-table-mount > .table-toolbar > .chip-row { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; min-height: 0; }
body.paged .g-grid .filter-table-mount > .table-toolbar .chip { height: auto; flex: 0 0 auto; }
body.paged .g-grid .filter-table-mount > .table-count, body.paged .g-grid .filter-table-mount > .table-pager { flex: 0 0 auto; }
body.paged .g-grid .filter-table-mount > .ft-scroll { align-content: start; }

/* ---- spacing: no empty grid row for a sub-section without body text, a clear gap
   between two sub-sections on one slide, and card content aligned to the top so
   numbers and headings line up across a row ---- */
.sub-body:empty { display: none; }
body.paged .pg > .sub-block + .sub-block { margin-top: 26px; }
body.paged .bullet-list li { justify-content: flex-start; }

/* ---- 3.5 private-label cards: product photo between the tier and the owner ---- */
.mdd-photo { flex: 1 1 auto; min-height: 0; width: 100%; display: flex; align-items: center; justify-content: center; padding: 6px 0; }
.mdd-photo img { max-width: 100%; max-height: 100%; height: 100%; object-fit: contain; display: block; }
/* the photo takes no height of its own: it only fills the card's empty space,
   cropped to fit (like a clipping mask), so the slide layout is unchanged */
.mdd-photo { flex: 1 1 0; height: auto; min-height: 0; padding: 0; margin: 4px 0; border-radius: 8px; overflow: hidden; position: relative; }
.mdd-photo img { position: absolute; inset: 0; width: 100%; height: 100%; max-height: none; object-fit: cover; cursor: zoom-in; transition: transform .2s ease; }
.mdd-photo img:hover { transform: scale(1.04); }

/* full-size photo viewer (js/shell.js) */
.photo-viewer { position: fixed; inset: 0; z-index: 1000; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 40px; background: rgba(20,24,14,.86); cursor: zoom-out; animation: photo-viewer-in .18s ease; }
.photo-viewer img { max-width: 100%; max-height: calc(100% - 50px); object-fit: contain; border-radius: var(--radius-md); box-shadow: 0 12px 40px rgba(0,0,0,.45); background: var(--white); }
.photo-viewer-caption { color: #fff; font-size: 17px; text-align: center; }
.photo-viewer-close { position: absolute; top: 18px; right: 24px; width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(255,255,255,.16); color: #fff; font-size: 30px; line-height: 1; cursor: pointer; }
.photo-viewer-close:hover { background: rgba(255,255,255,.3); }
@keyframes photo-viewer-in { from { opacity: 0; } to { opacity: 1; } }

/* ---- fill photo: no height of its own, fills the container's empty space, cropped ---- */
.fill-photo { flex: 1 1 0; min-height: 0; margin: 6px 0; position: relative; overflow: hidden; border-radius: 8px; background: var(--cream-100); }
.fill-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.fill-photo figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 3px 7px; font-size: 10px; line-height: 1.3; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.55)); }
.ecom-card .fill-photo { margin: 8px 0 0; }
.ecom-card .ecom-logos { margin-top: 8px; }
/* a platform with a single logo (Amazon): same size as the others, centred in the card */
.ecom-logos > .logo-badge:only-child, body.paged .ecom-logos > .logo-badge:only-child { grid-column: 1 / -1; justify-self: center; width: calc(50% - 4px); }

/* 4.1: photo in the sixth grid cell; 4.2: photo under the generation bars */
.stat-grid-3 > .fill-photo, body.paged .stat-grid-3 > .fill-photo { margin: 0; min-height: 0; height: auto; border-radius: var(--radius-md); }
.gen-col > .fill-photo { margin: 0; border-radius: var(--radius-lg); }

/* ---- big-figure cards placed beside a chart (half width): stacked rows,
   icon left, figure + label right, sized to fit the column ---- */
body.paged .g-grid > .g-half.stat-list.stat-hero { grid-template-columns: 1fr; grid-auto-rows: 1fr; gap: 12px; }
body.paged .g-grid > .g-half.stat-hero .stat-row { flex-direction: row; justify-content: flex-start; align-items: center; text-align: left; gap: 22px; padding: 18px 26px; border-top: 0; border-left: 6px solid var(--terracotta-500); }
body.paged .g-grid > .g-half.stat-hero .stat-row-icon { width: 64px; height: 64px; flex: none; }
body.paged .g-grid > .g-half.stat-hero .stat-row-icon .icon { width: 30px; height: 30px; }
body.paged .g-grid > .g-half.stat-hero .stat-row-text { align-items: flex-start; gap: 4px; flex: 1 1 auto; min-width: 0; }
body.paged .g-grid > .g-half.stat-hero .stat-row-value { font-size: 44px; line-height: 1.05; white-space: nowrap; }
body.paged .g-grid > .g-half.stat-hero .stat-row-label { font-size: 17px; line-height: 1.35; max-width: none; }

/* ---- 5.3: bar chart on top, four figure cards in one row below ---- */
body.paged .stat-list.stat-row4 { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: auto; align-content: start; gap: 14px; }
body.paged .stat-row4 .stat-row { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 12px; padding: 18px 20px; border-top: 5px solid var(--terracotta-500); height: 100%; }
body.paged .stat-row4 .stat-row-icon { width: 48px; height: 48px; }
body.paged .stat-row4 .stat-row-icon .icon { width: 24px; height: 24px; }
body.paged .stat-row4 .stat-row-text { gap: 6px; }
body.paged .stat-row4 .stat-row-value { font-size: 25px; line-height: 1.2; }
body.paged .stat-row4 .stat-row-label { font-size: 15.5px; line-height: 1.35; }
@media (max-width: 900px) { body:not(.paged) .stat-list.stat-row4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---- 4.3: cards with a background photo under a white overlay ---- */
.photo-cards .lever-item, body.paged .photo-cards .lever-item { position: relative; overflow: hidden; background-color: var(--white); background-size: cover; background-position: center; isolation: isolate; }
.photo-cards .lever-item::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(255,255,255,.9); }
.photo-card-credit { position: absolute; left: 10px; right: 10px; bottom: 8px; font-size: 10px; color: var(--ink-500); text-align: left; }

/* ---- 5.3: chart + Tunisian-supply note side by side ---- */
.premium-top { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 16px; align-items: stretch; }
.premium-top > .chart-card, .premium-top > .callout { margin: 0; height: 100%; }
.premium-top > .callout { display: flex; align-items: center; }
body.paged .premium-top > .callout { font-size: 17px; line-height: 1.5; }
@media (max-width: 900px) { body:not(.paged) .premium-top { grid-template-columns: 1fr; } }
body.paged .premium-top > .callout, body.paged .premium-top > .chart-card { margin: 0; }

/* ---- 5.3 spacing: note readable, figure cards fill the rest of the slide ---- */
body.paged .premium-top > .premium-note { display: flex; flex-direction: column; justify-content: center; gap: 10px; padding: 24px 28px; font-size: 17.5px; line-height: 1.5; color: var(--ink-700); }
body.paged .premium-note b { font-family: var(--font-display); font-size: 21px; color: var(--terracotta-700, #9c3f19); }
body.paged .stat-list.stat-row4 { align-content: stretch; grid-auto-rows: 1fr; }
body.paged .stat-row4 .stat-row-value { font-size: 24px; text-wrap: balance; }
body.paged .stat-row4 .stat-row { justify-content: center; }
body.paged .stat-list.stat-row4 > .stat-row { display: flex; flex-direction: column; justify-content: center; }
body.paged .stat-list.stat-row4 > .stat-row > .stat-row-text { flex: 0 0 auto; }
body.paged .stat-list.stat-row4 > .stat-row { justify-content: flex-start; padding: 30px 24px 20px; }
body.paged .stat-list.stat-row4 > .stat-row { justify-content: center; gap: 12px; padding: 18px 24px; }
body.paged .stat-list.stat-row4 .stat-row-icon { width: 52px; height: 52px; }
body.paged .stat-list.stat-row4 .stat-row-icon .icon { width: 30px; height: 30px; }
body.paged .stat-list.stat-row4 .stat-row-value { font-size: 27px; line-height: 1.15; }
body.paged .stat-list.stat-row4 .stat-row-label { font-size: 16.5px; line-height: 1.4; }
body.paged .stat-list.stat-row4 .stat-row-text { gap: 8px; }

/* ---- 8.1: CFIA logo centred; tool cards on a photo under a strong white overlay, logo above the name ---- */
.reg-logo-row, body.paged .reg-logo-row { justify-content: center; }
.reg-cards .stat-row, body.paged .reg-cards .stat-row { position: relative; overflow: hidden; background-color: var(--white); background-size: cover; background-position: center; isolation: isolate; }
.reg-cards .stat-row::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(255,255,255,.88); }
.reg-logo { display: flex; justify-content: center; margin-bottom: 6px; }
.reg-logo .logo-badge, body.paged .reg-logo .logo-badge { width: auto; min-width: 180px; height: 54px; min-height: 0; padding: 8px 14px; background: var(--white); }
.reg-logo .logo-badge img, body.paged .reg-logo .logo-badge img { max-height: 36px; max-width: 240px; }

/* ---- 8.2: the 12 relevant shows on one slide (4 x 3 compact cards) ---- */
body.paged .salon-grid.salon-grid-12 { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 1fr; gap: 10px; }
body.paged .salon-grid-12 .salon-card { padding: 10px 12px; gap: 4px; }
body.paged .salon-grid-12 .salon-card .logo-badge { width: 96px; height: 40px; }
body.paged .salon-grid-12 .salon-card .logo-badge img { max-height: 30px; }
body.paged .salon-grid-12 .salon-date { min-width: 52px; padding: 3px 6px; }
body.paged .salon-grid-12 .salon-card h4 { font-size: 14.5px; }
body.paged .salon-grid-12 .salon-card p { font-size: 12px; line-height: 1.3; }
body.paged .salon-grid-12 .salon-focus { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
body.paged .salon-grid.salon-grid-12 { grid-auto-rows: auto; align-content: start; }
body.paged .salon-grid-12 .salon-date b { font-size: 20px; }
body.paged .salon-grid-12 .salon-date span { font-size: 10px; }
body.paged .salon-grid-12 .salon-top { margin-bottom: 2px; }
body.paged .salon-grid-12 .salon-card .salon-rel { padding-top: 2px; }
body.paged .salon-grid.salon-grid-12 { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-rows: 1fr; align-content: stretch; gap: 10px; }
body.paged .salon-grid-12 .salon-card .logo-badge { width: 82px; height: 38px; min-height: 0; padding: 4px; }
body.paged .salon-grid-12 .salon-card .logo-badge img { max-height: 28px; }
body.paged .salon-grid-12 .salon-date { min-width: 46px; padding: 3px 5px; }
body.paged .salon-grid-12 .salon-card h4 { font-size: 13.5px; }
body.paged .salon-grid-12 .salon-card p { font-size: 11.5px; line-height: 1.3; }
body.paged .salon-grid-12 .salon-focus { -webkit-line-clamp: 3; }
body.paged .salon-grid.salon-grid-12 { grid-template-columns: repeat(5, minmax(0, 1fr)); grid-auto-rows: auto; align-content: start; gap: 8px; }
body.paged .salon-grid-12 .salon-card { padding: 8px 10px; gap: 3px; }
body.paged .salon-grid-12 .salon-card h4 { font-size: 13.5px; line-height: 1.2; }
body.paged .salon-grid-12 .salon-card p { font-size: 11.5px; line-height: 1.28; }
body.paged .salon-grid-12 .salon-focus { -webkit-line-clamp: 2; }
body.paged .salon-grid-12 .salon-where { display: none; }

/* ---- closing slide: slide-1 logos in the same proportions (ministry 84 : Global Bridge 44), larger ---- */
.merci-logos, body.paged .merci-logos { align-items: center; gap: 56px; }
.merci-logos img, body.paged .merci-logos img { height: 176px; width: auto; }
.merci-logos img[src*="global-bridge"], body.paged .merci-logos img[src*="global-bridge"] { height: 56px; }

/* ---- slide 2: host (Global Bridge) and speaker ---- */
.host-slide { display: flex; flex-direction: column; gap: 14px; }
.host-title { margin: 0 0 6px; }
.host-grid { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); gap: 20px; align-items: stretch; }
.host-card { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 26px 28px; border-top: 6px solid var(--olive-700, #435529); }
.host-person { border-top-color: var(--terracotta-500); display: grid; grid-template-columns: 210px minmax(0, 1fr); gap: 26px; align-items: start; }
.host-logo { display: flex; align-items: center; justify-content: center; height: 120px; margin-bottom: 14px; }
.host-logo img { max-height: 96px; max-width: 100%; }
.host-role { font-family: var(--font-num); font-size: 13px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--terracotta-600); margin-bottom: 6px; }
.host-lead { font-size: 19px; line-height: 1.45; color: var(--olive-900); font-weight: 600; margin: 0 0 12px; }
.host-name { font-family: var(--font-display); font-size: 30px; line-height: 1.15; margin: 0 0 6px; color: var(--ink-900); }
.host-job { font-size: 16px; color: var(--olive-800); font-weight: 600; margin-bottom: 12px; line-height: 1.4; }
.host-photo img { width: 210px; height: 250px; object-fit: cover; object-position: 60% 20%; border-radius: var(--radius-lg); display: block; box-shadow: var(--shadow-md); }
.host-points { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 9px; }
.host-points li { position: relative; padding-left: 20px; font-size: 16px; line-height: 1.45; color: var(--ink-700); }
.host-points li::before { content: ""; position: absolute; left: 2px; top: 9px; width: 8px; height: 8px; border-radius: 50%; background: var(--terracotta-500); }
@media (max-width: 900px) { body:not(.paged) .host-grid { grid-template-columns: 1fr; } body:not(.paged) .host-person { grid-template-columns: 1fr; } }
body.paged .host-slide { height: 100%; }
body.paged .host-grid { flex: 1 1 auto; min-height: 0; }
body.paged .host-card { display: flex; flex-direction: column; justify-content: center; }
body.paged .host-person { display: grid; align-content: center; align-items: center; }
body.paged .host-photo img { width: 230px; height: 300px; }
body.paged .host-person { grid-template-columns: 230px minmax(0, 1fr); }
body.paged .host-logo { height: 150px; }
body.paged .host-logo img { max-height: 120px; }
body.paged .host-points li { font-size: 17px; }

/* title from the invitation: main line + lighter second line */
.hero-title-sub { display: block; font-weight: 400; font-size: .62em; line-height: 1.25; margin-top: 10px; color: var(--ink-700); }

/* ---- slide 2: recommendations for the online session ---- */
.rules-slide { display: flex; flex-direction: column; gap: 18px; }
.rules-accent { color: var(--terracotta-500); }
.rules-box { border: 3px dashed var(--terracotta-500); border-radius: var(--radius-lg); background: var(--white); padding: 40px 48px; display: flex; flex-direction: column; gap: 44px; }
.rules-row { display: grid; grid-template-columns: 220px minmax(0, 1fr); align-items: center; gap: 36px; }
.rules-icons { justify-self: center; display: flex; gap: 28px; padding: 22px 30px; border-radius: 14px; background: var(--olive-900); color: #fff; }
.rules-icons svg { width: 52px; height: 52px; }
.rules-text { margin: 0; font-size: 26px; line-height: 1.35; color: var(--olive-900); }
.rules-text strong { color: var(--terracotta-500); }
.rules-sub { margin: 12px 0 0; font-size: 19px; line-height: 1.5; color: var(--ink-700); }
.rules-nb { margin: 4px 0 0; font-size: 18px; color: var(--ink-700); }
@media (max-width: 700px) {
  body:not(.paged) .rules-box { padding: 24px 20px; gap: 28px; }
  body:not(.paged) .rules-row { grid-template-columns: 1fr; gap: 14px; }
  body:not(.paged) .rules-text { font-size: 21px; }
}
body.paged .rules-slide { height: 100%; }
body.paged .rules-box { flex: 1 1 auto; justify-content: center; }

/* ---- slide 3: the speaker ---- */
.dm-slide { display: flex; flex-direction: column; gap: 14px; }
.dm-card { display: grid; grid-template-columns: 360px minmax(0, 1fr); gap: 44px; align-items: center; background: var(--white); border: 1px solid var(--cream-200); border-top: 6px solid var(--terracotta-500); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: 34px 40px; }
.dm-photo { width: 360px; height: 440px; object-fit: cover; object-position: 60% 20%; border-radius: var(--radius-lg); box-shadow: var(--shadow-md); display: block; }
.dm-name { margin: 0 0 8px; font-size: 44px; line-height: 1.1; }
.dm-job { font-size: 19px; font-weight: 700; color: var(--terracotta-600); margin-bottom: 22px; }
.dm-points { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 14px; }
.dm-points li { position: relative; padding-left: 24px; font-size: 19px; line-height: 1.45; color: var(--ink-700); }
.dm-points li::before { content: ""; position: absolute; left: 2px; top: 10px; width: 9px; height: 9px; border-radius: 50%; background: var(--terracotta-500); }
.dm-logo { height: 54px; width: auto; margin-top: 26px; display: block; }
body.paged .dm-slide { height: 100%; }
body.paged .dm-card { flex: 1 1 auto; }
@media (max-width: 900px) {
  body:not(.paged) .dm-card { grid-template-columns: 1fr; padding: 22px; gap: 20px; }
  body:not(.paged) .dm-photo { width: 100%; max-width: 360px; height: 380px; }
  body:not(.paged) .dm-name { font-size: 32px; }
}

/* ---- slide 4: Global Bridge as a diagram — firm → two levers → services ---- */
.gb-slide { display: flex; flex-direction: column; }
.gb-slide .chapter-kicker { margin-bottom: 4px; }
.gb-title { max-width: none; margin: 0 0 10px; font-size: 36px; }
.gb-accent { color: var(--terracotta-500); }
.gb-tree { --line: 3px; --spine: 34px; --gap: 14px; flex: 1 1 auto; display: flex; flex-direction: column; }
.gb-root { align-self: center; padding: 10px 26px; background: var(--white); border: 2px solid var(--olive-900); border-radius: 16px; box-shadow: var(--shadow-sm); }
.gb-root img { height: 50px; width: auto; display: block; }
/* stem down from the firm, then a bar with a drop to each lever (columns have no gap, so levers sit at 25% / 75%) */
.gb-fork { position: relative; height: 34px; }
.gb-fork::before { content: ""; position: absolute; left: 50%; top: 0; height: 50%; border-left: var(--line) solid var(--ink-300); transform: translateX(-50%); }
.gb-fork::after { content: ""; position: absolute; left: 25%; right: 25%; top: 50%; bottom: 0; border: var(--line) solid var(--ink-300); border-bottom: 0; border-radius: 10px 10px 0 0; }
.gb-levers { flex: 1 1 auto; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.gb-lever { --c: var(--olive-700); --c-soft: var(--olive-100); display: flex; flex-direction: column; padding: 0 14px; }
.gb-lever-prosp { --c: var(--terracotta-500); --c-soft: var(--terracotta-100); }
.gb-lever-bar { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 10px; border-radius: 12px; background: var(--c); color: #fff; font-weight: 800; font-size: 21px; letter-spacing: .08em; text-transform: uppercase; box-shadow: var(--shadow-sm); }
.gb-lever-bar .icon { color: #fff; }
.gb-lever-bar .icon svg { width: 28px; height: 28px; display: block; }
/* a spine drops from the lever; each service hangs off it by a rounded elbow */
.gb-branch { display: flex; flex-direction: column; gap: var(--gap); padding-top: var(--gap); margin-left: var(--spine); }
.gb-node { position: relative; margin-left: var(--spine); display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 14px; align-items: center; padding: 12px 16px; background: var(--white); border: 2px solid var(--c); border-radius: 14px; box-shadow: var(--shadow-sm); }
.gb-node::before { content: ""; position: absolute; left: calc(-1 * var(--spine) - 2px); top: calc(-1 * var(--gap) - 2px); width: var(--spine); height: calc(50% + var(--gap)); border-left: var(--line) solid var(--c); border-bottom: var(--line) solid var(--c); border-bottom-left-radius: 12px; }
.gb-node:not(:last-child)::after { content: ""; position: absolute; left: calc(-1 * var(--spine) - 2px); top: 50%; bottom: calc(-1 * var(--gap) - 2px); border-left: var(--line) solid var(--c); }
.gb-node-icon { width: 46px; height: 46px; border-radius: 50%; background: var(--c); color: #fff; display: flex; align-items: center; justify-content: center; }
.gb-node-icon svg { width: 24px; height: 24px; display: block; }
.gb-node-title { font-weight: 700; font-size: 17px; line-height: 1.25; color: var(--olive-900); margin-bottom: 7px; }
.gb-node ul { margin: 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.gb-node li { padding: 4px 11px; border-radius: 999px; background: var(--c-soft); font-size: 14px; line-height: 1.3; color: var(--ink-900); }
body.paged .gb-slide { height: 100%; }
@media (max-width: 900px) {
  body:not(.paged) .gb-levers { grid-template-columns: 1fr; gap: 24px; }
  body:not(.paged) .gb-fork { display: none; }
  body:not(.paged) .gb-root { margin-bottom: 16px; }
  body:not(.paged) .gb-tree { --spine: 18px; }
  body:not(.paged) .gb-lever { padding: 0; }
}
/* the spine segment starts above the elbow curve so the line stays unbroken; nodes share the height so both columns end together */
.gb-node:not(:last-child)::after { top: calc(50% - 16px); }
.gb-branch { flex: 1 1 auto; }
.gb-node { flex: 1 1 0; }
.gb-node-title { font-size: 18px; }
.gb-node li { font-size: 15px; }

/* a stat label may carry a line break (e.g. the two tariff lines on slide 5) */
.stat-row-label { white-space: pre-line; }

/* ---- brand hover card over logo badges (js/shell.js, text in js/brand-info.js) ---- */
.brand-tip { position: absolute; z-index: 900; width: 320px; padding: 12px 14px 11px; background: var(--olive-900); color: #fff; border-radius: 12px; box-shadow: 0 10px 30px rgba(20,24,14,.3); pointer-events: none; opacity: 0; transform: translateY(4px); transition: opacity .15s ease, transform .15s ease; visibility: hidden; }
.brand-tip.show { opacity: 1; transform: none; visibility: visible; }
.brand-tip::after { content: ""; position: absolute; left: var(--arrow-x, 50%); bottom: -7px; width: 14px; height: 14px; background: var(--olive-900); transform: translateX(-50%) rotate(45deg); border-radius: 2px; }
.brand-tip.below::after { bottom: auto; top: -7px; }
.brand-tip-name { font-weight: 700; font-size: 15px; color: var(--gold-300); margin-bottom: 4px; }
.brand-tip p { margin: 0; font-size: 13.5px; line-height: 1.45; color: #fff; }
.brand-tip-url { margin-top: 7px; font-size: 12px; color: rgba(255,255,255,.65); }
[data-brand-info] { cursor: help; }
a[data-brand-info] { cursor: pointer; }

/* slide 12 toolbar: province + group dropdowns, circuit chips and search on one line */
body.paged .g-grid .filter-table-mount > .table-toolbar { column-gap: 6px; }
body.paged .g-grid .filter-table-mount > .table-toolbar > select { max-width: 168px; padding: 6px 8px; font-size: 13.5px; }
body.paged .g-grid .filter-table-mount > .table-toolbar > input { width: 160px; padding: 6px 10px; font-size: 13.5px; }
body.paged .g-grid .filter-table-mount > .table-toolbar .chip { padding: 4px 9px; font-size: 13px; }

/* text-only brand badges in the retailer table: fit the name inside the square badge */
.logo-badge .fallback-mono, body.paged .logo-badge .fallback-mono { font-size: 15px; letter-spacing: .04em; color: var(--terracotta-600); }

/* slide 16: the family each e-commerce card stands for, above its brand names */
.ecom-family { font-family: var(--font-num); font-weight: 700; font-size: 13px; letter-spacing: .06em; text-transform: uppercase; color: var(--terracotta-600); line-height: 1.3; }

/* ---- slide 4.2: bottle preview on hover over an organic brand card (js/shell.js) ---- */
.bio-brand.has-bottle { cursor: zoom-in; }
.bio-brand.has-bottle .logo-badge { cursor: pointer; }
.bottle-tip { position: absolute; z-index: 900; width: 250px; padding: 12px; background: var(--white); border: 1px solid var(--cream-200); border-radius: 14px; box-shadow: 0 14px 36px rgba(20,24,14,.28); pointer-events: none; opacity: 0; visibility: hidden; transform: translateY(4px); transition: opacity .15s ease, transform .15s ease; }
.bottle-tip.show { opacity: 1; visibility: visible; transform: none; }
.bottle-tip img { display: block; width: 100%; height: 250px; object-fit: contain; background: var(--cream-50); border-radius: 10px; margin-bottom: 8px; }
.bottle-tip-name { font-weight: 700; font-size: 14.5px; color: var(--olive-900); margin-bottom: 3px; }
.bottle-tip p { margin: 0; font-size: 12.5px; line-height: 1.4; color: var(--ink-700); }
.bottle-tip-hint { margin-top: 6px; font-size: 11.5px; color: var(--terracotta-600); font-weight: 700; }

/* ---- 4.2: organic olive oil market slide + scrollable brand list ---- */
.om-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; margin-top: 16px; }
.om-card { background: var(--white); border: 1px solid var(--cream-200); border-top: 5px solid var(--olive-700); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 18px 22px; }
.om-card.om-key { border-top-color: var(--terracotta-500); background: var(--cream-50); }
.om-card h4 { margin: 0 0 10px; font-size: 19px; color: var(--olive-900); }
.om-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 9px; }
.om-list li { position: relative; padding-left: 18px; font-size: 16px; line-height: 1.45; color: var(--ink-700); }
.om-list li::before { content: ""; position: absolute; left: 2px; top: 9px; width: 7px; height: 7px; border-radius: 50%; background: var(--terracotta-500); }
@media (max-width: 900px) { body:not(.paged) .om-split { grid-template-columns: 1fr; } }
.bio-scroll { max-height: 640px; overflow-y: auto; padding-right: 6px; scrollbar-width: thin; }
body.paged .bio-scroll { max-height: 680px; }
/* the brand list scroll box fills its slide */
body.paged .bio-scroll { height: auto; }

/* kpi tiles keep icon + number + label together when the pager stretches their row */
.kpi-row .stat-tile, body.paged .kpi-row .stat-tile { align-content: center; row-gap: 4px; }
/* 4.2 market slide: figures stay compact, the two text cards take the remaining height */
body.paged .om-kpis { align-self: start; }
body.paged .om-kpis .stat-tile { height: auto; }
body.paged .om-split { align-self: stretch; }
body.paged .om-card { display: flex; flex-direction: column; justify-content: center; }
body.paged .om-list li { font-size: 17px; }
/* figures + the two cards as one unit, so the pager gives the spare height to the cards */
.om-body { display: flex; flex-direction: column; gap: 16px; }
.om-body .om-split { margin-top: 0; flex: 1 1 auto; }
body.paged .om-body { height: 100%; }

/* ---- 5.1 suite: imports by origin 2024 (UN Comtrade) ---- */
.og-split { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.og-table-wrap { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); overflow: hidden; }
.og-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.og-table th { background: var(--cream-100); color: var(--olive-900); font-size: 12.5px; text-transform: uppercase; letter-spacing: .03em; text-align: left; padding: 7px 10px; }
.og-table td { padding: 4px 10px; border-top: 1px solid var(--cream-200); color: var(--ink-700); }
.og-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.og-table .og-country { white-space: nowrap; }
.og-table .og-country .flag, .og-table .og-country svg { width: 20px; height: 14px; vertical-align: -2px; }
.og-table tr.is-tn td { background: #fdeee8; color: var(--terracotta-700); font-weight: 700; }
.og-table tr.og-total td { font-weight: 700; color: var(--olive-900); border-top: 2px solid var(--olive-700); background: var(--cream-50); }
.og-share { font-weight: 700; }
.og-side { display: flex; flex-direction: column; gap: 14px; }
.og-kpi { background: var(--white); border: 1px solid var(--cream-200); border-left: 5px solid var(--olive-700); border-radius: var(--radius-md); padding: 14px 18px; box-shadow: var(--shadow-sm); }
.og-kpi.is-tn { border-left-color: var(--terracotta-500); }
.og-kpi-value { font-family: var(--font-num); font-weight: 800; font-size: 34px; color: var(--olive-900); line-height: 1.1; }
.og-kpi.is-tn .og-kpi-value { color: var(--terracotta-600); }
.og-kpi-label { font-size: 15px; line-height: 1.4; color: var(--ink-700); margin-top: 4px; }
.og-trend { background: var(--cream-50); border: 2px dashed var(--terracotta-500); border-radius: var(--radius-md); padding: 14px 18px; }
.og-trend h4 { margin: 0 0 8px; font-size: 17px; color: var(--olive-900); }
.og-trend ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; }
.og-trend li { font-size: 14.5px; line-height: 1.4; color: var(--ink-700); }
@media (max-width: 900px) { body:not(.paged) .og-split { grid-template-columns: 1fr; } }
/* keep table and reading side by side on the slide (pager grid rules would stack them) */
body.paged .og-split { display: flex !important; flex-direction: row !important; align-items: flex-start; gap: 20px; }
body.paged .og-split > .og-table-wrap { flex: 1.55 1 0; min-width: 0; }
body.paged .og-split > .og-side { flex: 1 1 0; min-width: 0; }
body.paged .og-table { font-size: 13.5px; }
body.paged .og-table th { padding: 6px 9px; font-size: 12px; }
body.paged .og-table td { padding: 3px 9px; }

/* slide 22 fills the page: taller table rows, side column stretched to the table's height */
body.paged .og-split { align-items: stretch !important; }
body.paged .og-table { font-size: 15.5px; }
body.paged .og-table th { font-size: 12.5px; padding: 9px 10px; }
body.paged .og-table td { padding: 6.5px 10px; }
body.paged .og-table .og-country .flag, body.paged .og-table .og-country svg { width: 22px; height: 15px; }
body.paged .og-side { justify-content: space-between; gap: 16px; }
body.paged .og-kpi { flex: 1 1 0; display: flex; flex-direction: column; justify-content: center; padding: 16px 22px; }
body.paged .og-kpi-value { font-size: 44px; }
body.paged .og-kpi-label { font-size: 16.5px; }
body.paged .og-trend { flex: 1.3 1 0; display: flex; flex-direction: column; justify-content: center; padding: 18px 22px; }
body.paged .og-trend h4 { font-size: 19px; }
body.paged .og-trend li { font-size: 16px; }
body.paged .og-table-wrap { display: flex; }
body.paged .og-table { height: 100%; }

/* ---- 5.1: whole market (left) | supplier chart (middle) | organic (right) ---- */
.c51-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr) minmax(0, 1fr); gap: 16px; align-items: stretch; }
.c51-col { display: flex; flex-direction: column; gap: 8px; }
.c51-head { font-family: var(--font-num); font-weight: 800; font-size: 14px; letter-spacing: .06em; text-transform: uppercase; color: var(--olive-800); padding: 6px 12px; border-radius: 8px; background: var(--olive-100); }
.c51-bio .c51-head { color: #fff; background: var(--olive-700); }
.c51-col .stat-list { flex: 1 1 auto; margin: 0; }
.c51-split > .chart-card { margin: 0; display: flex; flex-direction: column; }
.c51-split > .chart-card .chart-canvas-wrap { flex: 1 1 auto; min-height: 0; }
body.paged .c51-split { display: flex !important; flex-direction: row !important; align-items: stretch; gap: 16px; }
body.paged .c51-split > .c51-col { flex: 1 1 0; min-width: 0; }
body.paged .c51-split > .chart-card { flex: 1.25 1 0; min-width: 0; }
body.paged .c51-col .stat-list { display: flex; flex-direction: column; gap: 10px; }
body.paged .c51-col .stat-row { flex: 1 1 0; }
body.paged .c51-col .stat-row-value { font-size: 30px; }
body.paged .c51-col .stat-row-label { font-size: 15px; }
@media (max-width: 900px) { body:not(.paged) .c51-split { grid-template-columns: 1fr; } }
.c51-cards { flex: 1 1 auto; display: flex; flex-direction: column; gap: 10px; }
.c51-card { flex: 1 1 0; display: flex; align-items: center; gap: 14px; background: var(--white); border: 1px solid var(--cream-200); border-left: 5px solid var(--olive-400); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 12px 16px; }
.c51-bio .c51-card { border-left-color: var(--olive-700); background: #f6f8ef; }
.c51-icon { flex: 0 0 auto; width: 42px; height: 42px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 2px solid var(--olive-400); color: var(--olive-700); }
.c51-bio .c51-icon { border-color: var(--olive-700); background: var(--olive-700); color: #fff; }
.c51-icon svg { width: 22px; height: 22px; display: block; }
.c51-value { font-family: var(--font-num); font-weight: 800; font-size: 26px; line-height: 1.1; color: var(--olive-900); }
.c51-label { font-size: 14px; line-height: 1.35; color: var(--ink-700); margin-top: 3px; }
.c51-card { padding: 9px 14px; }
.c51-value { font-size: 23px; }
.c51-label { font-size: 13px; }
.c51-bio .c51-icon .icon, .c51-bio .c51-icon svg { color: #fff; stroke: #fff; }

/* ---- 5.1: fiche n°02 (DGAB) — organic olive oil exports 2025/2026 ---- */
.fi-ar { font-size: 15px; color: var(--ink-500); margin: -4px 0 10px; font-family: "Segoe UI", Tahoma, sans-serif; }
.fi-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.fi-kpi { display: flex; align-items: center; gap: 12px; background: var(--white); border: 1px solid var(--cream-200); border-left: 5px solid var(--olive-700); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); padding: 10px 14px; }
.fi-icon { flex: 0 0 auto; width: 38px; height: 38px; border-radius: 50%; background: var(--olive-700); color: #fff; display: flex; align-items: center; justify-content: center; }
.fi-icon .icon, .fi-icon svg { width: 20px; height: 20px; color: #fff; display: block; }
.fi-value { font-family: var(--font-num); font-weight: 800; font-size: 24px; line-height: 1.1; color: var(--olive-900); }
.fi-label { font-size: 13.5px; line-height: 1.35; color: var(--ink-700); margin-top: 2px; }
.fi-table-wrap { background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); overflow: hidden; }
.fi-table { width: 100%; border-collapse: collapse; font-size: 15px; }
.fi-table th { background: var(--olive-700); color: #fff; font-size: 12.5px; text-transform: uppercase; letter-spacing: .03em; padding: 9px 12px; text-align: left; }
.fi-table th.num, .fi-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.fi-table td { padding: 9px 12px; border-top: 1px solid var(--cream-200); color: var(--ink-700); }
.fi-table td.pos { color: #3f7a2a; font-weight: 700; }
.fi-table td.neg { color: var(--terracotta-600); font-weight: 700; }
.fi-table tr.fi-total td { background: var(--cream-100); font-weight: 800; color: var(--olive-900); border-top: 2px solid var(--olive-700); }
.fi-charts { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 16px; align-items: stretch; }
.fi-monthly { display: flex; flex-direction: column; gap: 12px; }
.fi-charts .chart-card { margin: 0; }
body.paged .fi-charts { display: flex !important; flex-direction: row !important; gap: 16px; align-items: stretch; }
body.paged .fi-charts > .chart-card { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; justify-content: center; }
body.paged .fi-charts > .fi-monthly { flex: 1.25 1 0; min-width: 0; }
body.paged .fi-kpis { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
@media (max-width: 900px) { body:not(.paged) .fi-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } body:not(.paged) .fi-charts { grid-template-columns: 1fr; } }
/* six figures in one compact row so figures + table share the first slide */
body.paged .fi-kpis { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; gap: 8px; margin-bottom: 10px; }
body.paged .fi-kpi { flex-direction: column; align-items: flex-start; gap: 6px; padding: 10px 12px; }
body.paged .fi-icon { width: 30px; height: 30px; }
body.paged .fi-icon .icon, body.paged .fi-icon svg { width: 16px; height: 16px; }
body.paged .fi-value { font-size: 21px; }
body.paged .fi-label { font-size: 12.5px; }
body.paged .fi-table { font-size: 14px; }
body.paged .fi-table td { padding: 7px 10px; }
body.paged .fi-table th { padding: 7px 10px; font-size: 11.5px; }
.fi-body { display: flex; flex-direction: column; gap: 10px; }
body.paged .fi-body .fi-kpis { margin-bottom: 0; }
body.paged .fi-body .fi-table-wrap { flex: 1 1 auto; display: flex; }
body.paged .fi-body .fi-table { height: 100%; }
/* slide 22: charts fill the page — donut card and the two monthly cards stretch to full height */
body.paged .fi-charts { flex: 1 1 auto; }
body.paged .fi-charts > .chart-card { justify-content: flex-start; }
body.paged .fi-charts .chart-card .chart-canvas-wrap { flex: 1 1 auto; min-height: 0; }
body.paged .fi-monthly { display: flex; flex-direction: column; gap: 12px; }
body.paged .fi-monthly > .chart-card { flex: 1 1 0; display: flex; flex-direction: column; min-height: 0; }

/* ---- 8.2: full description on hover over an event card ---- */
.card-tip { width: 380px; }
.card-tip::after { display: none; }
.card-tip p { margin: 0 0 6px; }
.card-tip p.card-tip-meta { font-size: 12.5px; color: rgba(255,255,255,.78); }
[data-card-tip] { cursor: help; }

/* ---- slide 30 (8.2): 11 events on a 4 × 3 grid that fills the page, larger text ---- */
body.paged .salon-grid.salon-grid-12 { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: auto; align-content: stretch; gap: 12px; }
body.paged .salon-grid-12 .salon-card { padding: 12px 14px; gap: 5px; }
body.paged .salon-grid-12 .salon-card .logo-badge { width: 110px; height: 46px; padding: 5px; }
body.paged .salon-grid-12 .salon-card .logo-badge img { max-height: 36px; }
body.paged .salon-grid-12 .salon-date { min-width: 58px; padding: 4px 7px; }
body.paged .salon-grid-12 .salon-date b { font-size: 23px; }
body.paged .salon-grid-12 .salon-date span { font-size: 10.5px; }
body.paged .salon-grid-12 .salon-card h4 { font-size: 15.5px; line-height: 1.22; }
body.paged .salon-grid-12 .salon-card p { font-size: 12.5px; line-height: 1.35; }
body.paged .salon-grid-12 .salon-focus { -webkit-line-clamp: 2; }
body.paged .salon-grid-12 .salon-card .salon-rel { font-size: 12.5px; }
body.paged .salon-grid-12 .salon-card h4 { font-size: 17px; }
body.paged .salon-grid-12 .salon-card p { font-size: 14px; line-height: 1.38; }
body.paged .salon-grid-12 .salon-card .salon-rel { font-size: 13.5px; }
body.paged .salon-grid-12 .salon-focus { -webkit-line-clamp: 4; }
body.paged .salon-grid-12 .salon-date b { font-size: 25px; }
body.paged .salon-grid-12 .salon-date span { font-size: 11px; }
/* the short summary is in the hover description, so the card face keeps name, dates and relevance */
body.paged .salon-grid-12 .salon-focus { display: none; }
body.paged .salon-grid-12 .salon-card .salon-rel { margin-top: auto; }
body.paged .salon-grid.salon-grid-12 { gap: 12px; }
/* slide 30: bigger title and card text */
body.paged .salon-grid-12 .salon-card h4 { font-size: 19px; line-height: 1.22; }
body.paged .salon-grid-12 .salon-card p { font-size: 15.5px; line-height: 1.35; }
body.paged .salon-grid-12 .salon-card .salon-rel { font-size: 15px; }
body.paged .salon-grid-12 .salon-card p .icon { width: 16px; height: 16px; flex-basis: 16px; }
body.paged .salon-grid-12 .salon-date b { font-size: 27px; }
body.paged .salon-grid-12 .salon-date span { font-size: 11.5px; }
body.paged .salon-grid-12 .salon-card .logo-badge { width: 118px; height: 50px; }
body.paged .salon-grid-12 .salon-card .logo-badge img { max-height: 40px; }
/* the date badge already shows the date (full dates are in the hover), so the card keeps name + relevance */
body.paged .salon-grid-12 .salon-when { display: none; }
body.paged .salon-grid-12 .salon-card h4 { font-size: 20px; }
body.paged .salon-grid-12 .salon-card .salon-rel { font-size: 16px; line-height: 1.35; }

/* slide 1: ministry logo top right, Global Bridge logo bottom right */
.hero-gb { display: flex; justify-content: flex-end; margin-top: 24px; }
.hero-gb img { height: 60px; width: auto; display: block; }
body.paged .hero-gb { position: absolute; right: 0; bottom: 16px; margin: 0; z-index: 2; }
body.paged .hero-gb img { height: 64px; }
body.paged .hero-partners img { height: 130px; }
/* last slide: ministry logo on top, Global Bridge logo under the text */
.merci-logo-bottom { margin-top: 18px; }
body.paged .hero-gb { bottom: -64px; }
body.paged .hero-gb img { height: 54px; }
/* slide 1: the Global Bridge logo is drawn by the section itself (not measured by the pager), bottom right */
body.paged .hero-gb { display: none; }
body.paged section.hero { position: relative; }
body.paged section.hero::after { content: ""; position: absolute; right: 40px; bottom: 28px; width: 190px; height: 60px; background: url("../assets/logos/global-bridge.png") no-repeat right bottom / contain; pointer-events: none; }
body.paged section.hero::after { bottom: -34px; height: 50px; width: 160px; right: 36px; }
body.paged section.hero::after { bottom: 4px; height: 46px; width: 150px; right: 36px; }

/* one font family everywhere: controls, charts' SVG maps and the rare hard-coded text */
button, input, select, textarea, svg text, .fi-ar { font-family: var(--font-body); }

/* slide 10: one wide olive oil shelf photo */
.photo-rayon .photo-block { margin: 0; }
.photo-rayon img { width: 100%; height: 420px; object-fit: cover; border-radius: var(--radius-lg); display: block; }
body.paged .photo-rayon img { height: 520px; max-height: none; }
body.paged .photo-rayon .photo-block img, body.paged .pg-fill > .photo-rayon .photo-block img, .photo-rayon .photo-block img { height: 540px !important; max-height: none !important; min-height: 540px; object-fit: cover; object-position: center 45%; }

/* slide 30: competitions as their own category */
.salon-card.salon-concours { border-top-color: var(--gold-500); background: #fffaf0; }
.salon-tag { align-self: flex-start; font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #fff; background: var(--gold-600); border-radius: 999px; padding: 2px 9px; }
.salon-legend-note { color: var(--ink-500); }

/* slide 15: clean packshots on white — show the whole bottle instead of a cropped band */
.mdd-photo, body.paged .mdd-photo { background: #fff; }
.mdd-photo img, body.paged .mdd-photo img { object-fit: contain !important; padding: 4px 0; }

/* ---- 3.6 L'e-commerce: bullets left, in-store vs online chart right ---- */
.ec-split { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 20px; align-items: stretch; }
.ec-list { margin: 0; padding: 0 0 0 20px; display: flex; flex-direction: column; gap: 6px; font-size: 17px; line-height: 1.4; color: var(--ink-700); }
.ec-list > li::marker { color: var(--terracotta-500); }
.ec-list b { color: var(--olive-900); }
.ec-list ul { margin: 3px 0 2px; padding-left: 20px; list-style: circle; display: flex; flex-direction: column; gap: 1px; font-size: 15.5px; }
.ec-split > .chart-card { margin: 0; display: flex; flex-direction: column; }
.ec-split > .chart-card .chart-canvas-wrap { flex: 1 1 auto; min-height: 0; }
body.paged .ec-split { display: flex !important; flex-direction: row !important; gap: 20px; }
body.paged .ec-split > .ec-list { flex: 1.05 1 0; min-width: 0; }
body.paged .ec-split > .chart-card { flex: 1 1 0; min-width: 0; }
@media (max-width: 900px) { body:not(.paged) .ec-split { grid-template-columns: 1fr; } }

/* ---- chapter 7: roadmap as a 4-phase flow ---- */
.rm-flags { margin: 0 0 18px; align-items: center; }
.rm-arrow-txt { font-size: 24px; color: var(--ink-300); line-height: 1; }
.rm-lead { font-size: 18px; color: var(--ink-500); font-weight: 600; }
.rm-flow { display: flex; align-items: stretch; gap: 8px; }
.rm-phase { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden; }
.rm-head { display: flex; align-items: center; gap: 10px; padding: 14px 16px; color: #fff; }
.rm-phase-1 .rm-head { background: var(--olive-700); }
.rm-phase-2 .rm-head { background: var(--olive-800, #3a4a22); }
.rm-phase-3 .rm-head { background: var(--terracotta-600); }
.rm-phase-4 .rm-head { background: var(--terracotta-500); }
.rm-num { flex: 0 0 auto; width: 30px; height: 30px; border-radius: 50%; background: #fff; color: var(--olive-900); font-weight: 800; display: flex; align-items: center; justify-content: center; font-size: 16px; }
.rm-icon .icon, .rm-icon svg { width: 22px; height: 22px; color: #fff; display: block; }
.rm-title { font-weight: 800; font-size: 18px; line-height: 1.2; }
.rm-items { list-style: none; margin: 0; padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; flex: 1 1 auto; justify-content: space-evenly; }
.rm-items li { position: relative; padding-left: 20px; font-size: 16px; line-height: 1.4; color: var(--ink-700); }
.rm-items li::before { content: ""; position: absolute; left: 2px; top: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--terracotta-500); }
.rm-items li.rm-key { font-weight: 700; color: var(--olive-900); }
.rm-link { flex: 0 0 auto; align-self: center; color: var(--terracotta-500); }
.rm-link .icon, .rm-link svg { width: 26px; height: 26px; transform: rotate(45deg); display: block; }
body.paged .rm-flow { flex: 1 1 auto; }
@media (max-width: 900px) { body:not(.paged) .rm-flow { flex-direction: column; } body:not(.paged) .rm-link { transform: rotate(90deg); } }
.rm-link { font-size: 26px; line-height: 1; }
.rm-items li { font-size: 17.5px; }
.rm-title { font-size: 19px; }
/* slide 16: the bullet list fills the height next to the chart (no empty band under it) */
body.paged .ec-split { align-items: stretch !important; }
body.paged .ec-split > .ec-list { justify-content: space-between; font-size: 19px; line-height: 1.38; gap: 4px; }
body.paged .ec-split > .ec-list ul { font-size: 17px; }

/* ---- 4.2 Canadian consumer preferences: 4 pillars + recommended proposition ---- */
.cp-body { display: flex; flex-direction: column; gap: 14px; }
.cp-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; flex: 1 1 auto; }
.cp-card { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--cream-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden; }
.cp-head { display: flex; align-items: center; gap: 10px; padding: 14px 16px; color: #fff; font-weight: 800; font-size: 17px; text-transform: uppercase; letter-spacing: .03em; }
.cp-card-1 .cp-head { background: var(--olive-700); }
.cp-card-2 .cp-head { background: var(--olive-800, #3a4a22); }
.cp-card-3 .cp-head { background: var(--terracotta-600); }
.cp-card-4 .cp-head { background: var(--terracotta-500); }
.cp-icon .icon, .cp-icon svg { width: 24px; height: 24px; color: #fff; display: block; }
.cp-card ul { list-style: none; margin: 0; padding: 14px 16px; display: flex; flex-direction: column; justify-content: space-evenly; gap: 10px; flex: 1 1 auto; }
.cp-card li { position: relative; padding-left: 18px; font-size: 16.5px; line-height: 1.38; color: var(--ink-700); }
.cp-card li::before { content: ""; position: absolute; left: 2px; top: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--terracotta-500); }
.cp-prop { background: var(--olive-900); color: #fff; border-radius: var(--radius-lg); padding: 14px 20px; text-align: center; }
.cp-prop-title { font-size: 14px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--gold-300); margin-bottom: 8px; }
.cp-prop-tags { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.cp-prop-tags span { background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.25); border-radius: 999px; padding: 5px 14px; font-weight: 700; font-size: 15px; }
body.paged .cp-body { height: 100%; }
@media (max-width: 900px) { body:not(.paged) .cp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rm-takeaway { display: flex; align-items: center; gap: 14px; margin-top: 14px; padding: 12px 20px; border-radius: var(--radius-lg); background: var(--olive-900); color: #fff; }
.rm-takeaway p { margin: 0; font-size: 16.5px; line-height: 1.4; }
.rm-takeaway-icon .icon, .rm-takeaway-icon svg { width: 26px; height: 26px; color: var(--gold-300); display: block; }
body.paged .rm-items li { font-size: 15.5px; }
.photo-rayon .photo-block img { object-position: center 40%; }
/* slide 10: whole photo, not cropped, as large as the slide allows */
body.paged .photo-rayon .photo-block img, body.paged .pg-fill > .photo-rayon .photo-block img, .photo-rayon .photo-block img { object-fit: contain !important; height: 600px !important; min-height: 0 !important; width: 100% !important; background: transparent; }
.photo-rayon .photo-block { background: transparent; box-shadow: none; border: 0; }
/* slide 10: the whole photo, uncropped, filling the slide */
.rayon-full { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.rayon-full img { display: block; max-width: 100%; width: auto; height: 610px; object-fit: contain; border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }
.rayon-full figcaption { font-size: 13px; color: var(--ink-500); }
@media (max-width: 900px) { body:not(.paged) .rayon-full img { height: auto; width: 100%; } }
body.paged .rayon-full img { height: 600px; }
body.paged .rayon-full { gap: 4px; }

/* slide 1: bigger "Sommaire" heading; room under the cards for the Global Bridge logo */
#sommaire-mount > .chapter-kicker, body.paged #sommaire-mount > .chapter-kicker { font-size: 1.9rem; letter-spacing: .08em; margin-bottom: 14px; }
body.paged #sommaire-mount { padding-bottom: 56px; }

/* ---- Forces & faiblesses (standalone slide before chapter 7) ---- */
.ff-slide { display: flex; flex-direction: column; }
.ff-grid { margin: 18px 0 0; gap: 22px; }
.ff-grid .swot-col { padding: 22px 26px; border-top: 5px solid var(--olive-600); }
.ff-grid .swot-col.neg { border-top-color: var(--terracotta-600, #bd4f20); }
.ff-grid .swot-col h4 { display: flex; align-items: center; gap: 12px; font-size: 20px; margin: 0; }
.ff-sign { display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; font-size: 24px; line-height: 1; color: #fff; background: var(--olive-600); }
.swot-col.neg .ff-sign { background: var(--terracotta-600, #bd4f20); }
.ff-grid .swot-col ul { gap: 9px; }
.ff-grid .swot-col li { font-size: 17px; line-height: 1.4; padding-left: 22px; }
.ff-grid .swot-col li strong { color: var(--ink-900, #1f2616); }
.ff-grid .swot-col.neg li::before { content: "−"; color: var(--terracotta-600, #bd4f20); }
body.paged .ff-slide { height: 100%; }
body.paged .ff-grid { flex: 1; align-items: stretch; }
