:root {
  --paper: #ffffff;
  --ink: #092f30;
  --ink-soft: #3f5c5d;
  --teal: #078988;
  --teal-dark: #063f40;
  --teal-pale: #dceeed;
  --gold: #e3a52a;
  --coral: #c43d6e;
  --line: #d9e2e1;
  --quiet: #879a9a;
  --slide-ratio: calc(16 / 9);
  font-family: "Aptos", "Helvetica Neue", Helvetica, Arial, sans-serif;
}

* {
  box-sizing: border-box;
}

html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
  background: #e7ebea;
  color: var(--ink);
}

button,
video {
  font: inherit;
}

.deck {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
}

.slide {
  position: absolute;
  display: none;
  width: min(100vw, calc(100vh * var(--slide-ratio)));
  height: min(100vh, calc(100vw / var(--slide-ratio)));
  overflow: hidden;
  background: var(--paper);
  box-shadow: 0 1.5vh 5vh rgb(4 35 35 / 0.12);
}

.slide.is-active {
  display: block;
  animation: slide-in 360ms cubic-bezier(0.2, 0.72, 0.2, 1) both;
}

@keyframes slide-in {
  from {
    opacity: 0;
    transform: translateY(0.8%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.slide-logo {
  background: #fff;
}

.opening-logo {
  position: absolute;
  top: 45%;
  left: 50%;
  width: 50%;
  height: auto;
  transform: translate(-50%, -50%);
}

.opening-subhead {
  position: absolute;
  top: 65%;
  left: 12%;
  right: 12%;
  margin: 0;
  color: var(--ink);
  text-align: center;
  font-size: clamp(22px, 1.75vw, 34px);
  font-weight: 500;
  letter-spacing: -.015em;
}

.slide-video {
  display: none;
  grid-template-columns: 2fr 1fr;
  gap: 4.2%;
  padding: 5.7% 5.5%;
  background: #fff;
}

.slide-video.is-active {
  display: grid;
}

.video-stage {
  position: relative;
  min-width: 0;
  overflow: hidden;
  background: #f6f8f7;
}

.courtown-video,
.video-placeholder {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.courtown-video {
  z-index: 2;
  display: none;
  object-fit: cover;
  background: #071f20;
}

.slide-video.has-video .courtown-video {
  display: block;
}

.video-placeholder {
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 2px dashed var(--teal);
  background: #f6f8f7;
  color: var(--teal);
  text-align: center;
}

.video-placeholder span {
  font-size: clamp(12px, 0.9vw, 18px);
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.video-placeholder small {
  margin-top: 1.2vh;
  font-size: clamp(10px, 0.8vw, 16px);
  letter-spacing: 0.06em;
}

.video-placeholder em { position:absolute; right:2.2%; bottom:2.2%; color:rgba(255,255,255,.9); font-size:clamp(8px,.62vw,12px); font-style:normal; }

.video-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-right: 4%;
}

.video-copy h1 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(48px, 5vw, 98px);
  font-weight: 500;
  line-height: 0.92;
  letter-spacing: -0.055em;
}

.video-copy p {
  margin: 2vh 0 0;
  color: var(--teal);
  font-size: clamp(18px, 1.5vw, 30px);
  font-weight: 700;
  letter-spacing: 0.04em;
}

.slide-storms {
  padding: 5.7% 5.5% 4.2%;
}

.storm-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 5vw;
}

.storm-kicker {
  margin: 0 0 1.1vh;
  color: var(--teal);
  font-size: clamp(11px, 0.82vw, 17px);
  font-weight: 750;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.storm-heading h1 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(44px, 4.4vw, 86px);
  font-weight: 500;
  line-height: 0.98;
  letter-spacing: -0.05em;
}

.kathleen-highlight {
  min-width: 25vw;
  margin-top: 0.4vh;
  padding: 0.5vh 0 1.8vh 1.8vw;
  border-left: 5px solid var(--coral);
}

.kathleen-highlight span,
.kathleen-highlight strong,
.kathleen-highlight small {
  display: block;
}

.kathleen-highlight span {
  color: var(--coral);
  font-size: clamp(10px, 0.72vw, 15px);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.kathleen-highlight strong {
  margin-top: 0.75vh;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(28px, 2.4vw, 48px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.035em;
}

.kathleen-highlight small {
  margin-top: 0.8vh;
  color: var(--ink-soft);
  font-size: clamp(11px, 0.78vw, 16px);
}

.storm-chart {
  position: absolute;
  right: 5.5%;
  bottom: 13.5%;
  left: 5.5%;
  display: flex;
  gap: 2px;
  height: 51%;
  border-bottom: 1px solid var(--ink);
}

.storm {
  position: relative;
  flex: 1 1 0;
  min-width: 0;
  opacity: 0;
}

.storm.season-start:not(:first-child) {
  margin-left: 0.65vw;
}

.slide-storms.is-active .storm {
  animation: storm-appear 240ms ease-out both;
  animation-delay: calc(180ms + var(--i) * 8ms);
}

@keyframes storm-appear {
  to {
    opacity: 1;
  }
}

.storm-bar-wrap {
  position: absolute;
  inset: 0 8% 0;
  display: flex;
  align-items: flex-end;
}

.storm-bar {
  position: relative;
  width: 100%;
  height: calc(7% + var(--score) * 0.73%);
  min-height: 1.5%;
  background: linear-gradient(to top, var(--teal-dark), var(--teal));
  transform: scaleY(0);
  transform-origin: bottom;
}

.slide-storms.is-active .storm-bar {
  animation: bar-rise 700ms cubic-bezier(0.18, 0.8, 0.18, 1) both;
  animation-delay: calc(720ms + var(--i) * 7ms);
}

@keyframes bar-rise {
  to {
    transform: scaleY(1);
  }
}

.storm.partial .storm-bar {
  background: var(--teal);
  opacity: 0.32;
}

.storm.no-score .storm-bar {
  height: 2.5%;
  border: 1px solid #9aacab;
  background: transparent;
}

.storm-name {
  display: none;
}

.storm-season {
  position: absolute;
  bottom: calc(100% + 1.2vh);
  left: 0;
  color: var(--quiet);
  font-size: clamp(7px, 0.58vw, 12px);
  font-weight: 750;
  letter-spacing: 0.08em;
  white-space: nowrap;
}

.wexford-marker {
  display: none;
}

.slide-storms.is-active .wexford-marker {
  animation: marker-in 300ms ease-out 1.75s both;
}

@keyframes marker-in {
  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

.storm.kathleen .storm-bar {
  background: var(--coral);
  box-shadow: 0 0 0 1px var(--coral);
}

.storm-footer {
  position: absolute;
  right: 5.5%;
  bottom: 4.2%;
  left: 5.5%;
  display: flex;
  justify-content: flex-end;
}

.storm-method {
  max-width: 55vw;
  margin: 0;
  color: var(--quiet);
  font-size: clamp(9px, 0.7vw, 14px);
  font-weight: 520;
  line-height: 1.45;
  text-align: right;
}

.storm-method span {
  color: var(--ink-soft);
  font-weight: 650;
}

.slide-kicker {
  margin: 0 0 1.5vh;
  color: var(--teal);
  font-size: clamp(11px, 0.88vw, 18px);
  font-weight: 750;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.slide-coast {
  padding: 5.6% 5.5% 4.2%;
  background: #fff;
}

.coast-copy {
  position: absolute;
  top: 10.5%;
  right: 6.2%;
  z-index: 2;
  width: 34.5%;
}

.coast-copy h1 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(43px, 4.7vw, 92px);
  font-weight: 500;
  line-height: 0.94;
  letter-spacing: -0.055em;
}

.coast-copy h1 span {
  color: var(--teal);
  font-family: "Aptos", "Helvetica Neue", Arial, sans-serif;
  font-size: 0.25em;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.coast-caption {
  margin: 1.5vh 0 0;
  color: var(--ink-soft);
  font-size: clamp(14px, 1.15vw, 22px);
}

.coverage-callout {
  position: relative;
  margin-top: 5.2vh;
  padding: 2.2vh 5.6vw 2.2vh 1.4vw;
  border-left: 5px solid var(--teal);
  background: #eef5f3;
}

.coverage-callout strong,
.coverage-callout span,
.coverage-callout b {
  display: block;
}

.coverage-callout strong {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(26px, 2.35vw, 46px);
  font-weight: 500;
  letter-spacing: -0.035em;
}

.coverage-callout span {
  margin-top: 0.6vh;
  color: var(--ink-soft);
  font-size: clamp(10px, 0.78vw, 16px);
}

.coverage-callout b {
  position: absolute;
  top: 50%;
  right: 1.3vw;
  color: var(--teal);
  font-size: clamp(23px, 2vw, 39px);
  transform: translateY(-50%);
}

.site-callouts {
  display: grid;
  margin-top: 3.5vh;
  grid-template-columns: 1fr 1fr;
  gap: 1.2vw;
}

.site-callout {
  margin-top: 0;
  padding: 0.25vh 0 0.5vh 1vw;
  border-left: 4px solid var(--coral);
}

.site-callout + .site-callout {
  margin-top: 0;
}

.site-callout-b {
  border-left-color: var(--gold);
}

.site-callout span,
.site-callout strong,
.site-callout small {
  display: block;
}

.site-callout span {
  color: var(--coral);
  font-size: clamp(10px, 0.72vw, 15px);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.site-callout-b span {
  color: #a36c00;
}

.site-callout strong {
  margin-top: 0.55vh;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(20px, 1.55vw, 30px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.035em;
}

.site-callout small {
  margin-top: 0.55vh;
  color: var(--ink-soft);
  font-size: clamp(9px, 0.64vw, 13px);
  line-height: 1.35;
}

.coast-map-wrap {
  position: absolute;
  top: 3.6%;
  bottom: 4.4%;
  left: 3.7%;
  width: 56%;
}

.coast-wexford-stage,
.coast-wexford-copy,
.coast-source-wexford {
  transition: opacity 360ms ease, transform 520ms cubic-bezier(0.22, 1, 0.36, 1);
}

.coast-national-stage {
  position: absolute;
  top: 3.2%;
  bottom: 3.8%;
  left: 4.2%;
  width: 54%;
  opacity: 0;
  transform: scale(2.7);
  transform-origin: 71.8% 77.7%;
  visibility: hidden;
}

.ireland-map {
  width: 100%;
  height: 100%;
  overflow: visible;
}

.ireland-coast {
  fill: none;
  stroke: #78918d;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.35;
  vector-effect: non-scaling-stroke;
}

.ireland-coast-ni {
  stroke: #8ba09c;
}

.ireland-wexford-shape {
  fill: rgb(219 62 112 / 0.2);
  fill-rule: evenodd;
  stroke: var(--coral);
  stroke-width: 2.3;
  vector-effect: non-scaling-stroke;
}

.ireland-wexford-pulse {
  fill: rgb(219 62 112 / 0.13);
  stroke: var(--coral);
  stroke-width: 1.2;
  vector-effect: non-scaling-stroke;
}

.ireland-wexford-point {
  fill: var(--coral);
  stroke: #fff;
  stroke-width: 2.5;
  vector-effect: non-scaling-stroke;
}

.ireland-wexford-label {
  fill: var(--coral);
  font-family: "Aptos", "Helvetica Neue", Arial, sans-serif;
  font-size: 16px;
  font-weight: 850;
  letter-spacing: 0.13em;
}

.coast-national-copy {
  position: absolute;
  top: 15.5%;
  right: 6.2%;
  z-index: 3;
  width: 35%;
  opacity: 0;
  transform: translateY(18px);
  visibility: hidden;
}

.coast-national-copy h2 {
  margin: 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(52px, 5.6vw, 108px);
  font-weight: 500;
  line-height: 0.88;
  letter-spacing: -0.06em;
}

.coast-national-copy > p:not(.slide-kicker) {
  margin: 5vh 0 0;
  color: var(--ink-soft);
  font-size: clamp(18px, 1.6vw, 31px);
  line-height: 1.38;
}

.coast-national-copy strong {
  display: block;
  margin-top: 7vh;
  padding-top: 2.4vh;
  border-top: 1px solid var(--line);
  color: var(--coral);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(22px, 2vw, 39px);
  font-weight: 500;
  line-height: 1.1;
}

.coast-source-national {
  opacity: 0;
  visibility: hidden;
}

.slide-coast.is-national .coast-wexford-stage,
.slide-coast.is-national .coast-wexford-copy,
.slide-coast.is-national .coast-source-wexford {
  opacity: 0;
  transform: scale(0.76);
  visibility: hidden;
}

.slide-coast.is-active.is-national .coast-national-stage {
  visibility: visible;
  animation: ireland-zoom-out 1.35s cubic-bezier(0.16, 1, 0.3, 1) both;
}

.slide-coast.is-active.is-national .coast-national-copy {
  visibility: visible;
  animation: national-copy-in 560ms ease-out 880ms both;
}

.slide-coast.is-national .coast-source-national {
  opacity: 1;
  visibility: visible;
  transition: opacity 360ms ease 900ms;
}

.slide-coast.is-active.is-national .ireland-wexford-pulse {
  animation: wexford-pulse 1.6s ease-out 1.2s both;
}

@keyframes ireland-zoom-out {
  from {
    opacity: 0.22;
    transform: scale(2.7);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes national-copy-in {
  from {
    opacity: 0;
    transform: translateY(18px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes wexford-pulse {
  from {
    opacity: 0;
    transform: scale(0.4);
    transform-origin: center;
  }
  45% { opacity: 1; }
  to {
    opacity: 0.45;
    transform: scale(1);
    transform-origin: center;
  }
}

.wexford-map {
  width: 100%;
  height: 100%;
  overflow: visible;
}

.map-county {
  fill: #eef4f1;
  fill-rule: evenodd;
  stroke: #96aba7;
  stroke-width: 1.25;
  opacity: 0;
}

.map-coastline {
  fill: none;
  stroke: var(--teal);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.35;
  vector-effect: non-scaling-stroke;
  opacity: 0;
}

.slide-coast.is-active .map-county {
  animation: map-fill 700ms ease-out 180ms both;
}

.slide-coast.is-active .map-coastline {
  animation: map-line 900ms ease-out 520ms both;
}

@keyframes map-fill {
  to { opacity: 1; }
}

@keyframes map-line {
  to { opacity: 0.95; }
}

.map-site line {
  stroke: var(--gold);
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
}

.map-site circle {
  fill: var(--gold);
  stroke: #fff;
  stroke-width: 3;
  vector-effect: non-scaling-stroke;
}

.map-site.site-a circle {
  fill: var(--coral);
}

.map-site text {
  fill: var(--ink);
  font-family: "Aptos", "Helvetica Neue", Arial, sans-serif;
  font-size: 18px;
  font-weight: 750;
}

.map-site .map-site-note {
  fill: var(--quiet);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
}

.map-site .map-site-letter {
  fill: #fff;
  font-size: 15px;
  font-weight: 800;
  text-anchor: middle;
  dominant-baseline: central;
}

.map-site-marker-only circle {
  stroke-width: 4;
  filter: drop-shadow(0 4px 6px rgb(9 47 48 / 0.2));
}

.map-site {
  opacity: 0;
  transform: translateY(8px);
}

.slide-coast.is-active .map-site {
  animation: map-site-in 380ms ease-out both;
}

.slide-coast.is-active .map-site:nth-of-type(1) { animation-delay: 1.25s; }
.slide-coast.is-active .map-site:nth-of-type(2) { animation-delay: 1.5s; }

@keyframes map-site-in {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.coast-source {
  position: absolute;
  right: 5.5%;
  bottom: 2.6%;
  margin: 0;
  color: var(--quiet);
  font-size: clamp(8px, 0.58vw, 12px);
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.slide-impact {
  background: var(--teal-dark);
  color: #fff;
}

.impact-lead {
  position: absolute;
  inset: 0 43% 0 0;
  overflow: hidden;
  padding: 7% 5.8%;
  background: var(--teal-dark);
}

.impact-lead::after {
  position: absolute;
  right: -2vw;
  bottom: -17vh;
  color: rgb(255 255 255 / 0.045);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 38vw;
  line-height: 0.78;
  content: "4";
}

.impact-lead > * {
  position: relative;
  z-index: 1;
}

.impact-kicker {
  color: #f1bd55;
}

.impact-label {
  display: block;
  margin-top: 8vh;
  color: #9ed1cd;
  font-size: clamp(10px, 0.78vw, 16px);
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.impact-lead h1 {
  margin: 2.1vh 0 0;
  color: #fff;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(78px, 9.3vw, 180px);
  font-weight: 500;
  line-height: 0.72;
  letter-spacing: -0.07em;
}

.impact-lede {
  max-width: 28ch;
  margin: 5.5vh 0 0;
  color: #c2d6d3;
  font-size: clamp(15px, 1.25vw, 24px);
  line-height: 1.42;
}

.impact-facts {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 57%;
  display: grid;
  grid-template-rows: 1fr 1fr;
  background: #f4efe6;
  color: var(--ink);
}

.impact-facts article {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 4vh 5vw;
}

.impact-facts article + article {
  border-top: 1px solid #d8cfc0;
}

.impact-facts strong,
.impact-facts span {
  display: block;
}

.impact-facts strong {
  color: var(--coral);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(29px, 2.7vw, 52px);
  font-weight: 500;
  line-height: 0.92;
  letter-spacing: -0.045em;
}

.impact-facts strong b {
  font-size: 2.05em;
  font-weight: 500;
}

.impact-facts span {
  max-width: 22ch;
  margin-top: 2.2vh;
  color: var(--ink-soft);
  font-size: clamp(14px, 1.12vw, 22px);
  line-height: 1.35;
}

.impact-source {
  position: absolute;
  right: 3.5%;
  bottom: 3.2%;
  z-index: 3;
  max-width: 35%;
  margin: 0;
  color: #84796b;
  font-size: clamp(8px, 0.58vw, 12px);
  line-height: 1.4;
  text-align: right;
}

.slide-question {
  background: #fff;
}

.question-map {
  position: absolute;
  top: -9%;
  right: 2%;
  width: 57%;
  height: 117%;
  opacity: 0.3;
}

.warning-copy {
  position: absolute;
  top: 12%;
  left: 7%;
  margin: 0;
  color: var(--ink-soft);
  font-size: clamp(18px, 1.6vw, 31px);
}

.slide-question h1 {
  position: absolute;
  top: 29%;
  left: 6.5%;
  z-index: 2;
  margin: 0;
  color: var(--coral);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(85px, 10.5vw, 204px);
  font-weight: 500;
  line-height: 0.9;
  letter-spacing: -0.07em;
  text-transform: uppercase;
}

.question-distance {
  position: absolute;
  bottom: 10%;
  left: 7%;
  margin: 0;
  color: var(--teal);
  font-size: clamp(16px, 1.32vw, 26px);
  font-weight: 750;
}

.slide-question.is-active .question-map .map-county,
.slide-question.is-active .question-map .map-coastline,
.slide-close.is-active .close-map .map-county,
.slide-close.is-active .close-map .map-coastline {
  animation: map-line 900ms ease-out 260ms both;
}

.slide-ecosystem {
  padding: 4.7% 5.4%;
  background: #fff;
}

.ecosystem-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 4vw;
}

.ecosystem-heading h1 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(45px, 4.45vw, 86px);
  font-weight: 500;
  line-height: 0.94;
  letter-spacing: -0.055em;
}

.manus-credit {
  display: flex;
  align-items: center;
  gap: 0.9vw;
  margin-top: 0.4vh;
  color: var(--quiet);
  font-size: clamp(9px, 0.7vw, 14px);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
}

.manus-credit img {
  width: clamp(96px, 7.7vw, 148px);
  height: clamp(42px, 3.4vw, 65px);
  object-fit: cover;
  object-position: center;
}

.ecosystem-map {
  position: absolute;
  right: 5.4%;
  bottom: 11.5%;
  left: 5.4%;
  display: grid;
  grid-template-columns: minmax(0, 42%) minmax(72px, 8%) minmax(210px, 22%) minmax(60px, 6%) minmax(0, 22%);
  align-items: stretch;
  min-height: 52vh;
  overflow: visible;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: linear-gradient(90deg, #f6f8f7 0 50%, #edf5f3 50% 78%, #fff 78%);
}

.ecosystem-sources {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-auto-rows: 1fr;
  gap: 0;
  padding: 1.1vh 1.2vw 1.1vh 0;
}

.source-stream {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  padding: 1.05vh 1.15vw 1.05vh 1.45vw;
  border-bottom: 1px solid rgba(18, 61, 61, 0.11);
}

.source-stream:nth-child(odd) {
  border-right: 1px solid rgba(18, 61, 61, 0.11);
}

.source-stream::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: 5px;
  height: 58%;
  border-radius: 3px;
  background: var(--teal);
  transform: translateY(-50%);
}

.source-stream:nth-child(3n + 2)::before {
  background: var(--gold);
}

.source-stream:nth-child(3n)::before {
  background: var(--coral);
}

.source-stream strong {
  overflow: hidden;
  color: var(--ink);
  font-size: clamp(11px, 0.94vw, 18px);
  font-weight: 800;
  letter-spacing: -0.015em;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.source-stream small {
  display: block;
  margin-top: 0.38vh;
  color: var(--ink-soft);
  font-size: clamp(8px, 0.65vw, 12px);
  line-height: 1.25;
}

.evidence-funnel {
  position: relative;
  overflow: hidden;
}

.evidence-funnel::before {
  content: "";
  position: absolute;
  inset: 0;
  clip-path: polygon(0 0, 100% 39%, 100% 61%, 0 100%);
  background: linear-gradient(90deg, rgba(17, 139, 132, 0.13), rgba(17, 139, 132, 0.34));
}

.evidence-funnel span {
  position: absolute;
  left: 0;
  width: 110%;
  height: 2px;
  background: var(--teal);
  transform-origin: left center;
}

.evidence-funnel span:nth-child(1) { top: 12%; transform: rotate(18deg); }
.evidence-funnel span:nth-child(2) { top: 30%; transform: rotate(9deg); background: var(--gold); }
.evidence-funnel span:nth-child(3) { top: 50%; transform: rotate(0deg); }
.evidence-funnel span:nth-child(4) { top: 70%; transform: rotate(-9deg); background: var(--coral); }
.evidence-funnel span:nth-child(5) { top: 88%; transform: rotate(-18deg); }

.coastlens-wedge {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: 3.7vh 0;
  padding: 3vh 2vw;
  border-radius: 50%;
  background: var(--teal-dark);
  color: #fff;
  text-align: center;
  box-shadow: 0 1.5vh 3vw rgba(8, 60, 59, 0.16);
}

.coastlens-wedge span,
.coastlens-wedge strong,
.coastlens-wedge small {
  display: block;
}

.coastlens-wedge span {
  color: #f1bd55;
  font-size: clamp(8px, 0.62vw, 13px);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.coastlens-wedge strong {
  margin-top: 2.3vh;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(21px, 1.75vw, 34px);
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: -0.04em;
}

.coastlens-wedge small {
  margin-top: 2.1vh;
  color: #b8cfcc;
  font-size: clamp(8px, 0.63vw, 12px);
  line-height: 1.45;
}

.engine-flow {
  position: relative;
  overflow: hidden;
}

.engine-flow span {
  position: absolute;
  top: 50%;
  right: 0;
  left: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--teal), var(--coral));
  transform: translateY(-50%);
}

.engine-flow span::after {
  content: "";
  position: absolute;
  top: 50%;
  right: 0;
  width: 13px;
  height: 13px;
  border-top: 3px solid var(--coral);
  border-right: 3px solid var(--coral);
  transform: translateY(-50%) rotate(45deg);
}

.ecosystem-outcome {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  padding: 3.2vh 0 3.2vh 1.5vw;
  background: #fff;
}

.ecosystem-outcome img {
  width: min(15vw, 286px);
  max-height: 16vh;
  object-fit: contain;
  object-position: left center;
}

.ecosystem-outcome p {
  margin: 4.5vh 0 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(20px, 1.65vw, 32px);
  line-height: 1.05;
  letter-spacing: -0.03em;
}

.ecosystem-outcome p strong {
  color: var(--coral);
  font-weight: 500;
}

.ecosystem-outcome small {
  max-width: 27ch;
  margin-top: 2.8vh;
  color: var(--ink-soft);
  font-size: clamp(8px, 0.65vw, 12px);
  line-height: 1.45;
}

.ecosystem-foot {
  position: absolute;
  right: 5.4%;
  bottom: 4.5%;
  left: 5.4%;
  margin: 0;
  color: var(--quiet);
  font-size: clamp(9px, 0.68vw, 13px);
  text-align: center;
}

.slide-ecosystem.is-active .source-stream {
  animation: ecosystem-source-in 520ms ease-out both;
}

.slide-ecosystem.is-active .source-stream:nth-child(2) { animation-delay: 70ms; }
.slide-ecosystem.is-active .source-stream:nth-child(3) { animation-delay: 140ms; }
.slide-ecosystem.is-active .source-stream:nth-child(4) { animation-delay: 210ms; }
.slide-ecosystem.is-active .source-stream:nth-child(5) { animation-delay: 280ms; }
.slide-ecosystem.is-active .source-stream:nth-child(6) { animation-delay: 350ms; }
.slide-ecosystem.is-active .source-stream:nth-child(7) { animation-delay: 420ms; }
.slide-ecosystem.is-active .source-stream:nth-child(8) { animation-delay: 490ms; }
.slide-ecosystem.is-active .source-stream:nth-child(9) { animation-delay: 560ms; }

.slide-ecosystem.is-active .evidence-funnel {
  animation: ecosystem-funnel-in 650ms ease-out 620ms both;
}

.slide-ecosystem.is-active .coastlens-wedge {
  animation: ecosystem-engine-in 560ms cubic-bezier(0.2, 0.85, 0.25, 1.15) 930ms both;
}

.slide-ecosystem.is-active .engine-flow {
  animation: ecosystem-funnel-in 440ms ease-out 1280ms both;
}

.slide-ecosystem.is-active .ecosystem-outcome {
  animation: ecosystem-output-in 560ms ease-out 1500ms both;
}

@keyframes ecosystem-source-in {
  from { opacity: 0; transform: translateX(-1.2vw); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes ecosystem-funnel-in {
  from { opacity: 0; transform: scaleX(0); transform-origin: left center; }
  to { opacity: 1; transform: scaleX(1); transform-origin: left center; }
}

@keyframes ecosystem-engine-in {
  from { opacity: 0; transform: scale(0.76); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes ecosystem-output-in {
  from { opacity: 0; transform: translateX(1.1vw); }
  to { opacity: 1; transform: translateX(0); }
}

.slide-landscape {
  padding: 5.5% 5.8% 4.2%;
  background: #fff;
}

.landscape-heading h1 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(54px, 5.8vw, 112px);
  font-weight: 500;
  line-height: 0.92;
  letter-spacing: -0.06em;
}

.source-groups {
  position: absolute;
  bottom: 12%;
  left: 5.8%;
  display: grid;
  width: 57%;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.source-groups article {
  min-height: 34vh;
  padding: 3.4vh 2.1vw 3vh 0;
}

.source-groups article + article {
  padding-left: 2.1vw;
  border-left: 1px solid var(--line);
}

.source-groups span,
.source-groups strong,
.source-groups small {
  display: block;
}

.source-groups span {
  margin-bottom: 3.2vh;
  color: var(--teal);
  font-size: clamp(9px, 0.72vw, 15px);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.source-groups strong {
  margin-top: 1.35vh;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(20px, 1.65vw, 33px);
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -0.025em;
}

.source-groups small {
  margin-top: 4.2vh;
  color: var(--quiet);
  font-size: clamp(10px, 0.75vw, 15px);
  line-height: 1.5;
}

.landscape-gap {
  position: absolute;
  top: 14%;
  right: 5.8%;
  bottom: 12%;
  width: 28%;
  padding: 5.2vh 2.4vw;
  background: var(--teal-dark);
  color: #fff;
}

.landscape-gap > span {
  color: #f1bd55;
  font-size: clamp(10px, 0.76vw, 15px);
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.landscape-gap strong {
  display: block;
  margin-top: 8vh;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(32px, 2.8vw, 54px);
  font-weight: 500;
  line-height: 0.96;
  letter-spacing: -0.05em;
}

.landscape-gap p {
  position: absolute;
  right: 2.4vw;
  bottom: 5vh;
  left: 2.4vw;
  margin: 0;
  color: #b8cfcc;
  font-size: clamp(13px, 1.05vw, 21px);
  line-height: 1.42;
}

.landscape-source {
  position: absolute;
  bottom: 4.2%;
  left: 5.8%;
  margin: 0;
  color: var(--quiet);
  font-size: clamp(8px, 0.58vw, 12px);
}

.slide-definition {
  padding: 5.5% 5.8%;
  background: var(--teal-dark);
  color: #fff;
}

.definition-heading .slide-kicker {
  color: #9ed1cd;
}

.definition-heading h1 {
  margin: 0;
  color: #fff;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(48px, 5vw, 97px);
  font-weight: 500;
  line-height: 0.94;
  letter-spacing: -0.055em;
}

.engine-bridge {
  position: absolute;
  right: 5.8%;
  bottom: 17%;
  left: 5.8%;
  display: grid;
  grid-template-columns: 0.9fr auto 1.18fr auto 0.92fr;
  align-items: stretch;
  gap: 1.45vw;
}

.engine-arrow {
  align-self: center;
  color: #6e9e9a;
  font-size: clamp(25px, 2.3vw, 44px);
  font-style: normal;
}

.engine-inputs,
.engine-core,
.engine-outputs {
  min-height: 26vh;
  padding: 2.4vh 1.55vw;
  background: rgb(255 255 255 / 0.07);
}

.engine-inputs {
  border-top: 5px solid var(--teal);
}

.engine-core {
  border: 1px solid rgb(241 189 85 / 0.55);
  border-top: 5px solid var(--gold);
  background: rgb(255 255 255 / 0.12);
}

.engine-outputs {
  border-top: 5px solid var(--coral);
}

.engine-inputs > span,
.engine-core > span,
.engine-outputs > span {
  display: block;
  color: #91b8b5;
  font-size: clamp(9px, 0.7vw, 14px);
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.engine-inputs p {
  margin: 1.45vh 0 0;
  color: #fff;
  font-size: clamp(12px, 0.94vw, 18px);
}

.engine-core strong,
.engine-outputs strong {
  display: block;
  color: #fff;
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: -0.025em;
}

.engine-core strong {
  margin-top: 1.3vh;
  font-size: clamp(20px, 1.65vw, 32px);
}

.engine-core small {
  display: block;
  margin-top: 1.8vh;
  color: #f1bd55;
  font-size: clamp(9px, 0.7vw, 14px);
  font-weight: 750;
}

.engine-outputs strong {
  margin-top: 2.1vh;
  font-size: clamp(18px, 1.4vw, 27px);
}

.definition-principle {
  position: absolute;
  right: 5.8%;
  bottom: 5.5%;
  left: 5.8%;
  margin: 0;
  color: #b8cfcc;
  font-size: clamp(14px, 1.2vw, 23px);
  text-align: center;
}

.definition-principle strong {
  color: #fff;
}

/* Slides 4–6: audited baseline → documented consequence → CoastLens layer. */
.slide-coast {
  padding: 0;
  background: #fff;
}

.slide-coast .coast-map-wrap {
  position: absolute;
  top: 2.8%;
  bottom: 3.8%;
  left: 2.5%;
  width: 49%;
}

.coast-story {
  position: absolute;
  top: 8.5%;
  right: 5.8%;
  width: 43.5%;
}

.coast-story h1 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(43px, 4.35vw, 84px);
  font-weight: 500;
  line-height: 0.96;
  letter-spacing: -0.055em;
}

.coast-story h1 span {
  color: var(--coral);
}

.coast-intro {
  max-width: 39ch;
  margin: 2.6vh 0 0;
  color: var(--ink-soft);
  font-size: clamp(14px, 1.08vw, 21px);
  line-height: 1.45;
}

.coverage-meter {
  display: flex;
  height: clamp(12px, 1.2vh, 22px);
  margin-top: 4.2vh;
  overflow: hidden;
  border-radius: 999px;
  background: #edf1ef;
}

.coverage-meter span {
  display: block;
  height: 100%;
}

.coverage-supported {
  width: 40.1%;
  background: var(--teal);
}

.coverage-gap {
  width: 59.9%;
  background: #ecd1da;
}

.coverage-figures {
  display: grid;
  grid-template-columns: 0.92fr 1.08fr;
  margin-top: 2.2vh;
  border-bottom: 1px solid var(--line);
}

.coverage-figure {
  min-width: 0;
  padding: 1.2vh 1.3vw 2.3vh 0;
}

.coverage-figure + .coverage-figure {
  padding-left: 1.35vw;
  border-left: 1px solid var(--line);
}

.coverage-figure span,
.coverage-figure strong,
.coverage-figure small {
  display: block;
}

.coverage-figure span {
  color: var(--teal);
  font-size: clamp(9px, 0.68vw, 13px);
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.coverage-figure-gap span,
.coverage-figure-gap strong {
  color: var(--coral);
}

.coverage-figure strong {
  margin-top: 0.7vh;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(25px, 2.2vw, 42px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.04em;
}

.coverage-figure small {
  margin-top: 0.8vh;
  color: var(--ink-soft);
  font-size: clamp(8px, 0.62vw, 12px);
  line-height: 1.32;
}

.site-anchors {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.1vw;
  margin-top: 2.5vh;
}

.site-anchors p {
  display: flex;
  align-items: center;
  gap: 0.8vw;
  margin: 0;
}

.site-anchors b {
  display: grid;
  width: clamp(28px, 2.35vw, 45px);
  height: clamp(28px, 2.35vw, 45px);
  flex: 0 0 auto;
  place-items: center;
  border-radius: 50%;
  background: var(--coral);
  color: #fff;
  font-size: clamp(11px, 0.78vw, 15px);
}

.site-anchors p + p b {
  background: var(--gold);
  color: var(--ink);
}

.site-anchors span,
.site-anchors strong,
.site-anchors small {
  display: block;
}

.site-anchors strong {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(16px, 1.22vw, 24px);
  font-weight: 500;
  line-height: 1;
}

.site-anchors small {
  margin-top: 0.4vh;
  color: var(--quiet);
  font-size: clamp(8px, 0.58vw, 11px);
}

.slide-coast .coast-source {
  right: 5.8%;
  bottom: 2.8%;
}

.slide-impact {
  background: var(--teal-dark);
  color: #fff;
}

.impact-story {
  position: absolute;
  inset: 0 39% 0 0;
  padding: 6.5% 5.8% 5.2%;
}

.impact-overline {
  margin: 5.7vh 0 0;
  color: #9ed1cd;
  font-size: clamp(10px, 0.78vw, 15px);
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.impact-story h1 {
  max-width: 10.5ch;
  margin: 1.8vh 0 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(52px, 5.4vw, 104px);
  font-weight: 500;
  line-height: 0.9;
  letter-spacing: -0.06em;
}

.impact-story blockquote {
  max-width: 47ch;
  margin: 5vh 0 0;
  padding-left: 1.3vw;
  border-left: 4px solid var(--gold);
  color: #d8e5e2;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(14px, 1.15vw, 22px);
  line-height: 1.42;
}

.impact-attribution {
  max-width: 55ch;
  margin: 1.5vh 0 0 1.55vw;
  color: #8fb4b1;
  font-size: clamp(8px, 0.62vw, 12px);
  line-height: 1.4;
}

.impact-signal {
  position: absolute;
  inset: 0 0 0 61%;
  overflow: hidden;
  background: #f4efe6;
  color: var(--ink);
}

.impact-road-number {
  position: absolute;
  top: 3.5%;
  right: 6.5%;
  color: #ead1da;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(130px, 15vw, 290px);
  line-height: 1;
  letter-spacing: -0.08em;
}

.impact-road {
  position: absolute;
  top: 39%;
  right: 10%;
  left: 10%;
  height: 18px;
  transform: rotate(-4deg);
}

.impact-road i,
.impact-road b {
  position: absolute;
  top: 0;
  height: 100%;
  border-top: 4px solid var(--coral);
  border-bottom: 4px solid var(--coral);
}

.impact-road i {
  left: 0;
  width: 47%;
}

.impact-road b {
  right: 0;
  width: 38%;
  transform: translateY(9px) rotate(5deg);
}

.impact-road::before,
.impact-road::after {
  position: absolute;
  z-index: 2;
  width: 14%;
  height: 4px;
  background: var(--teal-dark);
  content: "";
}

.impact-road::before {
  top: 2px;
  left: 47%;
  transform: rotate(43deg);
}

.impact-road::after {
  top: 15px;
  left: 51%;
  transform: rotate(-38deg);
}

.impact-stat {
  position: absolute;
  right: 10%;
  left: 10%;
  padding-top: 2.1vh;
  border-top: 1px solid #d8cfc0;
}

.impact-stat-loss { top: 55%; }
.impact-stat-homes { top: 72.5%; }

.impact-stat strong,
.impact-stat span {
  display: block;
}

.impact-stat strong {
  color: var(--coral);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(29px, 2.65vw, 51px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.045em;
}

.impact-stat span {
  margin-top: 0.7vh;
  color: var(--ink-soft);
  font-size: clamp(11px, 0.85vw, 17px);
}

.slide-impact .impact-source {
  right: 3.9%;
  bottom: 3.2%;
  max-width: 31%;
}

.slide-ecosystem {
  padding: 4.8% 5.5% 4.2%;
  background: #fff;
}

.ecosystem-heading h1 {
  font-size: clamp(42px, 4.2vw, 81px);
}

.ecosystem-heading h1 em {
  color: var(--coral);
  font-style: normal;
}

.intelligence-flow {
  position: absolute;
  right: 5.5%;
  bottom: 10.5%;
  left: 5.5%;
  display: grid;
  min-height: 55%;
  grid-template-columns: 54% 46%;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.evidence-families {
  display: grid;
  grid-template-rows: repeat(3, 1fr);
  padding-right: 2.5vw;
}

.evidence-families article {
  position: relative;
  display: grid;
  grid-template-columns: 9% 42% 49%;
  align-items: center;
  gap: 0;
  min-width: 0;
  border-bottom: 1px solid var(--line);
}

.evidence-families article:last-child {
  border-bottom: 0;
}

.evidence-families article > span {
  color: var(--coral);
  font-size: clamp(9px, 0.68vw, 13px);
  font-weight: 850;
  letter-spacing: 0.1em;
}

.evidence-families article > strong {
  padding-right: 1vw;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(18px, 1.45vw, 28px);
  font-weight: 500;
  line-height: 1.05;
}

.evidence-families article > p {
  margin: 0;
  color: var(--ink-soft);
  font-size: clamp(10px, 0.8vw, 15px);
  line-height: 1.35;
}

.evidence-families article > small {
  position: absolute;
  right: 0;
  bottom: 1.2vh;
  color: var(--quiet);
  font-size: clamp(7px, 0.52vw, 10px);
}

.intelligence-core {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 4vh 3.1vw;
  background: #edf5f3;
}

.intelligence-core::before {
  position: absolute;
  top: 50%;
  left: -15px;
  width: 30px;
  height: 30px;
  border-top: 3px solid var(--teal);
  border-right: 3px solid var(--teal);
  background: #edf5f3;
  content: "";
  transform: translateY(-50%) rotate(45deg);
}

.intelligence-core img {
  width: min(15vw, 280px);
  max-height: 12vh;
  object-fit: contain;
  object-position: left center;
}

.intelligence-core > p {
  margin: 1.35vh 0 0;
  padding-left: 1vw;
  border-left: 3px solid var(--teal);
  color: var(--ink-soft);
  font-size: clamp(11px, 0.88vw, 17px);
  line-height: 1.35;
}

.intelligence-core > p strong {
  color: var(--ink);
}

.local-question {
  margin-top: 2.5vh;
  padding: 2vh 1.4vw;
  background: var(--teal-dark);
  color: #fff;
}

.local-question span,
.local-question strong {
  display: block;
}

.local-question span {
  color: #f1bd55;
  font-size: clamp(8px, 0.59vw, 11px);
  font-weight: 800;
  letter-spacing: 0.13em;
  text-transform: uppercase;
}

.local-question strong {
  max-width: 26ch;
  margin-top: 0.8vh;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(16px, 1.32vw, 25px);
  font-weight: 500;
  line-height: 1.2;
}

.ecosystem-foot {
  right: 5.5%;
  bottom: 4.5%;
  left: 5.5%;
  color: var(--ink-soft);
  text-align: left;
}

.ecosystem-foot strong {
  color: var(--teal);
}

.ecosystem-foot span {
  float: right;
  color: var(--quiet);
}

.slide-ecosystem .ecosystem-heading h1 {
  max-width: 17ch;
  font-size: clamp(43px, 4.25vw, 82px);
  line-height: .96;
}

.evidence-pipeline {
  position: absolute;
  right: 5.4%;
  bottom: 11.5%;
  left: 5.4%;
  display: grid;
  grid-template-columns: minmax(0, 50%) minmax(190px, 20%) minmax(42px, 5%) minmax(220px, 25%);
  min-height: 53vh;
  overflow: hidden;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: #f7f9f7;
}

.source-field {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(4, 1fr);
  border-right: 1px solid var(--line);
}

.source-field article {
  display: grid;
  grid-template-columns: 48px 1fr;
  align-items: center;
  gap: .8vw;
  min-width: 0;
  padding: 1.15vh 1.15vw;
  border-right: 1px solid rgba(18, 61, 61, .11);
  border-bottom: 1px solid rgba(18, 61, 61, .11);
}

.source-field article:nth-child(3n) { border-right: 0; }
.source-field article:nth-last-child(-n + 3) { border-bottom: 0; }

.source-icon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 50%;
  background: #dcecea;
  color: var(--teal);
  font: 600 24px/1 Georgia, "Times New Roman", serif;
}

.source-field article:nth-child(3n + 2) .source-icon { background: #fbedd2; color: #ae7200; }
.source-field article:nth-child(3n) .source-icon { background: #f6dbe6; color: var(--coral); }
.source-icon-wave { padding-bottom: 5px; font-size: 31px; }
.source-icon-depth { padding-bottom: 4px; }

.source-field strong,
.source-field small { display: block; }

.source-field strong {
  overflow: hidden;
  color: var(--ink);
  font-size: clamp(12px, .92vw, 18px);
  line-height: 1.12;
  text-overflow: ellipsis;
  white-space: normal;
}

.source-field small {
  margin-top: .45vh;
  color: var(--ink-soft);
  font-size: clamp(8px, .61vw, 12px);
  line-height: 1.28;
}

.ai-evidence-layer {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 3vh 2vw;
  background: var(--teal-dark);
  color: #fff;
}

.ai-evidence-layer span {
  margin-bottom: 2.3vh;
  color: var(--gold);
  font-size: clamp(9px, .65vw, 13px);
  font-weight: 800;
  letter-spacing: .11em;
  text-transform: uppercase;
}

.ai-evidence-layer strong {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(22px, 1.75vw, 34px);
  font-weight: 500;
  line-height: 1.13;
}

.ai-evidence-layer small {
  max-width: 22ch;
  margin-top: 2.4vh;
  color: #b8cfcc;
  font-size: clamp(8px, .61vw, 12px);
  line-height: 1.45;
}

.pipeline-arrow {
  position: relative;
  background: linear-gradient(90deg, #f7f9f7, #fff);
}

.pipeline-arrow span {
  position: absolute;
  top: 50%;
  right: 7px;
  left: 0;
  height: 3px;
  background: var(--teal);
}

.pipeline-arrow span::after {
  content: "";
  position: absolute;
  top: 50%;
  right: -1px;
  width: 14px;
  height: 14px;
  border-top: 3px solid var(--teal);
  border-right: 3px solid var(--teal);
  transform: translateY(-50%) rotate(45deg);
}

.engine-destination {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  padding: 3vh 1.6vw;
  background: #fff;
}

.engine-destination img {
  width: min(17vw, 330px);
  max-height: 12vh;
  object-fit: contain;
  object-position: left center;
}

.engine-destination p {
  margin: 4vh 0 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(25px, 2.15vw, 42px);
  line-height: 1.02;
  letter-spacing: -.035em;
}

.engine-destination p strong { color: var(--teal); font-weight: 500; }

.engine-destination small {
  margin-top: 1.8vh;
  color: var(--quiet);
  font-size: clamp(9px, .68vw, 13px);
  font-weight: 750;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.slide-coast.is-active .coverage-meter,
.slide-coast.is-active .coverage-figures,
.slide-coast.is-active .site-anchors,
.slide-impact.is-active .impact-story blockquote,
.slide-impact.is-active .impact-stat,
.slide-ecosystem.is-active .evidence-families article,
.slide-ecosystem.is-active .intelligence-core {
  animation: narrative-rise 560ms ease-out both;
}

.slide-coast.is-active .coverage-figures { animation-delay: 180ms; }
.slide-coast.is-active .site-anchors { animation-delay: 330ms; }
.slide-impact.is-active .impact-story blockquote { animation-delay: 180ms; }
.slide-impact.is-active .impact-stat-loss { animation-delay: 320ms; }
.slide-impact.is-active .impact-stat-homes { animation-delay: 460ms; }
.slide-ecosystem.is-active .evidence-families article:nth-child(2) { animation-delay: 130ms; }
.slide-ecosystem.is-active .evidence-families article:nth-child(3) { animation-delay: 260ms; }
.slide-ecosystem.is-active .intelligence-core { animation-delay: 480ms; }

.slide-impact.is-active .impact-road i,
.slide-impact.is-active .impact-road b {
  animation: road-draw 760ms ease-out 180ms both;
}

@keyframes narrative-rise {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes road-draw {
  from { opacity: 0; transform: scaleX(0); transform-origin: left center; }
  to { opacity: 1; }
}

.slide-answer {
  background: var(--teal-dark);
  color: #fff;
}

.slide-gis-capability {
  padding: 4.5% 5.2% 4.2%;
  background: #f5f7f3;
}

.slide-gis-capability header {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  align-items: end;
  gap: 5vw;
  margin-bottom: 2.6vh;
}

.slide-gis-capability header h1 {
  margin: .5vh 0 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(36px, 4.1vw, 78px);
  font-weight: 500;
  line-height: .98;
  letter-spacing: -.045em;
}

.slide-gis-capability header > p {
  max-width: 34ch;
  margin: 0 0 .5vh;
  color: var(--ink-soft);
  font-size: clamp(16px, 1.35vw, 25px);
  line-height: 1.32;
}

.slide-gis-capability figure {
  position: relative;
  height: 72%;
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(20, 43, 39, .24);
  border-radius: 5px;
  background: #fff;
  box-shadow: 0 18px 44px rgba(20, 43, 39, .16);
}

.slide-gis-capability figure img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top center;
}

.slide-gis-capability figcaption {
  position: absolute;
  right: 1.2%;
  bottom: 2.2%;
  max-width: 46ch;
  padding: 1.1vh 1vw;
  border-left: 4px solid var(--gold);
  background: rgba(255, 255, 255, .94);
  color: var(--ink-soft);
  font-size: clamp(11px, .85vw, 16px);
  line-height: 1.35;
  box-shadow: 0 8px 24px rgba(20, 43, 39, .14);
}

.slide-gis-capability figcaption strong { color: var(--teal); }

.slide-product-reveal,
.slide-product-reveal.is-active {
  display: grid;
  grid-template-columns: 38% 62%;
  align-items: center;
  gap: 3.4vw;
  padding: 6.2% 5.5%;
  background: #fff;
}

.product-reveal-copy {
  min-width: 0;
}

.product-reveal-copy > img {
  display: block;
  width: min(22vw, 420px);
  max-height: 14vh;
  margin: 3.2vh 0 4.3vh;
  object-fit: contain;
  object-position: left center;
}

.product-reveal-copy h1 {
  margin: 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(36px, 3.55vw, 69px);
  font-weight: 500;
  line-height: .99;
  letter-spacing: -.047em;
}

.product-reveal-copy h1 span {
  color: var(--teal);
  white-space: nowrap;
}

.product-reveal-copy > p:last-child {
  max-width: 31ch;
  margin: 3.4vh 0 0;
  color: var(--ink-soft);
  font-size: clamp(16px, 1.28vw, 25px);
  line-height: 1.35;
}

.product-reveal-screen {
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(20, 43, 39, .24);
  border-radius: 5px;
  background: #fff;
  box-shadow: 0 18px 44px rgba(20, 43, 39, .17);
}

.product-reveal-screen img {
  display: block;
  width: 100%;
  height: auto;
}

.slide-layer-showcase {
  padding: 4.1% 5.2% 4%;
  background: #f7f8f4;
}

.slide-layer-showcase header {
  display: grid;
  grid-template-columns: 1.45fr 1fr;
  align-items: end;
  gap: 5vw;
}

.slide-layer-showcase header h1 {
  margin: .35vh 0 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(48px, 5vw, 96px);
  font-weight: 500;
  line-height: .94;
  letter-spacing: -.052em;
}

.slide-layer-showcase header > p {
  max-width: 35ch;
  margin: 0 0 .5vh;
  color: var(--ink-soft);
  font-size: clamp(16px, 1.35vw, 25px);
  line-height: 1.32;
}

.slide-layer-showcase figure {
  position: relative;
  width: min(100%, 1480px);
  margin: 2.7vh auto 0;
  overflow: hidden;
  border: 1px solid rgba(20, 43, 39, .24);
  border-radius: 5px;
  background: #fff;
  box-shadow: 0 18px 44px rgba(20, 43, 39, .16);
}

.slide-layer-showcase figure img {
  display: block;
  width: 100%;
  height: auto;
}

.slide-walkthrough {
  position: relative;
  padding-top: 3.7%;
}

.slide-walkthrough header {
  grid-template-columns: 1.34fr .9fr;
}

.slide-walkthrough header h1 {
  font-size: clamp(45px, 4.6vw, 88px);
}

.slide-walkthrough figure {
  margin-top: 2.1vh;
  transform-origin: 50% 12%;
}

.walkthrough-progress {
  --step: 1;
  position: absolute;
  top: 21.5%;
  right: 5.2%;
  left: 5.2%;
  z-index: 4;
  height: 3px;
  overflow: hidden;
  background: rgba(16, 55, 52, .16);
  pointer-events: none;
}

.walkthrough-progress::after {
  display: block;
  width: calc(var(--step) * 33.3333%);
  height: 100%;
  background: var(--teal);
  content: "";
  transform-origin: left center;
}

.slide-walkthrough.is-active header > div {
  animation: walkthrough-copy-in 420ms cubic-bezier(.2, .75, .25, 1) both;
}

.slide-walkthrough.is-active header > p {
  animation: walkthrough-copy-in 420ms cubic-bezier(.2, .75, .25, 1) 90ms both;
}

.slide-walkthrough.is-active figure {
  animation: walkthrough-screen-in 560ms cubic-bezier(.2, .75, .25, 1) 80ms both;
}

.slide-walkthrough.is-active .walkthrough-progress::after {
  animation: walkthrough-progress-in 620ms cubic-bezier(.2, .75, .25, 1) 160ms both;
}

@keyframes walkthrough-copy-in {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes walkthrough-screen-in {
  from { opacity: 0; transform: translateY(18px) scale(.992); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes walkthrough-progress-in {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

.slide-impact-map {
  padding: 3.7% 5.2% 3.5%;
  background: #f7f8f4;
}

.slide-impact-map > header {
  display: grid;
  grid-template-columns: 1.45fr 1fr;
  align-items: end;
  gap: 5vw;
}

.slide-impact-map > header h1 {
  margin: .35vh 0 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(48px, 5vw, 96px);
  font-weight: 500;
  line-height: .94;
  letter-spacing: -.052em;
}

.slide-impact-map > header > p {
  max-width: 35ch;
  margin: 0 0 .5vh;
  color: var(--ink-soft);
  font-size: clamp(16px, 1.35vw, 25px);
  line-height: 1.32;
}

.impact-product {
  width: min(100%, 1480px);
  height: min(66vh, 690px);
  margin: 2.5vh auto 0;
  overflow: hidden;
  border: 1px solid rgba(20, 43, 39, .25);
  border-radius: 7px;
  background: #fff;
  box-shadow: 0 18px 44px rgba(20, 43, 39, .16);
  color: #17342f;
}

.impact-product-bar {
  display: flex;
  align-items: center;
  gap: 1.2vw;
  height: 9.5%;
  padding: 0 1.2vw;
  border-bottom: 1px solid #d5ded9;
  font: 500 clamp(10px, .75vw, 14px)/1.1 Arial, sans-serif;
}

.impact-product-bar strong { font-size: clamp(14px, 1vw, 19px); }
.impact-product-bar > span:not(.impact-event) { padding-left: 1.1vw; border-left: 1px solid #d5ded9; color: #1b7775; font-weight: 700; }
.impact-product-bar .impact-event { margin-left: auto; padding: .75em 1.1em; border: 1px solid #ccd9d4; border-radius: 5px; background: #f3f7f5; font-weight: 700; }
.impact-product-bar button, .impact-insight button { border: 0; border-radius: 5px; background: #1d7188; color: #fff; font: 700 clamp(10px, .68vw, 13px)/1 Arial, sans-serif; }
.impact-product-bar button { padding: .95em 1.25em; }

.impact-product-body { display: grid; grid-template-columns: minmax(0, 2.1fr) minmax(270px, .9fr); height: 84%; }
.impact-map-stage { position: relative; overflow: hidden; border-right: 1px solid #d5ded9; background: #dcebed; }
.impact-wexford-map { position: absolute; top: -4%; left: 8%; width: 72%; height: 112%; }
.impact-wexford-map .map-county { fill: #eef1e9; stroke: #b3c0bb; stroke-width: 1.5; opacity: 1; }
.impact-wexford-map .map-coastline { fill: none; stroke: #537d82; stroke-width: 4; opacity: .85; }
.impact-wexford-map .map-site line { stroke: #173f4a; stroke-width: 2; }
.impact-wexford-map .map-site circle { fill: #173f4a; stroke: #fff; stroke-width: 3; }
.impact-wexford-map .map-site text { fill: #173f4a; font: 700 18px Arial, sans-serif; }
.impact-wexford-map .map-site-letter { fill: #fff; font: 700 11px Arial, sans-serif; dominant-baseline: middle; text-anchor: middle; }
.impact-wexford-map .map-site { opacity: 1; transform: none; }
.impact-wexford-map .impact-band { fill: none; stroke-width: 12; stroke-linecap: round; stroke-linejoin: round; opacity: .94; }
.impact-wexford-map .impact-band.swash { stroke: #4d9689; }
.impact-wexford-map .impact-band.collision { stroke: #d49b2c; }
.impact-wexford-map .impact-band.overwash { stroke: #c75c2b; }
.impact-wexford-map .impact-band.inundation { stroke: #a72e37; }

.impact-map-tools { position: absolute; z-index: 3; top: 3%; left: 2.3%; display: flex; gap: .45vw; padding: .65vw; border: 1px solid #cfdbd6; border-radius: 6px; background: rgba(255,255,255,.94); box-shadow: 0 5px 14px rgba(20,43,39,.12); }
.impact-map-tools span { padding: .55em .72em; border: 1px solid #d7e0dc; border-radius: 4px; background: #f8faf8; font: 700 clamp(9px,.58vw,12px)/1 Arial,sans-serif; }
.impact-map-tools .is-active { border-color: #176d7c; background: #176d7c; color: #fff; }

.impact-legend { position: absolute; z-index: 3; left: 2.3%; bottom: 3.5%; display: flex; gap: 1vw; padding: .75vw 1vw; border: 1px solid #cfdbd6; border-radius: 6px; background: rgba(255,255,255,.94); font: 600 clamp(9px,.6vw,12px)/1 Arial,sans-serif; }
.impact-legend span { display: flex; align-items: center; gap: .35vw; }
.impact-legend i { width: .72vw; height: .72vw; min-width: 8px; min-height: 8px; border-radius: 50%; }
.impact-legend .swash { background: #4d9689; }.impact-legend .collision { background: #d49b2c; }.impact-legend .overwash { background: #c75c2b; }.impact-legend .inundation { background: #a72e37; }

.impact-insight { padding: 5.5% 6%; background: #fff; font-family: Arial, sans-serif; }
.impact-insight small { color: #68817a; font: 700 clamp(9px,.65vw,12px)/1.1 "Courier New",monospace; letter-spacing: .09em; }
.impact-insight h2 { margin: 1.4vh 0 1.2vh; font-size: clamp(22px,1.65vw,33px); line-height: 1.04; }
.impact-chip { display: inline-block; padding: .52em .75em; border-radius: 4px; background: #c75c2b; color: #fff; font: 800 clamp(10px,.7vw,13px)/1 Arial,sans-serif; letter-spacing: .06em; }
.impact-insight > p { margin: 1.7vh 0 2vh; color: #415853; font-size: clamp(13px,.9vw,17px); line-height: 1.4; }
.impact-insight dl { margin: 0; }
.impact-insight dl div { display: grid; grid-template-columns: 1fr 1.35fr; gap: .8vw; padding: 1.15vh 0; border-top: 1px solid #dce3df; }
.impact-insight dt { color: #70857f; font-size: clamp(10px,.68vw,13px); }
.impact-insight dd { margin: 0; font-size: clamp(11px,.73vw,14px); font-weight: 700; }
.impact-insight button { width: 100%; margin-top: 2vh; padding: 1em; }
.impact-product-foot { display: flex; align-items: center; height: 6.5%; padding: 0 1.2vw; background: #102f2c; color: #d9e8e3; font: 600 clamp(8px,.55vw,11px)/1 "Courier New",monospace; letter-spacing: .055em; }

.slide-data-assembly {
  padding: 3.7% 5.2% 3.5%;
  background: #f7f8f4;
}

.slide-data-assembly > header {
  display: grid;
  grid-template-columns: 1.45fr 1fr;
  align-items: end;
  gap: 5vw;
}

.slide-data-assembly > header h1 {
  margin: .35vh 0 0;
  color: var(--ink);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(48px, 5vw, 96px);
  font-weight: 500;
  line-height: .94;
  letter-spacing: -.052em;
}

.slide-data-assembly > header > p {
  max-width: 35ch;
  margin: 0 0 .5vh;
  color: var(--ink-soft);
  font-size: clamp(16px, 1.35vw, 25px);
  line-height: 1.32;
}

.assembly-product {
  width: min(100%, 1480px);
  height: min(66vh, 690px);
  margin: 2.5vh auto 0;
  overflow: hidden;
  border: 1px solid rgba(20,43,39,.25);
  border-radius: 7px;
  background: #fff;
  box-shadow: 0 18px 44px rgba(20,43,39,.16);
  color: #17342f;
}

.assembly-bar { display:flex; align-items:center; gap:1.2vw; height:9.5%; padding:0 1.2vw; border-bottom:1px solid #d5ded9; font:500 clamp(10px,.75vw,14px)/1.1 Arial,sans-serif; }
.assembly-bar strong { font-size:clamp(14px,1vw,19px); }
.assembly-bar > span:not(.assembly-event) { padding-left:1.1vw; border-left:1px solid #d5ded9; color:#1b7775; font-weight:700; }
.assembly-bar .assembly-event { margin-left:auto; padding:.75em 1.1em; border:1px solid #ccd9d4; border-radius:5px; background:#f3f7f5; font-weight:700; }
.assembly-bar button { padding:.95em 1.25em; border:0; border-radius:5px; background:#1d7188; color:#fff; font:700 clamp(10px,.68vw,13px)/1 Arial,sans-serif; }
.assembly-body { display:grid; grid-template-columns:minmax(235px,.72fr) minmax(0,2.28fr); height:84%; }
.assembly-progress { padding:5.5% 8%; border-right:1px solid #d5ded9; background:#edf4f1; }
.assembly-progress > small { color:#168d88; font:700 clamp(9px,.63vw,12px)/1 "Courier New",monospace; letter-spacing:.1em; }
.assembly-progress ol { margin:2.4vh 0 0; padding:0; list-style:none; }
.assembly-progress li { position:relative; display:grid; grid-template-columns:30px 1fr; gap:.8vw; min-height:8.5vh; color:#70817c; }
.assembly-progress li:not(:last-child)::after { content:""; position:absolute; top:29px; bottom:4px; left:14px; width:1px; background:#c6d4cf; }
.assembly-progress li b { display:grid; width:29px; height:29px; place-items:center; border:1px solid #aebfba; border-radius:50%; background:#fff; font:700 12px/1 Arial,sans-serif; }
.assembly-progress li span { padding-top:2px; font:700 clamp(11px,.78vw,15px)/1.15 Arial,sans-serif; }
.assembly-progress li span small { display:block; margin-top:.55vh; font:500 clamp(9px,.61vw,12px)/1.25 Arial,sans-serif; }
.assembly-progress li.complete b { border-color:#168d88; background:#168d88; color:#fff; }
.assembly-progress li.active { color:#17342f; }
.assembly-progress li.active b { border:3px solid #168d88; color:#168d88; }
.assembly-sources { padding:3.2% 3.5%; background:#fff; }
.assembly-heading { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:1.7vh; }
.assembly-heading small { color:#168d88; font:700 clamp(9px,.63vw,12px)/1 "Courier New",monospace; letter-spacing:.1em; }
.assembly-heading h2 { margin:.65vh 0 0; font:700 clamp(22px,1.7vw,34px)/1 Arial,sans-serif; }
.assembly-heading > span { padding:.65em .85em; border-radius:999px; background:#e5f1ef; color:#126966; font:700 clamp(9px,.62vw,12px)/1 Arial,sans-serif; }
.assembly-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.2vh .9vw; }
.assembly-grid article { display:grid; grid-template-columns:34px 1fr auto; align-items:center; gap:.75vw; min-height:8.1vh; padding:1.1vh .85vw; border:1px solid #d7e1dd; border-radius:6px; background:#f9fbfa; }
.assembly-grid article i { display:grid; width:31px; height:31px; place-items:center; border-radius:50%; background:#dcecea; color:#147d79; font:700 17px/1 Georgia,serif; font-style:normal; }
.assembly-grid article strong,.assembly-grid article span { display:block; }
.assembly-grid article strong { font:700 clamp(11px,.78vw,15px)/1.1 Arial,sans-serif; }
.assembly-grid article span { margin-top:.45vh; color:#657a74; font:500 clamp(9px,.62vw,12px)/1.2 Arial,sans-serif; }
.assembly-grid article em { color:#13736e; font:700 clamp(8px,.52vw,10px)/1 "Courier New",monospace; font-style:normal; letter-spacing:.05em; }
.assembly-grid .council-source { grid-column:1 / -1; border-color:#e1bd6a; background:#fffaf0; }
.assembly-grid .council-source i { background:#f3e3bb; color:#8d6113; }
.assembly-grid .council-source em { color:#946614; }
.engine-handoff { display:grid; grid-template-columns:.8fr auto 1.35fr auto .8fr; align-items:center; gap:.7vw; margin-top:1.45vh; padding-top:1.35vh; border-top:1px solid #dce3df; }
.engine-handoff > i { color:#d29622; font:700 clamp(17px,1.25vw,24px)/1 Georgia,serif; font-style:normal; }
.engine-handoff > div { min-width:0; padding:.9vh .75vw; border-radius:5px; }
.engine-handoff small,.engine-handoff strong,.engine-handoff span { display:block; }
.engine-handoff small { color:#56756e; font:700 clamp(7px,.46vw,9px)/1 "Courier New",monospace; letter-spacing:.08em; }
.engine-handoff strong { margin-top:.35vh; font:700 clamp(10px,.68vw,13px)/1.05 Arial,sans-serif; }
.engine-handoff span { margin-top:.35vh; color:#cfe3df; font:500 clamp(8px,.52vw,10px)/1.18 Arial,sans-serif; }
.handoff-input,.handoff-output { border:1px solid #cddbd6; background:#eef5f3; }
.handoff-engine { background:#0b4744; color:#fff; box-shadow:0 5px 14px rgba(11,71,68,.16); }
.handoff-engine small { color:#e4ad3a; }
.handoff-output { border-color:#dcaf55 !important; background:#fff8e8 !important; }
.assembly-foot { display:flex; align-items:center; height:6.5%; padding:0 1.2vw; background:#102f2c; color:#d9e8e3; font:600 clamp(8px,.55vw,11px)/1 "Courier New",monospace; letter-spacing:.055em; }

.slide-future-actions { padding:3.7% 5.2% 3.5%; background:#f7f8f4; }
.slide-future-actions > header { display:grid; grid-template-columns:1.45fr 1fr; align-items:end; gap:5vw; }
.slide-future-actions > header h1 { margin:.35vh 0 0; color:var(--ink); font-family:Georgia,"Times New Roman",serif; font-size:clamp(48px,5vw,96px); font-weight:500; line-height:.94; letter-spacing:-.052em; }
.slide-future-actions > header > p { max-width:35ch; margin:0 0 .5vh; color:var(--ink-soft); font-size:clamp(16px,1.35vw,25px); line-height:1.32; }
.future-action-product { width:min(100%,1480px); height:min(66vh,690px); margin:2.5vh auto 0; overflow:hidden; border:1px solid rgba(20,43,39,.25); border-radius:7px; background:#fff; box-shadow:0 18px 44px rgba(20,43,39,.16); color:#17342f; }
.future-action-bar { display:flex; align-items:center; gap:1.2vw; height:9.5%; padding:0 1.2vw; border-bottom:1px solid #d5ded9; font:500 clamp(10px,.75vw,14px)/1.1 Arial,sans-serif; }
.future-action-bar strong { font-size:clamp(14px,1vw,19px); }
.future-action-bar > span:not(.future-action-event) { padding-left:1.1vw; border-left:1px solid #d5ded9; color:#1b7775; font-weight:700; }
.future-action-event { margin-left:auto; padding:.75em 1.1em; border:1px solid #dfbd72; border-radius:5px; background:#fff8e9; font-weight:700; }
.future-action-bar button { padding:.95em 1.25em; border:0; border-radius:5px; background:#1d7188; color:#fff; font:700 clamp(10px,.68vw,13px)/1 Arial,sans-serif; }
.future-action-body { display:grid; grid-template-columns:minmax(0,1.75fr) minmax(330px,1fr); height:84%; }
.future-map-stage { position:relative; overflow:hidden; border-right:1px solid #d5ded9; background:linear-gradient(145deg,#e4f0ef,#d4e6e8); }
.future-map-stage .impact-wexford-map { top:-8%; left:9%; width:78%; height:118%; }
.future-map-stage .impact-wexford-map .impact-band { stroke-width:14; }
.future-map-tools { position:absolute; z-index:3; top:3%; left:2.3%; display:flex; gap:.45vw; padding:.65vw; border:1px solid #cfdbd6; border-radius:6px; background:rgba(255,255,255,.94); box-shadow:0 5px 14px rgba(20,43,39,.12); }
.future-map-tools span { padding:.55em .72em; border:1px solid #d7e0dc; border-radius:4px; background:#f8faf8; font:700 clamp(9px,.58vw,12px)/1 Arial,sans-serif; }
.future-map-tools .is-active { border-color:#176d7c; background:#176d7c; color:#fff; }
.future-map-key { position:absolute; z-index:3; left:2.3%; bottom:3.5%; display:grid; gap:.45vh; padding:.72vw .85vw; border:1px solid #cfdbd6; border-radius:5px; background:rgba(255,255,255,.94); color:#37534d; font:600 clamp(8px,.56vw,11px)/1.15 Arial,sans-serif; }
.future-map-key span { display:flex; align-items:center; gap:.42vw; }
.future-map-key b { display:grid; width:18px; height:18px; place-items:center; border-radius:50%; background:#173f4a; color:#fff; font-size:9px; }
.future-map-callout { position:absolute; z-index:4; right:3%; bottom:4%; width:31%; padding:1.25vw; border-left:5px solid #c75c2b; border-radius:5px; background:rgba(255,255,255,.96); box-shadow:0 8px 24px rgba(20,43,39,.15); font-family:Arial,sans-serif; }
.future-map-callout small,.future-map-callout strong,.future-map-callout span { display:block; }
.future-map-callout small { color:#c75c2b; font:800 clamp(8px,.54vw,10px)/1 "Courier New",monospace; letter-spacing:.08em; }
.future-map-callout strong { margin-top:.65vh; font-size:clamp(15px,1.1vw,21px); }
.future-map-callout span { margin-top:.55vh; color:#62766f; font-size:clamp(10px,.68vw,13px); }
.future-action-queue { padding:5.5% 6%; background:#fff; font-family:Arial,sans-serif; }
.future-action-queue > small { color:#168d88; font:700 clamp(9px,.63vw,12px)/1 "Courier New",monospace; letter-spacing:.1em; }
.future-action-queue h2 { margin:1.1vh 0 2vh; font-size:clamp(23px,1.75vw,35px); line-height:1; }
.future-action-queue ol { margin:0; padding:0; list-style:none; }
.future-action-queue li { display:grid; grid-template-columns:30px 1fr auto; gap:.75vw; align-items:start; padding:1.45vh 0; border-top:1px solid #dce3df; }
.future-action-queue li b { display:grid; width:29px; height:29px; place-items:center; border-radius:50%; background:#e8f2ef; color:#147771; font:700 12px/1 Arial,sans-serif; }
.future-action-queue li.priority-one b { background:#c75c2b; color:#fff; }
.future-action-queue li strong,.future-action-queue li span { display:block; }
.future-action-queue li strong { font-size:clamp(11px,.78vw,15px); line-height:1.18; }
.future-action-queue li span { margin-top:.5vh; color:#667a74; font-size:clamp(9px,.62vw,12px); line-height:1.3; }
.future-action-queue li em { padding:.5em .65em; border-radius:3px; background:#f0f5f3; color:#56716a; font:700 clamp(8px,.52vw,10px)/1 "Courier New",monospace; font-style:normal; }
.future-action-queue li.priority-one em { background:#f7e7df; color:#a94b25; }
.future-trace { margin-top:1.9vh; padding:1.3vh .9vw; border:1px solid #dfbd72; border-radius:5px; background:#fff8e9; }
.future-trace span,.future-trace strong { display:block; }
.future-trace span { color:#796949; font-size:clamp(9px,.61vw,12px); }
.future-trace strong { margin-top:.55vh; color:#17342f; font-size:clamp(10px,.7vw,14px); }
.future-action-foot { display:flex; align-items:center; height:6.5%; padding:0 1.2vw; background:#102f2c; color:#d9e8e3; font:600 clamp(8px,.55vw,11px)/1 "Courier New",monospace; letter-spacing:.055em; }

.layer-panel-focus {
  position: absolute;
  top: 17.2%;
  left: 0;
  width: 19%;
  height: 24.7%;
  box-sizing: border-box;
  border: 3px solid rgba(7, 137, 136, .82);
  background: rgba(7, 137, 136, .2);
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .5);
  pointer-events: none;
}

.replay-panel-focus {
  position: absolute;
  top: 40.3%;
  left: 0;
  width: 19%;
  height: 15.5%;
  box-sizing: border-box;
  border: 3px solid rgba(7, 137, 136, .82);
  background: rgba(7, 137, 136, .2);
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .5);
  pointer-events: none;
}

.slide-product-entry .entry-note { margin: 18px 0 0; color: var(--teal-pale); font-size: clamp(16px, 1.7vw, 24px); }
.product-entry-button { margin-top: 30px; padding: 14px 20px; border: 0; border-radius: 4px; background: var(--teal); color: #fff; font: 600 16px/1 "Aptos", "Helvetica Neue", sans-serif; cursor: pointer; }
.product-entry-button:hover, .product-entry-button:focus-visible { background: #0aa5a4; outline: 3px solid rgba(255,255,255,.65); outline-offset: 3px; }

.answer-input {
  position: absolute;
  inset: 0 0 58% 0;
  display: flex;
  align-items: center;
  padding-left: 7%;
  background: #d9e8e7;
  color: var(--ink);
}

.answer-input span {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(53px, 6.4vw, 124px);
  letter-spacing: -0.055em;
}

.answer-meets {
  position: absolute;
  top: 38.5%;
  right: 7%;
  z-index: 2;
  margin: 0;
  padding: 1.3vh 1.3vw;
  background: var(--gold);
  color: var(--ink);
  font-size: clamp(13px, 1.08vw, 21px);
  font-weight: 750;
}

.answer-output {
  position: absolute;
  right: 7%;
  bottom: 8.5%;
  left: 7%;
}

.answer-output .slide-kicker {
  color: #9ed1cd;
}

.answer-output h1 {
  margin: 0;
  color: #fff;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(55px, 6.7vw, 130px);
  font-weight: 500;
  line-height: 0.86;
  letter-spacing: -0.06em;
}

.slide-built {
  padding: 6.5% 6.2%;
  background: #fff;
}

.slide-built h1 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(48px, 5.2vw, 101px);
  font-weight: 500;
  letter-spacing: -0.055em;
}

.built-facts {
  position: absolute;
  right: 6.2%;
  bottom: 25%;
  left: 6.2%;
  display: grid;
  grid-template-columns: 0.72fr 1.08fr 1.08fr;
  align-items: end;
}

.built-facts p {
  margin: 0;
  padding-right: 2.7vw;
}

.built-facts p + p {
  padding-left: 2.7vw;
  border-left: 1px solid var(--line);
}

.built-facts strong,
.built-facts span {
  display: block;
}

.built-facts strong {
  color: var(--teal);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(55px, 6vw, 116px);
  font-weight: 500;
  line-height: 0.82;
  letter-spacing: -0.06em;
}

.built-facts span {
  max-width: 18ch;
  margin-top: 2.2vh;
  color: var(--ink-soft);
  font-size: clamp(14px, 1.1vw, 22px);
  line-height: 1.28;
}

.built-engine {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  display: flex;
  justify-content: space-between;
  margin: 0;
  padding: 3.4vh 6.2%;
  background: var(--gold);
  color: var(--ink);
  font-size: clamp(15px, 1.25vw, 24px);
  font-weight: 750;
}

.slide-before {
  padding: 7% 7.2%;
  background: #082f30;
  color: #fff;
}

.before-kicker {
  color: #9ed1cd;
}

.slide-before h1 {
  margin: 7vh 0 0;
  color: #fff;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(105px, 13vw, 252px);
  font-weight: 500;
  line-height: 0.72;
  letter-spacing: -0.075em;
}

.before-question,
.before-time {
  position: absolute;
  bottom: 15%;
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(27px, 2.8vw, 54px);
  line-height: 1.08;
}

.before-question {
  left: 7.2%;
  max-width: 11ch;
  color: #fff;
}

.before-time {
  right: 7.2%;
  max-width: 9ch;
  color: #f1bd55;
  text-align: right;
}

.story-status {
  position: absolute;
  right: 7.2%;
  bottom: 5%;
  left: 7.2%;
  margin: 0;
  color: #89afac;
  font-size: clamp(9px, 0.68vw, 13px);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.slide-engine {
  background: #f5f7f6;
}

.engine-copy {
  position: absolute;
  top: 10%;
  left: 6.2%;
  z-index: 2;
  width: 33%;
}

.engine-copy h1 {
  margin: 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(72px, 8vw, 155px);
  font-weight: 500;
  line-height: 0.9;
  letter-spacing: -0.065em;
}

.engine-equation {
  margin: 8vh 0 0;
  color: var(--coral);
  font-size: clamp(21px, 2vw, 39px);
  font-weight: 800;
  line-height: 1.35;
}

.engine-equation span {
  display: block;
}

.engine-note {
  max-width: 28ch;
  margin: 6vh 0 0;
  color: var(--ink-soft);
  font-size: clamp(13px, 1.05vw, 21px);
  line-height: 1.45;
}

.engine-profile {
  position: absolute;
  top: 8%;
  right: 4.5%;
  bottom: 8%;
  width: 58%;
  margin: 0;
  overflow: hidden;
  background: #fff;
  box-shadow: 0 2vh 5vh rgb(7 48 48 / 0.12);
}

.engine-profile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 58% center;
}

.engine-profile figcaption {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 1.25vh 1.2vw;
  background: rgb(4 39 39 / 0.9);
  color: #fff;
  font-size: clamp(9px, 0.68vw, 13px);
}

.slide-after {
  display: none;
  grid-template-columns: 1fr 1fr;
}

.slide-after.is-active {
  display: grid;
}

.after-before,
.after-after {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 8%;
}

.after-before {
  background: #dceeed;
  color: var(--ink);
}

.after-after {
  background: var(--teal-dark);
  color: #fff;
}

.after-before p,
.after-after p {
  margin: 0 0 4vh;
  font-size: clamp(13px, 1.1vw, 22px);
  font-weight: 800;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.after-before strong,
.after-after strong {
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(49px, 5vw, 97px);
  font-weight: 500;
  line-height: 0.98;
  letter-spacing: -0.055em;
}

.after-after strong {
  color: #f1bd55;
}

.slide-close {
  background: #fff;
}

.close-map {
  position: absolute;
  top: -9%;
  right: -2%;
  width: 60%;
  height: 119%;
  opacity: 0.48;
}

.close-copy {
  position: absolute;
  top: 14%;
  left: 7%;
  z-index: 2;
  width: 58%;
}

.close-copy h1 {
  margin: 2vh 0 0;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(48px, 5vw, 97px);
  font-weight: 500;
  line-height: 0.94;
  letter-spacing: -0.055em;
}

.close-copy > p:not(.slide-kicker) {
  max-width: none;
  margin: 4vh 0 0;
  color: var(--coral);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(24px, 2.2vw, 43px);
  line-height: 1.12;
}

.close-copy img {
  width: 42%;
  max-width: 330px;
  margin-top: 12vh;
}

.deck-controls {
  position: fixed;
  z-index: 20;
  right: 1.1rem;
  bottom: 0.8rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.35rem 0.45rem;
  border-radius: 999px;
  background: rgb(5 40 40 / 0.78);
  color: #fff;
  opacity: 0;
  transition: opacity 180ms ease;
}

/* Seven-minute narrative extension: kept self-contained at 16:9 for deck captures. */
.slide:not(.is-active) { display: none !important; }
.slide.is-active.slide-courtown-change,
.slide.is-active.slide-sites,
.slide.is-active.slide-action-picture,
.slide.is-active.slide-report { display: grid !important; }
.slide.is-active.slide-history,
.slide.is-active.slide-forward { display: block !important; }
.opening-credit { position:absolute; bottom:7%; left:0; right:0; margin:0; text-align:center; color:var(--ink-soft); font-size:clamp(12px,1vw,20px); letter-spacing:.06em; }
.slide-courtown-rte { grid-template-columns:1fr; grid-template-rows:minmax(0,1fr) auto; padding:3% 4% 2%; gap:2%; background:#fff; }
.slide-courtown-rte.is-active { display:grid; }
.courtown-rte-source { margin:0; text-align:center; color:var(--ink-soft); font-size:clamp(12px,1.05vw,20px); font-weight:500; letter-spacing:.02em; }
.courtown-rte-article { display:grid; place-items:center; min-width:0; min-height:0; height:100%; margin:0; padding:0; background:#fff; }
.courtown-rte-article img { display:block; width:100%; height:100%; min-height:0; object-fit:contain; }

.slide-loss-scale { padding:4.6% 5.5% 3.2%; background:#f8faf8; }
.slide-loss-scale.is-active { display:grid; grid-template-rows:auto minmax(0,1fr) auto auto; gap:1.8vh; }
.loss-scale-heading { display:flex; align-items:baseline; justify-content:center; gap:1.2vw; }
.loss-scale-heading strong { color:var(--coral); font:500 clamp(72px,7vw,136px)/.8 Georgia,serif; letter-spacing:-.07em; }
.loss-scale-heading h1 { margin:0; color:var(--ink); font:500 clamp(42px,4.2vw,82px)/1 Georgia,serif; letter-spacing:-.045em; }
.football-field-grid { align-self:center; display:grid; grid-template-columns:repeat(6,1fr); gap:1.4vh .85vw; width:100%; }
.football-field-grid i { position:relative; display:block; aspect-ratio:105/68; overflow:hidden; border:3px solid var(--teal-dark); border-radius:3px; background:var(--teal); box-shadow:0 .5vh 1.2vh rgba(6,63,64,.10); }
.football-field-grid i::before { content:""; position:absolute; top:0; bottom:0; left:50%; width:2px; background:rgba(255,255,255,.82); transform:translateX(-50%); }
.football-field-grid i::after { content:""; position:absolute; top:50%; left:50%; width:24%; aspect-ratio:1; border:2px solid rgba(255,255,255,.82); border-radius:50%; transform:translate(-50%,-50%); }
.loss-scale-caption { margin:0; color:var(--ink); text-align:center; font-size:clamp(18px,1.55vw,30px); font-weight:700; letter-spacing:.01em; }
.loss-scale-source { margin:0; color:var(--ink-soft); text-align:center; font-size:clamp(10px,.8vw,15px); letter-spacing:.04em; }
.slide-coast .coast-national-stage { position:absolute; top:7%; right:4%; bottom:auto; left:auto; width:46%; height:86%; opacity:1; transform:none; transform-origin:center; visibility:visible; }
.ireland-map { width:100%; height:100%; }
.map-roi,.map-ni { fill:#e4efed; stroke:#75a9a3; stroke-width:1.3; }
.map-ni { fill:#f2f5f4; stroke:#9aaead; }
.map-wexford-highlight { fill:var(--teal); stroke:var(--teal-dark); stroke-width:2; opacity:.92; }
.slide-coast .coast-story { position:absolute; top:14%; left:7%; width:46%; }
.slide-coast .coast-story h1 { margin:0; color:var(--teal-dark); font:500 clamp(70px,8.5vw,165px)/.8 Georgia,serif; letter-spacing:-.08em; }
.slide-coast .coast-story h1 span { color:var(--gold); font-size:.45em; vertical-align:top; letter-spacing:0; }
.coast-caption { margin:1.5vh 0 0; color:var(--teal); font-size:clamp(16px,1.5vw,30px); font-weight:800; }
.scope-grid { display:grid; grid-template-columns:1fr 1fr; gap:1.8vh 2vw; margin:5vh 0 3vh; }
.scope-grid strong { color:var(--ink); font:500 clamp(27px,2.5vw,48px)/.9 Georgia,serif; }
.scope-grid small { display:block; margin-top:.6vh; color:var(--ink-soft); font:700 clamp(10px,.75vw,15px)/1.1 var(--font-family,Arial); letter-spacing:.05em; text-transform:uppercase; }
.slide-coast .coast-bridge { max-width:40ch; margin:0; color:var(--ink-soft); font-size:clamp(13px,1.05vw,21px); line-height:1.35; }
.slide-coast .coast-source { position:absolute; right:5%; bottom:3.5%; left:5%; margin:0; }
.slide-engine { display:block; }
.slide-sites { display:grid; grid-template-columns:1.25fr 1fr; background:#eff5f3; }
.slide-sites.is-active { display:grid; }
.sites-map { display:grid; place-items:center; overflow:hidden; background:#dceeed; }
.sites-map svg { width:88%; height:88%; }
.sites-map .map-county { fill:#edf5f2; stroke:#77a8a0; stroke-width:1.3; }
.sites-map .map-coastline { fill:none; stroke:var(--teal); stroke-width:3; }
.sites-map .map-site circle { fill:var(--gold); stroke:#fff; stroke-width:4; }
.sites-map .map-site-letter { fill:var(--ink); font:800 17px Arial; text-anchor:middle; dominant-baseline:middle; }
.sites-copy { padding:14% 12%; }
.sites-copy h1 { margin:0 0 5vh; font:500 clamp(45px,5.4vw,104px)/.88 Georgia,serif; letter-spacing:-.06em; }
.site-card { display:flex; align-items:center; gap:1.2vw; padding:1.6vh 0; border-top:1px solid #bfd2cf; }
.site-card b { display:grid; width:2.4rem; height:2.4rem; place-items:center; border-radius:50%; background:var(--gold); color:var(--ink); }
.site-card strong,.site-card small { display:block; }.site-card strong { font-size:clamp(16px,1.3vw,25px); }.site-card small { color:var(--ink-soft); font-size:clamp(11px,.8vw,16px); }
.sites-copy > p:last-child { margin-top:4vh; color:var(--ink-soft); font-size:clamp(13px,1vw,20px); line-height:1.35; }
.slide-history,.slide-forward { background:#f4f7f6; padding:5.5%; }
.slide-history.is-active,.slide-forward.is-active { display:block; }
.history-shell,.forward-shell { position:relative; width:100%; height:100%; }
.history-top { display:flex; align-items:center; gap:1.4vw; border-bottom:1px solid #c6d6d3; padding-bottom:1.8vh; color:var(--ink-soft); font-size:clamp(10px,.75vw,15px); font-weight:800; letter-spacing:.1em; }
.history-top > span:not(.history-event) { padding:.7vh .8vw; }.mode-pill.active { background:var(--teal-dark); color:#fff; }.history-event { margin-left:auto; color:var(--teal); letter-spacing:.03em; }
.history-map,.forward-map { position:absolute; top:17%; right:0; bottom:3%; width:52%; overflow:hidden; background:linear-gradient(150deg,#d6e7e4,#87b8ad 48%,#0b575a); }
.history-map::before,.forward-map::before { content:""; position:absolute; inset:0; background:repeating-linear-gradient(165deg,transparent 0 42px,rgb(255 255 255 / .26) 44px 46px); opacity:.7; }
.history-route { position:absolute; inset:20% 10%; border:2px dashed rgb(255 255 255 / .75); transform:rotate(-12deg); }.history-route span { position:absolute; width:15px; height:15px; border-radius:50%; background:var(--gold); box-shadow:0 0 0 5px rgb(255 255 255 / .35); }.history-route span:nth-child(1){left:12%;top:40%}.history-route span:nth-child(2){left:49%;top:24%}.history-route span:nth-child(3){right:8%;bottom:18%}
.history-label,.risk-pin { position:absolute; right:6%; bottom:7%; left:6%; padding:1.6vh 1.2vw; background:rgb(5 49 50 / .84); color:#fff; font-size:clamp(11px,.9vw,17px); }.history-label strong,.risk-pin strong { display:block; margin-top:.5vh; color:#f1bd55; font-size:clamp(14px,1.3vw,25px); }
.history-copy,.forward-copy { position:absolute; top:18%; left:0; width:43%; }.history-copy h1,.forward-copy h1 { margin:0; font:500 clamp(44px,5.3vw,102px)/.88 Georgia,serif; letter-spacing:-.06em; }.history-copy p:not(.slide-kicker),.forward-copy p:not(.slide-kicker) { color:var(--ink-soft); font-size:clamp(13px,1.1vw,22px); line-height:1.38; }.history-button { margin-top:2vh; padding:1.25vh 1.1vw; border:0; background:var(--gold); color:var(--ink); font-weight:800; }
.forward-map { background:linear-gradient(145deg,#b9ded5,#4e9c93 55%,#083c40); }.wave-lines { position:absolute; inset:15% 7%; background:repeating-radial-gradient(ellipse at 20% 80%,transparent 0 28px,rgb(255 255 255 / .45) 30px 32px,transparent 34px 58px); transform:rotate(-10deg); }.risk-pin { left:10%; right:auto; width:65%; }
.slide-action-picture { display:grid; grid-template-columns:1fr 1fr; background:#fff; }.slide-action-picture.is-active { display:grid; }.action-copy { padding:13% 10%; }.action-copy h1 { margin:0; font:500 clamp(42px,5.2vw,100px)/.9 Georgia,serif; letter-spacing:-.06em; }.action-copy > p:not(.slide-kicker) { max-width:39ch; color:var(--ink-soft); font-size:clamp(13px,1.1vw,22px); line-height:1.4; }.action-status { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:1vh 1vw; margin-top:5vh; }.action-status strong { color:var(--teal); font:500 clamp(30px,3vw,58px) Georgia,serif; }.action-status span { color:var(--ink-soft); font-size:clamp(11px,.9vw,18px); }
.action-map { position:relative; overflow:hidden; background:linear-gradient(150deg,#d8e9e5,#77aaa0 58%,#0a4c4f); }.action-lines { position:absolute; inset:10% 12%; border:1px solid rgb(255 255 255 / .6); background:repeating-linear-gradient(165deg,transparent 0 39px,rgb(255 255 255 / .25) 41px 43px); transform:rotate(-11deg); }.action-callout { position:absolute; top:30%; left:18%; padding:1.8vh 1.2vw; background:#fff; box-shadow:0 1vh 3vh rgb(0 45 45 / .18); }.action-callout span,.action-callout strong,.action-callout small { display:block; }.action-callout span { color:var(--teal); font-size:clamp(10px,.7vw,14px); text-transform:uppercase; letter-spacing:.1em; }.action-callout strong { margin:.6vh 0; font-size:clamp(15px,1.3vw,26px); }.action-callout small { color:var(--ink-soft); }
.slide-report { padding:3.7% 5.2% 2.5%; overflow:hidden; background:#eef4f2; }
.slide-report > header { display:grid; grid-template-columns:1.45fr 1fr; align-items:end; gap:5vw; position:relative; z-index:10; }
.slide-report > header h1 { margin:.35vh 0 0; color:var(--ink); font:500 clamp(48px,5vw,96px)/.94 Georgia,"Times New Roman",serif; letter-spacing:-.052em; }
.slide-report > header > p { max-width:35ch; margin:0 0 .5vh; color:var(--ink-soft); font-size:clamp(16px,1.35vw,25px); line-height:1.32; }
.report-fan { position:relative; width:min(100%,1480px); height:min(70vh,720px); margin:1vh auto 0; }
.report-sheet { position:absolute; top:4%; width:34%; height:88%; box-sizing:border-box; overflow:hidden; padding:2.4% 2.2%; border:1px solid #d1dad6; border-radius:3px; background:#fff; box-shadow:0 18px 45px rgba(20,43,39,.18); color:#17342f; font-family:Arial,sans-serif; transform-origin:50% 100%; }
.report-sheet > small { color:#168d88; font:700 clamp(8px,.55vw,11px)/1 "Courier New",monospace; letter-spacing:.1em; }
.report-sheet h2 { margin:1.3vh 0; font:600 clamp(20px,1.55vw,31px)/1.04 Georgia,serif; letter-spacing:-.025em; }
/* Image mode. The fan now shows the real exported report pages rather than hand-built
   mockups, so the sheet is a frame and the page fills it. object-position:top keeps the
   masthead and headline visible and lets the page's own bottom margin crop away. */
.report-sheet-page { padding:0; background:#fff; }
.report-sheet-page img { display:block; width:100%; height:100%; object-fit:cover; object-position:top center; }
.report-sheet-map { z-index:1; left:6%; transform:rotate(-10deg); background:#f9fbf9; }
.report-sheet-evidence { z-index:2; left:22%; transform:rotate(-4deg); }
.report-sheet-value { z-index:3; right:7%; transform:rotate(9deg); background:#fffaf0; }
.report-sheet-front { z-index:5; left:33%; width:36%; transform:rotate(.7deg); padding:2.2% 2.4%; }
.report-doc-head { display:flex; align-items:center; justify-content:space-between; padding-bottom:1.25vh; border-bottom:1px solid #dce3df; }
.report-doc-head img { width:34%; height:auto; }
.report-doc-head span { color:#607870; font:700 clamp(7px,.47vw,9px)/1 "Courier New",monospace; letter-spacing:.07em; }
.report-sheet-front > small { display:block; margin-top:1.7vh; }
.report-sheet-front h2 { margin:.75vh 0 1.6vh; color:#0e3b38; font-size:clamp(26px,2.05vw,41px); }
.report-posture { padding:1.35vh 1vw; border-left:5px solid #c75c2b; background:#f8ece6; }
.report-posture span,.report-posture strong,.report-posture small { display:block; }
.report-posture span { color:#a84b27; font:800 clamp(7px,.5vw,10px)/1 "Courier New",monospace; letter-spacing:.08em; }
.report-posture strong { margin-top:.55vh; font-size:clamp(13px,.92vw,18px); }
.report-posture small { margin-top:.55vh; color:#765f55; font-size:clamp(8px,.54vw,11px); }
.report-glance { display:grid; grid-template-columns:repeat(3,1fr); margin:1.4vh 0; border-top:1px solid #dce3df; border-bottom:1px solid #dce3df; }
.report-glance div { padding:1vh .55vw; }
.report-glance div + div { border-left:1px solid #dce3df; }
.report-glance span,.report-glance strong { display:block; }
.report-glance span { color:#71847e; font-size:clamp(7px,.48vw,10px); }
.report-glance strong { margin-top:.45vh; font-size:clamp(9px,.66vw,13px); }
.report-sheet-front h3 { margin:1.2vh 0 .6vh; font-size:clamp(12px,.82vw,16px); }
.report-sheet-front ol { margin:0; padding:0; list-style:none; }
.report-sheet-front li { display:grid; grid-template-columns:22px 1fr; gap:.55vw; align-items:center; padding:.65vh 0; border-top:1px solid #e3e8e5; }
.report-sheet-front li b { display:grid; width:20px; height:20px; place-items:center; border-radius:50%; background:#e2efec; color:#147771; font-size:9px; }
.report-sheet-front li span { font-size:clamp(8px,.57vw,11px); line-height:1.2; }
.report-sheet-front footer { position:absolute; right:6.6%; bottom:2.5%; left:6.6%; padding-top:.8vh; border-top:1px solid #dce3df; color:#70827c; font:600 clamp(7px,.46vw,9px)/1.2 "Courier New",monospace; }
.report-wexford-map { position:absolute; top:23%; left:13%; width:73%; height:67%; }
.report-wexford-map .map-county { fill:#e8f0eb; stroke:#aabcb5; stroke-width:2; }
.report-wexford-map .map-coastline { fill:none; stroke:#177b7a; stroke-width:6; }
.report-map-key { position:absolute; right:6%; bottom:5%; left:6%; display:flex; gap:1vw; padding:.9vh .7vw; background:rgba(255,255,255,.9); font-size:clamp(7px,.5vw,10px); }
.report-map-key span { display:flex; align-items:center; gap:.35vw; }
.report-map-key i { width:8px; height:8px; border-radius:50%; background:#c75c2b; }
.report-map-key span:last-child i { background:#d49b2c; }
.report-sheet-evidence dl { margin:2.2vh 0 0; }
.report-sheet-evidence dl div { padding:1.3vh 0; border-top:1px solid #dce3df; }
.report-sheet-evidence dt { color:#688078; font-size:clamp(9px,.62vw,12px); }
.report-sheet-evidence dd { margin:.45vh 0 0; font-size:clamp(11px,.76vw,15px); font-weight:700; }
.report-sheet-evidence p,.report-sheet-value > p { margin-top:2vh; padding:1.2vh .8vw; border-left:4px solid #168d88; background:#edf5f2; color:#49645d; font-size:clamp(9px,.64vw,13px); line-height:1.3; }
.value-line { padding:1.4vh 0; border-top:1px solid #dfd6c3; }
.value-line strong,.value-line span { display:block; }
.value-line strong { color:#987027; font-size:clamp(13px,.88vw,17px); }
.value-line span { margin-top:.5vh; color:#6f695c; font-size:clamp(9px,.62vw,12px); }

.slide-site-impact figure,
.slide-agent-dashboard figure {
  border-color: #a9bbb6;
  box-shadow: 0 2vh 4vh rgba(8, 42, 39, 0.14);
}

.slide-site-impact figure img,
.slide-agent-dashboard figure img {
  object-position: center;
}

.slide-agent-dashboard > header {
  grid-template-columns: 1.5fr 0.9fr;
}

.slide-agent-dashboard > header h1 {
  font-size: clamp(40px, 4.4vw, 84px);
}

.slide-commercial-model {
  padding: 4.8% 5.5% 3.2%;
  background: #f3f7f5;
}

.slide-commercial-model.is-active {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
}

.slide-commercial-model header h1 {
  max-width: 15ch;
  margin: 0.7vh 0 0;
  color: var(--ink);
  font: 500 clamp(47px, 5.4vw, 104px)/0.92 Georgia, "Times New Roman", serif;
  letter-spacing: -0.055em;
}

.commercial-body {
  display: grid;
  grid-template-columns: 0.74fr 1.6fr;
  gap: 5vw;
  align-items: center;
  min-height: 0;
}

.commercial-proof {
  padding-right: 4vw;
  border-right: 1px solid #b9cbc6;
}

.commercial-proof strong {
  display: block;
  color: var(--coral);
  font: 500 clamp(95px, 11vw, 210px)/0.78 Georgia, "Times New Roman", serif;
  letter-spacing: -0.075em;
  white-space: nowrap;
}

.commercial-proof p {
  max-width: 12ch;
  margin: 2.2vh 0 0;
  color: var(--ink);
  font-size: clamp(20px, 2vw, 39px);
  line-height: 1.08;
}

.commercial-proof p b { color: var(--teal); }

.commercial-proof small {
  display: block;
  max-width: 30ch;
  margin-top: 2vh;
  color: var(--ink-soft);
  font-size: clamp(10px, 0.75vw, 15px);
  line-height: 1.35;
}

.commercial-layers { display: grid; gap: 0; }

.commercial-layers article {
  display: grid;
  grid-template-columns: 1.05fr 1.25fr;
  grid-template-rows: auto auto;
  column-gap: 2vw;
  padding: 1.9vh 0;
  border-top: 1px solid #b9cbc6;
}

.commercial-layers article:last-child { border-bottom: 1px solid #b9cbc6; }

.commercial-layers span {
  grid-column: 1;
  color: var(--teal);
  font-size: clamp(9px, 0.68vw, 13px);
  font-weight: 800;
  letter-spacing: 0.1em;
}

.commercial-layers h2 {
  grid-column: 1;
  margin: 0.7vh 0 0;
  color: var(--ink);
  font-size: clamp(18px, 1.55vw, 30px);
  line-height: 1.08;
}

.commercial-layers strong {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  color: var(--ink);
  font: 500 clamp(31px, 3vw, 58px)/0.9 Georgia, "Times New Roman", serif;
  letter-spacing: -0.04em;
}

.commercial-layers strong small {
  display: block;
  margin-top: 0.9vh;
  color: var(--ink-soft);
  font: 700 clamp(9px, 0.7vw, 14px)/1 Arial, sans-serif;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.commercial-layers p {
  grid-column: 1 / -1;
  margin: 1.2vh 0 0;
  color: var(--ink-soft);
  font-size: clamp(11px, 0.85vw, 17px);
}

.commercial-layers .consumer {
  margin: 0 -1.2vw;
  padding-right: 1.2vw;
  padding-left: 1.2vw;
  border-top-color: #8db5ae;
  border-bottom-color: #8db5ae;
  background: #e5f0ed;
}

.commercial-layers .consumer strong { color: var(--teal-dark); }

.slide-commercial-model footer {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: baseline;
  gap: 0.8vh 2vw;
  padding-top: 2vh;
  border-top: 3px solid var(--teal-dark);
}

.slide-commercial-model footer b {
  color: var(--teal);
  font-size: clamp(10px, 0.78vw, 15px);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.slide-commercial-model footer strong {
  color: var(--ink);
  font-size: clamp(20px, 1.7vw, 33px);
}

.slide-commercial-model footer small {
  grid-column: 1 / -1;
  color: var(--ink-soft);
  font-size: clamp(9px, 0.68vw, 13px);
}

body:hover .deck-controls,
.deck-controls:focus-within {
  opacity: 1;
}

.deck-controls button {
  display: grid;
  width: 2rem;
  height: 2rem;
  place-items: center;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: inherit;
  cursor: pointer;
}

.deck-controls button:hover,
.deck-controls button:focus-visible {
  background: rgb(255 255 255 / 0.15);
  outline: none;
}

#slide-position {
  min-width: 2.8rem;
  font-size: 0.76rem;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.001ms !important;
    animation-delay: 0ms !important;
    transition-duration: 0.001ms !important;
  }
}

/* Page 2: the source clip is a portrait phone video pillarboxed inside a 1920x1080 file.
   Crop to the picture and sit it on white, so the slide stops looking like a phone clip. */
.slide-video { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; padding: 5% 6%; }
.slide-video .video-stage { aspect-ratio: 9 / 16; height: 100%; max-height: 100%; width: auto; justify-self: end; background: #fff;
  border-radius: 10px; box-shadow: 0 24px 60px rgba(6,63,64,.18); }
.slide-video .courtown-video { object-fit: cover; object-position: center; background: #fff; border-radius: 10px; }
.slide-video .video-copy { padding-left: 6%; }
.slide-video .video-copy h1 { color: var(--teal-dark); }
.slide-video .video-copy p { color: var(--teal); }

/* Brand mark: the CoastLens icon in the corner of every slide after the title, and a faint
   large mark behind the title itself. One mark, one place, so the deck reads as one thing. */
.brand-mark { position: absolute; z-index: 40; pointer-events: none;
  width: min(100vw, calc(100vh * var(--slide-ratio))); height: min(100vh, calc(100vw / var(--slide-ratio))); }
.brand-mark img { position: absolute; right: 2.4%; bottom: 3.4%; width: 3.2%; opacity: .92; }
body.on-title .brand-mark { display: none; }
.slide-logo::before { content: ""; position: absolute; right: -16%; bottom: -34%; width: 74%; aspect-ratio: 1;
  background: url("assets/coastlens-icon.png") center / contain no-repeat; opacity: .08; pointer-events: none; }
.slide-coast .ireland-map-frame { display:block; width:100%; height:100%; object-fit:contain; object-position:center; }
.slide-loss-scale { background:#fff; }
.loss-scale-heading strong { color:var(--teal); }
.loss-scale-map { align-self:center; margin:0; width:100%; height:100%; min-height:0; display:grid; place-items:center; }
.loss-scale-map img { display:block; width:100%; height:100%; object-fit:contain; }
.future-map-stage { background:#fff; }
.future-map-stage .future-map-frame { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }

/* Title: centred logo block, corner accents from the ring, the icon mark bleeding bottom-right. */
.slide-logo::before { right: -22%; bottom: -50%; width: 74%; opacity: .09; }

/* Corner accents: two ring segments, straightened. Gold top-right, ink bottom-left.
   Reusable on any slide (add .cl-corners), including screen-grab slides. */
.cl-corners { --cl-t: max(3px, 0.72cqw); --cl-in: 3.2%; }
.cl-corners::after, .cl-corners .cl-corner-gold {
  content: ""; position: absolute; pointer-events: none; z-index: 30; box-sizing: border-box; }
.cl-corners .cl-corner-gold { top: var(--cl-in); right: var(--cl-in); width: 34%; height: 17%;
  border-top: var(--cl-t) solid #d09028; border-right: var(--cl-t) solid #d09028; border-top-right-radius: 1.6%; }
.cl-corners::after { bottom: var(--cl-in); left: var(--cl-in); width: 26%; height: 14%;
  border-bottom: var(--cl-t) solid #082018; border-left: var(--cl-t) solid #082018; border-bottom-left-radius: 1.6%; }
.slide { container-type: inline-size; }

/* CoastLens frame and gold tint: brand accents drawn from the logo ring. */
.cl-frame { position: relative; display: block; margin: 0 auto; line-height: 0; }
.cl-frame > img { display: block; width: 100%; height: 100%; object-fit: contain; }
.cl-tint-gold > img { filter: grayscale(1) sepia(.62) saturate(1.05) brightness(1.02) contrast(1.02); }
.cl-tint-gold::after { content: ""; position: absolute; inset: 0; background: #d09028; mix-blend-mode: multiply; opacity: .16; pointer-events: none; }
.courtown-rte-article { padding: 1.6% 2%; box-sizing: border-box; }

/* Page 2 (video): the RTÉ land-loss figure sits under the title, replacing the old pitch slide. */
.slide-video .video-fact { margin-top: 9%; padding-top: 5%; border-top: max(3px, 0.3cqw) solid #082018; width: 78%; }
.slide-video .video-fact span { display: block; font-size: clamp(12px, 1vw, 20px); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-soft); font-weight: 700; }
.slide-video .video-fact strong { display: block; margin-top: .3em; font: 500 clamp(40px, 4.2vw, 84px)/1 Georgia, serif; letter-spacing: -.04em; color: var(--teal-dark); }
.slide-video .video-fact strong em { font-style: normal; color: #d09028; }
.slide-video .video-fact small { display: block; margin-top: .9em; font-size: clamp(12px, .95vw, 18px); color: var(--ink-soft); }

/* Page 4: the map is the hero. */
.slide-coast .coast-national-stage { top: 2%; right: 2%; width: 60%; height: 96%; }
.slide-coast .coast-story { top: 16%; left: 6%; width: 32%; }
.slide-coast .coast-national-stage { top: 0; right: 15%; width: 50%; height: 100%; }
.slide-coast .coast-story { top: 34%; left: 8%; width: 30%; }

/* Page 7: the GIS reveal as a composed opening, not a raw screen grab. */
.slide-open-gis { background:#fff; padding:4.2% 6% 3.6%; }
.slide-open-gis.is-active { display:grid; grid-template-rows:auto minmax(0,1fr); gap:2.4vh; }
.open-gis-head { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1fr); align-items:end; column-gap:4%; }
.open-gis-head .slide-kicker { grid-column:1 / -1; margin:0 0 .4em; }
.open-gis-head h1 { margin:0; color:var(--teal-dark); font:500 clamp(40px,4.2vw,84px)/.95 Georgia,serif; letter-spacing:-.045em; }
.open-gis-sub { margin:0; color:var(--ink-soft); font-size:clamp(16px,1.35vw,27px); line-height:1.35; }
.open-gis-grid { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(0,1fr); column-gap:4%; min-height:0; }
.open-gis-grid figure { margin:0; display:grid; grid-template-rows:minmax(0,1fr) auto; gap:1.2vh; min-height:0; }
.open-gis-grid figure > .cl-frame { align-self:center; }
.open-gis-grid figcaption { font-size:clamp(12px,1.05vw,20px); color:var(--ink-soft); line-height:1.3; display:flex; gap:.6em; align-items:baseline; }
.open-gis-grid figcaption b { color:var(--ink); font-weight:600; }
.open-gis-grid .n { flex:none; display:inline-grid; place-items:center; width:1.6em; height:1.6em; border-radius:50%; background:#082018; color:#fff; font-size:.85em; font-weight:700; }
.open-gis-side { display:grid; grid-template-rows:auto minmax(0,1fr) minmax(0,1fr); gap:2vh; min-height:0; }
.open-gis-side figure > .cl-frame { justify-self:start; }
.open-gis-head h1 { font-size:clamp(34px,3.4vw,68px); }
.open-gis-grid figure { grid-template-rows:minmax(0,1fr) auto; }
.open-gis-grid .shot { position:relative; min-height:0; height:100%; display:grid; place-items:center; padding:1.2% 1.4%; box-sizing:border-box; }
.open-gis-grid .shot > .cl-frame { margin:0; }
.open-gis-side { grid-template-rows:minmax(0,.55fr) minmax(0,1.3fr) minmax(0,1fr); }
.open-gis-side .shot { place-items:center start; }
.open-gis-side { grid-template-rows:minmax(0,.9fr) minmax(0,1.25fr) minmax(0,1fr); }

/* Page 7: full workspace grab in the ring frame; the showcase figure loses its own box. */
.slide-gis-intro { background:#fff; }
.slide-gis-intro.is-active { display:grid; grid-template-rows:auto minmax(0,1fr); }
.slide-gis-intro figure { border:0; box-shadow:none; background:transparent; overflow:visible; width:100%; height:100%; min-height:0; margin:2vh auto 0; }
.slide-gis-intro figure .shot { position:relative; height:100%; min-height:0; display:grid; place-items:center; padding:1.6% 2%; box-sizing:border-box; }
.slide-gis-intro figure img { width:100%; height:100%; object-fit:contain; }
.slide-gis-intro header > p { max-width:40ch; }
.slide-gis-intro header h1 { font-size:clamp(38px,3.9vw,78px); white-space:nowrap; }
/* Wordmark rule: the product name is the logo, never set in type. */
.slide-gis-intro header h1.with-logo { display:flex; align-items:center; gap:.28em; white-space:nowrap; }
.slide-gis-intro header h1.with-logo img { height:1.05em; width:auto; display:block; transform:translateY(.04em); }
.slide-gis-intro header h1.with-logo img { height:1.7em; transform:translateY(.02em); }
.slide-gis-intro header > p { font-size:clamp(18px,1.6vw,30px); color:var(--teal-dark); font-weight:500; max-width:none; }
.slide-gis-intro header { display:flex; align-items:center; gap:2.6vw; flex-wrap:nowrap; }
.slide-gis-intro header > p { white-space:nowrap; margin:0; padding-top:.9em; }

/* Page 8: page 7 again, washed back, with three callouts. The frame does not move; only the callouts arrive. */
.slide-gis-tour.is-active { animation-duration: 160ms; }
.slide-gis-tour.is-active header > div,
.slide-gis-tour.is-active header > p,
.slide-gis-tour.is-active figure { animation: none; }
.slide-gis-tour .cl-frame > img { opacity: .5; filter: saturate(.7); }
.slide-gis-tour .tour-target { position: absolute; z-index: 4; border: max(2px, .16cqw) solid var(--teal); border-radius: 6px; box-shadow: 0 0 0 max(4px, .32cqw) rgba(7, 137, 136, .16); pointer-events: none; }
.slide-gis-tour .tour-target-1 { left: 44.3%; top: 26.6%; width: 31%; height: 10.4%; }
.slide-gis-tour .tour-target-2 { left: 81.2%; top: .6%; width: 7.6%; height: 5.6%; }
.slide-gis-tour .tour-target-3 { left: 79.2%; top: 6.4%; width: 20.6%; height: 88.3%; }
.slide-gis-tour .tour-card { position: absolute; z-index: 5; display: flex; gap: .7em; align-items: flex-start; box-sizing: border-box; padding: 1.1em 1.2em 1.15em 1em; background: #fff; border: max(1.5px, .12cqw) solid var(--teal-dark); border-radius: 6px; box-shadow: 0 20px 48px rgba(20, 43, 39, .3), 0 2px 6px rgba(20, 43, 39, .12); line-height: 1.3; font-size: clamp(12px, 1.02cqw, 21px); text-align: left; }
.slide-gis-tour .tour-card .n { flex: none; display: inline-grid; place-items: center; width: 1.7em; height: 1.7em; border-radius: 50%; background: #082018; color: #fff; font-size: .95em; font-weight: 700; line-height: 1; }
.slide-gis-tour .tour-card b { display: block; color: var(--ink); white-space: nowrap; font: 500 1.4em/1.05 Georgia, "Times New Roman", serif; letter-spacing: -.02em; margin-bottom: .3em; }
.slide-gis-tour .tour-card p { margin: 0; color: var(--ink-soft); }
.slide-gis-tour .tour-card-1 { left: 13%; top: 11%; width: 27.5%; }
.slide-gis-tour .tour-card-2 { left: 53.5%; top: -7.5%; width: 26.5%; }
.slide-gis-tour .tour-card-3 { left: 86%; top: 34%; width: 22%; }
.slide-gis-tour.is-active .tour-target,
.slide-gis-tour.is-active .tour-card { animation: tour-pop 240ms cubic-bezier(.2, .75, .25, 1) both; }
.slide-gis-tour.is-active .tour-target-1, .slide-gis-tour.is-active .tour-card-1 { animation-delay: 80ms; }
.slide-gis-tour.is-active .tour-target-2, .slide-gis-tour.is-active .tour-card-2 { animation-delay: 260ms; }
.slide-gis-tour.is-active .tour-target-3, .slide-gis-tour.is-active .tour-card-3 { animation-delay: 440ms; }
@keyframes tour-pop { from { opacity: 0; transform: translateY(8px) scale(.97); } to { opacity: 1; transform: none; } }

/* Page 12: page 7 again with Future Planning selected; one callout above the toggle, no wash. */
.slide-gis-future .cl-frame > img { opacity: 1; filter: none; }
.slide-gis-future .tour-target-future { left: 59.5%; top: 26.6%; width: 15.8%; height: 10.4%; }
.slide-gis-future .tour-card-future { left: 45%; top: -7.5%; width: 30%; }
.slide-gis-future.is-active .tour-target-future, .slide-gis-future.is-active .tour-card-future { animation-delay: 120ms; }

/* Pages 9-11: the review grabs sit in the same ring frame as page 7, one-line header, frame as large as the page allows. */
.slide-gis-review { padding-top: 3%; padding-bottom: 2.4%; }
.slide-gis-review header h1 { font-size: clamp(36px, 3.6vw, 72px); }
.slide-gis-review header > p { padding-top: 1.1em; }
.slide-gis-review figure { margin: 0 auto; }
.slide-gis-review figure .shot { padding: 1.2%; }
.slide-gis-review header > div { min-height: 0; }

/* Page 10: a finished 16:9 map frame, shown edge to edge. It carries its own title and attribution. */
.slide-full-frame { background: #fff; }
.slide-full-frame > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

/* Page 16: the four report pages as a measured fan. Same white page and one-line header as 9-11.
   All four sheets are the same A4 size and pivot on one point below the slide; page 1 in front. */
.slide-report-fan { background: #fff; }
.slide-report-fan.is-active { display: grid; grid-template-rows: auto minmax(0, 1fr); }
.slide-report-fan .fan { position: relative; min-height: 0; margin: 0; }
.slide-report-fan .fan-page { position: absolute; left: 50%; top: 3%; height: 94%; aspect-ratio: 1653 / 2339; width: auto; transform-origin: 50% 165%; border: 1px solid rgba(20, 43, 39, .22); border-radius: 3px; background: #fff; box-shadow: 0 16px 40px rgba(20, 43, 39, .18), 0 2px 6px rgba(20, 43, 39, .1); }
.slide-report-fan .fan-page-1 { z-index: 4; transform: translateX(-50%) rotate(-10.5deg); }
.slide-report-fan .fan-page-2 { z-index: 3; transform: translateX(-50%) rotate(-3.5deg); }
.slide-report-fan .fan-page-3 { z-index: 2; transform: translateX(-50%) rotate(3.5deg); }
.slide-report-fan .fan-page-4 { z-index: 1; transform: translateX(-50%) rotate(10.5deg); }
.slide-report-fan.is-active .fan-page { animation: fan-in 520ms cubic-bezier(.2, .75, .25, 1) both; }
.slide-report-fan.is-active .fan-page-2 { animation-delay: 70ms; }
.slide-report-fan.is-active .fan-page-3 { animation-delay: 140ms; }
.slide-report-fan.is-active .fan-page-4 { animation-delay: 210ms; }
@keyframes fan-in { from { opacity: 0; transform: translateX(-50%) rotate(0deg) translateY(10px); } }

/* Page 14: the agent loop from page 6, running on real runs. Families left, feed right. */
.slide-agent-runs { background: #fff; }
.slide-agent-runs.is-active { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.slide-agent-runs header h1 { font-size: clamp(36px, 3.6vw, 72px); }
.runs-stage { display: grid; grid-template-columns: 1.1fr 1fr; gap: 2.2cqw; min-height: 0; margin-top: 1.6cqh; }
.runs-left { display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: 1.4cqh; min-height: 0; }
.runs-families { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: minmax(0, 1fr); gap: .8cqw; min-height: 0; }
.runs-families article { position: relative; display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: .8cqw; row-gap: .25cqh; align-items: center; align-content: center; padding: .9cqw 1cqw; border: 1px solid rgba(20, 43, 39, .2); border-radius: 5px; background: #f7f8f4; min-height: 0; overflow: hidden; }
.runs-families .ic { grid-row: 1 / 3; color: var(--teal-dark); font-size: 2.3cqw; line-height: 1; }
.runs-families strong { color: var(--ink); font-size: clamp(12px, 1.12cqw, 24px); line-height: 1.15; font-weight: 600; padding-right: 1cqw; }
.runs-families small { color: var(--ink-soft); font-size: clamp(9px, .74cqw, 15px); line-height: 1.25; }
.runs-families article::after { content: ""; position: absolute; top: .7cqw; right: .7cqw; width: .55cqw; height: .55cqw; border-radius: 50%; background: rgba(20, 43, 39, .18); }
.runs-families article.retained::after { background: var(--teal); }
.runs-families article.review::after { background: var(--gold); }
.runs-families article.refused::after { background: #b85a2a; }
.runs-families article.none { opacity: .55; }
.runs-families article.lit { animation: runs-lit 1.2s ease-out; border-color: var(--teal); }
.runs-families article.lit-refused { animation: runs-lit-refused 1.2s ease-out; border-color: #b85a2a; }
@keyframes runs-lit { 0% { box-shadow: 0 0 0 0 rgba(7, 137, 136, .6); background: #dceeed; } 100% { box-shadow: 0 0 0 1.2cqw rgba(7, 137, 136, 0); background: #f7f8f4; } }
@keyframes runs-lit-refused { 0% { box-shadow: 0 0 0 0 rgba(184, 90, 42, .55); background: #f5e7d2; } 100% { box-shadow: 0 0 0 1.2cqw rgba(184, 90, 42, 0); background: #f7f8f4; } }
.runs-loop { display: flex; align-items: center; gap: .6cqw; padding: .9cqh 0 0; border-top: 1px solid rgba(20, 43, 39, .18); font-size: clamp(11px, .95cqw, 20px); }
.runs-loop span, .runs-loop b, .runs-loop em { padding: .45em .9em; border-radius: 999px; border: 1px solid rgba(20, 43, 39, .25); color: var(--ink); font-style: normal; white-space: nowrap; transition: background .25s, color .25s, border-color .25s; }
.runs-loop b { background: #082018; color: #fff; border-color: #082018; font-weight: 600; }
.runs-loop em { border-color: var(--teal); color: var(--teal-dark); font-weight: 600; }
.runs-loop span.on { background: var(--teal); color: #fff; border-color: var(--teal); }
.runs-loop i { flex: 1; height: 2px; background: rgba(20, 43, 39, .2); min-width: .6cqw; }
.runs-feed { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: .8cqh; min-height: 0; overflow: hidden; }
.runs-feed li { display: grid; grid-template-columns: auto 1fr; gap: .9cqw; padding: 1cqh 1.1cqw; border: 1px solid rgba(20, 43, 39, .2); border-left: .35cqw solid var(--teal); border-radius: 4px; background: #fff; font-size: clamp(11px, .92cqw, 19px); line-height: 1.32; color: var(--ink-soft); opacity: 0; transform: translateY(-6px); transition: opacity .3s ease, transform .3s ease; }
.runs-feed li.in { opacity: 1; transform: none; }
.runs-feed li time { color: var(--teal-dark); font: 700 .85em/1.4 "Courier New", monospace; letter-spacing: .04em; white-space: nowrap; }
.runs-feed li b { display: block; color: var(--ink); font-weight: 600; }
.runs-feed li b small { margin-left: .5em; color: var(--teal); font: 700 .7em/1 "Courier New", monospace; letter-spacing: .08em; text-transform: uppercase; }
.runs-feed li.refused { border-left-color: #b85a2a; background: #fbf3e8; }
.runs-feed li.refused b small { color: #b85a2a; }
.runs-feed li.corrected { border-left-color: var(--gold); }
.runs-foot { margin: 1.2cqh 0 0; color: var(--ink-soft); font-size: clamp(11px, .9cqw, 18px); }

/* Page 17: Q&A under the mark, the stage line as the credit. */
.slide-close .opening-subhead.close-qa { font: 500 clamp(44px, 4.6vw, 92px)/1 Georgia, "Times New Roman", serif; letter-spacing: -.04em; color: var(--teal-dark); }

/* Phone: the slide letterboxes; keep the title text inside it, and ask for landscape. */
@media (max-width: 700px) {
  .opening-subhead { font-size: 3.4vw; top: 62%; }
  .opening-credit { font-size: 2.1vw; bottom: 9%; }
}
.mobile-gate { display: none; position: fixed; inset: 0; z-index: 60; padding: 12vh 8vw; background: #fff; text-align: center; color: var(--ink); }
.mobile-gate img { width: 60%; max-width: 280px; margin: 0 auto 6vh; display: block; }
.mobile-gate p { margin: 0 0 1.2em; font-size: 16px; line-height: 1.45; color: var(--ink-soft); }
.mobile-gate p b { color: var(--ink); }
.mobile-gate button { margin-top: 4vh; padding: .8em 1.4em; border: 1px solid var(--teal-dark); border-radius: 999px; background: #fff; color: var(--teal-dark); font: 600 15px/1 inherit; }
@media (max-width: 700px) and (orientation: portrait) { .mobile-gate:not(.dismissed) { display: block; } }
/* Page 15: the six agents as cards, one role each, rendered from agent-runs. */
.slide-agent-fleet { background: #fff; }
.slide-agent-fleet.is-active { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.fleet-grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: minmax(0, 1fr); gap: 1.2cqw; min-height: 0; margin-top: 2cqh; }
.fleet-grid article { display: grid; grid-template-rows: auto auto auto 1fr auto; gap: .9cqh; padding: 1.4cqw 1.5cqw 1.2cqw; border: 1px solid rgba(20, 43, 39, .22); border-radius: 6px; background: #f7f8f4; min-height: 0; }
.fleet-grid .badge { display: inline-grid; place-items: center; width: 2.6cqw; height: 2.6cqw; border-radius: 50%; background: #082018; color: #fff; font: 700 1cqw/1 "Courier New", monospace; letter-spacing: .04em; }
.fleet-grid article.idle .badge { background: rgba(20, 43, 39, .28); }
.fleet-grid h2 { margin: .2cqh 0 0; color: var(--ink); font: 500 clamp(22px, 2.2cqw, 46px)/1.05 Georgia, "Times New Roman", serif; letter-spacing: -.02em; }
.fleet-grid h2 small { display: block; margin-top: .35em; color: var(--teal); font: 700 .48em/1 "Courier New", monospace; letter-spacing: .12em; text-transform: uppercase; }
.fleet-grid p { margin: 0; color: var(--ink); font-size: clamp(13px, 1.25cqw, 26px); line-height: 1.32; }
.fleet-grid p.never { color: var(--ink-soft); font-size: clamp(12px, 1.05cqw, 22px); align-self: start; }
.fleet-grid em { color: var(--teal-dark); font-style: normal; font-size: clamp(11px, .85cqw, 17px); font-weight: 600; }
.fleet-grid article.idle em { color: var(--ink-soft); font-weight: 400; }
.fleet-grid article.idle { opacity: .6; }
.slide-agent-fleet.is-active .fleet-grid article { animation: tour-pop 260ms cubic-bezier(.2, .75, .25, 1) both; }
.slide-agent-fleet.is-active .fleet-grid article:nth-child(2) { animation-delay: 70ms; }
.slide-agent-fleet.is-active .fleet-grid article:nth-child(3) { animation-delay: 140ms; }
.slide-agent-fleet.is-active .fleet-grid article:nth-child(4) { animation-delay: 210ms; }
.slide-agent-fleet.is-active .fleet-grid article:nth-child(5) { animation-delay: 280ms; }
.slide-agent-fleet.is-active .fleet-grid article:nth-child(6) { animation-delay: 350ms; }

/* Page 5: the UCC exposure map lifted as a still, with the 1 in 5 figure in the page 4 treatment. */
.slide-exposure .coast-national-stage { top: 0; right: 15%; width: 50%; height: 100%; }
.slide-exposure .coast-story { top: 22%; }
.cei-legend { display: grid; grid-template-columns: repeat(5, 1fr); gap: 2px; width: 78%; margin-top: 2.2cqh; }
.cei-legend i { height: .8cqw; display: block; }
.cei-legend i:first-child { border-radius: 3px 0 0 3px; } .cei-legend i:nth-child(5) { border-radius: 0 3px 3px 0; }
.cei-legend span { grid-column: span 2; margin-top: .3cqh; color: var(--ink-soft); font-size: clamp(10px, .75cqw, 15px); letter-spacing: .08em; text-transform: uppercase; }
.cei-legend span:last-child { grid-column: 4 / 6; text-align: right; }
.cei-wexford { margin: 2.4cqh 0 0; color: var(--ink-soft); font-size: clamp(13px, 1.1cqw, 22px); line-height: 1.4; max-width: 30ch; }
.cei-wexford b { color: var(--ink); }
.slide-exposure .coast-story h1 span { color: #d0522a; }
.slide-exposure .coast-caption { max-width: 22ch; }
.slide-exposure .coast-source { right: auto; max-width: 34%; line-height: 1.35; }
