/* =====================================================================
   Om Enterprise — Redesign polish layer  ("quietly luxurious")
   ---------------------------------------------------------------------
   Additive, loaded LAST. A cohesive premium pass over the existing
   design, synthesized from a multi-lens design audit:
     · more confident type + real eyebrow→heading rhythm
     · brand-true depth (richer shadows, frosted float cards that read)
     · the unused warm palette (gold/crimson) layered subtly into the
       cool blue/indigo system — so it feels like a print house
     · weighted, deliberate micro-interactions
     · AA-grade text / placeholder / focus contrast on the static bg
   Pure CSS, navy-on-light, no new images. Reversible by removing the
   <link>. (Heavy backdrop-filters are intentionally avoided to keep
   paint cheap.)
   ===================================================================== */

:root {
  /* deeper, single source-of-truth elevation */
  --rd-shadow-card:  0 14px 40px -16px rgba(22,34,53,.22);
  --rd-shadow-hover: 0 24px 60px -20px rgba(22,34,53,.28), 0 0 0 1px rgba(55,131,240,.08);
  --rd-grad: linear-gradient(135deg, #3783f0 0%, #5a63ef 52%, #6963ec 100%);
  --rd-hairline: linear-gradient(90deg, rgba(55,131,240,0), rgba(55,131,240,.5) 20%, rgba(105,99,236,.5) 80%, rgba(105,99,236,0));

  /* contrast lift (AA on the light static background) */
  --muted-foreground: #3d4a5f;
}

/* ---------------------------------------------------------------------
   1. Container & section rhythm
   ------------------------------------------------------------------- */
@media (min-width: 768px)  { .container { padding: 0 2rem; } }
@media (min-width: 1200px) { .container { padding: 0 2.5rem; } }

.hero { padding: 9rem 0 8rem; }
@media (min-width: 768px) { .hero { padding: 11rem 0 9rem; } }

.section-head { margin-bottom: 4rem; }
.cards-3 { gap: 2rem; }
@media (min-width: 980px) { .cards-3 { gap: 2.5rem; } .contact-grid { gap: 5rem; } }

/* relieve the 5-up "why us" crowding until there's real room */
@media (min-width: 1080px) { .feature-grid { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 1400px) { .feature-grid { grid-template-columns: repeat(5, 1fr); } }

/* ---------------------------------------------------------------------
   2. Type hierarchy — eyebrow → heading → body
   ------------------------------------------------------------------- */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  padding: .45rem .95rem .45rem .8rem;
  margin-bottom: .6rem;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(55,131,240,.12), rgba(105,99,236,.12));
  border: 1px solid rgba(55,131,240,.22);
  color: #2f63c4;
  font-weight: 800;
  font-size: .74rem;
  letter-spacing: .2em;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.6);
}
.eyebrow::before {
  content: "";
  width: 1.35rem; height: 2px;
  border-radius: 2px;
  background: var(--grad-h);
  flex: none;
}

.section-head h2 { line-height: 1.08; margin-top: 1rem; }
.section-head p  { font-size: 1.125rem; line-height: 1.6; }
.split p.body    { line-height: 1.6; }

.hero h1 { line-height: 1.10; letter-spacing: -.02em; }
/* the 2-col hero (980+) halves the headline's column — retune the clamp
   so the <br>-authored 3 lines don't rewrap until the full size fits */
@media (min-width: 980px) and (max-width: 1240px) {
  .hero h1 { font-size: clamp(2.6rem, 4.8vw, 4.4rem); }
}

/* richer gradient text — a subtle gold glint sweeps through the cool ramp */
.grad-text {
  background-image: linear-gradient(110deg, #3783f0 0%, #6963ec 28%, #bd8a30 50%, #6963ec 72%, #3783f0 100%);
  background-size: 260% auto;
}

.card h3    { font-weight: 800; line-height: 1.28; letter-spacing: -.3px; margin-bottom: .8rem; }
.feature h3 { font-weight: 800; font-size: 1.15rem; margin-bottom: .65rem; }

/* ---------------------------------------------------------------------
   3. Pills & hero trust chips — credibility anchors
   ------------------------------------------------------------------- */
.pill {
  padding: .65rem 1.1rem;
  font-size: .85rem;
  color: #162235;
  box-shadow: 0 4px 12px rgba(55,131,240,.15);
}

.hero-trust { gap: 1rem 1.1rem; }
.hero-trust span {
  font-size: .92rem;
  padding: .55rem 1rem;
  border-radius: 12px;
  background: rgba(55,131,240,.06);
  border: 1px solid rgba(55,131,240,.15);
}
.hero-trust svg { width: 1.3rem; height: 1.3rem; }

/* ---------------------------------------------------------------------
   4. Buttons — commanding, with a slower, warmer shine sweep
   ------------------------------------------------------------------- */
.btn { padding: .92rem 1.7rem; font-size: 1rem; font-weight: 800; letter-spacing: .3px; }
.btn-primary {
  background-image: linear-gradient(135deg, #1a56c4 0%, #2f3ec2 55%, #3d2eb4 100%);
  color: #fff;
  box-shadow: 0 10px 24px -10px rgba(26,86,196,.6), inset 0 1px 0 rgba(255,255,255,.25);
}
.btn-primary:hover {
  transform: translateY(-3px);
  box-shadow: 0 0 24px 4px rgba(26,86,196,.5), 0 20px 50px -10px rgba(61,46,180,.45);
}
.btn-outline {
  background: rgba(255,255,255,.85);
  border: 1.5px solid rgba(55,131,240,.5);
  color: #21314a;
}
.btn-outline:hover { color: var(--primary); background: rgba(55,131,240,.05); border-color: var(--primary); }

/* slower, more deliberate sweep with a warm fleck */
.btn::after {
  background: linear-gradient(120deg, transparent, rgba(255,255,255,.55), rgba(189,138,48,.18), transparent);
  transition: left 1.05s var(--ease-premium);
}

/* ---------------------------------------------------------------------
   5. Cards & surfaces — softer depth + gradient top edge on hover
   ------------------------------------------------------------------- */
.card {
  box-shadow: var(--rd-shadow-card);
  border-color: rgba(224,229,237,.85);
  background: linear-gradient(180deg, #ffffff 0%, #fbfcff 100%);
}
.card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--rd-grad);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .5s var(--ease-premium);
  z-index: 5;
}
.card:hover { transform: translateY(-8px); box-shadow: var(--rd-shadow-hover); }
.card:hover::before { transform: scaleX(1); }
.card-icon { background-image: var(--rd-grad); }

.feature {
  background: linear-gradient(180deg, rgba(255,255,255,.85), rgba(247,250,255,.7));
  border-color: rgba(224,229,237,.8);
  box-shadow: var(--rd-shadow-card);
}
.feature:hover .feature-icon { background-image: var(--rd-grad); color: #fff; }

.stats-card, .mission-card, .quote-form { box-shadow: var(--rd-shadow-card); }
.quote-form { box-shadow: var(--rd-shadow-hover); }

/* big, brand-gradient stat numerals */
.stat .num {
  background-image: var(--rd-grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* ---------------------------------------------------------------------
   6. Hero & founder imagery — deeper halo, refined frame, glass cards
   ------------------------------------------------------------------- */
.hero-media::before {
  inset: -2.25rem;
  background: conic-gradient(from 210deg at 60% 40%,
    rgba(55,131,240,.35), rgba(105,99,236,.32), rgba(189,138,48,.22), rgba(55,131,240,.35));
  filter: blur(28px);
  opacity: .6;
}
.hero-img { border-width: 4px; box-shadow: 0 40px 90px -32px rgba(22,34,53,.45); }
.media-frame::before {
  background: linear-gradient(135deg, rgba(55,131,240,.26), rgba(105,99,236,.24), rgba(189,138,48,.16));
  filter: blur(20px);
}

.float-card {
  background: rgba(255,255,255,.92);
  border-color: rgba(255,255,255,.85);
  box-shadow: 0 14px 35px -8px rgba(22,34,53,.25);
}
.float-card .fc-icon { background-image: var(--rd-grad); color: #fff; }
/* keep the float cards inside the photo frame */
.float-card.tl { top: 1.25rem; left: 1.25rem; }
.float-card.br { bottom: 1.25rem; right: 1.25rem; }

/* ---------------------------------------------------------------------
   7. Warm-palette section accents (very low alpha, navy stays readable)
   ------------------------------------------------------------------- */
#services::after, #contact::after {
  content: "";
  position: absolute;
  z-index: 0;
  pointer-events: none;
  width: 44vw; height: 44vw;
  max-width: 560px; max-height: 560px;
  border-radius: 50%;
  filter: blur(24px);
}
#services::after { right: -7%; bottom: -9%; background: radial-gradient(circle, rgba(189,138,48,.08), transparent 62%); }
#contact::after  { left: -7%;  bottom: -9%; background: radial-gradient(circle, rgba(158,42,37,.06), transparent 62%); }

/* ---------------------------------------------------------------------
   8. Form contrast — AA placeholders + dual-cue focus ring
   ------------------------------------------------------------------- */
.field input::placeholder,
.field textarea::placeholder { color: #556b8f; }
.field input:focus,
.field textarea:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 4px rgba(55,131,240,.20);
}

/* ---------------------------------------------------------------------
   9. Micro-interactions — weightier nav underline, glow, progress, tap
   ------------------------------------------------------------------- */
.nav-links a::after {
  height: 2.5px;
  background: linear-gradient(90deg, var(--primary), var(--indigo));
  transition: transform .5s cubic-bezier(.34, 1.56, .64, 1);
}
.menu-toggle { transition: transform 80ms ease, background 150ms ease; }
.menu-toggle:active { transform: scale(.92); background: rgba(22,34,53,.05); }

.cursor-glow { border-color: rgba(55,131,240,.6); box-shadow: 0 0 8px rgba(55,131,240,.2); }
.cursor-glow.active { box-shadow: 0 0 18px rgba(55,131,240,.35); }

#scrollProgress { transition: width .15s cubic-bezier(.34, 1.56, .64, 1); }

/* ---------------------------------------------------------------------
   10. Footer — gradient hairline along the top
   ------------------------------------------------------------------- */
.site-footer { position: relative; }
.site-footer::before {
  content: "";
  position: absolute;
  top: -1px; left: 0; right: 0;
  height: 2px;
  background: var(--rd-hairline);
}

/* ---------------------------------------------------------------------
   11. Gallery — more breathing room, legible captions, satisfying zoom
   ------------------------------------------------------------------- */
.gallery-mosaic { gap: 1.4rem; }
/* desktop rows only — 769-1024px keeps gallery.css's 190px tablet rows */
@media (min-width: 1025px) { .gallery-mosaic { grid-auto-rows: 230px; } }
@media (min-width: 1200px) { .gallery-mosaic { gap: 1.75rem; } }
.gallery-item:hover img { transform: scale(1.12); filter: saturate(1.15); }
.g-overlay { opacity: .75; }
.g-cat { color: #e8f2ff; font-size: .72rem; letter-spacing: .24em; }
.g-zoom { transform: scale(.72) rotate(-12deg); background: rgba(255,255,255,.95); transition: transform .4s var(--ease-premium), opacity .4s ease; }
.gallery-item:hover .g-zoom { box-shadow: 0 8px 24px -6px rgba(55,131,240,.5); }
/* large phones/small tablets only — below 561px gallery.css's
   single-column 4:3 tiles must win, so this block may not reach them */
@media (min-width: 561px) and (max-width: 767.98px) {
  .gallery-mosaic { grid-auto-rows: 160px; gap: .9rem; }
  .gallery-item.g1 { grid-row: span 1; }
}
/* touch devices never hover: keep captions and the zoom affordance
   visible so the gallery reads the same as it does on desktop */
@media (hover: none) {
  .g-overlay { opacity: 1; }
  .g-cat, .g-title { transform: none; opacity: 1; }
  .g-zoom { transform: scale(1) rotate(0deg); opacity: 1; }
}

/* ---------------------------------------------------------------------
   12. Accessibility — visible, on-brand focus ring for keyboard users
   ------------------------------------------------------------------- */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
input:focus-visible,
textarea:focus-visible,
.gallery-item:focus-visible {
  outline: 3px solid rgba(55,131,240,.5);
  outline-offset: 3px;
  border-radius: 12px;
}

/* ---------------------------------------------------------------------
   13. Responsive safety net
   ------------------------------------------------------------------- */
@media (max-width: 767.98px) {
  .btn, .btn-outline, .btn-dark { padding: 1rem 1.5rem; }   /* 44px tap targets */
}
/* the desktop nav switches on at 980 but needs ~1150px at full size —
   tighten it in between so the CTA never clips off-screen */
@media (min-width: 980px) and (max-width: 1160px) {
  .nav-links { gap: .1rem; }
  .nav-links a { padding: .5rem .55rem; font-size: .88rem; white-space: nowrap; }
  .nav-cta { padding: .8rem 1.1rem; }
}
@media (max-width: 640px) {
  .float-card { padding: .6rem .85rem; }
  .float-card.tl { top: 1rem; left: .75rem; }
  .float-card.br { bottom: 1rem; right: .75rem; }
  .fc-value { font-size: .9rem; }
}
@media (max-width: 480px) {
  .pill { font-size: .75rem; padding: .45rem .8rem; }
  .hero .lead { font-size: 1rem; }
  .stat .num { font-size: clamp(2rem, 4.5vw, 3.4rem); }
  /* keep the <br>-authored hero lines whole on small phones */
  .hero h1 { font-size: clamp(2rem, 10.5vw, 2.6rem); }
}
