/* KOMPONEN PETA JAWARA AIR
   Dipakai laman /peta (portal) dan halaman panel Peta Operator.
   Token warna mengikuti portal (--surface, --ink, --line, --heading,
   --biru) dan jatuh ke nilai bawaan bila dipakai di panel Filament. */

.jp{
  --jp-kartu:var(--surface,#ffffff);
  --jp-kartu-2:var(--surface-2,#f2f8fd);
  --jp-teks:var(--ink,#334155);
  --jp-redup:var(--ink-2,#64748b);
  --jp-garis:var(--line,#d3e2f0);
  --jp-judul:var(--heading,#0C447C);
  --jp-aksen:var(--biru,#0C447C);
  --jp-bayang:0 8px 24px rgba(12,68,124,.16);
  --jp-atas:12px;
  /* Kinerja DI e-PAKSI: satu rona biru berurutan, tervalidasi (terang). */
  --jp-kinerja-baik:#86b6ef;
  --jp-kinerja-kurang:#2a78d6;
  --jp-kinerja-jelek:#104281;
  --jp-kinerja-lain:#94a3b8;
  /* Ikon cuaca BMKG dan batang suhu (rincian.js). Warna hanya penanda;
     teks cuaca selalu ada di label ikon. */
  --jp-ik-matahari:#d97f06;--jp-ik-matahari-isi:#fbbf24;--jp-ik-bulan:#f2d785;--jp-ik-bulan-tepi:#b8901f;
  --jp-ik-awan:#e6edf5;--jp-ik-awan-tepi:#8193a6;--jp-ik-awan-tebal:#9aabbd;--jp-ik-awan-tebal-tepi:#4f6378;
  --jp-ik-tetes:#2a78d6;--jp-ik-petir:#f5b014;--jp-ik-petir-tepi:#a85d06;
  --jp-suhu-sejuk:#f6c445;--jp-suhu-panas:#ef7d32;
  position:relative;width:100%;height:100%;min-height:420px;
  container:jp/inline-size;
  color:var(--jp-teks);font-size:14px;line-height:1.45;
}
/* Tema gelap: portal memakai data-theme, panel Filament memakai kelas dark. */
:root[data-theme="dark"] .jp{
  --jp-bayang:0 10px 28px rgba(0,0,0,.5);
  --jp-kinerja-baik:#9ec5f4;--jp-kinerja-kurang:#3987e5;--jp-kinerja-jelek:#1c5cab;--jp-kinerja-lain:#64748b;
  --jp-ik-awan:#c6d4e1;--jp-ik-awan-tepi:#8fa4ba;--jp-ik-awan-tebal:#6b7f94;--jp-ik-awan-tebal-tepi:#a9bccd;
  --jp-ik-tetes:#5ea1ef;--jp-ik-bulan-tepi:#e2c35c;
}
.dark .jp{
  --jp-kartu:#131f2b;--jp-kartu-2:#1a2836;--jp-teks:#c6d4e1;--jp-redup:#8fa4ba;--jp-garis:#25384a;
  --jp-judul:#e9f2fc;--jp-aksen:#3f8fe8;--jp-bayang:0 10px 28px rgba(0,0,0,.5);
  --jp-kinerja-baik:#9ec5f4;--jp-kinerja-kurang:#3987e5;--jp-kinerja-jelek:#1c5cab;--jp-kinerja-lain:#64748b;
  --jp-ik-awan:#c6d4e1;--jp-ik-awan-tepi:#8fa4ba;--jp-ik-awan-tebal:#6b7f94;--jp-ik-awan-tebal-tepi:#a9bccd;
  --jp-ik-tetes:#5ea1ef;--jp-ik-bulan-tepi:#e2c35c;
}
/* Warna panel dari Pengaturan Peta (laman /peta): menimpa tema portal. */
:root .jp.jp-tema-terang{
  --jp-kartu:#ffffff;--jp-kartu-2:#f2f8fd;--jp-teks:#334155;--jp-redup:#64748b;--jp-garis:#d3e2f0;
  --jp-judul:#0C447C;--jp-aksen:#0C447C;--jp-bayang:0 8px 24px rgba(12,68,124,.16);
  --jp-kinerja-baik:#86b6ef;--jp-kinerja-kurang:#2a78d6;--jp-kinerja-jelek:#104281;--jp-kinerja-lain:#94a3b8;
  --jp-ik-awan:#e6edf5;--jp-ik-awan-tepi:#8193a6;--jp-ik-awan-tebal:#9aabbd;--jp-ik-awan-tebal-tepi:#4f6378;
  --jp-ik-tetes:#2a78d6;--jp-ik-bulan-tepi:#b8901f;
  color-scheme:light;
}
:root .jp.jp-tema-gelap{
  --jp-kartu:#131f2b;--jp-kartu-2:#1a2836;--jp-teks:#c6d4e1;--jp-redup:#8fa4ba;--jp-garis:#25384a;
  --jp-judul:#e9f2fc;--jp-aksen:#3f8fe8;--jp-bayang:0 10px 28px rgba(0,0,0,.5);
  --jp-kinerja-baik:#9ec5f4;--jp-kinerja-kurang:#3987e5;--jp-kinerja-jelek:#1c5cab;--jp-kinerja-lain:#64748b;
  --jp-ik-awan:#c6d4e1;--jp-ik-awan-tepi:#8fa4ba;--jp-ik-awan-tebal:#6b7f94;--jp-ik-awan-tebal-tepi:#a9bccd;
  --jp-ik-tetes:#5ea1ef;--jp-ik-bulan-tepi:#e2c35c;
  color-scheme:dark;
}
.peta-full .jp{position:absolute;inset:0;min-height:0}
.jp-panel-induk{height:calc(100dvh - 13rem);min-height:520px;border-radius:12px;overflow:hidden;border:1px solid var(--jp-garis,#d3e2f0)}
.jp-peta{position:absolute;inset:0;background:var(--jp-kartu-2)}

/* Pemindah peta ringkas dan GeoLibre tersemat (peta._beralih, geolibre.js).
   Portal: pemindah melayang di tengah bawah peta. Panel: di atas bingkai,
   bersama tombol layar penuh dan tautan GeoLibre di tab baru. */
.jg{position:relative;width:100%;height:100%}
.jg-portal{position:absolute;inset:0}
.jg-bingkai{position:relative;width:100%;height:100%}
.jg-ringkas{position:absolute;inset:0}
.jg-geolibre{position:absolute;inset:0;z-index:20;background:var(--surface-2,#f2f8fd)}
/* Portal: bilah atas GeoLibre (menu View, Controls, Help) mulai di bawah pil navigasi
   dan tombol tema yang melayang (portal.css .hub-nav), sehingga tidak tertutup. */
.jg-portal .jg-geolibre{padding-top:112px}
@media (max-width: 900px){
  .jg-portal .jg-geolibre{padding-top:128px}
}
.jg-geolibre[hidden]{display:none}
.jg-geolibre iframe{display:block;width:100%;height:100%;border:0}
.jg-pilih{display:inline-flex;gap:2px;padding:3px;border-radius:999px;background:var(--surface,#fff);
  border:1px solid var(--line,#d3e2f0);box-shadow:0 8px 24px rgba(12,68,124,.16)}
.jg-pilih button{border:0;border-radius:999px;background:transparent;padding:6px 14px;font:inherit;font-size:13px;
  font-weight:600;line-height:1.3;white-space:nowrap;color:var(--ink-2,#64748b);cursor:pointer}
.jg-pilih button[aria-selected="true"]{background:var(--biru,#0C447C);color:#fff}
.jg-pilih button:focus-visible{outline:2px solid var(--biru,#0C447C);outline-offset:2px}
/* --jp-tinggi-atribusi: tinggi keterangan sumber (utama.js), ditulis di .jg agar
   pemindah di luar komponen peta ikut naik saat teks sumber dibuka. */
.jg-portal .jg-alat{position:absolute;z-index:30;left:50%;bottom:calc(var(--jp-tinggi-atribusi, 18px) + 16px);transform:translateX(-50%)}
/* Ponsel: dari bawah ke atas ada atribusi, perbesaran, dan bilah alat (alat.css);
   pemindah duduk 6 px di atas bilah alat, dan batas bawah panel di atasnya (lihat
   .jp-hamparan di kueri wadah sempit). Bidang sentuh tombol pemindah 44 px.
   Selama baris kabar alat tampil (melayang di atas bilah) atau daftar hasil cari
   terbuka, pemindah disembunyikan agar tidak menindih keduanya. */
@media (max-width: 679px){
  .jg-portal .jg-alat{bottom:calc(var(--jp-tinggi-atribusi, 18px) + 163px)}
  .jg-pilih button{position:relative}
  .jg-pilih button::after{content:"";position:absolute;inset:-8px 0}
  .jg-panel .jg-tombol{min-height:44px}
  .jg-portal:has(.jp-alat-bawah .jp-alat-kabar:not(:empty)) .jg-alat,
  .jg-portal:has(.jp-cari-daftar:not([hidden])) .jg-alat,
  .jg-portal:has(.jp-cari-kabar-tampak) .jg-alat{visibility:hidden}
}
.jg-panel{height:auto}
.jg-panel .jg-alat{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px}
/* Tinggi bingkai Peta Operator: sisa layar di bawah judul dan keterangan halaman.
   --jg-atas (jarak tepi atas bingkai dari atas dokumen) diukur utama.js; 2rem untuk
   bantalan bawah halaman Filament. */
.jg-panel .jg-bingkai{height:calc(100dvh - var(--jg-atas, 22rem) - 2rem);min-height:420px}
.jg-tombol{display:inline-flex;align-items:center;min-height:36px;padding:6px 14px;border-radius:999px;
  border:1px solid var(--line,#d3e2f0);background:var(--surface,#fff);color:var(--biru,#0C447C);font:inherit;
  font-size:13px;font-weight:600;white-space:nowrap;text-decoration:none;cursor:pointer}
.jg-tombol[hidden]{display:none}
.jg-tombol:hover{border-color:var(--biru,#0C447C)}
.jg-tombol:focus-visible{outline:2px solid var(--biru,#0C447C);outline-offset:2px}
/* Layar penuh: bingkai mengisi layar tanpa sudut dan tepi panel. */
.jg-bingkai:fullscreen{height:100vh;min-height:0;border:0;border-radius:0}
.jg-panel:fullscreen{display:flex;flex-direction:column;padding:8px;background:#f2f8fd}
.dark .jg-panel:fullscreen{background:#0b1621}
.jg-panel:fullscreen .jg-bingkai{flex:1;height:auto;min-height:0}
.dark .jg-pilih{background:#131f2b;border-color:#25384a;box-shadow:0 10px 28px rgba(0,0,0,.5)}
.dark .jg-pilih button{color:#8fa4ba}
.dark .jg-pilih button[aria-selected="true"]{background:#3f8fe8;color:#fff}
.dark .jg-geolibre{background:#1a2836}
.dark .jg-tombol{background:#131f2b;border-color:#25384a;color:#9ec5f4}
/* Simpan lapisan GeoLibre ke Data Spasial (panel). */
.jg-tombol-utama{background:var(--biru,#0C447C);border-color:var(--biru,#0C447C);color:#fff}
.jg-tombol-utama:hover{filter:brightness(1.1)}
.jg-tombol:disabled{opacity:.55;cursor:default}
.jg-dialog{width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 48px);padding:0;border:1px solid var(--line,#d3e2f0);
  border-radius:14px;background:var(--surface,#fff);color:var(--ink,#334155);box-shadow:0 18px 48px rgba(12,68,124,.25)}
.jg-dialog::backdrop{background:rgba(15,23,42,.45)}
.jg-form{display:flex;flex-direction:column;gap:10px;padding:18px 20px;font-size:14px}
.jg-form h2{margin:0;font-size:16px;font-weight:700;color:var(--heading,#0C447C)}
.jg-form label{display:flex;flex-direction:column;gap:4px;font-weight:600}
.jg-form input,.jg-form select,.jg-form textarea{font:inherit;font-weight:400;padding:7px 10px;border-radius:8px;
  border:1px solid var(--line,#d3e2f0);background:var(--surface,#fff);color:inherit}
.jg-catatan{margin:0;color:var(--ink-2,#64748b);font-size:13px}
.jg-kabar{margin:0;min-height:1.2em;font-size:13px}
.jg-kabar a{color:var(--biru,#0C447C);text-decoration:underline}
.jg-aksi{display:flex;justify-content:flex-end;gap:8px}
.jg-susunan{max-height:45vh;overflow-y:auto;font-size:13px}
.jg-susunan h3{margin:8px 0 4px;font-size:13px;font-weight:700}
.jg-susunan ul{margin:0;padding-left:18px;list-style:disc}
.dark .jg-tombol-utama{background:#3f8fe8;border-color:#3f8fe8;color:#fff}
.dark .jg-dialog{background:#131f2b;border-color:#25384a;color:#c6d4e1}
.dark .jg-form h2{color:#e9f2fc}
.dark .jg-form input,.dark .jg-form select,.dark .jg-form textarea{background:#1a2836;border-color:#25384a}
.dark .jg-kabar a{color:#9ec5f4}
.jp-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.jp-tanpa-skrip,.jp-galat{position:absolute;inset:auto 16px 16px 16px;margin:0;padding:12px 14px;border-radius:10px;background:var(--jp-kartu);border:1px solid var(--jp-garis);z-index:5}

/* Hamparan panel melayang. Kolom tidak menangkap klik; kotaknya saja yang menangkap. */
/* Batas bawah naik bersama keterangan sumber yang dibuka, agar kolom kanan tidak
   menutupi tombol perbesaran (78 + 18 px = 96 px saat sumber diringkas). */
.jp-hamparan{position:absolute;top:var(--jp-atas);left:10px;right:10px;bottom:calc(var(--jp-tinggi-atribusi, 18px) + 78px);
  display:flex;justify-content:space-between;align-items:flex-start;gap:10px;pointer-events:none;z-index:2}
.jp-kiri,.jp-kanan{display:flex;flex-direction:column;gap:8px;min-height:0;max-height:100%;pointer-events:none}
.jp-kiri{width:min(330px,calc(50cqw - 15px))}
.jp-kanan{width:min(340px,calc(50cqw - 15px));max-height:calc(100% - 70px)}
.jp-kotak{pointer-events:auto;background:var(--jp-kartu);color:var(--jp-teks);
  border:1px solid var(--jp-garis);border-radius:12px;box-shadow:var(--jp-bayang)}
.jp-kotak[hidden]{display:none}

/* Panel berkepala lipat (legenda, analitik). */
.jp-panel{display:flex;flex-direction:column;min-height:0;overflow:hidden;overflow:clip}
.jp-kepala{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:44px;
  padding:10px 14px;background:none;border:0;color:var(--jp-judul);cursor:pointer;
  font:inherit;font-family:var(--font-head,inherit);font-weight:700;font-size:15px;text-align:left}
.jp-kepala svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;transition:transform .15s ease}
.jp-panel.terlipat .jp-kepala svg{transform:rotate(-90deg)}
.jp-panel.terlipat .jp-panel-isi{display:none}
/* Cara lipat: panel terlipat tinggal kepalanya dan tidak ikut menyusut,
   sehingga kepalanya tidak terpotong atau tertimpa panel lain. */
.jp-panel.terlipat,.jp-panel#jp-analitik.terlipat,.jp-rincian.terlipat{flex:none}
#jp-legenda{min-height:44px}
/* position:relative pada kotak dan isi panel membuat teks pembaca layar (.jp-sr,
   absolut) ikut terpotong dan tergulir di dalam panel, sehingga tidak memanjangkan
   wadah peta yang kemudian dapat tergeser saat elemen difokuskan. */
.jp-kotak,.jp-panel-isi{position:relative}
.jp-panel-isi{overflow-y:auto;overflow-x:hidden;min-height:0;padding:0 14px 12px;border-top:1px solid var(--jp-garis)}
.jp-kepala:focus-visible,.jp-info:focus-visible,.jp-tombol-kecil:focus-visible,.jp-tabel th button:focus-visible,.jp-tutup:focus-visible,
.jp-lipat:focus-visible,.jp-ket-info summary:focus-visible,.jp-cuaca-jam:focus-visible{outline:2px solid var(--jp-aksen);outline-offset:2px}

/* Pencarian. */
.jp-cari{position:relative;display:flex;align-items:center}
.jp-cari-ikon{position:absolute;left:12px;width:18px;height:18px;fill:none;stroke:var(--jp-redup);stroke-width:2;stroke-linecap:round;pointer-events:none}
.jp-cari input{width:100%;min-height:44px;padding:10px 12px 10px 38px;border:0;border-radius:12px;background:transparent;color:var(--jp-teks);font:inherit;font-size:16px}
.jp-cari input:focus{outline:2px solid var(--jp-aksen);outline-offset:-2px}
.jp-cari-daftar{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:4;margin:0;padding:4px;list-style:none;
  max-height:min(320px,50vh);overflow-y:auto;background:var(--jp-kartu);border:1px solid var(--jp-garis);border-radius:10px;box-shadow:var(--jp-bayang)}
.jp-cari-daftar[hidden]{display:none}
.jp-cari-butir{display:flex;flex-direction:column;padding:8px 10px;border-radius:8px;cursor:pointer}
.jp-cari-butir[aria-selected="true"],.jp-cari-butir:hover{background:var(--jp-kartu-2)}
.jp-cari-utama{color:var(--jp-judul);font-weight:600}
.jp-cari-sub{font-size:13px;color:var(--jp-redup)}
.jp-cari-kabar{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
/* Pesan tanpa daftar hasil (tidak cocok, koordinat salah, data belum termuat) tampil di bawah kotak cari. */
/* Pesan hanya untuk dibaca: ketukan tembus ke bilah alat atau panel di bawahnya. */
.jp-cari-kabar.jp-cari-kabar-tampak{top:calc(100% + 6px);left:0;right:0;z-index:4;width:auto;height:auto;margin:0;padding:8px 10px;
  overflow:visible;clip:auto;background:var(--jp-kartu);border:1px solid var(--jp-garis);border-radius:10px;box-shadow:var(--jp-bayang);
  color:var(--jp-teks);font-size:13px;pointer-events:none}
/* Catatan hasil yang tidak ditampilkan, di ujung daftar. */
.jp-cari-catatan{padding:6px 10px 4px;border-top:1px solid var(--jp-garis);color:var(--jp-redup);font-size:12.5px;cursor:default}
/* Selama daftar hasil atau pesan cari terbuka, lapisan panel naik di atas popup (3),
   pemindah GeoLibre (30), dan bilah alat ponsel (31), sehingga hasil dapat ditekan. */
.jp-hamparan:has(.jp-cari-daftar:not([hidden])),.jp-hamparan:has(.jp-cari-kabar-tampak){z-index:32}

/* Legenda. */
.jp-kelompok{border:0;margin:0;padding:10px 0 4px;min-width:0;border-bottom:1px solid var(--jp-garis)}
.jp-kelompok:last-child{border-bottom:0}
.jp-kelompok legend{padding:0;margin-bottom:4px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--jp-redup)}
.jp-lapis-baris{display:flex;align-items:flex-start;gap:6px}
.jp-butir{flex:1;display:flex;align-items:flex-start;gap:8px;padding:6px 0;cursor:pointer;min-height:32px}
.jp-butir input{margin:3px 0 0;flex:none;width:16px;height:16px;accent-color:var(--jp-aksen)}
.jp-butir span{flex:1;min-width:0}
.jp-info{flex:none;width:28px;height:28px;margin-top:2px;border-radius:50%;border:1px solid var(--jp-garis);background:var(--jp-kartu);
  color:var(--jp-redup);cursor:pointer;font:inherit;font-weight:700;font-style:italic;font-size:13px}
.jp-info[aria-expanded="true"]{color:var(--jp-kartu);background:var(--jp-aksen);border-color:var(--jp-aksen)}
.jp-tanda{flex:none;display:inline-block;width:22px;height:12px;margin-top:3px;border-radius:3px;border:1px solid var(--jp-redup)}
.jp-tanda-titik{width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--jp-redup)}
.jp-tanda-cincin{border-width:3px;box-shadow:none}
.jp-tanda-garis{height:0;border:0;border-top:3px solid;margin-top:9px;border-radius:0}
.jp-ket{display:none;margin:0 0 8px 24px;font-size:13px}
.jp-lapis.nyala .jp-ket-ringkas,.jp-lapis.galat .jp-ket-ringkas,.jp-lapis.terbuka .jp-ket-rinci{display:block}
.jp-ket-ringkas:not(:has(*:not([hidden]))){display:none !important}
.jp-ket-rinci{padding:8px 10px;border-radius:8px;background:var(--jp-kartu-2)}
.jp-ket-teks{margin:0 0 6px;color:var(--jp-teks)}
.jp-kelas-judul{margin:0 0 4px;color:var(--jp-redup);font-size:12.5px}
.jp-kelas{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column;gap:3px}
.jp-kelas li{display:flex;align-items:center;gap:6px}
.jp-kelas i{flex:none;width:11px;height:11px;border-radius:2px;border:1px solid var(--jp-redup)}
.jp-pita{display:block;height:10px;border-radius:3px;border:1px solid var(--jp-garis)}
.jp-ujung{display:flex;justify-content:space-between;font-size:12px;color:var(--jp-redup);margin:2px 0 6px}
/* Kolom label dibatasi 45% lebar agar kolom nilai tidak menyempit sampai satu huruf per baris. */
.jp-fakta{display:grid;grid-template-columns:fit-content(45%) minmax(0,1fr);gap:3px 10px;margin:4px 0 0;font-size:13px}
.jp-fakta dt{color:var(--jp-redup);overflow-wrap:anywhere}
.jp-fakta dd{margin:0;color:var(--jp-teks);overflow-wrap:anywhere}
.jp-kabar{margin:6px 0 0;color:var(--jp-redup);font-size:13px}
/* Lencana data basi: abu-abu bergaris putus dengan ikon jam (PRD 11.2). */
.jp-lencana-basi{display:flex;align-items:flex-start;gap:5px;margin:6px 0 0;padding:3px 8px;border:1px dashed var(--jp-redup);
  border-radius:8px;background:var(--jp-kartu-2);color:var(--jp-teks);font-size:12.5px;line-height:1.35}
.jp-lencana-basi svg{flex:none;width:14px;height:14px;margin-top:1px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}

/* Kotak rincian desa dan blok bersama. */
/* Rincian boleh menyusut di dalam kolom kiri yang tingginya terbatas, lalu digulir.
   Panel analitik yang terlipat tinggal kepalanya; yang terbuka berbagi ruang (lihat #jp-analitik). */
/* Kepala rincian (nama desa, lipat, tutup) tetap tampak; hanya isinya yang digulir atau dilipat. */
.jp-rincian{display:flex;flex-direction:column;min-height:60px;overflow:hidden;overflow:clip;flex:0 1 auto}
.jp-rincian-kepala{flex:none;display:flex;align-items:flex-start;gap:2px;padding:10px 6px 8px 14px}
.jp-rincian-judul{flex:1;min-width:0}
.jp-rincian-kepala strong{display:block;color:var(--jp-judul);font-family:var(--font-head,inherit);font-size:18px;line-height:1.2;overflow-wrap:anywhere}
.jp-rincian-isi{flex:0 1 auto;min-height:0;display:flex;flex-direction:column;gap:8px;padding:0 14px 12px;
  overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
.jp-rincian-isi > *{flex:none}
.jp-rincian.terlipat .jp-rincian-isi{display:none}
.jp-rincian.terlipat .jp-rincian-kepala{padding-bottom:10px}
.jp-tutup,.jp-lipat{flex:none;width:32px;height:32px;border:0;background:none;color:var(--jp-redup);cursor:pointer;border-radius:8px}
.jp-tutup{font-size:22px;line-height:1}
.jp-lipat{display:inline-flex;align-items:center;justify-content:center;padding:0}
.jp-lipat-ikon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s ease}
.jp-rincian.terlipat .jp-lipat-ikon{transform:rotate(-90deg)}
.jp-tutup:hover,.jp-lipat:hover{color:var(--jp-judul);background:var(--jp-kartu-2)}
.jp-label-kecil{display:block;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--jp-redup)}
.jp-blok{border-top:1px solid var(--jp-garis);padding-top:10px;margin-top:10px}
.jp-panel-isi > .jp-blok:first-child{border-top:0;margin-top:0}
.jp-blok h3{margin:0 0 8px;font-size:14px;color:var(--jp-judul);font-family:var(--font-head,inherit)}
.jp-blok-kepala{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.jp-blok-kepala h3{margin:0}
.jp-angka-baris{display:flex;align-items:baseline;gap:8px}
.jp-angka-besar{font-family:var(--font-head,inherit);font-size:32px;font-weight:700;color:var(--jp-judul);line-height:1.1}
.jp-angka-sedang{display:block;font-size:20px;color:var(--jp-judul)}
.jp-redup{color:var(--jp-redup);font-size:13px}
.jp-keadaan{margin:8px 0;color:var(--jp-redup);font-size:13px}
.jp-sumber{margin:10px 0 0;color:var(--jp-redup);font-size:12.5px}
.jp-sumber p{margin:0 0 4px}
.jp-sumber a,.jp-popup a{color:var(--jp-aksen);text-decoration:underline}

/* Keterangan ringkas bertanda i (JP.ketInfo): satu baris, teks lengkap saat dibuka. */
.jp-ket-info{margin:8px 0 0;color:var(--jp-redup);font-size:12.5px}
.jp-sumber .jp-ket-info{margin:0 0 4px}
.jp-ket-info summary{display:flex;align-items:flex-start;gap:6px;min-height:30px;padding:3px 0;cursor:pointer;list-style:none;border-radius:6px}
.jp-ket-info summary::-webkit-details-marker{display:none}
.jp-ket-info-ringkas{flex:1;min-width:0;padding-top:3px;overflow-wrap:anywhere}
.jp-ket-info-i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;
  border:1px solid var(--jp-garis);background:var(--jp-kartu);color:var(--jp-redup);font-family:Georgia,'Times New Roman',serif;
  font-weight:700;font-style:italic;font-size:13px;line-height:1}
.jp-ket-info summary:hover .jp-ket-info-i{border-color:var(--jp-aksen);color:var(--jp-aksen)}
.jp-ket-info[open] .jp-ket-info-i{background:var(--jp-aksen);border-color:var(--jp-aksen);color:var(--jp-kartu)}
.jp-ket-info-isi{margin:4px 0 0;padding:8px 10px;border-radius:8px;background:var(--jp-kartu-2);color:var(--jp-teks);font-size:12.5px}
.jp-ket-info-isi p{margin:0 0 4px}
.jp-ket-info-isi p:last-child{margin-bottom:0}

/* Kartu prakiraan cuaca BMKG: pita per 3 jam, baris harian, sumber ringkas. */
.jp-ikon-cuaca{flex:none;display:inline-block;width:28px;height:28px}
.jp-ikon-svg{display:block;width:100%;height:100%;overflow:visible}
.jp-ik-matahari{fill:var(--jp-ik-matahari-isi);stroke:var(--jp-ik-matahari);stroke-width:1.4}
.jp-ik-pudar{opacity:.55}
.jp-ik-sinar{fill:none;stroke:var(--jp-ik-matahari);stroke-width:2;stroke-linecap:round}
.jp-ik-bulan{fill:var(--jp-ik-bulan);stroke:var(--jp-ik-bulan-tepi);stroke-width:1.2;stroke-linejoin:round}
.jp-ik-awan{fill:var(--jp-ik-awan);stroke:var(--jp-ik-awan-tepi);stroke-width:1.4;stroke-linejoin:round}
.jp-ik-awan-tebal{fill:var(--jp-ik-awan-tebal);stroke:var(--jp-ik-awan-tebal-tepi);stroke-width:1.4;stroke-linejoin:round}
.jp-ik-tetes{fill:none;stroke:var(--jp-ik-tetes);stroke-width:2;stroke-linecap:round}
.jp-ik-tetes-isi{fill:var(--jp-ik-tetes)}
.jp-ik-petir{fill:var(--jp-ik-petir);stroke:var(--jp-ik-petir-tepi);stroke-width:1;stroke-linejoin:round}
.jp-ik-garis{fill:none;stroke:var(--jp-redup);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.jp-ik-titik{fill:var(--jp-redup)}
.jp-cuaca-jam{display:flex;gap:4px;margin:8px 0 0;padding:0 0 6px;list-style:none;overflow-x:auto;overflow-y:hidden;
  overscroll-behavior-x:contain;scroll-snap-type:x proximity;border-radius:10px}
.jp-cuaca-jam li{flex:none;min-width:52px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;
  border-radius:10px;background:var(--jp-kartu-2);scroll-snap-align:start;font-variant-numeric:tabular-nums}
.jp-cuaca-jam li.jp-hari-baru{box-shadow:inset 2px 0 0 var(--jp-garis)}
.jp-jam-hari{min-height:15px;font-size:11px;font-weight:700;color:var(--jp-aksen);white-space:nowrap}
.jp-jam{font-size:12px;color:var(--jp-redup)}
.jp-suhu{font-size:14px;font-weight:700;color:var(--jp-judul)}
.jp-cuaca-hari{margin:8px 0 0;padding:0;list-style:none;font-size:13px;font-variant-numeric:tabular-nums}
.jp-cuaca-hari li{display:grid;grid-template-columns:62px 28px 30px minmax(28px,1fr) 30px 62px;align-items:center;gap:6px;
  padding:0 6px;min-height:38px;border-radius:8px}
.jp-cuaca-hari li + li{border-top:1px solid var(--jp-garis)}
.jp-cuaca-hari .jp-cuaca-hari-tajuk{min-height:0;padding-bottom:2px;font-size:11px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:var(--jp-redup)}
.jp-cuaca-hari-tajuk span:nth-child(3),.jp-cuaca-hari-tajuk span:nth-child(5){text-align:right}
.jp-cuaca-hari-tajuk span:nth-child(4){text-align:center}
.jp-cuaca-hari .jp-hari-ini{background:var(--jp-kartu-2)}
.jp-cuaca-hari .jp-hari-ini + li{border-top-color:transparent}
.jp-hari-nama{font-weight:700;color:var(--jp-judul);white-space:nowrap}
.jp-suhu-min,.jp-suhu-maks{text-align:right;color:var(--jp-redup)}
.jp-suhu-maks{color:var(--jp-judul);font-weight:700}
.jp-suhu-jalur{position:relative;display:block;height:6px;border-radius:3px;background:var(--jp-garis)}
.jp-suhu-isi{position:absolute;top:0;bottom:0;min-width:6px;border-radius:3px;
  background:linear-gradient(90deg,var(--jp-suhu-sejuk),var(--jp-suhu-panas))}
.jp-hujan{display:inline-flex;align-items:center;justify-content:flex-end;gap:3px;color:var(--jp-redup);white-space:nowrap}
.jp-hujan-ada{color:var(--jp-judul);font-weight:600}
.jp-hujan-ikon{flex:none;width:12px;height:12px}
.jp-hujan:not(.jp-hujan-ada) .jp-hujan-ikon{opacity:.45}
.jp-cuaca-sumber{margin-top:8px}
.jp-rincian-isi > .jp-ket-info{margin-top:2px}
.jp-label-analisis{font-weight:600;color:var(--jp-teks)}
.jp-daftar-ringkas{margin:6px 0 0;padding-left:18px;font-size:13px;list-style:disc}
.jp-tautan-di{padding:2px 0;border:0;background:none;color:var(--jp-aksen);font:inherit;text-align:left;text-decoration:underline;cursor:pointer}
.jp-tautan-di:hover{color:var(--jp-judul)}
.jp-tautan-di:focus-visible{outline:2px solid var(--jp-aksen);outline-offset:2px;border-radius:4px}
.jp-tombol-kecil{min-height:32px;padding:5px 12px;border-radius:999px;border:1px solid var(--jp-garis);background:var(--jp-kartu);
  color:var(--jp-aksen);font:inherit;font-weight:600;font-size:13px;cursor:pointer}
.jp-tombol-kecil:hover:not(:disabled){border-color:var(--jp-aksen)}
.jp-tombol-kecil:disabled{opacity:.5;cursor:default}
a.jp-tombol-kecil{display:inline-flex;align-items:center;text-decoration:none;white-space:nowrap}

/* Analitik: donat, batang, tabel. */
.jp-panel#jp-analitik{flex:0 1000 auto;min-height:44px}
/* Analitik yang dibuka tidak lagi terdesak rincian desa sampai tinggal kepalanya: keduanya berbagi
   tinggi kolom dan masing-masing digulir. */
.jp-panel#jp-analitik:not(.terlipat){flex:0 1 auto;min-height:240px}
.jp-kiri:has(.jp-panel#jp-analitik:not(.terlipat)) .jp-rincian:not([hidden]):not(.terlipat){min-height:140px}
.jp-donat-baris{display:flex;align-items:center;gap:12px}
.jp-donat{flex:none;width:112px;height:112px}
.jp-donat-alas{fill:none;stroke:var(--jp-kartu-2);stroke-width:18}
.jp-donat-busur{fill:none;stroke-width:18;cursor:default}
.jp-donat-busur:hover{stroke-width:21}
.jp-donat-angka{fill:var(--jp-judul);font-size:22px;font-weight:700;font-family:var(--font-head,inherit)}
.jp-donat-sub{fill:var(--jp-redup);font-size:11px}
.jp-kinerja-baik{stroke:var(--jp-kinerja-baik)}.jp-kinerja-kurang{stroke:var(--jp-kinerja-kurang)}
.jp-kinerja-jelek{stroke:var(--jp-kinerja-jelek)}.jp-kinerja-lain{stroke:var(--jp-kinerja-lain)}
.jp-kinerja-isi-baik{background:var(--jp-kinerja-baik)}.jp-kinerja-isi-kurang{background:var(--jp-kinerja-kurang)}
.jp-kinerja-isi-jelek{background:var(--jp-kinerja-jelek)}.jp-kinerja-isi-lain{background:var(--jp-kinerja-lain)}
.jp-kelas-angka{flex:1;min-width:0;font-size:13px}
.jp-kelas-angka span{flex:1}
.jp-kelas-angka b{font-variant-numeric:tabular-nums;color:var(--jp-judul);white-space:nowrap}
.jp-batang{display:flex;flex-direction:column;gap:5px}
.jp-batang-baris{display:grid;grid-template-columns:minmax(0,38%) 1fr auto;align-items:center;gap:8px;font-size:13px}
/* Nama kecamatan dibungkus, tidak dipotong elipsis (misalnya "Kecamatan belum tercatat"). */
.jp-batang-nama{min-width:0;overflow-wrap:anywhere;line-height:1.25}
.jp-batang-jalur{display:flex;gap:2px;height:12px;min-width:0}
.jp-batang-seg{display:block;height:100%;border-radius:0}
.jp-batang-seg:first-child{border-radius:3px 0 0 3px}
.jp-batang-seg:last-child{border-radius:0 3px 3px 0}
.jp-batang-seg:only-child{border-radius:3px}
.jp-batang-angka{font-variant-numeric:tabular-nums;color:var(--jp-judul)}
.jp-tabel-gulir{max-height:240px;overflow:auto;border:1px solid var(--jp-garis);border-radius:8px}
.jp-tabel{width:100%;border-collapse:collapse;font-size:13px}
.jp-tabel th{position:sticky;top:0;background:var(--jp-kartu-2);text-align:left;font-weight:600;padding:0}
.jp-tabel th button{width:100%;padding:6px 8px;border:0;background:none;color:var(--jp-judul);font:inherit;font-weight:600;text-align:inherit;cursor:pointer}
.jp-tabel th[aria-sort="ascending"] button::after{content:" \2191"}
.jp-tabel th[aria-sort="descending"] button::after{content:" \2193"}
.jp-tabel td{padding:5px 8px;border-top:1px solid var(--jp-garis);vertical-align:top}
.jp-tabel .jp-angka{text-align:right;font-variant-numeric:tabular-nums}
.jp-tabel-iksi th{padding:6px;color:var(--jp-judul)}
.jp-tabel-iksi td{padding:5px 6px}
.jp-tabel-iksi tbody th,.jp-tabel-iksi tfoot th{position:static;background:none;font-weight:400;color:var(--jp-teks);border-top:1px solid var(--jp-garis)}
.jp-tabel-iksi tfoot th,.jp-tabel-iksi tfoot td{font-weight:700;color:var(--jp-judul)}
.jp-tabel-iksi abbr{text-decoration:underline dotted;cursor:help}
.jp-iksi-jumlah{display:block;font-size:11.5px;font-weight:400;color:var(--jp-redup)}
.jp-iksi-sel{position:relative;min-width:56px}
.jp-iksi-batang{position:absolute;left:4px;top:4px;bottom:4px;max-width:calc(100% - 8px);border-radius:2px;background:var(--jp-kinerja-baik);opacity:.45}
.jp-iksi-angka{position:relative}

/* Kendali MapLibre selaras tema. */
.jp .maplibregl-map{font-family:inherit}
.jp .maplibregl-ctrl-group{background:var(--jp-kartu);border:1px solid var(--jp-garis);box-shadow:var(--jp-bayang)}
.jp .maplibregl-ctrl-group button{width:36px;height:36px}
.jp .maplibregl-ctrl-group button + button{border-top:1px solid var(--jp-garis)}
.jp .maplibregl-ctrl-group button:not(:disabled):hover{background:var(--jp-kartu-2)}
:root[data-theme="dark"] .jp .maplibregl-ctrl-icon,.dark .jp .maplibregl-ctrl-icon{filter:invert(1) hue-rotate(180deg)}
:root .jp.jp-tema-terang .maplibregl-ctrl-icon{filter:none}
:root .jp.jp-tema-gelap .maplibregl-ctrl-icon{filter:invert(1) hue-rotate(180deg)}
.jp .jp-tombol-teks{width:auto !important;padding:0 12px;font:inherit;font-weight:600;font-size:13px;color:var(--jp-teks)}
.jp .jp-tombol-teks[aria-pressed="true"]{background:var(--jp-aksen);color:#fff}
.jp .jp-bilah-alat{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end}
.jp .jp-bilah-alat .maplibregl-ctrl{margin:0;float:none}
.jp .jp-pemilih-dasar{display:flex}
.jp .jp-pemilih-dasar button + button{border-top:0;border-left:1px solid var(--jp-garis)}
.jp .maplibregl-ctrl-attrib{background:var(--jp-kartu);color:var(--jp-teks);font-size:11.5px;line-height:1.35;max-width:min(520px,calc(100cqw - 20px));border-radius:6px 0 0 0;padding:2px 6px}
.jp .maplibregl-ctrl-attrib a{color:var(--jp-aksen)}
/* Keterangan sumber tetap tampil (syarat penyedia peta dasar dan data), tetapi
   diringkas menjadi satu baris; klik untuk membuka atau menutup teks lengkap. */
.jp .jp-atribusi-alih{float:left;margin:0 6px 0 0;padding:0;border:0;background:none;font:inherit;font-weight:700;
  color:var(--jp-aksen);cursor:pointer}
.jp .jp-atribusi-alih::after{content:" \25B4"}
.jp .maplibregl-ctrl-attrib.jp-atribusi-ringkas .jp-atribusi-alih::after{content:" \25BE"}
.jp .maplibregl-ctrl-attrib .maplibregl-ctrl-attrib-inner{overflow:hidden;cursor:pointer}
.jp .maplibregl-ctrl-attrib.jp-atribusi-ringkas{max-width:min(380px,calc(100cqw - 20px));font-size:10.5px}
.jp .maplibregl-ctrl-attrib.jp-atribusi-ringkas .maplibregl-ctrl-attrib-inner{white-space:nowrap;text-overflow:ellipsis}
.jp .maplibregl-ctrl-scale{background:var(--jp-kartu);color:var(--jp-teks);border-color:var(--jp-teks)}
/* Popup di atas panel melayang (hamparan z-index 2), agar tidak tertutup legenda atau kotak cari. */
.jp .maplibregl-popup{z-index:3}
/* Yang digulir isi .jp-popup, bukan kotak popup, sehingga tombol tutup (anak kotak)
   tetap di tempat. Tingginya ditulis utama.js (--jp-popup-tinggi). */
.jp .maplibregl-popup-content{background:var(--jp-kartu);color:var(--jp-teks);border:1px solid var(--jp-garis);border-radius:10px;
  box-shadow:var(--jp-bayang);padding:12px 14px;font-size:13px}
.jp .jp-popup{max-height:var(--jp-popup-tinggi, calc(55vh - 38px));overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
/* Kepala popup fitur (nama lapisan, nama, pegangan seret) tetap tampak saat isi digulir. */
.jp .jp-popup > .jp-popup-pegangan{position:sticky;top:0;z-index:1;background:var(--jp-kartu)}
/* z-index di atas kepala popup yang menempel (z-index 1), agar tombol tutup tidak tertutup. */
.jp .maplibregl-popup-close-button{z-index:2;width:32px;height:32px;font-size:20px;color:var(--jp-redup)}
.jp .maplibregl-popup-anchor-bottom .maplibregl-popup-tip{border-top-color:var(--jp-kartu)}
.jp .maplibregl-popup-anchor-top .maplibregl-popup-tip{border-bottom-color:var(--jp-kartu)}
.jp .maplibregl-popup-anchor-left .maplibregl-popup-tip{border-right-color:var(--jp-kartu)}
.jp .maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:var(--jp-kartu)}
.jp-popup-judul{display:block;margin:0 24px 6px 0;color:var(--jp-judul);font-size:16px}
/* Kepala popup menjadi pegangan untuk menggeser popup. Sesudah digeser,
   ujung penunjuk disembunyikan karena tidak lagi menunjuk titik asal. */
.jp-popup-pegangan{cursor:move;touch-action:none;user-select:none;-webkit-user-select:none}
.jp-popup-pegangan::after{content:"";display:block;width:28px;height:3px;margin:2px 0 6px;border-radius:2px;background:var(--jp-garis)}
.jp .jp-popup-digeser .maplibregl-popup-tip{display:none}
.jp-penanda{display:flex;flex-direction:column;gap:6px;font-size:13px}

/* Portal: bilah navigasi kaca melayang di tengah atas. Bila peta kurang
   lebar, panel turun ke bawah bilah itu. */
@container jp (max-width: 1099px){
  .jp-portal .jp-hamparan{top:124px}
}
/* Peta sempit (ponsel): panel bertumpuk selebar peta dan terlipat saat dibuka.
   utama.js membiarkan satu panel terbuka; panel terlipat tinggal kepalanya.
   Hanya kolom yang memuat panel terbuka yang menyusut, sehingga panel itu
   digulir di dalam dan kepala panel lain tidak terpotong atau tertimpa. */
@container jp (max-width: 679px){
  /* Batas bawah panel di atas tumpukan bawah (atribusi, perbesaran, bilah alat, lalu
     pemindah GeoLibre di portal; alat.css dan .jg-portal .jg-alat), mengikuti tinggi
     atribusi. Portal: hamparan mulai 124 px dari atas, di bawah pil navigasi. */
  .jp-hamparan{flex-direction:column-reverse;justify-content:flex-end;bottom:auto;max-height:calc(100% - 175px - var(--jp-tinggi-atribusi, 18px))}
  .jp-portal .jp-hamparan{max-height:calc(100% - 287px - var(--jp-tinggi-atribusi, 18px))}
  .jg-portal:has(.jg-pilih) .jp-portal .jp-hamparan{max-height:calc(100% - 330px - var(--jp-tinggi-atribusi, 18px))}
  /* Selama baris kabar alat tampil (pemindah GeoLibre disembunyikan), panel memberi ruang satu baris kabar. */
  .jp:has(> .jp-alat-bawah > .jp-alat-kabar:not(:empty)) > .jp-hamparan{max-height:calc(100% - 205px - var(--jp-tinggi-atribusi, 18px))}
  .jp-portal:has(> .jp-alat-bawah > .jp-alat-kabar:not(:empty)) > .jp-hamparan{max-height:calc(100% - 317px - var(--jp-tinggi-atribusi, 18px))}
  .jp-kiri,.jp-kanan{width:100%;max-height:none}
  /* Kotak cari 44 px, jarak 8 px, dan kepala legenda 44 px selalu muat. */
  .jp-kanan{flex:0 1 auto;min-height:96px}
  .jp-cari{flex:none}
  .jp-kanan:has(> #jp-legenda.terlipat){flex:none}
  .jp-kiri:not(:has(> .jp-rincian:not([hidden]):not(.terlipat))):not(:has(> #jp-analitik:not(.terlipat))){flex:none}
  .jp-legenda-isi{max-height:40vh}
  .jp-panel#jp-analitik .jp-panel-isi{max-height:45vh}
  .jp-panel#jp-analitik:not(.terlipat){min-height:120px}
  .jp-kiri:has(.jp-panel#jp-analitik:not(.terlipat)) .jp-rincian:not([hidden]):not(.terlipat){min-height:120px}
  .jp-rincian{max-height:40vh}
  .jp-rincian-kepala{padding:6px 4px 6px 14px}
  /* Target sentuh minimal 44 px. Tombol info legenda tetap 28 px, bidang sentuhnya diperluas. */
  .jp-tutup,.jp-lipat{width:44px;height:44px}
  .jp .maplibregl-popup-close-button{width:44px;height:44px}
  .jp-popup-judul{margin-right:34px}
  .jp-ket-info summary{min-height:44px}
  .jp-tautan-di{display:inline-flex;align-items:center;min-height:44px}
  .jp-tombol-kecil{min-height:44px}
  .jp-tabel th button{min-height:44px}
  .jp-butir{min-height:44px;align-items:center}
  .jp-butir input{margin-top:0}
  .jp-info{position:relative}
  .jp-info::before{content:"";position:absolute;inset:-8px}
  /* Kendali peta (perbesaran, Jalan dan Satelit, layar penuh) 44 px. Jarak perbesaran
     ke atribusi 6 px, agar tumpukan bawah tidak terlalu tinggi. */
  .jp .maplibregl-ctrl-group button{width:44px;height:44px}
  .jp .maplibregl-ctrl-bottom-right .maplibregl-ctrl-group{margin-bottom:6px}
  /* Atribusi berbantalan 6 px; bidang sentuh tombol Sumber diperluas sampai 44 px
     (::after sudah dipakai segitiga), tanpa menindih bilah kiri bawah yang naik 8 px. */
  .jp .maplibregl-ctrl-attrib{font-size:11px;padding:6px}
  .jp .jp-atribusi-alih{position:relative}
  .jp .jp-atribusi-alih::before{content:"";position:absolute;inset:-24px -8px -6px}
  .jp .maplibregl-ctrl-bottom-left{bottom:calc(var(--jp-tinggi-atribusi, 0px) + 8px)}
}

/* Lembar cetak (KP M2-6). Tersembunyi di layar; saat mencetak hanya lembar ini yang tampil. */
.jp-cetak{display:none}
@media print{
  @page{size:A4 landscape;margin:10mm}
  html.jp-mencetak body > *:not(#jp-cetak){display:none !important}
  html.jp-mencetak body{background:#fff !important;padding:0 !important;margin:0}
  html.jp-mencetak #jp-cetak{display:block !important;color:#111827;font-family:'Work Sans',system-ui,sans-serif;font-size:10pt}
  .jp-cetak-kepala h1{margin:0;font-size:16pt;color:#0C447C}
  .jp-cetak-kepala p{margin:2px 0 6px;color:#334155}
  .jp-cetak-peta{position:relative;border:1px solid #64748b}
  .jp-cetak-peta img{display:block;width:100%;max-height:120mm;object-fit:contain}
  .jp-cetak-utara{position:absolute;top:6px;right:8px;display:flex;flex-direction:column;align-items:center;background:#fff;
    border:1px solid #64748b;border-radius:4px;padding:2px 6px;line-height:1}
  .jp-cetak-utara span{display:block;font-size:14pt}
  .jp-cetak-skala{position:absolute;left:8px;right:8px;bottom:6px}
  .jp-cetak-batang{display:block;height:6px;border:1px solid #111827;border-top:0;background:repeating-linear-gradient(to right,#111827 0 50%,#fff 50% 100%)}
  .jp-cetak-skala-teks{display:inline-block;margin-top:2px;background:#fff;padding:0 4px;font-size:9pt}
  .jp-cetak-bawah{display:grid;grid-template-columns:3fr 2fr;gap:10mm;margin-top:4mm}
  .jp-cetak-bawah h2{margin:0 0 2mm;font-size:11pt;color:#0C447C}
  .jp-cetak-bawah p{margin:0 0 1.5mm}
  .jp-cetak-legenda > ul{list-style:none;margin:0;padding:0;columns:2;column-gap:6mm}
  .jp-cetak-legenda > ul > li{display:flex;gap:6px;break-inside:avoid;margin-bottom:2mm}
  .jp-cetak-legenda .jp-redup{display:block;color:#475569;font-size:8.5pt}
  .jp-cetak .jp-tanda,.jp-cetak .jp-kelas i{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .jp-cetak .jp-kelas{list-style:none;margin:1mm 0;padding:0}
  .jp-cetak .jp-kelas li{display:flex;align-items:center;gap:4px}
  .jp-cetak .jp-kelas i{display:inline-block;width:9px;height:9px;border:1px solid #475569}
  .jp-cetak .jp-lencana-basi{margin:1mm 0 0;padding:1mm 2mm;border-color:#475569;background:#fff;color:#111827;font-size:8.5pt}
}
