/* =========================================================
   GPCNET MOBILE TOUCH LAYER 2026
   Target: layar sentuh <= 767.98px
   Tidak mengubah logic halaman; hanya meningkatkan usability.
   ========================================================= */
@media (max-width: 767.98px) {
    :root {
        --gpc-touch-target: 46px;
        --gpc-touch-target-lg: 48px;
        --gpc-touch-gap: .45rem;
    }

    html {
        -webkit-text-size-adjust: 100%;
        text-size-adjust: 100%;
        scroll-behavior: smooth;
    }

    body {
        -webkit-tap-highlight-color: rgba(59, 130, 246, .22);
        overscroll-behavior-y: contain;
    }

    button,
    [role="button"],
    a,
    input,
    select,
    textarea,
    label {
        touch-action: manipulation;
    }

    /* Tombol custom yang tidak memakai class Bootstrap tetap ramah sentuh. */
    button:not(.btn-close),
    input[type="submit"],
    input[type="button"],
    [role="button"] {
        min-height: 44px;
    }

    button:focus-visible,
    [role="button"]:focus-visible,
    a:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible {
        outline: 3px solid rgba(96, 165, 250, .7);
        outline-offset: 2px;
    }

    /* Ruang halaman lebih efisien dan tidak terlalu mepet tepi layar. */
    .content .container-fluid,
    .gpc-page,
    .wa-page {
        padding-left: 10px !important;
        padding-right: 10px !important;
    }

    .content .card,
    .gpc-card {
        border-radius: 14px !important;
    }

    .content .card-body,
    .gpc-card .card-body {
        padding: .85rem !important;
    }

    .content .card-header,
    .gpc-card-header,
    .modal-header {
        padding: .75rem .85rem !important;
    }

    /* Semua tombol Bootstrap menjadi target sentuh nyata. */
    .btn,
    .content .btn,
    .modal .btn,
    .navbar .btn,
    .wa-page .btn,
    .gpc-page .btn {
        min-height: var(--gpc-touch-target) !important;
        min-width: 44px;
        padding: .58rem .78rem !important;
        border-radius: 10px !important;
        font-size: .9rem !important;
        line-height: 1.2 !important;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: .32rem;
        white-space: normal;
    }

    .btn-sm,
    .content .btn-sm,
    .modal .btn-sm,
    .navbar .btn-sm,
    .wa-page .btn-sm,
    .gpc-page .btn-sm {
        min-height: var(--gpc-touch-target) !important;
        padding: .55rem .72rem !important;
        font-size: .88rem !important;
    }

    .btn-lg,
    .content .btn-lg {
        min-height: 52px !important;
    }

    .btn-xs,
    .content .btn-xs,
    .gpc-map-page .btn-xs {
        min-height: 42px !important;
        min-width: 42px !important;
        padding: .48rem .6rem !important;
        font-size: .8rem !important;
    }

    .btn i,
    .btn svg {
        flex: 0 0 auto;
    }

    .btn-group,
    .btn-toolbar,
    .card-header .d-flex,
    .map-toolbar,
    .gpc-page-toolbar {
        flex-wrap: wrap !important;
        gap: var(--gpc-touch-gap) !important;
    }

    .btn-group > .btn {
        border-radius: 10px !important;
        margin: 0 !important;
    }

    /* Tombol ikon / close tetap mudah ditekan. */
    #open-btn,
    #close-btn,
    .navbar-toggler,
    .btn-close {
        min-width: var(--gpc-touch-target) !important;
        width: var(--gpc-touch-target) !important;
        min-height: var(--gpc-touch-target) !important;
        height: var(--gpc-touch-target) !important;
    }

    #open-btn,
    #close-btn,
    .navbar-toggler {
        padding: 0 !important;
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
    }

    .btn-close {
        box-sizing: border-box;
        padding: .8rem !important;
        background-size: 1rem;
    }

    /* Sidebar mobile: satu item satu target jari. */
    .sidebar.gpc-sidebar .list-unstyled li a,
    .sidebar.gpc-sidebar .list-unstyled li .btn,
    .sidebar .list-unstyled li a {
        min-height: 48px !important;
        padding-top: .72rem !important;
        padding-bottom: .72rem !important;
        margin-bottom: 6px !important;
    }

    .sidebar.gpc-sidebar .list-unstyled li a i,
    .sidebar.gpc-sidebar .list-unstyled li .btn i:first-child {
        font-size: 18px;
    }

    /* Form: minimum 16px mencegah auto zoom iOS, tinggi nyaman untuk jari. */
    .form-control,
    .form-select,
    .input-group-text,
    .content .form-control,
    .content .form-select,
    .modal .form-control,
    .modal .form-select,
    input[type="text"],
    input[type="email"],
    input[type="password"],
    input[type="number"],
    input[type="tel"],
    input[type="url"],
    input[type="date"],
    input[type="time"],
    input[type="datetime-local"],
    select {
        min-height: var(--gpc-touch-target-lg) !important;
        font-size: 16px !important;
    }

    textarea.form-control,
    textarea {
        min-height: 120px;
        font-size: 16px !important;
        line-height: 1.45;
    }

    .input-group > .btn {
        min-height: var(--gpc-touch-target-lg) !important;
    }

    .form-label,
    .content label {
        margin-bottom: .42rem;
    }

    .form-check {
        min-height: 44px;
        display: flex;
        align-items: center;
        gap: .5rem;
        padding-top: .35rem;
        padding-bottom: .35rem;
    }

    .form-check-input {
        width: 1.35rem !important;
        height: 1.35rem !important;
        margin-top: 0 !important;
        flex: 0 0 auto;
    }

    .form-switch .form-check-input {
        width: 2.8rem !important;
        height: 1.5rem !important;
    }

    /* Tab, dropdown, pagination dan navigasi. */
    .nav-tabs,
    .nav-pills,
    .gpc-tabs,
    .gpc-setting-pills {
        flex-wrap: nowrap !important;
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: thin;
        gap: .35rem;
        padding-bottom: .25rem;
    }

    .nav-tabs .nav-link,
    .nav-pills .nav-link,
    .gpc-tabs .nav-link,
    .gpc-setting-pills .nav-link,
    .dropdown-item {
        min-height: var(--gpc-touch-target) !important;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        white-space: nowrap;
        padding: .58rem .8rem !important;
    }

    .dropdown-menu {
        padding: .45rem;
        max-width: calc(100vw - 20px);
    }

    .pagination {
        flex-wrap: nowrap;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        padding-bottom: .2rem;
    }

    .page-link,
    .dataTables_wrapper .dataTables_paginate .paginate_button {
        min-width: 44px !important;
        min-height: 44px !important;
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
    }

    /* Tabel: bisa digeser dengan mulus, action tidak saling berdempetan. */
    .table-responsive {
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch;
        scrollbar-gutter: stable;
        touch-action: pan-x pan-y;
    }

    .content table.table th,
    .content table.table td,
    table.dataTable th,
    table.dataTable td {
        padding: .7rem .6rem !important;
        vertical-align: middle !important;
    }

    .content table.table td .btn,
    table.dataTable td .btn,
    .dtr-details .btn {
        margin: .2rem !important;
        vertical-align: middle;
    }

    .content table.table td .btn:has(i:only-child),
    table.dataTable td .btn:has(i:only-child) {
        width: var(--gpc-touch-target) !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }

    /* DataTables: search/filter tidak kecil dan tidak saling tindih. */
    .dataTables_wrapper .dataTables_length,
    .dataTables_wrapper .dataTables_filter,
    .dt-container .dt-length,
    .dt-container .dt-search {
        width: 100% !important;
        text-align: left !important;
        margin-bottom: .6rem !important;
    }

    .dataTables_wrapper .dataTables_filter input,
    .dataTables_wrapper .dataTables_length select,
    .dt-container .dt-search input,
    .dt-container .dt-length select {
        min-height: var(--gpc-touch-target-lg) !important;
        font-size: 16px !important;
        margin: .35rem 0 0 !important;
    }

    .dataTables_wrapper .dataTables_filter input,
    .dt-container .dt-search input {
        width: 100% !important;
        max-width: none !important;
    }

    .dataTables_wrapper .row,
    .dt-container .row {
        row-gap: .45rem;
    }

    /* Modal: tombol footer besar, mudah dijangkau, isi tetap bisa discroll. */
    .modal-dialog {
        margin: .5rem !important;
        max-width: calc(100vw - 1rem) !important;
    }

    .modal-dialog-centered {
        min-height: calc(100% - 1rem) !important;
    }

    .modal-content {
        max-height: calc(100dvh - 1rem);
        overflow: hidden;
    }

    .modal-body {
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        padding: .9rem !important;
    }

    .modal-footer {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: .5rem !important;
        padding: .7rem !important;
    }

    .modal-footer .btn {
        width: 100% !important;
        margin: 0 !important;
    }

    /* List/card action ikut punya jarak sentuh. */
    .gpc-list-item {
        padding: 12px !important;
        gap: .6rem !important;
    }

    .gpc-list-item .btn,
    .gpc-list-item button {
        flex: 0 0 auto;
    }

    /* Peta: kontrol zoom/layer/location minimal 44px. */
    .leaflet-touch .leaflet-bar a,
    .leaflet-bar a,
    .leaflet-control-layers-toggle,
    .gpc-locate-control button,
    .custom-map-control-button {
        min-width: 44px !important;
        width: 44px !important;
        min-height: 44px !important;
        height: 44px !important;
        line-height: 44px !important;
    }

    .leaflet-control-layers-expanded {
        max-width: calc(100vw - 32px);
        max-height: 55vh;
        overflow: auto;
        font-size: 15px;
    }

    .leaflet-control-layers label {
        min-height: 38px;
        display: flex;
        align-items: center;
    }

    .map-toolbar {
        padding: .65rem !important;
    }

    .map-toolbar .btn,
    .gpc-map-page .map-toolbar .btn {
        flex: 1 1 auto;
    }

    /* Hindari footer fixed menutup tombol bawah pada layar kecil. */
    body > .position-relative .position-fixed.bottom-0 {
        position: static !important;
        transform: none !important;
        text-align: center;
        margin-top: 1rem;
    }

    /* Tombol generik pada halaman standalone (Tailwind/custom). */
    body > button,
    main button,
    form button,
    input[type="submit"],
    input[type="button"] {
        min-height: var(--gpc-touch-target) !important;
    }
}

/* Safe area untuk perangkat ber-notch. */
@supports (padding: max(0px)) {
    @media (max-width: 767.98px) {
        .navbar.gpc-topbar {
            padding-top: max(6px, env(safe-area-inset-top)) !important;
        }

        .sidebar.gpc-sidebar {
            padding-bottom: max(10px, env(safe-area-inset-bottom)) !important;
        }

        .modal-footer {
            padding-bottom: max(.7rem, env(safe-area-inset-bottom)) !important;
        }
    }
}
