/* Motion never hides server-rendered content until JS has initialized. */
.dmf-motion-ready [data-dmf-reveal],
.dmf-motion-ready [data-dmf-stagger] > * {
    opacity: 0;
    transform: translate3d(var(--dmf-enter-x, 0), var(--dmf-enter-y, 0), 0) scale(var(--dmf-enter-scale, 1));
    transition: opacity var(--dmf-motion-slow) var(--dmf-ease), transform var(--dmf-motion-slow) var(--dmf-ease);
}
[data-dmf-reveal="fade-up"], [data-dmf-stagger] > * { --dmf-enter-y: 16px; }
[data-dmf-reveal="fade-down"] { --dmf-enter-y: -16px; }
[data-dmf-reveal="fade-left"] { --dmf-enter-x: 16px; }
[data-dmf-reveal="fade-right"] { --dmf-enter-x: -16px; }
[data-dmf-reveal="zoom-in"] { --dmf-enter-scale: .97; }
[data-dmf-reveal="zoom-out"] { --dmf-enter-scale: 1.03; }
.dmf-motion-ready [data-dmf-reveal].dmf-is-visible,
.dmf-motion-ready [data-dmf-stagger] > .dmf-is-visible { opacity: 1; transform: none; }
.dmf-motion-ready [data-dmf-stagger] > * { transition-delay: var(--dmf-stagger-delay, 0ms); }
.dmf-motion-ready [data-dmf-stagger] > .dmf-is-visible.dmf-hover-lift:hover { transform: translateY(-3px); }
.dmf-motion-ready [data-dmf-stagger] > .dmf-is-visible.dmf-p-gallery-card:hover { transform: translateY(-2px); }

.dmf-hover-lift { transition: transform var(--dmf-motion-normal) var(--dmf-ease), box-shadow var(--dmf-motion-normal) var(--dmf-ease); }
.dmf-hover-shadow { transition: box-shadow var(--dmf-motion-normal) var(--dmf-ease); }
.dmf-hover-soft-scale { transition: transform var(--dmf-motion-normal) var(--dmf-ease); }
.dmf-hover-image-zoom img { transition: transform var(--dmf-motion-normal) var(--dmf-ease); }
.dmf-hover-underline { text-decoration-color: transparent; transition: text-decoration-color var(--dmf-motion-fast) ease; }
.dmf-hover-icon-shift .dmf-motion-icon { display: inline-block; transition: transform var(--dmf-motion-fast) var(--dmf-ease); }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .dmf-hover-lift:hover { transform: translateY(-3px); box-shadow: var(--dmf-shadow-hover); }
    .dmf-hover-shadow:hover { box-shadow: var(--dmf-shadow-hover); }
    .dmf-hover-soft-scale:hover { transform: scale(1.015); }
    .dmf-hover-image-zoom:hover img { transform: scale(1.025); }
    .dmf-hover-underline:hover { text-decoration-color: currentColor; }
    .dmf-hover-icon-shift:hover .dmf-motion-icon { transform: translateX(3px); }
}
.dmf-p-hero .school-hero-media img { animation: dmf-hero-arrive 900ms var(--dmf-ease) both; }
@keyframes dmf-hero-arrive { from { transform: scale(1.025); } to { transform: scale(1.002); } }
.lightbox-overlay:not([hidden]) { animation: dmf-lightbox-in var(--dmf-motion-normal) ease-out both; }
.lightbox-overlay:not([hidden]) .lightbox-image { animation: dmf-lightbox-image var(--dmf-motion-normal) var(--dmf-ease) both; }
@keyframes dmf-lightbox-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes dmf-lightbox-image { from { opacity: .75; transform: scale(.985); } to { opacity: 1; transform: none; } }

@media (max-width: 760px) { :root { --dmf-motion-slow: 320ms; } }
@media (prefers-reduced-motion: reduce) {
    .dmf-motion-ready [data-dmf-reveal], .dmf-motion-ready [data-dmf-stagger] > * { opacity: 1 !important; transform: none !important; transition: none !important; }
    .dmf-p-hero .school-hero-media img, .lightbox-overlay:not([hidden]), .lightbox-overlay:not([hidden]) .lightbox-image { animation: none !important; }
    .dmf-hover-lift, .dmf-hover-shadow, .dmf-hover-soft-scale, .dmf-hover-image-zoom img, .dmf-hover-underline, .dmf-hover-icon-shift .dmf-motion-icon { transition: none !important; }
}
