/*
 * DataDab shared visual enhancements (pagespeed-safe).
 *
 * Loaded on every static page via ops/scripts/add_visual_enhance.py.
 *
 * Pagespeed contract:
 *  - Content is NEVER hidden in this stylesheet. `.reveal-init` is only added
 *    at runtime by reveal.js to elements already below the viewport, so LCP,
 *    CLS and First-Paint are untouched and there is no no-JS invisibility.
 *  - All motion uses opacity / transform (GPU-composited) — no layout or
 *    main-thread paint.
 *  - This file only ADDS decoration. It never changes an existing element's
 *    layout-affecting properties (display, position, width, margin, padding).
 *  - `prefers-reduced-motion: reduce` hard-disables all animation.
 */

/* ---- Scroll reveal (`.reveal-init`/`.visible` added at runtime only) ---- */
.reveal-init{
  opacity:0;
  transform:translateY(26px);
  transition:
    opacity .7s cubic-bezier(.4,0,.2,1),
    transform .7s cubic-bezier(.4,0,.2,1);
  will-change:opacity,transform;
}
.reveal-init.visible{opacity:1;transform:translateY(0)}

/* ---- GPU-safe ambient float (opt-in classes; harmless if unused) ---- */
@keyframes ddFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.hero-ingredient-float,.visual-float{animation:ddFloat 6s ease-in-out infinite}
@keyframes ddBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
.trail-more{animation:ddBounce 2.2s ease-in-out infinite}

/* ---- Subtle hover lift / deep shadow (box-shadow NEVER affects layout) ---- */
.problem-card:hover,.service-card:hover,.result-card:hover,.approach-step:hover,
.analysis-card:hover,.feature-card:hover,.value-card:hover,.section-card:hover{
  box-shadow:0 24px 48px rgba(26,35,50,.14)
}

/* ---- Motion off for users who prefer reduced motion ---- */
@media (prefers-reduced-motion: reduce){
  .reveal-init,.reveal-init.visible{transition:none!important;opacity:1!important;transform:none!important}
  .hero-ingredient-float,.visual-float,.trail-more{animation:none!important}
}