/* ===== Tokens (bảng màu đã kiểm: xanh · cam · ngọc · vàng; trạng thái luôn kèm biểu tượng + chữ) ===== */
:root{
  color-scheme: light;
  --bg:#f4f4f1; --surface:#fcfcfb; --surface2:#f7f7f4; --ink:#0b0b0b; --ink2:#52514e; --muted:#6f6d68; --grid:#e8e7e1; --line:#c3c2b7;
  --accent:#2a78d6; --accent-ink:#ffffff; --accent-soft:#e8f0fb;
  --s1:#2a78d6; --s2:#eb6834; --s3:#1baf7a; --s4:#eda100; --series1:var(--s1); --series2:var(--s2);
  --good:#006300; --warn:#8a5200; --bad:#b42323; --good-bg:#e6f3e6; --warn-bg:#fdf0d9; --bad-bg:#fbe7e7;
  --good-mark:#0ca30c; --warn-mark:#fab219; --bad-mark:#d03b3b;
  --border:rgba(11,11,11,.10); --shadow:0 1px 2px rgba(16,16,12,.05),0 6px 18px -10px rgba(16,16,12,.12);
  --side:#fcfcfb; --radius:14px;
}
@media (prefers-color-scheme: dark){
  :root:where(:not([data-theme="light"])){
    color-scheme: dark;
    --bg:#0d0d0d; --surface:#1a1a19; --surface2:#222221; --ink:#f0efec; --ink2:#c3c2b7; --muted:#a09e96; --grid:#2c2c2a; --line:#383835;
    --accent:#3987e5; --accent-ink:#0b0b0b; --accent-soft:#16253a;
    --s1:#3987e5; --s2:#d95926; --s3:#199e70; --s4:#c98500;
    --good:#4fc24f; --warn:#f0b43a; --bad:#ec7a7a; --good-bg:#12301a; --warn-bg:#352a10; --bad-bg:#3a1717;
    --border:rgba(255,255,255,.10); --shadow:none; --side:#141413;
  }
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --bg:#0d0d0d; --surface:#1a1a19; --surface2:#222221; --ink:#f0efec; --ink2:#c3c2b7; --muted:#a09e96; --grid:#2c2c2a; --line:#383835;
  --accent:#3987e5; --accent-ink:#0b0b0b; --accent-soft:#16253a;
  --s1:#3987e5; --s2:#d95926; --s3:#199e70; --s4:#c98500;
  --good:#4fc24f; --warn:#f0b43a; --bad:#ec7a7a; --good-bg:#12301a; --warn-bg:#352a10; --bad-bg:#3a1717;
  --border:rgba(255,255,255,.10); --shadow:none; --side:#141413;
}
*{box-sizing:border-box}
html{font-size:15px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.45;-webkit-font-smoothing:antialiased}
h1{font-size:1.55rem;margin:0 0 .2rem;letter-spacing:-.015em}
h2{font-size:1.05rem;margin:0 0 .6rem;letter-spacing:-.005em}
h3{font-size:.92rem;margin:0 0 .4rem;color:var(--ink2)}
a{color:var(--accent)}

/* ===== Khung ứng dụng: menu trái + nội dung ===== */
.app{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
.sidebar{background:var(--side);border-right:1px solid var(--border);padding:1rem .8rem;display:flex;flex-direction:column;gap:.9rem;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;align-items:center;gap:.55rem;font-weight:700;font-size:1.02rem;padding:.2rem .5rem}
.brand-mark{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--s1),var(--s3));display:grid;place-items:center;flex:none}
.brand-mark svg{width:16px;height:16px;stroke:#fff;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.center-name{color:var(--ink2);font-size:.82rem;padding:.35rem .6rem;margin:0 .1rem;border-radius:8px;background:var(--surface2);border:1px solid var(--border);display:block}
.center-name:empty{display:none}
#nav{display:flex;flex-direction:column;gap:.1rem;flex:1}
#nav a{display:flex;align-items:center;gap:.65rem;padding:.55rem .65rem;border-radius:9px;color:var(--ink2);text-decoration:none;font-size:.93rem}
#nav a svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
#nav a:hover{background:var(--accent-soft);color:var(--ink)}
#nav a.active{background:var(--accent-soft);color:var(--accent);font-weight:650}
.side-foot{display:flex;gap:.4rem;flex-wrap:wrap}
.side-foot .btn{flex:1;white-space:nowrap}
.content{min-width:0}
.mobilebar{display:none}
main{max-width:1320px;margin:0 auto;padding:1.4rem 1.6rem 3.5rem;outline:none}
.banner{margin:.7rem 0 0;padding:.55rem .9rem;border-radius:10px;border:1px solid var(--border);display:flex;gap:.8rem;align-items:center;font-size:.9rem}
.banner.warn{background:var(--warn-bg);color:var(--ink)}
.banner.info{background:var(--accent-soft)}
#banners{padding:0 1.6rem;max-width:1320px;margin:0 auto}
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;inset:0 auto 0 0;width:260px;z-index:30;transform:translateX(-105%);transition:transform .2s;height:100vh}
  body.nav-open .sidebar{transform:none;box-shadow:0 0 40px rgba(0,0,0,.35)}
  .mobilebar{display:flex;align-items:center;gap:.7rem;padding:.6rem 1rem;background:var(--side);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}
  main{padding:1rem 1rem 3rem} #banners{padding:0 1rem}
}
@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}

.row{display:flex;gap:.8rem;flex-wrap:wrap;align-items:center}
.row.end{justify-content:flex-end}
.grow{flex:1}
.grid{display:grid;gap:.9rem}
.g4{grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr))}
.g2{grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr))}
.g-main{grid-template-columns:minmax(0,2fr) minmax(340px,1fr)}
@media(max-width:900px){.g-main{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;box-shadow:var(--shadow)}
.card h2,.card h3{margin-top:0}
.kpi .label{color:var(--ink2);font-size:.85rem}
.kpi .big{font-size:1.85rem;font-weight:700;margin:.15rem 0;letter-spacing:-.02em}
.kpi .sub{font-size:.82rem;color:var(--muted);display:flex;gap:.7rem;flex-wrap:wrap}
.kpi .sub b{color:var(--ink2);font-weight:600}
.delta{font-weight:600}
.delta.up{color:var(--good)} .delta.down{color:var(--bad)} .delta.na{color:var(--muted)}
.pill{display:inline-flex;align-items:center;gap:.3rem;padding:.12rem .55rem;border-radius:999px;font-size:.78rem;font-weight:600;border:1px solid var(--border);white-space:nowrap}
.pill.good{background:var(--good-bg);color:var(--good)} .pill.warn{background:var(--warn-bg);color:var(--warn)} .pill.bad{background:var(--bad-bg);color:var(--bad)}
.pill.none{color:var(--muted)}
.tag{font-size:.72rem;padding:.05rem .4rem;border-radius:4px;background:var(--grid);color:var(--ink2);margin-left:.35rem;white-space:nowrap}
.tag.unconf{background:var(--warn-bg);color:var(--warn)}
.muted{color:var(--muted)} .small{font-size:.85rem}
.btn{font:inherit;padding:.45rem .9rem;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--ink);cursor:pointer}
.btn:hover{background:var(--accent-soft)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:600}
.btn.primary:hover{filter:brightness(1.07)}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.btn.ghost{background:transparent}
.btn.small{padding:.25rem .6rem;font-size:.85rem}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:.4rem .55rem;max-width:100%}
input[type=text],input[type=number],input[type=date],input[type=month],select{min-width:0}
textarea{width:100%;min-height:4.5rem;resize:vertical}
label.f{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem;color:var(--ink2)}
table{border-collapse:collapse;width:100%;font-size:.9rem}
th,td{padding:.4rem .6rem;border-bottom:1px solid var(--grid);text-align:left;vertical-align:middle}
th{font-weight:600;color:var(--ink2);background:var(--bg);position:sticky;top:0;font-size:.82rem}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
tr.cat td{background:var(--accent-soft);font-weight:600}
tr.err td{background:var(--bad-bg)} tr.skip td{color:var(--muted)}
.tablewrap{overflow:auto;max-height:70vh;border:1px solid var(--border);border-radius:8px;background:var(--surface)}
.entry-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.7rem 1rem}
.entry-grid label{display:flex;flex-direction:column;gap:.15rem;font-size:.85rem}
.entry-grid input{width:100%;text-align:right;font-variant-numeric:tabular-nums}
.entry-grid .meta{color:var(--muted);font-size:.74rem}
details.group{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.2rem 1rem .9rem;margin-bottom:.8rem}
details.group>summary{cursor:pointer;font-weight:600;padding:.6rem 0}
.progress{height:10px;border-radius:5px;background:var(--grid);overflow:hidden;margin:.35rem 0}
.progress>i{display:block;height:100%;background:var(--accent)}
.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--grid);margin-bottom:.8rem;flex-wrap:wrap}
.tabs button{font:inherit;padding:.45rem .9rem;border:0;background:none;color:var(--ink2);cursor:pointer;border-bottom:2px solid transparent}
.tabs button.active{color:var(--ink);font-weight:600;border-bottom-color:var(--accent)}
.warnlist{margin:.3rem 0;padding-left:1.1rem;color:var(--warn)} .errlist{margin:.3rem 0;padding-left:1.1rem;color:var(--bad)}
ul.plain{list-style:none;margin:0;padding:0} ul.plain li{padding:.35rem 0;border-bottom:1px solid var(--grid)}
dialog{border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink);padding:1.1rem 1.2rem;max-width:min(640px,94vw);width:100%}
dialog::backdrop{background:rgba(0,0,0,.45)}
dialog h2{margin-top:0}
dialog .actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1rem;flex-wrap:wrap}
#toast{position:fixed;bottom:1rem;left:50%;transform:translateX(-50%);z-index:100;display:flex;flex-direction:column;gap:.4rem;align-items:center}
#toast div{background:var(--ink);color:var(--bg);padding:.55rem 1rem;border-radius:8px;font-size:.9rem;box-shadow:0 4px 14px rgba(0,0,0,.25)}
#toast div.err{background:var(--bad);color:#fff}
.chart{width:100%;height:auto;display:block}
.chart text{fill:var(--muted);font-size:11px}
.chart .grid line{stroke:var(--grid)}
.chart .axis{stroke:var(--line)}
.chart-tip{position:absolute;pointer-events:none;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:.3rem .55rem;font-size:.82rem;box-shadow:0 2px 8px rgba(0,0,0,.18);white-space:nowrap;z-index:5}
.chartbox{position:relative}
.empty{text-align:center;padding:2rem 1rem;color:var(--ink2)}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:.25rem .9rem;font-size:.92rem}
.stepper{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}
.stepper span{padding:.2rem .7rem;border-radius:999px;background:var(--grid);color:var(--ink2);font-size:.82rem}
.stepper span.on{background:var(--accent);color:var(--accent-ink);font-weight:600}
.stat-icon{font-size:.8em}
@media print{.sidebar,.mobilebar,#banners,.btn{display:none}.app{display:block}}

/* ===== Biểu đồ & thành phần dashboard ===== */
.chart text{font-variant-numeric:tabular-nums}
.chartcard{display:flex;flex-direction:column;gap:.5rem}
.chartcard .hd{display:flex;gap:.6rem;align-items:flex-start;flex-wrap:wrap}
.chartcard .hd h2{margin:0}
.chartcard .sub{color:var(--muted);font-size:.82rem}
.legend{display:flex;gap:.9rem;flex-wrap:wrap;font-size:.82rem;color:var(--ink2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:.35rem;vertical-align:-1px}
.legend i.ln{height:3px;width:14px;border-radius:2px;vertical-align:3px}
.seg{display:inline-flex;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--surface2)}
.seg button{font:inherit;font-size:.82rem;padding:.3rem .65rem;border:0;background:none;color:var(--ink2);cursor:pointer}
.seg button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}
.seg button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.kpi{position:relative;overflow:hidden}
.sparkrow{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.sparkrow .spark{flex:1;height:30px;min-width:0}
.kpi .chip{display:inline-flex;align-items:center;gap:.25rem;font-size:.8rem;font-weight:650;padding:.12rem .5rem;border-radius:999px}
.chip.up{background:var(--good-bg);color:var(--good)} .chip.down{background:var(--bad-bg);color:var(--bad)} .chip.na{background:var(--grid);color:var(--muted)}
.kpi .chips{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.35rem;font-size:.76rem;color:var(--muted);align-items:center}
.ring{display:block;margin:0 auto}
.ring text{fill:var(--ink)}
.cmp-row{display:grid;grid-template-columns:7.5rem 1fr 4.2rem;gap:.6rem;align-items:center;font-size:.85rem;padding:.2rem 0}
.hint{color:var(--muted);font-size:.8rem}
.tbl-toggle{margin-top:.2rem}
.skeleton{height:120px;border-radius:12px;background:linear-gradient(90deg,var(--grid),var(--surface2),var(--grid));background-size:200% 100%;animation:sk 1.2s infinite}
@keyframes sk{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}
.chart-tip b{font-weight:650}
.chart-tip .r{display:flex;gap:.5rem;justify-content:space-between}
.chart-tip .r i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:.3rem}
.hbars{display:grid;gap:.3rem}
.hrow{display:grid;grid-template-columns:minmax(6rem,34%) 1fr minmax(4.5rem,auto);gap:.6rem;align-items:center;font-size:.86rem;padding:.12rem 0}
.hl{color:var(--ink2)} .hb{height:14px;background:var(--surface2);border-radius:4px;overflow:hidden;display:block}
.hb i{display:block;height:100%;border-radius:0 4px 4px 0} .hv{text-align:right;font-variant-numeric:tabular-nums;font-weight:600} .hv small{color:var(--muted);font-weight:400}
.div{display:grid;gap:.15rem}
.drow{display:grid;grid-template-columns:minmax(7rem,34%) 1fr 5.6rem;gap:.6rem;align-items:center;font-size:.86rem;padding:.2rem 0}
.dl{color:var(--ink2)} .db{position:relative;height:14px;display:block}
.db em{position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--line)}
.db i{position:absolute;top:1px;bottom:1px}
.db i.pos{background:var(--s1);border-radius:0 4px 4px 0} .db i.neg{background:var(--bad-mark);border-radius:4px 0 0 4px}
.dv{text-align:right;font-variant-numeric:tabular-nums;font-weight:650} .dv.up{color:var(--good)} .dv.down{color:var(--bad)} .dv.na{color:var(--muted);font-weight:400}
.heat{display:grid;gap:2px;font-size:.74rem;overflow-x:auto}
.hc{color:var(--muted);text-align:center} .hr{color:var(--ink2);padding-right:.4rem;align-self:center}
.hx{height:26px;display:grid;place-items:center;border-radius:4px;color:var(--ink);font-variant-numeric:tabular-nums}
.hx.none{background:var(--surface2);border:1px dashed var(--line)}

.chart text.halo,.chart .avglbl{paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}

.navsep{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:.7rem .65rem .2rem}
tr.sel td{background:var(--accent-soft)}
.tablewrap td select{width:100%;font-size:.82rem;padding:.2rem .3rem}

/* ===================================================================
   v0.5 — Giao diện mới (khung, thanh trên, thẻ KPI, bố cục Tổng quan)
   Chỉ bổ sung/ghi đè; tên biến màu giữ nguyên.
   =================================================================== */
:root{--sidebar:#f9f9f6;--sidebar-active:#e8f0fb;--sidebar-active-ink:#1f65b7;--focus:#2a78d6;--violet:#8c79d9;--shadow:0 8px 26px rgba(18,28,40,.06)}
@media (prefers-color-scheme: dark){:root:where(:not([data-theme="light"])){--sidebar:#121211;--sidebar-active:#1b2a3d;--sidebar-active-ink:#76b3ff;--focus:#75b4ff;--shadow:0 12px 32px rgba(0,0,0,.18);--side:#121211}}
:root[data-theme="dark"]{--sidebar:#121211;--sidebar-active:#1b2a3d;--sidebar-active-ink:#76b3ff;--focus:#75b4ff;--shadow:0 12px 32px rgba(0,0,0,.18);--side:#121211}
:root{--side:var(--sidebar)}
html{scroll-behavior:smooth}
body{font-family:"Segoe UI",system-ui,-apple-system,Arial,sans-serif;letter-spacing:-.005em}
a:hover{text-decoration:underline}
.btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

/* khung */
.app{grid-template-columns:248px minmax(0,1fr)}
.sidebar{background:var(--sidebar);padding:1.15rem .8rem .8rem;gap:0;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.brand{gap:.65rem;padding:.1rem .5rem 1.1rem}
.brand-mark{width:38px;height:38px;border-radius:12px}
.brand-mark svg{width:21px;height:21px}
.brand b{display:block;font-size:.95rem;letter-spacing:-.02em}
.brand small{display:block;color:var(--muted);font-size:.72rem;font-weight:500;margin-top:2px}
.center-name{padding:.7rem .6rem .8rem;margin:0 0 .4rem;border-radius:0;background:none;border:0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);color:var(--ink);font-weight:650;font-size:.86rem}
.center-name::before{content:"ĐƠN VỊ ĐANG XEM";display:block;font-size:.66rem;letter-spacing:.1em;color:var(--muted);font-weight:750;margin-bottom:.3rem}
#nav{gap:2px;flex:1;padding-bottom:.6rem}
#nav a{min-height:38px;padding:.5rem .65rem;border-radius:9px;font-size:.9rem;font-weight:550;gap:.7rem}
#nav a:hover{background:var(--surface2);color:var(--ink);text-decoration:none}
#nav a.active{background:var(--sidebar-active);color:var(--sidebar-active-ink);font-weight:700}
.nav-badge{margin-left:auto;min-width:20px;padding:1px 6px;border-radius:20px;background:var(--accent-soft);color:var(--accent);font-size:.7rem;font-style:normal;font-weight:700;text-align:center}
.nav-badge.warn{background:var(--warn-bg);color:var(--warn)}
.navsep{font-size:.66rem;letter-spacing:.1em;font-weight:750;padding:.95rem .65rem .3rem}
.navgap{height:.4rem}
.side-bottom{display:flex;flex-direction:column;gap:.5rem;padding-top:.6rem;border-top:1px solid var(--border)}
.nav.theme{display:flex;align-items:center;gap:.7rem;width:100%;min-height:38px;padding:.5rem .65rem;border:0;border-radius:9px;background:transparent;color:var(--ink2);font:inherit;font-size:.9rem;font-weight:550;cursor:pointer;text-align:left}
.nav.theme:hover{background:var(--surface2)}
.nav.theme .theme-ico{width:18px;text-align:center;font-size:1.05rem}
.nav.theme i{margin-left:auto;width:30px;height:18px;padding:2px;border-radius:20px;background:var(--line);flex:none}
.nav.theme i:after{content:"";display:block;width:14px;height:14px;border-radius:50%;background:var(--surface);transition:transform .15s}
:root[data-theme="light"] .nav.theme i{background:var(--accent)}
:root[data-theme="light"] .nav.theme i:after{transform:translateX(12px)}
.local{display:flex;gap:.55rem;padding:.65rem .7rem;border:1px solid var(--border);border-radius:10px;background:var(--surface);align-items:flex-start}
.local b{display:block;font-size:.76rem}
.local small{display:block;color:var(--muted);font-size:.7rem;margin-top:2px}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--s3);flex:none;margin-top:.3rem}
.side-bottom .btn{width:100%}
.version{display:block;padding:.2rem .3rem 0;color:var(--muted);font-size:.64rem;letter-spacing:.08em}
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:.8rem;min-height:56px;padding:0 1.6rem;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(14px)}
.crumb{color:var(--muted);font-size:.8rem}.crumb span{margin:0 .5rem;color:var(--line)}.crumb b{color:var(--ink);font-weight:650}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:.4rem}
.iconbtn{position:relative;display:grid;place-items:center;width:38px;height:38px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--ink2);font-size:1.1rem;cursor:pointer;text-decoration:none}
.iconbtn:hover{background:var(--surface2);border-color:var(--border);text-decoration:none}
.iconbtn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.iconbtn i{position:absolute;top:2px;right:1px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--bad-mark);color:#fff;font-size:.66rem;font-style:normal;font-weight:700;display:grid;place-items:center}
.iconbtn i[hidden]{display:none}
.mobile-menu{display:none}
main{max-width:1500px;padding:1.5rem 1.6rem 3rem}
#banners{max-width:1500px}
.banner{border-radius:12px;padding:.7rem .95rem;gap:.7rem}
.banner a{font-weight:700;white-space:nowrap}
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .sidebar{width:270px;box-shadow:none}
  body.nav-open .sidebar{box-shadow:0 0 40px rgba(0,0,0,.35)}
  .mobile-menu{display:grid}
  .topbar{padding:0 .8rem}
}

/* tiêu đề trang + thanh công cụ */
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.eyebrow{display:block;color:var(--accent);font-size:.7rem;font-weight:750;letter-spacing:.1em;margin-bottom:.3rem}
.page-head h1{font-size:1.75rem;letter-spacing:-.03em;margin:0 0 .25rem}
.page-head h1 span{color:var(--muted);font-size:1rem;font-weight:500;letter-spacing:-.01em}
.page-head p{margin:0;color:var(--muted);font-size:.85rem}
.tools{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}
.datebar{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap}
.datebar .btn,.datebar input{height:34px;padding:0 .7rem;font-size:.85rem}
.datebar .today{color:var(--accent);background:var(--accent-soft);border-color:transparent;font-weight:650}
.actbar{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;text-decoration:none;transition:background .12s,transform .12s}
.btn:hover{text-decoration:none}
.btn.quiet{background:transparent;border-color:transparent;color:var(--accent)}
.statusrow{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:0 0 1rem}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:.5rem;margin:.2rem 0 .6rem}
.section-head h2{margin:0;font-size:1rem}.section-head p{margin:2px 0 0;color:var(--muted);font-size:.8rem}

/* thẻ KPI */
.k2{padding:1rem 1.05rem}
.k2 .kh{display:flex;align-items:center;gap:.55rem;color:var(--ink2);font-size:.86rem;font-weight:650;flex-wrap:wrap}
.ico{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;flex:none}
.ico svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ico.blue{color:var(--s1);background:color-mix(in srgb,var(--s1) 14%,transparent)}
.ico.green{color:var(--s3);background:color-mix(in srgb,var(--s3) 14%,transparent)}
.ico.amber{color:var(--s4);background:color-mix(in srgb,var(--s4) 16%,transparent)}
.ico.violet{color:var(--violet);background:color-mix(in srgb,var(--violet) 16%,transparent)}
.k2 .big{font-size:1.9rem;line-height:1.1;margin:.7rem 0 .15rem;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.k2 .big small{font-size:.75rem;font-weight:500;color:var(--muted);letter-spacing:0}
.k2 .mtd{font-size:1.1rem;font-weight:650;font-variant-numeric:tabular-nums;margin-top:.15rem}
.k2 .kfoot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.55rem}
.k2 .kfoot .spark{width:96px;height:26px;flex:none}
.k2 hr{border:0;border-top:1px solid var(--grid);margin:.65rem 0 .5rem}

/* bố cục Tổng quan */
.dash-main{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,1fr);gap:.9rem;margin:.9rem 0;align-items:stretch}
.dash-three{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:.9rem;margin-bottom:.9rem;align-items:start}
.dash-bottom{display:grid;grid-template-columns:1.5fr 1fr;gap:.9rem;margin-bottom:.9rem;align-items:start}
@media(max-width:1250px){.dash-three{grid-template-columns:1fr 1fr}.dash-three>:last-child{grid-column:1/-1}}
@media(max-width:900px){.dash-main,.dash-three,.dash-bottom{grid-template-columns:1fr}}
.phead{display:flex;justify-content:space-between;align-items:flex-start;gap:.6rem;margin-bottom:.5rem}
.phead h2{margin:0 0 2px;font-size:.98rem}.phead p{margin:0;color:var(--muted);font-size:.78rem}
.phead>a{font-size:.8rem;font-weight:650;white-space:nowrap}
.progress-body{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;padding:.7rem 0}
.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;padding-top:.7rem;border-top:1px solid var(--grid)}
.mini-stats label{display:block;color:var(--muted);font-size:.72rem}
.mini-stats b{display:block;margin-top:3px;font-size:.98rem;font-variant-numeric:tabular-nums}

/* biểu đồ vòng */
.donutbox{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.donut{flex:none}
.donut text{fill:var(--ink)}
.donutlist{flex:1;min-width:170px;display:grid;gap:.3rem;font-size:.84rem}
.donutlist>div{display:grid;grid-template-columns:10px minmax(0,1fr) auto auto;gap:.5rem;align-items:center}
.donutlist i{width:10px;height:10px;border-radius:3px}
.donutlist em{font-style:normal;color:var(--muted);font-variant-numeric:tabular-nums;min-width:3.2rem;text-align:right}
.donutlist b{font-variant-numeric:tabular-nums}

/* cảnh báo / việc cần làm dạng hàng */
.arow{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:.6rem;align-items:start;padding:.65rem 0;border-top:1px solid var(--grid)}
.arow:first-of-type{border-top:0}
.aico{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:var(--surface2);color:var(--muted);font-weight:800;font-size:.8rem}
.aico.warn{background:var(--warn-bg);color:var(--warn)}.aico.bad{background:var(--bad-bg);color:var(--bad)}.aico.good{background:var(--good-bg);color:var(--good)}
.arow b{display:block;font-size:.86rem}.arow p{margin:2px 0;color:var(--muted);font-size:.78rem;line-height:1.4}
.trow{display:flex;align-items:center;gap:.6rem;padding:.6rem 0;border-top:1px solid var(--grid)}
.trow:first-of-type{border-top:0}
.trow input{width:17px;height:17px;flex:none;accent-color:var(--s3)}
.trow .tt{flex:1;min-width:0}.trow .tt b{display:block;font-size:.86rem}.trow .tt small{color:var(--muted);font-size:.76rem}
.tprog{display:flex;justify-content:space-between;font-size:.8rem;color:var(--muted);margin-bottom:.3rem}
.tprog b{color:var(--ink)}

/* hàng bảng gọn */
td a.lk{font-weight:650;font-size:.82rem}
@media(prefers-reduced-motion:reduce){.nav.theme i:after,.btn{transition:none}}
@media print{.topbar,.side-bottom{display:none}}

.k2 .mtd{white-space:nowrap}

#nav a{min-height:34px;padding:.4rem .65rem}
.navsep{padding:.7rem .65rem .2rem}
.side-bottom{position:sticky;bottom:0;background:var(--sidebar);margin-top:auto;padding-bottom:.2rem}
.local{padding:.5rem .65rem}

.sidebar{overflow:hidden}
#nav{overflow-y:auto;min-height:0;scrollbar-width:thin;scrollbar-color:var(--line) transparent;margin-right:-.3rem;padding-right:.3rem}
.side-bottom{position:static;margin-top:0;flex:none}

/* ===================================================================
   v0.5b — Phong cách "bảng điều khiển xanh": thanh bên xanh đậm, nền xanh nhạt,
   thẻ chỉ số phủ màu, banner đầu trang, thanh trạng thái cuối trang.
   =================================================================== */
:root{
  --bg:#edf2fa; --surface:#ffffff; --surface2:#f3f6fc; --ink:#0f1d3a; --ink2:#44526f; --muted:#6a7890; --grid:#e3e9f4; --line:#c7d2e6;
  --accent:#1f6feb; --accent-soft:#e5efff; --accent-ink:#fff;
  --s1:#1f6feb; --s2:#f2783a; --s3:#17b26a; --s4:#f0a30a; --violet:#7c5ce0; --teal:#0fb5c4;
  --border:rgba(24,58,122,.11); --shadow:0 6px 22px -12px rgba(24,58,122,.22);
  --sidebar:#0b2a6b; --sidebar-active:#1f6feb; --sidebar-active-ink:#fff; --focus:#1f6feb; --side:#0b2a6b;
}
@media (prefers-color-scheme: dark){:root:where(:not([data-theme="light"])){
  --bg:#0a1122; --surface:#111a30; --surface2:#17223d; --ink:#eaf0ff; --ink2:#b7c4e2; --muted:#8c9bbd; --grid:#1f2c4a; --line:#2b3b60;
  --accent:#4a90ff; --accent-soft:#16294d; --accent-ink:#06122b; --s1:#4a90ff; --s2:#ff8a4d; --s3:#27c27c; --s4:#f4b73a; --violet:#9b82f0; --teal:#2cc7d4;
  --border:rgba(150,180,255,.13); --shadow:none; --sidebar:#081a45; --sidebar-active:#2b6fe0; --focus:#7db0ff; --side:#081a45}}
:root[data-theme="dark"]{
  --bg:#0a1122; --surface:#111a30; --surface2:#17223d; --ink:#eaf0ff; --ink2:#b7c4e2; --muted:#8c9bbd; --grid:#1f2c4a; --line:#2b3b60;
  --accent:#4a90ff; --accent-soft:#16294d; --accent-ink:#06122b; --s1:#4a90ff; --s2:#ff8a4d; --s3:#27c27c; --s4:#f4b73a; --violet:#9b82f0; --teal:#2cc7d4;
  --border:rgba(150,180,255,.13); --shadow:none; --sidebar:#081a45; --sidebar-active:#2b6fe0; --focus:#7db0ff; --side:#081a45}
body{background:var(--bg)}

/* thanh bên xanh đậm (cả hai giao diện) */
.sidebar{--ink:#fff;--ink2:#cfdbf7;--muted:#8ea6d8;--border:rgba(255,255,255,.12);--surface:rgba(255,255,255,.07);--surface2:rgba(255,255,255,.09);--line:rgba(255,255,255,.25);
  background:linear-gradient(180deg,#0c2f78 0%,#082058 55%,#061744 100%);color:#fff;border-right:0;padding:1.1rem .75rem .8rem}
.brand{color:#fff;padding:.1rem .45rem 1rem}
.brand b{font-size:.98rem;letter-spacing:.01em}
.brand small{color:#9db4e6}
.brand-mark{background:linear-gradient(135deg,#2f8bff,#17b2c8);box-shadow:0 6px 16px -6px rgba(47,139,255,.8)}
.center-name{color:#fff;border-color:rgba(255,255,255,.14)}
.center-name::before{color:#8ea6d8}
#nav{gap:3px;padding-bottom:.5rem}
#nav>a,.grouphead{display:flex;align-items:center;gap:.7rem;width:100%;min-height:40px;padding:.5rem .7rem;border:0;border-radius:11px;background:transparent;color:#d3def8;font:inherit;font-size:.92rem;font-weight:600;cursor:pointer;text-align:left;text-decoration:none}
#nav>a svg,.grouphead svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
#nav>a:hover,.grouphead:hover{background:rgba(255,255,255,.09);color:#fff;text-decoration:none}
#nav>a.active{background:var(--sidebar-active);color:#fff;box-shadow:0 8px 18px -8px rgba(31,111,235,.9)}
.grouphead .chev{margin-left:auto;width:16px;height:16px;transition:transform .15s}
.navgroup.open .chev{transform:rotate(180deg)}
.navgroup.has-active>.grouphead{color:#fff}
.groupbody{display:none;flex-direction:column;gap:2px;padding:2px 0 4px .9rem;margin-left:.9rem;border-left:1px solid rgba(255,255,255,.13)}
.navgroup.open .groupbody{display:flex}
.groupbody a{display:flex;align-items:center;gap:.6rem;min-height:34px;padding:.35rem .7rem;border-radius:9px;color:#b9c9ee;font-size:.87rem;font-weight:550;text-decoration:none}
.groupbody a:hover{background:rgba(255,255,255,.09);color:#fff}
.groupbody a.active{background:rgba(47,139,255,.28);color:#fff;font-weight:700}
.subdot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.6;flex:none}
.nav-badge{background:rgba(255,255,255,.16);color:#fff}
.nav-badge.warn{background:#f0a30a;color:#2b1c00}
#nav>a.active .nav-badge{background:rgba(255,255,255,.28)}
.side-bottom{border-top:1px solid rgba(255,255,255,.12)}
.local{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.13)}
.local b{color:#fff}.local small{color:#9db4e6}
.side-bottom .btn{background:transparent;border-color:rgba(255,255,255,.2);color:#d3def8}
.side-bottom .btn:hover{background:rgba(255,255,255,.1)}
.version{color:#7f98cf}

/* thanh trên */
.topbar{gap:.8rem;min-height:62px;background:color-mix(in srgb,var(--bg) 88%,transparent)}
.datepill{display:flex;align-items:center;gap:.5rem;height:40px;padding:0 .9rem;border-radius:11px;background:var(--surface);border:1px solid var(--border);color:var(--ink);font-weight:650;font-size:.88rem;text-decoration:none;white-space:nowrap}
.datepill:hover{text-decoration:none;border-color:var(--accent)}
.datepill svg,.searchbox svg{width:18px;height:18px;stroke:var(--accent);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.searchbox{flex:1;max-width:620px;display:flex;align-items:center;gap:.6rem;height:40px;padding:0 .9rem;border-radius:11px;background:var(--surface);border:1px solid var(--border)}
.searchbox:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.searchbox input{flex:1;min-width:0;border:0;background:transparent;padding:0;outline:none;font-size:.88rem}
.searchbox svg{stroke:var(--muted)}
.userchip{display:flex;align-items:center;gap:.55rem;margin-left:.4rem;padding:.2rem .3rem .2rem .2rem;border-radius:12px;color:var(--ink);text-decoration:none}
.userchip:hover{text-decoration:none;background:var(--surface)}
.userchip b,.userchip small{display:block;line-height:1.2}
.userchip b{font-size:.84rem}.userchip small{font-size:.72rem;color:var(--muted);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--s1),var(--teal));color:#fff;font-size:.78rem;font-weight:800;flex:none}
.iconbtn{background:var(--surface);border-color:var(--border)}
@media(max-width:1100px){.userchip span:last-child{display:none}}
@media(max-width:900px){.searchbox input::placeholder{color:transparent}.datepill span{display:none}}

/* banner đầu trang */
.hero{position:relative;overflow:hidden;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1.4rem;padding:1.1rem 1.6rem;margin-bottom:1rem;border-radius:16px;color:#fff;
  background:linear-gradient(105deg,#0a2a73 0%,#134bb3 55%,#1f7be8 100%);box-shadow:0 14px 30px -18px rgba(15,60,160,.8)}
.hero:before{content:"";position:absolute;right:-60px;top:-90px;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.18),transparent 65%)}
.hero svg.deco{position:absolute;right:230px;bottom:0;height:100%;width:260px;opacity:.22;pointer-events:none}
.hero .hbrand{display:flex;align-items:center;gap:.8rem;position:relative}
.hero .hbrand .mk{display:grid;place-items:center;width:52px;height:52px;border-radius:15px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28)}
.hero .hbrand .mk svg{width:28px;height:28px;stroke:#fff;fill:none;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}
.hero .hbrand b{display:block;font-size:1.35rem;letter-spacing:.01em}.hero .hbrand small{opacity:.8;font-size:.82rem}
.hero .quote{position:relative;justify-self:center;text-align:left;font-size:1.15rem;font-style:italic;font-weight:500;line-height:1.5;opacity:.95}
.hero .meta{position:relative;display:grid;gap:.45rem;font-size:.86rem;white-space:nowrap}
.hero .meta div{display:flex;align-items:center;gap:.5rem}.hero .meta svg{width:17px;height:17px;stroke:#ffd27a;fill:none;stroke-width:2;flex:none}.hero .meta b{color:#9fd0ff}
@media(max-width:1100px){.hero{grid-template-columns:1fr}.hero .quote{justify-self:start}.hero svg.deco{display:none}}

/* thẻ chỉ số phủ màu */
.kpi5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.8rem;margin-bottom:.9rem}
@media(max-width:1350px){.kpi5{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:800px){.kpi5{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kc{position:relative;overflow:hidden;padding:1rem 1rem 0;min-height:176px;border-radius:15px;border:1px solid var(--border);box-shadow:var(--shadow);display:flex;flex-direction:column;
  background:linear-gradient(160deg,color-mix(in srgb,var(--tint) 16%,var(--surface)) 0%,var(--surface) 70%)}
.kc.blue{--tint:var(--s1)}.kc.green{--tint:var(--s3)}.kc.violet{--tint:var(--violet)}.kc.teal{--tint:var(--teal)}.kc.orange{--tint:var(--s2)}
.kc .top{display:flex;align-items:center;gap:.7rem}
.kc .bigico{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;flex:none;color:#fff;background:linear-gradient(145deg,var(--tint),color-mix(in srgb,var(--tint) 62%,#000));box-shadow:0 8px 16px -8px var(--tint)}
.kc .bigico svg{width:22px;height:22px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.kc .nm{font-size:.84rem;font-weight:700;color:var(--ink2);line-height:1.25}
.kc .val{font-size:1.6rem;font-weight:800;letter-spacing:-.03em;line-height:1.05;margin-top:.3rem;font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}
.kc .val small{font-size:.78rem;font-weight:600;color:var(--muted);margin-left:.15rem;letter-spacing:0}
.kc .dl{display:flex;align-items:center;gap:.35rem;margin-top:.35rem;font-size:.78rem;color:var(--ink2);flex-wrap:wrap}
.kc .dl b{font-weight:750}.kc .dl .up{color:var(--good)}.kc .dl .down{color:var(--bad)}.kc .dl .na{color:var(--muted)}
.kc .sub{margin-top:.15rem;font-size:.74rem;color:var(--muted)}
.kc .area{margin:auto -1rem 0;height:46px;width:calc(100% + 2rem);display:block}
.kc .area svg{width:100%;height:100%;display:block}

/* tiêu đề thẻ kiểu mới */
.card{border-radius:15px}
.ph{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem}
.ph .pico{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);flex:none}
.ph .pico svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ph h2{margin:0;font-size:.98rem}.ph .grow{flex:1}.ph a{font-size:.8rem;font-weight:650;white-space:nowrap}
.ph .cnt{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--bad-mark);color:#fff;font-size:.7rem;font-weight:700}

/* hàng bố cục */
.row2{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr) minmax(0,1fr);gap:.9rem;margin-bottom:.9rem;align-items:start}
.row3{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.2fr) minmax(0,1fr);gap:.9rem;margin-bottom:.9rem;align-items:start}
.row4{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:.9rem;margin-bottom:.9rem;align-items:start}
@media(max-width:1350px){.row2,.row3{grid-template-columns:1fr 1fr}.row2>:first-child{grid-column:1/-1}.row3>:last-child{grid-column:1/-1}}
@media(max-width:900px){.row2,.row3,.row4{grid-template-columns:1fr}}
.cmp3{display:grid;gap:.85rem}
.cmp3 .it .nm{display:flex;justify-content:space-between;font-size:.84rem;font-weight:650;margin-bottom:.25rem}
.cmp3 .br{display:grid;grid-template-columns:5.6rem 1fr 5.2rem;gap:.5rem;align-items:center;font-size:.76rem;color:var(--ink2);padding:1px 0}
.cmp3 .tr{height:9px;border-radius:5px;background:var(--grid);overflow:hidden}.cmp3 .tr i{display:block;height:100%;border-radius:5px}
.cmp3 .br b{text-align:right;font-variant-numeric:tabular-nums}
.pbar{display:flex;align-items:center;gap:.5rem;min-width:110px}.pbar .tr{flex:1;height:8px;border-radius:5px;background:var(--grid);overflow:hidden}.pbar .tr i{display:block;height:100%;background:var(--accent);border-radius:5px}.pbar span{font-size:.76rem;font-variant-numeric:tabular-nums;min-width:2.4rem;text-align:right}
.statusbar{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:.4rem;padding:.7rem .2rem 0;border-top:1px solid var(--border);color:var(--muted);font-size:.78rem}
.statusbar span{display:flex;align-items:center;gap:.4rem}
.statusbar .dot{margin:0}
.btn.primary{background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 82%,#000));box-shadow:0 8px 16px -10px var(--accent)}
.tabs button.active{border-bottom-color:var(--accent);color:var(--accent)}
.seg button.on{background:var(--accent)}
th{background:var(--surface2)}

/* ===================================================================
   v0.6 — Bảng màu sang trọng (xanh hoàng gia + vàng sâm-panh), tiêu đề trang,
   thẻ chỉ số, bố cục nội dung từng trang.
   =================================================================== */
:root{
  --bg:#f3f5f9; --surface:#ffffff; --surface2:#f4f6fb; --ink:#0e1a33; --ink2:#44506a; --muted:#6a768d; --grid:#e5e9f1; --line:#cbd3e3;
  --accent:#1f4fc0; --accent-soft:#e8eefb; --accent-ink:#fff;
  --s1:#2457c5; --s2:#cf6d2e; --s3:#178f6b; --s4:#b8892f; --violet:#6a56c8; --teal:#178fa3;
  --gold:#b8892f; --gold-soft:rgba(184,137,47,.14);
  --good:#0b6b3a; --warn:#8a5a00; --bad:#b3261e; --good-bg:#e4f3ea; --warn-bg:#fbf0d9; --bad-bg:#fbe9e7;
  --border:rgba(20,40,90,.10); --shadow:0 1px 2px rgba(14,26,51,.04),0 10px 28px -16px rgba(14,26,51,.22);
  --sidebar:#0a1d4a;--sidebar-active:#2457c5;--side:#0a1d4a;--focus:#2457c5;
}
@media (prefers-color-scheme: dark){:root:where(:not([data-theme="light"])){
  --bg:#090e1b; --surface:#111a2e; --surface2:#172239; --ink:#eef2fb; --ink2:#b9c4de; --muted:#8b98b7; --grid:#1d2944; --line:#2a3858;
  --accent:#6b98f2; --accent-soft:#16294d; --accent-ink:#071027; --s1:#5b8def; --s2:#f08a4b; --s3:#2fc79a; --s4:#e0b95a; --violet:#9c8cf2; --teal:#38c3d6;
  --gold:#e0b95a; --gold-soft:rgba(224,185,90,.14); --good:#4fc78a; --warn:#f0c15a; --bad:#f08a82; --good-bg:rgba(79,199,138,.13); --warn-bg:rgba(240,193,90,.13); --bad-bg:rgba(240,138,130,.13);
  --border:rgba(160,185,255,.13); --shadow:none; --sidebar:#070f26;--side:#070f26;--focus:#8fb2ff}}
:root[data-theme="dark"]{
  --bg:#090e1b; --surface:#111a2e; --surface2:#172239; --ink:#eef2fb; --ink2:#b9c4de; --muted:#8b98b7; --grid:#1d2944; --line:#2a3858;
  --accent:#6b98f2; --accent-soft:#16294d; --accent-ink:#071027; --s1:#5b8def; --s2:#f08a4b; --s3:#2fc79a; --s4:#e0b95a; --violet:#9c8cf2; --teal:#38c3d6;
  --gold:#e0b95a; --gold-soft:rgba(224,185,90,.14); --good:#4fc78a; --warn:#f0c15a; --bad:#f08a82; --good-bg:rgba(79,199,138,.13); --warn-bg:rgba(240,193,90,.13); --bad-bg:rgba(240,138,130,.13);
  --border:rgba(160,185,255,.13); --shadow:none; --sidebar:#070f26;--side:#070f26;--focus:#8fb2ff}
.sidebar{background:linear-gradient(180deg,#0c2257 0%,#081a47 60%,#061238 100%)}
#nav>a.active{background:linear-gradient(135deg,#2c62d1,#1f4fc0)}
.hero,.phd{background:linear-gradient(110deg,#081a47 0%,#0f2f78 58%,#1d49a8 100%)}
.hero:after,.phd:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,transparent,#d9b865 30%,#f1dca0 50%,#d9b865 70%,transparent);opacity:.9}

/* tiêu đề trang */
.phd{position:relative;overflow:hidden;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:1rem 1.4rem;margin-bottom:1rem;border-radius:16px;color:#fff;box-shadow:0 16px 32px -20px rgba(8,26,71,.9)}
.phd:before{content:"";position:absolute;right:-70px;top:-110px;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 65%);pointer-events:none}
.phd-ico{position:relative;display:grid;place-items:center;width:50px;height:50px;border-radius:15px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.26);flex:none}
.phd-ico svg{width:25px;height:25px;stroke:#fff;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.phd-t{position:relative;flex:1;min-width:220px}
.phd-t h1{margin:0;color:#fff;font-size:1.55rem;letter-spacing:-.02em}
.phd-t p{margin:.2rem 0 0;color:#c5d4f5;font-size:.86rem}
.phd-r{position:relative;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end;max-width:100%}
.phd .btn,.phd input,.phd select{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);color:#fff;border-radius:10px;height:36px;padding:0 .8rem}
.phd input::placeholder{color:#b8c8ee}
.phd input[type=month],.phd input[type=date]{color-scheme:dark}
.phd .btn:hover{background:rgba(255,255,255,.2)}
.phd .btn.primary{background:linear-gradient(180deg,#e6c577,#c9a24b);color:#2b1c00;border-color:transparent;font-weight:700}
.phd-tabs{display:inline-flex;gap:3px;padding:3px;border-radius:12px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2)}
.phd-tabs button{font:inherit;font-size:.85rem;font-weight:600;padding:.4rem .85rem;border:0;border-radius:9px;background:transparent;color:#d3def8;cursor:pointer}
.phd-tabs button:hover{background:rgba(255,255,255,.1)}
.phd-tabs button.on{background:#fff;color:#0f2f78;box-shadow:0 4px 10px -4px rgba(0,0,0,.5)}
.phd .ask{display:flex;gap:.4rem;width:min(560px,100%)}
.phd .ask input{flex:1;min-width:0;height:40px}

/* thẻ KPI: biến thể */
.kc{box-shadow:var(--shadow)}
.kc.gold{--tint:var(--s4)}.kc.red{--tint:var(--bad-mark)}
a.kc.link{text-decoration:none;color:inherit}a.kc.link:hover{transform:translateY(-2px);box-shadow:0 14px 26px -16px rgba(14,26,51,.4)}
.kc{transition:transform .15s,box-shadow .15s}
.kc .kbar{display:flex;align-items:center;gap:.5rem;margin:.7rem 0 .9rem}
.kc .kbar .tr{flex:1;height:8px;border-radius:5px;background:var(--grid);overflow:hidden}
.kc .kbar .tr i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--tint),color-mix(in srgb,var(--tint) 70%,#fff))}
.kc .kbar span{font-size:.78rem;font-weight:700;min-width:2.8rem;text-align:right;color:var(--ink2)}
.kc.noarea{min-height:0;padding-bottom:.2rem}
.kc .val.sm{font-size:1.35rem}
.kpi4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem;margin-bottom:.9rem}
@media(max-width:1100px){.kpi4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.kpi4{grid-template-columns:1fr}}
.kpi4 .kc{min-height:0;padding-bottom:1rem}
.kpi4 .kc .area{margin-top:.6rem;margin-bottom:0}

/* tiêu đề thẻ: vàng sâm-panh cho biểu tượng */
.ph .pico{background:var(--gold-soft);color:var(--gold)}
.card h2{letter-spacing:-.01em}

/* bố cục chung các trang */
.pg2{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:.9rem;margin-bottom:.9rem;align-items:start}
.pg3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem;margin-bottom:.9rem;align-items:start}
.pg21{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);gap:.9rem;margin-bottom:.9rem;align-items:start}
@media(max-width:1250px){.pg3,.pg21{grid-template-columns:1fr 1fr}.pg21>:first-child{grid-column:1/-1}}
@media(max-width:900px){.pg2,.pg3,.pg21{grid-template-columns:1fr}}
.pg2>*,.pg3>*,.pg21>*{min-width:0}
.itemrow{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:.65rem;align-items:start;padding:.65rem 0;border-top:1px solid var(--grid)}
.itemrow:first-of-type{border-top:0}
.itemrow .ic{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:.85rem}
.itemrow .ic.bad{background:var(--bad-bg);color:var(--bad)}.itemrow .ic.warn{background:var(--warn-bg);color:var(--warn)}.itemrow .ic.good{background:var(--good-bg);color:var(--good)}.itemrow .ic.gold{background:var(--gold-soft);color:var(--gold)}
.itemrow b{display:block;font-size:.88rem}.itemrow p{margin:2px 0 0;color:var(--muted);font-size:.78rem;line-height:1.4}
.chiprow{display:flex;flex-wrap:wrap;gap:.4rem}
.chiprow .btn{border-radius:999px;font-size:.8rem}
.note-card{border-left:3px solid var(--gold);background:linear-gradient(90deg,var(--gold-soft),transparent 60%)}
.rank{display:grid;grid-template-columns:24px minmax(0,1fr) auto auto;gap:.6rem;align-items:center;padding:.45rem 0;border-top:1px solid var(--grid);font-size:.86rem}
.rank:first-of-type{border-top:0}.rank .n{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:.75rem}
.rank:nth-of-type(-n+3) .n{background:var(--gold-soft);color:var(--gold)}

/* tinh chỉnh v0.6 */
td.num,th.num{white-space:nowrap}
.donutlist{min-width:210px}.donutlist span{white-space:nowrap}
#banners{display:flex;flex-wrap:wrap;gap:.5rem;padding-top:.7rem}
#banners .banner{flex:1 1 320px;margin:0;padding:.4rem .8rem;font-size:.82rem;border-radius:10px}

/* v0.7: các trang còn lại dùng chung ngôn ngữ thiết kế */
.card>h2:first-child{position:relative;display:flex;align-items:center;gap:.5rem;margin:0 0 .75rem;padding-left:.75rem;font-size:1.02rem}
.card>h2:first-child:before{content:"";position:absolute;left:0;top:.18em;bottom:.18em;width:3px;border-radius:2px;background:linear-gradient(180deg,#e6c577,#c9a24b)}
.card.bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.6rem .9rem;margin-bottom:.9rem}
.card.bar .f{flex-direction:row;align-items:center;gap:.4rem}
.kc.addcard{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;min-height:110px;border:1.5px dashed var(--border);background:transparent;box-shadow:none;cursor:pointer;color:var(--accent);font:inherit}
.kc.addcard:hover{background:var(--accent-soft)}
.addcard .plus{font-size:1.9rem;line-height:1}
#tbody>*,#dbody>*,#pbody>*,#body>*,#lbody>*,#tabbody>*,#preview>*{margin-bottom:.9rem}
#tbody>.kpi4,#dbody>.kpi4,#pbody>.kpi4{margin-bottom:.9rem}
.card .tablewrap{border-radius:10px}
.stack>*{margin-bottom:.9rem}

/* v0.8: nhập báo cáo cuối ngày */
.dropzone{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:1.4rem 1rem;border:2px dashed var(--border);border-radius:14px;background:var(--surface2);cursor:pointer;text-align:center}
.dropzone:hover,.dropzone.over{border-color:var(--accent);background:var(--accent-soft)}
.dropzone input{margin-top:.4rem}
.eodfiles{display:grid;gap:.5rem;margin-top:.8rem}
.eodfile{display:flex;align-items:center;gap:.7rem;padding:.55rem .8rem;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.eodfile>div{flex:1;min-width:0}.eodfile p{margin:.1rem 0 0;font-size:.8rem;color:var(--muted)}
.eodfile.pii{border-style:dashed}
.dropzone input{display:none}

/* v0.9 — Kế hoạch bàn khám/tiêm theo tuần */
table.deskweek{font-size:.78rem;width:100%}
table.deskweek th,table.deskweek td{padding:.28rem .3rem;white-space:nowrap}
table.deskweek th.ctr{text-align:center}
table.deskweek td.rsn{white-space:normal;font-size:.7rem;color:var(--muted,#5b6678);text-align:center;line-height:1.2}
table.deskweek .stickc{position:sticky;left:0;background:var(--surface,#fff);text-align:left;z-index:1;min-width:9rem}
table.deskweek tr.grp td{background:rgba(201,162,75,.14);font-weight:700;color:var(--navy,#14213d);letter-spacing:.02em}
table.deskweek tbody tr:hover td{background:rgba(20,33,61,.04)}
.banner.warn ul{margin:.25rem 0 0 1.1rem;padding:0}
.dwchip{display:inline-block;min-width:1.6rem;padding:.05rem .35rem;border-radius:999px;font-weight:700;font-size:.72rem;text-align:center}
.dwchip.ok{background:#e3f4ea;color:#14663a}.dwchip.warn{background:#fbefd0;color:#8a5a00}.dwchip.bad{background:#fbe1e1;color:#a11d1d}
table.deskweek th,table.deskweek td{padding:.28rem .2rem}

/* v0.10 — biểu đồ cơ cấu */
.pgc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:.9rem;margin-bottom:.9rem;align-items:start}
@media(max-width:1100px){.pgc{grid-template-columns:1fr}}
.ph2{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.6rem}.ph2 h2{margin:0;font-size:1rem}
.comp{display:grid;gap:.15rem}
.crow{display:grid;grid-template-columns:minmax(6.5rem,32%) 1fr auto 4.6rem;gap:.55rem;align-items:center;font-size:.86rem;padding:.28rem 0;border-bottom:1px solid var(--grid)}
.crow:last-child{border-bottom:0}
.crow .cl{display:flex;align-items:center;gap:.4rem;min-width:0}.crow .cl i{width:.6rem;height:.6rem;border-radius:3px;flex:none}.crow .cl span{overflow:hidden;text-overflow:ellipsis}
.crow .cb{height:.55rem;background:var(--grid);border-radius:99px;overflow:hidden;display:block}.crow .cb em{display:block;height:100%;border-radius:99px}
.crow .cv{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.crow .cv small{color:var(--muted);margin-left:.4rem}
.crow .cd{text-align:right;font-size:.78rem;white-space:nowrap}
.crow.zero .cl,.crow.zero .cv{color:var(--muted)}.crow.derived .cl span{font-style:italic}

/* v0.11 — sửa mẫu báo cáo */
.tplgrid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:.8rem;align-items:start}
@media(max-width:1000px){.tplgrid{grid-template-columns:1fr}}
.tplpal{max-height:24rem;overflow:auto;margin-top:.5rem;border:1px solid var(--border);border-radius:10px;padding:.3rem .5rem}
.tplpal summary{cursor:pointer;padding:.25rem 0;font-weight:600;font-size:.85rem}
.tplchips{display:flex;flex-wrap:wrap;gap:.3rem;padding:.2rem 0 .5rem}

/* v0.12 — nhập số liệu báo cáo tháng */
.tbl.mf td,.tbl.mf th{vertical-align:middle}
.mf-in{width:100%;min-width:6rem;max-width:12rem;text-align:right}
.mf-ro{display:inline-flex;gap:.4rem;align-items:center;justify-content:flex-end;width:100%;font-variant-numeric:tabular-nums}
.mf-tx{width:100%;margin-top:.4rem}

/* v0.13 — chương trình trọng điểm */
.pr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:.9rem}
.pr-kvs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.7rem;margin:.7rem 0}
.pr-kvs.two{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:900px){.pr-kvs{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pr-k{font-size:.78rem;color:var(--muted)}
.pr-v{font-size:1.15rem;margin-top:.15rem}
.pr-v .mf-in{max-width:100%;text-align:left}
.pr-s{font-size:.75rem;color:var(--muted);margin-top:.15rem}
.pr-up{color:var(--good)}.pr-dn{color:var(--bad)}
.pr-bar{display:flex;align-items:center;gap:.6rem;font-size:.8rem;color:var(--muted)}
.pr-tr{flex:1;height:8px;border-radius:6px;background:var(--grid,#e6e9f2);overflow:hidden}
.pr-tr i{display:block;height:100%;background:var(--s1,#2f5bd8)}
.pr-det{margin-top:.7rem}.pr-det summary{cursor:pointer;font-weight:600;font-size:.85rem}
.pr-months{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.5rem;margin-top:.6rem}
.pr-m{display:flex;flex-direction:column;gap:.2rem;font-size:.78rem;color:var(--muted)}

/* v0.14 — duyệt nhận xét / định hướng */
.dr-card{margin-bottom:.8rem}
.dr-list{display:grid;gap:.4rem}
.dr-row{border:1px solid var(--border);border-radius:10px;padding:.45rem .7rem;background:var(--surface)}
.dr-row summary{cursor:pointer;font-weight:600;font-size:.88rem;display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.dr-sl{display:inline-block;min-width:4.6rem;color:var(--muted);font-weight:500}
.dr-body{display:grid;gap:.6rem;margin-top:.6rem}
.dr-ta{width:100%}
.dr-auto,.dr-final{background:var(--bg-soft,rgba(120,130,160,.08));border-radius:8px;padding:.5rem .7rem;display:grid;gap:.2rem}

/* v0.15 gợi ý lý do bật/tắt */
.rsn-chip.on{background:var(--accent);color:var(--accent-ink);border-color:transparent;font-weight:600}
.rsn-add{border-style:dashed}
.rsn-wrap{display:inline-flex;align-items:stretch}
.rsn-wrap .rsn-chip{border-top-right-radius:0;border-bottom-right-radius:0}
.rsn-x{border:1px solid var(--line);border-left:0;background:var(--surface);color:var(--muted);padding:0 .45rem;border-radius:0 .5rem .5rem 0;cursor:pointer}
.rsn-x:hover{color:var(--bad)}

/* v0.15 lịch bàn khám nhập tay */
.rs-wrap{display:grid;gap:.9rem}
.rs-bar{flex-wrap:wrap;gap:.45rem;align-items:center}
.seg{display:inline-flex;gap:.25rem}
.rs-days{display:grid;grid-template-columns:repeat(7,minmax(7.5rem,1fr));gap:.5rem;overflow-x:auto}
.rs-day{text-align:left;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:.7rem;padding:.55rem;cursor:pointer;font:inherit}
.rs-day.sel{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}
.rs-dh{display:flex;justify-content:space-between;align-items:center;gap:.3rem}
.rs-now{font-size:.65rem;background:var(--accent);color:var(--accent-ink);border-radius:.4rem;padding:0 .35rem}
.rs-kind{margin-top:.45rem;padding-top:.35rem;border-top:1px dashed var(--grid)}
.rs-kind.k b{color:var(--accent)}.rs-kind.t b{color:var(--good)}
.rs-two{display:grid;grid-template-columns:minmax(0,2fr) minmax(16rem,1fr);gap:.9rem}
@media(max-width:900px){.rs-two{grid-template-columns:1fr}}
.rs-blk{border:1px solid var(--line);border-left-width:4px;border-radius:.6rem;padding:.6rem .7rem;background:var(--surface2)}
.rs-blk.k{border-left-color:var(--accent)}.rs-blk.t{border-left-color:var(--good-mark)}
.rs-blk h3{margin:0 0 .4rem}
.rs-t{width:100%;border-collapse:collapse}.rs-t th{text-align:left;font-size:.75rem;color:var(--muted);padding:.2rem}.rs-t td{padding:.25rem .2rem}
.rs-t input{width:5rem}
.rs-minihead,.rs-minigrid,.rs-mhead{display:grid;grid-template-columns:repeat(7,1fr);text-align:center}
.rs-minihead span,.rs-mhead span{font-size:.7rem;color:var(--muted);padding:.2rem 0}
.rs-mini{border:0;background:none;color:var(--ink);padding:.3rem 0;border-radius:999px;cursor:pointer;font:inherit;font-size:.8rem}
.rs-mini.inwk{background:color-mix(in srgb,var(--accent) 14%,transparent);border-radius:0}
.rs-mini.has{font-weight:700;text-decoration:underline dotted}
.rs-mini.sel{background:var(--accent);color:var(--accent-ink);border-radius:999px}
.rs-mgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem}
.rs-mc{display:flex;flex-direction:column;gap:.1rem;min-height:4.4rem;border:1px solid var(--line);border-radius:.5rem;background:var(--surface);color:var(--ink);padding:.3rem;text-align:left;cursor:pointer;font:inherit}
.rs-mc.empty{border:0;background:none;cursor:default}.rs-mc.sel{border-color:var(--accent)}.rs-mc.today b{color:var(--accent)}
.rs-mc .k{color:var(--accent)}.rs-mc .t{color:var(--good)}
.rs-day{display:block;align-self:start;font-size:.78rem}
.rs-day .small{font-size:.74rem}

/* v0.16 đăng nhập / quản trị nhiều trung tâm */
.login-wrap{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:var(--bg);padding:1rem}
.login-card{width:min(26rem,100%);background:var(--surface);border:1px solid var(--line);border-radius:1rem;padding:1.4rem;display:grid;gap:.7rem;box-shadow:0 20px 40px -24px rgba(0,0,0,.4)}
.login-card h1{margin:0}
.login-card input{font-size:1.15rem;letter-spacing:.08em;text-align:center;padding:.7rem;text-transform:uppercase}
.login-err{color:var(--bad);min-height:1.2rem;margin:0}
.unit-select{width:100%;font-weight:600}
.code-box{font-family:ui-monospace,Consolas,monospace;font-size:1.4rem;letter-spacing:.08em;text-align:center;padding:.8rem;border:2px dashed var(--accent);border-radius:.6rem;margin:.6rem 0;user-select:all}

/* điện thoại: thanh trên cùng không được tràn ngang */
.searchbox{min-width:0}
.top-actions{flex:none}
@media(max-width:600px){.topbar{gap:.4rem;padding:0 .6rem}.top-actions{gap:.25rem}.userchip{margin-left:0}.searchbox{padding:0 .6rem;gap:.4rem}.datepill{padding:0 .6rem}}
/* điện thoại: lưới tuần cuộn ngang trong khung, ô chọn / đường dẫn dài không đẩy trang rộng ra */
.rs-wrap,.rs-wrap>*{min-width:0}
.rs-days{max-width:100%}
.f{min-width:0}
select,input,textarea{max-width:100%}
.kv span,.kv.small span{overflow-wrap:anywhere;min-width:0}

/* Bảng so sánh vùng: không xuống dòng, cuộn ngang khi hẹp */
.region-tbl th,.region-tbl td{white-space:nowrap}
.region-tbl td:first-child{min-width:11rem}

/* ===================================================================
   v0.27 — GIAO DIỆN MỚI "Obsidian & Champagne"
   Lớp phủ nằm SAU style.css: chỉ đổi diện mạo, không đổi chức năng.
   Muốn quay về giao diện cũ: bỏ dòng <link href="theme2.css"> và <script src="fx.js"> trong index.html.
   =================================================================== */

/* ---------- 1. Bảng màu ---------- */
:root{
  --bg:#f6f3ec; --surface:#ffffff; --surface2:#f8f5ee; --ink:#0f1626; --ink2:#454c5f; --muted:#6e7387; --grid:#ece7db; --line:#d6cfbf;
  --accent:#1d3f9e; --accent-soft:#e9eefb; --accent-ink:#ffffff;
  --gold:#b88a2c; --gold2:#e3c070; --gold-ink:#2a1d00; --gold-soft:rgba(184,138,44,.13);
  --s1:#2a56c8; --s2:#d2692a; --s3:#168f6a; --s4:#b88a2c; --violet:#6c58c9; --teal:#168fa3;
  --good:#0b6b3a; --warn:#8a5a00; --bad:#b3261e; --good-bg:#e3f3ea; --warn-bg:#fbefd5; --bad-bg:#fbe8e5;
  --border:rgba(40,32,10,.10); --focus:#b88a2c;
  --shadow:0 1px 2px rgba(30,22,0,.04),0 14px 34px -20px rgba(30,22,0,.28);
  --sidebar:#090d18; --side:#090d18; --sidebar-active:rgba(227,192,112,.14); --sidebar-active-ink:#f0d795;
  --r:18px; --ease:cubic-bezier(.22,.8,.3,1);
  --serif:"Georgia","Cambria","Times New Roman",serif;
}
@media (prefers-color-scheme: dark){:root:where(:not([data-theme="light"])){
  --bg:#070a13; --surface:#0f1626; --surface2:#141c30; --ink:#f1efe8; --ink2:#c0c5d4; --muted:#8e95aa; --grid:#1b2438; --line:#2a3550;
  --accent:#7aa2f7; --accent-soft:#16264a; --accent-ink:#071027; --gold:#e3c070; --gold2:#f3dca0; --gold-soft:rgba(227,192,112,.13);
  --s1:#6a97f5; --s2:#f28d4e; --s3:#34caa0; --s4:#e3c070; --violet:#a493f4; --teal:#3cc6d9;
  --good:#52c88c; --warn:#f2c35d; --bad:#f28d85; --good-bg:rgba(82,200,140,.13); --warn-bg:rgba(242,195,93,.13); --bad-bg:rgba(242,141,133,.13);
  --border:rgba(227,192,112,.14); --focus:#e3c070; --shadow:0 18px 40px -28px rgba(0,0,0,.9);
  --sidebar:#05070e; --side:#05070e}}
:root[data-theme="dark"]{
  --bg:#070a13; --surface:#0f1626; --surface2:#141c30; --ink:#f1efe8; --ink2:#c0c5d4; --muted:#8e95aa; --grid:#1b2438; --line:#2a3550;
  --accent:#7aa2f7; --accent-soft:#16264a; --accent-ink:#071027; --gold:#e3c070; --gold2:#f3dca0; --gold-soft:rgba(227,192,112,.13);
  --s1:#6a97f5; --s2:#f28d4e; --s3:#34caa0; --s4:#e3c070; --violet:#a493f4; --teal:#3cc6d9;
  --good:#52c88c; --warn:#f2c35d; --bad:#f28d85; --good-bg:rgba(82,200,140,.13); --warn-bg:rgba(242,195,93,.13); --bad-bg:rgba(242,141,133,.13);
  --border:rgba(227,192,112,.14); --focus:#e3c070; --shadow:0 18px 40px -28px rgba(0,0,0,.9);
  --sidebar:#05070e; --side:#05070e}

/* ---------- 2. Nền & chữ ---------- */
html{scroll-behavior:smooth}
body{
  font-family:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  background:
    radial-gradient(900px 480px at 100% -80px,color-mix(in srgb,var(--gold) 11%,transparent),transparent 70%),
    radial-gradient(700px 420px at 0% 30%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 70%),
    var(--bg);
  background-attachment:fixed;
}
h1,h2,h3{letter-spacing:-.015em}
::selection{background:var(--gold2);color:#1b1300}
*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--gold) 45%,var(--line)) transparent}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--focus)!important;outline-offset:2px}

/* ---------- 3. Menu trái ---------- */
.sidebar{
  background:
    radial-gradient(320px 240px at 0% 0%,rgba(227,192,112,.16),transparent 70%),
    radial-gradient(260px 300px at 110% 100%,rgba(70,110,230,.18),transparent 70%),
    linear-gradient(180deg,#0d1322 0%,#090d18 55%,#06080f 100%);
  border-right:1px solid rgba(227,192,112,.16);
  color:#d9dcea;
}
.sidebar .brand{padding:.2rem .4rem 1rem;gap:.7rem}
.sidebar .brand b{font-family:var(--serif);font-size:1rem;letter-spacing:.06em;color:#f6e6b8;font-weight:700}
.sidebar .brand small{color:#8f96ad;letter-spacing:.08em;text-transform:uppercase;font-size:.62rem}
.brand-mark{
  width:42px;height:42px;border-radius:13px;
  background:linear-gradient(145deg,#f3dca0,#c79a3a 55%,#9a7220);
  box-shadow:0 10px 22px -10px rgba(227,192,112,.8),inset 0 1px 0 rgba(255,255,255,.55);
}
.brand-mark svg{stroke:#2a1d00;width:22px;height:22px}
.center-name{
  background:rgba(255,255,255,.04)!important;border:1px solid rgba(227,192,112,.2)!important;border-radius:12px!important;
  color:#f3ecd7!important;padding:.65rem .75rem!important;margin:.1rem 0 .6rem!important;
}
.center-name::before{color:#c9a85a!important}
.center-name select{background:rgba(255,255,255,.06);color:#f7f1de;border:1px solid rgba(227,192,112,.25);border-radius:9px}
.center-name select option{color:#111;background:#fff}
#nav a,.grouphead{color:#c4c9dc;border-radius:11px;position:relative;transition:background .2s var(--ease),color .2s,transform .2s var(--ease)}
#nav a svg,.grouphead svg{opacity:.85}
#nav a:hover,.grouphead:hover{background:rgba(255,255,255,.06)!important;color:#fff!important;transform:translateX(2px)}
#nav a.active{
  background:linear-gradient(90deg,rgba(227,192,112,.2),rgba(227,192,112,.05))!important;
  color:#f6e2a4!important;font-weight:700;box-shadow:inset 0 0 0 1px rgba(227,192,112,.25);
}
#nav a.active:before{content:"";position:absolute;left:-.8rem;top:20%;bottom:20%;width:4px;border-radius:0 4px 4px 0;background:linear-gradient(180deg,#f3dca0,#c79a3a)}
#nav a.active svg{color:#f3dca0;opacity:1;filter:drop-shadow(0 0 6px rgba(227,192,112,.6))}
#nav .groupbody{border-left:1px solid rgba(227,192,112,.2)}
#nav a.sub .subdot{background:#6c7390}
#nav a.sub.active .subdot{background:#f3dca0;box-shadow:0 0 0 3px rgba(227,192,112,.25)}
.nav-badge{background:linear-gradient(135deg,#f3dca0,#c79a3a)!important;color:#2a1d00!important}
.nav-badge.warn{background:linear-gradient(135deg,#ff9a8b,#e25a4a)!important;color:#fff!important}
.side-bottom{border-top:1px solid rgba(227,192,112,.16)}
.local{background:rgba(255,255,255,.04)!important;border-color:rgba(227,192,112,.18)!important;color:#d8dcec}
.local small,.version{color:#8f96ad!important}
.side-bottom .btn{background:transparent;color:#e8dcc0;border-color:rgba(227,192,112,.3)}
.side-bottom .btn:hover{background:rgba(227,192,112,.12)}
.dot{background:#52e0a6!important;box-shadow:0 0 0 0 rgba(82,224,166,.6);animation:pulse 2.4s infinite}
@keyframes pulse{70%{box-shadow:0 0 0 7px rgba(82,224,166,0)}100%{box-shadow:0 0 0 0 rgba(82,224,166,0)}}

/* ---------- 4. Thanh trên ---------- */
.topbar{background:color-mix(in srgb,var(--bg) 78%,transparent)!important;backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);border-bottom:1px solid var(--border)}
.datepill,.searchbox{background:var(--surface);border:1px solid var(--border);border-radius:999px;box-shadow:0 1px 0 rgba(255,255,255,.6) inset}
.searchbox:focus-within{border-color:var(--gold);box-shadow:0 0 0 4px var(--gold-soft)}
.datepill svg{stroke:var(--gold)}
.iconbtn{border-radius:12px;transition:transform .2s var(--ease),background .2s}
.iconbtn:hover{transform:translateY(-1px);background:var(--gold-soft)!important;border-color:color-mix(in srgb,var(--gold) 40%,transparent)!important;color:var(--ink)}
.avatar{background:linear-gradient(145deg,#f3dca0,#c79a3a)!important;color:#2a1d00!important;font-weight:800;box-shadow:0 0 0 2px var(--surface),0 0 0 4px color-mix(in srgb,var(--gold) 55%,transparent)}
.userchip{border-radius:999px}

/* ---------- 5. BANNER ĐỘNG (.phd = tiêu đề trang, .hero = Tổng quan) ---------- */
.hero,.phd{
  position:relative;overflow:hidden;isolation:isolate;border-radius:22px;color:#fff;
  background:
    radial-gradient(520px 260px at 88% -10%,rgba(227,192,112,.30),transparent 70%),
    radial-gradient(480px 300px at 8% 120%,rgba(60,198,217,.22),transparent 70%),
    linear-gradient(115deg,#070b1c 0%,#0e1a45 48%,#1b2f78 100%);
  background-size:140% 140%,140% 140%,100% 100%;
  animation:auroraShift 16s ease-in-out infinite alternate;
  box-shadow:0 26px 50px -28px rgba(8,14,40,.95),inset 0 0 0 1px rgba(227,192,112,.18);
  margin-bottom:1.1rem;
}
.hero{padding:1.9rem 2.1rem;min-height:150px}
.phd{padding:1.35rem 1.7rem;min-height:104px}
@keyframes auroraShift{0%{background-position:0% 0%,100% 100%,0 0}100%{background-position:100% 20%,0% 80%,0 0}}
.hero:before,.phd:before{display:none}
/* đường vàng chạy sáng ở mép dưới */
.hero:after,.phd:after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:2px;z-index:2;opacity:1;
  background:linear-gradient(90deg,transparent 0%,#c79a3a 20%,#fff3c4 50%,#c79a3a 80%,transparent 100%);
  background-size:220% 100%;animation:goldRun 5s linear infinite;
}
@keyframes goldRun{0%{background-position:120% 0}100%{background-position:-120% 0}}
/* lớp hiệu ứng do fx.js chèn vào */
.fx{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.fx i{position:absolute;border-radius:50%;filter:blur(38px);opacity:.55;will-change:transform}
.fx i:nth-child(1){width:260px;height:260px;right:6%;top:-120px;background:#e3c070;animation:orb1 13s ease-in-out infinite alternate}
.fx i:nth-child(2){width:300px;height:300px;left:22%;bottom:-190px;background:#3b66e0;animation:orb2 17s ease-in-out infinite alternate}
.fx i:nth-child(3){width:180px;height:180px;right:30%;bottom:-100px;background:#2cc4d6;opacity:.35;animation:orb3 11s ease-in-out infinite alternate}
@keyframes orb1{to{transform:translate(-90px,50px) scale(1.2)}}
@keyframes orb2{to{transform:translate(120px,-30px) scale(.85)}}
@keyframes orb3{to{transform:translate(-60px,-40px) scale(1.3)}}
.fx svg{position:absolute;left:0;bottom:-1px;width:200%;height:46%;opacity:.5}
.fx svg path{fill:none;stroke:rgba(243,220,160,.55);stroke-width:1.4}
.fx svg path:nth-child(2){stroke:rgba(122,162,247,.5);stroke-width:1}
.fx svg g{animation:wave 14s linear infinite}
@keyframes wave{to{transform:translateX(-50%)}}
.fx b{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;opacity:0;animation:twinkle 5s infinite}
.fx b:nth-of-type(1){left:12%;top:24%;animation-delay:.2s}.fx b:nth-of-type(2){left:34%;top:68%;animation-delay:1.6s}
.fx b:nth-of-type(3){left:58%;top:18%;animation-delay:2.4s}.fx b:nth-of-type(4){left:76%;top:62%;animation-delay:.9s}
.fx b:nth-of-type(5){left:90%;top:30%;animation-delay:3.2s}.fx b:nth-of-type(6){left:46%;top:40%;animation-delay:4s}
@keyframes twinkle{0%,100%{opacity:0;transform:scale(.4)}50%{opacity:.95;transform:scale(1.6)}}
.hero svg.deco{opacity:.16;z-index:0}
/* nội dung banner */
.phd-ico,.hero .hbrand .mk{
  background:linear-gradient(145deg,rgba(243,220,160,.28),rgba(243,220,160,.06));border:1px solid rgba(243,220,160,.45);
  backdrop-filter:blur(4px);box-shadow:0 10px 24px -12px rgba(0,0,0,.7);animation:floaty 5s ease-in-out infinite;
}
@keyframes floaty{50%{transform:translateY(-3px)}}
.phd-ico svg,.hero .hbrand .mk svg{stroke:#f6e2a4}
.phd-t h1,.hero .hbrand b{font-family:var(--serif);font-weight:700;letter-spacing:.005em;color:#fff;text-shadow:0 2px 14px rgba(0,0,0,.35)}
.phd-t h1{font-size:1.65rem}
.hero .hbrand b{font-size:1.5rem;letter-spacing:.07em}
.phd-t p,.hero .hbrand small{color:#c9d3f0}
.hero .quote{font-family:var(--serif);color:#f6e6b8}
.hero .meta svg{stroke:#f3dca0}.hero .meta b{color:#f6e6b8}
.phd .btn,.phd input,.phd select{background:rgba(255,255,255,.1);border:1px solid rgba(243,220,160,.32);color:#fff;border-radius:12px;backdrop-filter:blur(4px)}
.phd .btn:hover{background:rgba(243,220,160,.2)}
.phd .btn.primary,.hero .btn.primary{background:linear-gradient(180deg,#f3dca0,#c79a3a);color:#2a1d00;border-color:transparent;box-shadow:0 10px 20px -10px rgba(227,192,112,.9)}
.phd-tabs{background:rgba(255,255,255,.08);border:1px solid rgba(243,220,160,.3);border-radius:14px;backdrop-filter:blur(6px)}
.phd-tabs button{white-space:nowrap;color:#d6dcf2;border-radius:11px;display:inline-flex;align-items:center;gap:.4rem;transition:background .2s,color .2s}
.phd-tabs button.on{background:linear-gradient(180deg,#f8e8b8,#e3c070);color:#2a1d00;box-shadow:0 6px 14px -6px rgba(0,0,0,.6)}

/* ---------- 6. Thẻ, bảng, ô nhập ---------- */
.card,.kc,.k2,details.group{
  border-radius:var(--r);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s;
}
.card:hover,.kc:hover,.k2:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--gold) 38%,var(--border))}
.card>h2:first-child,.card>h3:first-child{display:flex;align-items:center;gap:.5rem}
.card>h2:first-child:before{content:"";width:4px;height:1.05em;border-radius:3px;background:linear-gradient(180deg,#f3dca0,#c79a3a);flex:none}
.ph .pico{background:var(--gold-soft);color:var(--gold)}
.kc{background:linear-gradient(160deg,color-mix(in srgb,var(--tint) 11%,var(--surface)) 0%,var(--surface) 62%)}
.kc .bigico{box-shadow:0 10px 18px -8px var(--tint),inset 0 1px 0 rgba(255,255,255,.35)}
.kc .val,.k2 .big{font-weight:800;letter-spacing:-.035em}
.ico{border-radius:11px}
.pill{border-radius:999px}
.tag.unconf{background:var(--warn-bg);color:var(--warn)}
.progress,.cmp3 .tr,.pbar .tr{background:var(--grid)}
.progress>i,.pbar .tr i{background:linear-gradient(90deg,#c79a3a,#f3dca0);border-radius:5px}
.banner{border-radius:14px;border:1px solid var(--border);backdrop-filter:blur(6px)}
.banner.warn{background:var(--warn-bg)}
.banner.info{background:var(--accent-soft)}

.btn{border-radius:12px;font-weight:550;transition:transform .18s var(--ease),box-shadow .2s,background .2s,border-color .2s;gap:.45rem}
.btn:hover{transform:translateY(-1px);background:var(--gold-soft);border-color:color-mix(in srgb,var(--gold) 45%,transparent)}
.btn:active{transform:translateY(0) scale(.98)}
.btn.primary{background:linear-gradient(180deg,#f3dca0 0%,#d4a948 55%,#c08f2c 100%);color:var(--gold-ink);border:1px solid rgba(120,84,10,.35);font-weight:700;box-shadow:0 10px 22px -12px rgba(184,138,44,.95),inset 0 1px 0 rgba(255,255,255,.55)}
.btn.primary:hover{filter:brightness(1.05);background:linear-gradient(180deg,#f8e6b0,#dcb350 55%,#c9982f)}
.btn.danger{border-color:color-mix(in srgb,var(--bad) 55%,transparent)}
.btn.danger:hover{background:var(--bad-bg)}
.btn svg.bi,svg.bi,.iconlead{width:1.05em;height:1.05em;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.btn.small svg.bi{width:1em;height:1em}
input,select,textarea{border-radius:11px;border:1px solid var(--line);background:var(--surface);transition:border-color .2s,box-shadow .2s}
input:focus,select:focus,textarea:focus{border-color:var(--gold);box-shadow:0 0 0 4px var(--gold-soft);outline:none!important}
input[type=checkbox],input[type=radio]{accent-color:var(--gold)}

table{font-size:.9rem}
th{background:var(--surface2);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.7rem;font-weight:750;border-bottom:1px solid var(--line)}
td{border-bottom:1px solid var(--grid)}
tbody tr{transition:background .15s}
tbody tr:hover td{background:var(--gold-soft)}
tr.cat td{background:var(--gold-soft);color:var(--ink)}
.tablewrap{border-radius:var(--r);border:1px solid var(--border);box-shadow:var(--shadow)}

.tabs{border-bottom:1px solid var(--grid);gap:.3rem}
.tabs button{display:inline-flex;align-items:center;gap:.4rem;border-radius:11px 11px 0 0;transition:background .2s,color .2s;padding:.55rem 1rem}
.tabs button:hover{background:var(--gold-soft)}
.tabs button.active{color:var(--ink);border-bottom:3px solid var(--gold);background:linear-gradient(180deg,transparent,var(--gold-soft))}
.seg{border-radius:12px;background:var(--surface2)}
.seg button.on{background:linear-gradient(180deg,#232d57,#161d3c);color:#f6e2a4}
.stepper span.on{background:linear-gradient(180deg,#f3dca0,#d4a948);color:var(--gold-ink)}
details.group>summary{font-weight:700}
dialog{border-radius:22px;border:1px solid color-mix(in srgb,var(--gold) 30%,var(--border));box-shadow:0 40px 80px -30px rgba(0,0,0,.6)}
dialog::backdrop{background:rgba(5,8,18,.6);backdrop-filter:blur(5px)}
dialog[open]{animation:pop .28s var(--ease)}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.97)}}
#toast div{border-radius:14px;background:#0f1626;color:#f6e6b8;border:1px solid rgba(227,192,112,.35)}
.skeleton{background:linear-gradient(90deg,var(--grid),var(--surface2),var(--grid));background-size:200% 100%}
.empty{color:var(--muted)}

/* ---------- 7. Chuyển trang mượt ---------- */
#view>*{animation:rise .55s var(--ease) both}
#view>*:nth-child(2){animation-delay:.05s}#view>*:nth-child(3){animation-delay:.1s}#view>*:nth-child(4){animation-delay:.15s}
#view>*:nth-child(5){animation-delay:.2s}#view>*:nth-child(n+6){animation-delay:.25s}
@keyframes rise{from{opacity:0;transform:translateY(14px)}}

/* ---------- 8. Đăng nhập ---------- */
.login-wrap{
  background:
    radial-gradient(600px 400px at 85% 10%,rgba(227,192,112,.28),transparent 70%),
    radial-gradient(700px 500px at 10% 90%,rgba(59,102,224,.35),transparent 70%),
    linear-gradient(135deg,#05070e,#0d1534 60%,#13205a);
  overflow:hidden;
}
.login-wrap:before,.login-wrap:after{content:"";position:absolute;pointer-events:none;z-index:0;border-radius:50%;filter:blur(60px);opacity:.5;animation:orb1 14s ease-in-out infinite alternate}
.login-wrap:before{width:340px;height:340px;left:8%;top:6%;background:#c79a3a}
.login-wrap:after{width:380px;height:380px;right:6%;bottom:2%;background:#2a56c8;animation-name:orb2}
.login-card{position:relative;z-index:1;background:rgba(255,255,255,.07);border:1px solid rgba(243,220,160,.35);backdrop-filter:blur(18px);color:#f1efe8;border-radius:26px;padding:2rem;box-shadow:0 40px 80px -30px #000}
.login-card h1{font-family:var(--serif);color:#f6e6b8;font-size:1.8rem;text-align:center}
.login-card .muted{color:#b7bfd8;text-align:center}
.login-card input{background:rgba(255,255,255,.08);border-color:rgba(243,220,160,.4);color:#fff}
.login-card input::placeholder{color:#8f98b8}

/* ---------- 9. Thanh dưới cho điện thoại ---------- */
.bottombar{display:none}
@media(max-width:900px){
  body{padding-bottom:72px}
  .bottombar{
    display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:10px;right:10px;bottom:10px;z-index:40;
    padding:.35rem;border-radius:22px;background:rgba(9,13,24,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
    border:1px solid rgba(227,192,112,.3);box-shadow:0 18px 40px -14px rgba(0,0,0,.7);
  }
  .bottombar a,.bottombar button{
    display:flex;flex-direction:column;align-items:center;gap:2px;padding:.45rem 0 .4rem;border:0;background:none;border-radius:16px;
    color:#aeb4cb;font:inherit;font-size:.64rem;font-weight:600;text-decoration:none;cursor:pointer;transition:color .2s,background .2s
  }
  .bottombar svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
  .bottombar .on{color:#f6e2a4;background:linear-gradient(180deg,rgba(227,192,112,.2),rgba(227,192,112,.04))}
  .bottombar .on svg{filter:drop-shadow(0 0 6px rgba(227,192,112,.7))}
  #toast{bottom:90px}
}

/* ---------- 10. Đáp ứng: điện thoại · máy tính bảng · laptop · màn hình lớn ---------- */
@media(min-width:1700px){html{font-size:16px}main,#banners{max-width:1680px}}
@media(max-width:900px){
  .row2,.row3,.row4,.g-main{grid-template-columns:minmax(0,1fr)!important}
  .grid>*,.row2>*,.row3>*,.row4>*,.card{min-width:0}
  html{font-size:15px}
  main{padding:.9rem .85rem 2rem}
  #banners{padding:0 .85rem}
  .hero{padding:1.1rem 1.1rem;grid-template-columns:1fr!important}
  .phd{padding:1rem 1.05rem;border-radius:20px}
  .hero .meta{white-space:normal}
  .hero .quote{font-size:1rem}
  .phd-t h1{font-size:1.35rem}
  .phd-r{justify-content:flex-start;width:100%}
  .phd-tabs{max-width:100%;overflow-x:auto;scrollbar-width:none}
  .phd-tabs::-webkit-scrollbar{display:none}
  .tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  .tabs button{white-space:nowrap}
  .topbar{gap:.5rem}
  .searchbox input{min-width:0}
  .userchip>span:last-child{display:none}
  .tablewrap{max-width:100%}
  dialog{max-width:96vw;border-radius:20px}
  .btn{min-height:38px}
  input,select,textarea{min-height:38px;font-size:16px}
}
@media(max-width:560px){
  .kpi5{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
  .kc{min-height:150px;padding:.8rem .8rem 0}
  .kc .val{font-size:1.3rem}
  .datepill span{display:none}
}
@media (hover:none){.card:hover,.kc:hover,.k2:hover,.btn:hover,#nav a:hover{transform:none}}
@media(prefers-reduced-motion:reduce){
  *,*:before,*:after{animation:none!important;transition:none!important}
}
@media print{.fx,.bottombar{display:none!important}.hero,.phd{background:#0e1a45!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}

svg.bi{width:1.05em;height:1.05em}
.tabs button svg.bi,.phd-tabs button svg.bi{width:1em;height:1em;opacity:.9}
@media(max-width:900px){.phd-tabs{display:flex}.phd-tabs button{flex:none}}
.card a:not(.btn),.kc a:not(.btn),.banner a,.ph a,.statusrow a{color:var(--accent)}
@media (prefers-color-scheme: dark){:root:where(:not([data-theme="light"])) .card a:not(.btn),:root:where(:not([data-theme="light"])) .kc a:not(.btn),:root:where(:not([data-theme="light"])) .banner a{color:#9dbcff}}
:root[data-theme="dark"] .card a:not(.btn),:root[data-theme="dark"] .kc a:not(.btn),:root[data-theme="dark"] .banner a{color:#9dbcff}

/* 0.28.3 — nhẹ máy cho điện thoại/máy yếu: bỏ làm mờ nền & hoạt ảnh nặng */
@media (max-width:900px),(pointer:coarse){
  *{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  .topbar{background:var(--bg)!important}
  .bottombar{background:rgba(9,13,24,.97)!important}
  .fx,.fx *,.hero:before,.hero:after,.phd:before,.phd:after,.login-wrap:before,.login-wrap:after{animation:none!important}
  #view>*{animation:none!important}
  .phd .fx i,.hero .fx i{display:none}
}
