/* Nagi Rhythm 1.8.1: brief feedback for deliberate actions. */

/* Animate the icon, keeping the save button and its text stationary. */
.nagi-v170 .nagi-save-button svg { transform-box: fill-box; transform-origin: center; }

/* Keep every modal usable immediately, with a shorter entrance and exit. */
.nagi-v170 .nagi-dialog[open] { animation: nagi-dialog-in .32s cubic-bezier(.2, .8, .2, 1) both; }
.nagi-v170 .nagi-dialog::backdrop { animation: nagi-backdrop-in .22s ease-out both; }
.nagi-v170 .nagi-dialog[open].nagi-dialog-closing { animation: nagi-dialog-out .18s ease-in both; }
.nagi-v170 .nagi-dialog.nagi-dialog-closing::backdrop { animation: nagi-backdrop-out .18s ease-in both; }
.nagi-v170 .nagi-dialog[open]:not(.nagi-dialog-closing) .nagi-dialog-head { animation: none; }
.nagi-v170 .nagi-menu-dialog[open]:not(.nagi-dialog-closing) .nagi-menu-all,
.nagi-v170 .nagi-menu-dialog[open]:not(.nagi-dialog-closing) .nagi-menu-other,
.nagi-v170 .nagi-menu-dialog[open]:not(.nagi-dialog-closing) .nagi-theme-toggle { animation: none; }
.nagi-v170 .nagi-dialog[open]:not(.nagi-dialog-closing) .nagi-topic-links > li {
    animation: nagi-menu-item-in .2s cubic-bezier(.2, .8, .2, 1) both;
    animation-delay: calc(var(--nagi-item, 0) * 10ms);
}
@keyframes nagi-dialog-in {
    from { opacity: .75; transform: translateY(14px) scale(.99); }
    to { opacity: 1; transform: none; }
}
@keyframes nagi-dialog-out {
    from { opacity: var(--nagi-close-opacity, 1); transform: var(--nagi-close-transform, none); }
    to { opacity: 0; transform: translateY(8px) scale(.995); }
}
@keyframes nagi-menu-item-in {
    from { opacity: .75; transform: translateY(4px); }
    to { opacity: 1; transform: none; }
}

/* Links move only their arrows, never the hit area or neighbouring content. */
.nagi-v170 :is(.nagi-index-arrow, .nagi-inline-arrow) {
    display: inline-flex;
    transition: transform .16s cubic-bezier(.2, .8, .2, 1);
}
@media (hover: hover) and (pointer: fine) {
    .nagi-v170 .nagi-index-link:hover .nagi-index-arrow,
    .nagi-v170 .nagi-inline-link:hover .nagi-inline-arrow,
    .nagi-v170 .nagi-home-collection-link:hover .nagi-index-arrow { transform: translateX(3px); }
}
.nagi-v170 .nagi-index-link:focus-visible .nagi-index-arrow,
.nagi-v170 .nagi-inline-link:focus-visible .nagi-inline-arrow,
.nagi-v170 .nagi-home-collection-link:focus-visible .nagi-index-arrow { transform: translateX(3px); }

/* Touch feedback begins on press, without delaying the ordinary link. */
.nagi-v170 :is(.nagi-index-link, .nagi-inline-link, .nagi-home-collection-link, .nagi-save-button):active {
    box-shadow: inset 0 0 0 2px var(--accent);
}

/* Remove displacement as well as transitions when motion is reduced. */
html[data-nagi-motion="off"] .nagi-v170 :is(.nagi-index-arrow, .nagi-inline-arrow),
html[data-nagi-motion="off"] .nagi-v170 .nagi-dialog .nagi-topic-links > li { transform: none !important; }
@media (prefers-reduced-motion: reduce) {
    .nagi-v170 .nagi-dialog,
    .nagi-v170 .nagi-dialog::backdrop,
    .nagi-v170 .nagi-dialog *,
    .nagi-v170 :is(.nagi-index-arrow, .nagi-inline-arrow) {
        animation: none !important;
        transition: none !important;
        transform: none !important;
    }
}
