/* ==========================================================================
   HireBeep — page-level animations & element resets
   Extracted from the second <style> block of the original bundle.
   ========================================================================== */

  html, body { margin: 0; background: var(--surface-canvas); scroll-behavior: smooth; }

  /* ------------------------------------------------------------------------
     Reveal-on-scroll: the starting (hidden) state.

     This used to be an inline `opacity:0; transform:translateY(28px)` on all
     24 targets — which is nearly every block on the page — so if the bundle
     failed to load, nothing ever set opacity back to 1 and the site rendered
     as a blank cream page. It now hangs off `.js`, which the inline script in
     <head> only adds when scripting is alive, and which that script takes back
     off if the bundle never boots. Hiding content is therefore a promise that
     something will un-hide it.

     The :not([data-revealed]) guard is load-bearing, not decoration.
     js/modules/reveal.js finishes by REMOVING the inline transform rather than
     setting it to 'none', because an inline transform of any value outranks
     the :hover lifts in css/components.css. The moment it does that this rule
     would win again and drop the element back down 28px — so reveal.js stamps
     [data-revealed] in the same breath to switch it off for good.
     ------------------------------------------------------------------------ */
  .js [data-reveal]:not([data-revealed]) {
    opacity: 0;
    transform: translateY(var(--reveal-y, 28px));
  }

  /* There is no entrance to wait for when motion is reduced, so don't hide it
     in the first place — that also drops the JS dependency for these users. */
  @media (prefers-reduced-motion: reduce) {
    .js [data-reveal]:not([data-revealed]) { opacity: 1; transform: none; }
  }

  a { color: var(--text-link); text-decoration: none; }
  a:hover { color: var(--text-link-hover); }
  @keyframes hb-float  { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-11px) } }
  @keyframes hb-float2 { 0%,100% { transform: translateY(0) } 50% { transform: translateY(9px) } }
  @keyframes hb-drift  { 0% { transform: translate(0,0) scale(1) } 50% { transform: translate(34px,-26px) scale(1.12) } 100% { transform: translate(0,0) scale(1) } }
  @keyframes hb-drift2 { 0% { transform: translate(0,0) scale(1) } 50% { transform: translate(-30px,22px) scale(1.1) } 100% { transform: translate(0,0) scale(1) } }
  @keyframes hb-marquee { from { transform: translateX(0) } to { transform: translateX(-50%) } }
  @keyframes hb-underline { from { transform: scaleX(0) } to { transform: scaleX(1) } }
  @keyframes hb-pulse { 0%,100% { opacity: .55; transform: scale(1) } 50% { opacity: 1; transform: scale(1.12) } }
  @keyframes hb-spin { to { transform: rotate(360deg) } }
  @keyframes hb-ping { 0% { transform: scale(1); opacity: .7 } 80%,100% { transform: scale(2.2); opacity: 0 } }
