#page-header {
    background-color: #c8f4ff !important;
}

.rounded-hero {
                border-radius: 1.3rem !important;
            }

            .rounded-hero-child {
                border-radius: 1.1rem !important;
            }

            .hero-text-shadow {
                text-shadow: 0 4px 15px rgba(0, 0, 0, 0.6);
            }

            .logo-shadow {
                filter: drop-shadow(0 8px 20px rgba(0,0,0,0.5));
            }

            .map-card-pro {
                width: 100%;
                height: fit-content;
                border-radius: 18px;
                padding: 20px 5px;
                text-align: center;
                cursor: pointer;
                position: relative;
                overflow: hidden;
                color: #fff;

                background: rgba(255, 255, 255, 0.06);
                backdrop-filter: blur(12px);
                -webkit-backdrop-filter: blur(12px);

                border: 2px solid currentColor;
                transition: all 0.35s ease;
                height: 130px;
                align-content: center;
            }

            /* Hover mengikuti warna border */
            .map-card-pro:hover {
                transform: translateY(-6px) scale(1.03);
                box-shadow: 
                    0 0 0 2px currentColor,
                    0 0 30px currentColor;
            }

            /* Background glow tipis saat hover */
            .map-card-pro::before {
                content: "";
                position: absolute;
                inset: 0;
                background: currentColor;
                opacity: 0;
                transition: 0.35s;
            }

            .map-card-pro:hover::before {
                opacity: 0.08;
            }

            .map-expand-card-pro {
                width: 100%;
                height: fit-content;
                border-radius: 18px;
                padding: 10px;
                text-align: center;
                cursor: pointer;
                position: relative;
                overflow: hidden;
                color: #fff;

                background: rgba(255, 255, 255, 0.06);
                backdrop-filter: blur(12px);
                -webkit-backdrop-filter: blur(12px);

                border: 2px solid currentColor;
                transition: all 0.35s ease;
                height: 130px;
                align-content: center;
            }

            /* Hover mengikuti warna border */
            .map-expand-card-pro:hover {
                transform: translateY(-6px) scale(1.03);
                box-shadow: 
                    0 0 0 2px currentColor,
                    0 0 30px currentColor;
            }

            /* Background glow tipis saat hover */
            .map-expand-card-pro::before {
                content: "";
                position: absolute;
                inset: 0;
                background: currentColor;
                opacity: 0;
                transition: 0.35s;
            }

            .map-expand-card-pro:hover::before {
                opacity: 0.08;
            }

            /* Icon box */
            .icon-wrapper {
                width: 50px;
                height: 50px;
                margin: 0 auto 10px;
                border-radius: 16px;
                display: flex;
                align-items: center;
                justify-content: center;
                font-size: 30px;
                color: #ffffff;
                background: currentColor;
                transition: 0.35s ease;
            }

            /* Title */
            .map-title-pro {
                font-size: 14px;
                font-weight: bolder;
                letter-spacing: 0.5px;
            }

            /* Expand Button */
            .expand-btn-pro {
                position: absolute;
                top: 12px;
                right: 12px;
                width: 25px;
                height: 25px;
                background: rgba(255,255,255,0.85);
                border-radius: 10px;
                display: flex;
                align-items: center;
                justify-content: center;
                color: #6c757d;
                font-size: 14px;
                transition: 0.25s ease;
            }

            .expand-btn-pro:hover {
                background: #ffffff;
                transform: scale(1.1);
            }

            .expand-icon-pro {
                position: absolute;
                top: 12px;
                left: 12px;
                width: 40px;
                height: 40px;
                background: rgba(255, 255, 255, 0.85);
                border-radius: 10px;
                display: flex;
                align-items: center;
                justify-content: center;
                color: #6c757d;
                font-size: 14px;
                transition: 0.25s ease;
            }

            .btn-open {
                position: relative;
                padding: 5px 22px;
                border-radius: 25px;
                border: none;
                cursor: pointer;
                color: #fff;
                font-weight: 500;
                font-size: 12px;

                transition: all 0.3s ease;
                overflow: hidden;
            }

            /* Hover Effect */
            .btn-open:hover {
                box-shadow: 0 0 5px currentColor;
                transform: translateY(-2px);
                color: #fff;
            }

            /* =========================
               WRAPPER (WAJIB)
            ========================= */

            .map-wrapper {
                position: relative;
                width: 100%;
            }

            /* =========================
               BASE STATE
            ========================= */

            .map-card-pro,
            .map-expand-card-pro {
                transition: all 0.45s cubic-bezier(.4,2,.6,1);
            }

            /* Expand Card default hidden */
            /* Default */
            .map-expand-card-pro {
                display: none;
            }

            /* Active state */
            .map-wrapper.active .map-card-pro {
                display: none;
            }

            .map-wrapper.active .map-expand-card-pro {
                display: block;
                animation: fadeExpand .3s ease;
            }

            /* Animasi halus */
            @keyframes fadeExpand {
                from {
                    opacity: 0;
                    transform: scale(.95);
                }
                to {
                    opacity: 1;
                    transform: scale(1);
                }
            }

            /* =========================
               SEARCHING SECTION
            ========================= */

            .searching-section {
                background: #eef0f5;
            }

            /* Title */
            .search-title {
                font-size: 36px;
                font-weight: 800;
                color: #2b2b2b;
                margin-bottom: 12px;
            }

            /* Subtitle */
            .search-subtitle {
                font-size: 14px;
                color: #6c757d;
                margin-bottom: 35px;
            }

            /* =========================
               SEARCH BOX
            ========================= */

            .search-box {
                position: relative;
                max-width: 600px;
                width: 100%;
            }

            .search-box input {
                width: 100%;
                height: 70px;
                border-radius: 50px;
                border: none;
                padding: 0 170px 0 30px;
                font-size: 16px;
                background: #d9d9d9;
                outline: none;
            }

            .search-box button {
                position: absolute;
                right: 10px;
                top: 10px;
                height: 50px;
                padding: 0 35px;
                border-radius: 40px;
                border: none;
                background: #1e90ff;
                color: #fff;
                font-weight: 600;
                transition: all .3s ease;
            }

            .search-box button:hover {
                background: #007bff;
                transform: translateY(-2px);
                box-shadow: 0 8px 18px rgba(0,123,255,.35);
            }

            /* Image */
            .search-image {
                max-width: 100%;
                height: auto;
            }

            /* =========================
               RESPONSIVE
            ========================= */

            @media (max-width: 991px) {
                .search-title {
                    font-size: 28px;
                }

                .search-box input {
                    height: 60px;
                }

                .search-box button {
                    height: 45px;
                    top: 7px;
                }
            }

            @media (max-width: 767px) {
                .searching-section {
                    text-align: center;
                }

                .search-title {
                    font-size: 22px;
                }

                .search-box {
                    margin: 0 auto;
                }
            }

            /* =========================
               FOOTER SDA
            ========================= */

            .footer-sda {
                background: #344a7a;
                padding: 70px 0 40px;
                color: #ffffff;
            }

            /* Logo */
            .footer-logo img {
                width: 60px;
                height: auto;
            }

            /* Title */
            .footer-title {
                font-weight: 700;
                font-size: 20px;
                letter-spacing: .5px;
                margin-bottom: 20px;
            }

            /* Address */
            .footer-address {
                font-size: 14px;
                line-height: 18px;
                opacity: .9;
                margin-bottom: 20px;
            }

            /* Copyright */
            .footer-copy {
                font-size: 13px;
                opacity: .75;
                margin: 0;
            }

            /* =========================
               RESPONSIVE
            ========================= */

            @media (max-width: 991px) {
                .footer-title {
                    font-size: 18px;
                }
            }

            @media (max-width: 767px) {

                .footer-sda {
                    padding: 50px 20px 30px;
                }

                .footer-title {
                    font-size: 16px;
                }

                .footer-address {
                    font-size: 14px;
                }

                .footer-copy {
                    font-size: 12px;
                }

                .footer-logo img {
                    width: 50px;
                }
            }

            .leaflet-control-search {
                position: relative;
            }

            .search-dropdown-extra {
                position: absolute;
                top: 100%;
                left: 0;
                width: 100%;
                background: #fff;
                border: 1px solid #ccc;
                border-top: none;
                box-shadow: 0 4px 8px rgba(0,0,0,0.08);
                z-index: 1000;
            }

            .use-current-location {
                display: flex;
                align-items: center;
                gap: 5px;
                padding: 6px 7px;
                cursor: pointer;
                font-size: 10px; /* samakan dengan input */
                color: #333;
            }

            .use-current-location:hover {
                background: #f5f5f5;
            }

            .use-current-location i {
                font-size: 10px;
                color: #2c7be5;
            }

            .custom-hydro-sidebar {
                background: #ffffff;
                padding: 16px;
                min-width: 100%;
                font-family: 'Segoe UI', sans-serif;
                box-shadow: 0 8px 24px rgba(0,0,0,0.12);
            }

            .hydro-title {
                font-weight: 600;
                font-size: 12px;
                margin-bottom: 10px;
                color: #2b2b2b;
            }

            .hydro-list {
                display: flex;
                flex-direction: column;
                gap: 1px;
            }

            .hydro-item {
                display: flex;
                align-items: center;
                gap: 10px;
                font-size: 10px;
                color: #444;
            }

            .hydro-item i {
                width: 8px;
                text-align: center;
                color: #1e88e5; /* hydrology blue */
            }

            .hydro-divider {
                height: 1px;
                background: #e0e0e0;
                margin: 10px 0;
            }

            .hydro-road {
                margin-bottom: 6px;
            }

            .road-title {
                font-size: 10px;
                margin-bottom: 4px;
                color: #333;
            }

            .road-line {
                height: 4px;
                width: 60px;
                border-radius: 4px;
            }

            .tol-line {
                background: #8e24aa;
            }

            .nasional-line {
                background: #d32f2f;
            }

            .leaflet-interactive:hover {
                filter: drop-shadow(0 0 6px rgba(0,0,0,0.5));
            }

            .leaflet-interactive {
                transition: all 0.2s ease;
            }

            .legend-container {
                background: rgba(255, 255, 255, 0.75);
                backdrop-filter: blur(6px);
                padding: 20px;
                border-radius: 18px;
                width: 260px;
                box-shadow: 0 4px 15px rgba(0,0,0,0.15);
                font-family: sans-serif;
            }

            .legend-title {
                font-size: 14px;
                font-weight: 600;
                margin-bottom: 10px;
            }

            .legend-subtitle {
                font-size: 12px;
                font-weight: 600;
                margin-bottom: 10px;
                margin-top: 10px;
            }

            .legend-item {
                display: flex;
                align-items: center;
                margin-bottom: 4px;
                font-size: 10px;
                color: #333;
            }

            .legend-box {
                width: 16px;
                height: 18px;
                border-radius: 4px;
                margin-right: 6px;
            }

            /* ===== WARNA TITIK BENCANA ===== */

            .banjir { background: #FF3B30; }
            .bandang { background: #FF8C1A; }
            .rob { background: #9C6B4E; }
            .abrasi { background: #FF3B30; }
            .longsor { background: #FF8C1A; }
            .bencana { background: #9C6B4E; }
            .lainnya { background: #9C6B4E; }

            /* ===== WARNA JALAN ===== */

            .tol { background: #FE7E03; }
            .nasional { background: #F80102; }
            .ws { background: #5E5CE6; }

            .legend-divider {
                height: 1px;
                background: rgba(0,0,0,0.1);
                margin: 15px 0;
            }

            .custom-layer-panel {
                width: 300px;
            }

            .layer-card {
                background: rgba(255,255,255,0.75);
                backdrop-filter: blur(8px);
                border-radius: 20px;
                padding: 18px;
                box-shadow: 0 4px 20px rgba(0,0,0,0.15);
                font-family: sans-serif;
            }

            .layer-header {
                display: flex;
                justify-content: space-between;
                align-items: center;
                font-weight: 600;
                font-size: 14px;
                padding-bottom: 10px;
                border-bottom: 1px solid rgba(0,0,0,0.08);
                cursor: pointer;
            }

            .layer-content {
                margin-top: 12px;
            }

            .layer-section {
                margin-bottom: 10px;
            }

            .layer-subtitle {
                font-size: 12px;
                font-weight: 600;
                margin-bottom: 10px;
                color: #444;
            }

            .layer-item {
                display: flex;
                justify-content: space-between;
                align-items: center;
                padding: 4px;
                font-size: 10px;
                color: #333;
                cursor: pointer;
                border-radius: 8px;
                transition: background 0.2s ease;
            }

            .layer-item:hover {
                background: rgba(0,0,0,0.05);
            }

            .layer-item i {
                color: #5c6f8f;
                font-size: 14px;
            }

            .layer-divider {
                height: 1px;
                background: rgba(0,0,0,0.1);
                margin: 15px 0;
            }

            .layer-content.collapsed {
                max-height: 0;
                opacity: 0;
                padding: 0 15px;
            }

            .toggle-arrow {
                transition: 0.3s ease;
            }

            .leaflet-control-zoom {
                background: rgba(255,255,255,0.75) !important;
                backdrop-filter: blur(8px);
                border-radius: 18px !important;
                box-shadow: 0 4px 20px rgba(0,0,0,0.15);
                overflow: hidden;
                border: none !important;
            }

            .leaflet-control-zoom a {
                width: 30px !important;
                height: 30px !important;
                line-height: 30px !important;
                font-size: 14px !important;
                color: #333 !important;
                background: transparent !important;
                border: none !important;
            }

            .leaflet-control-zoom a:hover {
                background: rgba(0,0,0,0.05) !important;
            }

            .leaflet-container .leaflet-control-search {
                backdrop-filter: blur(8px);
                border-radius: 18px !important;
                box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
                border: none !important;
                width: 30px !important;
                height: 30px !important;
                font-size: 14px !important;
                color: #333 !important;
                border: none !important;
            }

            .leaflet-control-search .search-button {
                border-radius: 18px;
            }

            .leaflet-control-search.search-exp {
                width: auto !important;
            }

            .leaflet-control-search,
            .leaflet-control.search-exp {
                border: 0 !important;
                outline: none !important;
                box-shadow: 0 4px 20px rgba(0,0,0,0.15);
                background: rgba(255,255,255,0.75);
                backdrop-filter: blur(8px);
                border-radius: 18px;
            }

            /* Hilangkan border saat hover */
            .leaflet-control-search:hover,
            .leaflet-control.search-exp:hover {
                border: 0 !important;
                outline: none !important;
            }

            /* Input */
            .leaflet-control-search input {
                border: 0 !important;
                outline: none !important;
                box-shadow: none !important;
                background: transparent !important;
            }

            /* Focus state */
            .leaflet-control-search input:focus {
                border: 0 !important;
                outline: none !important;
                box-shadow: none !important;
            }

            /* Tombol search & cancel */
            .leaflet-control-search .search-button,
            .leaflet-control-search .search-cancel {
                border: 0 !important;
                outline: none !important;
                box-shadow: none !important;
            }

            .leaflet-control-search .search-input {
                padding: 0px 20px 0px 5px;
		width: 91%;
            }

            .search-dropdown-extra {
                background: rgba(255,255,255,0.9);
                backdrop-filter: blur(6px);
                border-radius: 12px;
                box-shadow: 0 4px 15px rgba(0,0,0,0.15);
            }

            .leaflet-control-search .search-tooltip {
                max-height: 217px;
                overflow-y: auto;
                margin-top: 0px;
                background: rgb(239 249 235);
                backdrop-filter: none;
                border-radius: 14px;
                box-shadow: none;
                border: none !important;
                padding: 1px 0;
            }
            /* Hover */
            .leaflet-control-search .search-tooltip a:hover {
                background: rgba(0,0,0,0.05);
            }

            /* Item aktif */
            .leaflet-control-search .search-tooltip .search-tip-active {
                background: rgba(0,0,0,0.08);
            }

            /* Hilangkan border bawaan */
            .leaflet-control-search .search-tooltip table {
                border-collapse: collapse !important;
            }

            .leaflet-control-search .search-tooltip tr,
            .leaflet-control-search .search-tooltip td {
                border: none !important;
            }

            .leaflet-control-search .search-alert {
                cursor: pointer;
                position: absolute;
                top: 100%;
                left: 0px;
                width: 100%;
                background: rgb(255, 255, 255);
                border-right: 1px solid rgb(204, 204, 204);
                border-bottom: 1px solid rgb(204, 204, 204);
                border-left: 1px solid rgb(204, 204, 204);
                border-image: initial;
                border-top: none;
                box-shadow: rgba(0, 0, 0, 0.08) 0px 4px 8px;
                z-index: 1046;
                font-size: 12px;
                color: rgb(238, 0, 0);
                padding: 6px 10px;
                border-radius: 25px;
            }

            .use-current-location {
                display: flex;
                align-items: center;
                gap: 8px;
                font-size: 12px;
                cursor: pointer;
                padding: 6px 8px;
                border-radius: 8px;
                transition: 0.2s ease;
            }

            .use-current-location:hover {
                background: rgba(0,0,0,0.05);
            }

            .hero-search {
                padding: 150px 0px;
            }

            .map-vh-main {
                height: calc(100vh - 120px) !important;
            }

            .map-vh {
                height: calc(100vh - 60px) !important;
            }

            .leaflet-control-search .search-tip {
                margin: 5px 10px;
                padding: 2px 4px;
            }

            .map-frame {
                border-radius: 15px;
                overflow: hidden;
                height: 600px;
                border: 2px solid rgba(255, 255, 255, 0.2);
                box-shadow: inset 0 0 10px rgba(255, 255, 255, 0.1);
            }

            .map-frame iframe {
                width: 100%;
                height: 100%;
                border: none;
                filter: brightness(0.97) saturate(1.1);
                zoom: 80%;
            }

            /* =========================
   ASSET CARD GRID
========================= */

.asset-card {
    position: relative;
    overflow: hidden;
    cursor: pointer;
    transition: 0.35s ease;
}

.asset-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 20px 35px rgba(0,0,0,0.15);
}

/* Image */
.asset-img {
    width: 100%;
    height: 240px;
    object-fit: cover;
    border-radius: 1.3rem;
    transition: 0.4s ease;
}

.asset-card:hover .asset-img {
    transform: scale(1.05);
}

/* Floating Info Box */
.asset-info {
    position: absolute;
    left: 50%;
    bottom: 20px;
    transform: translateX(-50%);
    width: 85%;
    background: rgba(255,255,255,0.85);
    backdrop-filter: blur(10px);
    padding: 18px 20px;
    border-radius: 18px;
    box-shadow: 0 10px 25px rgba(0,0,0,0.15);

    display: flex;
    justify-content: space-between;
    align-items: center;
}

/* Title */
.asset-title {
    font-weight: 700;
    font-size: 16px;
    color: #2b2b2b;
}

/* Subtitle */
.asset-sub {
    font-size: 13px;
    color: #6c757d;
}

/* Button */
.btn-detail {
    background: #1e90ff;
    border: none;
    color: #fff;
    padding: 8px 18px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 600;
    transition: 0.3s ease;
}

.btn-detail:hover {
    background: #007bff;
    transform: translateY(-2px);
    box-shadow: 0 6px 15px rgba(0,123,255,0.35);
}

/* ===============================
   WRAPPER BACKGROUND
================================ */
.bg-wrapper {
    background: #eef1f6;
}

/* ===============================
   MAIN DATATABLE CONTAINER
================================ */
.datatable-wrapper {
    background: #f4f6fa;
    border-radius: 25px;
    box-shadow: inset 0 0 0 1px rgba(0,0,0,0.03);
}

/* ===============================
   TABLE STYLE
================================ */
.custom-table {
    border-collapse: separate;
    border-spacing: 0;
    font-size: 14px;
}

.custom-table thead th {
    border: none;
    font-weight: 600;
    color: #333;
    padding: 18px 15px;
    background: transparent;
}

.custom-table tbody td {
    border: none;
    padding: 18px 15px;
    vertical-align: middle;
}

/* Zebra Soft */
.custom-table tbody tr:nth-child(odd) {
    background: #f0f2f7;
}

.custom-table tbody tr:nth-child(even) {
    background: #e9ecf2;
}

/* Hover */
.custom-table tbody tr:hover {
    background: #dde3f0;
    transition: 0.2s ease;
}

/* ===============================
   LENGTH DROPDOWN
================================ */
.dataTables_length select {
    background: #dcdfe6 !important;
    border: none !important;
    border-radius: 25px !important;
    padding: 6px 15px !important;
    outline: none !important;
}

/* ===============================
   SEARCH BOX
================================ */
.dataTables_filter input {
    background: #dcdfe6 !important;
    border: none !important;
    border-radius: 20px !important;
    padding: 8px 20px !important;
    width: 250px !important;
}

/* ===============================
   PAGINATION
================================ */
.dataTables_paginate {
    margin-top: 10px;
}

.page-item .page-link {
    border: none !important;
    border-radius: 10px !important;
    margin: 0 4px;
    background: #e3e6ed;
    color: #555;
    padding: 6px 12px;
}

.page-item.active .page-link {
    background: #1e88e5 !important;
    color: #fff !important;
}

.page-item .page-link:hover {
    background: #d0d6e2;
}

/* Remove outline */
.page-link:focus {
    box-shadow: none !important;
}

/* ===============================
   ACTION BUTTON (ICON ONLY)
================================ */
.btn-action {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: #e0f7ea;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #1abc9c;
    border: none;
    transition: 0.2s ease;
}

.btn-action:hover {
    background: #1abc9c;
    color: #fff;
}


            /* Border Variants */

            .border-green { color: #2ecc71; }
            .border-red { color: #ff4d4d; }
            .border-brown { color: #b07d52; }
            .border-purple { color: #d633ff; }
            .border-blue { color: #1e90ff; }
            .border-yellow { color: #f1c40f; }
            .border-teal { color: #1abc9c; }
            .border-cyan { color: #17a2b8; }

            /* Icon Background Variants */
            .bg-green { background: #2ecc71; }
            .bg-red { background: #ff4d4d; }
            .bg-brown { background: #b07d52; }
            .bg-purple { background: #d633ff; }

            .bg-blue { background: #1e90ff; }
            .bg-yellow { background: #f1c40f; }
            .bg-teal { background: #1abc9c; }
            .bg-cyan { background: #17a2b8; }



.btn-detail.bg-green:hover {
    background: #2ecc71;
    transform: translateY(-2px);
    box-shadow: 0 6px 15px rgba(0,123,255,0.35);
}

.btn-detail.bg-red:hover {
    background: #ff4d4d;
    transform: translateY(-2px);
    box-shadow: 0 6px 15px rgba(0,123,255,0.35);
}

.btn-detail.bg-blue:hover {
    background: #1e90ff;
    transform: translateY(-2px);
    box-shadow: 0 6px 15px rgba(0,123,255,0.35);
}

/* FULL PAGE MODAL */
.modal-fullpage .modal-dialog {
    max-width: 100%;
    width: 100%;
    height: 100vh;
    margin: 0;
}

.modal-fullpage .modal-content {
    height: 100vh;
    border-radius: 0 !important;
}

/* Remove default modal padding */
.modal-fullpage .modal-body {
    height: calc(100vh); /* dikurangi header */
    overflow: hidden;
}

.modal-open .modal {
    padding-right: 0px !important;
}

.modal-close-custom {
    position: absolute;
    top: 20px;
    right: 20px;
    z-index: 1050;

    width: 30px;
    height: 30px;
    border-radius: 50%; /* BULAT */
    border: none;

    background: rgba(255, 255, 255, 0.85);
    backdrop-filter: blur(8px);

    display: flex;
    align-items: center;
    justify-content: center;

    cursor: pointer;
    transition: all 0.25s ease;
}

.modal-close-custom i {
    color: #6c757d;
    font-size: 18px;
    transition: 0.25s ease;
}

/* Hover */
.modal-close-custom:hover {
    background: #ffffff;
    transform: translateY(-3px) scale(1.05);
    box-shadow: 0 10px 25px rgba(0,0,0,0.2);
}

.modal-close-custom:hover i {
    color: #495057;
}

/* Remove outline */
.modal-close-custom:focus {
    outline: none;
    box-shadow: none;
}

/* ===============================
   IFRAME LOADER
================================ */

.iframe-loader {
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,0.85);
    backdrop-filter: blur(6px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 10;
    transition: 0.3s ease;
}

.loader-spinner {
    width: 50px;
    height: 50px;
    border: 4px solid #e0e0e0;
    border-top: 4px solid #1e90ff;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

.loader-text {
    margin-top: 15px;
    font-size: 14px;
    font-weight: 600;
    color: #555;
    letter-spacing: 0.5px;
}

/* Animation */
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Hide state */
.iframe-loader.hide {
    opacity: 0;
    visibility: hidden;
}

/* Default hidden */
.legend-item {
    display: none;
}

/* Active state */
.legend-item.active {
    display: flex;
}

/* Hide full legend if empty */
.legend-container.hidden {
    display: none;
}

.map-card-pro,
.map-expand-card-pro {
    transition:
        transform 0.85s cubic-bezier(0.25, 0.8, 0.25, 1),
        box-shadow 0.85s cubic-bezier(0.25, 0.8, 0.25, 1),
        opacity 0.5s ease;

    will-change: transform;
    transform: translateZ(0);
    backface-visibility: hidden;
    box-shadow: 0 6px 18px rgba(0,0,0,0.08);
}

.map-card-pro:hover {
    transform: translateY(-4px) scale(1.015);
    box-shadow:
        0 18px 40px rgba(0,0,0,0.18),
        0 0 12px currentColor;
}

/* ==============================
   CUSTOM LEAFLET POPUP PRO
   Scroll hanya di .card-content
================================= */

.custom-leaflet-popup .leaflet-popup-content-wrapper {
    border-radius: 1.3rem;
    padding: 0;
    overflow: hidden;

    background: rgb(255 255 255 / 75%);;
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);

    box-shadow: 0 15px 45px rgba(0,0,0,0.25);
    border: 1px solid rgba(255,255,255,0.4);
}


/* ❌ Hilangkan scroll default leaflet */
.custom-leaflet-popup .leaflet-popup-content {
    margin: 0;
    padding: 0;
    overflow: visible;
}


/* ❌ card-body TANPA overflow */
.custom-leaflet-popup .card-body {
    padding: 20px;
    overflow: visible !important;
}


/* ✅ Scroll hanya di card-content */
.custom-leaflet-popup .card-content {
    max-height: 60vh;
    overflow-y: auto;
    overflow-x: auto;
    padding-right: 20px;
}


/* Scrollbar styling */
.custom-leaflet-popup .card-content::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

.custom-leaflet-popup .card-content::-webkit-scrollbar-thumb {
    background: rgba(0,0,0,0.2);
    border-radius: 10px;
}

.custom-leaflet-popup .card-content::-webkit-scrollbar-track {
    background: transparent;
}


/* Title */
.custom-leaflet-popup .font-weight-bolder {
    font-size: 18px;
    font-weight: 700;
    margin-bottom: 15px;
    color: #2b2b2b;
}

/* Label */
.custom-leaflet-popup .font-weight-bold {
    color: #2b2b2b;
}

.custom-leaflet-popup .mt-5 {
    margin-top: 18px !important;
}


/* ==============================
   CLOSE BUTTON STYLE ULANG
================================= */

.custom-leaflet-popup .leaflet-popup-close-button {
    top: 12px !important;
    right: 12px !important;

    width: 30px;
    height: 30px;
    border-radius: 50%;

    background: rgba(255,255,255,0.95);
    backdrop-filter: blur(8px);

    display: flex !important;
    align-items: center;
    justify-content: center;

    font-size: 20px;
    font-weight: 600;
    color: #555;

    transition: all 0.25s ease;
}

.custom-leaflet-popup .leaflet-popup-close-button:hover {
    background: #ffffff;
    color: #dc3545;
    transform: scale(1.1);
    box-shadow: 0 6px 18px rgba(0,0,0,0.2);
}

.custom-leaflet-popup .leaflet-popup-close-button:focus {
    outline: none;
    box-shadow: none;
}


/* Tip arrow */
.custom-leaflet-popup .leaflet-popup-tip {
    background: rgba(255,255,255,0.88);
}

/* ======================================
   LENGTH & SEARCH CONTROL
====================================== */
.dataTables_length select,
.selectize-control .selectize-input {
    background: #dcdfe6 !important;
    border: none !important;
    border-radius: 25px !important;
    padding: 6px 15px !important;
    box-shadow: none !important;
}

.dataTables_filter input {
    background: #dcdfe6 !important;
    border: none !important;
    border-radius: 20px !important;
    padding: 8px 20px !important;
    width: 250px !important;
    outline: none !important;
}

/* ======================================
   TABLE STYLE
====================================== */
#tabel_data {
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 14px;
}

#tabel_data thead {
    background: transparent !important;
}

#tabel_data thead th {
    border: none !important;
    font-weight: 600;
    color: #333;
    padding: 18px 15px !important;
}

#tabel_data tbody td {
    border: none !important;
    padding: 5px 8px !important;
    vertical-align: middle;
}

/* Zebra Soft */
#tabel_data tbody tr:nth-child(odd) {
    background: #f0f2f7 !important;
}

#tabel_data tbody tr:nth-child(even) {
    background: #e9ecf2 !important;
}

/* Hover Effect */
#tabel_data tbody tr:hover {
    background: #dde3f0 !important;
    transition: 0.2s ease;
}

/* ======================================
   PAGINATION
====================================== */
.dataTables_paginate {
    margin-top: 0px;
}

.dataTables_paginate .pagination {
    margin-bottom: 0px;
}

.page-item .page-link {
    border: none !important;
    border-radius: 10px !important;
    margin: 0 4px;
    background: #e3e6ed !important;
    color: #555 !important;
    padding: 6px 12px !important;
}

.page-item.active .page-link {
    background: #1e88e5 !important;
    color: #fff !important;
}

.page-item .page-link:hover {
    background: #d0d6e2 !important;
}

.page-link:focus {
    box-shadow: none !important;
}

/* ======================================
   INFO TEXT
====================================== */
.dataTables_info {
    font-size: 13px;
    color: #6c757d;
}

/* ======================================
   ACTION BUTTON STYLE
====================================== */
.btn-group .btn {
    width: 38px;
    height: 38px;
    border-radius: 12px;
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: 0.25s ease;
}

/* View */
#btn_media_info {
    background: #e0f7ea !important;
    color: #1abc9c !important;
}

#btn_media_info:hover {
    background: #1abc9c !important;
    color: #fff !important;
}

/* Edit */
#btn_media_edit {
    background: #fff3cd !important;
    color: #856404 !important;
}

#btn_media_edit:hover {
    background: #ffc107 !important;
    color: #fff !important;
}

/* Delete */
#btn_media_remove {
    background: #f8d7da !important;
    color: #721c24 !important;
}

#btn_media_remove:hover {
    background: #dc3545 !important;
    color: #fff !important;
}
/* ===============================
   WRAPPER FLEX CONTROL
================================= */
#tabel_data_wrapper .row:first-child {
    align-items: center;
}

/* ===============================
   SELECT WIDTH LEBIH PANJANG
================================= */

/* Container selectize */
#tabel_data_length .selectize-control {
    min-width: 50px !important;
    width: 70px !important;
}

/* Input tampilannya */
#tabel_data_length .selectize-input {
    min-width: 50px !important;
    width: 70px !important;
    text-align: center;
}

#tabel_data_length .selectize-input::after {
    display: none; !important;
}

/* Dropdown agar ikut lebar */
#tabel_data_length .selectize-dropdown {
    min-width: 70px !important;
}

/* ===============================
   SEARCH PULL RIGHT (DESKTOP)
================================= */

#tabel_data_filter {
    display: flex;
    justify-content: flex-end;
}

#tabel_data_filter input {
    width: 260px !important;
}

/* ===============================
   RESPONSIVE MODE HP
================================= */
@media (max-width: 767px) {

    #tabel_data_wrapper .row:first-child {
        text-align: center;
    }

    #tabel_data_length,
    #tabel_data_filter {
        display: flex;
        justify-content: center !important;
        margin-top: 10px;
    }

    #tabel_data_filter input {
        width: 220px !important;
    }
}

/* Hilangkan caret & efek input ketik */
#tabel_data_length .selectize-input input {
    caret-color: transparent !important;
    color: transparent !important;
    text-shadow: 0 0 0 transparent !important;
}

/* Supaya tetap terasa clickable */
#tabel_data_length .selectize-input {
    cursor: pointer;
}

#tabel_data_length .selectize-input input {
    position: absolute !important;
    opacity: 0 !important;
    width: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
}

/* Wrapper supaya bisa absolute positioning */
#tabel_data_filter label {
    position: relative;
    display: inline-block;
}

/* Tambahkan padding kanan supaya teks tidak tabrakan icon */
#tabel_data_filter input {
    padding-right: 40px !important;
}

/* Icon di dalam input (kanan) */
#tabel_data_filter label::after {
    content: "\f002"; /* fa-search */
    font-family: "Font Awesome 5 Free"; 
    font-weight: 900; /* wajib untuk solid */
    
    position: absolute;
    right: 15px;
    top: 50%;
    transform: translateY(-50%);
    
    font-size: 14px;
    color: #6c757d;
    pointer-events: none;
}

/* Row footer datatable */
#tabel_data_wrapper .row:last-child {
    display: flex;
    align-items: center; /* vertical middle */
}

/* Supaya kanan tetap rata kanan */
#tabel_data_paginate {
    display: flex;
    justify-content: flex-end;
}

/* Hilangkan jarak antar tombol */
#tabel_data_paginate .pagination {
    margin: 0;
}

#tabel_data_paginate .page-item {
    margin: 0 !important;
}

#tabel_data_paginate .page-link {
    border-radius: 0 !important;
    margin: 0 !important;
    border-right: 1px solid #dcdfe6 !important;
}

/* Rounded hanya ujung kiri & kanan */
#tabel_data_paginate .page-item:first-child .page-link {
    border-top-left-radius: 10px !important;
    border-bottom-left-radius: 10px !important;
}

#tabel_data_paginate .page-item:last-child .page-link {
    border-top-right-radius: 10px !important;
    border-bottom-right-radius: 10px !important;
    border-right: none !important;
}

@media (max-width: 576px) {

    /* Row footer jadi column */
    #tabel_data_wrapper .row:last-child {
        display: flex;
        flex-direction: column;
        align-items: center;
        text-align: center;
        gap: 10px;
    }

    /* Kolom full width */
    #tabel_data_wrapper .row:last-child > div {
        width: 100%;
        max-width: 100%;
        flex: 0 0 100%;
    }

    /* Pagination center */
    #tabel_data_paginate {
        display: flex;
        justify-content: center !important;
    }
}

@media (max-width: 1200px) {

    .map-card-pro,
    .map-expand-card-pro {
        height: 170px; /* ubah sesuai kebutuhan */
    }

}

@media (max-width: 768px) {

    .map-card-pro,
    .map-expand-card-pro {
        height: 270px; /* ubah sesuai kebutuhan */
    }

}

.dataTables_empty {
    text-align: center !important;
}

/* ===============================
   LAYER CONTROL - MATCH ZOOM STYLE
================================= */

.leaflet-control-layers {
    background: rgba(255,255,255,0.75) !important;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);

    border-radius: 18px !important;
    box-shadow: 0 4px 20px rgba(0,0,0,0.15);
    overflow: hidden;
    border: none !important;

    padding: 0 !important;
}

/* Toggle button (icon layer) */
.leaflet-control-layers-toggle {
    width: 30px !important;
    height: 30px !important;
    background-size: 16px 16px !important;
}

/* Hilangkan border bawaan */
.leaflet-control-layers-expanded {
    padding: 10px 12px !important;
}

/* Radio label */
.leaflet-control-layers label {
    font-size: 12px;
    cursor: pointer;
    margin: 0px;
}

/* Hover effect */
.leaflet-control-layers label:hover {
    background: rgba(0,0,0,0.05);
    border-radius: 8px;
}

/* ===============================
   LAYER PANEL COLLAPSE FIX
================================ */

.custom-layer-panel .layer-content {
    transition: all 0.25s ease;
}

.custom-layer-panel .layer-content.collapsed {
    display: none;              /* benar-benar hilang */
    pointer-events: none;       /* tidak bisa diklik */
}

.search-tooltip {
    max-width: 50ch;   /* batas maksimal 100 karakter */
    min-width: 50ch;   /* batas maksimal 100 karakter */
    width: auto;        /* jangan pakai 100vh */
}

.search-tooltip .search-tip {
    white-space: normal;        /* biar bisa wrap */
    word-break: break-word;     /* paksa break jika kata sangat panjang */
    overflow-wrap: break-word;  /* fallback modern */
}

.leaflet-control-search.search-exp {
    width: auto !important;
    max-width: 50ch !important;
    min-width: 50ch !important;
}

.legend-loader-container {
    display: flex;
    align-items: center;
    gap: 5px;
    background: rgba(255, 255, 255, 0.75);
    padding: 5px 5px;
    border-radius: 25px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    font-size: 10px;
}

/* Spinner */
.legend-loader {
    width: 18px;
    height: 18px;
    border: 3px solid #e0e0e0;
    border-top: 3px solid #007bff;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

/* Animasi */
@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

/* Text tengah */
.legend-text {
    flex: 1;
    white-space: nowrap;
}

.cluster-svg{
  background: transparent;
  border: none;
}