/* Global site animations */
/* Prevent off-canvas mobile drawer from creating horizontal scroll */
html, body { overflow-x: clip; }

@keyframes rf-fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes rf-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes rf-fade-left {
  from { opacity: 0; transform: translateX(-28px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes rf-fade-right {
  from { opacity: 0; transform: translateX(28px); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes rf-zoom-in {
  from { opacity: 0; transform: scale(0.92); }
  to { opacity: 1; transform: scale(1); }
}
@keyframes rf-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
@keyframes rf-pulse-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(27, 95, 193, 0.35); }
  50% { box-shadow: 0 0 0 14px rgba(27, 95, 193, 0); }
}
@keyframes rf-gradient-shift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes rf-shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

/* Reveal-on-scroll base — only promote to layer while animating */
[data-rf-reveal] {
  opacity: 0;
  transform: translate3d(0,0,0);
  backface-visibility: hidden;
}
[data-rf-reveal].rf-in {
  will-change: transform, opacity;
  animation-duration: 0.7s;
  animation-timing-function: cubic-bezier(.2,.7,.2,1);
  animation-fill-mode: forwards;
}
/* Free GPU layer after the animation finishes */
[data-rf-reveal].rf-done {
  will-change: auto;
  opacity: 1;
  transform: none;
  animation: none;
}
[data-rf-reveal="up"].rf-in     { animation-name: rf-fade-up; }
[data-rf-reveal="fade"].rf-in   { animation-name: rf-fade-in; }
[data-rf-reveal="left"].rf-in   { animation-name: rf-fade-left; }
[data-rf-reveal="right"].rf-in  { animation-name: rf-fade-right; }
[data-rf-reveal="zoom"].rf-in   { animation-name: rf-zoom-in; }

/* Hero entrance (first paint) */
.rf-hero-in > * {
  opacity: 0;
  animation: rf-fade-up 0.7s cubic-bezier(.2,.7,.2,1) forwards;
}
.rf-hero-in > *:nth-child(1) { animation-delay: 0.05s; }
.rf-hero-in > *:nth-child(2) { animation-delay: 0.16s; }
.rf-hero-in > *:nth-child(3) { animation-delay: 0.28s; }
.rf-hero-in > *:nth-child(4) { animation-delay: 0.40s; }
.rf-hero-in > *:nth-child(5) { animation-delay: 0.52s; }
.rf-hero-in > *:nth-child(6) { animation-delay: 0.62s; }

/* Interactive hover polish — only on real hover devices, transform-only */
@media (hover: hover) and (pointer: fine) {
  .card, [class*="card"], [class*="Card"], .btn, a.btn, button {
    transition: transform .25s cubic-bezier(.2,.7,.2,1), box-shadow .25s ease;
  }
  .card:hover, [class*="card"]:hover, [class*="Card"]:hover {
    transform: translate3d(0,-4px,0);
  }
  .btn:hover, a.btn:hover, button:hover {
    transform: translate3d(0,-1px,0);
  }
}

/* Image reveal */
img:not(.rf-no-anim) {
  transition: opacity .4s ease;
}

/* Floating accent utility */
.rf-float { animation: rf-float 5s ease-in-out infinite; will-change: transform; }

/* Gradient text/bg animation */
.rf-gradient-anim {
  background-size: 200% 200%;
  animation: rf-gradient-shift 8s ease infinite;
}

/* Low-end device / data saver — disable reveals and decorative loops */
html.rf-lite [data-rf-reveal],
html.rf-lite .rf-hero-in > * {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
  will-change: auto !important;
}
html.rf-lite .rf-float,
html.rf-lite .rf-gradient-anim,
html.rf-lite .rf-pulse-glow { animation: none !important; }


/* Gradient text/bg animation */
.rf-gradient-anim {
  background-size: 200% 200%;
  animation: rf-gradient-shift 8s ease infinite;
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  [data-rf-reveal], .rf-hero-in > *, .rf-float, .rf-gradient-anim {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  * { transition: none !important; }
}

/* Site-wide disable */
html.rf-anim-off [data-rf-reveal],
html.rf-anim-off .rf-hero-in > *,
html.rf-anim-off .rf-float,
html.rf-anim-off .rf-gradient-anim {
  animation: none !important;
  opacity: 1 !important;
  transform: none !important;
}
html.rf-anim-off *,
html.rf-anim-off *::before,
html.rf-anim-off *::after {
  transition: none !important;
  animation: none !important;
}

/* Toggle button */
.rf-anim-toggle {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 9999;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(11, 44, 92, 0.92);
  color: #fff;
  font: 600 12.5px/1 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  letter-spacing: 0.02em;
  cursor: pointer;
  box-shadow: 0 10px 28px rgba(6, 26, 56, 0.28);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: transform .2s ease, background-color .2s ease, box-shadow .2s ease;
}
.rf-anim-toggle:hover { transform: translateY(-1px); background: #1B5FC1; }
.rf-anim-toggle .rf-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #1E9E5A; box-shadow: 0 0 0 3px rgba(30,158,90,0.22);
}
html.rf-anim-off .rf-anim-toggle .rf-dot {
  background: #94a3b8; box-shadow: 0 0 0 3px rgba(148,163,184,0.22);
}
@media (max-width: 480px) {
  .rf-anim-toggle { right: 12px; bottom: 12px; padding: 8px 12px; font-size: 12px; }
}

/* Page transitions */
@keyframes rf-page-in {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes rf-page-out {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(-8px); }
}
html.rf-anim-on body {
  animation: rf-page-in .45s cubic-bezier(.2,.7,.2,1) both;
}
html.rf-page-leaving body {
  animation: none !important;
}
html.rf-anim-off body,
html.rf-anim-off.rf-page-leaving body {
  animation: none !important;
}

/* Top progress bar */
#rf-progress {
  position: fixed; top: 0; left: 0; height: 2px; width: 0;
  background: linear-gradient(90deg, #1B5FC1, #4FA8E0);
  box-shadow: 0 0 10px rgba(27,95,193,.6);
  z-index: 10000; opacity: 0;
  transition: width .25s ease, opacity .3s ease;
  pointer-events: none;
}
#rf-progress.rf-active { opacity: 1; }
html.rf-anim-off #rf-progress { display: none; }

/* ===== Route-transition skeleton overlay =====
   Disabled: the full-screen white skeleton could remain visible after cancelled
   navigations in embedded previews. Keep the selector inert for old markup. */
@keyframes rf-skel-shimmer {
  0% { background-position: -400px 0; }
  100% { background-position: 400px 0; }
}
@keyframes rf-skel-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
#rf-skeleton {
  position: fixed; inset: 0; z-index: -1;
  background: transparent;
  pointer-events: none;
  opacity: 0 !important; visibility: hidden !important;
  display: flex; flex-direction: column; gap: 20px;
  padding: 96px 6vw 40px;
  overflow: hidden;
}
html.rf-page-leaving #rf-skeleton {
  visibility: hidden !important;
  animation: none !important;
}
#rf-skeleton .rf-sk {
  border-radius: 12px;
  background: linear-gradient(90deg, #eef2f7 0%, #f7f9fc 40%, #eef2f7 80%);
  background-size: 800px 100%;
  animation: rf-skel-shimmer 1.2s linear infinite;
}
#rf-skeleton .rf-sk-nav   { height: 56px; margin: -56px -6vw 24px; border-radius: 0; opacity: .85; }
#rf-skeleton .rf-sk-hero  { height: 240px; }
#rf-skeleton .rf-sk-line  { height: 14px; }
#rf-skeleton .rf-sk-line.w-70 { width: 70%; }
#rf-skeleton .rf-sk-line.w-50 { width: 50%; }
#rf-skeleton .rf-sk-grid  { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 12px; }
#rf-skeleton .rf-sk-card  { height: 180px; }
@media (max-width: 720px) {
  #rf-skeleton { padding: 80px 5vw 24px; }
  #rf-skeleton .rf-sk-grid { grid-template-columns: 1fr; }
  #rf-skeleton .rf-sk-hero { height: 180px; }
}
html.rf-anim-off #rf-skeleton { display: none; }
@media (prefers-reduced-motion: reduce) {
  #rf-skeleton .rf-sk { animation: none; }
}

/* ===== Mobile menu drawer ===== */
.rf-mm-backdrop{position:fixed;inset:0;background:rgba(4,18,46,.55);backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;z-index:80}
.rf-mm-backdrop.open{opacity:1;visibility:visible}
.rf-mm-panel{position:fixed;top:0;right:0;bottom:0;width:min(360px,86vw);background:linear-gradient(180deg,#04122E 0%,#0A2A66 100%);color:#fff;z-index:81;transform:translateX(100%);transition:transform .35s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column;box-shadow:-20px 0 60px -10px rgba(0,0,0,.5)}
.rf-mm-panel.open{transform:translateX(0)}
.rf-mm-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid rgba(255,255,255,.1)}
.rf-mm-head .rf-mm-brand{font-family:'Poppins',sans-serif;font-weight:700;font-size:15px;letter-spacing:.02em}
.rf-mm-close{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;background:rgba(255,255,255,.08);color:#fff;border:none;cursor:pointer;transition:background .2s}
.rf-mm-close:hover{background:rgba(255,255,255,.16)}
.rf-mm-nav{flex:1;overflow-y:auto;padding:16px 14px 20px}
.rf-mm-nav a{display:flex;align-items:center;justify-content:space-between;padding:14px 14px;border-radius:12px;color:#E6EEFB;text-decoration:none;font-family:'Poppins',sans-serif;font-weight:500;font-size:15px;transition:background .18s,color .18s,transform .18s}
.rf-mm-nav a:hover,.rf-mm-nav a.active{background:rgba(79,209,255,.14);color:#fff;transform:translateX(2px)}
.rf-mm-nav a.active{color:#4FD1FF}
.rf-mm-acc{border-radius:12px;overflow:hidden;margin:2px 0}
.rf-mm-acc>button{width:100%;display:flex;align-items:center;justify-content:space-between;padding:14px;background:transparent;border:none;color:#E6EEFB;font-family:'Poppins',sans-serif;font-weight:500;font-size:15px;cursor:pointer;text-align:left;border-radius:12px;transition:background .18s}
.rf-mm-acc>button:hover{background:rgba(79,209,255,.10)}
.rf-mm-acc>button svg{transition:transform .25s}
.rf-mm-acc.open>button svg{transform:rotate(180deg)}
.rf-mm-acc .rf-mm-sub{max-height:0;overflow:hidden;transition:max-height .35s ease}
.rf-mm-acc>button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.rf-mm-panel :focus{outline:none}
.rf-mm-panel :focus-visible,.rf-mm-nav a:focus-visible,.rf-mm-acc>button:focus-visible,.rf-mm-close:focus-visible,.rf-mm-cta:focus-visible{outline:2px solid #4FD1FF;outline-offset:2px;box-shadow:0 0 0 4px rgba(79,209,255,.25);border-radius:12px}
button[aria-label="Toggle menu"]:focus-visible{outline:2px solid #4FD1FF;outline-offset:3px;border-radius:10px}
.rf-mm-acc .rf-mm-sub a{padding:10px 14px 10px 30px;font-size:13.5px;font-weight:500;color:#C9D6EE;border-left:2px solid rgba(79,209,255,.2);margin:2px 8px;border-radius:0 10px 10px 0}
.rf-mm-acc .rf-mm-sub a small{display:block;font-size:11px;color:#8FA4C9;margin-top:2px;font-weight:400}
.rf-mm-foot{padding:16px 22px 22px;border-top:1px solid rgba(255,255,255,.1)}
.rf-mm-foot .rf-mm-cta{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;border-radius:999px;background:linear-gradient(135deg,#1E88FF,#4FD1FF);color:#04122E;font-weight:700;text-decoration:none;box-shadow:0 12px 30px -10px rgba(79,209,255,.6);transition:transform .18s,box-shadow .18s}
.rf-mm-foot .rf-mm-cta:hover{transform:translateY(-1px);box-shadow:0 16px 36px -10px rgba(79,209,255,.8)}
html.rf-mm-locked,body.rf-mm-locked{overflow:hidden!important;touch-action:none;overscroll-behavior:contain}
body.rf-mm-locked{position:fixed;left:0;right:0;width:100%}
.rf-mm-panel,.rf-mm-backdrop{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.rf-mm-nav{overflow-y:auto}

/* ===== Active-state highlighting for Services / Use Cases menus ===== */
/* Desktop mega-menu items */
.svc-menu a[role="menuitem"].is-active,
.uc-menu a[role="menuitem"].is-active{
  background:linear-gradient(135deg,rgba(30,136,255,.12),rgba(79,209,255,.10));
  color:#0A4DA6;
  box-shadow:inset 3px 0 0 #1E88FF;
}
.svc-menu a[role="menuitem"].is-active .svc-title,
.uc-menu a[role="menuitem"].is-active .svc-title{color:#04122E;font-weight:700}
.svc-menu a[role="menuitem"].is-active .svc-ico,
.uc-menu a[role="menuitem"].is-active .uc-ico{
  background:linear-gradient(135deg,#0A4DA6,#1E88FF);color:#fff;
  box-shadow:0 8px 18px -6px rgba(30,136,255,.55)
}
/* Parent trigger when a child (or the section landing) is active */
/* .svc-menu-wrap.has-active-child > a,
.uc-menu-wrap.has-active-child > a{
  color:#0A4DA6 !important;
  position:relative;
} */
/* .svc-menu-wrap.has-active-child > a::after,
.uc-menu-wrap.has-active-child > a::after{
  content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;
  background:linear-gradient(90deg,#1E88FF,#4FD1FF);border-radius:2px;
} */

/* Mobile drawer: sub-link active + parent accordion badge */
.rf-mm-acc .rf-mm-sub a.active{
  background:rgba(79,209,255,.14);color:#4FD1FF;
  border-left-color:#4FD1FF;
}
.rf-mm-acc .rf-mm-sub a.active small{color:#B7D4FF}
.rf-mm-acc.has-active-child > button{
  background:rgba(79,209,255,.10);color:#4FD1FF;
}
.rf-mm-acc.has-active-child > button::before{
  content:"";width:6px;height:6px;border-radius:999px;
  background:#4FD1FF;box-shadow:0 0 10px #4FD1FF;
  margin-right:8px;flex-shrink:0;
}

/* Hide injected Lovable badge on published deployments */
#lovable-badge,
#lovable-badge-container,
[id^="lovable-badge"],
a[href*="lovable.dev/projects"],
a[href*="lovable.dev?"][target="_blank"],
iframe[src*="lovable.dev/badge"] {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
}
