/* Auto-extracted from the DAWI static export. Keyframes + animation
   classes, with the prefers-reduced-motion disable rules removed so the
   animations run without the original React runtime. */

/* ---- keyframes ---- */
@keyframes partners-marquee-l {
            from { transform: translateX(0); }
            to   { transform: translateX(-50%); }
          }
@keyframes partners-marquee-r {
            from { transform: translateX(-50%); }
            to   { transform: translateX(0); }
          }
@keyframes for-doctors-marquee {
                from { transform: translateX(0); }
                to   { transform: translateX(-50%); }
              }
@keyframes collab-marquee-l {
            from { transform: translateX(-50%); }
            to   { transform: translateX(0); }
          }
@keyframes stories-marquee {
            from { transform: translateX(0); }
            to   { transform: translateX(-50%); }
          }
@keyframes anim-phoneFloat {
          0%, 100% { transform: translateY(0); }
          50% { transform: translateY(-8px); }
        }
@keyframes anim-bubbleDrift {
          0%, 100% { translate: 0 0; }
          50% { translate: 0 -5px; }
        }
@keyframes anim-stampIn {
          from { transform: scale(0.4); opacity: 0; }
          to   { transform: scale(1); opacity: 1; }
        }
@keyframes anim-bellRing {
          0%   { transform: rotate(0deg); }
          15%  { transform: rotate(15deg); }
          30%  { transform: rotate(-12deg); }
          45%  { transform: rotate(8deg); }
          60%  { transform: rotate(-4deg); }
          100% { transform: rotate(0deg); }
        }
@keyframes anim-cardIn {
          from { opacity: 0; transform: translateY(20px) rotate(-2deg); }
          to   { opacity: 1; transform: translateY(0) rotate(0deg); }
        }
@keyframes anim-scanSweep {
          from { top: -10px; opacity: 0; }
          10%  { opacity: 1; }
          90%  { opacity: 1; }
          to   { top: 110%; opacity: 0; }
        }
@keyframes anim-reviewedIn {
          from { opacity: 0; filter: blur(4px); transform: rotate(-6deg) scale(0.9); }
          to   { opacity: 1; filter: blur(0); transform: rotate(-6deg) scale(1); }
        }
@keyframes anim-doubleRing {
          0%   { transform: scale(1); opacity: 0.7; }
          100% { transform: scale(2); opacity: 0; }
        }
@keyframes anim-hdGlow {
          0%, 90%, 100% { text-shadow: 0 0 0 transparent; }
          95% { text-shadow: 0 0 12px rgba(67, 189, 204, 0.8); }
        }
@keyframes anim-sheen {
          from { left: -100%; }
          to   { left: 130%; }
        }
@keyframes anim-ecg {
          0%   { stroke-dashoffset: 200; }
          50%  { stroke-dashoffset: 0; }
          100% { stroke-dashoffset: -200; }
        }
@keyframes anim-connectGlow {
          0%, 100% { box-shadow: 0 0 0 0 rgba(246,153,138,0.5); }
          50% { box-shadow: 0 0 0 12px rgba(246,153,138,0); }
        }
@keyframes roadmap-scroll {
            from { transform: translateX(0); }
            to   { transform: translateX(-50%); }
          }
@keyframes expmap-line-draw {
          to { stroke-dashoffset: 0; }
        }
@keyframes expmap-pulse-live {
          0%, 100% { transform: scale(1); opacity: 0.6; }
          50% { transform: scale(1.8); opacity: 0; }
        }
@keyframes expmap-pulse-next {
          0%, 100% { transform: scale(1); opacity: 0.5; }
          50% { transform: scale(2); opacity: 0; }
        }
@keyframes hero-orbit-ping {
          0%   { transform: scale(0.6); opacity: 0; }
          15%  { opacity: 0.55; }
          100% { transform: scale(1.9); opacity: 0; }
        }
@keyframes hero-orbit-spin {
          from { transform: rotate(0deg); }
          to   { transform: rotate(360deg); }
        }
@keyframes hero-orbit-counter {
          from { transform: rotate(0deg); }
          to   { transform: rotate(-360deg); }
        }
@keyframes pipeline-station-pulse {
          0%   { transform: scale(1);   opacity: 0.7; }
          100% { transform: scale(2.2); opacity: 0; }
        }
@keyframes about-collab-marquee {
            from { transform: translateX(0); }
            to   { transform: translateX(-50%); }
          }

/* ---- animation classes ---- */
.about-collab-track {
            animation: about-collab-marquee 30s linear infinite;
            width: max-content;
          }
.anim-bell-ring { animation: anim-bellRing 700ms ease-in-out 1; }
.anim-bubble-drift { animation: anim-bubbleDrift 7s ease-in-out infinite; }
.anim-card-in { animation: anim-cardIn 600ms cubic-bezier(0.2,0.8,0.2,1) both; }
.anim-connect-glow { animation: anim-connectGlow 2.2s ease-in-out infinite; }
.anim-double-ring { animation: anim-doubleRing 2.2s ease-out infinite; }
.anim-double-ring-delay { animation: anim-doubleRing 2.2s ease-out 1.1s infinite; }
.anim-ecg { animation: anim-ecg 3s linear infinite; }
.anim-hd-glow { animation: anim-hdGlow 5s ease-in-out infinite; }
.anim-phone-float { animation: anim-phoneFloat 9s ease-in-out infinite; }
.anim-reviewed-in { animation: anim-reviewedIn 400ms cubic-bezier(0.2,0.8,0.2,1) 2.6s both; }
.anim-scan-sweep { animation: anim-scanSweep 2s ease-in-out 800ms 1 forwards; }
.anim-sheen { animation: anim-sheen 1.4s ease-out 600ms 1 forwards; }
.anim-stamp-in { animation: anim-stampIn 400ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }
.collab-track-l {
            animation: collab-marquee-l 30s linear infinite;
            width: max-content;
          }
.expmap-edge { stroke-dashoffset: 0 !important; }
.for-doctors-track {
                animation: for-doctors-marquee 45s linear infinite;
                width: max-content;
              }
.hero-orbit-counter { animation: hero-orbit-counter 60s linear infinite; }
.hero-orbit-ping { animation: hero-orbit-ping 4.5s ease-out infinite; }
.hero-orbit-ping2 { animation: hero-orbit-ping 4.5s ease-out 2.25s infinite; }
.hero-orbit-spin { animation: hero-orbit-spin 60s linear infinite; }
.partners-track-l {
            animation: partners-marquee-l 14s linear infinite;
            width: max-content;
          }
.partners-track-r {
            animation: partners-marquee-r 18s linear infinite;
            width: max-content;
          }
.roadmap-track {
            animation: roadmap-scroll 60s linear infinite;
          }
.stories-track {
            animation: stories-marquee 80s linear infinite;
            width: max-content;
          }

/* ---- reveal-on-scroll support (replaces the React scroll runtime) ----
   Elements start hidden; landing.js adds .is-revealed when they scroll in. */
[data-anim] {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity .6s cubic-bezier(.22, 1, .36, 1),
        transform .6s cubic-bezier(.22, 1, .36, 1);
}
[data-anim].is-revealed {
    opacity: 1;
    transform: none;
}


/* Pause the roadmap marquee on hover (matches original inline style). */
.roadmap-track:hover { animation-play-state: paused; }
.partners-track-l:hover,
.partners-track-r:hover,
.stories-track:hover,
.collab-track-l:hover,
.about-collab-track:hover,
.for-doctors-track:hover { animation-play-state: paused; }

/* ---- section-entrance reveal (JS adds .is-revealed on scroll) ----
   Applied to section content children by landing.js; gentle fade + rise,
   matching the original React scroll-in without touching page markup. */
.landing-entrance {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity .7s cubic-bezier(.22, 1, .36, 1),
        transform .7s cubic-bezier(.22, 1, .36, 1);
    will-change: opacity, transform;
}
.landing-entrance.is-revealed {
    opacity: 1;
    transform: none;
}
@media (prefers-reduced-motion: reduce) {
    .landing-entrance { opacity: 1; transform: none; transition: none; }
}
