:root {
  --magenta-soft: #d36a88;
  --blush: #f4efeb;
  --blush-deep: #e8ddd7;
  --cream: #fcfaf7;
  --gray: #786d73;
}

:focus-visible {
  outline: 3px solid #3dbb6b;
  outline-offset: 3px;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.skip-link {
  position: fixed;
  top: 10px;
  left: 12px;
  z-index: 10000;
  padding: 11px 16px;
  border-radius: 10px;
  color: #fff;
  background: #2c1a38;
  font: 600 14px/1 'Outfit', sans-serif;
  transform: translateY(-160%);
  transition: transform 0.2s ease;
}

.skip-link:focus {
  transform: translateY(0);
}

.mobile-action-bar {
  display: none;
}

.location-map {
  padding: 88px 0;
  background: #fff;
}

.location-map-grid {
  display: grid;
  grid-template-columns: minmax(240px, 0.72fr) minmax(0, 1.28fr);
  gap: 48px;
  align-items: center;
}

.location-map-copy .sec-eyebrow {
  display: inline-block;
  margin-bottom: 14px;
  color: #dd2e7e;
  font: 600 12px/1.2 'Outfit', sans-serif;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.location-map-copy h2 {
  margin-bottom: 16px;
  color: #2c1a38;
  font-size: clamp(34px, 4vw, 54px);
}

.location-map-copy p {
  max-width: 430px;
  margin-bottom: 26px;
  color: #6b6275;
  font: 300 16px/1.7 'Outfit', sans-serif;
}

.location-map-link {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  padding: 0 22px;
  border-radius: 14px;
  color: #fff;
  background: #2e9e55;
  font: 600 14px/1 'Outfit', sans-serif;
  text-decoration: none;
  box-shadow: 0 10px 24px rgba(46, 158, 85, 0.22);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.location-map-link:hover {
  transform: translateY(-2px);
  box-shadow: 0 14px 30px rgba(46, 158, 85, 0.3);
}

.location-map-frame {
  min-height: 430px;
  overflow: hidden;
  border: 8px solid #fbeef4;
  border-radius: 28px;
  background: #fbeef4;
  box-shadow: 0 24px 60px rgba(44, 26, 56, 0.14);
}

.location-map-frame iframe {
  display: block;
  width: 100%;
  height: 430px;
  border: 0;
}

@media (max-width: 800px) {
  .location-map {
    padding: 68px 0;
  }

  .location-map-grid {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .location-map-copy {
    text-align: center;
  }

  .location-map-copy p {
    margin-right: auto;
    margin-left: auto;
  }

  .location-map-frame,
  .location-map-frame iframe {
    min-height: 350px;
    height: 350px;
  }
}

@media (max-width: 700px) {
  body {
    padding-bottom: 74px;
  }

  .mobile-action-bar {
    position: fixed;
    right: 12px;
    bottom: 10px;
    left: 12px;
    z-index: 9999;
    display: grid;
    grid-template-columns: 0.85fr 1.15fr;
    gap: 8px;
    padding: 8px;
    border: 1px solid rgba(44, 26, 56, 0.1);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.96);
    box-shadow: 0 16px 44px rgba(44, 26, 56, 0.2);
    backdrop-filter: blur(14px);
  }

  .mobile-action-bar a {
    display: flex;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    font: 600 14px/1 'Outfit', sans-serif;
    text-decoration: none;
  }

  .mobile-action-call {
    color: #2c1a38;
    background: #fbeef4;
  }

  .mobile-action-quote {
    color: #fff;
    background: #2e9e55;
    box-shadow: 0 8px 20px rgba(46, 158, 85, 0.25);
  }
}

@media print {
  .mobile-action-bar {
    display: none !important;
  }
}

/* ==========================================================
   Premium motion system
   Shared across the homepage, service pages, and city pages.
   ========================================================== */

@property --neon-angle {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}

:root {
  --motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --motion-soft: cubic-bezier(0.16, 1, 0.3, 1);
  --neon-pink: #ff4fa3;
  --neon-green: #62f39a;
}

header,
header .container,
header .logo-img {
  transition: padding 0.45s var(--motion-ease), background-color 0.45s ease,
    box-shadow 0.45s ease, border-color 0.45s ease, height 0.45s var(--motion-ease),
    transform 0.45s var(--motion-ease) !important;
}

header.is-scrolled {
  background: rgba(255, 251, 253, 0.9) !important;
  border-bottom-color: rgba(221, 46, 126, 0.14) !important;
  box-shadow: 0 14px 42px rgba(44, 26, 56, 0.09) !important;
  backdrop-filter: blur(22px) saturate(145%);
}

header.is-scrolled .container {
  padding-top: 11px !important;
  padding-bottom: 11px !important;
}

header.is-scrolled .logo-img {
  height: 43px !important;
}

nav.main a.is-active {
  color: var(--magenta, #dd2e7e) !important;
}

nav.main a.is-active::after {
  width: 100% !important;
}

/* Special conversion buttons: ambient glow + animated neon ring. */
.premium-cta {
  --neon-angle: 0deg;
  --magnet-x: 0px;
  --magnet-y: 0px;
  isolation: isolate;
  overflow: visible !important;
  transform: translate3d(var(--magnet-x), var(--magnet-y), 0);
  animation: premiumCtaBreathe 4.8s ease-in-out infinite;
}

.premium-cta::before,
.premium-cta::after {
  content: '';
  position: absolute;
  pointer-events: none;
  border-radius: inherit;
  background: conic-gradient(
    from var(--neon-angle),
    transparent 0deg 190deg,
    rgba(98, 243, 154, 0.55) 225deg,
    rgba(255, 255, 255, 0.98) 260deg,
    rgba(255, 79, 163, 0.92) 302deg,
    transparent 345deg
  );
  animation: premiumNeonOrbit 5.5s linear infinite;
}

.premium-cta::before {
  inset: -3px;
  z-index: -1;
  padding: 2px;
  opacity: 0.42;
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
}

.premium-cta::after {
  inset: -9px;
  z-index: -2;
  opacity: 0.18;
  filter: blur(14px);
  transition: opacity 0.35s ease, filter 0.35s ease;
}

.premium-cta:hover,
.premium-cta:focus-visible {
  animation-play-state: paused;
  transform: translate3d(var(--magnet-x), calc(var(--magnet-y) - 4px), 0) scale(1.015) !important;
  box-shadow: 0 17px 42px rgba(61, 187, 107, 0.38),
    0 0 28px rgba(255, 79, 163, 0.2) !important;
}

.premium-cta:hover::before,
.premium-cta:focus-visible::before {
  opacity: 1;
  animation-duration: 1.25s;
}

.premium-cta:hover::after,
.premium-cta:focus-visible::after {
  opacity: 0.65;
  filter: blur(17px);
  animation-duration: 1.25s;
}

.premium-cta svg {
  transition: transform 0.4s var(--motion-ease);
}

.premium-cta:hover svg,
.premium-cta:focus-visible svg {
  transform: translateX(4px);
}

.premium-cta:disabled,
.premium-cta[aria-disabled='true'] {
  animation: none;
}

.premium-cta:disabled::before,
.premium-cta:disabled::after,
.premium-cta[aria-disabled='true']::before,
.premium-cta[aria-disabled='true']::after {
  display: none;
}

/* More varied reveal choreography, still using the existing observer. */
.reveal[data-motion='left'] {
  transform: translate3d(-34px, 12px, 0);
}

.reveal[data-motion='right'] {
  transform: translate3d(34px, 12px, 0);
}

.reveal[data-motion='scale'] {
  transform: translate3d(0, 18px, 0) scale(0.965);
}

.reveal[data-motion='clip'] {
  clip-path: inset(0 0 100% 0 round 10px);
  transform: translate3d(0, 18px, 0);
  transition-property: opacity, transform, clip-path !important;
  transition-duration: 0.9s !important;
  transition-timing-function: var(--motion-soft) !important;
}

.reveal.in[data-motion='left'],
.reveal.in[data-motion='right'],
.reveal.in[data-motion='scale'] {
  transform: translate3d(0, 0, 0) scale(1);
}

.reveal.in[data-motion='clip'] {
  clip-path: inset(0 0 0 0 round 10px);
  transform: translate3d(0, 0, 0);
}

.hero-visual,
.svc-hero-visual,
.about-visual,
.location-map-frame {
  will-change: transform;
}

.premium-parallax {
  --parallax-y: 0px;
  transform: translate3d(0, var(--parallax-y), 0);
  will-change: transform;
  transition: transform 0.16s linear;
}

.hero-photo,
.svc-hero-photo,
.about-photo,
.pf-item {
  transition: transform 0.85s var(--motion-ease), box-shadow 0.85s var(--motion-ease),
    filter 0.6s ease !important;
}

.hero-visual:hover .hero-photo,
.svc-hero-visual:hover .svc-hero-photo,
.about-visual:hover .about-photo {
  transform: scale(1.018);
  filter: saturate(1.04) contrast(1.015);
}

.hero-slide,
.hero-mobile-bg .hero-slide {
  transform: scale(1.035);
  transition: opacity 1s ease, transform 7s ease !important;
}

.hero-slide.is-active,
.hero-mobile-bg .hero-slide.is-active {
  transform: scale(1.085);
}

.blob,
.cta-mid-bg,
.blob-c {
  animation: premiumAmbientDrift 11s ease-in-out infinite alternate;
}

.svc-card,
.svc-card3,
.gr-card,
.proc-step,
.trust-item,
.location-map-frame {
  backface-visibility: hidden;
}

.svc-card::before,
.svc-card3::before,
.gr-card::before,
.proc-step::before {
  content: '';
  position: absolute;
  inset: -80% -45%;
  z-index: 3;
  pointer-events: none;
  background: linear-gradient(115deg, transparent 42%, rgba(255, 255, 255, 0.42) 50%, transparent 58%);
  transform: translateX(-65%) rotate(8deg);
  opacity: 0;
  transition: transform 0.9s var(--motion-ease), opacity 0.35s ease;
}

.svc-card:hover::before,
.svc-card3:hover::before,
.gr-card:hover::before,
.proc-step:hover::before {
  transform: translateX(65%) rotate(8deg);
  opacity: 0.72;
}

.svc-card3,
.proc-step {
  position: relative;
  overflow: hidden;
}

.gr-card:hover,
.svc-card3:hover,
.proc-step:hover {
  box-shadow: 0 28px 62px rgba(44, 26, 56, 0.16),
    0 0 0 1px rgba(221, 46, 126, 0.1) !important;
}

.field input,
.field textarea,
.field select {
  transition: border-color 0.3s ease, box-shadow 0.3s ease,
    transform 0.3s var(--motion-ease), background-color 0.3s ease !important;
}

.field input:focus,
.field textarea:focus,
.field select:focus {
  transform: translateY(-1px);
  background: #fff !important;
  box-shadow: 0 0 0 4px rgba(221, 46, 126, 0.08),
    0 12px 30px rgba(44, 26, 56, 0.08);
}

.location-map-frame:hover {
  transform: translateY(-5px);
  box-shadow: 0 32px 78px rgba(44, 26, 56, 0.18);
}

.gr-viewport {
  cursor: grab;
  touch-action: pan-y;
}

.gr-viewport.is-dragging {
  cursor: grabbing;
  user-select: none;
}

@keyframes premiumNeonOrbit {
  to { --neon-angle: 360deg; }
}

@keyframes premiumCtaBreathe {
  0%, 100% { box-shadow: 0 10px 28px rgba(61, 187, 107, 0.3); }
  50% { box-shadow: 0 14px 34px rgba(61, 187, 107, 0.46), 0 0 16px rgba(255, 79, 163, 0.13); }
}

@keyframes premiumAmbientDrift {
  0% { transform: translate3d(0, 0, 0) scale(1); }
  100% { transform: translate3d(18px, -12px, 0) scale(1.055); }
}

@media (max-width: 700px) {
  .premium-cta::before { inset: -2px; }
  .premium-cta::after { inset: -6px; filter: blur(10px); }
  .mobile-action-quote.premium-cta { animation-duration: 5.8s; }
  .mobile-action-quote.premium-cta::after { opacity: 0.1; }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  .reveal,
  .reveal[data-motion] {
    opacity: 1 !important;
    clip-path: none !important;
    transform: none !important;
  }

  .premium-cta::before,
  .premium-cta::after {
    display: none;
  }
}
