:root{
  --navy:#1A1B35; --navy-deep:#101124; --navy-soft:#23254a;
  --turqoise:#39c2f2; --tosca:#259cbb;
  --text:#F9F9F9; --muted:rgba(249,249,249,.62); --faint:rgba(249,249,249,.38);
  --glass:rgba(255,255,255,.045); --stroke:rgba(255,255,255,.10);
  --hijau:#5ec8a0; --kuning:#f0b45e; --merah:#ef7d8e;
  --r:18px; --r-sm:12px;
  /* Huruf bawaan perangkat saja — supaya aplikasi tampil utuh tanpa internet. */
  --head:ui-serif,'Iowan Old Style','Palatino Linotype',Palatino,Georgia,'Times New Roman',serif;
  --body:-apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,'Segoe UI',Roboto,Arial,sans-serif;
}
*{box-sizing:border-box}
/* Warna dasar dipasang pada html juga: gradasi yang dipaku ke layar tidak
   mewarnai bagian halaman yang panjangnya melebihi satu layar. */
html{background:#101124}
html,body{margin:0;padding:0;min-height:100%}
body{
  background:radial-gradient(120% 78% at 50% -8%,#23254a 0%,#1A1B35 46%,#101124 100%);
  background-attachment:fixed;color:var(--text);font-family:var(--body);
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;
  -webkit-text-size-adjust:100%;
}
/* 100vh ditulis lebih dulu sebagai cadangan: peramban lama tidak mengenal
   dvh dan akan melewatinya, bukan gagal. */
#app{max-width:430px;margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;
  padding:max(28px,env(safe-area-inset-top)) 22px max(28px,env(safe-area-inset-bottom))}
.tumbuh{flex:1}
h1,h2{font-family:var(--head);font-weight:900;letter-spacing:-.02em;line-height:1.12;margin:0}
h1{font-size:29px}h2{font-size:22px}
p{margin:0 0 14px}
.eyebrow{font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--faint);margin:0 0 9px}
.muted{color:var(--muted)}.faint{color:var(--faint)}
.kecil{font-size:12.5px;line-height:1.55}
.glass{background:var(--glass);border:1px solid var(--stroke);border-radius:var(--r);padding:16px 17px;
  backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%)}
.tombol,.tombol-hantu{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;
  min-height:52px;border-radius:var(--r-sm);font-family:inherit;font-weight:700;font-size:15px;
  border:none;cursor:pointer;padding:12px 18px;text-align:center}
.tombol{background:linear-gradient(135deg,var(--turqoise),var(--tosca));color:var(--navy-deep)}
.tombol-hantu{background:var(--glass);border:1px solid rgba(255,255,255,.14);color:var(--text)}
.tombol:disabled,.tombol-hantu:disabled{opacity:.42;cursor:not-allowed}
.tombol:active:not(:disabled),.tombol-hantu:active:not(:disabled){transform:translateY(1px)}
label{display:block;font-size:11.5px;font-weight:700;letter-spacing:.04em;color:var(--muted);margin:0 0 7px}
input,select{width:100%;min-height:52px;border-radius:var(--r-sm);background:rgba(255,255,255,.05);
  border:1px solid rgba(255,255,255,.12);color:var(--text);font-size:16px;padding:12px 15px;
  font-family:inherit;appearance:none}
input:focus,select:focus,.tombol:focus-visible,.tombol-hantu:focus-visible,button:focus-visible,a:focus-visible{
  outline:2px solid var(--turqoise);outline-offset:2px}
select{background-image:linear-gradient(45deg,transparent 50%,var(--turqoise) 50%),linear-gradient(135deg,var(--turqoise) 50%,transparent 50%);
  background-position:calc(100% - 20px) 24px,calc(100% - 14px) 24px;background-size:6px 6px;background-repeat:no-repeat}
.baris{display:flex;gap:10px}
.tumpuk{display:flex;flex-direction:column;gap:18px}
.langkah{display:flex;gap:5px;margin:0 0 24px}
.langkah i{height:3px;flex:1;border-radius:2px;background:rgba(255,255,255,.12)}
.langkah i.on{background:var(--turqoise)}
.kode{font-family:ui-monospace,'SF Mono',Menlo,Consolas,monospace;font-size:19px;letter-spacing:.14em;
  font-weight:600;color:var(--turqoise);line-height:1.95;text-align:center;word-break:break-all}
.pilih{display:flex;gap:14px;align-items:flex-start;width:100%;text-align:left;cursor:pointer;
  background:var(--glass);border:1px solid var(--stroke);border-radius:var(--r);padding:17px;color:inherit;font:inherit}
.pilih[aria-pressed="true"]{border-color:var(--turqoise);background:rgba(57,194,242,.10)}
.radio{width:20px;height:20px;border-radius:50%;flex:0 0 auto;margin-top:2px;border:2px solid rgba(255,255,255,.28);
  display:flex;align-items:center;justify-content:center}
.pilih[aria-pressed="true"] .radio{border-color:var(--turqoise)}
.pilih[aria-pressed="true"] .radio::after{content:'';width:9px;height:9px;border-radius:50%;background:var(--turqoise)}
.centang{display:flex;gap:11px;align-items:flex-start;cursor:pointer;background:none;border:none;
  color:inherit;font:inherit;text-align:left;padding:0;width:100%}
.kotak{width:22px;height:22px;border-radius:6px;flex:0 0 auto;margin-top:1px;
  border:2px solid rgba(255,255,255,.28);display:flex;align-items:center;justify-content:center}
.centang[aria-pressed="true"] .kotak{background:var(--turqoise);border-color:var(--turqoise)}
.centang[aria-pressed="true"] .kotak::after{content:'';width:11px;height:6px;border-left:2.6px solid var(--navy-deep);
  border-bottom:2.6px solid var(--navy-deep);transform:rotate(-45deg) translate(1px,-2px)}
.pesan{border-radius:var(--r-sm);padding:12px 14px;font-size:13px;line-height:1.5;margin:0 0 14px}
.pesan.salah{background:rgba(239,125,142,.13);border:1px solid rgba(239,125,142,.34);color:#ffc4cc}
.pesan.baik{background:rgba(94,200,160,.12);border:1px solid rgba(94,200,160,.32);color:#a9e7cf}
.pesan.ingat{background:rgba(240,180,94,.10);border:1px solid rgba(240,180,94,.32);color:#f6d9a8}
.status{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:11px 0;border-bottom:1px solid rgba(255,255,255,.07);font-size:13.5px}
.status:last-child{border-bottom:none}
.status b{font-weight:700}
.titik{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle}
.sibuk{display:flex;align-items:center;justify-content:center;gap:11px;padding:40px 0;color:var(--muted);font-size:14px}
.putar{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.18);
  border-top-color:var(--turqoise);animation:putar .8s linear infinite}
@keyframes putar{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.putar{animation-duration:2.4s}*{transition:none!important}}
a{color:var(--turqoise)}
.link{background:none;border:none;color:var(--turqoise);font:inherit;font-size:13px;cursor:pointer;
  padding:8px 4px;text-decoration:underline;text-underline-offset:3px}

/* ---------- kolom kata sandi yang bisa dilihat ---------- */
.kolom-sandi{position:relative;display:block}
.kolom-sandi input{padding-right:104px}
.mata{position:absolute;top:50%;right:6px;transform:translateY(-50%);min-height:40px;
  padding:0 14px;border-radius:9px;background:rgba(255,255,255,.07);
  border:1px solid rgba(255,255,255,.14);color:var(--muted);font:inherit;
  font-size:13px;font-weight:700;cursor:pointer}
.mata:active{background:rgba(255,255,255,.13)}
label .hitung{float:right;font-weight:600;letter-spacing:0;text-transform:none;color:var(--faint)}

/* ---------- layar pemeriksaan ---------- */
.baris-periksa{display:flex;justify-content:space-between;gap:16px;padding:9px 0;
  border-bottom:1px solid rgba(255,255,255,.07)}
.baris-periksa:last-child{border-bottom:0}
.baris-periksa span:last-child{text-align:right;font-weight:600}

/* ---------- pengisian: satu indikator per layar ---------- */
.maju{height:3px;border-radius:2px;background:rgba(255,255,255,.12);margin:0 0 20px;overflow:hidden}
.maju i{display:block;height:100%;background:var(--turqoise);transition:width .22s ease}
.baris-atas{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.pertanyaan{font-size:23px;line-height:1.28;margin:14px 0 10px}
.pilihan{display:flex;flex-direction:column;gap:10px;margin-top:20px}
.pilihan .pilih{align-items:center;padding:14px 15px}
.pilihan .nilai{flex:0 0 auto;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;
  justify-content:center;font-weight:700;font-size:15px;background:rgba(255,255,255,.07);color:var(--muted)}
.pilihan .pilih[aria-pressed="true"] .nilai{background:var(--turqoise);color:var(--navy-deep)}

/* ---------- ringkasan & rincian ---------- */
.baris-jawab{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;width:100%;
  text-align:left;background:none;border:none;border-top:1px solid rgba(255,255,255,.07);
  color:inherit;font:inherit;padding:11px 0;cursor:pointer}
.jawab-nilai{flex:0 0 auto;color:var(--turqoise);font-weight:700;text-align:right;max-width:40%}
.baris-bulan{display:flex;justify-content:space-between;align-items:center;gap:14px;width:100%;
  text-align:left;background:var(--glass);border:1px solid var(--stroke);border-radius:var(--r);
  color:inherit;font:inherit;padding:14px 16px;margin-bottom:10px;cursor:pointer}
.nilai-bulan{font-size:19px}

/* ---------- grafik ---------- */
.grafik{margin-top:14px}
.batang-baris{display:block;width:100%;text-align:left;background:none;border:none;color:inherit;
  font:inherit;padding:9px 0;cursor:pointer}
.batang-kepala{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px}
.batang-nama{font-size:13.5px}
.batang-nilai{font-size:13.5px;display:flex;gap:8px;align-items:baseline}
.batang-alur{height:7px;border-radius:4px;background:rgba(255,255,255,.08);overflow:hidden}
.batang-isi{height:100%;border-radius:4px}
.beda{font-size:12px;font-weight:700;white-space:nowrap}
.beda.datar{color:var(--faint)}
.kartu-utama{background:var(--glass);border:1px solid var(--stroke);border-radius:var(--r);padding:18px}
.angka-besar{display:flex;align-items:baseline;gap:8px;margin:2px 0 6px}
.angka-besar span{font-size:46px;font-weight:700;letter-spacing:-.03em;line-height:1}
.angka-besar i{font-style:normal;font-size:13px;color:var(--faint)}
.tabel-angka{margin-top:10px}

/* ---------- pemilih anak ----------
   Muncul hanya bila ada lebih dari satu anak. Tombolnya sengaja menyebut nama,
   bukan nomor: orang tua memikirkan anaknya dengan nama. */
.pemilih-anak{display:flex;gap:7px;overflow-x:auto;margin:0 0 14px;padding-bottom:2px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
.pemilih-anak::-webkit-scrollbar{display:none}
.pemilih-anak button{flex:0 0 auto;min-height:36px;padding:7px 14px;border-radius:999px;
  background:var(--glass);border:1px solid var(--stroke);color:var(--muted);
  font:inherit;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.pemilih-anak button[aria-pressed="true"]{border-color:var(--turqoise);
  background:rgba(57,194,242,.12);color:var(--text)}
.pemilih-anak button:active{transform:translateY(1px)}
