/* Slow photographic movement; quick, precise responses to a patient's actions. */
:root { --ease-luxury: cubic-bezier(.22,.68,0,1.02); }
.service-feature { transition: transform 450ms var(--ease-detail), box-shadow 450ms var(--ease-detail); }
.service-image img { transition: transform 900ms var(--ease-detail); }
.story-visual picture { overflow: hidden; }
.story-play .play-circle, .video-art .play-circle {
  transition: color 300ms ease, background 300ms ease, border-color 300ms ease, transform 500ms var(--ease-detail);
}
.video-art > img { transition: transform 1000ms var(--ease-detail); }
.service-link {
  background-image: linear-gradient(var(--ink),var(--ink));
  background-repeat: no-repeat; background-position: left bottom;
  background-size: 0 1px; transition: background-size 450ms var(--ease-detail);
}
.button { position: relative; isolation: isolate; overflow: hidden; transition: transform 350ms var(--ease-detail), box-shadow 350ms ease, background 350ms ease; }
.button::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(110deg,transparent 25%,#ffffff16 50%,transparent 75%);
  transform: translateX(-110%);
}
.button:focus-visible { box-shadow: 0 6px 20px #29251f18; }
.service-feature:focus-within { box-shadow: 0 12px 30px #29251f12; }
.service-link:focus-visible { background-size: 100% 1px; }
.story-play:focus-visible .play-circle, .video-card:focus-visible .play-circle { color: #fff; background: var(--ink); border-color: var(--ink); }
/* Height is animated by the disclosure controller, including interrupted gestures. */
.motion-disclosure { overflow: clip; }
.motion-disclosure > .treatment-body { animation: none; }
dialog[open] { animation: dialog-arrive 340ms var(--ease-detail); }
dialog[open]::backdrop { animation: backdrop-detail 240ms ease; }
@keyframes dialog-arrive { from { opacity: 0; transform: translateY(10px) scale(.99); } to { opacity: 1; transform: none; } }
@keyframes button-light { to { transform: translateX(110%); } }
@media (hover: hover) and (pointer: fine) {
  .button:hover { transform: translateY(-1px); box-shadow: 0 7px 18px #29251f18, inset 0 1px 0 #ffffff22; }
  .button:hover::after { animation: button-light 850ms var(--ease-detail); }
  .button:active { transform: translateY(1px); box-shadow: 0 1px 3px #29251f10; }
  .service-feature:hover { transform: translateY(-3px); box-shadow: 0 14px 30px #29251f12; }
  .service-feature:hover .service-image img { transform: scale(1.045); }
  .service-feature:hover .service-link { background-size: 100% 1px; }
  .service-link:hover span { transform: translate(3px,-3px); }
  .story-play:hover .play-circle, .video-card:hover .play-circle { color: #fff; background: var(--ink); border-color: var(--ink); transform: scale(1.08); }
  .video-card:hover .video-art > img { transform: scale(1.20); }
  .hero-discover:hover { background: #fff; }
}
@media (max-width: 760px) {
  .mobile-menu { position: absolute; top: 100%; inset-inline: 0; max-height: calc(100dvh - 164px); box-shadow: 0 18px 32px #29251f12; border-bottom: 1px solid var(--line); }
}
@media (prefers-reduced-motion: reduce) {
  html:not([data-motion-preview]) { scroll-behavior: auto; }
  html:not([data-motion-preview]) *, html:not([data-motion-preview]) *::before, html:not([data-motion-preview]) *::after { animation: none !important; transition: none !important; }
  html:not([data-motion-preview]) .service-feature:hover,
  html:not([data-motion-preview]) .button:hover { transform: none; }
}
