/* =============================================================
   site-polish.css — uniform motion + interaction layer
   Additive only. No layout, color-identity, or copy changes.
   Loaded LAST on marketing pages so it harmonizes the shared
   chrome (nav, buttons, links, focus) across pages without
   rewriting any page's bespoke styles.
   ============================================================= */

:root {
    /* one shared easing + duration so every page animates alike */
    --db-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
    --db-dur: 0.28s;
    --db-focus: var(--green-deep, #257A3F);
}

/* Smooth in-page anchor scrolling everywhere */
html { scroll-behavior: smooth; }

/* Consistent, calm transitions on every interactive element.
   Only animates properties that are safe to tween; never layout. */
a,
button,
.btn-primary,
.btn-secondary,
.btn,
.nav-link,
.mobile-nav-link,
.logo-link {
    transition:
        color var(--db-dur) var(--db-ease),
        background-color var(--db-dur) var(--db-ease),
        border-color var(--db-dur) var(--db-ease),
        box-shadow var(--db-dur) var(--db-ease),
        transform var(--db-dur) var(--db-ease),
        opacity var(--db-dur) var(--db-ease);
}

/* Uniform hover lift on the shared button components (same feel on
   every page that uses them). Bespoke per-page CTAs keep their own. */
.btn-primary:hover,
.btn-secondary:hover,
.btn.btn-solid:hover,
.btn.btn-outline:hover {
    transform: translateY(-2px);
}

/* Logo gives a subtle press-back cue, uniform across pages */
.logo-link:active { transform: translateY(1px); }

/* Consistent, visible keyboard focus ring site-wide (a11y floor) */
a:focus-visible,
button:focus-visible,
[tabindex]:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
.btn:focus-visible,
.btn-primary:focus-visible,
.btn-secondary:focus-visible,
.nav-link:focus-visible {
    outline: 2px solid var(--db-focus);
    outline-offset: 3px;
    border-radius: 4px;
}

/* Respect reduced-motion: drop scroll smoothing, transitions, lifts */
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    a, button, .btn-primary, .btn-secondary, .btn, .nav-link, .mobile-nav-link, .logo-link {
        transition: none;
    }
    .btn-primary:hover,
    .btn-secondary:hover,
    .btn.btn-solid:hover,
    .btn.btn-outline:hover,
    .logo-link:active {
        transform: none;
    }
}
