/* Giao dien SANG la mac dinh. Giao dien TOI bat bang thuoc tinh data-theme="toi"
   tren the <html> — do common.js dat theo lua chon cua nguoi dung hoac theo he
   dieu hanh. Chi co MOT khoi mau toi duy nhat nen sua mau khong bi lech hai noi. */
:root {
  --bg:#f4f5f7; --card:#fff; --fg:#15181c; --muted:#697280;
  --line:#e2e5ea; --accent:#2563eb; --on:#16a34a; --off:#9ca3af;
  --warn:#d97706; --err:#dc2626; --soft:#eef0f4; --pill:#fff;
  --do-noi:0 1px 2px rgba(16,24,40,.09), 0 0 0 1px rgba(16,24,40,.04);
  --c-pv:#22c55e; --c-bat:#0284c7; --c-grid:#dc2626; --c-load:#f97316;
  --c-mui:#e0a800;
}
:root[data-theme="toi"] {
  --bg:#111417; --card:#1a1e22; --fg:#e8eaed; --muted:#98a0a9;
  --line:#2a3037; --accent:#5b9dff; --on:#4ade80; --off:#6b7280;
  --warn:#fbbf24; --err:#f87171; --soft:#191d21; --pill:#333b44;
  --do-noi:0 1px 2px rgba(0,0,0,.35);
  --c-pv:#4ade80; --c-bat:#38bdf8; --c-grid:#f87171; --c-load:#fb923c;
  --c-mui:#f0c14b;
}
* { box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
body { margin:0; background:var(--bg); color:var(--fg);
       font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
       -webkit-text-size-adjust:100%; }
.wrap { max-width:1000px; margin:0 auto; padding:14px 14px 40px; }
.wrap.hasbar { padding-bottom:96px; }

/* ---------- dau trang + dieu huong ---------- */
.top { display:flex; align-items:center; gap:12px; flex-wrap:wrap;
       margin-bottom:14px; }
h1 { font-size:19px; margin:0; }
.sub { color:var(--muted); font-size:13px; margin:1px 0 0; }
/* Dieu huong, chon chu de va cac dai chon khoang deu dung chung mot kieu:
   mot RANH chim mau nhat, muc dang chon la mot VIEN THUOC noi len. Tranh kieu
   to dac mau xanh — no bat qua manh so voi phan con lai cua trang. */
.nav, .seg { display:flex; gap:2px; padding:3px;
       background:var(--soft); border:1px solid var(--line); border-radius:11px; }
.themebtn { display:flex; }
.nav a, .seg button {
       display:flex; align-items:center; justify-content:center;
       padding:8px 14px; min-height:34px; border:0; border-radius:8px;
       background:transparent; color:var(--muted); font:inherit; font-size:13.5px;
       font-weight:650; text-decoration:none; cursor:pointer; white-space:nowrap;
       transition:background .18s ease, color .18s ease, box-shadow .18s ease; }
.nav a.active, .seg button.active {
       background:var(--pill); color:var(--accent); box-shadow:var(--do-noi); }
@media (hover:hover) {
  .nav a:not(.active):hover, .seg button:not(.active):hover { color:var(--fg); }
}
/* O trong dai dieu huong chi chua bieu tuong thi thu gon lai cho vuong van */
.nav a.bieutuong { padding:8px 12px; }
.nav a.bieutuong svg { width:19px; height:19px; }
/* Dieu huong va nut chu de di chung mot hang, ke ca tren dien thoai —
   tach ra thi nut chu de roi xuong mot dong rieng, trong rat trong. */
.dieukhien { display:flex; align-items:center; gap:8px; margin-left:auto; }
.nav { margin-left:0; }
@media (max-width:520px) {
  .dieukhien { margin-left:0; width:100%; }
  .nav { flex:1; } .nav a { flex:1; }
}

h2 { font-size:12px; margin:0 0 12px; text-transform:uppercase;
     letter-spacing:.07em; color:var(--muted); font-weight:700; }
.card { background:var(--card); border:1px solid var(--line); border-radius:12px;
        padding:16px; margin-bottom:12px; }

/* ---------- trang thai ---------- */
.hero { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.big { font-size:40px; font-weight:650; font-variant-numeric:tabular-nums;
       letter-spacing:-.02em; line-height:1.1; }
/* Don vi A to bang con so, chu mo ta van nho */
.big.dv { color:var(--muted); margin:0 2px 0 6px; }
.unit { font-size:15px; color:var(--muted); }
/* MUC PIN dung dau va to gap ruoi — doc duoc tu xa, khong phai phong to man
   hinh (yeu cau chu nha 20/08). Dong sac/xa lui xuong hang duoi, van du to de
   doc. Hai hang xep doc nen cot phai (ba den tinh trang) khong bi day di. */
.hero { flex-direction:column; align-items:flex-start; gap:0; }
.hero-soc, .hero-dong { display:flex; align-items:baseline; flex-wrap:wrap; }
.big.xl { font-size:58px; }
.big.sm { font-size:26px; }
.hero-soc .unit, .hero-dong .unit { margin-left:8px; }
/* Pin can kiet thi con so do len — khoi phai doc chu moi biet */
.big.xl.thap { color:var(--err); }
.big.xl.day  { color:var(--on); }
@media (max-width:380px) { .big.xl { font-size:48px; } }
/* So lieu chinh va tinh trang ket noi nam cung mot hang: cot phai von trong,
   dat ba dong tinh trang vao do thi khong ton them chieu cao nao. */
.tt-dau { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.hero { flex:1 1 150px; min-width:0; }
.tt-mach { display:grid; gap:5px; flex:none; margin-left:auto; }
.tt-dong { display:flex; align-items:center; gap:8px; font-size:12px;
           color:var(--muted); white-space:nowrap; }
.tt-dong .d { width:7px; height:7px; border-radius:50%; flex:none;
              background:var(--on);
              box-shadow:0 0 0 3px color-mix(in srgb,var(--on) 20%,transparent); }
.tt-dong.xau { color:var(--err); font-weight:650; }
.tt-dong.xau .d { background:var(--err);
              box-shadow:0 0 0 3px color-mix(in srgb,var(--err) 20%,transparent); }
@media (max-width:520px) { .tt-mach { margin-left:0; } }

/* Luoi deu cot cho cac cong tac — xep tu do bang flex thi moi o mot chieu dai,
   nhin rat vun. Ten o tren, trang thai o duoi. */
.swstrip { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:12px; }
/* Man hep: ten "BNL Tang 3" khong du cho trong luoi 3 cot -> xuong 1 cot,
   moi cong tac mot hang nam ngang, chu khong bao gio bi cat */
@media (max-width:560px) {
  .swstrip { grid-template-columns:1fr; gap:6px; }
  /* O co 4 phan tu (ten, trang thai, so phut, thanh gio) — ep flex ngang la
     giam len nhau. Luoi 2 cot: hang tren ten|trang thai, hang duoi phut,
     thanh gio keo suot. `.swstrip .sw` de thang luat `.sw` phia duoi. */
  .swstrip .sw { display:grid; grid-template-columns:1fr auto;
                 align-items:center; gap:1px 10px; padding:8px 12px; }
  .swstrip .sw .ten { grid-column:1; justify-self:start; }
  .swstrip .sw .st { grid-column:2; justify-self:end; }
  .swstrip .sw .gio { grid-column:1; justify-self:start; }
  .swstrip .sw .thanhgio { grid-column:1 / -1; }
}
.sw { display:flex; flex-direction:column; align-items:center; gap:3px;
      padding:9px 8px; border-radius:10px; border:1px solid var(--line);
      background:var(--bg); min-width:0; }
.sw .ten { display:flex; align-items:center; gap:6px; font-size:12.5px;
           font-weight:650; max-width:100%; min-width:0; white-space:nowrap; }
.sw .ten span { flex:none; }
.sw.on { border-color:var(--on); color:var(--on);
         background:color-mix(in srgb,var(--on) 9%,transparent); }
.sw .st { font-size:10.5px; font-weight:800; letter-spacing:.06em;
          color:var(--muted); }
.sw.on .st { color:var(--on); }

/* Bo cuc the 2x2 hoc tu ung dung LuxPower: dai mau tieu de + gia tri nam TREN,
   nhan nho nam DUOI. Xep doc nhu vay thi cot hep van khong cat chu. */
.zones { display:grid; grid-template-columns:1fr 1fr; gap:9px;
         margin-top:14px; padding-top:14px; border-top:1px solid var(--line); }
@media (min-width:900px) { .zones { grid-template-columns:repeat(4,1fr); } }
/* Luoi so lieu ben trong the BMS */
.kvgrid { display:grid; grid-template-columns:1fr; gap:0 16px; }
@media (min-width:420px) { .kvgrid { grid-template-columns:1fr 1fr; } }
.zone { border:1px solid var(--line); border-radius:10px; background:var(--bg);
        min-width:0; overflow:hidden; }   /* min-width:0 -> o luoi moi co lai duoc */
.zhead { background:var(--z, var(--muted)); color:#fff; padding:5px 9px;
         font-size:10px; font-weight:700; letter-spacing:.05em;
         text-transform:uppercase; display:flex; align-items:center; gap:5px; }
.zbody { padding:9px 10px 11px; }
/* Mau phan biet 4 khoi, hoc cach SolarBox tach NLMT / Pin / Luoi / Tai */
.zone.pv   { --z:var(--c-pv); }   /* nang luong mat troi — xanh la */
.zone.bat  { --z:var(--c-bat); }   /* pin luu tru      — xanh nuoc bien */
.zone.grid { --z:var(--c-grid); }   /* luoi EVN         — do */
.zone.load { --z:var(--c-load); }   /* tai nha          — cam */
.zt { font-size:10.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
      color:var(--z, var(--muted)); margin-bottom:5px; }
.zmain { font-size:21px; font-weight:700; font-variant-numeric:tabular-nums;
         line-height:1.1; letter-spacing:-.01em; color:var(--z, var(--fg)); }
.zmain small { font-size:11px; color:var(--muted); font-weight:500; }
/* Cap gia tri / nhan xep doc — cach cua LuxPower, khong bao gio bi cat chu */
.kv { margin-top:8px; }
.kvv { font-size:13px; font-weight:700; font-variant-numeric:tabular-nums;
       line-height:1.2; }
.kvv.hi { color:var(--z, var(--accent)); }
.kvl { font-size:9px; color:var(--muted); font-weight:600; letter-spacing:.03em;
       text-transform:uppercase; margin-top:1px; }
.zrow { display:flex; justify-content:space-between; gap:6px; font-size:12.5px;
        margin-top:5px; color:var(--muted); align-items:baseline; min-width:0; }
.zrow span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
             min-width:0; flex:1 1 auto; }
.zrow b { color:var(--fg); font-variant-numeric:tabular-nums; font-weight:600;
          white-space:nowrap; flex:none; }
.zrow.hi b { color:var(--z, var(--accent)); }

/* Ly do cua quyet dinh gan nhat — vien trai thay cho khoi nen xam kin, nhe hon
   ma van tach bach voi phan tren. */
.escnote { margin-top:14px; padding:2px 0 2px 12px; font-size:13.5px;
           border-left:3px solid var(--line); }
.escnote b { display:block; font-size:12px; color:var(--muted);
             text-transform:uppercase; letter-spacing:.05em; margin-bottom:3px; }
/* Icon "Tro tai" (nguoi vac bao tien) dau dong TRO TAI — mang mau cam cua tai
   nha cho noi len giua dong chu xam, khong lan voi chu. */
.escnote b .ictt { width:17px; height:17px; vertical-align:-3.5px;
                   margin-right:5px; color:var(--c-load); }
/* Khoi "TAI THONG MINH": mot tieu de chung cho hai tinh nang cung lo viec bat
   binh nuoc nong, ben duoi moi tinh nang mot dong mang bieu tuong cua chinh no
   (nguoi vac bao tien = ganh tai, ngon lua = dun bu). Chot 16/08 sau khi chu
   nha thay hai dong roi rac trung y het tieu de. */
.ttm-ten { font-size:12.5px; font-weight:800; letter-spacing:.06em;
           text-transform:uppercase; color:var(--fg); margin-bottom:8px; }
.ttm-muc + .ttm-muc { margin-top:10px; }
/* Dong phu: viec CHUA chay (dun bu con dang cho gio) — khong bieu tuong, chu
   nho hon, de mat chi thay MOT bieu tuong cho viec dang thuc su chay. */
.ttm-phu { margin-top:9px; font-size:12.5px; color:var(--muted); }

/* Cuoi muc Nhat ky: ung dung dang an bao nhieu CPU/RAM/o dia cua may chu
   (yeu cau chu nha 16/08). Ba con so nam ngang, xuong dong duoc tren dien
   thoai; phan trong ngoac nho va xam vi la chu thich, khong phai con so chinh. */
.tainguyen { margin-top:12px; padding-top:11px; border-top:1px solid var(--line); }
.tn-ten { font-size:12px; color:var(--muted); text-transform:uppercase;
          letter-spacing:.05em; margin-bottom:6px; }
.tn-hang { display:flex; flex-wrap:wrap; gap:6px 18px; font-size:13.5px;
           font-variant-numeric:tabular-nums; }
.tn-hang b { font-weight:700; color:var(--muted); margin-right:5px;
             text-transform:none; letter-spacing:0; }
.tn-phu { font-size:12px; color:var(--muted); }

/* Bieu tuong dau dong trang thai khi no la ANH chu khong phai ky tu — vi du
   "Bảo vệ pin yếu" dung anh chu nha gui 17/08. CHI dat chieu cao, be ngang tu
   tinh: anh vuong hay anh cao deu vao vua, khong bi bop meo. */
.ic-anh { height:19px; width:auto; vertical-align:-5px; margin-right:6px;
          border-radius:4px; }
.tainguyen .tn-phu { margin-top:5px; }
/* Checklist tung buoc dieu kien: dat xanh, chua dat xam */
.dklist { display:flex; flex-direction:column; gap:6px; margin-top:9px; }
.dk { display:flex; align-items:center; gap:6px; font-size:13px; color:var(--muted); }
.dk .tick { flex:none; width:15px; font-style:normal; font-weight:800; text-align:center; }
.dk .dkic { flex:none; display:inline-flex; }
.dk .dkic svg { width:15px; height:15px; }
.dk b { display:inline; font-size:13px; text-transform:none; letter-spacing:0;
        color:var(--fg); font-variant-numeric:tabular-nums; margin:0; }
.dk.ok { color:var(--fg); }
.dk.ok .tick { color:var(--on); }
.dk.cho .tick { color:var(--muted); }
/* Mat troi vang, pin xanh — cho de nhan, khong doi theo dat/chua */
.dk .dkic-sun { color:var(--warn); }
.dk .dkic-pin { color:var(--c-pv); }

/* ---------- form ---------- */
label { display:block; font-size:12px; color:var(--muted); margin:0 0 5px;
        font-weight:600; }
input, select, textarea { width:100%; padding:11px 12px; border-radius:9px;
  border:1px solid var(--line); background:var(--bg); color:var(--fg);
  font:inherit; font-size:16px; }          /* 16px: iOS khong tu zoom khi focus */
textarea { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:13px; }
input:focus, select:focus, textarea:focus { outline:2px solid var(--accent);
  outline-offset:-1px; border-color:var(--accent); }
.fld { margin-bottom:12px; }
.subhead { font-size:12.5px; font-weight:700; color:var(--fg);
           margin:18px 0 10px; padding-top:14px; border-top:1px solid var(--line); }
.subhead:first-of-type { margin-top:14px; }

/* ---------- nut cham than: giai thich chi hien khi bam ----------
   De trang khong bi chu dai trai kin. Nut nam canh nhan cua o nhap,
   o giai thich nam ngay duoi va mac dinh an. */
.ib { display:inline-flex; align-items:center; justify-content:center;
      width:17px; height:17px; min-height:0; margin-left:6px; padding:0; flex:none;
      border-radius:50%; border:1px solid var(--line); background:var(--soft);
      color:var(--muted); font:inherit; font-size:11px; font-weight:800;
      line-height:1; cursor:pointer; vertical-align:-3px; box-shadow:none;
      /* h2 va label co uppercase + letter-spacing; bo di keo dau ! lech tam */
      text-transform:none; letter-spacing:0; text-indent:0;
      transition:background .12s, color .12s, border-color .12s; }
.ib:hover { color:var(--accent); border-color:var(--accent); }
.ib[aria-expanded="true"] { background:var(--accent); border-color:var(--accent);
      color:#fff; }
.ibox { margin-top:8px; padding:10px 12px; border-radius:8px;
        background:var(--soft); border:1px solid var(--line); }
.ibox[hidden] { display:none; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.grid3 { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; }
@media (max-width:560px) { .grid3 { grid-template-columns:1fr 1fr; } }

button { appearance:none; -webkit-appearance:none;
  padding:10px 16px; border-radius:10px; border:1px solid var(--line);
  background:var(--card); color:var(--fg); font:inherit; font-size:14px;
  font-weight:600; cursor:pointer; min-height:42px; box-shadow:var(--do-noi);
  transition:border-color .16s ease, background .16s ease, transform .06s ease; }
@media (hover:hover) {
  button:hover { border-color:color-mix(in srgb,var(--fg) 22%,var(--line)); }
}
button:active { transform:translateY(1px); }
button:disabled { box-shadow:none; }
button.primary { background:var(--accent); border-color:var(--accent); color:#fff; }
button.sm { padding:7px 12px; min-height:36px; font-size:13px; }

.seg button { flex:1; padding:8px 6px; font-size:13px;
       /* Bo do tre 300ms cho lan cham thu hai tren mot so trinh duyet di dong */
       touch-action:manipulation; }
/* Dai nut chon che do trong the kenh la thu bam nhieu nhat tren dien thoai,
   ma 34px thi hut so voi muc toi thieu 44px cua iOS (Android khuyen 48dp).
   Chi noi rong rieng cho no, khong dung toi dai dieu huong tren dau trang. */
#chans .seg button { min-height:46px; font-size:13.5px; }

.dot { display:inline-block; width:10px; height:10px; border-radius:50%;
       background:var(--off); flex:none; }
.dot.on { background:var(--on); box-shadow:0 0 0 3px color-mix(in srgb,var(--on) 22%,transparent); }

.chcard { border:1px solid var(--line); border-radius:10px; padding:12px;
          margin-bottom:10px; background:var(--bg);
          border-left:4px solid var(--off); }
.chcard.on { border-left-color:var(--on);
             background:color-mix(in srgb,var(--on) 6%,var(--bg)); }

/* Huy hieu TRANG THAI THAT cua cong tac — phai doc duoc ngay, khong lan
   voi dai nut chon che do ben duoi. */
.state { margin-left:auto; padding:6px 13px; border-radius:999px;
         font-size:12.5px; font-weight:700; letter-spacing:.03em;
         white-space:nowrap; display:inline-flex; align-items:center; gap:7px; }
.state.on  { background:var(--on); color:#fff; }
.state.off { background:var(--soft); color:var(--muted); border:1px solid var(--line); }
.state.unknown { background:color-mix(in srgb,var(--warn) 16%,transparent);
                 color:var(--warn); border:1px solid currentColor; }
.sw.unknown { border-color:var(--warn); color:var(--warn); }
.state .b { width:8px; height:8px; border-radius:50%; background:currentColor; }
.state.on .b { background:#fff; }
.modelbl { font-size:11px; color:var(--muted); font-weight:650;
           text-transform:uppercase; letter-spacing:.05em; margin:4px 0 5px; }
.chcard:last-child { margin-bottom:0; }
.chhead { display:flex; align-items:center; gap:9px; margin-bottom:8px; flex-wrap:wrap; }
.chhead .nm { font-weight:650; }
.tag { font-size:11px; color:var(--muted); background:var(--soft);
       padding:2px 7px; border-radius:5px; white-space:nowrap; }
.chnote { font-size:12.5px; color:var(--muted); margin-top:8px; }
.chk { display:flex; align-items:center; gap:8px; font-size:14px;
       font-weight:600; color:var(--fg); margin:0; }
.chk input { width:20px; height:20px; flex:none; }
/* Hang o tick kem nut cham than. Nut de NGOAI <label> vi bam vao nut ma nam
   trong label thi trinh duyet lat luon o tick. */
.chkrow { display:flex; align-items:center; margin-bottom:10px; }

details { border:1px solid var(--line); border-radius:10px; padding:0 12px;
          background:var(--bg); margin-top:12px; }
details[open] { padding-bottom:12px; }
summary { cursor:pointer; padding:12px 0; font-size:13px; font-weight:650;
          color:var(--muted); list-style:none; }
summary::-webkit-details-marker { display:none; }
summary::before { content:"\25b8  "; }
details[open] summary::before { content:"\25be  "; }

.log { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:12px;
       max-height:340px; overflow:auto; background:var(--bg);
       border:1px solid var(--line); border-radius:9px; padding:10px;
       -webkit-overflow-scrolling:touch; }
.log div { padding:1.5px 0; white-space:pre-wrap; word-break:break-word; }
.log .error { color:var(--err); } .log .warn { color:var(--warn); }

.hint { font-size:12px; color:var(--muted); margin-top:6px; line-height:1.45; }
.hint code { background:var(--soft); padding:1px 4px; border-radius:4px; font-size:11.5px; }
.banner { padding:11px 13px; border-radius:9px; margin-bottom:12px; font-size:13.5px; }
.banner.err { background:color-mix(in srgb,var(--err) 13%,transparent); color:var(--err); }
.banner.ok { background:color-mix(in srgb,var(--on) 13%,transparent); color:var(--on); }
.foot { display:flex; gap:10px; align-items:center; margin-top:12px; flex-wrap:wrap; }

.savebar { position:fixed; left:0; right:0; bottom:0; z-index:50;
  background:var(--card); border-top:1px solid var(--line);
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  display:flex; gap:10px; align-items:center; }
.savebar .primary { flex:0 0 auto; min-width:150px; }
/* Toast bao da luu: noi ngay TREN thanh Luu, tu tan sau vai giay */
.savetoast { position:absolute; left:50%; transform:translateX(-50%);
             bottom:calc(100% + 10px); background:var(--on); color:#fff;
             font-size:13.5px; font-weight:650; padding:9px 16px;
             border-radius:999px; box-shadow:0 8px 24px rgba(0,0,0,.25);
             white-space:nowrap; animation:toastHien .25s ease; }
.savetoast[hidden] { display:none; }
@keyframes toastHien { from { opacity:0; transform:translate(-50%, 6px); }
                       to { opacity:1; transform:translate(-50%, 0); } }
.savebar .dieukhien { margin-left:auto; }
.savebar button { white-space:nowrap; }
@media (max-width:560px) {
  .savebar { gap:7px; padding-left:10px; padding-right:10px; }
  .savebar .primary { min-width:0; }
  .savebar .hint { flex:0 1 auto; }   /* chu bao luu khong day cum nut ra mep */
}

/* ---------- BMS: luoi dien ap tung cell ---------- */
/* Bo cuc thanh ngang hoc tu SolarBox: nen lap day theo dien ap, so thu tu
   dang vien thuoc ben trai, dien ap ben phai. Mau van la bang mau cua minh. */
.cells { display:grid; grid-template-columns:repeat(2,1fr); gap:5px; margin-top:12px; }
@media (min-width:560px) { .cells { grid-template-columns:repeat(3,1fr); } }
@media (min-width:820px) { .cells { grid-template-columns:repeat(4,1fr); } }
.cell { position:relative; overflow:hidden; z-index:0; display:flex;
        align-items:center; gap:5px; padding:5px 7px; border-radius:7px;
        background:var(--soft); border:1px solid transparent; }
.cell .nen { position:absolute; inset:0 auto 0 0; z-index:-1; border-radius:7px;
             background:color-mix(in srgb,var(--c-bat) 17%,transparent);
             transition:width .5s ease-out; }
.cell .n { flex:none; min-width:21px; padding:1px 5px; border-radius:999px;
           background:var(--c-bat); color:#fff; font-size:10.5px; font-weight:700;
           text-align:center; }
.cell .v { flex:1; text-align:right; font-size:12.5px; font-weight:700;
           font-variant-numeric:tabular-nums; color:var(--fg); }
.cell.hi { border-color:var(--c-grid); }
.cell.hi .v { color:var(--c-grid); }
.cell.hi .n { background:var(--c-grid); }
.cell.hi .nen { background:color-mix(in srgb,var(--c-grid) 15%,transparent); }
.cell.lo { border-color:var(--c-pv); }
.cell.lo .v { color:var(--c-pv); }
.cell.lo .n { background:var(--c-pv); }
.cell.lo .nen { background:color-mix(in srgb,var(--c-pv) 17%,transparent); }
/* Dong tom tat cao nhat / lech / thap nhat duoi luoi cell */
.celltt { display:flex; justify-content:space-between; align-items:center;
          gap:8px; margin-top:8px; font-size:12.5px; font-weight:700;
          font-variant-numeric:tabular-nums; }
.celltt .hi { color:var(--c-grid); }
.celltt .lo { color:var(--c-bat); }
.bmshead { display:flex; gap:8px; flex-wrap:wrap; align-items:center;
           margin-bottom:4px; }

/* Chan moi kha nang cuon ngang o cap trang */
/* `overflow-x:hidden` o day se GIET position:sticky cua thanh dieu huong
   (moi to tien co overflow khac visible deu pha sticky). `clip` van chan
   tran ngang ma khong dung den co che cuon. */
html, body { max-width:100%; overflow-x:clip; }

/* ---------- So do dong nang luong (hoc cach LuxPower) ---------- */
.flowwrap { width:100%; display:flex; justify-content:center; }
/* Man hinh lon khong de so do gian het chieu rong — nhin rat to va troi. */
.flowwrap svg { width:100%; max-width:420px; height:auto; display:block; }
.fbox { fill:var(--bg); stroke:var(--line); stroke-width:1.5; }
.fbox.pv   { stroke:var(--c-pv); }  .fbox.bat  { stroke:var(--c-bat); }
.fbox.grid { stroke:var(--c-grid); } .fbox.load { stroke:var(--c-load); }
.ic       { fill:var(--muted); }
.ic.pv    { fill:var(--c-pv); }  .ic.bat  { fill:var(--c-bat); }
.ic.grid  { fill:var(--c-grid); } .ic.load { fill:var(--c-load); }
.flbl { font-size:8.5px; font-weight:700; letter-spacing:.05em;
        text-transform:uppercase; fill:var(--muted); }
.fval { font-size:15px; font-weight:700; font-variant-numeric:tabular-nums; fill:var(--fg); }
/* Muc phat PV: duoi 1000 de nguyen, tu 1000 xanh, tu 4000 vang, tu 5000 do */
.fval.d-den  { fill:var(--fg); }
.fval.d-xanh { fill:var(--on); }
.fval.d-vang { fill:var(--warn); }
.fval.d-do   { fill:var(--err); font-weight:800; }
.fsub { font-size:8px; fill:var(--muted); font-variant-numeric:tabular-nums; }
/* Muc dong pin: duoi 30 A de nguyen, tu 30 xanh, tu 60 vang, tu 80 do */
.fsub tspan.d-den  { fill:var(--fg); font-weight:700; }
.fsub tspan.d-xanh { fill:var(--on); font-weight:700; }
.fsub tspan.d-vang { fill:var(--warn); font-weight:700; }
.fsub tspan.d-do   { fill:var(--err); font-weight:800; }
.ftong { font-size:19px; font-weight:700; fill:var(--c-pv);
         font-variant-numeric:tabular-nums; }
/* Bieu tuong tinh nang dang chay, nam giua hai chuoi PV tren so do. Mau cam
   la cho nguoi vac bao tien (Tro tai) — cac bieu tuong con lai la emoji nen
   tu co mau rieng. KHONG hieu ung hien dan: trang ve lai moi 3 giay nen hieu
   ung bien thanh nhap nhay (chu nha bat duoc 15/08) — bieu tuong phai dung
   yen, chi doi khi den luot cai khac. */
#fTinhNang { color:var(--c-load); }
.ftn { font-size:26px; }
.fchia { stroke:var(--line); stroke-width:1; }

.fline { fill:none; stroke:var(--line); stroke-width:2.5; stroke-linecap:round; }

/* Mui ten chevron chay doc duong noi.
   .pos dat vi tri + huong; .ch chi lo phan truot doc truc X cuc bo.
   Tach 2 lop nhu vay moi vua dat duoc huong vua chay duoc bang CSS. */
.mui use { stroke:var(--c-mui); }            /* vang ho phach giong LuxPower */
/* Nhanh mang dien MOT CHIEU to xanh la: tam pin -> bien tan va
   pin luu tru <-> bien tan. Cac nhanh xoay chieu giu mau ho phach. */
.mui.dc use { stroke:var(--c-pv); }
/* Nhanh luoi to do, cung mau voi o Luoi EVN — nhin mui ten la biet
   dang dinh den dien mua chu khong phai dien nha lam ra. */
.mui.luoi use { stroke:var(--c-grid); }
/* Dang SAC pin ma van phai MUA dien luoi -> mui ten nap pin doi sang do
   (cung mau nhanh luoi): dien nap vao pin luc nay khong phai cua nha lam ra.
   Dat SAU .mui.dc de cung do dac hieu thi luat nay thang khi ap vao #aBat. */
.mui.sacluoi use { stroke:var(--c-grid); }
/* Dang XA pin khi NLMT = 0 (dem, hoac may che het) -> mui ten to xanh nuoc
   bien cung mau o Pin: ca nha luc nay song bang pin, khong con dien mat troi. */
.mui.xapin use { stroke:var(--c-bat); }
/* Mui ten bam theo duong noi bang offset-path — nho vay chay duoc ca duong
   gap khuc (ba chuoi PV chum ve bien tan), khong chi duong thang. */
.mui .ch { offset-path:path(var(--duong)); offset-rotate:auto; opacity:0; }
.mui.chay .ch { animation:chevChay var(--gy,1.4s) linear infinite; }
.mui.chay .d2 { animation-delay:calc(var(--gy,1.4s) / -3); }
.mui.chay .d3 { animation-delay:calc(var(--gy,1.4s) / -1.5); }
/* Chay nguoc thi phai xoay dau mui ten 180 do, vi offset-rotate luon lay
   huong tien cua duong chu khong theo chieu chuyen dong. */
.mui.nguoc .ch { animation-direction:reverse; offset-rotate:auto 180deg; }
@keyframes chevChay {
  from { offset-distance:0%;   opacity:0; }
  18%  { opacity:1; }
  82%  { opacity:1; }
  to   { offset-distance:100%; opacity:0; }
}

/* ---------- Chon giao dien sang / toi ---------- */
/* Nut tron chi co bieu tuong — dung cho nut doi giao dien */
button.bieutuong { width:42px; min-height:42px; padding:0; border-radius:11px;
                   display:flex; align-items:center; justify-content:center;
                   color:var(--muted); }
button.bieutuong svg { width:20px; height:20px; }
@media (hover:hover) { button.bieutuong:hover { color:var(--fg); } }

/* Dong chu thich duoi so do dong nang luong */
#flowNote { text-align:center; }

/* Mach chi thi canh bao cua BMS: thanh mau + kim chi vi tri */
.chithi { margin-top:12px; display:grid; gap:12px; }
.ct-dau { display:flex; justify-content:space-between; align-items:baseline;
          gap:8px; font-size:12.5px; color:var(--muted); }
.ct-dau b { font-size:14px; font-variant-numeric:tabular-nums; }
.ct-thanh { position:relative; height:9px; border-radius:5px; margin-top:5px; }
.ct-kim { position:absolute; top:-4px; width:3px; height:17px; border-radius:2px;
          background:var(--fg); box-shadow:0 0 0 2px var(--card);
          transform:translateX(-50%); }
.ct-moc { position:relative; height:14px; margin-top:3px; }
.ct-moc span { position:absolute; transform:translateX(-50%); font-size:9.5px;
               color:var(--muted); white-space:nowrap; }
.ct-moc span.dau { left:0; transform:none; }
.ct-moc span.cuoi { transform:translateX(-100%); }

/* Mau chu theo muc canh bao — dung chung voi thang o tren */
.mucchu.ok   { color:var(--on); }
.mucchu.vang { color:#a16207; }
.mucchu.cam  { color:#c2410c; }
.mucchu.do   { color:#991b1b; }
:root[data-theme="toi"] .mucchu.vang { color:#facc15; }
:root[data-theme="toi"] .mucchu.cam  { color:#fb923c; }
:root[data-theme="toi"] .mucchu.do   { color:#f87171; }

/* ── Hai bieu do lay tu SolarBox ───────────────────────────────────── */
.bdthanh { display:flex; flex-wrap:wrap; gap:8px; align-items:center;
           justify-content:space-between; margin-bottom:10px; }
.bdthanh .seg { flex:1 1 240px; }
.bdngay { display:flex; align-items:center; gap:6px; }
.bdngay button.sm { min-width:34px; padding:0 9px; font-size:17px; line-height:1; }
.bdngay button.sm:disabled { opacity:.35; }
.bdngay input[type="date"] { min-height:40px; padding:0 9px; font-size:13px;
       border:1px solid var(--line); border-radius:9px; background:var(--card);
       color:var(--fg); font-family:inherit; }
/* Chart.js can mot khung co chieu cao that de tu co gian theo be ngang */
.bdkhung { position:relative; height:260px; }
@media (min-width:700px) { .bdkhung { height:320px; } }

/* ── Khoi BMS: dai dau mo phong (hoc cach SolarBox) ─────────────────── */
.bmstop { display:flex; align-items:center; justify-content:center;
          gap:2px; margin:10px 0 14px; }
.bcuc { flex:0 0 84px; text-align:center; }
.btron { width:52px; height:52px; margin:0 auto 6px; border-radius:50%;
         background:var(--card); border:2px solid var(--line);
         display:flex; align-items:center; justify-content:center; }
.btron img { width:26px; height:26px; object-fit:contain; }
.btron.bat { border-color:var(--c-bat); }
.bten { font-size:11.5px; color:var(--muted); }
.btt { font-size:12px; font-weight:800; margin-top:2px; }
.btt.on { color:var(--on); } .btt.off { color:var(--off); }
.bw { font-size:15px; font-weight:800; font-variant-numeric:tabular-nums;
      margin-top:2px; }
.bnoi { flex:1 1 40px; max-width:110px; height:56px; }
.bnoi path { stroke-dasharray:9 7; }
/* Hai duong deu duoc VE theo dung chieu nang luong chay — trai: tam pin ->
   vong SoC (nap), phai: vong SoC -> tai (xa) — nen ca hai chay xuoi.
   Lop `dao` chi de lat gradient mau, khong dung cho chieu chuyen dong. */
.bnoi.chay path { animation:noiChay .8s linear infinite; }
@keyframes noiChay { to { stroke-dashoffset:-16; } }

/* Vong SoC */
.vsoc { flex:0 0 128px; width:128px; height:138px; }
.vsoc .nen { fill:none; stroke:var(--soft); stroke-width:9; }
.vsoc .tri { fill:none; stroke:var(--c-soc); stroke-width:9;
             stroke-linecap:round; transition:stroke-dashoffset .6s ease; }
.vsoc text { text-anchor:middle; font-family:inherit; }
.vsoc .l { font-size:12px; fill:var(--muted); }
.vsoc .s { font-size:26px; font-weight:800; fill:var(--c-soc);
           font-variant-numeric:tabular-nums; }
.vsoc .a { font-size:11px; fill:var(--muted); font-variant-numeric:tabular-nums; }

/* Cac o so lieu, vach mau nam trong day o */
.btiles { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
@media (min-width:760px) { .btiles { grid-template-columns:repeat(3,1fr); } }
.btile { background:var(--card); border:1px solid var(--line); border-radius:11px;
         padding:9px 11px 7px; text-align:center; min-width:0; }
.bt-ten { font-size:11px; color:var(--muted); }
.bt-tri { font-size:16px; font-weight:800; margin-top:2px;
          font-variant-numeric:tabular-nums; white-space:nowrap;
          overflow:hidden; text-overflow:ellipsis; }
/* Dong phu xuong hang thay vi cat cut — cat mat chu quan trong nhu gioi han
   dong hay so chu ky con lai thi o do coi nhu vo nghia. */
.bt-phu { font-size:10px; color:var(--muted); margin-top:1px; line-height:1.3; }
.btile .ct-thanh { margin-top:7px; height:7px; }
.btile .ct-moc { height:12px; }
/* Moc trong o hep phai nho lai, neu khong nhan cuoi se de len nhan ke cuoi */
.btile .ct-moc span { font-size:7.5px; }
.btile .ct-moc span.cuoi { transform:translateX(-100%); }
.btile .ct-kim { top:-3px; height:13px; }

@media (max-width:430px) {
  .bcuc { flex-basis:70px; }
  .btron { width:44px; height:44px; }
  .vsoc { flex-basis:106px; width:106px; height:116px; }
  .bnoi { flex-basis:20px; height:44px; }
}

/* ── Cong tac gat (che do tu dong) ─────────────────────────────────── */
/* Num dat TUYET DOI theo `left`, khong dung flex/margin. Ly do: Safari ep can
   giua noi dung cua <button> nen margin cua phan tu con khong an, va :active
   tren cam ung con bam lai sau khi tha tay neu dung transform. */
button.gat { position:relative; display:block; flex:none; padding:0;
             width:52px; height:30px; min-height:30px;
             border-radius:999px; border:0; background:var(--off);
             box-shadow:inset 0 1px 2px rgba(0,0,0,.12); cursor:pointer;
             appearance:none; -webkit-appearance:none;
             transition:background .2s ease; }
button.gat .num { position:absolute; top:3px; left:3px;
             width:24px; height:24px; border-radius:50%; background:#fff;
             box-shadow:0 1px 3px rgba(0,0,0,.28);
             transition:left .2s cubic-bezier(.4,0,.2,1); }
button.gat.bat { background:var(--on); }
button.gat.bat .num { left:25px; }
button.gat:disabled { opacity:.5; cursor:default; }

/* ── Dong ho gio chay hom nay tren tung o cong tac ──────────────────── */
.sw .gio { font-size:10px; color:var(--muted); font-variant-numeric:tabular-nums;
           margin-top:2px; }
.sw .gio.du { color:var(--on); font-weight:700; }
.sw .thanhgio { display:block; width:100%; height:3px; border-radius:2px;
                background:var(--soft); overflow:hidden; margin-top:3px; }
.sw .thanhgio i { display:block; height:100%; background:var(--accent);
                  border-radius:2px; transition:width .5s ease; }
.sw .thanhgio.du i { background:var(--on); }
/* Thoi gian nhap theo dang HH:MM dung chung kieu voi cac o nhap khac */
/* iOS/WebKit: input time co be rong noi tai, KHONG tu co theo cot luoi ->
   tran sang cot ben canh ("giao dien nat"). Ep chiem dung be rong o. */
input[type="time"] { font-variant-numeric:tabular-nums; width:100%;
                     min-width:0; box-sizing:border-box;
                     -webkit-appearance:none; appearance:none; }
/* Tam nghi vi ngoai khung gio: num nam ben trai nhu khi tat, nhung ranh mau
   ho phach de phan biet voi "nguoi dung da tat han". */
button.gat.nghi { background:var(--warn); }

/* ── Cua so bieu do bat len khi bam vao o BMS ───────────────────────── */
.lopphu { position:fixed; inset:0; z-index:60; display:flex;
          align-items:center; justify-content:center; padding:14px;
          background:rgba(10,14,18,.55); backdrop-filter:blur(2px); }
.lopphu[hidden] { display:none; }
.hopbd { background:var(--card); border:1px solid var(--line); border-radius:14px;
         padding:14px; width:100%; max-width:760px; max-height:92vh;
         overflow:auto; box-shadow:0 18px 50px rgba(0,0,0,.28); }
.hopbd-dau { display:flex; align-items:center; justify-content:space-between;
             gap:10px; margin-bottom:10px; }
.hopbd-dau span { font-size:14.5px; font-weight:700; }
.hopbd .seg { margin-bottom:10px; }
.hopbd .bdkhung { height:300px; }
@media (max-width:560px) { .hopbd .bdkhung { height:250px; } }

/* O bam duoc: hien con tro va mot dau hieu nho o goc nhan */
.btile.bam, .cells.bam { cursor:pointer; }
.bd-dh { margin-left:5px; font-size:9px; color:var(--accent); vertical-align:1px; }
@media (hover:hover) {
  .btile.bam:hover { border-color:var(--accent); }
  .cells.bam:hover { outline:1px solid var(--accent); outline-offset:3px;
                     border-radius:8px; }
}
.btile.bam:focus-visible, .cells.bam:focus-visible {
  outline:2px solid var(--accent); outline-offset:2px; border-radius:8px; }

/* Dong ho in tren man hinh cua anh bien tan, hoc cach SolarBox */
/* Nam tren o TRANG cua anh bien tan (anh PNG nen khong doi theo chu de),
   nen mau chu phai co dinh toi — dung var(--fg) se tang hinh o giao dien toi. */
.dongho { font-size:10.2px; font-weight:700; fill:#2b3138;
          font-variant-numeric:tabular-nums; letter-spacing:.02em; }

/* ── Nhat ky su co (trang Cai dat) ─────────────────────────────────── */
/* Moi su co la mot the co VACH MAU ben trai theo muc do — nhin luot la biet
   ngay co dong do nao khong, khong phai doc tung chu. */
/* GON LAI 25/08: chu nha *"nhat ky su co ... hien nay no trai dai het phan
   cai dat"*. Truoc day 20 su co x ~60px = ~1.200px, ma tep giu toi 500 dong
   nen no chi dai them. Nay moi su co la MOT DONG; chi tiet giau trong the
   <details>, bam vao moi mo. Ca danh sach nam trong khung cuon cao toi da
   340px nen phan Cai dat ben duoi luon o ngay tam mat. */
.sclist { display:flex; flex-direction:column; gap:5px;
          max-height:340px; overflow-y:auto; padding-right:4px; }
.scmuc { border:1px solid var(--line); border-left:4px solid var(--off);
         border-radius:8px; padding:5px 9px; background:var(--soft); }
.scmuc.nguy { border-left-color:var(--err); }
.scmuc.canh { border-left-color:var(--warn); }
.scmuc.het  { border-left-color:var(--on); }
.scdau { display:flex; align-items:baseline; gap:8px; flex-wrap:nowrap;
         cursor:default; }
/* Bo tam giac mac dinh cua <details> — vach mau ben trai da du de nhan biet */
details.scmuc > summary { list-style:none; cursor:pointer; }
details.scmuc > summary::-webkit-details-marker { display:none; }
details.scmuc > summary::after { content:'⌄'; margin-left:6px;
                                 color:var(--muted); font-size:12px; }
details.scmuc[open] > summary::after { content:'⌃'; }
/* Tieu de mot dong, dai qua thi cat bang dau ba cham — khong xuong dong lam
   the cao gap doi. Mo the ra thi doc duoc day du o phan chi tiet. */
.scdau b { font-size:13.5px; overflow:hidden; text-overflow:ellipsis;
           white-space:nowrap; min-width:0; }
.scgio { margin-left:auto; color:var(--muted); font-size:11.5px;
         font-variant-numeric:tabular-nums; white-space:nowrap; }
.scct { color:var(--muted); font-size:12.5px; margin-top:5px;
        white-space:pre-wrap; }
.scrong { color:var(--muted); font-size:13px; padding:6px 2px; }

/* ── Hoa tiet mat tam pin phu tren ba khung PV ─────────────────────── */
/* Vien o cell dam hon mot chut, hai thanh dan trong o thi rat mo — dam qua
   se doc mat con so cong suat nam de len tren. */
.pin-vien { stroke:var(--c-pv); stroke-width:.55; opacity:.12; fill:none; }
.pin-dan  { stroke:var(--c-pv); stroke-width:.4; opacity:.055; fill:none; }
.opin { pointer-events:none; }

/* Canh bao mat dien luoi — treo tren dau, dinh man hinh khi cuon */
/* `display:flex` duoi day la bo chon theo LOP nen thang quy tac
   [hidden]{display:none} cua trinh duyet — khong co dong nay thi thuoc tinh
   `hidden` vo tac dung va bang canh bao luon hien. Dong nay co do uu tien
   cao hon (.lop + [thuoc-tinh]) nen thang, khong phu thuoc thu tu. */
.matdien[hidden] { display:none; }

/* Ghim cung vao dinh man hinh — `sticky` bi tuot khi cuon nen khong dung */
.matdien { position:fixed; top:0; left:0; right:0; z-index:200;
           display:flex; align-items:center; gap:11px; background:#7f1d1d;
           color:#fff; box-shadow:0 2px 12px rgba(0,0,0,.35);
           padding:12px 16px calc(12px);
           padding-top:calc(12px + env(safe-area-inset-top, 0px)); }
.matdien { justify-content:center; text-align:center; }
.matdien b { font-size:15px; line-height:1.3; }
.mdcham { flex:0 0 auto; width:12px; height:12px; border-radius:50%;
          background:#fca5a5; box-shadow:0 0 0 0 rgba(252,165,165,.75);
          animation:mdNhap 1.5s ease-out infinite; }
@keyframes mdNhap {
  0%   { box-shadow:0 0 0 0 rgba(252,165,165,.75); }
  70%  { box-shadow:0 0 0 11px rgba(252,165,165,0); }
  100% { box-shadow:0 0 0 0 rgba(252,165,165,0); }
}
/* O Luoi phai tu no gay chu y, khong chi doi bang canh bao o tren dau */
body.co-matdien .zone.grid { outline:2px solid #b91c1c; outline-offset:-2px;
                             animation:luoiTho 1.6s ease-in-out infinite; }
@keyframes luoiTho {
  0%, 100% { outline-color:#b91c1c; }
  50%      { outline-color:#fca5a5; }
}
/* Trong so do: bieu tuong cot dien chop tat, khung do lan toa nhu song */
body.co-matdien #anhLuoi { animation:luoiChop 1.1s steps(1, end) infinite; }
@keyframes luoiChop { 0%, 54% { opacity:1; } 55%, 100% { opacity:.18; } }
body.co-matdien #oLuoi { stroke:#ef4444; stroke-width:2.5;
                         animation:luoiLanToa 1.6s ease-out infinite; }
@keyframes luoiLanToa {
  0%   { stroke-width:2.5; stroke-opacity:1; }
  70%  { stroke-width:6;   stroke-opacity:0; }
  100% { stroke-width:2.5; stroke-opacity:0; }
}
/* Pin rat yeu (<20%): vach duoi cung nhay do. Lop phu la anh 7 (vach trang)
   nam tren anh 6 (vach do) — chop tat lop phu thi vach cuoi doi do/trang.
   Mac dinh AN han de cac muc pin khac khong bi anh 7 de len. */
#batNhay { opacity:0; }
#batNhay.nhay { animation:pinNhay 1s steps(1, end) infinite; }
@keyframes pinNhay { 0%, 49% { opacity:0; } 50%, 100% { opacity:1; } }

/* Xa manh (dong xa vuot nguong): mo dam CA bieu tuong pin. Dung nhip khac va
   kieu chuyen muot, de khong lan voi kieu chop dut khoat cua vach cuoi o tren
   — hai hieu ung co the cung chay khi pin vua yeu vua bi rut dong lon. */
#batNhom.xamanh { animation:pinXaManh .9s ease-in-out infinite; }
@keyframes pinXaManh { 0%, 100% { opacity:1; } 50% { opacity:.28; } }

/* Pin gan DAY (>97%) van dang sac: nhap nhay nhe ca bieu tuong, nhip cham hon
   xa manh de khong nham. Bao "sap day, sap ngung sac". */
#batNhom.daysac { animation:pinDaySac 1.4s ease-in-out infinite; }
@keyframes pinDaySac { 0%, 100% { opacity:1; } 50% { opacity:.45; } }

@media (prefers-reduced-motion: reduce) {
  .mdcham, body.co-matdien .zone.grid, body.co-matdien #anhLuoi,
  body.co-matdien #oLuoi { animation:none; }
  /* Khong nhay nua nhung van phai thay mau do canh bao -> giu anh 6 */
  #batNhay.nhay { animation:none; opacity:0; }
  /* Bo nhap nhay khi xa manh; con so cong suat van to do nen khong mat canh bao */
  #batNhom.xamanh { animation:none; opacity:1; }
  #batNhom.daysac { animation:none; opacity:1; }
}

/* Dai thong so cai dat bien tan trong the Trang thai */
#btStrip { margin-top:14px; }
.btts { font-size:11px; font-weight:700; letter-spacing:.08em; color:var(--muted);
        margin-bottom:7px; }
.btkv { display:flex; flex-wrap:wrap; gap:6px 8px; }
.btkv span { display:inline-flex; align-items:baseline; gap:6px;
             background:var(--soft); border-radius:8px; padding:5px 10px;
             font-size:12.5px; }
.btkv i { font-style:normal; color:var(--muted); font-size:11.5px; }
.btkv em { font-style:normal; font-size:13px; line-height:1; }

/* Man hep: chip tung dong mot rat ton cho — chuyen sang luoi 2 cot gon,
   moi o nhan trai / gia tri phai, chu nho lai mot nac */
@media (max-width:560px) {
  .btkv { display:grid; grid-template-columns:1fr 1fr; gap:5px 7px; }
  /* Luoi 3 cot trong tung o: icon — nhan — gia tri. Truoc dung
     space-between nen cai nhan bi day di day lai theo do dai gia tri, nhin
     nhu chu khong thang hang (chu nha bat duoc 16/08). Cot giua an het cho
     thua nen nhan luon bat dau cung mot cho, gia tri luon sat mep phai. */
  .btkv span { display:grid; grid-template-columns:auto 1fr auto;
               align-items:baseline; padding:5px 9px;
               font-size:11.5px; gap:4px; min-width:0; }
  .btkv b { text-align:right; }
  .btkv i { font-size:10.5px; white-space:nowrap; overflow:hidden;
            text-overflow:ellipsis; }
  .btkv b { white-space:nowrap; }
  .btkv em { font-size:11.5px; }
  .btts { margin-bottom:6px; }
  /* Danh sach dieu kien va cac khoi trang thai cung bo t lai */
  .dklist { gap:4px; margin-top:7px; }
  .dk, .dk b { font-size:12px; }
  .escnote { font-size:12.5px; padding-left:10px; margin-top:10px; }
}
.btkv b { font-variant-numeric:tabular-nums; }

/* Bang canh bao vang (khoa chinh tay khi tu dong dang chay) */
.banner.warn { background:color-mix(in srgb,var(--warn) 14%,transparent);
               color:var(--warn); padding:10px 13px; border-radius:9px;
               font-size:13.5px; margin-bottom:10px; }

/* ── Trang Cai dat: tieu de nhom + thanh nhay nhanh ─────────────────── */
.sechead { font-size:13px; font-weight:800; letter-spacing:.07em;
           text-transform:uppercase; color:var(--muted);
           margin:26px 2px 10px; padding-top:6px; }
.sechead:first-of-type { margin-top:10px; }
/* Treo dinh man hinh — cuon toi dau cung nhay nhanh duoc */
.secnav { display:flex; flex-wrap:wrap; gap:6px; position:sticky;
          top:env(safe-area-inset-top, 0px);   /* ne tai tho iPhone */
          z-index:60; padding:10px 0;
          background:color-mix(in srgb, var(--bg) 92%, transparent);
          backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
          margin-bottom:8px; }
/* May tinh: chip xuong dong; dropdown an */
.secchon { display:none; }
/* Man hep: chip nho kho bam — thay bang MOT dropdown to, de cham */
@media (max-width:560px) {
  .secnav a { display:none; }
  .secchon { display:block; width:100%; font-size:15px; padding:12px 14px;
             border-radius:10px; border:1px solid var(--line);
             background:var(--card); color:var(--fg); }
}
.secnav a.noibat { border-color:var(--accent); color:var(--accent); }
/* Neo khong bi thanh treo che mat dau the */
.sechead, .card { scroll-margin-top:96px; }
.secnav a { font-size:12.5px; text-decoration:none; color:var(--fg);
            background:var(--card); border:1px solid var(--line);
            border-radius:999px; padding:6px 12px; white-space:nowrap; }
.secnav a:active { background:var(--soft); }
html { scroll-behavior:smooth; }

/* ---- Bieu do du bao nang (bang Trang thai) ----
   Nguoi dung chon kieu nay 14/08 vi ban toan chu "lam chu qua". Mau theo
   CUONG DO nang: r4 nang gat -> r1 it nang (xanh). Xanh cung la dau hieu
   "hom do sac du them", nen mau phai khop voi quyet dinh cua ke hoach. */
.db-tom { font-size:13.5px; margin-bottom:9px; }
.db-tom .n { font-weight:700; color:var(--fg); }
.db-tom .db-phu { color:var(--muted); }
.db-hang { display:flex; gap:5px; align-items:flex-end; }
/* Dong keu len khi ba noi du bao vench nhau qua nguong — mau canh bao chu
   khong phai mau loi: so van dung duoc, chi la kem chac hon moi ngay. */
.db-lech { margin-top:9px; padding:7px 9px; border-radius:8px; font-size:12.5px;
           color:var(--warn); line-height:1.45;
           background:color-mix(in srgb,var(--warn) 12%,transparent); }
/* `.escnote b` la kieu tieu de (display:block, viet hoa) — trong dong nay chu
   dam chi de nhan con so, phai keo ve inline khong thi moi so xuong mot dong. */
.db-lech b { display:inline; font-size:inherit; color:inherit; margin:0;
             text-transform:none; letter-spacing:0;
             font-variant-numeric:tabular-nums; }
.db-ngay { flex:1; text-align:center; padding:7px 2px 5px; border-radius:9px; }
.db-ic { font-size:15px; line-height:1; }
.db-so { font-size:12.5px; font-weight:700; margin:3px 0 4px;
         font-variant-numeric:tabular-nums; }
.db-cot { height:34px; display:flex; align-items:flex-end; justify-content:center; }
.db-cot i { display:block; width:72%; border-radius:4px 4px 0 0; }
.db-thu { font-size:10.5px; color:var(--muted); margin-top:5px; }
/* VANG = ngay du nang (khong sac du); XANH = duoi nguong, hom do sac du
   them. Mau noi dung QUYET DINH, dam nhat noi cuong do. */
.db-ngay.r4 .db-cot i { background:linear-gradient(180deg,#f97316,#f9731655); }
.db-ngay.r3 .db-cot i { background:linear-gradient(180deg,var(--warn),#f59e0b55); }
.db-ngay.r2 .db-cot i { background:linear-gradient(180deg,#7dd3fc,#7dd3fc55); }
.db-ngay.r1 .db-cot i { background:linear-gradient(180deg,var(--c-bat),#0284c755); }
.db-ngay.dat { background:#ffffff0d; box-shadow:inset 0 0 0 1px var(--line); }
.db-ngay.dat .db-thu { color:var(--fg); font-weight:700; }

/* Nut quay ve MUC KHUYEN CAO, dat canh tieu de tung muc trong trang Cai dat.
   Muc khuyen cao = con so da qua kich ban kiem thu, khong phai so go tay thu
   (yeu cau chu nha 15/08/2026). Bam chi DIEN vao o nhap, chua luu. */
/* min-height:42px cua the <button> chung lam nut nay cao gap doi dong tieu de,
   nhin nhu bi hat len tren — phai tra ve 0 va can giua theo chieu doc. */
.nutkc { background:none; border:0; padding:2px 4px; margin-left:6px;
         min-height:0; box-shadow:none; border-radius:6px;
         display:inline-flex; align-items:center; justify-content:center;
         color:var(--muted); cursor:pointer; vertical-align:-3px;
         touch-action:manipulation; }
.nutkc svg { width:16px; height:16px; display:block; }
.nutkc:hover { color:var(--accent); }
.nutkc:disabled { opacity:.4; cursor:default; }

/* Thanh chon nhom nguong O nha / Di vang trong trang Cai dat. Truoc day hai
   nhom trai dai chong len nhau, phai cuon rat lau moi het (yeu cau 15/08). */
.segnhom { margin:10px 0 6px; }
.segnhom button { flex:1; font-size:14px; padding:9px 6px; }

/* ---- Trang Cai dat tren DIEN THOAI ----
   Chu nha bao 15/08: "cac o nhay lon xon", "mat khau manh tao xong thi khuat
   chu", "toi da noi la phai toi uu cho mobile". Goc la `.grid2` giu nguyen HAI
   cot o moi be ngang: tren may 390px moi o chi con ~170px — chuoi 20 ky tu bi
   cat, va nhom le so o thi mo coi mot minh mot hang. Duoi 560px xep MOT cot. */
@media (max-width:560px) {
  .grid2 { grid-template-columns:1fr; }
  .foot { gap:8px; }
  .foot .sm { flex:1 1 auto; min-height:44px; }   /* du to de cham tay */
}
/* Luoi 3 cot tren dien thoai da xuong 2 cot (dong 210). O le cuoi cung dung
   nam mot minh nua o hang cuoi — keo cho no chiem tron be ngang. */
@media (max-width:560px) {
  .grid3 > *:last-child:nth-child(odd) { grid-column:1 / -1; }
}

/* O chiem tron be ngang du dang nam trong luoi 2 cot */
.fld.rong { grid-column:1 / -1; }

/* Mat khau vua sinh — hien mot dong rieng, doc va chep duoc het */
.mkhien { margin:6px 0 2px; padding:10px 12px; border-radius:10px;
          background:var(--soft); border:1px dashed var(--line);
          font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
          font-size:15px; letter-spacing:.5px; word-break:break-all;
          user-select:all; }

/* Tieu de NHOM CON trong mot the cai dat. The "Quan ly pin ban dem" co 23 o
   nam lien tuc, chu nha bao 15/08: "hay tach cac cai dat theo nhom de de dang
   dieu chinh tranh roi". */
.nhomcon { margin:18px 0 2px; padding-top:12px; border-top:1px solid var(--line);
           font-size:12px; font-weight:700; letter-spacing:.05em;
           text-transform:uppercase; color:var(--muted); }
.card > .nhomcon:first-of-type { margin-top:10px; padding-top:0; border-top:0; }

/* Bang nho trong o giai thich — vi du bang "nang/it nang/mua x o nha/di vang" */
.bang-nho { margin:8px 0 2px; border-collapse:collapse; font-size:13px; }
.bang-nho th, .bang-nho td { padding:4px 10px; border:1px solid var(--line);
                             text-align:center; }
.bang-nho th { color:var(--muted); font-weight:600; }

/* Vung thao tac can can nhac — tach han ra khoi cac nut thuong */
.vungnguy { margin-top:16px; padding-top:12px; border-top:1px solid var(--line); }
.vungnguy-ten { font-size:11px; letter-spacing:.06em; text-transform:uppercase;
                color:var(--muted); margin-bottom:8px; }
.sm.nguy { color:var(--err); border-color:var(--err); }
/* Nguon du bao da bi loai vi doan bay — van hien nhung mo di */
.db-loai { opacity:.55; text-decoration:line-through; }


/* ── Nhà không có pin ────────────────────────────────────────────────────
   Chủ nhà 30/08/2026: *"biết khách dùng biến tần không có pin thì những tính
   năng liên quan đến pin cần ẩn hết đi"*.

   Một công tắc duy nhất: `<body class="khong-pin">`. Mọi thứ thuộc về pin chỉ
   cần mang lớp `can-pin` là tự biến mất. Thêm tính năng pin mới thì đánh dấu
   là xong, không phải nhớ sửa chỗ nào khác.

   `!important` ở đây là cố ý: nhiều chỗ đặt `style="display:flex"` ngay trong
   thẻ, không mạnh tay thì ẩn không nổi. */
body.khong-pin .can-pin { display: none !important; }
