/* PHF HR — QUẢN TRỊ TỔNG HỢP (QTTH) · Batch 01
 * Reference (Operator-approved): vertical HR-management UI, strong orange + white,
 * clean white workspace, sharp cards/tables, enterprise typography. No pastel,
 * no glassmorphism, no blur, no floating shadow, no gradient haze, no AI-SaaS look. */

.phf-qtth{
  --qt-orange:#E1500A;         /* strong, confident orange */
  --qt-header-orange:#F58220;  /* fresh corporate amber-orange; header only */
  --qt-orange-ink:#B23C05;
  --qt-orange-2:#F6A05B;
  --qt-orange-wash:#FDF1E7;    /* very light tint, used sparingly for active state only */
  --qt-ink:#1E2430;
  --qt-muted:#5C6672;
  --qt-line:#E3E6EB;
  --qt-line-strong:#CDD2DA;
  --qt-bg:#FFFFFF;
  --qt-surface:#FFFFFF;
  --qt-shadow:0 1px 0 rgba(30,36,48,.04);
  font-family:"Segoe UI",Roboto,Arial,sans-serif;
  color:var(--qt-ink);
  background:#F4F5F7;
}
.phf-qtth *{box-sizing:border-box;}

/* ── APPLICATION SHELL ─────────────────────────────────────────────────────
   Viewport-wide, Checklist-style. NO global max-width, NO margin:auto on the
   shell: it fills the viewport at every zoom level so it never collapses into
   a narrow "sheet" inside blank gutters. Fixed-width sidebar rail + fluid main
   (minmax(0,1fr)). A width cap belongs on an inner card only, never here. */
.phf-qtth{min-height:100vh;display:flex;flex-direction:column;background:#F4F5F7;}
.phf-qtth-shell{flex:1 0 auto;display:flex;flex-direction:column;min-width:0;}

/* full-bleed strong-orange header — sticky, fixed height (the logo never drives
   header height). No hero, no banner, no gradient, no slogan of its own.
   Logo left · title centered on the viewport · authenticated user block right. */
.phf-qtth-top{
  position:sticky;top:0;z-index:20;
  height:76px;flex:0 0 76px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:0 24px;background:var(--qt-header-orange);
}
.phf-qtth-logo{
  width:220px;height:44px;max-width:42vw;flex:0 0 auto;
  object-fit:contain;object-position:left center;display:block;
}
.phf-qtth-brand{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  text-align:center;pointer-events:none;
}
.phf-qtth-brand b{display:block;font-size:16px;font-weight:800;letter-spacing:.3px;line-height:1.15;color:#fff;}
.phf-qtth-brand small{display:block;font-size:10px;color:rgba(255,255,255,.85);font-weight:700;text-transform:uppercase;letter-spacing:1.4px;margin-top:2px;}

/* authenticated user / greeting block — real session data, right side */
.phf-qtth-user{flex:0 0 auto;text-align:right;padding-left:14px;border-left:1px solid rgba(255,255,255,.28);max-width:34vw;min-height:1px;}
.phf-qtth-user span{display:block;font-size:11px;color:rgba(255,255,255,.8);line-height:1.2;}
.phf-qtth-user strong{display:block;font-size:13.5px;color:#fff;font-weight:800;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.phf-qtth-user em{display:block;font-size:10px;color:rgba(255,255,255,.82);font-style:normal;font-weight:700;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* body: fixed sidebar rail + fluid workspace, spanning the full viewport width */
.phf-qtth-layout{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:calc(100vh - 76px);align-items:start;}

/* The rail flows with the page (no fixed-height inner scroll box): it stretches
   to the full layout height so the white rail stays continuous, and every menu
   item is reachable with the normal page scroll — no scroll-inside-scroll. */
.phf-qtth-nav{
  position:static;align-self:stretch;height:auto;overflow:visible;
  background:var(--qt-surface);border:0;border-right:1px solid var(--qt-line-strong);border-radius:0;
  padding:16px 12px;box-shadow:none;
}
.phf-qtth-nav-empty{font-size:12.5px;color:var(--qt-muted);padding:10px;margin:0;line-height:1.5;}

/* ── SIDEBAR · Corporate Clean Golden (Director readiness, 2026-09-27) ──────
   Left QTTH sidebar ONLY (navHtml() in phf-qtth-app.js). Arial, PHF orange
   #F58220, white rail, navy ink. Hierarchy = indentation + font weight.
   Square rows, no pill, no gradient, no glow. Selectors are anchored on
   .phf-qtth-nav.phf-qtth-sb so they outrank the older
   ".phf-qtth-nav .phf-qtth-nav-child" rules in phf-qtth-reporting.css,
   which loads AFTER this file. */
.phf-qtth-nav.phf-qtth-sb{
  --sb-orange:#F58220;
  --sb-orange-ink:#B8570A;     /* stronger orange for active text (AA on the wash) */
  --sb-orange-wash:#FFF4EA;
  --sb-ink:#1F2A3C;
  --sb-ink-2:#34405A;
  --sb-icon:#4A5568;
  --sb-muted:#8A93A1;
  --sb-line:#E4E7EC;
  --sb-hover:#F5F6F8;
  padding:12px 0 20px;background:#FFFFFF;color:var(--sb-ink);
  font-family:Arial,Helvetica,sans-serif;
}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-back,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-item,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-placeholder,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-child{
  display:flex;align-items:center;gap:10px;width:100%;min-height:38px;margin:0;
  padding:8px 14px 8px 13px;border:0;border-left:3px solid transparent;border-radius:0;
  background:none;box-shadow:none;color:var(--sb-ink);text-align:left;text-decoration:none;
  font-family:Arial,Helvetica,sans-serif;font-size:14px;font-weight:700;line-height:1.3;
}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-back,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group{cursor:pointer;}
/* phf-ui-polish.css forces every <button> to font-weight:600 + border-radius:
   12px with !important; the sidebar's group/home controls must stay bold and
   square, so this narrowly scoped override has to be !important as well. */
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-back,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group{font-weight:700!important;border-radius:0!important;}
/* phf-training-hub.css forces every <span> to font-weight:400 !important, so
   the label spans carry the hierarchy weight explicitly: groups / sections
   bold, report leaves regular, active leaf bold. */
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-back>span,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group>span,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-item>span,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-placeholder>span,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-item.is-active>span{font-weight:700!important;}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-child:not(.is-active)>span{font-weight:400!important;}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-ico{width:18px;height:18px;flex:0 0 auto;color:var(--sb-icon);}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-back .phf-qtth-sb-ico{color:var(--sb-orange);}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-chev{width:14px;height:14px;flex:0 0 auto;margin-left:auto;color:var(--sb-icon);transition:transform .15s ease;}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group[aria-expanded="false"] .phf-qtth-sb-chev{transform:rotate(-90deg);}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-items{display:flex;flex-direction:column;gap:0;margin-top:8px;padding-top:8px;border-top:1px solid var(--sb-line);}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-children{display:flex;flex-direction:column;margin:0;}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-children[hidden]{display:none;}
/* Three levels, told apart by indentation + size + weight + spacing only:
   L1 top groups/items (QTTH, Vận hành, Truth Data, Phân quyền): 14.5px bold, icon;
   L2 sections (Chi phí nhân sự, Chi phí hoạt động, …): 13px bold, softer ink,
   indented under L1; L3 report leaves: 13px regular, no icon, +14px further in,
   compact rows. More air BETWEEN top-level groups, tight rows WITHIN a group. */
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group.is-l0,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-items>.phf-qtth-sb-item{font-size:14.5px;min-height:40px;}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-items>.phf-qtth-sb-group.is-l0~.phf-qtth-sb-group.is-l0,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-items>.phf-qtth-sb-item{margin-top:10px;}.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-children.is-l0{padding-bottom:4px;}
/* level 2: Chi phí nhân sự / Biến động nhân sự / Chi phí VPP / Chi phí hoạt động */
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group.is-l1,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-item.is-l1,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-placeholder{padding-left:31px;font-size:13px;min-height:34px;color:var(--sb-ink-2);}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-children.is-l1{padding-bottom:6px;}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group.is-l1 .phf-qtth-sb-ico,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-item.is-l1 .phf-qtth-sb-ico,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-placeholder .phf-qtth-sb-ico{width:16px;height:16px;}
/* placeholders: visible, not a link, not interactive */
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-placeholder{color:var(--sb-muted);cursor:default;}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-placeholder .phf-qtth-sb-ico{color:var(--sb-muted);}
/* level 3 leaves (report routes): 14px further in than the level-2 label, compact */
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-child{padding-top:6px;padding-bottom:6px;padding-left:71px;min-height:30px;font-size:13px;font-weight:400;color:var(--sb-ink-2);}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-back:hover,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group:hover,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-item:hover,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-child:hover{background:var(--sb-hover);color:var(--sb-ink);}
/* active: orange left rule + very light orange wash + orange text. A report leaf
   keeps its regular weight — the rule + wash make it obvious without shouting. */
.phf-qtth-nav.phf-qtth-sb a.is-active,
.phf-qtth-nav.phf-qtth-sb a.is-active:hover{border-left-color:var(--sb-orange);background:var(--sb-orange-wash);color:var(--sb-orange-ink);}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-child.is-active>span{font-weight:400!important;}
.phf-qtth-nav.phf-qtth-sb a.is-active .phf-qtth-sb-ico{color:var(--sb-orange);}
.phf-qtth-nav.phf-qtth-sb .phf-qtth-nav-back:focus-visible,
.phf-qtth-nav.phf-qtth-sb .phf-qtth-sb-group:focus-visible,
.phf-qtth-nav.phf-qtth-sb a:focus-visible{outline:2px solid var(--sb-orange);outline-offset:-2px;}

.phf-qtth-work{min-width:0;padding:18px 24px 44px;}

/* cards */
.phf-qtth-card{background:var(--qt-surface);border:1px solid var(--qt-line);border-radius:8px;padding:16px 18px;box-shadow:var(--qt-shadow);margin-bottom:14px;}
.phf-qtth-card h2{margin:0 0 3px;font-size:16px;font-weight:800;}
.phf-qtth-muted{color:var(--qt-muted);font-size:12.5px;}
.phf-qtth-count{margin:10px 0 0;}

.phf-qtth-placeholder .phf-qtth-tag,.phf-qtth-tag{display:inline-block;background:var(--qt-orange);color:#fff;font-size:11px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;padding:4px 9px;border-radius:5px;margin-bottom:10px;}
.phf-qtth-placeholder p{color:var(--qt-muted);line-height:1.65;max-width:70ch;margin:6px 0 0;}
.phf-qtth-denied h2{color:var(--qt-orange-ink);}

/* head row */
.phf-qtth-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:flex-start;margin-bottom:14px;}
.phf-qtth-head-actions{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;}

/* fields / buttons */
.phf-qtth-field{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--qt-muted);}
.phf-qtth-field input,.phf-qtth-field select,.phf-qtth-select,.phf-qtth-search{
  border:1px solid var(--qt-line-strong);border-radius:7px;padding:8px 10px;font-size:13.5px;color:var(--qt-ink);background:#fff;font-family:inherit;min-height:38px;
}
.phf-qtth-field input:focus,.phf-qtth-field select:focus,.phf-qtth-select:focus,.phf-qtth-search:focus{outline:2px solid var(--qt-orange-2);outline-offset:1px;border-color:var(--qt-orange);}
.phf-qtth-btn{background:var(--qt-orange);color:#fff;border:0;border-radius:7px;padding:9px 16px;font-weight:800;font-size:13.5px;cursor:pointer;min-height:38px;font-family:inherit;}
.phf-qtth-btn:hover{background:var(--qt-orange-ink);}
.phf-qtth-btn:disabled{opacity:.55;cursor:default;}
.phf-qtth-btn.ghost{background:#fff;color:var(--qt-orange-ink);border:1px solid var(--qt-line-strong);}
.phf-qtth-btn.ghost:hover{border-color:var(--qt-orange);background:var(--qt-orange-wash);}
.phf-qtth-btn.sm{padding:6px 12px;min-height:32px;font-size:12.5px;}
.phf-qtth-link{background:none;border:0;color:var(--qt-orange-ink);font-weight:700;font-size:13px;cursor:pointer;text-decoration:underline;padding:0;font-family:inherit;}

/* warnings — clear accent, not alarming */
.phf-qtth-warn{display:flex;flex-wrap:wrap;gap:6px 16px;background:var(--qt-orange-wash);border:1px solid var(--qt-orange-2);border-left:4px solid var(--qt-orange);border-radius:6px;padding:8px 12px;margin-bottom:12px;}
.phf-qtth-warn span{font-size:12px;font-weight:700;color:var(--qt-orange-ink);}
.phf-qtth-warn-inline{background:var(--qt-orange-wash);border:1px solid var(--qt-orange-2);border-radius:7px;padding:8px 10px;font-size:12.5px;color:var(--qt-orange-ink);line-height:1.5;}
.phf-qtth-warndot{color:var(--qt-orange-ink);font-weight:900;cursor:help;}

/* toolbar */
.phf-qtth-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px;}
.phf-qtth-filters{display:inline-flex;border:1px solid var(--qt-line-strong);border-radius:7px;overflow:hidden;}
.phf-qtth-filters button{background:#fff;border:0;border-right:1px solid var(--qt-line);padding:8px 13px;font-size:12.5px;font-weight:700;color:var(--qt-muted);cursor:pointer;min-height:38px;font-family:inherit;}
.phf-qtth-filters button:last-child{border-right:0;}
.phf-qtth-filters button.is-on{background:var(--qt-orange);color:#fff;}
.phf-qtth-search{flex:1;min-width:190px;}

/* bulk bar */
.phf-qtth-bulkbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:#FCFCFD;border:1px dashed var(--qt-orange-2);border-radius:8px;padding:10px 12px;margin-bottom:12px;font-size:12.5px;}
.phf-qtth-bulkbar select{border:1px solid var(--qt-line-strong);border-radius:6px;padding:6px 8px;min-height:32px;font-family:inherit;}

/* table — table-centric enterprise HR, NOT cards. Fills the workspace width;
   the wrapper only scrolls on a genuinely narrow viewport. */
.phf-qtth-tablewrap{overflow-x:auto;border:1px solid var(--qt-line-strong);border-radius:8px;}
.phf-qtth-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:1040px;}
.phf-qtth-table th{background:#F3F4F6;text-align:left;padding:11px 14px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:#48505C;border-bottom:2px solid var(--qt-line-strong);white-space:nowrap;position:sticky;top:0;z-index:1;}
.phf-qtth-table td{padding:12px 14px;border-bottom:1px solid var(--qt-line);vertical-align:middle;}
.phf-qtth-table tbody tr:last-child td{border-bottom:0;}
.phf-qtth-table tbody tr:hover{background:#FFF7F0;}
.phf-qtth-table tr.is-inactive{background:#FAFAFB;color:var(--qt-muted);}
.phf-qtth-table tr.is-inactive:hover{background:#F4F5F7;}
.phf-qtth-table tr.is-selected{background:var(--qt-orange-wash);}
.phf-qtth-table tr.is-selected:hover{background:#FBE6D4;}
.phf-qtth-table .c-code{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;}
.phf-qtth-table .c-name{font-weight:600;white-space:nowrap;}
.phf-qtth-table .c-dept{white-space:nowrap;}
.phf-qtth-table .c-sel,.phf-qtth-table .c-perm,.phf-qtth-table .c-act{text-align:center;white-space:nowrap;}
.phf-qtth-table .c-sel input,.phf-qtth-table .c-perm input{width:16px;height:16px;accent-color:var(--qt-orange);cursor:pointer;}
.phf-qtth-empty{text-align:center;color:var(--qt-muted);padding:24px;}

.phf-qtth-pill{display:inline-block;font-size:11px;font-weight:800;padding:3px 9px;border-radius:4px;white-space:nowrap;}
.phf-qtth-pill.is-on{background:#E7F3EC;color:#1B7B45;}
.phf-qtth-pill.is-off{background:#EEF0F2;color:var(--qt-muted);}
.phf-qtth-pill.is-warn{background:var(--qt-orange-wash);color:var(--qt-orange-ink);}
.phf-qtth-pill.is-err{background:#FBE9E7;color:#B23C3C;}
.phf-qtth-td-effective span.c-warn{color:#B23C3C;}

.phf-qtth-map-form{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;}
.phf-qtth-map-form input[type="text"]{border:1.5px solid var(--qt-line-strong);border-radius:6px;padding:5px 8px;font-size:12.5px;font-family:inherit;}
.phf-qtth-map-tabs{display:flex;gap:6px;flex-wrap:wrap;}

/* classification chips — rendered text, never raw markup */
.phf-qtth-chip{display:inline-block;font-size:12px;font-weight:600;padding:3px 9px;border-radius:4px;background:#EEF0F2;color:var(--qt-ink);white-space:nowrap;}
.phf-qtth-chip.is-unset{background:transparent;color:var(--qt-orange-ink);font-weight:700;font-style:italic;padding-left:0;}
.phf-qtth-chip.is-kind{background:#FDECE0;color:var(--qt-orange-ink);}
.phf-qtth-chip.is-kind.is-alt{background:#EDEFF2;color:#48505C;}

.phf-qtth-toggle{border:1.5px solid var(--qt-line-strong);background:#fff;border-radius:6px;min-width:50px;padding:6px 10px;font-weight:800;font-size:12px;color:var(--qt-muted);cursor:pointer;font-family:inherit;line-height:1;}
.phf-qtth-toggle:hover:not(:disabled){border-color:var(--qt-orange);color:var(--qt-orange-ink);}
.phf-qtth-toggle.is-on{background:var(--qt-orange);border-color:var(--qt-orange);color:#fff;}
.phf-qtth-toggle.is-on:hover:not(:disabled){background:var(--qt-orange-ink);border-color:var(--qt-orange-ink);color:#fff;}
.phf-qtth-toggle:disabled{opacity:.4;cursor:default;}

/* drawer */
.phf-qtth-drawer-host{position:fixed;inset:0;z-index:900;}
.phf-qtth-drawer-backdrop{position:absolute;inset:0;background:rgba(20,24,32,.34);}
.phf-qtth-drawer{position:absolute;top:0;right:0;height:100%;width:min(540px,96vw);background:#fff;border-left:3px solid var(--qt-orange);display:flex;flex-direction:column;box-shadow:-8px 0 24px rgba(20,24,32,.14);}
.phf-qtth-drawer.is-wide{width:min(820px,97vw);}
.phf-qtth-drawer header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px;border-bottom:1px solid var(--qt-line);}
.phf-qtth-drawer header strong{font-size:15px;font-weight:800;display:block;}
.phf-qtth-drawer header span{font-size:12px;color:var(--qt-muted);}
.phf-qtth-drawer header button{background:none;border:0;font-size:22px;line-height:1;color:var(--qt-muted);cursor:pointer;}
.phf-qtth-drawer-body{padding:16px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;}
.phf-qtth-drawer-body h3{margin:8px 0 2px;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--qt-orange-ink);font-weight:800;}
.phf-qtth-drawer-body .phf-qtth-field span{color:var(--qt-ink);}
.phf-qtth-check{display:flex;gap:8px;align-items:center;font-size:13.5px;font-weight:700;}
.phf-qtth-adminonly{background:var(--qt-orange-wash);border:1px solid var(--qt-orange-2);border-radius:6px;padding:8px 10px;}

.phf-qtth-hist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;}
.phf-qtth-hist li{font-size:12px;border-left:2px solid var(--qt-line-strong);padding-left:10px;color:var(--qt-ink);}
.phf-qtth-hist li em{display:block;color:var(--qt-muted);font-style:normal;font-size:11px;margin-top:1px;}

/* dictionary grid */
.phf-qtth-dict-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.phf-qtth-dict-col h3{margin-top:0;}
.phf-qtth-dict-col ul{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:6px;}
.phf-qtth-dict-col li{display:grid;grid-template-columns:52px 1fr auto;gap:6px;align-items:center;}
.phf-qtth-dict-col li.is-off{opacity:.55;}
.phf-qtth-dict-col li input[type=text],.phf-qtth-dict-col li input[type=number]{border:1px solid var(--qt-line-strong);border-radius:6px;padding:5px 7px;font-size:12.5px;font-family:inherit;min-height:30px;}
.phf-qtth-dict-col li label{font-size:11px;color:var(--qt-muted);display:flex;gap:3px;align-items:center;white-space:nowrap;}
.phf-qtth-dict-add{display:flex;gap:6px;}
.phf-qtth-dict-add input{flex:1;border:1px solid var(--qt-line-strong);border-radius:6px;padding:6px 8px;font-family:inherit;min-height:32px;}

/* toast */
#phf-qtth-toast{position:fixed;right:16px;bottom:16px;z-index:1000;display:flex;flex-direction:column;gap:8px;}
.phf-qtth-toast{background:#fff;border:1px solid var(--qt-line);border-left:4px solid var(--qt-orange);border-radius:8px;padding:10px 14px;box-shadow:0 8px 24px rgba(20,24,32,.14);max-width:340px;font-size:13px;transition:opacity .25s,transform .25s;}
.phf-qtth-toast strong{display:block;font-weight:800;}
.phf-qtth-toast span{color:var(--qt-muted);font-size:12px;}
.phf-qtth-toast.is-error{border-left-color:#C6321F;}
.phf-qtth-toast.is-success{border-left-color:#1B7B45;}
.phf-qtth-toast.is-out{opacity:0;transform:translateX(12px);}

/* ── Truth Data · Bảng lương (Batch 02) ─────────────────────────────────── */
.phf-qtth-td-group{margin-top:18px;}
.phf-qtth-td-group:first-of-type{margin-top:6px;}
.phf-qtth-td-group-title{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--qt-muted);margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid var(--qt-line-strong);}
.phf-qtth-td-sources{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:6px;}
.phf-qtth-td-source{border:1px solid var(--qt-line-strong);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:6px;background:#fff;}
.phf-qtth-td-source.is-off{opacity:.6;background:#FAFAFB;}
.phf-qtth-td-source-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.phf-qtth-td-source-head strong{font-size:14.5px;font-weight:800;}
.phf-qtth-td-desc{font-size:12.5px;color:var(--qt-ink);line-height:1.55;margin:2px 0 8px;}

.phf-qtth-td-effective{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:2px 18px;border:1px solid var(--qt-line-strong);border-radius:8px;padding:12px 14px;margin-bottom:12px;background:#FCFCFD;}
.phf-qtth-td-effective>div{display:flex;flex-direction:column;padding:4px 0;}
.phf-qtth-td-effective b{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--qt-muted);font-weight:800;}
.phf-qtth-td-effective span{font-size:13.5px;font-weight:700;color:var(--qt-ink);}

/* ── CLASSIFICATION V2 — tabs + narrow prompt drawer (Batch 02C) ──────────── */
.phf-qtth-tabs{display:flex;gap:4px;border-bottom:1px solid var(--qt-line);margin:10px 0 14px;flex-wrap:wrap;}
.phf-qtth-tab{background:none;border:0;border-bottom:2px solid transparent;padding:8px 12px;font-size:13px;font-weight:700;color:var(--qt-muted);cursor:pointer;font-family:inherit;}
.phf-qtth-tab.is-on{color:var(--qt-orange-ink);border-bottom-color:var(--qt-orange);}
.phf-qtth-drawer.is-narrow{width:min(360px,92vw);}
.phf-qtth-link.is-danger{color:#B23C3C;}

/* Mẫu bảng lương chuẩn — tải mẫu ngay tại màn upload (§1 hard rule) */
.phf-qtth-td-template{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 18px;border:1px dashed var(--qt-line-strong);border-radius:8px;padding:12px 14px;margin-bottom:12px;background:var(--qt-orange-wash);}
.phf-qtth-td-template>div{display:flex;flex-direction:column;gap:3px;min-width:220px;flex:1;}
.phf-qtth-td-template b{font-size:13px;color:var(--qt-ink);font-weight:800;}
.phf-qtth-td-template span{font-size:12px;line-height:1.5;}
.phf-qtth-td-template .phf-qtth-btn{text-decoration:none;display:inline-flex;align-items:center;white-space:nowrap;}

.phf-qtth-td-vh{border:1px solid var(--qt-line);border-radius:8px;padding:4px 10px;margin-bottom:4px;}
.phf-qtth-td-vh summary{cursor:pointer;font-size:12.5px;font-weight:800;color:var(--qt-orange-ink);padding:6px 2px;}
.phf-qtth-td-vh .phf-qtth-tablewrap{margin:6px 0 10px;}

.phf-qtth-table .c-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.phf-qtth-table .c-final{font-weight:800;}
.phf-qtth-table tr.is-warn-row td{background:#FFF7F0;}
.phf-qtth-table tr.is-warn-row:hover td{background:#FDECE0;}

.phf-qtth-kv{width:100%;border-collapse:collapse;font-size:12.5px;margin:2px 0 4px;}
.phf-qtth-kv td{padding:5px 8px;border-bottom:1px solid var(--qt-line);}
.phf-qtth-kv td:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;width:38%;}
.phf-qtth-kv code{font-size:11.5px;color:var(--qt-muted);}

.phf-qtth-recon{list-style:none;margin:4px 0 8px;padding:0;display:flex;flex-direction:column;gap:5px;}
.phf-qtth-recon li{display:flex;flex-wrap:wrap;gap:2px 10px;border-left:3px solid var(--qt-orange-2);background:var(--qt-orange-wash);border-radius:5px;padding:7px 10px;font-size:12px;}
.phf-qtth-recon li b{font-weight:800;color:var(--qt-orange-ink);}
.phf-qtth-recon li span{color:var(--qt-ink);}

/* wizard modal */
.phf-qtth-modal-host{position:fixed;inset:0;z-index:950;}
.phf-qtth-modal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(760px,96vw);max-height:92vh;background:#fff;border-top:3px solid var(--qt-orange);border-radius:8px;display:flex;flex-direction:column;box-shadow:0 16px 48px rgba(20,24,32,.24);}
.phf-qtth-modal header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--qt-line);}
.phf-qtth-modal header strong{font-size:15px;font-weight:800;}
.phf-qtth-modal header button{background:none;border:0;font-size:22px;line-height:1;color:var(--qt-muted);cursor:pointer;}
.phf-qtth-steps{display:flex;flex-wrap:wrap;gap:4px 6px;list-style:none;margin:0;padding:12px 18px;border-bottom:1px solid var(--qt-line);}
.phf-qtth-steps li{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--qt-muted);padding:3px 8px;border-radius:20px;background:#F3F4F6;}
.phf-qtth-steps li span{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;border-radius:50%;background:#CDD2DA;color:#fff;font-size:10.5px;font-weight:800;}
.phf-qtth-steps li.is-now{background:var(--qt-orange-wash);color:var(--qt-orange-ink);}
.phf-qtth-steps li.is-now span{background:var(--qt-orange);}
.phf-qtth-steps li.is-done span{background:#1B7B45;}
.phf-qtth-modal-body{padding:16px 18px;overflow-y:auto;font-size:13px;line-height:1.6;}
.phf-qtth-modal-body h3{margin:12px 0 4px;font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--qt-orange-ink);font-weight:800;}
.phf-qtth-modal-body input[type=file]{border:1px dashed var(--qt-line-strong);border-radius:7px;padding:14px;width:100%;font-family:inherit;background:#FCFCFD;}
.phf-qtth-modal-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px;padding-top:12px;border-top:1px solid var(--qt-line);}

@media (max-width:900px){
  .phf-qtth-top{height:64px;flex-basis:64px;padding:0 14px;}
  .phf-qtth-logo{height:34px;width:170px;}
  .phf-qtth-brand b{font-size:14px;}
  .phf-qtth-brand small{font-size:9px;letter-spacing:1px;}
  .phf-qtth-user{max-width:40vw;padding-left:10px;}
  .phf-qtth-user span,.phf-qtth-user em{display:none;}
  .phf-qtth-user strong{max-width:38vw;}
  .phf-qtth-layout{display:block;min-height:0;}
  .phf-qtth-nav{position:static;height:auto;overflow:visible;border-right:0;border-bottom:1px solid var(--qt-line-strong);}
  .phf-qtth-work{padding:14px 14px 32px;}
  /* sidebar tree stays a vertical, non-collapsing list on narrow screens */
  .phf-qtth-dict-grid{grid-template-columns:1fr;}
}

/* ── ACCOUNTING DATA V1 · Dữ liệu chi phí kế toán (Operator UX) ─────────────
   Presentation only. Calm, dense, scannable enterprise work screen. Uses the
   existing QTTH tokens (orange structural accent, white ground, thin lines). */
.phf-qtth-summary{margin-top:16px;}
.phf-qtth-summary h3,.phf-qtth-review h3,.phf-qtth-deptsum h3{font-size:13.5px;font-weight:800;margin:0 0 8px;}
.phf-qtth-statgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
.phf-qtth-stat{border:1px solid var(--qt-line);border-radius:7px;padding:11px 13px;background:#fff;display:flex;flex-direction:column;gap:2px;}
.phf-qtth-stat.is-ok{border-left:3px solid #2E7D32;}
.phf-qtth-stat.is-warn{border-left:3px solid var(--qt-orange);background:var(--qt-orange-wash);}
.phf-qtth-stat-label{font-size:11.5px;font-weight:700;color:var(--qt-muted);text-transform:uppercase;letter-spacing:.4px;}
.phf-qtth-stat-rows{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums;}
.phf-qtth-stat-amt{font-size:12.5px;font-variant-numeric:tabular-nums;}

.phf-qtth-actionbar{margin:14px 0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;}
.phf-qtth-actionbar .phf-qtth-muted{font-size:12.5px;}

.phf-qtth-review{margin-top:18px;padding-top:14px;border-top:1px solid var(--qt-line);}
.phf-qtth-rgroup{border:1px solid var(--qt-line);border-radius:7px;padding:10px 12px;margin-bottom:8px;background:#fff;}
.phf-qtth-rgroup.is-open{border-color:var(--qt-line-strong);box-shadow:var(--qt-shadow);}
.phf-qtth-rgroup-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.phf-qtth-rgroup-id{display:flex;flex-direction:column;gap:1px;}
.phf-qtth-rgroup-id b{font-size:14px;font-variant-numeric:tabular-nums;}
.phf-qtth-rgroup-id span{font-size:12px;}
.phf-qtth-rgroup-samples{margin:7px 0 2px;padding-left:18px;font-size:12.5px;color:var(--qt-ink);}
.phf-qtth-rgroup-samples li{margin:1px 0;}
.phf-qtth-rgroup-dept{margin:3px 0 0;font-size:12px;}
.phf-qtth-btn.sm{padding:6px 12px;min-height:32px;font-size:12.5px;}

.phf-qtth-deptsum{margin-top:18px;padding-top:14px;border-top:1px solid var(--qt-line);}
.phf-qtth-deptchip{display:inline-block;font-size:12px;font-weight:600;padding:3px 9px;border-radius:4px;background:#EEF0F2;color:var(--qt-ink);white-space:nowrap;margin:0 4px 4px 0;font-variant-numeric:tabular-nums;}
.phf-qtth-deptchip.is-warn{background:var(--qt-orange-wash);color:var(--qt-orange-ink);}
.phf-qtth-note{font-size:12.5px;color:var(--qt-muted);margin:6px 0 0;line-height:1.5;}

.phf-qtth-tech{margin-top:18px;padding-top:6px;}
.phf-qtth-fold{border-top:1px solid var(--qt-line);}
.phf-qtth-fold>summary{cursor:pointer;padding:11px 2px;font-size:12.5px;font-weight:700;color:var(--qt-muted);list-style:none;}
.phf-qtth-fold>summary::-webkit-details-marker{display:none;}
.phf-qtth-fold>summary::before{content:"▸ ";color:var(--qt-line-strong);}
.phf-qtth-fold[open]>summary::before{content:"▾ ";}
.phf-qtth-rawfields>summary{cursor:pointer;font-size:11.5px;color:var(--qt-muted);padding:6px 0;}
.phf-qtth-table.phf-qtth-table-compact{min-width:0;font-size:12.5px;}
.phf-qtth-table-compact th{padding:7px 10px;}
.phf-qtth-table-compact td{padding:7px 10px;}

@media (max-width:900px){
  .phf-qtth-statgrid{grid-template-columns:repeat(2,minmax(0,1fr));}
}

/* ── ACCOUNTING V2 · Operator decision layer ──────────────────────────────── */
.phf-qtth-decide-cell{white-space:nowrap;}
.phf-qtth-decideform{border:1px solid var(--qt-line-strong);border-radius:7px;padding:12px 14px;margin:6px 0;background:var(--qt-orange-wash);}
.phf-qtth-decideform>p{margin:0 0 8px;font-size:13px;}
.phf-qtth-decideform label{display:block;margin:6px 0;font-size:12.5px;font-weight:600;}
.phf-qtth-decideform select,.phf-qtth-decideform input[type=text]{font:inherit;padding:5px 8px;border:1px solid var(--qt-line-strong);border-radius:5px;background:#fff;margin-left:4px;}
.phf-qtth-remember{font-weight:600;}
.phf-qtth-remember input{margin-right:6px;accent-color:var(--qt-orange);}
.phf-qtth-remember-box{border-top:1px dashed var(--qt-line-strong);margin-top:8px;padding-top:8px;}
.phf-qtth-remember-preview{display:grid;grid-template-columns:1fr;gap:4px;background:#fff;border:1px solid var(--qt-line);border-radius:6px;padding:9px 11px;margin-top:6px;}
.phf-qtth-remember-preview>div{display:flex;gap:8px;font-size:12.5px;}
.phf-qtth-remember-preview>div span{color:var(--qt-muted);min-width:130px;font-weight:600;}
.phf-qtth-decideform-actions{margin-top:10px;}

.phf-qtth-dict-page .phf-qtth-table{min-width:0;width:100%;table-layout:fixed}.phf-qtth-dict-page .phf-qtth-table td,.phf-qtth-dict-page .phf-qtth-table th{white-space:normal;overflow-wrap:anywhere}.phf-qtth-dict-page .c-act{width:30%}.phf-qtth-dict-page .phf-qtth-dict-add{display:flex;flex-wrap:wrap;gap:10px}.phf-qtth-dict-page input[type=file]{max-width:220px;min-width:0}
/* "Tải mẫu danh mục" / upload control / chosen filename must never overlap —
   the label wrapping the native file input needs its OWN flex layout (text +
   input as separate, gapped, wrappable items) instead of flowing as plain
   inline content; the head-actions row itself also needs a stable
   cross-axis alignment so the two controls don't visually collide at
   in-between (tablet) widths. */
.phf-qtth-dict-page .phf-qtth-head-actions{align-items:center;row-gap:10px;}
.phf-qtth-upload-label{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;max-width:100%;}

/* ── ACCOUNTING · REMEMBERED RULE V2 PREVIEW ───────────────────────────────
   "Ghi nhớ" → proposed pattern → Xác nhận. Square/corporate, Arial; account,
   pattern, decision and matched rows/amount visible at a glance. */
.phf-qtth-rr{font-family:Arial,Helvetica,sans-serif;background:#fff;border:1px solid var(--qt-line-strong);border-radius:0;padding:10px 12px;margin-top:6px;}
.phf-qtth-rr-kv{border-collapse:collapse;width:100%;font-size:13px;}
.phf-qtth-rr-kv th{width:120px;text-align:left;vertical-align:top;padding:5px 10px 5px 0;color:var(--qt-muted);font-weight:700;background:none;}
.phf-qtth-rr-kv td{padding:5px 0;border-top:1px solid var(--qt-line);vertical-align:top;}
.phf-qtth-rr-kv tr:first-child td{border-top:0;}
.phf-qtth-rr-kv td>div{margin-top:2px;font-size:12.5px;}
.phf-qtth-rr-warn{color:var(--qt-orange-ink);font-size:12.5px;margin:4px 0 0;}
.phf-qtth-rr-links{margin:8px 0 0;font-size:12.5px;}
.phf-qtth-linkbtn{font:inherit;font-size:12.5px;background:none;border:0;padding:0;color:var(--qt-orange-ink);text-decoration:underline;cursor:pointer;}
.phf-qtth-rr-edit{border-top:1px solid var(--qt-line);margin-top:8px;padding-top:8px;}
.phf-qtth-rr-edit input[type=text]{border-radius:0;}
.phf-qtth-rr .phf-qtth-tablewrap{margin-top:8px;max-height:320px;overflow:auto;}
.phf-qtth-decideform-actions .phf-qtth-btn[disabled]{opacity:.5;cursor:not-allowed;}
.phf-qtth-rr .phf-qtth-error{color:#b42318;font-size:12.5px;margin:6px 0 0;}

/* ── ACCOUNTING · BULK REVIEW V1 ──────────────────────────────────────────
   Checkbox per loaded NEEDS_REVIEW row (one account) → confirmation dialog. */
.phf-qtth-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.phf-qtth-sel-cell{width:30px;text-align:center;}
.phf-qtth-sel-cell input{accent-color:var(--qt-orange);width:16px;height:16px;cursor:pointer;}
.phf-qtth-sel-cell input[disabled]{cursor:not-allowed;opacity:.45;}
.phf-qtth-table tr.is-selected td{background:var(--qt-orange-wash);}
.phf-qtth-rgroup-id .phf-qtth-tag{margin-left:8px;}
.phf-qtth-bulkbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;border:1px solid var(--qt-line-strong);background:#fff;padding:8px 12px;margin:8px 0;font-family:Arial,Helvetica,sans-serif;font-size:13px;}
.phf-qtth-bulkbar.is-locked{background:#F7F8FA;}
.phf-qtth-bulk-all{display:inline-flex;align-items:center;gap:6px;font-weight:700;cursor:pointer;}
.phf-qtth-bulk-all input{accent-color:var(--qt-orange);width:16px;height:16px;}
.phf-qtth-bulk-count{color:var(--qt-ink);}
.phf-qtth-bulk-actions{margin-left:auto;display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;}
.phf-qtth-bulkbar .phf-qtth-btn[disabled]{opacity:.5;cursor:not-allowed;}
.phf-qtth-bulkbar .phf-qtth-error{flex-basis:100%;margin:0;color:#b42318;font-size:12.5px;}
.phf-qtth-bulk-backdrop{position:absolute;inset:0;background:rgba(20,24,32,.42);}
.phf-qtth-bulk-modal{font-family:Arial,Helvetica,sans-serif;border-radius:0;}
.phf-qtth-bulk-modal .phf-qtth-tablewrap{max-height:260px;overflow:auto;margin-top:4px;}
.phf-qtth-bulk-kv select{font:inherit;padding:5px 8px;border:1px solid var(--qt-line-strong);background:#fff;max-width:100%;}
.phf-qtth-bulk-modal .phf-qtth-error{color:#b42318;font-size:12.5px;margin:8px 0 0;}
.phf-qtth-bulk-modal .phf-qtth-btn[disabled]{opacity:.5;cursor:not-allowed;}
@media (max-width:640px){
  .phf-qtth-bulk-actions{margin-left:0;}
}
/* Truth Data landing — compact grouped list (presentation only). Scoped to
   .phf-qtth-td-landing so the shared .phf-qtth-td-group/-sources/-source
   classes used by "Rà soát nhân sự ngoài hệ thống" (phf-qtth-org.js) keep
   their current look. Desktop row = 3 columns:
     identity (name / subtitle / quiet status) | description (2-line clamp,
     full text in tooltip) | fixed-width action.
   The head wrapper is display:contents so name + status become separate grid
   items: the status sits under the subtitle and never interrupts the name. */
.phf-qtth-td-landing{font-family:Arial,Helvetica,sans-serif;border-radius:0;padding:22px 24px 24px;}
.phf-qtth-td-landing .phf-qtth-head{margin:0 0 22px;padding-bottom:18px;border-bottom:1px solid var(--qt-line);}
.phf-qtth-td-landing .phf-qtth-head h2{margin:0 0 8px;font-size:19px;line-height:1.3;color:var(--qt-ink);}
.phf-qtth-td-landing .phf-qtth-head .phf-qtth-muted{margin:0;font-size:13px;line-height:1.55;max-width:880px;}
.phf-qtth-td-landing .phf-qtth-td-group{margin-top:24px;border:1px solid var(--qt-line-strong);background:#fff;}
.phf-qtth-td-landing .phf-qtth-td-group:first-of-type{margin-top:0;}
.phf-qtth-td-landing .phf-qtth-td-group-title{margin:0;padding:10px 18px;border-bottom:1px solid var(--qt-line-strong);border-left:3px solid var(--qt-orange);background:#F7F8FA;color:var(--qt-ink);font-size:12.5px;font-weight:800;letter-spacing:.8px;}
.phf-qtth-td-landing .phf-qtth-td-sources{display:block;margin:0;}
.phf-qtth-td-landing .phf-qtth-td-source{display:grid;grid-template-columns:minmax(230px,290px) minmax(0,1fr) 96px;grid-template-areas:"title desc btn" "sub desc btn" "status desc btn";align-content:center;align-items:center;column-gap:32px;row-gap:2px;min-height:72px;padding:10px 18px;border:0;border-top:1px solid var(--qt-line);border-radius:0;background:#fff;}
.phf-qtth-td-landing .phf-qtth-td-source:first-child{border-top:0;}
.phf-qtth-td-landing .phf-qtth-td-source:hover{background:#FBFBFC;}
.phf-qtth-td-landing .phf-qtth-td-source-head{display:contents;}
.phf-qtth-td-landing .phf-qtth-td-source-head strong{grid-area:title;font-size:14px;font-weight:800;line-height:1.3;color:var(--qt-ink);}
.phf-qtth-td-landing .phf-qtth-td-source>.phf-qtth-muted{grid-area:sub;margin:0;font-size:12px;line-height:1.4;}
.phf-qtth-td-landing .phf-qtth-td-source-head .phf-qtth-tag{grid-area:status;justify-self:start;display:inline-flex;align-items:center;gap:6px;margin:1px 0 0;padding:0;background:none;border-radius:0;color:#3D7A55;font-size:11px;font-weight:700;letter-spacing:0;text-transform:none;line-height:1.3;}
.phf-qtth-td-landing .phf-qtth-td-source-head .phf-qtth-tag::before{content:"";width:6px;height:6px;background:#3D9A62;flex-shrink:0;}
.phf-qtth-td-landing .phf-qtth-td-desc{grid-area:desc;max-width:720px;margin:0;font-size:12.5px;line-height:1.6;color:#4A5360;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.phf-qtth-td-landing .phf-qtth-td-source>.phf-qtth-btn{grid-area:btn;justify-self:stretch;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:0 12px;border:1px solid var(--qt-orange);border-radius:2px;background:#fff;color:var(--qt-orange);font-size:12.5px;font-weight:700;white-space:nowrap;box-shadow:none;}
.phf-qtth-td-landing .phf-qtth-td-source>.phf-qtth-btn::after{content:"\2192";font-weight:400;}
.phf-qtth-td-landing .phf-qtth-td-source>.phf-qtth-btn:hover,.phf-qtth-td-landing .phf-qtth-td-source>.phf-qtth-btn:focus-visible{background:var(--qt-orange);color:#fff;outline:none;}
@media (max-width:900px){
  .phf-qtth-td-landing{padding:18px 16px 20px;}
  .phf-qtth-td-landing .phf-qtth-td-source{grid-template-columns:minmax(0,1fr);grid-template-areas:"title" "sub" "status" "desc" "btn";row-gap:3px;padding:12px 14px;}
  .phf-qtth-td-landing .phf-qtth-td-desc{margin-top:6px;max-width:none;}
  .phf-qtth-td-landing .phf-qtth-td-source>.phf-qtth-btn{justify-self:start;width:96px;margin-top:8px;}
}

/* ── Truth Data · Chi phí hoạt động · "Điều chỉnh phân loại" drawer (Admin override) ──
 * The drawer is mounted on <body>; it carries .phf-qtth for the tokens but must not paint
 * the app background over the page. Readability only — same structure, same palette. */
.phf-qtth.phf-qtth-drawer-host{background:transparent;display:block;min-height:0;}
/* fields the form hides (e.g. "Lý do loại trừ" unless EXCLUDED) — .phf-qtth-field{display:flex} must not override [hidden] */
.phf-qtth-mgmt-admin [hidden]{display:none!important;}
.phf-qtth-mgmt-admin .phf-qtth-drawer{color:var(--qt-ink);font-size:13.5px;line-height:1.5;}
.phf-qtth-mgmt-admin .phf-qtth-drawer header strong{color:var(--qt-ink);}
.phf-qtth-mgmt-admin .phf-qtth-drawer header span{color:#3D4652;font-weight:600;}
.phf-qtth-mgmt-admin .phf-qtth-drawer header button{color:#3D4652;}
.phf-qtth-mgmt-admin .phf-qtth-muted{color:#4A5361;}
.phf-qtth-mgmt-admin h3{color:var(--qt-ink);font-size:14px;font-weight:800;margin:4px 0 10px;}
/* current classification */
.phf-qtth-mgmt-admin-current{border:1px solid var(--qt-line-strong);border-left:4px solid #5C6672;background:#F7F8FA;padding:9px 12px;margin:0 0 12px;color:var(--qt-ink);font-weight:700;}
.phf-qtth-mgmt-admin-current .phf-qtth-muted{color:#3D4652;font-weight:600;font-size:12.5px;}
.phf-qtth-mgmt-admin-current-label{display:block;font-size:11.5px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;color:#4A5361;margin-bottom:2px;}
/* labels + controls */
.phf-qtth-mgmt-admin .phf-qtth-field>span{color:#303946;font-size:12px;font-weight:800;}
.phf-qtth-mgmt-admin .phf-qtth-field select,
.phf-qtth-mgmt-admin .phf-qtth-field textarea{color:var(--qt-ink);background:#fff;border:1px solid #9AA3AD;border-radius:7px;font-size:13.5px;font-weight:600;font-family:inherit;}
.phf-qtth-mgmt-admin .phf-qtth-field textarea{padding:8px 10px;min-height:76px;resize:vertical;box-sizing:border-box;}
.phf-qtth-mgmt-admin .phf-qtth-field textarea::placeholder{color:#6B7480;font-weight:500;opacity:1;}
.phf-qtth-mgmt-admin .phf-qtth-field select option{color:var(--qt-ink);background:#fff;}
/* "Giữ nguyên" / placeholder: readable, but clearly not a change */
.phf-qtth-mgmt-admin .phf-qtth-field select.is-keep{color:#3D4652;font-weight:500;font-style:italic;background:#F7F8FA;border-style:dashed;}
/* explicit change: stands out */
.phf-qtth-mgmt-admin .phf-qtth-field select.is-set{color:var(--qt-ink);font-weight:700;border-color:var(--qt-orange);box-shadow:inset 3px 0 0 var(--qt-orange);}
.phf-qtth-mgmt-admin .phf-qtth-field select:focus,
.phf-qtth-mgmt-admin .phf-qtth-field textarea:focus{outline:2px solid var(--qt-orange-2);outline-offset:1px;border-color:var(--qt-orange);}
.phf-qtth-mgmt-admin .phf-qtth-field select:disabled,
.phf-qtth-mgmt-admin .phf-qtth-field textarea:disabled{color:#4A5361;background:#ECEEF1;border-color:#B5BCC5;cursor:not-allowed;}
/* actions: primary (Xem trước / Xác nhận) vs secondary (Hủy / Quay lại) */
.phf-qtth-mgmt-admin-actions{margin-top:14px;padding-top:12px;border-top:1px solid var(--qt-line);}
.phf-qtth-mgmt-admin .phf-qtth-btn.is-primary-action{background:var(--qt-orange-ink);color:#fff;min-height:42px;padding:10px 22px;font-size:14px;box-shadow:0 1px 0 rgba(30,36,48,.12);}
.phf-qtth-mgmt-admin .phf-qtth-btn.is-primary-action:hover{background:#8F3004;}
.phf-qtth-mgmt-admin .phf-qtth-btn.ghost{color:#303946;border-color:#9AA3AD;font-weight:700;}
.phf-qtth-mgmt-admin .phf-qtth-btn.ghost:hover{color:var(--qt-orange-ink);border-color:var(--qt-orange);}
.phf-qtth-mgmt-admin .phf-qtth-btn:disabled,.phf-qtth-mgmt-admin .phf-qtth-btn.is-primary-action:disabled{opacity:1;background:#E3E6EB;color:#3D4652;box-shadow:inset 0 0 0 1px #B5BCC5;cursor:progress;}
.phf-qtth-mgmt-admin .phf-qtth-btn.ghost:disabled{background:#F2F3F5;color:#4A5361;border-color:#CDD2DA;}
.phf-qtth-mgmt-admin-hint{font-size:12px;color:#4A5361;font-weight:600;}
@media(max-width:560px){.phf-qtth-mgmt-admin-actions .phf-qtth-btn{flex:1 1 100%;}.phf-qtth-mgmt-admin-hint{flex-basis:100%;}}
