/* Free tools: hero diagrams, result motion and the route strip (26 Sep 2026).
   Brand colours only: Charcoal #232A31, Off-White #FAFAF8, Consulting Blue #1B3A5B,
   Light Blue #AFC4DD, Steel Grey #586069, Soft Stone #E5E5E2. */

/* ---------- AI Health Check hero diagram ---------- */
.hc-dia { margin: 0; width: 100%; max-width: 600px; display: flex; flex-direction: column; align-items: center; }
.hc-dia__svg { display: block; width: 100%; height: auto; overflow: visible; }
.hc-track { fill: none; stroke: rgba(175, 196, 221, 0.14); stroke-width: 8; opacity: 0; }
.hc-arc { fill: none; stroke: #AFC4DD; stroke-width: 8; stroke-linecap: round; opacity: 0; }
.hc-arc--weak { stroke: #FAFAF8; }
.hc-spoke { stroke: #AFC4DD; stroke-width: 1.6; opacity: 0; }
.hc-chord { stroke: #AFC4DD; stroke-width: 1; opacity: 0; }
.hc-rim { stroke: #AFC4DD; stroke-width: 2; stroke-linecap: round; opacity: 0; }
.hc-pulse { fill: #FAFAF8; opacity: 0; }
.hc-halo { fill: none; stroke: #AFC4DD; stroke-width: 1; opacity: 0; }
.hc-hub { fill: #1B3A5B; stroke: #AFC4DD; stroke-width: 1.6; }
.hc-hub.is-quiet { fill: transparent; stroke: rgba(175, 196, 221, 0.4); }
.hc-you { font: 600 18px 'Source Sans 3', system-ui, sans-serif; fill: #FAFAF8; text-anchor: middle; dominant-baseline: central; }
.hc-you.is-small { font-size: 12px; fill: #AFC4DD; }
.hc-num { font: 400 60px 'Fraunces', Georgia, serif; fill: #FAFAF8; text-anchor: middle; dominant-baseline: central; opacity: 0; }
.hc-of { font: 600 14px 'Source Sans 3', system-ui, sans-serif; fill: #AFC4DD; text-anchor: middle; opacity: 0; }
.hc-dot { fill: #232A31; stroke: #AFC4DD; stroke-width: 1.6; transition: fill .3s ease-out, r .3s ease-out; }
.hc-node.is-linked .hc-dot { fill: #AFC4DD; }
.hc-node.is-flag .hc-dot { fill: #FAFAF8; stroke: #FAFAF8; r: 11px; }
.hc-label { font: 600 17px 'Source Sans 3', system-ui, sans-serif; fill: #AFC4DD; }
.hc-score { font: 500 16px 'IBM Plex Mono', ui-monospace, monospace; fill: #AFC4DD; opacity: 0; }
.hc-node--weak .hc-label, .hc-node--weak .hc-score { fill: #FAFAF8; }
.hc-tag { opacity: 0; }
.hc-tag rect { fill: #FAFAF8; }
.hc-tag text { font: 600 14px 'Source Sans 3', system-ui, sans-serif; fill: #232A31; text-anchor: middle; dominant-baseline: central; }
.hc-dia__cap { min-height: 2.9em; margin: 4px 0 0; max-width: 30em; text-align: center; font-size: 16px; line-height: 1.45; color: #FAFAF8; }
.hc-dia__cap.is-in { animation: tm-rise .5s cubic-bezier(.2, .8, .2, 1) both; }

/* ---------- ROI calculator hero ---------- */
.roi-hero { display: grid; grid-template-columns: minmax(0, 1fr); max-width: 760px; gap: clamp(32px, 5vw, 72px); align-items: center; }
.roi-hero__actions { margin-top: 28px; display: flex; flex-wrap: wrap; gap: 14px 22px; align-items: center; }

/* ---------- Result motion ---------- */
.dx-dial { position: relative; width: min(300px, 70vw); aspect-ratio: 1; margin: 18px 0 8px; }
.dx-dial svg { display: block; width: 100%; height: 100%; transform: rotate(-90deg); }
.dx-dial__track { fill: none; stroke: rgba(175, 196, 221, 0.14); stroke-width: 14; }
.dx-dial__arc { fill: none; stroke: #AFC4DD; stroke-width: 14; stroke-linecap: round; }
.dx-dial__in { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; }
.dx-dial .dx-score__num { font-size: clamp(64px, 9vw, 96px); font-variant-numeric: tabular-nums; }
.dx-row.is-weak .dx-row__label { color: #FAFAF8; font-weight: 600; }
.dx-row.is-weak .dx-row__fill { background: #FAFAF8; }
.dx-row__flag { display: inline-block; margin-left: 10px; font: 600 13px/1 'Source Sans 3', system-ui, sans-serif; letter-spacing: 0; text-transform: none; color: #232A31; background: #FAFAF8; border-radius: 999px; padding: 5px 9px; vertical-align: 2px; animation: tm-rise .4s cubic-bezier(.2, .8, .2, 1) both; animation-delay: 1.1s; }

.roi-stack { display: flex; gap: 6px; margin: 22px 0 6px; }
.roi-stack__b { flex: 0 0 auto; min-width: 0; border-radius: 10px; padding: 10px 12px; color: #232A31; background: #AFC4DD; overflow: hidden; transform-origin: left; }
.roi-stack.is-fresh .roi-stack__b { animation: tm-grow .6s cubic-bezier(.2, .8, .2, 1) both; }
.roi-stack__n { display: block; font: 600 13px/1.25 'Source Sans 3', system-ui, sans-serif; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.roi-stack__v { display: block; margin-top: 4px; font: 400 11px/1 'IBM Plex Mono', ui-monospace, monospace; white-space: nowrap; }

/* ---------- Route strip: where this tool sits on the way through ---------- */
.bl-route { margin: 30px 0 6px; padding-top: 22px; border-top: 1px solid rgba(175, 196, 221, 0.2); text-align: left; }
.bl-route__k { margin: 0 0 14px; font: 600 13px/1.4 'Source Sans 3', system-ui, sans-serif; letter-spacing: 0; text-transform: none; color: #AFC4DD; }
.bl-route__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--steps, 4), minmax(0, 1fr)); position: relative; }
.bl-route__list::before { content: ''; position: absolute; left: 7px; right: calc(100% / var(--steps, 4)); top: 7px; height: 2px; background: rgba(175, 196, 221, 0.28); transform-origin: left; animation: tm-grow 1s cubic-bezier(.2, .8, .2, 1) both; }
.bl-route__step { position: relative; padding-top: 28px; padding-right: 10px; font-size: 14px; line-height: 1.35; color: rgba(250, 250, 248, 0.55); animation: tm-rise .45s cubic-bezier(.2, .8, .2, 1) both; }
.bl-route__step:nth-child(2) { animation-delay: .12s; } .bl-route__step:nth-child(3) { animation-delay: .24s; } .bl-route__step:nth-child(4) { animation-delay: .36s; } .bl-route__step:nth-child(5) { animation-delay: .48s; }
.bl-route__step::before { content: ''; position: absolute; left: 1px; top: 1px; width: 10px; height: 10px; border-radius: 50%; border: 1.6px solid #AFC4DD; background: #232A31; }
.bl-route__step.is-done::before { background: #AFC4DD; }
.bl-route__step.is-next { color: #FAFAF8; font-weight: 600; }
.bl-route__step.is-next::before { background: #AFC4DD; width: 14px; height: 14px; left: -1px; top: -1px; outline: 2px solid rgba(175, 196, 221, 0); animation: tm-ping 1.6s ease-out 2 .8s; }
.bl-route__m { display: block; margin-top: 4px; font: 600 13px/1.2 'Source Sans 3', system-ui, sans-serif; letter-spacing: 0; text-transform: none; color: #AFC4DD; font-weight: 600; }
@media (max-width: 640px) {
  .bl-route__list { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .bl-route__list::before { right: auto; bottom: 7px; width: 2px; height: auto; }
  .bl-route__step { padding: 0 0 0 28px; }
}

@keyframes tm-rise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes tm-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes tm-ping { from { outline-color: rgba(175, 196, 221, 0.6); outline-offset: 0; } to { outline-color: rgba(175, 196, 221, 0); outline-offset: 10px; } }

@media (max-width: 520px) {
  .hc-label { font-size: 18px; } .hc-score { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .hc-dia__cap.is-in, .dx-row__flag, .roi-stack__b, .bl-route__list::before, .bl-route__step, .bl-route__step.is-next::before { animation: none; }
}

/* Page heading kept for search and screen readers after the visible top block was removed (Kristian, 27 Sep 2026). */
.roi-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.fs-section--hero:has(> .fs-wrap > .roi-sr) { padding-top: 104px; }
.fs-section--hero .roi-switch { margin-left: auto; margin-right: auto; }

/* Visible page heading above the two calculators (Kristian, 30 Sep 2026: the page
   opened on the tab cards with no title). Centred over the centred tab cards. */
.fs-section--hero:has(> .fs-wrap > .roi-head) { padding-top: 104px; }
.roi-head { max-width: 760px; margin: 0 auto clamp(24px, 3vw, 36px); text-align: center; }
.roi-head__h { margin: 0; }
.roi-head__lead { margin: 12px auto 0; max-width: 36em; text-wrap: pretty; }
.roi-head__h { text-wrap: balance; }
