/* ===================== BASE ===================== */
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: #0D1B2A; background: #fff; overflow-x: clip; }
img { max-width: 100%; }
a { color: inherit; }

:root {
  --accent:#00C2FF; --primary:#1A4FBA; --hero:#080F1E;
  --dark:#0D1A2E; --surface:#F2F5F9; --ink:#0D1B2A; --neutral:#8A9BB0;
}

/* ===================== KEYFRAMES ===================== */
@keyframes rv-pulse { 0%,100%{opacity:.5;transform:scale(1)} 50%{opacity:1;transform:scale(1.12)} }
@keyframes rv-spin  { to { transform:rotate(360deg); } }

/* ===================== SCROLL REVEAL ===================== */
.rv-reveal { opacity:0; transform:translateY(40px); transition:opacity .8s cubic-bezier(.16,1,.3,1), transform .8s cubic-bezier(.16,1,.3,1); }
.rv-reveal.is-in { opacity:1; transform:none; }
.rv-reveal[data-rv="left"]  { transform:translate3d(-64px,16px,0) scale(.96); }
.rv-reveal[data-rv="right"] { transform:translate3d(64px,16px,0) scale(.96); }
.rv-reveal[data-rv="tilt"]  { transform:translate3d(0,70px,0) scale(.95); }
.rv-reveal[data-rv="tilt"].is-in { transform:none; }
@media (prefers-reduced-motion: reduce) { .rv-reveal { opacity:1!important; transform:none!important; transition:none!important; } }

/* ===================== HEADER ===================== */
.rvh-link { position:relative; transition:color .25s; white-space:nowrap; }
.rvh-link:hover { color:#fff!important; }
.rvh-link:after { content:""; position:absolute; left:0; bottom:-4px; height:2px; width:0; background:#00C2FF; transition:width .3s; }
.rvh-link:hover:after { width:100%; }
.rv-dd-caret { transition:transform .25s; }
.rv-dd:hover .rv-dd-caret { transform:rotate(180deg); }
.rv-dd:hover .rv-dd-menu { opacity:1!important; visibility:visible!important; transform:translateY(0)!important; }
.rv-dd-item:hover { background:rgba(0,194,255,.12)!important; color:#fff!important; }
.rvh-cta { transition:transform .25s, box-shadow .25s; }
.rvh-cta:hover { transform:translateY(-3px)!important; box-shadow:0 16px 40px -10px rgba(0,194,255,.6)!important; }
.rvh-phone { transition:color .2s; }
.rvh-phone:hover { color:#00C2FF!important; }

/* ===================== BUTTONS / CARDS ===================== */
.rv-btn-primary { transition:transform .25s, box-shadow .25s; }
.rv-btn-primary:hover { transform:translateY(-3px)!important; box-shadow:0 16px 40px -10px rgba(0,194,255,.6)!important; }
.rv-person { transition:transform .3s cubic-bezier(.2,.7,.2,1), border-color .3s, box-shadow .3s; }
.rv-person:hover { transform:translateY(-5px)!important; border-color:rgba(0,194,255,.5)!important; box-shadow:0 20px 48px -22px rgba(0,194,255,.35)!important; }

/* ===================== FOOTER ===================== */
.rvf-link { transition:color .2s; }
.rvf-link:hover { color:#fff!important; }
.rvf-cta { transition:transform .25s, box-shadow .25s; }
.rvf-cta:hover { transform:translateY(-3px)!important; box-shadow:0 14px 36px -12px rgba(0,194,255,.6)!important; }

/* ===================== RESPONSIVE ===================== */
@media (max-width: 880px) {
  .rv-hide-m { display:none!important; }
  .rv-grid-4 { grid-template-columns:1fr 1fr!important; }
  .rv-vals  { grid-template-columns:1fr!important; }
  .rvf-grid { grid-template-columns:1fr 1fr!important; gap:32px!important; }
}
@media (max-width: 520px) {
  .rv-grid-4 { grid-template-columns:1fr!important; }
  .rvf-grid  { grid-template-columns:1fr!important; }
}

/* ===== Top-of-page / WordPress admin-bar handling ===== */
html { background: #080F1E; }                 /* kills the white sliver above the fixed header */
body.admin-bar #rv-header { top: 32px; }      /* keep the fixed header below the logged-in admin bar */
@media screen and (max-width: 782px) { body.admin-bar #rv-header { top: 46px; } }


/* Remove WordPress's default spacing between top-level sections (header/page/footer).
   That gap showed the white page background as a line just above the footer. */
.wp-site-blocks > * { margin-block-start: 0; margin-block-end: 0; }
.wp-site-blocks { background: #ffffff; }

/* ===================== SERVICES HEADING (homepage "What We Do") ===================== */
/* The intro block ships at max-width:680px, too narrow for the 68px heading, so it
   wrapped into 4 ragged lines. Widen it and balance the wrap for a clean 2-line title. */
#services > div > .rv-reveal:first-child { max-width: 900px !important; }
#services > div > .rv-reveal:first-child h2 { text-wrap: balance; }

/* ===================== HEADER LOGO (no squish) ===================== */
/* Header is a flex row with justify-content:space-between; as the nav grew
   (Client Login added) it compressed the logo. Lock the logo from shrinking. */
#rv-header > div > a { flex: 0 0 auto; }
#rv-header > div > a img { flex: none; width: auto; }
