/* ===============================================================
   K-Well — ICBC Injury Claims & Recovery landing page
   Builds on styles.css (tokens, typography, base components).
   Motion concept: "The road back" — a collision becomes a calm,
   pre-approved 12-week path to recovery, drawn in cheongsaek blue.
   =============================================================== */

/* ----------------------------------------------------------------
   Shared atoms for this page
   --------------------------------------------------------------- */
.icbc-accent {
  font-family: var(--kw-font-serif);
  font-style: italic;
  font-weight: 400;
  color: var(--kw-blue);
  letter-spacing: -.01em;
}
.icbc-accent--light { color: var(--kw-blue-soft); }

.icbc-eyebrow-han {
  font-family: var(--kw-font-brush);
  letter-spacing: 0;
  color: var(--kw-blue);
}

/* ================================================================
   1 · HERO — dark ink stage with the live recovery scene
   ================================================================ */
.icbc-hero {
  position: relative;
  background: var(--kw-ink);
  color: var(--kw-paper);
  overflow: hidden;
  padding: 170px 0 90px;
  min-height: 100vh;
  display: flex;
  align-items: center;
}
.icbc-hero__grain {
  position: absolute; inset: 0;
  background:
    radial-gradient(120% 90% at 78% 18%, rgba(14,79,142,.30), transparent 55%),
    radial-gradient(80% 70% at 12% 90%, rgba(14,79,142,.12), transparent 60%);
  pointer-events: none;
  z-index: 0;
}
/* faint vertical rail, like the service pages */
.icbc-hero__rail {
  position: absolute;
  left: 30px; top: 50%;
  transform: translateY(-50%);
  z-index: 3;
  display: flex; flex-direction: column; gap: 14px;
  writing-mode: vertical-rl;
  font-family: var(--kw-font-ui);
  font-weight: 600; font-size: 12px;
  letter-spacing: .35em; text-transform: uppercase;
  color: rgba(243,239,231,.5);
}
.icbc-hero__rail b { color: var(--kw-blue-soft); font-weight: 700; }
@media (max-width: 1280px) { .icbc-hero__rail { display: none; } }

.icbc-hero__inner {
  position: relative;
  z-index: 2;
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
  gap: 48px;
  align-items: center;
}
@media (max-width: 1040px) {
  .icbc-hero__inner { grid-template-columns: 1fr; gap: 14px; }
}

.icbc-hero__eyebrow {
  display: inline-flex; align-items: center; gap: 12px;
  color: rgba(243,239,231,.8);
  margin-bottom: 26px;
}
.icbc-hero__seal {
  display: inline-flex; align-items: center; justify-content: center;
  height: 28px; padding: 0 11px;
  border: 1.5px solid var(--kw-blue);
  color: var(--kw-blue-soft);
  background: rgba(14,79,142,.16);
  font-family: var(--kw-font-ui);
  font-size: 11px; font-weight: 700; letter-spacing: .18em;
}
.icbc-hero__title {
  font-family: var(--kw-font-display);
  font-weight: 400;
  font-size: clamp(42px, 6.4vw, 92px);
  line-height: .98;
  letter-spacing: -.025em;
  margin: 0 0 18px;
  text-wrap: balance;
}
.icbc-hero__hangul {
  font-family: var(--kw-font-brush);
  font-size: clamp(22px, 2.6vw, 34px);
  color: var(--kw-blue-soft);
  margin: 0 0 26px;
}
.icbc-hero__tagline {
  font-family: var(--kw-font-serif);
  font-size: clamp(17px, 1.55vw, 21px);
  line-height: 1.62;
  color: rgba(243,239,231,.82);
  max-width: 540px;
  margin: 0 0 32px;
}
.icbc-hero__tagline b { color: var(--kw-paper); font-weight: 700; font-style: normal; }
.icbc-hero__cta { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 38px; }

.icbc-hero__pills {
  display: flex; flex-wrap: wrap; gap: 10px;
}
.icbc-pill {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 9px 16px 9px 13px;
  border: 1px solid rgba(243,239,231,.2);
  border-radius: 999px;
  font-family: var(--kw-font-ui);
  font-size: 12.5px; font-weight: 600;
  letter-spacing: .04em;
  color: rgba(243,239,231,.86);
  background: rgba(243,239,231,.03);
}
.icbc-pill .dot {
  width: 7px; height: 7px; border-radius: 999px;
  background: var(--kw-blue);
  box-shadow: 0 0 0 0 rgba(14,79,142,.7);
}
@media (prefers-reduced-motion: no-preference) {
  .icbc-pill .dot { animation: icbc-beacon 2.4s cubic-bezier(.22,.65,.18,1) infinite; }
  .icbc-pill:nth-child(2) .dot { animation-delay: .5s; }
  .icbc-pill:nth-child(3) .dot { animation-delay: 1s; }
}
@keyframes icbc-beacon {
  0%, 70%, 100% { box-shadow: 0 0 0 0 rgba(14,79,142,.55); }
  35% { box-shadow: 0 0 0 6px rgba(14,79,142,0); }
}

/* ---- The hero motion scene ---------------------------------- */
.icbc-scene {
  /* a brighter blue than --kw-blue so the recovery path reads on ink */
  --scene-blue: #4a93d6;
  position: relative;
  width: 100%;
  aspect-ratio: 7 / 5.4;
}
.icbc-scene svg { width: 100%; height: 100%; overflow: visible; }

/* road + lanes use paper ink; recovery arc uses blue */
.icbc-scene .road      { stroke: rgba(243,239,231,.28); stroke-width: 2; fill: none; }
.icbc-scene .lane {
  stroke: rgba(243,239,231,.5);
  stroke-width: 3; stroke-linecap: round;
  stroke-dasharray: 2 26;
  fill: none;
}
.icbc-scene .car       { stroke: var(--kw-paper); stroke-width: 3.4; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.icbc-scene .car-fill  { fill: rgba(243,239,231,.05); stroke: none; }
.icbc-scene .wheel     { stroke: var(--kw-paper); stroke-width: 3.4; fill: var(--kw-ink); }
.icbc-scene .hub       { fill: rgba(243,239,231,.55); }
.icbc-scene .ripple    { stroke: var(--scene-blue); fill: none; stroke-width: 2; }
.icbc-scene .arc       { stroke: var(--scene-blue); stroke-width: 3.6; fill: none; stroke-linecap: round; }
.icbc-scene .tick      { stroke: var(--kw-blue-soft); stroke-width: 2.6; stroke-linecap: round; }
.icbc-scene .node      { fill: var(--scene-blue); }
.icbc-scene .node-ring { stroke: var(--kw-blue-soft); fill: none; stroke-width: 2; }
.icbc-scene .pulse     { fill: #fff; }
.icbc-scene .goal      { stroke: var(--scene-blue); stroke-width: 3; fill: rgba(74,147,214,.18); }
.icbc-scene .goal-check{ stroke: var(--kw-blue-soft); stroke-width: 3.2; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.icbc-scene .scene-label {
  font-family: var(--kw-font-ui);
  font-size: 12px; font-weight: 600; letter-spacing: .12em;
  fill: rgba(243,239,231,.62);
  text-transform: uppercase;
}
.icbc-scene .scene-han {
  font-family: var(--kw-font-brush);
  font-size: 17px; fill: var(--kw-blue-soft);
}

/* lane flow + car bob (ambient, autoplay) */
@media (prefers-reduced-motion: no-preference) {
  .icbc-scene .lane { animation: icbc-lane 1.1s linear infinite; }
  .icbc-scene .car-grp { animation: icbc-bob 2.8s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
  .icbc-scene .wheel-spin { animation: icbc-spin 1.6s linear infinite; transform-box: fill-box; transform-origin: center; }
  .icbc-scene .ripple { animation: icbc-ripple 3.2s ease-out infinite; transform-box: fill-box; transform-origin: center; }
  .icbc-scene .ripple.r2 { animation-delay: 1.05s; }
  .icbc-scene .ripple.r3 { animation-delay: 2.1s; }
}
@keyframes icbc-lane { to { stroke-dashoffset: -28; } }
@keyframes icbc-bob  { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes icbc-spin { to { transform: rotate(360deg); } }
@keyframes icbc-ripple {
  0%   { transform: scale(.35); opacity: .0; }
  18%  { opacity: .8; }
  100% { transform: scale(1.9); opacity: 0; }
}

/* draw-in of arc + nodes. Default = drawn/visible (no-JS safe);
   The recovery path + milestone nodes are statically visible (robust in
   every renderer); the scene's life comes from the looping ambient
   motion (lane flow, wheel spin, car bob, ripples, traveling pulse). */
.icbc-scene .arc {
  stroke-dasharray: 820;
  stroke-dashoffset: 0;
}
.icbc-scene .stop { opacity: 1; transform: scale(1); transform-box: fill-box; transform-origin: center; }
@media (prefers-reduced-motion: no-preference) {
  /* a soft one-time fade-up for the milestone nodes, additive only —
     never hides the resting state if it doesn't run */
  body.icbc-armed .icbc-scene.is-drawn .stop { animation: icbc-pop .6s ease both; }
  body.icbc-armed .icbc-scene.is-drawn .stop.s1 { animation-delay: .15s; }
  body.icbc-armed .icbc-scene.is-drawn .stop.s2 { animation-delay: .3s; }
  body.icbc-armed .icbc-scene.is-drawn .stop.s3 { animation-delay: .45s; }
  body.icbc-armed .icbc-scene.is-drawn .stop.goal-grp { animation-delay: .6s; }
}
@keyframes icbc-pop { 0% { opacity: .2; transform: scale(.7); } 100% { opacity: 1; transform: scale(1); } }

.icbc-hero__scroll {
  position: absolute; left: 50%; bottom: 22px;
  transform: translateX(-50%);
  z-index: 4;
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  font-family: var(--kw-font-ui); font-size: 11px; letter-spacing: .3em;
  text-transform: uppercase; color: rgba(243,239,231,.55);
}
.icbc-hero__scroll-line { width: 1px; height: 46px; background: linear-gradient(180deg, rgba(243,239,231,.5), transparent); }
@media (max-width: 1040px) { .icbc-hero__scroll { display: none; } }

/* ================================================================
   2 · DIRECT BILLING band
   ================================================================ */
.icbc-billing { padding: 120px 0; background: var(--kw-paper-cream); }
.icbc-bill__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 28px;
  margin-top: 8px;
}
@media (max-width: 820px) { .icbc-bill__grid { grid-template-columns: 1fr; } }

.icbc-card {
  position: relative;
  background: var(--kw-paper);
  border: 1px solid var(--kw-bone);
  padding: 40px 38px 36px;
  overflow: hidden;
}
.icbc-card__tag {
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--kw-font-ui); font-size: 12px; font-weight: 600;
  letter-spacing: .16em; text-transform: uppercase; color: var(--kw-stone);
  margin-bottom: 22px;
}
.icbc-card__tag .han { font-family: var(--kw-font-brush); font-size: 18px; color: var(--kw-blue); letter-spacing: 0; }
.icbc-card__title {
  font-family: var(--kw-font-display);
  font-size: 27px; line-height: 1.12; letter-spacing: -.01em;
  margin: 0 0 4px;
}
.icbc-card__sub {
  font-family: var(--kw-font-serif); font-style: italic;
  font-size: 15.5px; color: var(--kw-stone); margin: 0 0 26px;
}
.icbc-card__big {
  font-family: var(--kw-font-display);
  font-size: clamp(52px, 6vw, 78px);
  line-height: .9; letter-spacing: -.03em;
  color: var(--kw-blue);
  display: flex; align-items: flex-end; gap: 14px;
}
.icbc-card__big small {
  font-family: var(--kw-font-ui); font-size: 14px; font-weight: 600;
  letter-spacing: .04em; color: var(--kw-stone);
  text-transform: none; line-height: 1.4; padding-bottom: 10px; max-width: 180px;
}
.icbc-rows { display: flex; flex-direction: column; gap: 0; }
.icbc-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: 18px;
  padding: 20px 0; border-bottom: 1px dashed var(--kw-bone);
}
.icbc-row:last-child { border-bottom: 0; padding-bottom: 0; }
.icbc-row__l { font-family: var(--kw-font-serif); font-size: 17px; color: var(--kw-ink); }
.icbc-row__l span { display: block; font-size: 13px; color: var(--kw-wash); font-style: italic; }
.icbc-row__r {
  font-family: var(--kw-font-display);
  font-size: 30px; letter-spacing: -.02em; color: var(--kw-blue); white-space: nowrap;
}
.icbc-row__r em {
  display: block; text-align: right;
  font-family: var(--kw-font-ui); font-style: normal;
  font-size: 11px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; color: var(--kw-wash);
}
.icbc-billing__note {
  margin-top: 30px;
  font-family: var(--kw-font-serif); font-style: italic;
  font-size: 15.5px; color: var(--kw-stone);
}
.icbc-billing__note b { color: var(--kw-blue); font-style: normal; }

/* ================================================================
   3 · CLAIM — report the collision, get a number, start
   ================================================================ */
.icbc-claim { padding: 120px 0; background: var(--kw-paper); }
.icbc-claim__lede {
  font-family: var(--kw-font-serif);
  font-size: clamp(21px, 2vw, 29px);
  line-height: 1.45; color: var(--kw-ink);
  max-width: 940px; margin: 0 0 12px; text-wrap: pretty;
}
.icbc-claim__lede b { color: var(--kw-blue); font-weight: 400; font-style: italic; }
.icbc-claim__small {
  font-family: var(--kw-font-ui); font-size: 13px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--kw-wash); margin: 0 0 64px;
}
.icbc-steps {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  border-top: 1px solid var(--kw-bone);
}
@media (max-width: 760px) { .icbc-steps { grid-template-columns: 1fr; } }
.icbc-step {
  position: relative;
  padding: 34px 32px 34px 0;
  border-bottom: 1px solid var(--kw-bone);
}
.icbc-step:not(:nth-child(3n)) { border-right: 1px solid var(--kw-bone); }
.icbc-step:not(:nth-child(3n+1)) { padding-left: 32px; }
@media (max-width: 760px) {
  .icbc-step { border-right: 0 !important; padding-left: 0 !important; }
}
.icbc-step__n {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 999px;
  border: 1.6px solid var(--kw-ink);
  font-family: var(--kw-font-display); font-size: 17px; color: var(--kw-ink);
  margin-bottom: 20px;
  transition: background var(--kw-dur) var(--kw-ease), color var(--kw-dur) var(--kw-ease), border-color var(--kw-dur) var(--kw-ease);
}
.icbc-step:hover .icbc-step__n { background: var(--kw-blue); border-color: var(--kw-blue); color: var(--kw-paper); }
.icbc-step__h {
  font-family: var(--kw-font-display); font-size: 22px; line-height: 1.12;
  margin: 0 0 10px; letter-spacing: -.01em;
}
.icbc-step__b {
  font-family: var(--kw-font-serif); font-size: 15.5px; line-height: 1.7;
  color: var(--kw-charcoal); margin: 0;
}
/* the animated claim ticket */
.icbc-claim__ticket {
  margin: 56px auto 0;
  max-width: 460px;
  background: var(--kw-ink); color: var(--kw-paper);
  border-radius: 14px;
  padding: 26px 30px;
  position: relative;
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  box-shadow: 0 24px 60px -28px rgba(20,17,13,.55);
}
.icbc-claim__ticket::before,
.icbc-claim__ticket::after {
  content: ""; position: absolute; top: 50%; width: 22px; height: 22px;
  background: var(--kw-paper); border-radius: 999px; transform: translateY(-50%);
}
.icbc-claim__ticket::before { left: -11px; }
.icbc-claim__ticket::after  { right: -11px; }
.icbc-ticket__label {
  font-family: var(--kw-font-ui); font-size: 11px; letter-spacing: .2em;
  text-transform: uppercase; color: rgba(243,239,231,.55); margin-bottom: 8px;
}
.icbc-ticket__num {
  font-family: var(--kw-font-display); font-size: clamp(24px, 4vw, 34px);
  letter-spacing: .04em; color: var(--kw-blue-soft);
  font-variant-numeric: tabular-nums;
}
.icbc-ticket__stamp {
  flex: 0 0 auto;
  width: 76px; height: 76px; border-radius: 999px;
  border: 2px solid var(--kw-blue); color: var(--kw-blue-soft);
  display: grid; place-items: center; text-align: center;
  font-family: var(--kw-font-brush); font-size: 13px; line-height: 1.15;
  transform: rotate(-9deg) scale(.94); opacity: 1;
}
body.icbc-armed .icbc-ticket__stamp { transform: rotate(-9deg) scale(.6); opacity: 0; }
body.icbc-armed .icbc-claim__ticket.is-in .icbc-ticket__stamp {
  animation: icbc-stamp .6s cubic-bezier(.22,.65,.18,1) .5s forwards;
}
@keyframes icbc-stamp {
  0% { transform: rotate(-9deg) scale(1.5); opacity: 0; }
  60% { transform: rotate(-9deg) scale(.86); opacity: 1; }
  100% { transform: rotate(-9deg) scale(.94); opacity: 1; }
}

/* ================================================================
   4 · RECOVERY TIMELINE — dark, the scroll-drawn 12-week path
   ================================================================ */
.icbc-recovery { padding: 124px 0; background: var(--kw-ink); color: var(--kw-paper); position: relative; overflow: hidden; }
.icbc-recovery__head { max-width: 760px; margin: 0 0 12px; }
.icbc-recovery__sub {
  font-family: var(--kw-font-serif); font-size: var(--kw-fs-body-lg);
  line-height: 1.6; color: rgba(243,239,231,.72); max-width: 560px; margin: 18px 0 0;
}
.icbc-recovery__sub b { color: var(--kw-blue-soft); font-weight: 400; font-style: italic; font-family: var(--kw-font-serif); }

.icbc-track {
  position: relative;
  margin-top: 70px;
}
.icbc-track svg { width: 100%; height: auto; overflow: visible; display: block; }
.icbc-track .t-base { stroke: rgba(243,239,231,.16); stroke-width: 2.5; fill: none; }
.icbc-track .t-prog {
  stroke: var(--kw-blue); stroke-width: 4; fill: none; stroke-linecap: round;
  stroke-dasharray: 1200; stroke-dashoffset: 0;
}
body.icbc-armed .icbc-track .t-prog { stroke-dashoffset: 1200; }
body.icbc-armed .icbc-track.is-in .t-prog {
  transition: stroke-dashoffset 2.4s var(--kw-ease);
  stroke-dashoffset: 0;
}
@media (prefers-reduced-motion: reduce) { .icbc-track .t-prog { stroke-dashoffset: 0; } }
.icbc-track .t-tick { stroke: rgba(243,239,231,.3); stroke-width: 2; }
.icbc-track .t-node { fill: var(--kw-ink); stroke: var(--kw-blue); stroke-width: 3.4; }
.icbc-track .t-node-han { font-family: var(--kw-font-brush); fill: var(--kw-blue-soft); font-size: 18px; }
.icbc-track .t-pulse { fill: #fff; }

.icbc-track__legend {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px;
  margin-top: 40px;
}
@media (max-width: 820px) { .icbc-track__legend { grid-template-columns: repeat(2, 1fr); gap: 26px 18px; } }
@media (max-width: 460px) { .icbc-track__legend { grid-template-columns: 1fr; } }
.icbc-leg { border-top: 1px solid rgba(243,239,231,.18); padding-top: 18px; position: relative; }
.icbc-leg::before { content: ""; position: absolute; top: -1px; left: 0; width: 34px; height: 2px; background: var(--kw-blue); }
.icbc-leg__k { font-family: var(--kw-font-ui); font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: rgba(243,239,231,.55); margin-bottom: 10px; }
.icbc-leg__t { font-family: var(--kw-font-display); font-size: 21px; letter-spacing: -.01em; margin-bottom: 4px; }
.icbc-leg__han { font-family: var(--kw-font-brush); font-size: 15px; color: var(--kw-blue-soft); }
.icbc-recovery__foot {
  margin-top: 52px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 16px 26px;
  border-top: 1px solid rgba(243,239,231,.14); padding-top: 28px;
}
.icbc-recovery__foot p {
  font-family: var(--kw-font-serif); font-size: 16.5px; color: rgba(243,239,231,.78);
  margin: 0; flex: 1 1 360px;
}
.icbc-recovery__foot p b { color: var(--kw-paper); font-weight: 700; }

/* ================================================================
   5 · ONE ROOF — three streams converge
   ================================================================ */
.icbc-roof { padding: 124px 0; background: var(--kw-paper); }
.icbc-roof__grid {
  display: grid; grid-template-columns: 1.05fr 1fr; gap: 72px; align-items: center;
}
@media (max-width: 940px) { .icbc-roof__grid { grid-template-columns: 1fr; gap: 44px; } }
.icbc-roof__text > p {
  font-family: var(--kw-font-serif); font-size: var(--kw-fs-body-lg);
  line-height: 1.7; color: var(--kw-charcoal); margin: 0 0 18px;
}
.icbc-roof__list { margin-top: 26px; display: flex; flex-direction: column; gap: 12px; }
.icbc-roof__list > div { display: flex; align-items: flex-start; gap: 12px; font-size: 15.5px; line-height: 1.5; color: var(--kw-charcoal); }
.icbc-roof__list svg { flex: 0 0 auto; margin-top: 4px; color: var(--kw-blue); }

.icbc-converge { position: relative; aspect-ratio: 1 / 1; max-width: 460px; margin: 0 auto; width: 100%; }
.icbc-converge svg { width: 100%; height: 100%; overflow: visible; }
.icbc-converge .c-line {
  stroke: var(--kw-bone); stroke-width: 2.4; fill: none; stroke-linecap: round;
  stroke-dasharray: 320; stroke-dashoffset: 0;
}
body.icbc-armed .icbc-converge .c-line { stroke-dashoffset: 320; }
body.icbc-armed .icbc-converge.is-in .c-line { transition: stroke-dashoffset 1.3s var(--kw-ease); stroke-dashoffset: 0; }
body.icbc-armed .icbc-converge.is-in .c-line.l2 { transition-delay: .14s; }
body.icbc-armed .icbc-converge.is-in .c-line.l3 { transition-delay: .28s; }
@media (prefers-reduced-motion: reduce) { .icbc-converge .c-line { stroke-dashoffset: 0; } }
.icbc-converge .c-flow { stroke: var(--kw-blue); stroke-width: 3; fill: none; stroke-linecap: round; stroke-dasharray: 3 16; }
@media (prefers-reduced-motion: no-preference) {
  body.icbc-armed .icbc-converge.is-in .c-flow { animation: icbc-flow 1.4s linear infinite; }
}
@keyframes icbc-flow { to { stroke-dashoffset: -38; } }
.icbc-converge .c-chip {
  fill: var(--kw-paper); stroke: var(--kw-bone); stroke-width: 1.5;
}
.icbc-converge .c-chip-t { font-family: var(--kw-font-ui); font-size: 12.5px; font-weight: 600; fill: var(--kw-ink); letter-spacing: .02em; }
.icbc-converge .c-chip-han { font-family: var(--kw-font-brush); font-size: 13px; fill: var(--kw-blue); }
.icbc-converge .c-hub { fill: var(--kw-ink); }
.icbc-converge .c-hub-mark { fill: var(--kw-paper); font-family: var(--kw-font-brush); font-size: 30px; }
.icbc-converge .c-hub-ring {
  stroke: var(--kw-blue); fill: none; stroke-width: 2.4;
  transform-box: fill-box; transform-origin: center;
}
@media (prefers-reduced-motion: no-preference) {
  body.icbc-armed .icbc-converge.is-in .c-hub-ring { animation: icbc-hubpulse 2.6s cubic-bezier(.22,.65,.18,1) infinite; }
}
@keyframes icbc-hubpulse { 0%,100% { opacity: .8; transform: scale(1); } 50% { opacity: .25; transform: scale(1.13); } }

/* ================================================================
   6 · CONDITIONS — staggered injury grid
   ================================================================ */
.icbc-conditions { padding: 124px 0; background: var(--kw-paper-2); }
.icbc-cond__grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 0; border-top: 1px solid var(--kw-bone);
}
@media (max-width: 1000px) { .icbc-cond__grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { .icbc-cond__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 440px) { .icbc-cond__grid { grid-template-columns: 1fr; } }
.icbc-cond {
  position: relative;
  padding: 30px 26px 30px 0;
  border-bottom: 1px solid var(--kw-bone);
  opacity: 1; transform: none;
}
.icbc-cond:not(:nth-child(4n+1)) { padding-left: 26px; }
.icbc-cond:not(:nth-child(4n)) { border-right: 1px solid var(--kw-bone); }
@media (max-width: 1000px) {
  .icbc-cond:not(:nth-child(4n)) { border-right: 0; }
  .icbc-cond:not(:nth-child(3n)) { border-right: 1px solid var(--kw-bone); }
  .icbc-cond:not(:nth-child(4n+1)) { padding-left: 0; }
  .icbc-cond:not(:nth-child(3n+1)) { padding-left: 26px; }
}
@media (max-width: 720px) {
  .icbc-cond, .icbc-cond:not(:nth-child(3n)) { border-right: 0; }
  .icbc-cond:nth-child(odd) { border-right: 1px solid var(--kw-bone); padding-right: 20px; }
  .icbc-cond:not(:nth-child(odd)) { padding-left: 20px; }
  .icbc-cond:not(:nth-child(4n+1)), .icbc-cond:not(:nth-child(3n+1)) { padding-left: 0; }
  .icbc-cond:nth-child(even) { padding-left: 20px; }
}
@media (max-width: 440px) {
  .icbc-cond, .icbc-cond:nth-child(odd), .icbc-cond:nth-child(even) { border-right: 0; padding-left: 0 !important; padding-right: 0; }
}
body.icbc-armed .icbc-cond { opacity: 0; transform: translateY(16px); }
body.icbc-armed .icbc-cond__grid.is-in .icbc-cond {
  transition: opacity .5s var(--kw-ease), transform .5s var(--kw-ease);
  transition-delay: calc(var(--i, 0) * 70ms);
  opacity: 1; transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) { body.icbc-armed .icbc-cond { opacity: 1; transform: none; } }
.icbc-cond__dot {
  width: 9px; height: 9px; border-radius: 999px; background: var(--kw-blue);
  margin-bottom: 16px; position: relative;
}
@media (prefers-reduced-motion: no-preference) {
  body.icbc-armed .icbc-cond__grid.is-in .icbc-cond__dot::after {
    content: ""; position: absolute; inset: 0; border-radius: 999px;
    border: 1.5px solid var(--kw-blue);
    animation: icbc-painpulse 2.8s cubic-bezier(.22,.65,.18,1) infinite;
    animation-delay: calc(1s + var(--i, 0) * 120ms);
  }
}
@keyframes icbc-painpulse {
  0% { transform: scale(1); opacity: .7; }
  70%, 100% { transform: scale(2.6); opacity: 0; }
}
.icbc-cond__num {
  font-family: var(--kw-font-ui); font-size: 11px; font-weight: 600;
  letter-spacing: .2em; color: var(--kw-wash); margin-bottom: 8px;
}
.icbc-cond__label {
  font-family: var(--kw-font-display); font-size: 20px; line-height: 1.15;
  letter-spacing: -.01em; color: var(--kw-ink); margin-bottom: 5px;
}
.icbc-cond__sub { font-family: var(--kw-font-serif); font-style: italic; font-size: 13.5px; color: var(--kw-stone); line-height: 1.5; }
.icbc-conditions__foot {
  margin-top: 48px; max-width: 760px;
  font-family: var(--kw-font-serif); font-size: clamp(18px, 1.8vw, 23px);
  line-height: 1.5; color: var(--kw-ink); text-wrap: pretty;
}
.icbc-conditions__foot b { color: var(--kw-blue); font-weight: 400; font-style: italic; }

/* ================================================================
   7 · BOOKING (dark closing CTA)
   ================================================================ */
.icbc-booking { padding: 104px 0; background: var(--kw-ink); color: var(--kw-paper); }
.icbc-booking__inner { display: grid; grid-template-columns: 1.1fr 1fr; gap: 60px; align-items: center; }
@media (max-width: 900px) { .icbc-booking__inner { grid-template-columns: 1fr; gap: 30px; } }
.icbc-booking__h {
  font-family: var(--kw-font-display); font-weight: 400;
  font-size: var(--kw-fs-display); line-height: 1.0; letter-spacing: -.025em;
  margin: 14px 0 22px;
}
.icbc-booking__sub {
  font-family: var(--kw-font-serif); font-size: var(--kw-fs-body-lg);
  line-height: 1.6; color: rgba(243,239,231,.72); max-width: 540px; margin: 0;
}
.icbc-booking__cta-col { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; }
.icbc-booking__note { font-family: var(--kw-font-serif); font-size: 15.5px; color: rgba(243,239,231,.65); }
.icbc-booking__note a { color: var(--kw-paper); border-bottom: 1px solid rgba(243,239,231,.45); }

/* ----------------------------------------------------------------
   Mobile tightening
   --------------------------------------------------------------- */
@media (max-width: 760px) {
  .icbc-hero { padding: 130px 0 64px; min-height: 0; }
  .icbc-hero__cta { flex-direction: column; align-items: stretch; }
  .icbc-hero__cta .btn { width: 100%; justify-content: center; }
  .icbc-scene { margin-top: 30px; aspect-ratio: 7 / 5; }
  .icbc-billing, .icbc-claim, .icbc-recovery, .icbc-roof, .icbc-conditions { padding: 76px 0; }
  .icbc-booking { padding: 64px 0; }
  .icbc-card { padding: 30px 26px; }
  .icbc-claim__small { margin-bottom: 40px; }
  .icbc-track { margin-top: 48px; }
}

/* ================================================================
   ENHANCED MOTION — added pass
   ================================================================ */

/* scroll progress bar */
.icbc-progress {
  position: fixed; top: 0; left: 0; right: 0; height: 3px;
  z-index: 1200;
  transform: scaleX(0); transform-origin: 0 50%;
  background: linear-gradient(90deg, var(--kw-blue), #4a93d6);
  will-change: transform;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) { .icbc-progress { display: none; } }

/* staggered child reveals — gated on JS (armed) + the section's .in.
   Default (no-JS) stays fully visible. */
body.icbc-armed .icbc-rc { opacity: 0; transform: translateY(28px); will-change: opacity, transform; }
body.icbc-armed .reveal.in .icbc-rc {
  transition: opacity .65s var(--kw-ease), transform .65s var(--kw-ease);
  transition-delay: calc(var(--ci, 0) * 90ms);
  opacity: 1; transform: none;
}
@media (prefers-reduced-motion: reduce) {
  body.icbc-armed .icbc-rc { opacity: 1; transform: none; }
}

/* hero parallax smoothing (JS sets the transforms) */
.icbc-hero__copy, .icbc-scene { will-change: transform; }

/* hero ambient motes — slow upward drift, like a held breath */
.icbc-scene .mote { fill: var(--kw-blue-soft); opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
  .icbc-scene .mote { animation: icbc-mote 7s ease-in-out infinite; }
  .icbc-scene .mote.m2 { animation-duration: 9s; animation-delay: 1.4s; }
  .icbc-scene .mote.m3 { animation-duration: 8s; animation-delay: 3.1s; }
  .icbc-scene .mote.m4 { animation-duration: 10s; animation-delay: 2.2s; }
  .icbc-scene .mote.m5 { animation-duration: 8.6s; animation-delay: 4.4s; }
}
@keyframes icbc-mote {
  0%   { opacity: 0; transform: translateY(6px); }
  20%  { opacity: .55; }
  80%  { opacity: .35; }
  100% { opacity: 0; transform: translateY(-26px); }
}

/* goal seal glow halo */
.icbc-scene .goal-glow {
  fill: none; stroke: var(--scene-blue); stroke-width: 2;
  transform-box: fill-box; transform-origin: center; opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
  body.icbc-armed .icbc-scene.is-drawn .goal-glow { animation: icbc-glow 2.8s ease-out 2.2s infinite; }
}
@keyframes icbc-glow {
  0%   { transform: scale(.8); opacity: .7; }
  70%, 100% { transform: scale(1.7); opacity: 0; }
}

/* second, fainter trailing pulse on the recovery path */
.icbc-scene .pulse-trail { fill: var(--scene-blue); opacity: .5; }

/* recovery timeline: node halo pulses + a brighter lead pulse */
.icbc-track .t-node-halo {
  fill: none; stroke: var(--kw-blue); stroke-width: 2;
  transform-box: fill-box; transform-origin: center; opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
  body.icbc-armed .icbc-track.is-in .t-node-halo { animation: icbc-glow 3s ease-out infinite; }
  body.icbc-armed .icbc-track.is-in .t-node-halo.h2 { animation-delay: .5s; }
  body.icbc-armed .icbc-track.is-in .t-node-halo.h3 { animation-delay: 1s; }
}

/* claim steps: a connector dot that travels down the number rail on reveal */
.icbc-step__n { position: relative; overflow: visible; }
body.icbc-armed .reveal.in .icbc-step .icbc-step__n::after {
  content: ""; position: absolute; inset: -4px; border-radius: 999px;
  border: 1.5px solid var(--kw-blue); opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
  body.icbc-armed .reveal.in .icbc-step .icbc-step__n::after {
    animation: icbc-ring 1.6s var(--kw-ease) infinite;
    animation-delay: calc(1s + var(--ci, 0) * 200ms);
  }
}
@keyframes icbc-ring {
  0% { transform: scale(1); opacity: .6; }
  70%, 100% { transform: scale(1.8); opacity: 0; }
}

/* booking headline gets a soft rising entrance too */
.icbc-booking__h, .icbc-booking__sub, .icbc-booking__cta-col { will-change: transform; }
