/* Shared UI contracts. Specialized editors, signatures, maps, plans and document
 * canvases retain their geometry; screen controls reuse existing Bootstrap/Blade. */
@layer asherloc-components {
    @media screen {
        body { font-family: var(--ui-font) !important; }
        .topbar-brand-crop { display: block; width: 48px; height: 48px; flex-shrink: 0; }
        .topbar .topbar-brand-crop img {
            display: block; width: 48px !important; height: 48px !important;
            max-width: none !important; max-height: none !important;
        }
        :is(h1,h2,h3,h4,h5,h6,.font-heading) { font-family: var(--ui-font) !important; font-weight: 700; }
        :is(input,select,textarea,button):not([type=checkbox],[type=radio]) { font-family: inherit; }
        :is(.login-card,.register-card,.card-verify,.card-custom) {
            --ui-surface: #101b2a; --ui-text-color: #e5edf5;
            --ui-muted: #a6b7ca; --ui-field-border: #73849c; --ui-focus: #93c5fd;
            --ui-primary-ink: #93c5fd; --ui-danger-ink: #fecaca;
            --ui-success-ink: #86efac; --ui-warning-ink: #f3d48c;
        }
        .ui-field-group>.input-group-text,.input-group-custom>i { color: var(--ui-primary-ink) !important; }
        .terms-check a { color: var(--ui-primary-ink) !important; }
        .input-group-custom {
            min-height: var(--ui-control-height) !important;
            border-radius: var(--ui-radius-control) !important;
            border: 1px solid var(--ui-field-border) !important;
            gap: var(--ui-space-2); min-width: 0;
        }
        .input-group-custom:focus-within { outline: 3px solid var(--ui-focus); outline-offset: 2px; }
        .form-control-custom {
            font-size: var(--ui-field) !important; font-weight: 400 !important;
            line-height: 1.5 !important; padding-block: 10px !important;
            min-height: var(--ui-control-height); color: var(--ui-text-color) !important;
        }
        .form-control-custom::placeholder { color: var(--ui-muted) !important; opacity: 1; }
        :is(.login-card,.register-card) input:-webkit-autofill,
        :is(.login-card,.register-card) input:-webkit-autofill::first-line {
            font-family: var(--ui-font) !important; font-size: var(--ui-field) !important;
            font-weight: 400 !important; -webkit-text-fill-color: var(--ui-text-color) !important;
        }
        :is(.form-control,.form-select,.app-select-trigger,.select2-selection):not([type=checkbox],[type=radio],[type=range],[type=color],.app-select-native) {
            min-height: var(--ui-control-height) !important;
            height: auto !important;
            border: 1px solid var(--ui-field-border) !important;
            border-radius: var(--ui-radius-control) !important;
            padding: 10px 12px !important;
            background-color: var(--ui-surface) !important;
            color: var(--ui-text-color) !important;
            box-shadow: none !important;
            max-width: 100%; min-width: 0;
        }
        .form-floating>.form-control,.form-floating>.form-select { min-height: 4rem !important; padding-top: 1.6rem !important; }
        .input-group>.form-control,.input-group>.form-select { width: 1%; }
        .form-control::placeholder,.dc-shell input::placeholder,.dc-shell textarea::placeholder { color: var(--ui-muted) !important; opacity: 1; }
        /* The browser's upload button has its own paint; inherit both colors. */
        input[type=file].form-control::file-selector-button {
            background-color: var(--ui-subtle) !important;
            color: var(--ui-text-color) !important;
            border-inline-end: 1px solid var(--ui-field-border) !important;
            font: inherit;
        }
        input[type=file].form-control:hover:not(:disabled)::file-selector-button {
            background-color: var(--ui-surface) !important;
        }
        #pendencia-gravidade { min-width: 0; }
        #pendencia-gravidade .severity-options {
            display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,7rem),1fr)); gap: 8px;
        }
        #pendencia-gravidade .btn { min-width: 0; overflow-wrap: normal; word-break: normal; }
        .vehicle-detail-actions { max-width: 100%; }
        .cash-balance-symbol { background-color: #172f52 !important; color: #bfdbfe !important; }
        .form-actions {
            display: flex; flex-wrap: wrap; justify-content: flex-end;
            align-items: stretch; gap: 12px; min-width: 0;
        }
        .form-actions > .btn {
            margin: 0 !important; max-width: 100%;
            flex: 0 1 auto; overflow-wrap: normal; word-break: normal;
        }
        .fine-information-heading > h5 { flex: 1 1 14rem; min-width: 0; }
        .fine-vehicle-plate {
            flex: 0 0 auto; max-width: 100%; white-space: nowrap;
            overflow-wrap: normal; word-break: normal; overflow-x: auto;
        }
        .cnh-status-label {
            max-width: 100%; white-space: normal; overflow-wrap: normal;
            word-break: normal; text-align: start;
        }
        .cnh-validity-summary > i { flex-shrink: 0; }
        .cnh-validity-summary > div { flex: 1; min-width: 0; }
        .cnh-validity-summary .small { overflow-wrap: normal; word-break: normal; }
        /* Decorative icon circles must not surrender their width to long text. */
        div.rounded-circle:has(> i) { flex-shrink: 0; aspect-ratio: 1; }
        div.rounded-circle[style*="width"]:has(> i) { padding: 0 !important; }
        div.rounded-circle > i { flex-shrink: 0; }
        .inspection-condition-notice { flex-wrap: wrap; gap: 16px; }
        .inspection-condition-notice > .d-flex { flex: 1 1 18rem; min-width: 0; }
        .inspection-condition-notice > .d-flex > div:last-child { flex: 1; min-width: 0; }
        .ui-field-group {
            min-height: var(--ui-control-height) !important;
            border: 1px solid var(--ui-field-border) !important;
            border-radius: var(--ui-radius-control) !important;
            background-color: var(--ui-surface) !important;
        }
        .ui-field-group>.form-control {
            border: 0 !important; background-color: transparent !important;
        }
        .ui-field-group>.form-control:focus-visible { outline: 0 !important; }
        .ui-field-group:focus-within { outline: 3px solid var(--ui-focus); outline-offset: 2px; }
        .app-select-trigger:not(.app-select-native) { padding-inline-end: 2.5rem !important; }
        .app-select-dialog { background-color: var(--ui-surface) !important; color: var(--ui-text-color) !important; border-color: var(--ui-border) !important; }
        .app-select-dialog,.app-select-dialog :is(button,input,h2) { font-family: var(--ui-font) !important; }
        :is(.form-control,.form-select,.app-select-trigger):focus-visible {
            border-color: var(--ui-focus) !important;
            outline: 3px solid var(--ui-focus) !important;
            outline-offset: 2px;
        }
        :is(.form-control,.form-select):is(:disabled,[readonly]) {
            background-color: var(--ui-subtle) !important;
            color: var(--ui-muted) !important;
            opacity: 1 !important;
        }
        :is(.form-control,.form-select,.app-select-trigger):is(.is-invalid,[aria-invalid=true]) { border-color: var(--ui-danger) !important; }
        .invalid-feedback,.text-danger:not(.btn,.bg-danger) { color: var(--ui-danger-ink) !important; }
        .text-muted,.text-secondary:not(.btn) { color: var(--ui-muted) !important; }
        :is(p,small,.small,.text-muted,.text-white):is(.opacity-75,.opacity-50) { opacity: 1 !important; }
        .text-white-50 { color: #fff !important; opacity: 1 !important; }
        .text-success:not(.btn,.bg-success) { color: var(--ui-success-ink) !important; }
        .text-warning:not(.btn,.bg-warning) { color: var(--ui-warning-ink) !important; }
        .text-info:not(.btn,.bg-info) { color: var(--ui-info-ink) !important; }
        .text-primary:not(.btn,.bg-primary) { color: var(--ui-primary-ink) !important; }
        .btn :is(.text-primary,.text-muted,.text-secondary,.text-success,.text-danger,.text-info,.text-warning) { color: inherit !important; }
        :is(.badge.bg-warning,.badge.text-bg-warning):not([class*=bg-opacity]) { color: #422006 !important; }
        :is(.badge.bg-primary,.badge.bg-success,.badge.bg-danger,.badge.bg-info):not([class*=bg-opacity]) { color: #fff !important; }
        .badge.bg-primary[class*=bg-opacity] { background-color: var(--ui-primary-soft) !important; color: var(--ui-primary-ink) !important; }
        .badge.bg-success[class*=bg-opacity],.badge.bg-success-subtle { background-color: var(--ui-success-soft) !important; color: var(--ui-success-ink) !important; }
        .contract-statement-status { max-width: 100%; white-space: normal; overflow-wrap: normal; text-align: start; }
        .badge.bg-warning[class*=bg-opacity] { background-color: var(--ui-warning-soft) !important; color: var(--ui-warning-ink) !important; }
        .badge.bg-danger[class*=bg-opacity] { background-color: var(--ui-danger-soft) !important; color: var(--ui-danger-ink) !important; }
        .badge.bg-info[class*=bg-opacity] { background-color: var(--ui-info-soft) !important; color: var(--ui-info-ink) !important; }
        .alert { border-radius: var(--ui-radius-control) !important; padding: var(--ui-space-4); }
        .alert-success { background-color: var(--ui-success-soft) !important; color: var(--ui-success-ink) !important; border-color: var(--ui-success-ink) !important; }
        .alert-warning { background-color: var(--ui-warning-soft) !important; color: var(--ui-warning-ink) !important; border-color: var(--ui-warning-ink) !important; }
        .alert-danger { background-color: var(--ui-danger-soft) !important; color: var(--ui-danger-ink) !important; border-color: var(--ui-danger-ink) !important; }
        .alert-info,.alert-primary { background-color: var(--ui-info-soft) !important; color: var(--ui-info-ink) !important; border-color: var(--ui-info-ink) !important; }
        :is(.card,.card-modern,.glass-card) {
            border-radius: var(--ui-radius-card) !important;
            box-shadow: var(--ui-shadow) !important;
            min-width: 0;
        }
        :is(.card.bg-white,.card-modern,.glass-card) { background-color: var(--ui-surface) !important; color: var(--ui-text-color); }
        .card-body { padding: var(--ui-space-4) !important; }
        .card-header { padding: var(--ui-space-3) var(--ui-space-4); gap: var(--ui-space-2); }
        .table { --bs-table-bg: var(--ui-surface) !important; --bs-table-color: var(--ui-text-color) !important; --bs-table-border-color: var(--ui-border) !important; }
        .table>:not(caption)>*>* { padding: 12px !important; vertical-align: middle; }
        .table thead th { font-weight: 600; background-color: var(--ui-subtle); }
        .table-responsive { max-width: 100%; overscroll-behavior-x: contain; }
        .table :is(.text-end,[data-label=Valor]) { font-variant-numeric: tabular-nums; }
        .financial-header-main { flex-wrap: wrap; }
        .financial-header-copy { flex: 1 1 19rem; min-width: 0; }
        .financial-header-controls { margin-inline-start: auto; justify-content: flex-end; max-width: 100%; }
        #performance-frota .performance-heading { flex-wrap: wrap; gap: 12px; }
        #performance-frota .performance-heading h5 { flex: 1 1 18rem; min-width: 0; overflow-wrap: normal; word-break: normal; }
        #performance-frota .performance-heading > .dropdown { flex-shrink: 0; max-width: 100%; }
        .dashboard-filter-form { max-width: 100%; flex-wrap: wrap; gap: 8px; padding: 8px 10px !important; }
        .dashboard-filter-form .filter-inputs { flex-wrap: wrap; gap: 8px; min-width: 0; }
        .dashboard-filter-form .filter-group { min-width: 0; }
        .dashboard-filter-form .filter-group input[type=date] { width: 11rem !important; max-width: 100%; padding: 6px 8px !important; flex-shrink: 0; min-height: max(44px,calc(var(--ui-field) * 1.5 + 12px)) !important; }
        .dashboard-filter-form .filter-actions { flex-shrink: 0; }
        .dashboard-filter-form input[type=date]::-webkit-calendar-picker-indicator { filter: none !important; }
        /* Keep log actions intrinsic; long diagnostics may wrap, action labels may not. */
        .observability-errors-table .error-actions-cell { width: 1%; white-space: nowrap; }
        .error-log-actions { min-width: max-content; }
        .error-log-actions > .btn { flex-shrink: 0; white-space: nowrap; overflow-wrap: normal; word-break: normal; }
        .error-log-actions-mobile { min-width: 0; flex-wrap: wrap; }
        .ui-empty-state { padding: var(--ui-space-6) var(--ui-space-4); text-align: center; overflow-wrap: anywhere; color: var(--ui-text-color); }
        .ui-empty-state>i { color: var(--ui-muted); font-size: 24px; margin-bottom: var(--ui-space-3); }
        :is(.modal-content,.swal2-popup,#dc-dialog,.app-select-dialog) { border-radius: var(--ui-radius-card) !important; box-shadow: var(--ui-overlay-shadow) !important; }
        .modal-content { color: var(--ui-text-color); background-color: var(--ui-surface) !important; }
        .modal-dialog:not([class*=modal-fullscreen]) .modal-content { max-height: calc(100dvh - 24px); }
        .modal-header,.modal-footer { flex-shrink: 0; }
        .modal-body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
        .modal-header { border-radius: var(--ui-radius-card) var(--ui-radius-card) 0 0 !important; }
        .modal-footer { border-radius: 0 0 var(--ui-radius-card) var(--ui-radius-card) !important; }
        :is(.modal-header,.modal-body,.modal-footer) { padding: var(--ui-space-4) !important; }
        .modal-footer { gap: var(--ui-space-2); flex-wrap: wrap; }
        .modal-footer>* { margin: 0; }
        .modal-header .modal-title { color: inherit !important; }
        .modal-header .btn-close { width: 44px !important; height: 44px !important; min-width: 44px !important; min-height: 44px !important; padding: 12px !important; margin: 0 !important; box-sizing: border-box !important; flex-shrink: 0; }
        .dropdown-item,.app-select-options button { min-height: 44px; display: flex; align-items: center; }
        :is(.nav-pills,.nav-tabs) .nav-link {
            min-height: 44px; padding: 10px 16px !important;
            border-radius: var(--ui-radius-control) !important;
            font-size: var(--ui-text) !important; line-height: 1.4 !important;
            white-space: normal; overflow-wrap: anywhere;
        }
        .nav-pills .nav-link.active { background-color: var(--ui-primary) !important; color: #fff !important; }
        :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible { outline: 3px solid var(--ui-focus); outline-offset: 3px; }
        input[type=date],input[type=datetime-local],input[type=time] { color-scheme: light; }
        [data-theme=dark] :is(input[type=date],input[type=datetime-local],input[type=time]),.dark-mode :is(input[type=date],input[type=datetime-local],input[type=time]) { color-scheme: dark; }
        .form-check { min-height: 44px !important; padding-top: 8px !important; padding-bottom: 8px !important; }
        .form-check-input { width: 20px !important; height: 20px !important; accent-color: var(--ui-primary); }
        .form-check-label { padding-inline-start: 4px; }
        .bottom-nav-item { min-width: 0; min-height: 44px; flex: 1 1 0; }
        .bottom-nav-item>span:not(.badge) { font-size: .857143rem !important; line-height: 1.3; text-align: center; overflow-wrap: anywhere; }
        .dc-shell .dc-icon-button { min-width: 44px !important; min-height: 44px !important; width: 44px !important; flex-basis: 44px !important; }
        .dc-shell .dc-message-options { min-width: 44px !important; min-height: 44px !important; }
        .dc-bubble { padding-right: 50px !important; }
        .dc-menu-panel { max-height: min(65dvh,480px); overflow-y: auto; overscroll-behavior: contain; }
        @media (max-width: 767.98px) {
            html.app-native-layout .master-management { padding-inline: 0 !important; }
            html.app-native-layout .master-summary .card { margin-bottom: 0 !important; }
            html.app-native-layout .master-monitor-stats {
                display: grid !important; grid-template-columns: repeat(auto-fit,minmax(min(100%,8rem),1fr));
                gap: 12px; margin-inline: 0;
            }
            html.app-native-layout .master-monitor-stats > div { width: 100% !important; padding-inline: 0; }
            html.app-native-layout .master-management .card-body:has(> .table-responsive) { padding: 0 !important; }
            html.app-native-layout .master-management .card-header.d-flex,
            html.app-native-layout .master-management .card-body > .d-flex { flex-wrap: wrap; gap: 8px; }
            html.app-native-layout .master-management :is(.master-page-heading,.master-alert-summary,.master-recent-row) { flex-wrap: wrap; gap: 12px; }
            html.app-native-layout .master-management :is(p,small,.master-company-copy) { overflow-wrap: anywhere; }
            html.app-native-layout .master-management .master-company-copy { flex: 1; min-width: 0; }
            html.app-native-layout .master-management .master-company-identity .avatar-circle { flex-shrink: 0; }
            html.app-native-layout .master-summary .card > .d-flex > div:first-child {
                flex: 0 0 40px; width: 40px; height: 40px; padding: 0 !important;
                margin-inline-end: 12px !important; display: flex; align-items: center; justify-content: center;
            }
            html.app-native-layout .master-summary .card > .d-flex > div:last-child { flex: 1; min-width: 0; }
            html.app-native-layout .master-alert-summary > .ms-auto { width: 100%; margin: 0 !important; }
            html.app-native-layout .master-alert-summary > .ms-auto .badge { margin: 4px 0 !important; }
            html.app-native-layout .master-recent-row > div { flex: 1; min-width: 0; }
            html.app-native-layout .master-company-table tbody tr {
                display: grid !important; grid-template-columns: repeat(auto-fit,minmax(min(100%,5rem),1fr)); gap: 8px;
            }
            html.app-native-layout .master-company-table tbody td { min-width: 0; }
            html.app-native-layout .master-company-table tbody td:nth-child(-n+2),
            html.app-native-layout .master-company-table tbody td:nth-child(n+6) { grid-column: 1 / -1; }
            html.app-native-layout .master-company-table tbody td:nth-child(n+3):nth-child(-n+5)::before { display: none; }
            html.app-native-layout .master-company-table tbody td:last-child { display: flex !important; flex-wrap: wrap; gap: 8px; }
            html.app-native-layout .master-company-table tbody td:last-child::before { flex: 1 0 100%; }
            html.app-native-layout .master-company-table tbody td:last-child .btn { margin: 0 !important; }
            html.app-native-layout .detail-page.container-fluid { padding-inline: 0 !important; }
            html.app-native-layout .inspection-map-card > .card-body { padding: 8px !important; }
            html.app-native-layout .inspection-map-frame { padding: 0 !important; border: 0 !important; }
            html.app-native-layout .management-stats > .cash-balance-column { width: 100% !important; }
            .cash-balance-watermark { display: none !important; }
            html.app-native-layout .cash-summary > [class*="col-"] { width: 100% !important; }
            html.app-native-layout .cash-summary > :not(.cash-balance-column) .card-body {
                display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px;
            }
            html.app-native-layout .cash-summary > :not(.cash-balance-column) .card-body > .d-flex { flex: 1 0 100%; margin-bottom: 4px !important; }
            html.app-native-layout .cash-summary > :not(.cash-balance-column) .card-body > h6 { flex: 1 1 7rem; min-width: 0; }
            html.app-native-layout .cash-summary > :not(.cash-balance-column) .card-body > h2 {
                flex: 0 1 auto; max-width: 100%; min-width: 0;
                font-size: var(--ui-title-4) !important; overflow-wrap: anywhere;
            }
            html.app-native-layout .cash-summary > :not(.cash-balance-column) .card-body > .mt-3 { flex: 1 0 100%; margin-top: 0 !important; }
            .form-actions {
                display: grid;
                grid-template-columns: repeat(auto-fit,minmax(min(100%,max(7rem,calc(50% - 8px))),1fr));
            }
            .form-actions > .btn { width: 100%; min-width: 0; }
            .card-header { padding: 12px !important; }
            .financial-header-copy { flex-basis: auto; }
            .financial-header-controls { width: 100%; }
            .dashboard-filter-form .filter-inputs { display: grid !important; grid-template-columns: repeat(auto-fit,minmax(min(100%,9.5rem),1fr)); }
            .dashboard-filter-form .filter-group { flex-direction: column; align-items: stretch !important; gap: 4px !important; }
            .dashboard-filter-form .filter-group input[type=date] { width: 100% !important; }
            .topbar { padding: 8px 12px !important; margin-bottom: 16px; }
            .topbar .avatar-circle { width: 32px !important; height: 32px !important; font-size: 1rem !important; }
            .topbar .avatar-plan-ring { border-width: 2px !important; }
            .topbar .topbar-btn { width: 44px !important; height: 44px !important; }
            .management-stats .card-body { padding: var(--ui-space-3) !important; }
            .management-table-cards tbody td { padding: 6px !important; }
            .modal-dialog:not([class*=modal-fullscreen]) { margin: 12px !important; }
            .modal-footer>* { flex: 1 1 auto; }
            .listing-pagination-navigation { flex-wrap: wrap !important; }
            .listing-pagination-position { white-space: normal; }
            .bottom-nav { padding-bottom: max(12px,env(safe-area-inset-bottom)); }
            body:has(.navbar-portal) { padding-bottom: calc(120px + env(safe-area-inset-bottom)) !important; }
            .dc-thread-header { flex-wrap: nowrap; }
        }
        @media (max-width: 991.98px) {
            .bottom-nav { gap: 4px; padding-inline: 8px; overflow-x: auto; overscroll-behavior-x: contain; }
            .bottom-nav-item { width: auto; flex: 1 0 0; min-width: max-content; padding-inline: 3px; }
            .bottom-nav-item>span:not(.badge) { font-size: .785714rem !important; white-space: nowrap; overflow-wrap: normal; }
        }
        /* Six driver destinations need a compact label on very narrow phones.
         * Growing text may scroll this rail, never split a word into letters. */
        @media (max-width: 374px) {
            body:has(.navbar-portal) .bottom-nav { left: 8px !important; right: 8px !important; overflow-x: auto; overscroll-behavior-x: contain; }
            body:has(.navbar-portal) .bottom-nav-item { flex: 1 0 auto; min-width: 44px; padding-inline: 2px; }
            body:has(.navbar-portal) .bottom-nav-item>span:not(.badge) { font-size: .785714rem !important; white-space: nowrap; overflow-wrap: normal; }
        }
        @media (prefers-reduced-motion: reduce) {
            :is(.card-modern,.btn,.modal,.collapsing) { transition: none !important; animation: none !important; }
        }
    }
}
