:root{--latar:#fafaf9;--tinta:#1c1917;--abu:#57534e;--garis:#d6d3d1;--kertas:#ffffff;
--merah:#dc2626;--biru:#2563eb;--hijau:#16a34a;--kuning:#eab308;--r:6px;--tebal:4px;
--judul:"Archivo Black","Arial Black",system-ui,sans-serif;--teks:"Public Sans",system-ui,-apple-system,"Segoe UI",sans-serif}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--latar);color:var(--tinta);font-family:var(--teks);font-size:17px;line-height:1.65;overflow-wrap:break-word}
img{max-width:100%;height:auto;display:block}
a{color:#1d4ed8;text-underline-offset:3px}
a:hover{color:var(--tinta)}
.lompat{position:absolute;left:-999px;top:0;background:var(--tinta);color:#fff;padding:10px 14px;border-radius:var(--r)}
.lompat:focus{left:8px;z-index:9}
h1,h2,h3,.kaki-judul{font-family:var(--judul);font-weight:400;line-height:1.2;letter-spacing:.005em}
h1{font-size:clamp(1.6rem,4.8vw,2.55rem);margin:.4em 0 .3em}
h2{font-size:clamp(1.25rem,3.4vw,1.6rem)}
h3{font-size:1.08rem;margin:1.2em 0 .4em}
/* kepala */
.kepala{background:var(--kertas);border-bottom:var(--tebal) solid var(--tinta)}
.kepala-dalam{max-width:1120px;margin:0 auto;padding:10px 16px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 18px}
.merek{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--tinta);min-height:44px}
.merek-teks{font-family:var(--judul);font-size:1.2rem;line-height:1.1}
.merek-teks small{display:block;font-family:var(--teks);font-size:.78rem;color:var(--abu);letter-spacing:.02em}
.menu ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.menu a{display:flex;align-items:center;gap:7px;min-height:40px;padding:6px 12px;border:2px solid var(--garis);border-radius:999px;text-decoration:none;color:var(--tinta);font-weight:600;font-size:.94rem;background:var(--latar)}
.menu a .titik{width:14px;height:14px;border-radius:50%;background:#fff;border:4px solid var(--jalur)}
.menu a.kini,.menu a:hover{border-color:var(--jalur)}
/* isi */
.isi{max-width:1120px;margin:0 auto;padding:0 16px 40px}
.halaman .isi>*{max-width:760px;margin-left:auto;margin-right:auto}
.pembuka{padding-top:18px}
.meta-halaman{color:var(--abu);font-size:.9rem;margin:0 0 1em}
.lede{font-size:1.1rem}
/* potongan peta */
.potongan{background:var(--kertas);border:2px solid var(--garis);border-radius:var(--r);padding:12px 12px 8px;margin:0 0 14px}
.potongan-nama{margin:0 0 8px;font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--abu);display:flex;align-items:center;gap:8px}
.rel{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--n),1fr);position:relative}
.rel::before{content:"";position:absolute;left:12%;right:12%;top:15px;height:var(--tebal);background:var(--jalur);border-radius:2px}
.rel li{position:relative;text-align:center}
.rel a{display:flex;flex-direction:column;align-items:center;gap:4px;text-decoration:none;color:var(--tinta);min-height:48px;padding:0 2px}
.rel .bulat{width:34px;height:34px;border-radius:50%;background:#fff;border:var(--tebal) solid var(--jalur);display:grid;place-items:center;font-weight:700;font-size:.85rem;position:relative}
.rel .label{font-size:.8rem;line-height:1.25}
.rel li.aktif .bulat{background:var(--jalur);color:#fff;box-shadow:0 0 0 4px #fff,0 0 0 7px var(--tinta)}
.rel li.aktif .label{font-weight:700}
.simpang-daftar{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.simpang-daftar li{display:flex;align-items:center;gap:8px}
.simpang-garis{flex:0 0 22px;height:var(--tebal);background:var(--jalur);border-radius:2px}
.simpang-daftar a{display:flex;align-items:center;gap:8px;min-height:40px;text-decoration:none;color:var(--tinta);font-size:.9rem;line-height:1.3}
.simpang-kode{flex:0 0 28px;height:28px;border-radius:50%;border:var(--tebal) solid var(--jalur);display:grid;place-items:center;font-weight:700;font-size:.8rem;background:#fff}
.roundel-mini{width:16px;height:16px;border-radius:50%;border:4px solid var(--tinta);background:#fff}
.remah ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px;font-size:.88rem;color:var(--abu)}
.remah li+li::before{content:"›";margin-right:4px}
.remah a{display:inline-block;padding:4px 0}
/* rambu risiko */
.rambu{border:var(--tebal) solid var(--tinta);border-left-width:14px;border-left-color:var(--merah);background:#fff;border-radius:var(--r);padding:12px 16px;margin:18px auto 22px;font-size:.93rem}
.rambu p{margin:.2em 0}
.rambu-judul{font-family:var(--judul);font-size:1rem}
/* halte = subjudul bernomor */
.halte{position:relative;margin:34px auto 0;padding-left:52px}
.halte::before{content:"";position:absolute;left:17px;top:40px;bottom:-26px;width:var(--tebal);background:var(--jalur);opacity:.35;border-radius:2px}
.halte:last-of-type::before{display:none}
.halte h2{margin:0 0 .5em;display:block}
.halte-no{position:absolute;left:0;top:-2px;width:38px;height:38px;border-radius:50%;background:#fff;border:var(--tebal) solid var(--jalur);display:grid;place-items:center;font-family:var(--teks);font-weight:700;font-size:1rem}
.halte-isi>:first-child{margin-top:0}
.foto{margin:22px auto}
.foto img{border-radius:var(--r);border:var(--tebal) solid var(--tinta)}
.foto figcaption{font-size:.86rem;color:var(--abu);margin-top:6px}
.catatan{font-size:.92rem;background:#f5f5f4;border-left:var(--tebal) solid var(--kuning);padding:10px 14px;border-radius:0 var(--r) var(--r) 0}
.karcis{border:2px dashed var(--tinta);border-radius:var(--r);background:#fff;padding:12px 16px;margin:18px 0}
.karcis-label{margin:0;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--merah)}
.karcis-judul{margin:.2em 0 .5em;font-weight:700}
.tabel-bungkus{overflow-x:auto;margin:16px 0;border:2px solid var(--tinta);border-radius:var(--r);background:#fff}
.tabel{border-collapse:collapse;width:100%;font-size:.92rem}
.tabel caption{text-align:left;font-weight:700;padding:10px 12px 4px;font-size:.9rem}
.tabel th{background:var(--tinta);color:#fff;text-align:left;padding:8px 10px;font-weight:600}
.tabel td{padding:8px 10px;border-top:1px solid var(--garis);vertical-align:top}
.tabel tbody tr:nth-child(even){background:#fafaf9}
.tanya{border:2px solid var(--garis);border-radius:var(--r);background:#fff;margin:10px 0;padding:0 14px}
.tanya summary{cursor:pointer;list-style:none;padding:10px 0;min-height:44px;display:flex;align-items:center}
.tanya summary::-webkit-details-marker{display:none}
.tanya summary h3{margin:0;font-size:1rem;flex:1}
.tanya summary::after{content:"+";font-weight:700;font-size:1.3rem;margin-left:10px;width:30px;height:30px;border-radius:50%;border:3px solid var(--jalur);display:grid;place-items:center;flex:0 0 30px}
.tanya[open] summary::after{content:"–"}
.tanya>div{padding-bottom:10px}
.daftar-cek{list-style:none;padding:0}
.daftar-cek li{padding:6px 0 6px 34px;position:relative;border-bottom:1px dashed var(--garis)}
.daftar-cek li::before{content:"";position:absolute;left:4px;top:11px;width:16px;height:16px;border-radius:50%;border:4px solid var(--jalur);background:#fff}
/* navigasi antarstasiun */
.peron-lanjut{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:40px!important}
.naik{display:flex;align-items:center;gap:10px;padding:12px;border:var(--tebal) solid var(--tinta);border-radius:var(--r);background:#fff;text-decoration:none;color:var(--tinta);font-size:.88rem;line-height:1.3;min-height:64px}
.naik.maju{justify-content:flex-end;text-align:right;grid-column:2}
.naik strong{font-size:.98rem}
.tombol-bulat{flex:0 0 40px;height:40px;border-radius:50%;border:var(--tebal) solid var(--jalur);background:#fff;display:grid;place-items:center;font-weight:700;font-size:1.1rem}
/* kaki */
.kaki{background:var(--tinta);color:#e7e5e4;margin-top:30px;border-top:10px solid var(--kuning)}
.kaki-dalam{max-width:1120px;margin:0 auto;padding:26px 16px 30px}
.kaki-judul{color:#fff;font-size:1.3rem;margin:0 0 8px}
.kaki a{color:#fff}
.kaki-pusat a{display:inline-block;padding:6px 0}
.kaki-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin:14px 0}
.kaki-kolom{border-top:var(--tebal) solid var(--jalur);padding-top:8px}
.kaki-kolom[style*="#1c1917"]{border-top-color:#a8a29e}
.kaki-jalur{margin:0 0 6px;font-weight:700}
.kaki-jalur span{font-weight:400;color:#d6d3d1;font-size:.88rem}
.kaki ul{list-style:none;margin:0;padding:0}
.kaki li a{display:inline-block;padding:7px 0;font-size:.93rem}
.kaki-catatan{font-size:.86rem;color:#d6d3d1;margin:.5em 0}
/* beranda */
.peta-kepala{display:grid;gap:20px;padding-top:20px;align-items:start}
.peta-kepala .lede{max-width:40em}
.peta-bingkai{background:#fff;border:var(--tebal) solid var(--tinta);border-radius:var(--r);padding:8px}
.peta-svg{width:100%;height:auto;display:block}
.peta-svg a:focus-visible circle,.peta-svg a:hover circle{stroke-width:7}
.peta-svg text{font-family:var(--teks);font-size:15px;font-weight:600;fill:var(--tinta);paint-order:stroke;stroke:#fff;stroke-width:5px;stroke-linejoin:round}
.peta-svg .t-hub{font-family:var(--judul);font-size:15px;font-weight:400}
.legenda{list-style:none;padding:0;margin:12px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;font-size:.9rem}
.legenda li{display:flex;align-items:center;gap:8px}
.legenda i{flex:0 0 28px;height:var(--tebal);background:var(--jalur);border-radius:2px}
.blok{margin:44px 0 0}
.blok>h2{display:flex;align-items:center;gap:12px}
.blok>h2::before{content:"";flex:0 0 26px;height:26px;border-radius:50%;border:var(--tebal) solid var(--tinta);background:#fff}
.papan{background:#1c1917;color:#fafaf9;border-radius:var(--r);padding:6px;border:var(--tebal) solid #1c1917}
.papan-baris{display:grid;grid-template-columns:52px 1fr;gap:4px 12px;padding:12px 10px;border-bottom:1px solid #44403c;align-items:start}
.papan-baris:last-child{border-bottom:0}
.papan-kode{width:44px;height:44px;border-radius:50%;background:var(--jalur);color:#fff;display:grid;place-items:center;font-family:var(--judul);font-size:1rem;border:3px solid #fafaf9}
.papan-baris[style*="#eab308"] .papan-kode{color:#1c1917}
.papan-tujuan{margin:0;font-weight:700}
.papan-tujuan a{color:#fff}
.papan-baris p{margin:.2em 0}
.papan-ket{color:#d6d3d1;font-size:.93rem}
.papan-henti{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;list-style:none;padding:0}
.papan-henti a{display:inline-block;padding:5px 10px;border-radius:999px;border:2px solid var(--jalur);color:#fff;text-decoration:none;font-size:.86rem;min-height:32px}
.rute{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.rute-kartu{background:#fff;border:var(--tebal) solid var(--tinta);border-radius:var(--r);padding:14px 16px}
.rute-kartu h3{margin:0 0 .3em}
.rute-kartu ol{list-style:none;margin:10px 0 0;padding:0;position:relative}
.rute-kartu ol::before{content:"";position:absolute;left:11px;top:12px;bottom:12px;width:var(--tebal);background:var(--garis)}
.rute-kartu li{position:relative;padding:4px 0 8px 36px}
.rute-kartu li::before{content:"";position:absolute;left:3px;top:8px;width:20px;height:20px;border-radius:50%;border:var(--tebal) solid var(--jalur);background:#fff}
.rute-kartu li a{font-weight:700}
.pindah{font-size:.82rem;color:var(--abu);display:block}
.aturan{counter-reset:aturan;list-style:none;padding:0;display:grid;gap:10px}
.aturan li{counter-increment:aturan;position:relative;padding:12px 14px 12px 60px;background:#fff;border:2px solid var(--garis);border-radius:var(--r)}
.aturan li::before{content:counter(aturan);position:absolute;left:12px;top:10px;width:34px;height:34px;border-radius:50%;border:var(--tebal) solid var(--tinta);display:grid;place-items:center;font-weight:700}
.dua-kolom{display:grid;gap:18px}
@media (min-width:880px){
 .peta-kepala{grid-template-columns:1fr 1.1fr}
 .dua-kolom{grid-template-columns:1.2fr 1fr;align-items:center}
 body{font-size:18px}
}
@media (max-width:520px){
 .simpang-daftar{grid-template-columns:1fr}
 .peron-lanjut{grid-template-columns:1fr}
 .naik.maju{grid-column:1}
 .halte{padding-left:46px}
 .halte-no{width:34px;height:34px;font-size:.92rem}
 .halte::before{left:15px}
 .legenda{grid-template-columns:1fr}
 .rel .label{font-size:.75rem}
}