/* ===================================================================
   ZappTrip — premium buttons (Bootstrap + CTAs)
   Loads after custom.css (uses :root --zapp-btn-* tokens).
   =================================================================== */

/* ── Bootstrap .btn ── */
body .btn:not(.btn-link):not(.btn-close) {
  border-radius: var(--zapp-btn-radius-xl, 18px);
  padding: var(--zapp-btn-pad-y, 0.65rem) var(--zapp-btn-pad-x, 1.35rem);
  font-weight: 600;
  font-size: 0.9375rem;
  line-height: 1.45;
  letter-spacing: 0.01em;
  transition:
    transform var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    box-shadow var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    background-color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    border-color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    opacity var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1));
  box-shadow: var(--zapp-btn-shadow, 0 2px 10px rgba(15, 23, 42, 0.08));
}

body .btn-sm:not(.btn-link):not(.btn-close) {
  border-radius: var(--zapp-btn-radius, 14px);
  padding: 0.45rem 1rem;
  font-size: 0.8125rem;
}

body .btn-lg:not(.btn-link):not(.btn-close) {
  border-radius: var(--zapp-btn-radius-xl, 18px);
  padding: 0.85rem 1.55rem;
  font-size: 1.0625rem;
}

body .btn:hover:not(:disabled):not(.disabled):not(.btn-link):not(.btn-close) {
  transform: translateY(-2px) scale(1.02);
  box-shadow: var(--zapp-btn-shadow-hover, 0 12px 32px rgba(15, 23, 42, 0.14));
}

body .btn:active:not(:disabled):not(.disabled):not(.btn-link):not(.btn-close) {
  transform: translateY(0) scale(0.97);
  transition-duration: var(--zapp-btn-dur-fast, 0.1s);
}

body .btn-primary:hover:not(:disabled):not(.disabled) {
  box-shadow: var(--zapp-btn-primary-glow, 0 8px 28px rgba(11, 95, 255, 0.38)),
    var(--zapp-btn-shadow-hover, 0 12px 32px rgba(15, 23, 42, 0.14));
}

body .btn-outline-primary:hover:not(:disabled):not(.disabled),
body .btn-outline-secondary:hover:not(:disabled):not(.disabled),
body .btn-outline-dark:hover:not(:disabled):not(.disabled) {
  transform: translateY(-2px) scale(1.02);
}

body .btn-link,
body .btn-link:hover,
body .btn-link:active,
body .btn-link:focus {
  box-shadow: none;
  transform: none;
  border-radius: 10px;
}

body .btn-close {
  box-shadow: none;
  border-radius: 50%;
  transition: transform var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    opacity var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1));
}

body .btn-close:hover {
  transform: scale(1.08);
}

body .btn-close:active {
  transform: scale(0.95);
}

/* Softer default shadow on outline / light buttons */
body .btn-outline-primary:not(:hover):not(:active),
body .btn-outline-secondary:not(:hover):not(:active),
body .btn-outline-dark:not(:hover):not(:active),
body .btn-light:not(:hover):not(:active),
body .btn-secondary:not(:hover):not(:active) {
  box-shadow: 0 1px 6px rgba(15, 23, 42, 0.05);
}

/* Button groups — restore joined corners (global .btn radius would break groups) */
body .btn-group > .btn,
body .btn-group-vertical > .btn {
  border-radius: 0;
  box-shadow: none;
}
body .btn-group > .btn:first-child {
  border-top-left-radius: var(--zapp-btn-radius-xl, 18px);
  border-bottom-left-radius: var(--zapp-btn-radius-xl, 18px);
}
body .btn-group > .btn:last-child {
  border-top-right-radius: var(--zapp-btn-radius-xl, 18px);
  border-bottom-right-radius: var(--zapp-btn-radius-xl, 18px);
}
body .btn-group > .btn:only-child {
  border-radius: var(--zapp-btn-radius-xl, 18px);
}
body .btn-group-vertical > .btn:first-child {
  border-top-left-radius: var(--zapp-btn-radius-xl, 18px);
  border-top-right-radius: var(--zapp-btn-radius-xl, 18px);
}
body .btn-group-vertical > .btn:last-child {
  border-bottom-left-radius: var(--zapp-btn-radius-xl, 18px);
  border-bottom-right-radius: var(--zapp-btn-radius-xl, 18px);
}
body .btn-group .btn:hover,
body .btn-group-vertical .btn:hover {
  transform: none;
  z-index: 2;
}
body .btn-group .btn:active,
body .btn-group-vertical .btn:active {
  transform: none;
}

/* Input-group appended buttons */
body .input-group .btn {
  border-radius: 0;
  box-shadow: none;
}
body .input-group > .btn:first-child {
  border-top-left-radius: var(--zapp-btn-radius-xl, 18px);
  border-bottom-left-radius: var(--zapp-btn-radius-xl, 18px);
}
body .input-group > .btn:last-child {
  border-top-right-radius: var(--zapp-btn-radius-xl, 18px);
  border-bottom-right-radius: var(--zapp-btn-radius-xl, 18px);
}
body .input-group .btn:hover,
body .input-group .btn:active {
  transform: none;
}

/* ── Shared CTA list: radius + motion (hover / active) ── */
:is(
  .auth-submit-btn,
  .co-pay-btn,
  .co-coupon-apply-btn,
  .confirm-action-btn,
  .profile-save-btn,
  .lsm-cta-btn,
  .lsm-social-btn,
  .modal-btn,
  .zapp-btn-primary,
  .zapp-btn-outline,
  .zapp-nav-signup,
  .zapp-nav-btn-solid,
  .zt-pg-btn:not(.disabled),
  .srp-update-btn,
  .srp-promo-btn,
  .srp-book-ride-btn,
  .srp-cal-now-btn,
  .srp-rider-done-btn,
  .srp-guest-start-btn,
  .srp-addRider-btn,
  .srp-tmod-ok-btn,
  .srp-logingate-btn,
  .srp-reserve-btn,
  .srp-cmod-cancel-btn,
  .srp-cmod-confirm-btn,
  .srp-pmod-bargain-apply-btn,
  .srp-pmod-remove-btn,
  .srp-pmod-book-btn,
  .app-dl-btn
) {
  border-radius: var(--zapp-btn-radius-xl, 18px);
  transition:
    transform var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    box-shadow var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    background-color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    border-color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    opacity var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1));
}

:is(
  .auth-submit-btn,
  .co-pay-btn,
  .co-coupon-apply-btn,
  .confirm-action-btn,
  .profile-save-btn,
  .lsm-cta-btn,
  .lsm-social-btn,
  .modal-btn,
  .zapp-btn-primary,
  .zapp-btn-outline,
  .zapp-nav-signup,
  .zapp-nav-btn-solid,
  .zt-pg-btn:not(.disabled),
  .srp-update-btn,
  .srp-promo-btn,
  .srp-book-ride-btn,
  .srp-cal-now-btn,
  .srp-rider-done-btn,
  .srp-guest-start-btn,
  .srp-addRider-btn,
  .srp-tmod-ok-btn,
  .srp-logingate-btn,
  .srp-reserve-btn,
  .srp-cmod-cancel-btn,
  .srp-cmod-confirm-btn,
  .srp-pmod-bargain-apply-btn,
  .srp-pmod-remove-btn,
  .srp-pmod-book-btn,
  .app-dl-btn
):hover:not(:disabled) {
  transform: translateY(-2px) scale(1.02);
}

:is(
  .auth-submit-btn,
  .co-pay-btn,
  .co-coupon-apply-btn,
  .confirm-action-btn,
  .profile-save-btn,
  .lsm-cta-btn,
  .lsm-social-btn,
  .modal-btn,
  .zapp-btn-primary,
  .zapp-btn-outline,
  .zapp-nav-signup,
  .zapp-nav-btn-solid,
  .zt-pg-btn:not(.disabled),
  .srp-update-btn,
  .srp-promo-btn,
  .srp-book-ride-btn,
  .srp-cal-now-btn,
  .srp-rider-done-btn,
  .srp-guest-start-btn,
  .srp-addRider-btn,
  .srp-tmod-ok-btn,
  .srp-logingate-btn,
  .srp-reserve-btn,
  .srp-cmod-cancel-btn,
  .srp-cmod-confirm-btn,
  .srp-pmod-bargain-apply-btn,
  .srp-pmod-remove-btn,
  .srp-pmod-book-btn,
  .app-dl-btn
):active:not(:disabled) {
  transform: translateY(0) scale(0.97);
  transition-duration: var(--zapp-btn-dur-fast, 0.1s);
}

/* Stronger glow on primary solid CTAs */
:is(.auth-submit-btn, .co-pay-btn, .lsm-cta-btn, .zapp-btn-primary, .zapp-nav-signup, .zapp-nav-btn-solid):hover:not(:disabled) {
  box-shadow: var(--zapp-btn-primary-glow, 0 8px 28px rgba(11, 95, 255, 0.38)),
    var(--zapp-btn-shadow-hover, 0 12px 32px rgba(15, 23, 42, 0.14));
}

/* Navbar pill login — keep pill shape, add motion */
.zapp-nav-login-btn {
  transition:
    transform var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    box-shadow var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    background-color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    border-color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1)),
    color var(--zapp-btn-dur, 0.2s) var(--zapp-btn-ease, cubic-bezier(0.4, 0, 0.2, 1));
}

.zapp-nav-login-btn:hover {
  transform: translateY(-2px) scale(1.02);
  box-shadow: var(--zapp-btn-shadow-hover, 0 12px 32px rgba(15, 23, 42, 0.14));
}

.zapp-nav-login-btn:active {
  transform: translateY(0) scale(0.97);
  transition-duration: var(--zapp-btn-dur-fast, 0.1s);
}

/* Marketing / content CTAs */
.zapp-btn-primary,
.zapp-btn-outline {
  border-radius: var(--zapp-btn-radius-xl, 18px);
  padding: 0.7rem 1.45rem;
  font-size: 0.9375rem;
}

/* Coupon row apply — ensure min tap */
.co-coupon-apply-btn {
  padding: 0.65rem 1.15rem;
  font-weight: 600;
}

/* Confirm / profile buttons — padding bump */
.confirm-action-btn,
.profile-save-btn {
  padding: 0.85rem 1.35rem;
  border-radius: var(--zapp-btn-radius-xl, 18px);
  font-size: 0.9375rem;
}

.profile-save-btn:hover:not(:disabled) {
  box-shadow: var(--zapp-btn-shadow-hover, 0 12px 32px rgba(15, 23, 42, 0.14));
}

/* Pagination */
.zt-pg-btn:not(.disabled):hover {
  box-shadow: var(--zapp-btn-shadow-hover, 0 12px 32px rgba(15, 23, 42, 0.14));
}

.zt-pg-btn.active,
.zt-pg-btn.active:hover,
.zt-pg-btn.active:active {
  transform: none;
}
