/* Emil-inspired motion: small distances, purposeful feedback, interruption-safe. */
:root { --motion-out: cubic-bezier(.23, 1, .32, 1); --motion-pop: cubic-bezier(.16, 1, .3, 1); --motion-drawer: cubic-bezier(.32, .72, 0, 1); }

/* Never hide content while waiting for JavaScript or an observer. */
.plomer-js [data-reveal] { opacity: 1; transform: none; transition: none; }
html.motion-enhanced [data-reveal]:not(.motion-seen) { opacity: 0; transform: translate3d(0, 10px, 0) scale(.985); }
html.motion-enhanced [data-reveal="scale"]:not(.motion-seen),
html.motion-enhanced .service-card[data-reveal]:not(.motion-seen),
html.motion-enhanced .trust-grid [data-reveal]:not(.motion-seen),
html.motion-enhanced .review-card[data-reveal]:not(.motion-seen),
html.motion-enhanced .process-list [data-reveal]:not(.motion-seen),
html.motion-enhanced .faq-list [data-reveal]:not(.motion-seen) { transform: translate3d(0, 14px, 0) scale(.96); }
html.motion-enhanced [data-reveal] { transform-origin: 50% 65%; backface-visibility: hidden; will-change: opacity, transform; transition: opacity 320ms var(--motion-out), transform 560ms var(--motion-pop); }
html.motion-enhanced [data-reveal].motion-seen { opacity: 1; transform: none; }

@media (max-width: 820px) {
  html.motion-enhanced [data-reveal]:not(.motion-seen) { transform: translate3d(0, 8px, 0) scale(.98); }
  html.motion-enhanced [data-reveal="scale"]:not(.motion-seen),
  html.motion-enhanced .service-card[data-reveal]:not(.motion-seen),
  html.motion-enhanced .trust-grid [data-reveal]:not(.motion-seen),
  html.motion-enhanced .review-card[data-reveal]:not(.motion-seen),
  html.motion-enhanced .process-list [data-reveal]:not(.motion-seen),
  html.motion-enhanced .faq-list [data-reveal]:not(.motion-seen) { transform: translate3d(0, 10px, 0) scale(.97); }
}
.hero-scene-image, .hero-house-glow { transition: opacity 360ms var(--motion-out); }
.scene-control { transition: none; }
.site-header, .availability-card { transition: none; }
.process-list li, .process-list li:hover { padding-inline: 0; transition: none; }
.process-mark { transition: transform 180ms var(--motion-out); }
.process-list li:hover .process-mark { transform: none; }
.service-card, .service-card:hover { transform: none; transition: none; }
.service-card::before, .service-card:hover::before { transition: none; background: linear-gradient(148deg, rgba(8,10,9,.82) 3%, rgba(8,10,9,.64) 58%, rgba(8,10,9,.9) 100%); }
.service-card-image, .service-card:hover .service-card-image { transform: scale(1.025); filter: brightness(.68) saturate(.76) contrast(1.05); transition: transform 240ms var(--motion-out), filter 240ms ease; }
.button, .scene-control button, .map-reset-button { transition: transform 140ms var(--motion-out); }
.button:hover, .scene-control button:hover { transform: none; }
.button:active, .scene-control button:active, .map-reset-button:active { transform: scale(.98); }
.button > span[aria-hidden], .text-link > span[aria-hidden] { display: inline-block; transition: transform 180ms var(--motion-out); }
.text-link, .text-link:hover { gap: 9px; transition: none; }
.desktop-nav a::after { transition: transform 180ms var(--motion-out); }
.faq-list summary span, .menu-toggle span:not(.sr-only) { transition: transform 180ms var(--motion-out); }
@media (hover: hover) and (pointer: fine) {
  .button:hover > span[aria-hidden], .text-link:hover > span[aria-hidden] { transform: translate(2px, -1px); }
  .service-card:hover .service-card-image { transform: scale(1.065); filter: brightness(.86) saturate(.88) contrast(1.02); }
  .process-list li:hover .process-mark { transform: rotate(-12deg); }
}
@media (max-width: 820px) {
  .mobile-menu { grid-template-rows: 1fr; max-height: calc(100dvh - 110px); overflow-y: auto; overscroll-behavior: contain; opacity: 0; transform: translateY(-8px); visibility: hidden; pointer-events: none; transition: opacity 160ms var(--motion-out), transform 160ms var(--motion-out), visibility 0s 160ms; }
  .mobile-menu.is-open { grid-template-rows: 1fr; opacity: 1; transform: none; visibility: visible; pointer-events: auto; transition: opacity 220ms var(--motion-drawer), transform 220ms var(--motion-drawer), visibility 0s; }
  body.admin-bar .mobile-menu { max-height: calc(100dvh - 156px); }
}
/* Keyboard activation is immediate; do not delay navigation or focus. */
html[data-input-mode="keyboard"] { scroll-behavior: auto; }
html[data-input-mode="keyboard"] *, html[data-input-mode="keyboard"] *::before, html[data-input-mode="keyboard"] *::after { transition: none !important; animation: none !important; }
html[data-input-mode="keyboard"] .button:active, html[data-input-mode="keyboard"] .scene-control button:active,
html[data-input-mode="keyboard"] .map-reset-button:active { transform: none; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero-scene-image, .hero-house-glow, .mobile-menu, .mobile-menu.is-open, .service-card-image,
  .button, .button > span[aria-hidden], .text-link > span[aria-hidden], .scene-control button,
  .map-reset-button, .faq-list summary span, .menu-toggle span:not(.sr-only), .form-notice { transition: none; }
  .button:active, .scene-control button:active, .map-reset-button:active,
  .button:hover > span[aria-hidden], .text-link:hover > span[aria-hidden] { transform: none; }
  .service-card:hover .service-card-image { transform: scale(1.025); filter: brightness(.68) saturate(.76) contrast(1.05); }
  .process-list li:hover .process-mark { transform: none; }
  html.motion-enhanced [data-reveal], html.motion-enhanced [data-reveal]:not(.motion-seen) { opacity: 1; transform: none; transition: none; will-change: auto; }
}
