/* Progressive enhancement: no JavaScript means fully visible content. */
:is(.d33-heading,.d33-button)[data-d33-reveal].d33-motion-ready:not(.d33-is-visible):not(:focus-within) { opacity: 0; }
:is(.d33-heading,.d33-button)[data-d33-reveal]:is(.d33-is-visible,.d33-is-previewing) {
    animation-duration: var(--d33-motion-duration, 650ms);
    animation-delay: var(--d33-motion-delay, 0ms);
    animation-timing-function: cubic-bezier(.2,.65,.3,1);
    animation-fill-mode: both;
    animation-iteration-count: 1;
}
:is(.d33-heading,.d33-button)[data-d33-reveal="fade"]:is(.d33-is-visible,.d33-is-previewing) { animation-name: d33-fade; }
:is(.d33-heading,.d33-button)[data-d33-reveal="fade-up"]:is(.d33-is-visible,.d33-is-previewing) { animation-name: d33-fade-up; }
:is(.d33-heading,.d33-button)[data-d33-reveal="fade-down"]:is(.d33-is-visible,.d33-is-previewing) { animation-name: d33-fade-down; }
:is(.d33-heading,.d33-button)[data-d33-reveal="slide-left"]:is(.d33-is-visible,.d33-is-previewing) { animation-name: d33-slide-left; }
:is(.d33-heading,.d33-button)[data-d33-reveal="slide-right"]:is(.d33-is-visible,.d33-is-previewing) { animation-name: d33-slide-right; }
:is(.d33-heading,.d33-button)[data-d33-reveal="zoom-in"]:is(.d33-is-visible,.d33-is-previewing) { animation-name: d33-zoom-in; }
:is(.d33-heading,.d33-button)[data-d33-reveal="blur"]:is(.d33-is-visible,.d33-is-previewing) { animation-name: d33-blur; }
@keyframes d33-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes d33-fade-up { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
@keyframes d33-fade-down { from { opacity: 0; transform: translateY(-24px); } to { opacity: 1; transform: none; } }
@keyframes d33-slide-left { from { opacity: 0; transform: translateX(-24px); } to { opacity: 1; transform: none; } }
@keyframes d33-slide-right { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: none; } }
@keyframes d33-zoom-in { from { opacity: 0; transform: scale(.94); } to { opacity: 1; transform: none; } }
@keyframes d33-blur { from { opacity: 0; filter: blur(6px); } to { opacity: 1; filter: none; } }
:is(.d33-heading,.d33-button)[data-d33-hover] {
    transition: translate var(--d33-motion-duration, 650ms), scale var(--d33-motion-duration, 650ms), box-shadow var(--d33-motion-duration, 650ms);
}
.d33-button[data-d33-hover] > .d33-button__link,
.d33-heading[data-d33-hover] > :is(.d33-heading__main,.d33-heading__sub) { transition: filter var(--d33-motion-duration, 650ms); }
:is(.d33-heading,.d33-button)[data-d33-hover="lift"]:is(:hover,:focus-within) { translate: 0 -4px; }
:is(.d33-heading,.d33-button)[data-d33-hover="grow"]:is(:hover,:focus-within) { scale: 1.025; }
:is(.d33-heading,.d33-button)[data-d33-hover="sink"]:is(:hover,:focus-within) { translate: 0 3px; }
.d33-button[data-d33-hover="glow"]:is(:hover,:focus-within) > .d33-button__link { box-shadow: 0 0 18px color-mix(in srgb, var(--d33-primary), transparent 50%); }
.d33-heading[data-d33-hover="glow"]:is(:hover,:focus-within) > :is(.d33-heading__main,.d33-heading__sub) { filter: drop-shadow(0 2px 6px color-mix(in srgb, var(--d33-primary), transparent 60%)); }
.d33-button[data-d33-hover="brighten"]:is(:hover,:focus-within) > .d33-button__link,
.d33-heading[data-d33-hover="brighten"]:is(:hover,:focus-within) > :is(.d33-heading__main,.d33-heading__sub) { filter: brightness(1.15); }
.d33-button[data-d33-hover="shine"] > .d33-button__link { overflow: hidden; }
.d33-button[data-d33-hover="shine"] > .d33-button__link::before {
    content: ''; position: absolute; inset-block: -25%; left: -60%; width: 35%;
    background: linear-gradient(90deg, transparent, #ffffff66, transparent); transform: skewX(-20deg); pointer-events: none;
}
.d33-button[data-d33-hover="shine"]:is(:hover,:focus-within) > .d33-button__link::before { animation: d33-shine var(--d33-motion-duration, 650ms) ease-out; }
@keyframes d33-shine { from { left: -60%; } to { left: 140%; } }
.d33-button[data-d33-hover="arrow"] > .d33-button__link::after { transition: transform var(--d33-motion-duration, 650ms); }
.d33-button[data-d33-hover="arrow"]:is(:hover,:focus-within) > .d33-button__link::after { transform: translateX(5px); }
/* Keyboard focus must never wait for a reveal animation. */
:is(.d33-heading,.d33-button)[data-d33-reveal]:focus-within { opacity: 1 !important; animation: none !important; }
@media (prefers-reduced-motion: reduce) {
    :is(.d33-heading,.d33-button)[data-d33-reveal] { opacity: 1 !important; animation: none !important; transform: none !important; filter: none !important; }
    :is(.d33-heading,.d33-button)[data-d33-hover],
    .d33-button[data-d33-hover] > .d33-button__link,
    .d33-button[data-d33-hover] > .d33-button__link::before,
    .d33-button[data-d33-hover] > .d33-button__link::after,
    .d33-heading[data-d33-hover] > :is(.d33-heading__main,.d33-heading__sub) { animation: none !important; transition: none !important; transform: none !important; translate: none !important; scale: none !important; filter: none !important; }
}
