/* Atelier 4.8: animation details only. The approved 4.7 layout is untouched. */
.motion-line { display:block; overflow:clip; padding-bottom:.15em; margin-bottom:-.15em; }
.motion-line-inner { display:block; }
.menu-tabs { position:relative; }
.menu-active-line { position:absolute; left:0; top:0; width:1px; height:2px; background:currentColor; transform-origin:0 50%; pointer-events:none; }
.menu-tabs[data-motion-indicator] button::after { opacity:0; }
.menu-tabs [role="tab"] { transition:color 220ms ease,background-color 220ms ease; }
.menu-tabs [role="tab"]:hover { background:color-mix(in srgb,var(--ink) 5%,transparent); }
.search-field { position:relative; }
.search-field::after { content:''; position:absolute; bottom:0; left:0; right:0; height:1px; background:var(--ink); transform:scaleX(0); transform-origin:left; transition:transform 400ms var(--ease-out); pointer-events:none; }
.search-field:focus-within::after { transform:scaleX(1); }
.dish-row { transition:background-color 220ms ease; }
.dish-row:hover { background:color-mix(in srgb,var(--ink) 3%,transparent); }
.dish-price { transition:translate 300ms var(--ease-out); }
.dish-row:hover .dish-price { translate:-3px 0; }
.menu-aside figure { overflow:clip; }
.programme-photo { overflow:clip; }
.banquet-bg { overflow:hidden; }
/* Native, one-shot interactions: no decorative infinite animation. */
.button, .gallery-controls button, .dialog-close, .menu-toggle { transition:background-color 220ms ease,color 220ms ease,border-color 220ms ease,scale 180ms var(--ease-out); }
.button:active, .gallery-controls button:active, .dialog-close:active { scale:.975; }
.menu-toggle:active { scale:.94; }
.gallery-caption .icon-arrow, .contact-links .icon-arrow, .footer-grid .icon-arrow { transition:transform 350ms var(--ease-out); }
.gallery-item:is(:hover,:focus-visible) .gallery-caption .icon-arrow,
.contact-links a:is(:hover,:focus-visible) .icon-arrow,
.footer-grid a:is(:hover,:focus-visible) .icon-arrow { transform:translate(3px,-3px); }
.mood-switch button svg { transition:transform 550ms var(--ease-out); }
.mood-switch button[aria-pressed="true"] svg { transform:rotate(12deg); }
.mood-switch button:active svg { transform:rotate(-18deg) scale(.9); }
.banquet-occasions > div, .banquet-steps > li, .visit-details > div { position:relative; }
.banquet-occasions > div::after, .banquet-steps > li::after { content:''; position:absolute; height:1px; background:var(--ink); left:0; right:0; top:0; transform:scaleX(0); transform-origin:left; transition:transform .75s var(--ease-out); pointer-events:none; opacity:.5; }
[data-motion-played="true"].banquet-steps > li::after,
.banquet-steps > li[data-motion-played="true"]::after,
.banquet-occasions > div[data-motion-played="true"]::after { transform:scaleX(1); }
/* Keep both the resting pose and focus feedback of the book. Do not animate a large shadow. */
.menu-cover { transition:transform .8s var(--ease-out); }
.menu-cover:focus-visible { transform:rotate(-1deg) translateY(-8px); }
.mobile-menu[data-closing] { pointer-events:none; }
/* Page elements own their entrances; moving the entire main would disturb sticky geometry. */
.route-enter { animation:none; }
@media (hover:hover) and (pointer:fine) {
  .event-card .icon-arrow { transition:transform 400ms var(--ease-out); }
  .event-card:hover .icon-arrow { transform:translate(4px,-4px); }
  .gallery-item:focus-visible img { transform:scale(1.025); }
}
@media (max-width:700px) {
  .gallery-item:hover img { transform:none; }
  .dish-row:hover .dish-price { translate:none; }
}
/* Policy changes also suppress inherited CSS animations; no stranded hidden elements. */
html[data-motion="quiet"] *,html[data-motion="quiet"] *::before,html[data-motion="quiet"] *::after {
  animation:none!important;transition:none!important;scroll-behavior:auto!important;
}
@media (prefers-reduced-motion:reduce) {
  .motion-line { overflow:visible; }
  .menu-cover:focus-visible { transform:rotate(-4deg); }
  .button:active,.dialog-close:active,.gallery-controls button:active,.menu-toggle:active { scale:1; }
  .dish-row:hover .dish-price { translate:none; }
}

html[data-motion="quiet"] .gallery-item:hover img { transform:none; }
html[data-motion="quiet"] .menu-cover:is(:hover,:focus-visible) { transform:rotate(-4deg); }
html[data-motion="quiet"] .round-arrow:hover { transform:none; }
html[data-motion="quiet"] .button:active { scale:1; }
