/* Camada final mobile/touch. Carregada por último nos quatro shells. */
:root {
    --mobile-safe-bottom: env(safe-area-inset-bottom, 0px);
    --mobile-safe-left: env(safe-area-inset-left, 0px);
    --mobile-safe-right: env(safe-area-inset-right, 0px);
}

@media (max-width: 767.98px) {
    html { overflow-x: hidden; }
    body { min-width: 0; overflow-x: clip; }
    :is(main, .container, .container-fluid, .sig-content, .proto-page) { min-width: 0; }

    :is(button, .btn, .sig-btn, [role="button"], input[type="submit"], input[type="button"]) {
        min-height: 44px;
    }

    :is(.page-header, .sig-toolbar, .gov-detail-header) > :is(.btn, .sig-btn),
    :is(.page-header, .sig-toolbar, .gov-detail-header) > div > :is(.btn, .sig-btn) {
        justify-content: center;
    }

    .page-header,
    .sig-toolbar,
    .gov-detail-header { min-width: 0; }

    .page-header :is(h1, h2, p),
    .sig-toolbar :is(h1, h2, p),
    .gov-detail-header :is(h1, h2, p) { overflow-wrap: anywhere; }

    .nav-btn.position-fixed {
        z-index: 1045;
        right: 0;
        bottom: 0;
        left: 0;
        width: auto !important;
        min-height: calc(64px + var(--mobile-safe-bottom));
        padding: .45rem max(.5rem, var(--mobile-safe-right)) calc(.45rem + var(--mobile-safe-bottom)) max(.5rem, var(--mobile-safe-left)) !important;
        border-top: 1px solid #d6e1db;
        background: rgba(255, 255, 255, .97) !important;
        box-shadow: 0 -.65rem 1.7rem rgba(20, 48, 35, .1) !important;
        backdrop-filter: blur(12px);
    }

    .nav-btn.position-fixed > [class*="col"] { min-width: 0; padding: .2rem !important; }
    .nav-btn.position-fixed :is(.btn, button, a) { display: inline-flex; width: 100%; min-height: 46px; align-items: center; justify-content: center; gap: .35rem; margin: 0; padding-inline: .6rem; font-size: .84rem; white-space: normal; }
    .nav-btn.position-fixed svg { flex: 0 0 auto; width: 21px; height: 21px; }
    .sig-app main:has(.nav-btn.position-fixed),
    .sig-app .sig-content:has(.nav-btn.position-fixed) { padding-bottom: calc(86px + var(--mobile-safe-bottom)); }

    .responsive-card-table { width: 100%; min-width: 0 !important; border-collapse: separate; border-spacing: 0 .65rem; background: transparent; }
    .responsive-card-table tbody,
    .responsive-card-table tr { width: 100%; }
    .responsive-card-table tbody tr { overflow: hidden; border: 1px solid #d9e3de; border-radius: 13px; background: #fff; box-shadow: 0 5px 15px rgba(20, 48, 35, .045); }
    .responsive-card-table tbody td { min-width: 0; overflow-wrap: anywhere; }
    .responsive-card-table tbody td[data-label] { display: grid; grid-template-columns: minmax(6.8rem, 38%) minmax(0, 1fr); gap: .65rem; align-items: start; width: 100%; padding: .65rem .8rem; border-bottom: 1px solid #edf1ef; text-align: right; }
    .responsive-card-table tbody td[data-label]::before { color: #617169; font-size: .72rem; font-weight: 800; letter-spacing: .035em; text-align: left; text-transform: uppercase; }
    .responsive-card-table tbody td.actions { display: flex; flex-wrap: wrap; grid-template-columns: none; justify-content: stretch; gap: .4rem; text-align: left; }
    .responsive-card-table tbody td.actions::before { flex: 0 0 100%; }
    .responsive-card-table tbody td.actions > :is(a, button, form) { flex: 1 1 calc(50% - .4rem); min-width: 8rem; }
    .responsive-card-table tbody td.actions form :is(button, .btn),
    .responsive-card-table tbody td.actions > :is(a, button) { display: inline-flex; width: 100%; min-height: 44px; align-items: center; justify-content: center; }

    .gov-table-toolbar { align-items: stretch; }
    .gov-table-toolbar__group { width: 100%; }
    .gov-table-toolbar :is(input, select, button, .btn) { min-height: 44px; }
    .gov-column-picker { max-width: min(92vw, 22rem); }

    .filter :is(.row, [class*="d-flex"]) { min-width: 0; }
    .filter :is(input, select, textarea) { min-height: 44px; font-size: 16px; }
    .filter :is(.btn, button) { min-height: 44px; }

    .modal { padding-inline: max(.5rem, var(--mobile-safe-left)) max(.5rem, var(--mobile-safe-right)); }
    .modal-dialog { width: auto; max-width: none; margin: max(.75rem, env(safe-area-inset-top, 0px)) 0 calc(.75rem + var(--mobile-safe-bottom)); }
    .modal-content { max-height: calc(100dvh - 1.5rem - var(--mobile-safe-bottom)); overflow: hidden; border: 0; border-radius: 16px; }
    .modal-body { overflow-y: auto; overscroll-behavior: contain; }
    .modal-footer { flex-wrap: wrap; padding-bottom: calc(.75rem + var(--mobile-safe-bottom)); }
    .modal-footer :is(.btn, button) { flex: 1 1 9rem; margin: .2rem; }
    .image-modal { max-height: calc(100dvh - 7rem); object-fit: contain; }
    .close-modal-btn { display: grid; width: 44px; height: 44px; place-items: center; }

    dialog.gov-confirm-dialog { width: calc(100% - 1.5rem); max-width: 30rem; max-height: calc(100dvh - 1.5rem); margin: auto; padding: 0; border-radius: 16px; }
    dialog.gov-confirm-dialog form { max-height: calc(100dvh - 1.5rem); overflow-y: auto; padding-bottom: calc(1rem + var(--mobile-safe-bottom)); }

    .geo-drawer {
        top: auto;
        right: max(.5rem, var(--mobile-safe-right));
        bottom: calc(.5rem + var(--mobile-safe-bottom));
        left: max(.5rem, var(--mobile-safe-left));
        width: auto;
        max-width: none;
        max-height: min(72dvh, 38rem);
        overflow-y: auto;
        border-radius: 16px;
        overscroll-behavior: contain;
    }

    .geo-drawer__close { width: 44px; height: 44px; }
}

@media (min-width: 768px) and (max-width: 991.98px) {
    :is(button, .btn, .sig-btn, [role="button"]) { min-height: 42px; }
    .page-header { gap: 1rem; }
    .sig-toolbar { flex-wrap: wrap; }
    .responsive-card-table { min-width: 720px; }
    .table-responsive { overscroll-behavior-inline: contain; scrollbar-width: thin; }
    .modal-dialog { max-width: calc(100vw - 3rem); }
    .geo-drawer { max-width: min(25rem, calc(100vw - 2rem)); }
}

@media (max-width: 359.98px) {
    .nav-btn.position-fixed :is(.btn, button, a) { padding-inline: .35rem; font-size: .78rem; }
    .responsive-card-table tbody td[data-label] { grid-template-columns: 1fr; text-align: left; }
    .responsive-card-table tbody td.actions > :is(a, button, form) { flex-basis: 100%; }
}

@media (forced-colors: active) {
    .nav-btn.position-fixed,
    .responsive-card-table tbody tr,
    .modal-content,
    .geo-drawer { border: 1px solid CanvasText; }
}

@media (prefers-reduced-motion: reduce) {
    .modal,
    .geo-drawer,
    dialog { scroll-behavior: auto; }
}
