/* A fine matte grain and a quiet highlight give the main actions depth. */
.button-primary, .button-primary:hover, .button-primary:focus-visible,
.mobile-call, .mobile-call:hover {
  background-color: #174f43;
  background-image: linear-gradient(165deg, #ffffff0c, transparent 55%), url("assets/button-grain.svg"), linear-gradient(135deg, #1b594b, #123f36);
  background-size: 100% 100%, 160px 160px, 100% 100%;
  box-shadow: inset 0 1px 0 #ffffff30, inset 0 -1px 0 #00000022, 0 5px 14px #174f4314;
}
.button-primary:hover, .button-primary:focus-visible, .mobile-call:hover {
  background-color: #174f43;
  box-shadow: inset 0 1px 0 #ffffff40, inset 0 -1px 0 #00000022, 0 8px 22px #174f4326;
}

@keyframes gentle-entry {
  from { opacity: 0; translate: 0 16px; }
  to { opacity: 1; translate: 0 0; }
}
@keyframes surface-entry {
  from { opacity: 0; translate: 0 8px; }
  to { opacity: 1; translate: 0 0; }
}

@media (prefers-reduced-motion: no-preference) {
  .hero-copy > *, .hero-visual {
    animation: gentle-entry 700ms cubic-bezier(.2, .7, .3, 1) both;
  }
  .hero-copy > h1 { animation-delay: 70ms; }
  .hero-description { animation-delay: 140ms; }
  .hero-actions { animation-delay: 210ms; }
  .hero-note { animation-delay: 280ms; }
  .hero-visual { animation-duration: 900ms; animation-delay: 150ms; }
  /* Keyboard focus must never wait for a decorative entrance. */
  .hero-copy > :focus-within { animation: none; }
  .button, .mobile-call {
    transition: transform 220ms ease, box-shadow 220ms ease;
  }
  .button:active, .mobile-call:active { transform: translateY(1px); }
  .service-icon {
    transition: transform 250ms ease;
  }
  .service-card { transition: transform 280ms ease, box-shadow 280ms ease, border-color 280ms ease; }
  .service-card:hover .service-icon { transform: translateY(-3px); }
  dialog[open] { animation: surface-entry 220ms ease-out; }
  .faq-list details[open] > p { animation: surface-entry 240ms ease-out; }
  .mobile-call:not([hidden]) { animation: surface-entry 250ms ease-out; }
}
@media (max-width: 640px) and (prefers-reduced-motion: no-preference) {
  .nav.open { animation: surface-entry 200ms ease-out; }
}

.back-top { width: auto; padding-inline: 16px; border-radius: 6px; font-size: 14px; }
.site-intro { display: none; }
@keyframes intro-dismiss {
  0%, 65% { opacity: 1; visibility: visible; }
  100% { opacity: 0; visibility: hidden; }
}
@keyframes intro-orbit {
  from { rotate: -90deg; }
  to { rotate: 270deg; }
}
@keyframes intro-breathe {
  0% { opacity: .35; scale: .9; translate: 0 3px; }
  60%, 100% { opacity: 1; scale: 1; translate: 0 0; }
}
@media (prefers-reduced-motion: no-preference) {
  /* Finite CSS dismissal also works if the application scripts fail. */
  .intro-enabled .site-intro {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: grid;
    place-items: center;
    background: #fafbf8;
    pointer-events: none;
    animation: intro-dismiss 1250ms ease-in-out both;
  }
  .intro-mark { position: relative; width: 120px; height: 120px; }
  .intro-ring { position: absolute; inset: 0; width: 100%; height: 100%; animation: intro-orbit 1150ms cubic-bezier(.4, 0, .25, 1) both; }
  .intro-track { stroke: #e2eae1; stroke-width: 1; }
  .intro-arc { stroke: #72927e; stroke-width: 2; stroke-linecap: round; stroke-dasharray: 90 250; }
  .intro-tooth { position: absolute; inset: 32px; width: 56px; height: 56px; stroke: #174f43; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; animation: intro-breathe 850ms ease-out both; }
  .intro-tooth-detail { stroke: #72927e; }
  .intro-enabled .hero-copy > * { animation-delay: 850ms; }
  .intro-enabled .hero-copy > h1 { animation-delay: 920ms; }
  .intro-enabled .hero-description { animation-delay: 990ms; }
  .intro-enabled .hero-actions { animation-delay: 1060ms; }
  .intro-enabled .hero-note { animation-delay: 1130ms; }
  .intro-enabled .hero-visual { animation-delay: 950ms; }
  /* A keyboard user can immediately reveal the focused page control. */
  .intro-enabled:focus-within .site-intro { visibility: hidden; animation: none; }
}
