/* Shared public/admin motion. Content is visible unless explicitly animated. */
.animation-page {
 --motion-ease:cubic-bezier(.22,1,.36,1);
 --motion-small:12px; --motion-medium:16px; --motion-large:24px; --motion-nav:-12px;
 --reveal-distance:20px;
}
@keyframes csy-enter {
 from { opacity:0; transform:translateY(var(--motion-travel,0px)); }
 to { opacity:1; transform:none; }
}
@keyframes csy-enter-image {
 from { opacity:0; transform:scale(.95); }
 to { opacity:1; transform:none; }
}
@keyframes csy-enter-fade { from { opacity:0; } to { opacity:1; } }
@keyframes csy-reveal {
 from { opacity:0; transform:translate(var(--reveal-x,0px),var(--reveal-y,0px)) scale(var(--reveal-scale,1)); }
 to { opacity:1; transform:none; }
}
@media (prefers-reduced-motion:no-preference) {
 .animation-page .header-container,
 .animation-page :is(.hero-copy,.page-banner,.page-heading) .eyebrow,
 .animation-page :is(.hero-copy,.page-banner,.page-heading,.detail-layout) h1,
 .admin-page.animation-page main > .panel > h1,
 .animation-page .hero-copy > h2,
 .animation-page .hero-copy > p:not(.hero-note),
 .animation-page :is(.page-banner,.page-heading) p,
 .animation-page .detail-layout .food-description,
 .animation-page .hero-copy > .button-row > .btn,
 .animation-page .page-heading > .btn,
 .animation-page .detail-layout .button-row > .btn,
 .admin-page.animation-page main > .panel > .add-button,
 .animation-page .hero-visual,
 .animation-page .detail-layout > .photo,
 .animation-page .entrance-image,
 .animation-page .hero-note,
 .animation-page .contact-layout > :is(.contact-info,.contact-form),
 .admin-page.animation-page main > section.panel,
 .admin-page.animation-page main > .panel > :is(form,.table-scroll),
 .animation-page .entrance-card {
  animation-name:csy-enter;
  animation-duration:var(--motion-duration,350ms);
  animation-delay:var(--motion-delay,0ms);
  animation-timing-function:var(--motion-ease);
  animation-fill-mode:both;
  animation-iteration-count:1;
 }
 .animation-page .header-container {
  --motion-travel:var(--motion-nav); --motion-duration:350ms; --motion-delay:0ms;
 }
 .animation-page :is(.hero-copy,.page-banner,.page-heading) .eyebrow {
  --motion-travel:var(--motion-small); --motion-duration:350ms; --motion-delay:150ms;
 }
 .animation-page :is(.hero-copy,.page-banner,.page-heading,.detail-layout) h1,
 .admin-page.animation-page main > .panel > h1 {
  --motion-travel:var(--motion-large); --motion-duration:550ms; --motion-delay:300ms;
 }
 .animation-page .hero-copy > h2,
 .animation-page .hero-copy > p:not(.hero-note),
 .animation-page :is(.page-banner,.page-heading) p,
 .animation-page .detail-layout .food-description {
  --motion-travel:var(--motion-medium); --motion-duration:450ms; --motion-delay:500ms;
 }
 .animation-page .hero-copy > .button-row > .btn,
 .animation-page .page-heading > .btn,
 .animation-page .detail-layout .button-row > .btn,
 .admin-page.animation-page main > .panel > .add-button {
  --motion-travel:var(--motion-small); --motion-duration:450ms; --motion-delay:650ms;
 }
 .animation-page .hero-copy > .button-row > .btn:nth-child(2) { --motion-delay:730ms; }
 .animation-page .hero-visual,
 .animation-page .detail-layout > .photo,
 .animation-page .entrance-image {
  animation-name:csy-enter-image; --motion-duration:850ms; --motion-delay:300ms;
 }
 .animation-page .hero-note,
 .animation-page .contact-layout > :is(.contact-info,.contact-form),
 .admin-page.animation-page main > section.panel,
 .admin-page.animation-page main > .panel > :is(form,.table-scroll) {
  animation-name:csy-enter-fade; --motion-duration:300ms; --motion-delay:900ms;
 }
 .animation-page .entrance-card {
  --motion-travel:var(--motion-small); --motion-duration:350ms;
  --motion-delay:calc(650ms + var(--card-stagger,0ms));
 }
 .animation-page .reveal-up { --reveal-y:var(--reveal-distance); }
 .animation-page .reveal-left { --reveal-x:calc(-1 * var(--reveal-distance)); }
 .animation-page .reveal-right { --reveal-x:var(--reveal-distance); }
 .animation-page .reveal-scale { --reveal-scale:.95; }
 .animation-page .reveal.is-pending {
  opacity:0;
  transform:translate(var(--reveal-x,0px),var(--reveal-y,0px)) scale(var(--reveal-scale,1));
 }
 .animation-page .reveal.is-revealing {
  animation:csy-reveal 600ms var(--motion-ease) var(--reveal-delay,0ms) both;
 }
}
@media (max-width:768px) {
 .animation-page { --motion-small:6px; --motion-medium:8px; --motion-large:12px; --motion-nav:-6px; --reveal-distance:10px; }
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
 .public-site .menu-card { transition:transform 300ms var(--motion-ease),box-shadow 300ms var(--motion-ease); }
 .public-site .menu-card:hover { transform:translateY(-5px); box-shadow:0 14px 34px #19191916; }
 .public-site .menu-card .photo img,
 .public-site .gallery-card .photo img { transition:transform 300ms var(--motion-ease); }
 .public-site .menu-card:hover .photo img { transform:scale(1.04); }
 .public-site .gallery-card:hover .photo img { transform:scale(1.05); }
}
.public-site .contact-form input:not([type=hidden]),
.public-site .contact-form textarea,
.admin-page .admin-form input:not([type=hidden]),
.admin-page .admin-form textarea {
 transition:border-color 180ms ease,box-shadow 180ms ease;
}
.public-site .contact-form :is(input,textarea):focus,
.admin-page .admin-form :is(input,textarea):focus {
 border-color:#A6192E; box-shadow:0 0 0 3px #a6192e14;
}
@media (prefers-reduced-motion:reduce) {
 .animation-page .reveal { opacity:1; transform:none; animation:none; }
 .public-site .contact-form :is(input,textarea),
 .admin-page .admin-form :is(input,textarea) { transition:none; }
}
