/* Shared action buttons: app, driver portal, master and public forms.
 * Important declarations in this layer supersede legacy utilities and page CSS.
 * Navigation tabs, option cards and floating controls retain their layout. */
@layer asherloc-buttons {
    :root {
        --action-radius: 10px;
        --action-height: 44px;
        --action-blue: #2563eb;
        --action-blue-hover: #1d4ed8;
        --action-soft: #eff6ff;
        --action-soft-hover: #dbeafe;
        --action-soft-text: #1d4ed8;
        --action-surface: #fff;
        --action-surface-hover: #f1f5f9;
        --action-ink: #334155;
        --action-border: #cbd5e1;
    }
    [data-theme="dark"], body.dark-mode {
        --action-soft: #172f52;
        --action-soft-hover: #1e3a5f;
        --action-soft-text: #bfdbfe;
        --action-surface: #1e293b;
        --action-surface-hover: #334155;
        --action-ink: #f1f5f9;
        --action-border: #64748b;
    }

    :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral,
        .app-select-header button, .app-select-load-more,
        .dc-primary, .dc-modal-actions button, .dc-settings-back,
        .dc-new-conversation button) {
        box-sizing: border-box;
        border-radius: var(--action-radius) !important;
        min-height: var(--action-height) !important;
        min-width: var(--action-height);
        font-family: inherit !important;
        font-size: var(--ui-text, 14px) !important;
        font-weight: 600 !important;
        line-height: 1.4 !important;
        letter-spacing: normal !important;
        text-transform: none !important;
        text-decoration: none !important;
        box-shadow: none !important;
        transition: background-color .15s ease, border-color .15s ease, color .15s ease;
        touch-action: manipulation;
        vertical-align: middle;
        overflow-wrap: anywhere;
    }

    /* Keep visibility utilities and multi-line action cards working. */
    :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral,
        .app-select-header button, .app-select-load-more,
        .dc-primary, .dc-modal-actions button, .dc-settings-back,
        .dc-new-conversation button):not(.scroll-nav-btn, #btnRecord) {
        height: auto !important;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
    }
    :is(.btn, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral,
        .app-select-header button, .app-select-load-more,
        .dc-primary, .dc-modal-actions button, .dc-settings-back,
        .dc-new-conversation button):not(.scroll-nav-btn, #btnRecord,
        .btn-cat-premium, .btn-report-card, .btn-assistencia-portal, .btn-toggle-view,
        .collapse-btn, .flex-column) {
        padding: 10px 16px !important;
    }
    .btn.rounded-circle:not(.scroll-nav-btn, #btnRecord), .btn-icon {
        padding: 10px !important;
        min-width: var(--action-height) !important;
    }
    .page-link { padding: 10px 12px !important; }
    /* Filter rows scroll; their buttons must never shrink around their labels. */
    .financial-filter-strip {
        display: flex !important;
        flex-wrap: nowrap !important;
        gap: 8px !important;
        width: 100%;
        min-width: 0 !important;
        max-width: 100% !important;
        overflow-x: auto;
        padding-block: 4px 8px;
        overscroll-behavior-x: contain;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: thin;
        scrollbar-color: var(--action-border) transparent;
    }
    .financial-filter-strip > .btn {
        flex: 0 0 auto !important;
        gap: 8px !important;
        white-space: nowrap !important;
        overflow-wrap: normal;
    }
    /* Recording and scroll controls are spatial controls, not form actions. */
    #btnRecord, .scroll-nav-btn { border-radius: 50% !important; }

    :is(.btn-secondary, .btn-light, .btn-white, .btn-dark, .btn-outline-secondary,
        .btn-outline-dark, .btn-neutral, .btn-outline-glass, .btn-copy, .btn-action,
        .page-link, .dc-settings-back) {
        --button-bg: var(--action-surface);
        --button-hover: var(--action-surface-hover);
        --button-text: var(--action-ink);
        --button-border: var(--action-border);
    }
    :is(.btn-primary, .btn-login, .btn-register, .btn-pay, .btn-primary-glow,
        .btn-reserve, .btn-print, .dc-primary) {
        --button-bg: var(--action-blue);
        --button-hover: var(--action-blue-hover);
        --button-text: #fff;
        --button-border: var(--action-blue);
    }
    :is(.btn-outline-primary, .btn-filter, .app-select-header button, .app-select-load-more) {
        --button-bg: var(--action-soft);
        --button-hover: var(--action-soft-hover);
        --button-text: var(--action-soft-text);
        --button-border: #93c5fd;
    }
    .btn-success { --button-bg: var(--ui-success, #15803d); --button-hover: #166534; --button-text: #fff; --button-border: var(--ui-success, #15803d); }
    .btn-danger { --button-bg: var(--ui-danger, #dc2626); --button-hover: #b91c1c; --button-text: #fff; --button-border: var(--ui-danger, #dc2626); }
    .btn-warning { --button-bg: var(--ui-warning, #fbbf24); --button-hover: #f59e0b; --button-text: #422006; --button-border: var(--ui-warning, #fbbf24); }
    .btn-info { --button-bg: var(--ui-info, #0e7490); --button-hover: #155e75; --button-text: #fff; --button-border: var(--ui-info, #0e7490); }
    .btn-outline-danger { --button-bg: var(--ui-danger-soft, #fff1f2); --button-hover: var(--ui-danger-soft, #ffe4e6); --button-text: var(--ui-danger-ink, #b91c1c); --button-border: #fda4af; }
    .btn-outline-success { --button-bg: var(--ui-success-soft, #f0fdf4); --button-hover: var(--ui-success-soft, #dcfce7); --button-text: var(--ui-success-ink, #166534); --button-border: #86efac; }
    .btn-outline-warning { --button-bg: var(--ui-warning-soft, #fffbeb); --button-hover: var(--ui-warning-soft, #fef3c7); --button-text: var(--ui-warning-ink, #92400e); --button-border: #fcd34d; }
    .btn-outline-info { --button-bg: var(--ui-info-soft, #ecfeff); --button-hover: var(--ui-info-soft, #cffafe); --button-text: var(--ui-info-ink, #155e75); --button-border: #67e8f9; }
    .btn-outline-light { --button-bg: transparent; --button-hover: #ffffff24; --button-text: #fff; --button-border: #cbd5e1; }
    .page-link.active, .page-item.active .page-link {
        --button-bg: var(--action-blue); --button-hover: var(--action-blue-hover);
        --button-text: #fff; --button-border: var(--action-blue);
    }
    .btn-check:checked + :is(.btn-outline-primary, .btn-outline-secondary, .btn-outline-dark),
    :is(.btn-outline-primary, .btn-outline-secondary, .btn-outline-dark, .btn-neutral):is(.active, [aria-pressed="true"]) {
        --button-bg: var(--action-blue); --button-hover: var(--action-blue-hover);
        --button-text: #fff; --button-border: var(--action-blue);
    }
    .btn-check:checked + .btn :is(.text-primary, .text-muted) { color: inherit !important; }

    :is(.btn-primary, .btn-login, .btn-register, .btn-pay, .btn-primary-glow,
        .btn-reserve, .btn-print, .dc-primary, .btn-secondary, .btn-light, .btn-white,
        .btn-dark, .btn-outline-secondary, .btn-outline-dark, .btn-neutral,
        .btn-outline-glass, .btn-copy, .btn-action, .page-link, .dc-settings-back,
        .btn-outline-primary, .btn-filter, .app-select-header button, .app-select-load-more,
        .btn-success, .btn-danger, .btn-warning, .btn-info, .btn-outline-danger,
        .btn-outline-success, .btn-outline-warning, .btn-outline-info, .btn-outline-light) {
        background-color: var(--button-bg) !important;
        background-image: none !important;
        border: 1px solid var(--button-border) !important;
        color: var(--button-text) !important;
    }
    @media (hover: hover) {
        :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
            .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral,
            .app-select-header button, .app-select-load-more, .dc-primary,
            .dc-settings-back):not(:disabled, .disabled, [aria-disabled="true"]):hover {
            background-color: var(--button-hover, var(--button-bg)) !important;
            transform: none !important;
        }
    }
    :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral,
        .app-select-header button, .app-select-load-more, .dc-primary,
        .dc-modal-actions button, .dc-settings-back):focus-visible {
        outline: 3px solid #60a5fa !important;
        outline-offset: 3px !important;
    }
    :is(.btn, .page-link):not(:disabled, .disabled, [aria-disabled="true"]):active {
        filter: brightness(.96);
    }
    .btn[aria-busy="true"] { cursor: progress; }
    .btn[hidden], .page-link[hidden], .app-select-load-more[hidden] { display: none !important; }
    :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral, .dc-primary)
        :is(.spinner-border, .spinner-grow) { flex-shrink: 0; }
    :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral, .dc-primary)
        :is(.fw-bold, .fw-extrabold) { font-weight: 600 !important; }
    :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral, .dc-primary)
        :is(i, svg) { flex-shrink: 0; }
    :is(.btn:not(.btn-report-card,.btn-cat-premium,.btn-assistencia-portal,.flex-column,#btnRecord),.page-link,.dc-primary)>i {
        font-size: 1.142857rem !important;
        line-height: 1 !important;
    }
    :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral, .dc-primary)
        :is(.me-1, .me-2, .ms-1, .ms-2) { margin-inline: 0 !important; }
    :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
        .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral, .dc-primary):is(:disabled, .disabled, [aria-disabled="true"]) {
        opacity: .55 !important;
        pointer-events: none;
        box-shadow: none !important;
    }
    @media (prefers-reduced-motion: reduce) {
        .btn, .page-link { transition: none !important; }
    }
    /* Compact actions are allowed only with a mouse in desktop tables. */
    @media screen and (min-width: 768px) and (pointer: fine) {
        .table .btn.btn-sm:not(.btn-icon,.rounded-circle) {
            min-height: 36px !important;
            padding: 6px 10px !important;
            font-size: var(--ui-small,13px) !important;
        }
    }
}

/* Three chat filters must wrap instead of overflowing the narrow inbox. */
@layer asherloc-buttons {
    @media screen and (max-width: 767.98px) {
        #cash-period-filters { gap: 3px !important; padding: 2px !important; flex-wrap: wrap !important; }
        #cash-period-filters > a.btn {
            padding: 8px 4px !important;
            font-size: .857143rem !important;
        }
        #cash-category-filters {
            display: grid !important;
            grid-template-columns: repeat(auto-fit,minmax(min(100%,max(9rem,calc(50% - 6px))),1fr));
            overflow: visible; padding: 0;
        }
        #cash-category-filters > a.btn { padding: 8px !important; font-size: var(--ui-text) !important; }
        #cash-category-filters > a.btn:first-child { grid-column: 1 / -1; }
        #cash-date-filters .cash-date-actions > .btn { padding: 10px !important; width: 44px; }
        .topbar button#userMenu.btn { padding: 0 4px !important; min-height: 44px !important; }
        #pendencia-gravidade label.btn { padding: 8px !important; }
        form .form-actions > .btn {
            padding: 8px !important;
            min-height: 44px !important;
        }
        .vehicle-detail-actions a.btn {
            padding: 8px 12px !important;
            max-width: 100%;
            flex-shrink: 0;
            overflow-wrap: normal;
            word-break: normal;
        }
    }
}

.dc-inbox-filters { flex-wrap: wrap; }

/* Unlayered display allows Bootstrap d-none/d-*-none utilities to keep priority. */
html body :is(.btn, .page-link, .btn-pay, .btn-copy, .btn-primary-glow, .btn-outline-glass,
    .btn-reserve, .btn-action, .btn-print, .btn-filter, .btn-neutral,
    .app-select-header button, .app-select-load-more, .dc-primary,
    .dc-modal-actions button, .dc-settings-back, .dc-new-conversation button):not(.scroll-nav-btn, #btnRecord) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
