/* Teknol: tata letak v3. Dimuat setelah teknol.css.
   - Beranda: hero + grid kartu stasiun.
   - Halaman stasiun: info lengket di kiri, daftar materi di kanan.
   - Halaman materi: "mode fokus" (kepala ringkas + progres), laci daftar isi (samping di desktop, geser di HP). */

.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.eyebrow{font-size:13.5px;font-weight:700;color:var(--st);margin:0}
.metarow{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:14.5px;color:var(--muted);margin:0}
.metarow>span:not(.badge-kecil)+span:not(.badge-kecil)::before{content:"·";margin-right:14px;color:var(--line)}
.badge-kecil{font-size:12px;font-weight:700;border:1.5px solid var(--accent);color:var(--ink);background:color-mix(in srgb,var(--accent) 18%,transparent);border-radius:999px;padding:0 9px;white-space:nowrap}
.kecil-h{font-family:var(--font-body);font-size:14px;font-weight:700;color:var(--muted);margin:0 0 6px}
.topbar nav a[aria-current="page"]{font-weight:700}
.kembali-st{font-size:14.5px;color:var(--muted);text-decoration:none;width:fit-content}
.kembali-st:hover{color:var(--ink);text-decoration:underline}

/* ================= BERANDA ================= */
main>.jalur{max-width:1120px;margin-inline:auto;padding-inline:16px}
main>.hero{max-width:1120px}
.hero{padding-block:24px 40px}
@media (min-width:860px){.hero{padding-block:48px 64px}}
.lanjut-info{font-size:14.5px;color:var(--muted);margin:12px 0 0}
.jalur{padding-bottom:24px;scroll-margin-top:16px}
.jalur-kepala{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 24px;margin-bottom:20px}
.jalur-kepala h2{font-size:1.75rem;font-weight:800}
.jalur-kepala p{margin:0;max-width:52ch}
.st-grid{list-style:none;margin:0;padding:0;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
.st-grid>li{display:flex}
.st-kartu{flex:1;display:flex;flex-direction:column;gap:8px;padding:20px 20px 18px;background:var(--surface);border:1.5px solid var(--line);border-radius:20px;color:var(--ink);text-decoration:none;transition:border-color .12s,transform .12s,box-shadow .12s}
.st-kartu:hover{border-color:var(--ink);transform:translateY(-2px);box-shadow:0 4px 0 var(--ink)}
.st-kartu h3{font-size:1.3rem;margin:2px 0 0}
.st-kartu p{margin:0;font-size:15px;line-height:1.5}
.st-atas{display:flex;align-items:center;gap:10px}
.st-atas .tag{margin-left:auto}
.st-lbl{font-size:13.5px;font-weight:700;color:var(--muted)}
.st-kartu .no,.st-hal .no{width:34px;height:34px;border-radius:50%;border:2.5px solid var(--ink);background:var(--accent);color:#0E1B33;font-family:var(--font-head);font-weight:800;font-size:1rem;display:grid;place-items:center;flex:none}
.st-proyek{font-size:14px!important;color:var(--ink)}
.st-proyek .tag{margin-right:4px}
.st-bawah{margin-top:auto;padding-top:10px;display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:center;font-size:13.5px;border-top:1px solid var(--line)}
.st-prog{grid-column:1/-1;height:6px;border-radius:999px;background:var(--line);overflow:hidden;display:none}
.st-prog i{display:block;height:100%;width:0;background:var(--ok);border-radius:999px}
.st-kartu.dimulai .st-prog{display:block}
.st-hit{grid-row:1;grid-column:2;font-weight:700}

/* ================= HALAMAN STASIUN ================= */
.st-hal{max-width:1120px;margin:0 auto;padding:16px 16px 24px;display:grid;gap:28px}
.st-info{display:grid;gap:12px;align-content:start}
.st-info h1{font-size:clamp(2rem,1.5rem + 2vw,2.8rem);margin:0}
.lead-s{font-size:1.08rem;margin:0;max-width:44ch}
.st-info .btn{width:fit-content;margin-top:4px}
.st-progres{display:grid;gap:6px;max-width:340px}
.st-progres .st-prog{display:block;height:8px}
.st-antar{display:flex;justify-content:space-between;gap:12px;margin-top:12px;padding-top:14px;border-top:1px solid var(--line);font-size:13.5px}
.st-antar a{color:var(--muted);text-decoration:none;display:grid;gap:0}
.st-antar a b{color:var(--ink);font-size:14.5px}
.st-antar a:hover b{text-decoration:underline}
.st-antar .kanan{text-align:right}
@media (min-width:900px){
  .st-hal{grid-template-columns:minmax(280px,360px) 1fr;gap:56px;padding-top:32px}
  .st-info{position:sticky;top:24px}
}
.st-list{list-style:none;margin:0;padding:0;display:grid;gap:8px;counter-reset:none}
.st-list a,.st-list .baris{display:grid;grid-template-columns:36px 1fr auto;gap:14px;align-items:center;padding:14px 16px;background:var(--surface);border:1.5px solid var(--line);border-radius:16px;color:var(--ink);text-decoration:none}
.st-list a:hover{border-color:var(--ink)}
.st-list .nr{width:32px;height:32px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-weight:700;font-size:14px;color:var(--muted);background:var(--bg)}
.st-list .isi{display:grid;gap:2px;min-width:0}
.st-list .t{font-weight:700;line-height:1.35}
.st-list .s{font-size:14px;color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.st-list .info{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;font-size:13.5px;white-space:nowrap}
.st-list li.selesai .nr{background:var(--ok);border-color:var(--ok);color:var(--surface);font-size:0}
.st-list li.selesai .nr::before{content:"✓";font-size:16px}
.st-list li.sedang .nr{border-color:var(--st);color:var(--st);background:var(--st-bg)}
.st-list li.kosong .baris{background:transparent;border-style:dashed;color:var(--muted)}
.st-list li.kosong .t{font-weight:400}
@media (max-width:560px){
  .st-list a,.st-list .baris{grid-template-columns:32px 1fr;gap:12px;padding:12px 14px}
  .st-list .info{grid-column:2;justify-content:flex-start}
}

/* ================= HALAMAN MATERI: MODE FOKUS ================= */
.fbar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.fbar-in{display:flex;align-items:center;gap:10px;padding:10px 16px;max-width:1240px;margin:0 auto}
.ikon{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:50%;border:2px solid transparent;background:none;color:var(--ink);cursor:pointer;padding:0}
.ikon:hover{border-color:var(--line);background:var(--surface)}
.ikon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}
.fjudul{flex:1;min-width:0;display:grid;line-height:1.25}
.fst{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fj{font-family:var(--font-head);font-weight:600;font-size:15.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fhit{font-size:13.5px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.fhit:empty{display:none}
#fmode .seg{border-width:1.5px}
#fmode .seg button{padding:5px 14px;font-size:13.5px}
.fprog{height:4px;background:var(--line)}
.fprog i{display:block;height:100%;width:0;background:var(--st);transition:width .25s}
@media (max-width:640px){
  .fbar-in{gap:6px;padding:8px 10px}
  .fst{display:none}
  .fj{font-size:14.5px}
  #fmode .seg button{padding:5px 10px;font-size:13px}
  .fbar .tema{width:32px;height:32px}
}
@media (max-width:420px){ .fjudul{visibility:hidden} .fhit{margin-left:auto} }

.lesson{max-width:1240px;margin:0 auto;padding:0 16px;display:grid;gap:0}
.lesson-main{min-width:0;width:100%;max-width:760px;margin:0 auto;padding:24px 0 48px;display:grid;gap:28px;align-content:start}
.lesson-main .ssr{display:grid;gap:32px}

/* laci: geser dari kiri di layar kecil */
.laci{position:fixed;z-index:30;top:0;bottom:0;left:0;width:min(86vw,320px);background:var(--surface);border-right:1px solid var(--line);transform:translateX(-102%);transition:transform .2s;overflow-y:auto;overscroll-behavior:contain}
.laci-buka .laci{transform:none;box-shadow:0 0 0 100vmax rgba(0,0,0,.0)}
.laci-tirai{position:fixed;inset:0;z-index:25;background:rgba(10,18,36,.45)}
.laci-in{padding:20px 16px 32px;display:grid;gap:28px}
.laci h2{font-family:var(--font-body);font-size:12.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px}
.laci ol{list-style:none;margin:0;padding:0;display:grid;gap:2px}
#daftar-kartu button{font:inherit;font-size:14.5px;text-align:left;width:100%;display:flex;gap:10px;align-items:baseline;padding:7px 10px;border:0;border-radius:10px;background:none;color:var(--ink);cursor:pointer;line-height:1.35}
#daftar-kartu{counter-reset:k}
#daftar-kartu button::before{content:"";flex:none;width:10px;height:10px;border-radius:50%;border:2px solid var(--line);transform:translateY(1px)}
#daftar-kartu li.beres button::before{background:var(--ok);border-color:var(--ok)}
#daftar-kartu li.kini button{background:var(--st-bg);font-weight:700}
#daftar-kartu li.kini button::before{border-color:var(--st);background:var(--st)}
#daftar-kartu li.opsi button{font-style:italic}
#daftar-kartu button:hover:not([disabled]){background:var(--bg)}
#daftar-kartu li.kini button:hover{background:var(--st-bg)}
#daftar-kartu button[disabled]{color:var(--muted);opacity:.6;cursor:not-allowed}
.laci-materi a,.laci-materi li>span{display:flex;gap:10px;align-items:baseline;padding:7px 10px;border-radius:10px;color:var(--ink);text-decoration:none;font-size:14.5px;line-height:1.35}
.laci-materi a:hover{background:var(--bg)}
.laci-materi li>span{color:var(--muted)}
.laci-materi .nr{flex:none;width:20px;font-size:12.5px;font-weight:700;color:var(--muted);text-align:right;font-variant-numeric:tabular-nums}
.laci-materi .t{flex:1}
.laci-materi .tag{font-size:11px}
.laci-materi li.kini a{background:var(--ink);color:var(--bg)}
.laci-materi li.kini .nr{color:inherit;opacity:.7}
.laci-materi li.selesai .nr{color:var(--ok);font-size:0}
.laci-materi li.selesai .nr::before{content:"✓";font-size:14px}
.laci-semua{display:inline-block;margin-top:12px;font-size:14px;color:var(--muted);text-decoration:none}
.laci-semua:hover{color:var(--ink);text-decoration:underline}

/* desktop: laci jadi kolom samping yang lengket; kolom baca tetap ±720px supaya nyaman dibaca */
@media (min-width:1100px){
  .laci-btn{display:none}
  .lesson{grid-template-columns:280px minmax(0,1fr);gap:48px}
  .laci{position:sticky;top:63px;height:calc(100vh - 63px);transform:none;width:auto;background:none;border:0;transition:none;z-index:auto}
  .laci-in{padding:28px 0 40px}
  .laci-tirai{display:none}
  .lesson-main{margin:0;padding-top:32px}
}
@media (min-width:1360px){ .lesson{grid-template-columns:300px minmax(0,760px) 1fr} }

/* kartu */
.deck{gap:16px}
.card{min-height:min(60vh,520px);gap:16px;padding:24px 20px}
@media (min-width:600px){.card{padding:34px 38px}}
.card-pembuka,.lesson-main .pembuka{display:grid;gap:18px;align-content:start}
.pembuka h1{font-size:clamp(2rem,1.4rem + 2.6vw,2.8rem);margin:0}
.pembuka .pre a,.pembuka .pre span{font-size:14px;padding:4px 12px}
.card-penutup h2{font-size:1.9rem}
.penutup{display:grid;gap:16px;align-content:start}
.lanjut-list{display:flex;flex-wrap:wrap;gap:10px}
.penutup details{margin-top:8px}
.penutup .meta{margin-top:8px}
/* tombol navigasi kartu menempel di bawah layar supaya tidak perlu menggulir mencari "Lanjut" */
.nav{position:sticky;bottom:0;z-index:5;padding:14px 0 calc(14px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 70%,transparent);justify-content:flex-end}
.nav .btn{min-width:120px;text-align:center}
.nav .btn.ghost{margin-right:auto}
.nav .btn:not(.ghost){margin-left:auto}
@media (max-width:560px){ .nav .btn{flex:1} .nav .btn.ghost{flex:0 0 auto;min-width:0} }

@media (prefers-reduced-motion:reduce){ .laci,.fprog i,.st-kartu{transition:none} .st-kartu:hover{transform:none} }
.topbar,.foot{max-width:1120px}
/* perbaikan setelah cek visual */
.st-list{align-content:start;align-self:start}
.card h2.kecil-h,.pembuka h2.kecil-h{font-family:var(--font-body);font-size:14px;font-weight:700;color:var(--muted);letter-spacing:0;margin:0 0 6px}
.card{min-height:min(48vh,380px)}
.jalur-kepala{display:grid;gap:4px}
.st-info .btn{display:grid;gap:2px;text-align:left;max-width:100%}
.st-info .btn small{font-weight:400;font-size:14px;line-height:1.35}
.st-kartu p.muted::first-letter,.lead-s::first-letter{text-transform:uppercase}
.penutup p.kecil-h{font-size:14px;font-weight:700;color:var(--muted);margin:0 0 6px}

/* ================= MEDIA & KENALI KOMPONEN ================= */
.media-grup{display:grid;gap:12px}
.media{margin:0;display:grid;gap:6px}
.media-svg{background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:6px;min-height:80px}
.card .media-svg{background:var(--bg)}
.media-svg svg{display:block;width:100%;height:auto}
.jenis-foto img{display:block;width:100%;height:auto;max-height:340px;object-fit:contain;border-radius:12px;background:#fff;border:1px solid var(--line)}
.media.kecil img{max-height:180px}
.jenis-video video{display:block;width:100%;max-width:520px;margin:0 auto;border-radius:14px;background:#0a1624;aspect-ratio:1}
.media figcaption{font-size:13.5px;font-weight:700;color:var(--muted)}
.atribusi{font-size:11.5px;color:var(--muted);margin:0;line-height:1.4}
.atribusi a{color:inherit}
.media-ph{display:grid;gap:2px;justify-items:start;padding:14px 16px;border:2px dashed var(--accent);border-radius:14px;background:color-mix(in srgb,var(--accent) 8%,transparent);font-size:13.5px;color:var(--muted)}
.media-ph b{color:var(--ink);font-size:13px}
.media-ph code{font-family:var(--font-mono);font-size:12.5px;color:var(--ink)}
.tap-media{display:grid;gap:12px}
.tap-media:empty{display:none}
.tap button.ada-media .nm2::after{content:" ▣";color:var(--st);font-size:.85em}
.ssr-media{max-width:100%;height:auto;border-radius:12px;background:var(--bg)}

/* istilah yang bisa diketuk */
.istilah{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;text-decoration:underline dotted;text-decoration-color:var(--st);text-decoration-thickness:2px;text-underline-offset:4px;display:inline}
.istilah:hover{color:var(--st)}
.istilah:focus-visible{outline:2px solid var(--st);outline-offset:2px;border-radius:3px}

/* dialog Kenali */
dialog.kenali{width:min(640px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid var(--line);border-radius:22px;background:var(--surface);color:var(--ink);box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:auto}
dialog.kenali::backdrop{background:rgba(10,18,36,.55)}
.kenali-kepala{position:sticky;top:0;z-index:1;display:grid;grid-template-columns:1fr auto;align-items:start;gap:0 12px;padding:18px 20px 12px;background:var(--surface);border-bottom:1px solid var(--line)}
.kenali-kepala .eyebrow{grid-column:1}
.kenali-kepala h2{grid-column:1;margin:0;font-size:1.6rem;font-weight:800}
.kenali-kepala .tutup{grid-column:2;grid-row:1/3}
.kenali-isi{padding:16px 20px 22px;display:grid;gap:14px}
.kenali-ringkas{font-size:1.08rem;margin:0}
.kenali-foto{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.kenali-dl{display:grid;gap:2px 0;margin:0}
.kenali-dl dt{font-size:13.5px;font-weight:700;color:var(--muted);margin-top:8px}
.kenali-dl dd{margin:0}
.kenali-kaki{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;padding-top:4px}
.kenali-semua{font-size:14.5px;color:var(--muted)}
@media (max-width:560px){ dialog.kenali{width:100vw;max-width:100vw;max-height:92dvh;margin:auto 0 0;border-radius:22px 22px 0 0} }

/* halaman /kenali/ */
.kn-hal{max-width:1120px;margin:0 auto;padding:16px 16px 24px;display:grid;gap:24px}
.kn-hal>header{display:grid;gap:8px;max-width:62ch}
.kn-hal h1{font-size:clamp(2rem,1.5rem + 2vw,2.8rem);margin:0}
.kn-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,500px),1fr))}
.kn-kartu{background:var(--surface);border:1.5px solid var(--line);border-radius:20px;padding:18px 20px;display:grid;gap:12px;align-content:start;scroll-margin-top:16px}
.kn-kartu:target{border-color:var(--st);box-shadow:0 0 0 3px var(--st-bg)}
.kn-kartu h2{margin:0;font-size:1.4rem;font-weight:800}
.kn-kartu p{margin:0}
.kn-kartu .kn-foto{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.kn-kartu .kn-foto img{width:100%;height:150px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:12px}
.kn-atribusi{font-size:13px;color:var(--muted)}
.kn-atribusi li{margin:2px 0}
@media (max-width:420px){.topbar nav{gap:12px;font-size:14px}.topbar .logo{font-size:1.4rem}}

/* rujukan ke materi lain di dalam teks */
.rujukan{color:inherit;text-decoration:underline;text-decoration-color:var(--line);text-decoration-thickness:2px;text-underline-offset:3px}
.rujukan:hover{text-decoration-color:var(--st);color:var(--st)}
