/* Short, task-specific motion. Content stays visible when JavaScript is unavailable. */
:root{--km-ease:cubic-bezier(.22,.72,.18,1);--km-olive:#aab514}
.admin-sidebar nav a .nav-icon,.customer-actions a svg{transition:translate 180ms var(--km-ease)!important}
.admin-sidebar nav a:hover .nav-icon,.customer-actions a:hover svg{translate:2px 0}
.booking-button,.checkout-primary,.checkout-button,.reservation-card .button{transition:background-color 160ms ease,box-shadow 160ms ease,translate 120ms var(--km-ease)!important}
.booking-button:active,.checkout-primary:active,.checkout-button:active,.reservation-card .button:active{translate:0 1px}
.reservation-card,.payment-card,.reservation-schedule{position:relative}
.km-pending-rail::after{content:"";position:absolute;left:16px;right:16px;bottom:0;height:3px;border-radius:3px;background:linear-gradient(90deg,transparent,#aab514,transparent);background-size:200% 100%;animation:km-progress 1100ms linear infinite;pointer-events:none}
.km-saved{animation:km-saved 900ms ease-out}
.km-submit-copy{display:inline-flex;align-items:center;justify-content:center;gap:9px}
.km-submit-mark{width:13px;height:13px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:km-turn 650ms linear infinite;flex:none}
.km-submit-status{display:block;font-size:12px;margin:8px 0 0;color:#626950}
.km-submit-status:empty{display:none}
.is-submitting{opacity:1!important;cursor:progress!important}
.reservation-schedule[aria-busy="true"] [data-schedule-message]{display:block;padding-left:14px;position:relative}
.reservation-schedule[aria-busy="true"] [data-schedule-message]::before{content:"";width:6px;height:6px;border-radius:50%;background:#8c960f;position:absolute;left:0;top:.55em;animation:km-breathe 850ms ease-in-out infinite alternate}
.reservation-schedule select{transition:background-color 160ms ease!important}
.reservation-schedule[aria-busy="true"] select{background-color:#f1f2e7}
dialog::backdrop{background:rgb(16 20 14 / .48)}

/* Every web action gets immediate pointer feedback without affecting touch devices. */
:where(
    button,
    [role="button"],
    input[type="button"],
    input[type="submit"],
    input[type="reset"],
    a.button,
    a[class*="button"],
    a.primary,
    a.secondary,
    a.app-download,
    a.customer-app-link,
    a.report-primary,
    a.global-back,
    .header-actions a,
    .hero-actions a,
    .record-actions a,
    .product-header-actions a,
    .checkout-actions a,
    .period-tabs a
){
    transition:background-color 150ms ease,border-color 150ms ease,color 150ms ease,box-shadow 170ms ease,filter 150ms ease,translate 150ms var(--km-ease),opacity 150ms ease!important;
    transition-delay:0ms!important;
}
@media(hover:hover) and (pointer:fine){
    :where(
        button,
        [role="button"],
        input[type="button"],
        input[type="submit"],
        input[type="reset"],
        a.button,
        a[class*="button"],
        a.primary,
        a.secondary,
        a.app-download,
        a.customer-app-link,
        a.report-primary,
        a.global-back,
        .header-actions a,
        .hero-actions a,
        .record-actions a,
        .product-header-actions a,
        .checkout-actions a,
        .period-tabs a
    ):not(:disabled):not([aria-disabled="true"]):hover:not(:active){
        filter:brightness(1.04) saturate(1.06)!important;
        translate:0 -2px!important;
        box-shadow:0 8px 18px rgb(23 24 23 / .16)!important;
    }
    .admin-sidebar nav a:hover,.customer-actions>a:hover,.history-actions>a:hover{
        filter:brightness(1.08);
    }
    :where(button,[role="button"],input[type="button"],input[type="submit"],input[type="reset"]):not(:disabled):not([aria-disabled="true"]):active{
        translate:0 1px!important;
    }
}
:where(button,input[type="button"],input[type="submit"],input[type="reset"]):disabled,
:where(button,[role="button"],a.button,a[class*="button"],a.app-download,a.customer-app-link,a.report-primary,a.global-back)[aria-disabled="true"]{
    transition-delay:0ms!important;
    cursor:not-allowed!important;
    filter:none!important;
    translate:none!important;
    box-shadow:none!important;
}
@keyframes km-turn{to{rotate:360deg}}
@keyframes km-progress{to{background-position:-200% 0}}
@keyframes km-breathe{from{opacity:.35}to{opacity:1}}
@keyframes km-saved{0%{box-shadow:inset 4px 0 #aab514;background-color:#f0f3d8}100%{box-shadow:inset 0 0 transparent}}
@media(prefers-reduced-motion:reduce){
    *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
    .admin-sidebar nav a:hover .nav-icon,.customer-actions a:hover svg,.booking-button:active,.checkout-primary:active,.checkout-button:active,.reservation-card .button:active{translate:none}
    .km-submit-mark{border-right-color:currentColor}
}
@media print{.km-submit-status,.km-submit-mark{display:none!important}*,*::before,*::after{animation:none!important;transition:none!important;translate:none!important;opacity:1!important}}
