/* KALKULATOR CUKAI — SATU lembaran gaya untuk halaman utama (index.html → app.js lukisKalkulator), simulasi dalam app, dan
   halaman awam statik /kalkulator-cukai/ (scripts/seo/halaman.mjs blokKalkulator + cukai.js). Keputusan Nazri 3 Okt 2026:
   reka bentuk mesti SEKATA & responsif di mana-mana — maka kedua-dua halaman memakai kelas & fail ini (ujian-reka.mjs &
   semak-reka.mjs menyemak). Pemboleh ubah tema (--kertas, --garis, --cop, …) ditakrif oleh rupa.css (app) dan seo.css (awam).
   Peraturan bentuk: setiap input lebar penuh pada telefon, sasaran sentuh ≥ 42px, angka tabular, teks panjang membalut
   (overflow-wrap:break-word — perkataan tidak dipecah di tengah), tiada lebar tetap yang melebihi skrin. */
/* Asas borang dalam kalkulator (sama rupa dengan .fld/.lbl/.row/.note/.baris rupa.css — ditakrif di sini supaya halaman awam
   tanpa rupa.css kelihatan SAMA). */
.kira,.kira *{box-sizing:border-box}
.kira{font-size:15px;line-height:1.45;min-width:0}
.kira .fld{display:grid;gap:4px;margin:8px 0;min-width:0}
.kira .lbl{font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--pudar)}
.kira .note{font-size:13.5px;line-height:1.55;color:var(--pudar)}
.kira .row{display:grid;grid-template-columns:minmax(0,1fr);gap:0 10px}@media(min-width:560px){.kira .row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.kira .fld>input,.kira .fld>select,.kiraPel input,.kiraAtas select{max-width:100%;min-height:48px;padding:11px 13px;border-radius:12px;border:1.5px solid var(--garis);background:var(--kertas2);color:var(--dakwat);font:inherit;font-size:16px;font-variant-numeric:tabular-nums}
.kira .fld>input,.kira .fld>select{width:100%}
.kira input:focus-visible,.kira select:focus-visible,.kira button:focus-visible{outline:2px solid var(--cop);outline-offset:2px}
.kira input[type=checkbox]{width:20px;height:20px;margin:0;flex:none;accent-color:var(--cop)}
.kira input[readonly],.kira input:disabled{color:var(--pudar)}
.kira .baris{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:8px 0;border-bottom:1px solid var(--garis);min-height:44px}
.kira .baris .t{min-width:0;flex:1;display:flex;flex-direction:column;overflow-wrap:break-word}
.kira .baris .v{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.kira .btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:10px 16px;border-radius:12px;border:1px solid var(--cop);background:var(--cop);color:var(--atas-cop);font:inherit;font-weight:650;cursor:pointer;text-decoration:none}
.kira .btn.ghost{background:transparent;color:var(--cop)}.kira .btn.wide{width:100%}
.kiraTanda{display:flex;gap:10px;align-items:flex-start;font-weight:500;font-size:14.5px;padding:6px 0;cursor:pointer}
.kiraTanda input{margin-top:2px}
.kiraKecil{display:flex;gap:8px;align-items:center;font-size:13px;font-weight:500;color:var(--pudar);margin-top:6px;cursor:pointer}
.kiraKecil input{margin:0}

/* ═══ Kalkulator cukai (halaman utama & dalam app) ═══ */
.kira{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}
@media(min-width:880px){.kira{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start}
  .kiraHasil{position:sticky;top:12px}}
.kiraBorang,.kiraHasil{background:var(--kertas2);border:1px solid var(--garis);border-radius:16px;padding:14px;min-width:0}
.kiraAtas{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin-bottom:6px}
.kiraAtas select{width:auto;min-width:96px}
.kiraLangkah{border-top:1px solid var(--garis);padding:6px 0}
.kiraLangkah>summary,.kiraLain>summary{cursor:pointer;list-style:none;display:flex;gap:8px;align-items:center;min-height:44px}
.kiraLangkah>summary{font-weight:650}
.kiraLangkah>summary::-webkit-details-marker,.kiraLain>summary::-webkit-details-marker{display:none}
.kiraLangkah>summary b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;
  background:var(--cop);color:var(--kertas);font-size:13px;flex:none}
.kiraLain>summary{color:var(--cop);font-weight:600}
.kiraLain>summary::before,.kiraLangkah>summary::after{content:"▸";font-size:11px;color:var(--pudar)}
.kiraLangkah>summary::after{margin-left:auto}
.kiraLangkah[open]>summary::after,.kiraLain[open]>summary::before{content:"▾"}
.kiraKecil{display:flex;gap:6px;align-items:center;font-size:12.5px;color:var(--pudar);margin-top:6px;cursor:pointer}
.kiraKecil input{width:18px;height:18px;flex:none}
.kiraTanda{min-height:42px;margin-bottom:2px}
.kiraAnak{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:46px;border-bottom:1px dashed var(--garis)}
.kiraAnak>span:first-child{min-width:0;flex:1;overflow-wrap:break-word}
.kiraLangkahN{display:flex;align-items:center;gap:10px;flex:none}
.kiraLangkahN button{width:42px;height:42px;border-radius:50%;border:1px solid var(--garis);background:transparent;
  color:inherit;font-size:18px;line-height:1;cursor:pointer}
.kiraLangkahN b{min-width:18px;text-align:center}
.kiraKump{margin:8px 0 4px}
.kiraPel{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--garis)}
.kiraPel>.t{display:flex;flex-direction:column;min-width:0;flex:1;overflow-wrap:break-word}
.kiraPel>input,.kiraPel>.kiraSatu{width:112px;flex:none}.kiraPel>.kiraSatu>input,.kiraDua input{width:100%}
@media(max-width:380px){.kiraPel{flex-wrap:wrap}.kiraPel>input,.kiraPel>.kiraSatu{width:100%}}
.kiraPel .kiraDua{flex:0 0 200px}@media(max-width:520px){.kiraPel:has(.kiraDua){flex-wrap:wrap}.kiraPel .kiraDua{flex:1 1 100%}}
.kiraBesar{font-size:30px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.kiraBesar.balik{color:var(--hijau)}.kiraBesar.bayar{color:var(--amber)}
.kiraKod{font:11px var(--mono);border:1px solid var(--garis);border-radius:6px;padding:0 5px;margin-left:4px;color:var(--pudar);
  white-space:nowrap}
.kiraKadar{display:flex;flex-wrap:wrap;gap:6px 14px;margin:10px 0;font-size:13px;color:var(--pudar)}
.kiraJimat{border:1px solid var(--hijau);color:var(--hijau);border-radius:12px;padding:10px 12px;margin:8px 0}
.kiraCadang{margin-top:10px;border-top:1px solid var(--garis);padding-top:8px}
.kiraCta{display:grid;gap:8px;margin-top:12px}
.kiraNota{margin-top:10px}

/* ── Kalkulator: mod suami isteri (3 Okt 2026) ─────────────────────────── */
.kiraPasangan{margin-top:10px;padding:12px;border:1px solid var(--garis);border-radius:14px;background:var(--kertas);display:grid;gap:8px}
.kiraDua{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:end}
.kiraDua label{display:grid;gap:2px}.kiraDua input{width:100%;min-width:0}
.kiraCadangPasangan{margin:6px 0 10px;padding:10px 12px;border-radius:12px;background:var(--cop-lembut);color:var(--cop);font-size:14px}
.kiraCadangPasangan.bersama{background:var(--amber-lembut);background:color-mix(in srgb, var(--amber) 16%, transparent);color:var(--dakwat)}
.kiraOrang{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:7px 0;border-bottom:1px dashed var(--garis);align-items:baseline}
.kiraOrang .v{font-weight:700;white-space:nowrap}.kiraOrang .note{grid-column:1/3}
@media(max-width:400px){.kiraOrang{grid-template-columns:minmax(0,1fr)}.kiraOrang .v{white-space:normal}}
.kiraAgihBaris{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 10px;padding:7px 0;border-bottom:1px dashed var(--garis)}
.kiraAgihBaris b{flex:1 1 180px;overflow-wrap:break-word;font-weight:650}.kiraAgihBaris span{font-variant-numeric:tabular-nums;text-align:right}
/* Pusingan 88: lencana kotak borang (B6, B13…) saiz kandungan — bukan jalur selebar baris; label anak tidak dipecah di tengah perkataan. */
.kira .baris .t>.kiraKod{align-self:flex-start;margin:3px 0 0}
/* p143:auditui — hyphens:auto MEMECAH perkataan English di tengah ("uni-versity", "edu-cation" pada 390 px — robot e2e, semak-reka
   "perkataan terputus") walaupun tujuan baris ini ialah TIDAK memecah perkataan; kini manual: baris dibalut pada ruang / sempang sedia ada. */
.kiraAnak>span,.kiraAnak>label{overflow-wrap:break-word;word-break:normal;-webkit-hyphens:manual;hyphens:manual;min-width:0}
.kira .fld{align-content:start}
.kiraAnak>span:first-child{overflow-wrap:break-word;line-break:auto}
/* Pusingan 88: medan sebaris SENTIASA selari walaupun label satu lajur berbalut dua baris (cth. "Yearly MTD (PCB) deducted (EA
   form)") — setiap .fld meminjam baris induk (subgrid: label / input / nota), jadi semua input dalam baris bermula pada ketinggian
   sama. Pelayar tanpa subgrid: susunan biasa (align-content:start). semak-reka.mjs menyemak "medan isian tidak sebaris". */
@supports (grid-template-rows:subgrid){
  @media(min-width:560px){.kira .row>.fld{grid-row:span 3;grid-template-rows:subgrid;row-gap:4px;align-content:normal}
    .kira .row>.fld>.lbl{align-self:end}}
}

/* ── Pusingan 96: penjana invois awam (/penjana-invois, invois.js) — baris item seperti tab Invois app ─────────────── */
.niItemKepala{display:grid;grid-template-columns:minmax(0,1fr) 76px 108px 36px;gap:6px;font-size:12px;font-weight:600;color:var(--pudar);margin:6px 0 2px}
.niItem{display:grid;grid-template-columns:minmax(0,1fr) 76px 108px 36px;gap:6px;align-items:center;margin-bottom:6px}
.niItem input{min-width:0;width:100%;min-height:44px;padding:8px 10px;border-radius:var(--r);border:1.5px solid var(--garis);background:var(--kertas2)}
.niBuang{min-width:36px;min-height:44px;border-radius:var(--r);border:1.5px solid var(--garis);background:var(--kertas2);color:var(--pudar);font-size:20px;line-height:1;cursor:pointer}
@media(max-width:400px){.niItemKepala{display:none}.niItem{grid-template-columns:1fr 1fr}.niItem input[data-inv-k="keterangan"]{grid-column:1/3}.niItem .niBuang{grid-column:1/3;min-height:40px}}
.kira .baris[hidden]{display:none}

/* ── Pusingan 96: kalkulator kewangan awam (/kalkulator-pinjaman-rumah …, kewangan.js) — jadual pelunasan/unjuran selebar grid, graf
   bar SVG ringkas, nota jimat & cetak ringkasan. Pemboleh ubah tema sedia ada sahaja. ─────────────────────────────────────────── */
.kwJadual{grid-column:1/-1;min-width:0}
.kwJadual h3{font-size:15px;margin:14px 0 4px}
.kwJadual .jadualBalut{margin:6px 0 10px}
.kwJadual table{font-size:14px}
.kwJadual tbody th{font-weight:500;color:var(--pudar);white-space:nowrap}
.kwGraf{margin:10px 0 2px;min-height:12px}
.kwGraf svg{display:block;width:100%;height:92px}
.kwGraf rect{fill:var(--cop);opacity:.85}
.kwGraf text{font:11px var(--mono);fill:var(--pudar)}
.kira p.kiraJimat{margin:8px 0}
.kira .fld>input[required]:placeholder-shown{border-color:var(--amber)}
.kira .fld>div[hidden],.kira .row>div[hidden]{display:none}
/* Pusingan 132: alat awam harga barang dapur (/pasar-awam.js) — senarai barang (median 7 hari) & kedai berhampiran; mudah alih dahulu. */
.paAlat{display:block;border:1px solid var(--garis);border-radius:var(--r-kad);background:var(--kertas2);padding:14px 16px;margin:12px 0}
.paLokasi{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:flex-end}
.paLokasi .fld{flex:1 1 170px}
.paLokasi .butang{flex:1 1 200px;margin:8px 0}
.paAlat .note{display:block;font-size:13px;font-weight:400;color:var(--pudar);line-height:1.4}
.paSenarai{list-style:none;margin:8px 0 0;padding:0}
.paBarang{border-top:1px solid var(--garis)}
.paBarangBtn{display:flex;width:100%;gap:12px;justify-content:space-between;align-items:flex-start;padding:12px 2px;min-height:48px;background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
.paBarangBtn:focus-visible{outline:2px solid var(--cop);outline-offset:2px;border-radius:8px}
.paNama{display:grid;gap:2px;min-width:0;flex:1 1 auto}
.paNama b{overflow-wrap:break-word}
.paMedian{display:grid;gap:2px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;flex:0 1 auto;max-width:50%}
.paNaik{color:var(--merah)}
.paTurun{color:var(--hijau)}
.paButiran{padding:0 2px 12px}
.paKedai{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.paKedai li{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:12px;background:var(--kertas)}
.paKedaiNama{display:grid;gap:2px;min-width:0}
.paKedaiNama b{overflow-wrap:break-word}
.paHarga{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
table.paJadual th[scope=row]{min-width:150px;max-width:260px;font-weight:600}
table.paJadual small.teks{display:block;font-size:12.5px;font-weight:500;color:var(--pudar);line-height:1.35;margin-top:2px}
/* Pusingan 134: naik/turun paling banyak minggu ini & indeks harga negeri (bar relatif; teks sentiasa ada untuk pembaca skrin). */
.paGerakGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:12px;margin:8px 0}
.paGerakGrid h4{margin:0 0 6px;font-size:15px}
.paGerak{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.paGerak li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:start;padding:8px 10px;border-radius:12px;background:var(--kertas2);border:1px solid var(--garis)}
.paGerak li>span:first-child{overflow-wrap:break-word;font-weight:600}
.paGerak li>b{text-align:right;white-space:nowrap}
.paGerak li>.n{grid-column:2;text-align:right;font-variant-numeric:tabular-nums;color:var(--pudar);font-size:13px}
.paGerak.turun li>b{color:var(--hijau)}
.paGerak.naik li>b{color:var(--merah)}
table.paNegeri td{min-width:170px}
.paGerak small.teks{display:block;font-size:12.5px;font-weight:500;color:var(--pudar);line-height:1.35;margin-top:2px}
.paBar{display:block;height:6px;border-radius:3px;width:3px;max-width:100%;margin:2px 0 4px;background:var(--garis)}
.paBar.w1{width:10%}.paBar.w2{width:20%}.paBar.w3{width:30%}.paBar.w4{width:40%}.paBar.w5{width:50%}.paBar.w6{width:60%}.paBar.w7{width:70%}.paBar.w8{width:80%}.paBar.w9{width:90%}.paBar.w10{width:100%}
.paBar.murah{background:var(--hijau)}
.paBar.mahal{background:var(--merah)}
/* ── Pusingan 138: gaji bersih & kos majikan (blok "5" kalkulator pendaratan/dalam app & bahagian halaman /kalkulator-pcb, gaji-kira.js) —
   selebar grid kalkulator; dua lajur (pilihan | keputusan) hanya bila cukup lebar, telefon satu lajur. ─────────────────────────────── */
.kiraGajiBungkus{margin-top:14px}
.kiraGaji{grid-column:1/-1;min-width:0;background:var(--kertas2);border:1px solid var(--garis);border-radius:16px;padding:6px 14px 10px}
.kiraGajiGrid{display:grid;gap:4px 18px;grid-template-columns:minmax(0,1fr);min-width:0}
@media(min-width:720px){.kiraGajiGrid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}
.kiraGajiHasil{min-width:0;overflow-wrap:break-word}
.kiraGajiHasil .kiraBesar{margin-top:4px}
.kiraGaji .kiraLain>summary{min-height:44px}
@media print{
  .kira{display:block}
  .kira .kiraCta,.kira details:not([open])>*:not(summary){display:none}
  .kiraBorang,.kiraHasil{position:static;border:0;padding:0;background:transparent;margin-bottom:12px}
  .kiraHasil{break-inside:avoid}
  .kwJadual .jadualBalut{overflow:visible;border:0}
  .kwJadual tr{break-inside:avoid}
}
