/* Local comparison only. All rules stay inside the existing right-hand hero. */
.cvo .service-scene{min-height:0;aspect-ratio:660/500;background:radial-gradient(ellipse at 50% 44%,rgba(25,125,151,.15),transparent 65%),#04172c}
.cvo .service-scene>svg.cvo-art{display:block;width:100%;height:auto}
.cvo-art text{font-family:var(--ddd-font-family);fill:#d7eff3;font-weight:650;font-size:18px;stroke:none}
.cvo-art .cvo-small{font-size:14px;font-weight:600;letter-spacing:.1em;fill:#83afbd}
.cvo-art .cvo-muted{fill:#80a8b8;font-size:16px;font-weight:500}
.cvo-art .cvo-title{fill:#c3f6fa;font-size:20px;font-weight:750;letter-spacing:.065em}
.cvo-art .cvo-cyan{fill:#6ce6ee}
.cvo-art .cvo-ice{fill:#e0fcff}
.cvo-art .cvo-rule{fill:none;stroke:#235366;stroke-width:1.2}
.cvo-art .cvo-panel{fill:#08283e;stroke:#28677b;stroke-width:1.3}
.cvo-art .cvo-soft-panel{fill:#071f33;stroke:#1d4c60;stroke-width:1.2}
.cvo-art .cvo-line{fill:none;stroke:#61dce6;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cvo-art .cvo-thin{fill:none;stroke:#429aac;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.cvo-art .cvo-wire{fill:none;stroke:#2b6b7d;stroke-width:1.4;stroke-dasharray:4 7;stroke-linecap:round}
.cvo-art .cvo-check{fill:none;stroke:#a2f4f7;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.cvo-art .cvo-node{fill:#092e43;stroke:#4ebdcc;stroke-width:1.8}
.cvo-art .cvo-glow{filter:drop-shadow(0 0 11px rgba(76,226,236,.3))}
.cvo-art .cvo-caption{font-size:15px;fill:#9cc2cd;font-weight:500}
.cvo-funnel-caption-mobile{display:none}

/* 01: suspended, curved funnel layers. */
.cvo--funnel .cvo-band{fill:url(#cv-funnel-face);stroke:#46a8bc;stroke-width:1.5;filter:drop-shadow(0 9px 8px rgba(0,10,24,.34))}
.cvo--funnel .cvo-band-lip{fill:none;stroke:#75e3e9;stroke-width:1.3;opacity:.55}
.cvo--funnel .cvo-band-rim{fill:none;stroke:#255f75;stroke-width:1.3}
.cvo--funnel .cvo-band-last{fill:url(#cv-funnel-goal);stroke:#70e7ec}
.cvo--funnel .cvo-band-text{font-size:22px;font-weight:750;letter-spacing:.055em}
.cvo--funnel .cvo-band-text-last{font-size:23px;fill:#e2ffff}
.cvo--funnel .cvo-band-wash{fill:url(#cv-funnel-fill);opacity:.48;pointer-events:none}
.cvo--funnel .cvo-fill-window{transform-box:fill-box;transform-origin:center bottom}
.cvo--funnel.is-live .cvo-fill-window{animation-duration:8s;animation-timing-function:cubic-bezier(.25,.6,.35,1);animation-iteration-count:infinite}
.cvo--funnel.is-live .cvo-fill-window-1{animation-name:cv-funnel-fill-1}
.cvo--funnel.is-live .cvo-fill-window-2{animation-name:cv-funnel-fill-2}
.cvo--funnel.is-live .cvo-fill-window-3{animation-name:cv-funnel-fill-3}
.cvo--funnel.is-live .cvo-fill-window-4{animation-name:cv-funnel-fill-4}
.cvo--funnel .cvo-complete{opacity:.22}
.cvo--funnel .build-bay-status>span{font-size:11px!important}
.cvo--funnel .cvo-footer-caption{display:block;font:inherit;color:inherit;text-transform:uppercase}
/* Compensate SVG scaling in screen pixels: subtitle 13px, bottom phrase 14px. */
@media(min-width:761px){
  .cvo--funnel .cvo-art .cvo-caption[data-hc-font]{font-size:calc(var(--hc-floor-font) * 13 / 11)!important}
  .cvo--funnel .cvo-art .cvo-funnel-bottom-caption[data-hc-font]{font-size:calc(var(--hc-floor-font) * 14 / 11)!important}
}
/* Same timeline as the four fills: confirmation starts after step 4 is full. */
.cvo--funnel.is-live .cvo-complete{animation:cv-funnel-complete 8s ease-in-out infinite}
@keyframes cv-funnel-complete{0%,66%,100%{opacity:.22}71%,81%,88%{opacity:1}76%{opacity:.3}96%{opacity:.22}}
@keyframes cv-funnel-fill-1{0%,3%,100%{transform:scaleY(0);opacity:1}19%,80%{transform:scaleY(1);opacity:1}96%{transform:scaleY(1);opacity:0}}
@keyframes cv-funnel-fill-2{0%,19%,100%{transform:scaleY(0);opacity:1}35%,80%{transform:scaleY(1);opacity:1}96%{transform:scaleY(1);opacity:0}}
@keyframes cv-funnel-fill-3{0%,35%,100%{transform:scaleY(0);opacity:1}51%,80%{transform:scaleY(1);opacity:1}96%{transform:scaleY(1);opacity:0}}
@keyframes cv-funnel-fill-4{0%,51%,100%{transform:scaleY(0);opacity:1}67%,80%{transform:scaleY(1);opacity:1}96%{transform:scaleY(1);opacity:0}}

/* 02: a quiet discarded detour and a legible direct route. */
.cvo--route .cvo-detour{fill:none;stroke:#386779;stroke-width:2;stroke-dasharray:5 9;stroke-linecap:round;opacity:.55}
.cvo--route .cvo-direct-glow{fill:none;stroke:#3bd6e7;stroke-width:14;opacity:.07;stroke-linecap:round}
.cvo--route .cvo-direct{fill:none;stroke:#5bdce7;stroke-width:2.6;stroke-linecap:round}
.cvo--route .cvo-route-flow{fill:none;stroke:#d2ffff;stroke-width:4;stroke-linecap:round;stroke-dasharray:12 500;opacity:.9}
.cvo--route.is-live .cvo-route-flow{animation:cv-route-flow 7s linear infinite}
.cvo--route .cvo-route-label{font-size:18px;font-weight:750;letter-spacing:.055em}
.cvo--route .cvo-detour-node{fill:#092235;stroke:#477385;stroke-width:1.4}
.cvo--route.is-live .cvo-route-target{animation:cv-route-target 7s ease-in-out infinite}
@keyframes cv-route-flow{from{stroke-dashoffset:80}to{stroke-dashoffset:-444}}
@keyframes cv-route-target{0%,42%,100%{opacity:.2}63%,78%{opacity:.6}}

/* 03: one controlled experiment, not an invented performance report. */
.cvo--test .cvo-test-a{fill:#071e31;stroke:#315a6c;stroke-width:1.4}
.cvo--test .cvo-test-b{fill:url(#cv-test-face);stroke:#50c4d3;stroke-width:1.6}
.cvo--test .cvo-skeleton{fill:#24536a}
.cvo--test .cvo-skeleton-light{fill:#7ab6c3}
.cvo--test .cvo-field{fill:#0a2b40;stroke:#24576c;stroke-width:1}
.cvo--test .cvo-cta{fill:#62e1e9;stroke:#95f2f5;stroke-width:1}
.cvo--test .cvo-cta-text{fill:#062c3f;font-size:15px;font-weight:800;letter-spacing:.025em}
.cvo--test .cvo-test-label{fill:#a0bdc8;font-size:16px;font-weight:650}
.cvo--test .cvo-test-label-b{fill:#9cf1f4}
.cvo--test .cvo-pointer{fill:#ddfbff;stroke:#0a3c50;stroke-width:2;stroke-linejoin:round;filter:drop-shadow(0 3px 5px rgba(0,0,0,.24))}
.cvo--test.is-live .cvo-pointer{animation:cv-pointer 7s ease-in-out infinite}
.cvo--test .cvo-test-pulse{fill:none;stroke:#6be3ed;stroke-width:1.3;opacity:.25;transform-box:fill-box;transform-origin:center}
.cvo--test.is-live .cvo-test-pulse{animation:cv-test-pulse 7s ease-in-out infinite}
.cvo--test .cvo-test-step{fill:#0a2c42;stroke:#2a667b;stroke-width:1.2}
.cvo--test .cvo-test-step-active{stroke:#4bb5c4;fill:#0b364b}
.cvo--test.is-live .cvo-test-progress{animation:cv-test-progress 7s ease-in-out infinite;transform-origin:left;transform-box:fill-box}
@keyframes cv-pointer{0%,100%{transform:translate(0,0)}38%,65%{transform:translate(-8px,-9px)}}
@keyframes cv-test-pulse{0%,18%,78%,100%{opacity:0;transform:scale(.8)}40%,60%{opacity:.45;transform:scale(1.18)}}
@keyframes cv-test-progress{0%,100%{opacity:.3}50%{opacity:1}}
@media(max-width:760px){
  .cvo .service-scene{min-height:0;aspect-ratio:660/500}
  .cvo .build-bay-status>span{padding-inline:3px}
  .cvo--funnel .service-scene{height:auto;aspect-ratio:auto}
  .cvo--funnel .cvo-art .cvo-caption{display:none}
  .cvo--funnel .cvo-funnel-caption-mobile{display:block;margin:0;padding:0 16px 16px;color:#9cc2cd;font-family:var(--ddd-font-family);font-size:15px;font-weight:500;line-height:1.5;text-align:center}
  /* One centred line per mobile stage; the desktop subtitle is hidden. */
  .cvo--funnel .cvo-band-text{dominant-baseline:central;transform:none}
  .cvo--funnel [data-stage="1"] .cvo-band-text{transform:translateY(3.75px)}
  .cvo--funnel [data-stage="2"] .cvo-band-text{transform:translateY(-12.75px)}
  .cvo--funnel [data-stage="3"] .cvo-band-text{transform:translateY(-11px)}
  .cvo--funnel [data-stage="4"] .cvo-band-text{transform:translateY(-12px)}
  .cvo--funnel .build-bay-status>span{display:grid;grid-template-rows:minmax(31.2px,auto) minmax(29.7px,auto);align-items:center;gap:5px;padding:9px 4px}
  .cvo--funnel .build-bay-status b{margin:0;font-size:12px!important;line-height:1.3}
  .cvo--funnel .cvo-footer-caption{align-self:start;text-transform:none;line-height:1.35}
}
@media(max-width:760px) and (orientation:portrait){
  .cvo--funnel .build-bay-status{grid-template-columns:minmax(0,1fr);gap:7px}
  .cvo--funnel .build-bay-status>span{grid-template-rows:auto auto;gap:4px;padding:10px 12px;text-align:left}
}
/* Curved original: result-only confirmation and tighter footer, without changing
   the separate geometry comparisons or the stage-fill timeline. */
.cvo--funnel:not(.cvo-geometry) .build-bay-status>span{padding-block:8px}
.cvo--funnel:not(.cvo-geometry) .cvo-complete{opacity:0}
.cvo--funnel:not(.cvo-geometry).is-live .cvo-complete{animation-name:cv-funnel-confirmed}
.cvo--funnel:not(.cvo-geometry).is-live .cvo-complete .cvo-check{stroke-dasharray:42;animation:cv-funnel-check-draw 8s ease-in-out infinite}
@keyframes cv-funnel-confirmed{0%,67%,96%,100%{opacity:0}74%,88%{opacity:1}}
@keyframes cv-funnel-check-draw{0%,67%,100%{stroke-dashoffset:42}75%,96%{stroke-dashoffset:0}}
@media(min-width:761px){.cvo--funnel:not(.cvo-geometry) .cvo-complete{transform:translateY(3.5px)}}
@media(max-width:760px){
  .cvo--funnel:not(.cvo-geometry) .cvo-funnel-caption-mobile{margin-top:0;padding-bottom:14px}
}
@media(max-width:760px) and (orientation:portrait){
  .cvo--funnel:not(.cvo-geometry) .build-bay-status>span{text-align:center;justify-items:center}
  .cvo--funnel:not(.cvo-geometry) .build-bay-status b{font-size:14px!important}
  .cvo--funnel:not(.cvo-geometry) .cvo-footer-caption{font-size:13px!important}
  .cvo--funnel:not(.cvo-geometry) .cvo-funnel-caption-mobile{margin-top:-4px}
  .cvo--funnel:not(.cvo-geometry) .service-scene>svg.cvo-art{transform:translateY(4px)}
}
@media(prefers-reduced-motion:reduce){.cvo--funnel:not(.cvo-geometry) .cvo-complete{opacity:1}}
@media(min-width:1024px) and (max-width:1366px) and (min-height:601px) and (orientation:landscape){
  .cvo--funnel:not(.cvo-geometry) .build-bay-status b{font-size:13px!important}
  .cvo--funnel:not(.cvo-geometry) .cvo-footer-caption{font-size:12px!important}
}
@media(min-width:1024px) and (max-width:1194px) and (min-height:601px) and (max-height:800px) and (orientation:landscape){
  .cvo--funnel:not(.cvo-geometry) .cvo-art .cvo-funnel-bottom-caption[data-hc-font]{font-size:calc(var(--hc-floor-font) * 16 / 11)!important}
}
@media(prefers-reduced-motion:reduce){.cvo *,.cvo:after{animation:none!important;transition:none!important}.cvo--funnel .cvo-band-wash{opacity:.32}.cvo--funnel .cvo-complete{opacity:1}.cvo--funnel .cvo-complete .cvo-check{stroke-dashoffset:0}.cvo--route .cvo-route-flow{display:none}.cvo--test .cvo-test-pulse{opacity:.25}}

/* Approved status sizes take priority over landscape readability overrides. */
body .build-bay.service-visual-conversion.cvo.cvo--funnel>.build-bay-status>span,
body .build-bay.service-visual-conversion.cvo.cvo--funnel>.build-bay-status>span>small{font-size:10px!important}
body .build-bay.service-visual-conversion.cvo.cvo--funnel>.build-bay-status>span>b{font-size:12px!important}
@media(max-width:760px){body .build-bay.service-visual-conversion.cvo.cvo--funnel>.build-bay-status>span>b{font-size:11px!important}}
