/* ============================================================================
 *  calcsheet.css — Giao diện "Phiếu tính sống" (Living Calc-Sheet) v0.3
 *  Apple-clean, phẳng. Màn hình chính = bản thuyết minh tính toán.
 * ========================================================================== */
/* Font nhúng cục bộ (offline) — Be Vietnam Pro nạp qua fonts/bvp.css ở <head>. */

:root{
  --bg:#f5f5f7; --card:#ffffff; --ink:#1d1d1f; --muted:#6e6e73; --hint:#8a8a8e;
  --line:#e5e5ea; --line2:#d2d2d7; --accent:#0071e3; --accent-hov:#0077ed; --accent-bg:#eaf2fd;
  --ok:#0f6e56; --ok-bg:#e1f5ee; --no:#a32d2d; --no-bg:#fceaea;
  --warn:#854f0b; --warn-bg:#faeeda; --info:#185fa5; --info-bg:#e6f1fb;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Consolas,"Liberation Mono",monospace;
  --sh-1:0 1px 1px rgba(0,0,0,.02),0 2px 8px rgba(0,0,0,.04);
  --sh-2:0 2px 4px rgba(0,0,0,.04),0 10px 28px rgba(0,0,0,.08);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:'Be Vietnam Pro',-apple-system,BlinkMacSystemFont,"SF Pro Text",'Inter','Segoe UI',Roboto,sans-serif;
  font-size:14px;line-height:1.55;font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4{font-weight:600;margin:0;letter-spacing:-.01em}
button{font-family:inherit}
::selection{background:rgba(0,113,227,.18)}

/* ---------- Header thương hiệu EVNNPC / NPSC (căn giữa) ---------- */
.brand-header{text-align:center;display:flex;flex-direction:column;align-items:center;padding:38px 22px 4px}
.brand-logo{height:152px;width:auto;object-fit:contain;margin-bottom:4px}
.brand-eyebrow{font-size:13px;font-weight:600;letter-spacing:.3em;color:var(--accent);text-transform:uppercase;margin-top:4px}
.brand-title{font-size:clamp(30px,3.8vw,45px);font-weight:800;letter-spacing:-.025em;color:var(--ink);line-height:1.08;margin:7px 0 9px}
.brand-sub{font-size:13.5px;font-weight:500;color:var(--muted)}
.brand-standards{font-size:12px;color:var(--hint);margin-top:2px}
/* Header GỌN khi đang làm việc (thẻ Tính / Toàn tuyến) — đỡ tốn chỗ, vẫn cân đối */
.brand-header{transition:padding .28s ease}
.brand-logo{transition:height .28s ease}
.brand-title{transition:font-size .26s ease,margin .26s ease}
.app-shell.working .brand-header{padding:16px 22px 0}
.app-shell.working .brand-logo{height:78px;margin-bottom:0}
.app-shell.working .brand-eyebrow{font-size:10.5px;letter-spacing:.24em;margin-top:2px}
.app-shell.working .brand-title{font-size:clamp(21px,2.3vw,27px);margin:3px 0 4px}
.app-shell.working .brand-standards{display:none}
.app-shell.working .app-nav{margin:12px 0 16px}

/* Nút Tra cứu NỔI (fixed góc dưới phải, hơi trong suốt, tinh tế) */
.fab-ref{position:fixed;right:24px;bottom:24px;z-index:44;width:54px;height:54px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--accent);font-size:22px;
  background:rgba(255,255,255,.62);backdrop-filter:saturate(160%) blur(12px);-webkit-backdrop-filter:saturate(160%) blur(12px);
  border:.5px solid rgba(0,0,0,.10);box-shadow:0 6px 20px rgba(0,0,0,.14),0 2px 6px rgba(0,0,0,.07);
  opacity:.6;transition:opacity .18s,transform .18s,box-shadow .18s}
.fab-ref:hover{opacity:1;transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.20)}
.fab-ref:active{transform:scale(.94)}
.fab-ref .fab-lbl{position:absolute;right:62px;background:rgba(28,28,30,.92);color:#fff;font-size:12px;font-weight:500;
  padding:5px 11px;border-radius:8px;white-space:nowrap;opacity:0;pointer-events:none;transform:translateX(4px);transition:opacity .18s,transform .18s}
.fab-ref:hover .fab-lbl{opacity:1;transform:translateX(0)}

/* Thanh CUỐI: Lưu kết quả → Xuất (khóa Xuất tới khi đã lưu) */
.result-actions{margin:18px 0 0;padding:15px 18px;background:var(--card);border:.5px solid var(--line);border-radius:16px;
  box-shadow:var(--sh-1);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.ra-hint{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:7px;line-height:1.4}
.ra-hint i{font-size:15px}
.ra-btns{display:flex;gap:10px;flex-wrap:wrap}
.btn.locked{opacity:.45;filter:grayscale(.35)}
.btn.locked:hover{opacity:.55;background:#fff}
#btnSaveResult.done{background:var(--ok);border-color:var(--ok)}
#btnSaveResult.done:hover{background:var(--ok)}

/* ---------- Nav: thanh viên thuốc căn giữa + hàng hành động ---------- */
.app-nav{display:flex;flex-direction:column;align-items:center;gap:12px;margin:20px 0 24px}
.head-actions{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;padding:4px 12px;border-radius:999px}
.chip-ok{background:var(--ok-bg);color:var(--ok)} .chip-warn{background:var(--warn-bg);color:var(--warn)}
.btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;padding:7px 15px;border-radius:999px;
  background:#fff;border:.5px solid var(--line2);color:var(--ink);cursor:pointer;
  transition:background .18s,box-shadow .18s,transform .12s,border-color .18s}
.btn:hover{background:var(--bg);border-color:var(--line2)} .btn:active{transform:scale(.97)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-hov);border-color:var(--accent-hov)}

/* ---------- Body: 2 BƯỚC full-khung (Đầu vào → Kết quả) ---------- */
.app-body{padding:14px 24px 96px}   /* chừa đáy để FAB Tra cứu không đè thanh Xuất khi cuộn hết */
/* Tab = segmented control kiểu Apple: khay xám, nút chọn nổi trắng */
.tabbar{display:inline-flex;gap:3px;background:rgba(120,120,128,.13);border-radius:999px;padding:5px;border:0}
.tab{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;padding:10px 22px;cursor:pointer;
  color:var(--muted);background:none;border:0;border-radius:999px;margin:0;
  transition:color .18s,background .18s,box-shadow .18s}
.tab .tnum{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;
  background:rgba(0,0,0,.08);color:var(--muted);font-size:12px;transition:background .18s,color .18s}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--accent);background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08),0 4px 12px rgba(0,0,0,.10)}
.tab.active .tnum{background:var(--accent);color:#fff}
.tabpane{display:none} .tabpane.active{display:block}
.input-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:13px;align-items:start}
#cardDienCuc{grid-column:span 2}
@media(max-width:760px){#cardDienCuc{grid-column:auto}}
.cta-bar{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin-top:18px;padding-top:15px;border-top:.5px solid var(--line)}
.btn-lg{font-size:15px;font-weight:500;padding:12px 26px;border-radius:999px}
.btn-lg.btn-primary{box-shadow:0 2px 8px rgba(0,113,227,.28)}
.btn-lg.btn-primary:hover{box-shadow:0 4px 14px rgba(0,113,227,.34)}
/* ===== Thẻ 1: Thiết lập dự án — bố cục 2 cột cân đối (tông Apple) ===== */
.setup-head{max-width:1160px;margin:2px auto 18px}
.setup-head h3{font-size:19px;font-weight:600;color:var(--ink);letter-spacing:-.02em;margin:0}
.setup-head p{font-size:12.5px;color:var(--muted);margin:5px 0 0;max-width:760px;line-height:1.5}
.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;max-width:1160px;margin:0 auto}
.setup-col{display:flex;flex-direction:column;gap:18px}
.setup-cta{max-width:1160px;margin-left:auto;margin-right:auto}
/* hàng trên 2 thẻ cao bằng nhau (stretch) + thẻ Bộ tiếp địa rộng full bên dưới */
.setup-grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:stretch;max-width:1160px;margin:0 auto}
.setup-grid2 .wide{grid-column:1 / -1}
.setup-set{display:grid;grid-template-columns:minmax(260px,340px) 1fr;gap:20px;align-items:start}
.setup-set-preview{margin:0;align-self:center}
@media(max-width:820px){.setup-grid{grid-template-columns:1fr}.setup-grid2{grid-template-columns:1fr}.setup-grid2 .wide{grid-column:auto}.setup-set{grid-template-columns:1fr}}
.result-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.result-sheet{max-width:920px}
#paneResult{max-width:1100px;margin:0 auto}
#paneResult .result-sheet{max-width:none}
/* Thanh "Tính toán" (bấm mới chạy) + làm mờ kết quả khi số liệu đã đổi */
.compute-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 14px;padding:11px 16px;
  background:var(--card);border:.5px solid var(--line);border-radius:14px;box-shadow:var(--sh-1);transition:background .18s,border-color .18s}
.compute-bar .btn-lg{font-size:15px;padding:10px 24px}
.compute-hint{font-size:12.5px;color:var(--muted)}
.compute-bar.dirty{border-color:var(--warn);background:var(--warn-bg)}
.compute-bar.dirty .compute-hint{color:var(--warn);font-weight:600}
.compute-bar.dirty .btn-primary{animation:pulseCompute 1.5s ease-in-out infinite}
@keyframes pulseCompute{0%,100%{box-shadow:0 0 0 0 rgba(0,113,227,0)}50%{box-shadow:0 0 0 5px rgba(0,113,227,.16)}}
.result-sheet.stale{opacity:.42;filter:grayscale(.2);transition:opacity .2s}

/* dải KẾT QUẢ tóm tắt + điều hướng mục */
.result-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px;margin-bottom:12px}
.sumcard{background:#fff;border:.5px solid var(--line);border-radius:12px;padding:10px 12px;box-shadow:var(--sh-1)}
.sumcard .s-lbl{font-size:11px;color:var(--muted)} .sumcard .s-num{font-size:19px;font-weight:600;letter-spacing:-.02em;margin-top:2px}
.sumcard.verdict-ok{background:var(--ok-bg)} .sumcard.verdict-ok .s-num{color:var(--ok)}
.sumcard.verdict-no{background:var(--no-bg)} .sumcard.verdict-no .s-num{color:var(--no)}
.sec-nav{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:13px}
.secnav-chip{font-size:11.5px;padding:4px 10px;border-radius:999px;border:.5px solid var(--line2);background:#fff;cursor:pointer;color:var(--muted)}
.secnav-chip:hover{background:var(--bg)}
.secnav-chip.active{background:var(--accent-bg);border-color:var(--accent);color:var(--info)}

/* Card thiết lập — tông Apple: nền trắng, viền tóc, bóng mềm, bo 16 */
.icard{background:var(--card);border:.5px solid var(--line);border-radius:16px;padding:17px 19px;
  box-shadow:var(--sh-1);transition:box-shadow .22s,transform .22s,border-color .22s}
.icard:hover{box-shadow:var(--sh-2);transform:translateY(-1px)}
.icard h4{font-size:14.5px;font-weight:700;color:var(--ink);margin:0 0 14px;display:flex;align-items:center;gap:10px;letter-spacing:-.01em}
.icard h4 i{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:var(--accent);color:#fff;font-size:16px;flex:none;box-shadow:0 2px 6px rgba(0,113,227,.28)}
.fld{margin-bottom:11px} .fld:last-child{margin-bottom:0}
.fld label{display:block;font-size:11.5px;color:var(--muted);margin-bottom:4px}
.row{display:flex;gap:6px} .row>div{flex:1}
input,select{width:100%;font-family:inherit;font-size:13px;padding:7px 10px;border:.5px solid var(--line2);
  border-radius:10px;background:#fff;color:var(--ink);transition:border-color .18s,box-shadow .18s}
input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(0,113,227,.14)}
input[readonly]{background:var(--bg);color:var(--muted);cursor:not-allowed}

/* ---------- Lưới nhập 3 cột (thẻ Tính) — mỗi cột 1 tiêu đề gạch chân thẳng hàng ---------- */
.pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px 26px;align-items:start}
.pcol{min-width:0}
.pcol-h{font-size:11.5px;font-weight:700;color:var(--muted);letter-spacing:.03em;text-transform:uppercase;
  margin:0 0 13px;padding-bottom:8px;border-bottom:.5px solid var(--line);min-height:19px}
.pcol-h-sub{font-weight:400;text-transform:none;color:var(--hint);letter-spacing:0;font-size:11px}
.pcol .fld{margin:0 0 10px}
.pcol input[type=checkbox]{width:auto;margin:0;flex:none}
.pchk{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink);cursor:pointer;margin-top:10px}
.pcol-btns{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.pcol-addlayer{font-size:12px;padding:5px 12px;border:.5px solid var(--line2);border-radius:8px;background:#fff;color:var(--ink);cursor:pointer;margin-top:4px}
.pcol-addlayer:hover{background:var(--bg)}
.pcol-rht{display:grid;grid-template-columns:1.4fr 1fr;gap:10px;margin-top:8px}
.pcol-rht .fld{margin:0}
input[type=checkbox]{width:auto}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.echip{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:5px 12px;border-radius:999px;
  border:.5px solid var(--line2);background:#fff;cursor:pointer;user-select:none;
  transition:background .18s,border-color .18s,color .18s}
.echip:hover{background:var(--bg)}
.echip.on{background:var(--accent-bg);border-color:var(--accent);color:var(--info)}
.echip.gem.on{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
.sub-group{border-top:.5px solid var(--line);padding-top:9px;margin-top:9px}
.kbadge{font-family:var(--mono);font-size:12px;background:var(--bg);border-radius:6px;padding:2px 7px;color:var(--info)}

/* ---- Sơ đồ điện cực (diagram.js) ---- */
.diagram-box{border:.5px solid var(--line);border-radius:10px;background:var(--bg);padding:8px 11px 6px;margin-top:6px}
.diagram-cap{font-size:11px;color:var(--muted);margin-bottom:5px;display:flex;align-items:center;gap:5px}
.diagram-cap i{color:var(--accent)}
.blk .diagram-box{background:#fff;margin:4px 0 10px}

/* ---------- Calc-sheet ---------- */
.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.blk{background:var(--card);border:.5px solid var(--line);border-radius:14px;padding:15px 17px;margin-bottom:12px;box-shadow:var(--sh-1)}
.blk.accent{border-color:var(--line2)}
.blk-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.blk-top .b-name{font-size:14px;font-weight:600;letter-spacing:-.01em}
.b-val{font-size:22px;font-weight:600;letter-spacing:-.02em;white-space:nowrap}
.b-val .u{font-size:12px;color:var(--muted);font-weight:400}
.fx{background:var(--bg);border-radius:10px;padding:9px 12px;margin:7px 0;font-size:13px;color:var(--ink);overflow-x:auto}
.fx sub{font-size:.72em} .fx sup{font-size:.72em}
/* Phân số kiểu sách giáo khoa: tử trên · gạch ngang · mẫu dưới (fracify) */
.frac{display:inline-flex;flex-direction:column;text-align:center;vertical-align:middle;margin:0 .18em;line-height:1.25}
.frac>.fr-n{padding:0 .55em 1px} .frac>.fr-d{padding:1px .55em 0;border-top:1.1px solid currentColor}
/* Khối "định nghĩa biến & quy ước" (thu gọn được — <details>) */
details.meta{margin:6px 0;border:.5px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
details.meta>summary{cursor:pointer;list-style:none;user-select:none;font-size:11.5px;color:var(--info);
  background:var(--info-bg);padding:6px 11px;display:flex;align-items:center;gap:6px}
details.meta>summary::-webkit-details-marker{display:none}
details.meta>summary::before{content:"\203A";font-size:14px;line-height:1;transition:transform .15s;display:inline-block}
details.meta[open]>summary::before{transform:rotate(90deg)}
.mv-list{padding:8px 11px 4px}
.mv-row{display:flex;gap:9px;font-size:12px;line-height:1.5;padding:2px 0;align-items:baseline}
.mv-sym{font-family:var(--mono);color:var(--ink);font-weight:600;min-width:46px;flex:none}
.mv-sym sub{font-size:.72em} .mv-sym sup{font-size:.72em}
.mv-desc{color:var(--muted)} .mv-unit{color:var(--hint);font-family:var(--mono)}
.mv-conv-h{font-size:11px;font-weight:600;color:var(--ink);padding:4px 11px 0}
ul.mv-conv{margin:3px 0 9px;padding-left:27px;font-size:11.5px;color:var(--muted);line-height:1.55}
ul.mv-conv li{padding:1px 0}
ul.mv-conv sub{font-size:.72em} ul.mv-conv sup{font-size:.72em}
ul.mv-terms li{padding:2px 0} ul.mv-terms b{color:var(--ink);font-weight:600}
.mv-fx{font-family:var(--mono);color:var(--ink)}
.trace{font-family:var(--mono);font-size:11.5px;color:var(--muted);line-height:1.75;overflow-x:auto}
.trace .tr-row{white-space:nowrap;padding:1px 0}
.trace .tr-row b{color:var(--ink);font-weight:500}
.trace .tr-head{font-family:var(--mono);font-size:11.5px;color:var(--ink);font-weight:600;padding:5px 0 1px;white-space:normal;
  display:flex;flex-wrap:wrap;align-items:center;column-gap:.15em}   /* nhãn/dấu "=" căn GIỮA chiều cao phân số */
.trace .tr-head .th-fx{font-weight:400;color:var(--accent)}
/* Bảng tra số liệu inline (thu gọn <details>) — dòng/ô ĐÃ DÙNG tô đậm */
details.reftbl{margin:5px 0 9px;border:.5px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
details.reftbl>summary{cursor:pointer;list-style:none;user-select:none;font-size:11.5px;color:var(--muted);
  background:var(--bg);padding:5px 11px;display:flex;align-items:center;gap:6px}
details.reftbl>summary::-webkit-details-marker{display:none}
details.reftbl>summary::before{content:"\203A";font-size:14px;line-height:1;transition:transform .15s;display:inline-block}
details.reftbl[open]>summary::before{transform:rotate(90deg)}
table.reftab{border-collapse:collapse;width:auto;margin:7px 11px 3px;font-size:11.5px}
table.reftab th,table.reftab td{border:.5px solid var(--line2);padding:3px 10px;text-align:center;color:var(--muted);white-space:nowrap}
table.reftab th{background:var(--bg);color:var(--ink);font-weight:600}
table.reftab th sub{font-size:.72em}
table.reftab tr.hi-row td{background:#fff6e0;color:var(--ink)}
table.reftab td.hi-col{background:#ffdf85;color:var(--ink);font-weight:700}
.reftab-note{font-size:11px;color:var(--hint);padding:1px 11px 8px;line-height:1.5}
.reftab-note sub{font-size:.72em}
.trace .tr-head sub{font-size:.72em} .trace .tr-head sup{font-size:.72em}
.src{border-left:2.5px solid var(--accent);background:var(--info-bg);border-radius:0 10px 10px 0;padding:6px 11px;
  font-size:11.5px;color:var(--info);margin-top:8px}
.note{border-radius:10px;padding:7px 11px;font-size:12px;margin-top:7px;display:flex;gap:7px;align-items:flex-start}
.note i{margin-top:1px}
.note.warn{background:var(--warn-bg);color:var(--warn)} .note.no{background:var(--no-bg);color:var(--no)}
.note.info{background:var(--info-bg);color:var(--info)}
.subblk{border-top:.5px solid var(--line);padding-top:10px;margin-top:10px}
.subblk:first-child{border-top:0;padding-top:0;margin-top:0}

/* gauge */
.gauge-wrap{margin:12px 0 6px;position:relative;height:34px}
.gauge-track{position:absolute;left:0;right:0;top:13px;height:10px;border-radius:999px;overflow:hidden;display:flex;background:var(--line)}
.gauge-green{background:var(--ok-bg)} .gauge-red{background:var(--no-bg)}
.gauge-thr{position:absolute;top:7px;width:2px;height:22px;background:var(--muted);transform:translateX(-1px)}
.gauge-thr-lbl{position:absolute;top:-6px;font-size:10px;color:var(--muted);transform:translateX(-50%)}
.gauge-mark{position:absolute;top:1px;transform:translateX(-50%);transition:left .35s ease;text-align:center;color:var(--ink)}
.gauge-scale{display:flex;justify-content:space-between;font-size:10.5px;color:var(--hint)}
.verdict{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:600;padding:8px 16px;border-radius:999px;margin-top:10px}
.verdict.ok{background:var(--ok-bg);color:var(--ok)} .verdict.no{background:var(--no-bg);color:var(--no)}

.toggle-trace{font-size:11.5px;color:var(--muted);display:flex;align-items:center;gap:5px;cursor:pointer}
.mini-grid{display:flex;gap:9px;flex-wrap:wrap}
.mini{flex:1;min-width:150px;background:var(--card);border:.5px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:var(--sh-1)}
.mini .m-name{font-size:12.5px;font-weight:600} .mini .m-sub{font-size:11.5px;color:var(--muted);margin-top:2px}

/* slide panel (Tra cứu / Hướng dẫn) */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.34);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:50;display:none}
.scrim.open{display:block}
.panel{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(780px,94vw);max-height:86vh;background:var(--card);
  border:.5px solid var(--line);border-radius:20px;box-shadow:0 28px 90px rgba(0,0,0,.30),0 6px 20px rgba(0,0,0,.12);
  overflow:auto;padding:24px 26px}
.panel h3{font-size:16px;margin-bottom:10px} .panel table{border-collapse:collapse;width:100%;font-size:12.5px;margin:8px 0}
.panel th,.panel td{border:.5px solid var(--line);padding:5px 8px;text-align:left}
.panel .x{position:absolute;top:14px;right:16px;cursor:pointer;font-size:20px;color:var(--muted);background:none;border:0}
.app-shell{position:relative;min-height:100vh}

/* ============================================================================
 *  Thẻ 3 — BẢNG TOÀN TUYẾN (line.js): tông Apple thống nhất với thẻ 1/2.
 *  Trước đây line.js hardcode bảng màu slate → nay dùng biến/lớp chung.
 * ========================================================================== */
/* Bố cục thẻ 3 = các CARD trắng nổi (đồng bộ thẻ 1/2) */
.line-page{max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
.line-page .setup-head{max-width:none;margin:0}
.icard-head-row{display:flex;justify-content:space-between;align-items:center;gap:12px 16px;flex-wrap:wrap;margin-bottom:14px}
.icard-head-row h4{margin:0}
.line-tools{display:flex;gap:8px;flex-wrap:wrap}
.line-page .icard:hover{transform:none}   /* card bảng lớn: giữ yên, chỉ đậm bóng khi hover */
.ltab-wrap{overflow-x:auto}               /* card đã là khung → bảng không cần viền/bóng riêng */
.ltab{width:100%;min-width:900px;border-collapse:separate;border-spacing:0;font-size:13px}
.ltab thead th{background:var(--bg);color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.02em;
  text-align:left;padding:10px 11px;border-bottom:.5px solid var(--line);white-space:nowrap}
.ltab tbody td{padding:9px 11px;border-bottom:.5px solid var(--line);vertical-align:middle;color:var(--ink)}
.ltab tbody tr:last-child td{border-bottom:0}
.ltab tbody tr:hover td{background:#fafafb}
.ltab .num{text-align:right;font-variant-numeric:tabular-nums} .ltab .ctr{text-align:center}
.ltab input,.ltab select{font-size:12.5px;padding:5px 8px;border-radius:8px}
.ltab input[type=number]{text-align:right}
.ltab .r-tong{font-weight:600}
.ltab .r-tong.stale{color:var(--hint);font-weight:400}                       /* chưa tính → mờ */
/* nút biểu tượng trong bảng (mở chi tiết / xóa / tính / tối ưu) */
.lt-ico{border:0;background:none;cursor:pointer;font-size:14px;line-height:1;padding:3px 4px;border-radius:7px;transition:background .15s}
.lt-ico:hover{background:var(--bg)}
.lt-ico.idx{color:var(--accent);font-weight:600;font-size:12.5px}
.lt-ico.del{color:var(--no)} .lt-ico.info{color:var(--accent)}
.lt-ico.calc{color:var(--accent);font-weight:700}                            /* ▶ Tính */
.lt-ico.calc:hover{background:var(--accent-bg)}
.lt-ico.opt{font-size:13px}                                                   /* 🎯 Tối ưu */
.lt-ico.opt:hover{background:var(--warn-bg)}
/* nút ≡ mở lớp đất + thẻ "N lớp" */
.lt-layer-btn{border:.5px solid var(--line2);background:#fff;border-radius:8px;padding:4px 9px;cursor:pointer;font-size:12px;color:var(--muted);transition:background .15s,border-color .15s}
.lt-layer-btn:hover{background:var(--bg)} .lt-layer-btn.on{background:var(--accent-bg);border-color:var(--accent);color:var(--info)}
.lt-multitag{font-size:10px;color:var(--accent);font-weight:600;margin-left:4px}
/* pill Đạt / Thiếu / chưa bộ (badge trong bảng & đếm ở tóm tắt) */
.lpill{display:inline-block;padding:3px 11px;border-radius:999px;font-size:11.5px;font-weight:700;white-space:nowrap}
.lpill-ok{background:var(--ok-bg);color:var(--ok)} .lpill-no{background:var(--no-bg);color:var(--no)}
.lpill-mute{background:var(--bg);color:var(--hint);font-weight:600}
.lpill-stale{background:var(--warn-bg);color:var(--warn);font-weight:600}       /* chưa tính (cần bấm ▶) */
/* POOL chọn bộ dùng cho Tối ưu (chip bật/tắt) */
.optpool{margin:2px 0 14px} .optpool:empty{display:none}
.optpool-lbl{font-size:12.5px;color:var(--muted);margin-bottom:7px}
.optpool-chips{display:flex;flex-wrap:wrap;gap:7px}
.optchip{border:1px solid var(--line2);background:#fff;color:var(--muted);border-radius:999px;padding:5px 12px;font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;transition:background .15s,border-color .15s,color .15s}
.optchip:hover{border-color:var(--accent)}
.optchip.on{background:var(--accent-bg);border-color:var(--accent);color:var(--info)}
.optchip-all{font-weight:600}
/* ô [Rđ] nhập tay (mặc định tự tra II.5.5) */
.lt-rd{width:64px;font-size:13px;padding:5px 7px;border-radius:8px;text-align:right}
.lt-rd.man{border-color:var(--warn);background:var(--warn-bg)}
.lt-rdtag{font-size:9.5px;text-align:right;margin-top:2px;color:var(--hint)}
.lt-rdtag.man{color:var(--warn)} .lt-rdtag a{cursor:pointer;text-decoration:underline;color:inherit}
/* bộ soạn lớp đất mở rộng (chiếm cả dòng) */
.ln-layers{background:var(--bg);border:.5px dashed var(--line2);border-radius:12px;padding:10px 13px;margin:2px 0}
.ln-layers-h{font-size:11px;color:var(--muted);margin-bottom:5px;display:flex;align-items:center;gap:5px}
.ln-lrow{display:flex;align-items:center;gap:6px;margin:3px 0;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.ln-lrow input{width:74px;font-size:12px;padding:4px 6px;border-radius:7px}
.ln-lrow .lidx{font-size:11px;color:var(--hint);min-width:44px} .ln-lrow .ldepth{font-size:10.5px;color:var(--hint)}
.ln-lrow .ldel{border:0;background:none;color:var(--no);cursor:pointer;font-size:13px}
.ln-ladd{font-size:12px;padding:4px 11px;border:.5px solid var(--line2);border-radius:8px;background:#fff;color:var(--ink);cursor:pointer;margin-top:5px}
.ln-ladd:hover{background:var(--card)}
/* tóm tắt đếm Đạt/Thiếu + bảng tổng hợp vật tư */
.lsum{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:13px}
.mtab{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
.mtab th{text-align:left;padding:8px 12px;background:var(--bg);color:var(--muted);font-size:11px;font-weight:600;border-bottom:.5px solid var(--line)}
.mtab td{padding:7px 12px;border-top:.5px solid var(--line);color:var(--ink)} .mtab tr:first-child td{border-top:0}
.mtab .num{text-align:right;font-variant-numeric:tabular-nums}
.mtab .total td{background:var(--bg);font-weight:700}
.mtab-empty,.mtab-note{font-size:11px;color:var(--hint);line-height:1.5} .mtab-note{margin-top:6px}
