:root{
  /* Màu chủ đạo */
  --primary:#047857;
  --primary-hover:#065f46;
  --primary-soft:#ecfdf5;
  --primary-ring:rgba(5,150,105,.18);

  /* Nền, chữ, viền */
  --bg:#f3f5f8;
  --ink:#0f172a;
  --text:#1e293b;
  --gray:#64748b;
  --gray-light:#94a3b8;
  --border:#e2e8f0;
  --border-strong:#cbd5e1;
  --surface:#fff;
  --surface2:#f8fafc;

  /* Thanh bên */
  --side-bg:#0f1b2d;
  --side-bg2:#13233a;
  --side-text:#c3cedd;
  --side-muted:#7d8ea6;

  /* Trạng thái */
  --yellow:#f59e0b;
  --blue:#2563eb;
  --green:#16a34a;
  --red:#dc2626;
  --mint:#ecfdf5;
  --mint2:#d1fae5;
  --leaf:#10b981;
  --leaf2:#059669;

  --radius:10px;
  --radius-lg:12px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.05);
  --shadow:0 1px 3px rgba(15,23,42,.06),0 6px 16px rgba(15,23,42,.05);
  --shadow-pop:0 12px 32px rgba(15,23,42,.14);
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:"Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,"Noto Sans","Apple Color Emoji","Segoe UI Emoji",sans-serif;
  font-size:14px;
  line-height:1.5;
  color:var(--text);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
h1,h2,h3,h4{color:var(--ink);letter-spacing:-.01em;line-height:1.3}
h2{font-size:20px;font-weight:700}
h3{font-size:16px;font-weight:650}
a{color:var(--primary)}
a,button,select,label,input[type="checkbox"],input[type="range"]{touch-action:manipulation}
:focus-visible{outline:2px solid var(--leaf2);outline-offset:2px}

body.app-body{overflow-x:hidden;max-width:100%}
.app-body,.auth-body{background:var(--bg)}

.container{max-width:1500px;margin:0 auto;padding:22px}

/* ===== Khung ứng dụng ===== */
.app-shell{display:flex;min-height:100vh;width:100%;max-width:100%;min-width:0}
.sidebar{
  position:sticky;top:0;height:100vh;flex:0 0 248px;width:248px;
  display:flex;flex-direction:column;overflow-y:auto;
  padding:16px 12px;
  color:var(--side-text);
  background:linear-gradient(180deg,var(--side-bg),var(--side-bg2));
}
.sidebar-brand{display:flex;gap:11px;align-items:center;padding:4px 8px 18px;margin-bottom:8px;border-bottom:1px solid rgba(255,255,255,.07)}
.sidebar-title{font-weight:700;font-size:15px;color:#fff;letter-spacing:.1px}
.sidebar-sub{font-size:12px;margin-top:1px;color:var(--side-muted)}
.side-section{padding:10px 12px 6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--side-muted)}
.sidebar-spacer{flex:1}
.sidebar-logout{padding:8px 0 0;border-top:1px solid rgba(255,255,255,.07);margin-top:8px}

.side-nav{display:flex;flex-direction:column;gap:2px}
.side-link{
  position:relative;
  display:flex;align-items:center;gap:11px;
  padding:9px 12px;
  border-radius:8px;
  color:var(--side-text);
  text-decoration:none;
  font-weight:500;
  font-size:14px;
  transition:background .15s,color .15s;
}
.side-link .ico{width:19px;height:19px;opacity:.85}
.side-link:hover{background:rgba(255,255,255,.06);color:#fff}
.side-link.active{background:rgba(16,185,129,.16);color:#fff;font-weight:600}
.side-link.active .ico{opacity:1;color:#34d399}
.side-link.active::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:#34d399}
.side-link.side-logout{width:100%;border:0;background:none;font:inherit;color:var(--side-muted);text-align:left;cursor:pointer}
.side-link.side-logout:hover{background:rgba(239,68,68,.12);color:#fca5a5}

.main{flex:1;display:flex;flex-direction:column;min-width:0;max-width:100%}
.topbar{
  position:sticky;top:0;z-index:20;
  display:flex;align-items:center;justify-content:space-between;
  gap:12px;
  min-height:60px;
  padding:8px 24px;
  border-bottom:1px solid var(--border);
  background:rgba(255,255,255,.96);
}
.topbar-lite{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.page-kicker{font-size:16px;font-weight:650;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Menu tài khoản (góc trên bên phải) */
.user-menu{position:relative}
.user-chip{
  display:flex;align-items:center;gap:10px;
  padding:4px 10px 4px 4px;
  border-radius:10px;
  border:1px solid transparent;
  cursor:pointer;list-style:none;user-select:none;
  transition:background .15s,border-color .15s;
}
.user-chip::-webkit-details-marker{display:none}
.user-chip:hover,.user-menu[open] .user-chip{background:var(--surface2);border-color:var(--border)}
.avatar{
  width:34px;height:34px;border-radius:50%;flex:none;
  display:grid;place-items:center;
  font-weight:600;font-size:14px;
  color:#fff;
  background:var(--primary);
}
.avatar-lg{width:42px;height:42px;font-size:17px}
.user-meta{display:flex;flex-direction:column;line-height:1.25;text-align:left}
.user-name{font-weight:600;font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-role{font-size:12px;color:var(--gray);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
.user-caret{width:16px;height:16px;color:var(--gray);transition:transform .15s}
.user-menu[open] .user-caret{transform:rotate(180deg)}
.user-dropdown{
  position:absolute;right:0;top:calc(100% + 8px);z-index:40;
  width:260px;padding:6px;
  background:#fff;border:1px solid var(--border);border-radius:12px;
  box-shadow:var(--shadow-pop);
}
.user-dropdown-head{display:flex;align-items:center;gap:10px;padding:10px 10px 12px;margin-bottom:4px;border-bottom:1px solid var(--border)}
.user-dropdown form{margin:0}
.user-dropdown-item{
  display:flex;align-items:center;gap:10px;width:100%;
  padding:9px 10px;border:0;border-radius:8px;background:none;
  font:inherit;font-size:14px;font-weight:500;color:var(--text);text-decoration:none;text-align:left;cursor:pointer;
}
.user-dropdown-item .ico{width:18px;height:18px;color:var(--gray)}
.user-dropdown-item:hover{background:#f1f5f9}
.user-dropdown-item.is-danger{color:var(--red)}
.user-dropdown-item.is-danger .ico{color:var(--red)}
.user-dropdown-item.is-danger:hover{background:#fef2f2}

.main-inner{
  padding:24px;
  max-width:1560px;
  width:100%;
  margin:0 auto;
  min-width:0;
  overflow-x:hidden;
  overflow-x:clip;
}

/* ===== Đăng nhập ===== */
.auth-shell{min-height:100vh;display:grid;place-items:center;padding:28px 16px}
.auth-panel{
  width:min(960px,100%);
  display:grid;
  grid-template-columns:420px 1fr;
  border-radius:16px;
  overflow:hidden;
  border:1px solid var(--border);
  box-shadow:0 20px 50px rgba(15,23,42,.12);
  background:#fff;
}
.auth-brand{
  padding:40px 36px;
  color:var(--side-text);
  background:
    radial-gradient(420px 260px at 0% 0%, rgba(16,185,129,.22), transparent 70%),
    linear-gradient(160deg,var(--side-bg),#16304f);
  display:flex;flex-direction:column;justify-content:center;gap:30px;
}
.auth-brand-top{display:flex;align-items:center;gap:14px}
.auth-brand-title{font-size:24px;font-weight:700;color:#fff}
.auth-brand-sub{font-size:13.5px;color:var(--side-muted)}
.auth-points{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}
.auth-points li{display:flex;gap:12px;align-items:flex-start;font-size:14px;line-height:1.5}
.auth-points .ico{width:20px;height:20px;color:#34d399;margin-top:1px}
.auth-panel-inner{padding:44px 44px 36px;background:#fff;display:flex;flex-direction:column;justify-content:center}
.auth-card{max-width:380px;width:100%;margin:0 auto}
.auth-title{margin:0;font-size:24px}
.auth-hint{margin:6px 0 24px;color:var(--gray)}
.auth-submit{margin-top:8px}
.auth-brand{grid-row:1 / span 2}
.auth-footer{grid-column:2;padding:12px 16px;text-align:center;border-top:1px solid var(--border);color:var(--gray-light);font-size:12px;background:#fff}
.app-footer{margin-top:28px;padding:14px 0 4px;text-align:center;color:var(--gray-light);font-size:12px;border-top:1px solid var(--border)}

.brand-mark{
  width:38px;height:38px;border-radius:10px;flex:none;
  display:grid;place-items:center;
  color:#fff;
  background:linear-gradient(135deg,#10b981,#047857);
  box-shadow:0 4px 12px rgba(4,120,87,.35);
}
.brand-mark .ico{width:22px;height:22px}
.auth-brand .brand-mark{width:48px;height:48px;border-radius:12px}
.auth-brand .brand-mark .ico{width:28px;height:28px}

/* ===== Khối nội dung ===== */
.card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:20px 22px;
  box-shadow:var(--shadow-sm);
  min-width:0;
  max-width:100%;
}
.card > h2:first-child{margin-top:0}
.page-title{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 0 14px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width: 980px){.grid-2{grid-template-columns:1fr}}

.pager{
  margin-top:14px;
  display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex-wrap:wrap;
  padding:0;
  border:0;
  background:none;
}
.pager-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pager-page{font-size:13px}
.pager-btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:32px;padding:0 12px;
  border-radius:8px;
  border:1px solid var(--border-strong);
  background:#fff;
  color:var(--text);
  text-decoration:none;
  font-weight:500;
  font-size:13px;
}
.pager-btn:hover{background:var(--surface2);border-color:#94a3b8}
.pager-btn.disabled{opacity:.45;pointer-events:none}

.kv{display:grid;grid-template-columns:160px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
.kv:last-child{border-bottom:none}
.k{color:var(--gray);font-weight:500;font-size:13px}
.v{font-size:14px}
.hr{border:0;border-top:1px solid var(--border);margin:16px 0}
hr{border:0;border-top:1px solid var(--border)}

.alert{
  display:flex;align-items:flex-start;gap:10px;
  border-radius:var(--radius);
  padding:11px 14px;
  margin:0 0 16px 0;
  border:1px solid var(--border);
  border-left-width:4px;
  background:#fff;
  font-weight:500;
}
.alert-error{border-color:#fecaca;border-left-color:var(--red);background:#fef2f2;color:#991b1b}
.alert-success{border-color:#bbf7d0;border-left-color:var(--green);background:#f0fdf4;color:#166534}

.muted{color:var(--gray)}
label.muted,.field-label{display:block;margin-bottom:5px;font-size:13px;font-weight:500;color:#475569}
.field{margin-bottom:14px}
.row{display:flex;gap:14px;flex-wrap:wrap;min-width:0}
.row>*{flex:1;min-width:0}

/* ===== Nút ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  gap:6px;
  min-height:38px;
  padding:8px 16px;
  border:1px solid var(--primary);
  border-radius:8px;
  background:var(--primary);
  color:#fff;
  text-decoration:none;
  font:inherit;
  font-weight:600;
  font-size:14px;
  line-height:1.2;
  cursor:pointer;
  box-shadow:0 1px 2px rgba(4,120,87,.25);
  transition:background .15s,border-color .15s,box-shadow .15s,color .15s;
  white-space:nowrap;
}
.btn:hover{background:var(--primary-hover);border-color:var(--primary-hover)}
.btn:disabled{opacity:.6;cursor:default}
.btn.secondary{
  background:#fff;
  color:var(--text);
  border-color:var(--border-strong);
  box-shadow:var(--shadow-sm);
}
.btn.secondary:hover{background:var(--surface2);border-color:#94a3b8}
.btn.danger{background:var(--red);border-color:var(--red)}
.btn.danger:hover{background:#b91c1c;border-color:#b91c1c}
.btn.small{min-height:34px;padding:6px 12px;font-size:13px}
.btn.btn-lg{min-height:44px;font-size:15px}
.btn.full{width:100%}

/* ===== Ô nhập ===== */
.input,.textarea,select{
  width:100%;
  min-height:38px;
  padding:8px 12px;
  border:1px solid var(--border-strong);
  border-radius:8px;
  background:#fff;
  color:var(--text);
  outline:none;
  font:inherit;
  transition:border-color .15s,box-shadow .15s;
}
.input::placeholder,.textarea::placeholder{color:var(--gray-light)}
.input:hover,.textarea:hover,select:hover{border-color:#94a3b8}
.input:focus,.textarea:focus,select:focus{border-color:var(--leaf2);box-shadow:0 0 0 3px var(--primary-ring)}
input[type="file"].input{padding:6px 8px}
input[type="file"]::file-selector-button{margin-right:10px;padding:5px 12px;border:1px solid var(--border-strong);border-radius:6px;background:var(--surface2);color:var(--text);font:inherit;font-size:13px;font-weight:500;cursor:pointer}
input[type="file"]::file-selector-button:hover{background:#eef2f7}
.textarea{min-height:110px;resize:vertical;line-height:1.5}
.textarea[rows]{min-height:0}
.form-actions{display:flex;gap:10px;align-items:center;margin-top:16px;flex-wrap:wrap}

.warn{border-left:4px solid var(--red);padding:10px 12px;background:#fef2f2;border-radius:var(--radius)}

/* Legacy table (if any) */
.table{width:100%;border-collapse:collapse}
.table th,.table td{padding:11px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
.table thead th{
  background:var(--surface2);
  color:#475569;font-size:12px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;
  border-bottom:1px solid var(--border);white-space:nowrap;
}
.table tbody tr:hover td{background:#fafbfc}
.table tbody tr:last-child td{border-bottom:0}

/* Bảng nhiệm vụ */
.excel-table{
  border:1px solid var(--border);
  border-collapse:separate;
  border-spacing:0;
  width:100%;
  max-width:100%;
  table-layout:fixed;
  background:#fff;
  border-radius:var(--radius-lg);
  overflow:hidden;
  font-size:13.5px;
}
.excel-table th,.excel-table td{
  border:0;
  border-bottom:1px solid var(--border);
  vertical-align:top;
  line-height:1.45;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.excel-table th + th,.excel-table td + td{border-left:1px solid #f1f5f9}
.excel-table tbody tr:last-child td{border-bottom:0}
.excel-table a{
  overflow-wrap:anywhere;
  word-break:break-all;
}
.excel-table thead th{
  background:var(--surface2);
  color:#475569;
  font-weight:600;
  text-align:center;
  /* Header có label dài: cho phép wrap để không chồng chữ */
  white-space:normal;
  word-break:break-word;
  hyphens:auto;
  vertical-align:middle;
  line-height:1.3;
  font-size:11.5px;
  letter-spacing:.04em;
  text-transform:uppercase;
  padding:11px 8px;
}
/* Tỉ lệ cột theo % (tổng 100%) để không tạo scroll ngang */
.excel-table col.excel-col-deadline{width:9%}
.excel-table col.excel-col-task{width:24%}
.excel-table col.excel-col-exec{width:10%}
.excel-table col.excel-col-coord{width:12%}
.excel-table col.excel-col-result{width:14%}
.excel-table col.excel-col-mixed{width:22%}
.excel-table col.excel-col-done{width:9%}

.excel-col-deadline,
.excel-col-result,
.excel-col-level,
.excel-col-done,
.excel-col-exec,
.excel-col-coord{text-align:center}
.excel-table td.excel-col-coord{font-size:13px;color:#6d28d9;line-height:1.5}
.cell-level{margin-top:6px;font-size:12px;color:var(--gray)}

.excel-table td{padding:12px 10px}
.excel-table td.excel-col-deadline{font-variant-numeric:tabular-nums;font-weight:500;color:var(--ink)}
.excel-table td.excel-col-exec b{font-weight:600;color:var(--ink)}

.table-responsive{
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:hidden; /* ưu tiên wrap nội dung thay vì scroll ngang */
}

@media (max-width: 1100px){
  .excel-table th,.excel-table td{padding:7px}
}
.excel-wrap{white-space:normal;word-break:break-word;overflow-wrap:anywhere}
.excel-muted{color:var(--gray-light)}

.badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:3px 10px;border-radius:999px;
  font-size:12px;font-weight:600;line-height:1.5;
  color:#334155;background:#f1f5f9;border:1px solid #e2e8f0;
}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.excel-table .badge{
  max-width:100%;
  padding:2px 8px;
  font-size:11.5px;
  white-space:nowrap;
}
.badge.yellow{background:#fffbeb;border-color:#fde68a;color:#b45309}
.badge.blue{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}
.badge.green{background:#f0fdf4;border-color:#bbf7d0;color:#15803d}
.badge.red{background:#fef2f2;border-color:#fecaca;color:#b91c1c}

/* Tiến độ */
.progress{flex:1;height:6px;border-radius:999px;background:#e8edf3;overflow:hidden;min-width:60px}
.progress-lg{height:10px}
.progress-fill{height:100%;border-radius:999px;transition:width .3s}
.progress-normal .progress-fill{background:#3b82f6}
.progress-done .progress-fill{background:#16a34a}
.progress-warn .progress-fill{background:#f97316}
.progress-danger .progress-fill{background:#dc2626}
.progress-text{font-size:11.5px;font-weight:600;color:#475569;margin-top:3px;font-variant-numeric:tabular-nums}
.cell-progress{margin-top:8px;text-align:left}
.detail-progress{display:flex;align-items:center;gap:10px;margin-top:4px}
.range{width:100%;accent-color:var(--primary);height:28px}

/* Hạn chót */
.due-badge{display:inline-block;padding:2px 8px;border-radius:6px;font-size:11.5px;font-weight:600;white-space:nowrap}
.due-overdue,.due-today{background:#fee2e2;color:#b91c1c;border:1px solid #fecaca}
.due-soon{background:#ffedd5;color:#c2410c;border:1px solid #fed7aa}
.excel-table tr.row-overdue td,.excel-table tr.row-today td{background:#fffafa}
.excel-table tr.row-soon td{background:#fffcf7}
.excel-table tr.row-overdue td:first-child,.excel-table tr.row-today td:first-child{box-shadow:inset 3px 0 0 #dc2626}
.excel-table tr.row-soon td:first-child{box-shadow:inset 3px 0 0 #f97316}

/* Thống kê */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:8px 0 18px}
.stat-card{position:relative;padding:14px 16px 14px 18px;border-radius:var(--radius);background:#fff;border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow:hidden}
.stat-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#2563eb}
.stat-card.stat-yellow::before{background:var(--yellow)}
.stat-card.stat-green::before{background:var(--green)}
.stat-card.stat-red::before{background:#dc2626}
.stat-card.stat-orange::before{background:#f97316}
.stat-card.stat-purple::before{background:#7c3aed}
.stat-label{font-size:12px;color:var(--gray);font-weight:500;text-transform:uppercase;letter-spacing:.04em}
.stat-value{font-size:26px;font-weight:700;line-height:1.25;color:var(--ink);font-variant-numeric:tabular-nums;margin-top:4px}
.stat-sub{font-size:12px;color:var(--gray)}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;margin-bottom:10px;color:var(--gray)}
.dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.dot-done,.seg-done{background:#16a34a}
.dot-ontrack,.seg-ontrack{background:#f59e0b}
.dot-overdue,.seg-overdue{background:#dc2626}
.stats-table td{vertical-align:middle;font-variant-numeric:tabular-nums}
.stats-table td a{color:var(--primary);font-weight:600;text-decoration:none}
.stats-table td a:hover{text-decoration:underline}
.stats-table .num{text-align:center;white-space:nowrap}
.stats-table th.num{text-align:center}
.stats-table .bar-col{min-width:170px}
.stack{display:flex;height:10px;border-radius:999px;overflow:hidden;background:#e8edf3}
.stack .seg{display:block;height:100%}
@media (max-width: 760px){
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat-value{font-size:22px}
  .stats-table thead{display:none}
  .stats-table tr{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;padding:12px 0;border-bottom:1px solid var(--border)}
  .stats-table td{border:0;padding:2px 0}
  .stats-table td.num{text-align:left}
  .stats-table td::before{content:attr(data-label) ": ";color:var(--gray);font-size:12px}
  .stats-table td[data-label="Đơn vị"]{grid-column:1/-1;font-size:15px}
  .stats-table td[data-label="Đơn vị"]::before,.stats-table td.bar-col::before{content:none}
  .stats-table td.bar-col{grid-column:1/-1}
}

/* Đơn vị */
.unit-table td{vertical-align:middle}
.unit-table th.unit-actions-col{text-align:right}
.unit-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.unit-form-card{max-width:640px}
@media (max-width: 640px){
  .unit-table thead{display:none}
  .unit-table tr{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;padding:10px 0;border-bottom:1px solid var(--border)}
  .unit-table td{border:0;padding:2px 0}
  .unit-table td[data-label="Tên"]{grid-column:1/-1;font-size:15px}
  .unit-table td[data-label="ID"]{display:none}
  .unit-table tr{
    grid-template-columns:auto auto auto 1fr;grid-template-areas:"name name name actions";
    align-items:center;gap:2px 12px;padding:8px 0;
  }
  .unit-table td[data-label="Tên"]{grid-area:name;font-size:15px;min-width:0}
  .unit-table td[data-label="Chủ trì"],.unit-table td[data-label="Phối hợp"],.unit-table td[data-label="Tài khoản"]{font-size:12.5px;grid-row:2}
  .unit-table td[data-label="Chủ trì"]::before{content:"Chủ trì: ";color:var(--gray)}
  .unit-table td[data-label="Phối hợp"]::before{content:"Phối hợp: ";color:var(--gray)}
  .unit-table td[data-label="Tài khoản"]::before{content:"TK: ";color:var(--gray)}
  .unit-actions{grid-area:actions;grid-row:1 / span 2;justify-content:flex-end;flex-wrap:nowrap}
}

/* Đơn vị phối hợp */
.coord-box{border:1px solid var(--border);border-radius:var(--radius);padding:12px;background:var(--surface2)}
.coord-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.coord-search{flex:1;min-width:0}
.coord-count{font-size:12.5px;font-weight:600;color:#6d28d9;white-space:nowrap}
.coord-picker{display:flex;flex-wrap:wrap;gap:8px;max-height:220px;overflow:auto;padding:2px}
.coord-chip{
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;user-select:none;
  padding:6px 12px;border-radius:999px;border:1px solid var(--border-strong);background:#fff;
  font-size:13px;font-weight:500;transition:background .15s,border-color .15s;
}
.coord-chip:hover{border-color:#94a3b8}
.coord-chip input{margin:0;accent-color:#7c3aed}
.coord-chip:has(input:checked){background:#f5f3ff;border-color:#a78bfa;color:#5b21b6}
.coord-chip.is-lead{opacity:.45;cursor:not-allowed}
.coord-chip.is-lead span::after{content:" (chủ trì)";font-weight:400}
.coord-tag{display:inline-block;padding:1px 8px;border-radius:6px;background:#f5f3ff;border:1px solid #ede9fe;color:#5b21b6;font-size:12px;font-weight:500;margin:2px 2px 0 0}
.coord-tag-mine{background:#7c3aed;border-color:#7c3aed;color:#fff}
.coord-line{margin-top:4px;font-size:12px;color:#6d28d9}
.info-note{border:1px solid #ede9fe;border-left:4px solid #7c3aed;padding:11px 14px;background:#f5f3ff;border-radius:var(--radius);color:#4c1d95}

/* Thanh đầu danh sách + bộ lọc */
.list-head{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.list-head h2{font-size:20px}
.list-actions{display:flex;gap:8px;flex-wrap:wrap}
.filter-bar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface2)}
.filter-fields{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;flex:1;min-width:0}
.filter-unit{min-width:min(100%,200px);flex:1 1 180px;max-width:320px}
.filter-reset{display:flex;gap:8px;align-items:flex-end;flex:0 0 auto}
.filter-pagesize{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin-left:auto}
.filter-pagesize label{font-size:12.5px;font-weight:500;white-space:nowrap;margin:0}
.filter-pagesize select{width:auto;min-width:60px;max-width:80px;min-height:34px;padding:5px 8px;font-size:13px}
.excel-table a.task-title{color:var(--ink);font-weight:500;text-decoration:none;word-break:normal;overflow-wrap:anywhere}
.excel-table a.task-title:hover{color:var(--primary);text-decoration:underline}
.excel-table tr.row-link{cursor:pointer}
.excel-table tr.row-link:hover td{background:#f6f9fc}
.excel-table tr.row-link:hover a.task-title{color:var(--primary)}

.detail-content{white-space:pre-wrap;font-size:15.5px;font-weight:500;line-height:1.55;color:var(--ink)}

/* Chi tiết nhiệm vụ */
.detail-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.detail-title{margin:4px 0 0;font-size:19px;font-weight:650;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.detail-badges{display:flex;gap:6px;align-items:center;flex-wrap:wrap;flex:none}
.info-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 24px;
  margin:18px 0 0;padding:16px 18px;
  border:1px solid var(--border);border-radius:var(--radius);background:var(--surface2);
}
.info-grid dt{font-size:12px;color:var(--gray);margin-bottom:3px}
.info-grid dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.info-grid dd b{font-weight:600}
.info-grid .info-wide{grid-column:span 2}
.info-grid .detail-progress{margin:2px 0 0}
.detail-section{margin-top:22px}
.section-title{margin:0 0 10px;font-size:15px;font-weight:650;color:var(--ink)}
.section-divider{margin:24px 0 20px;border:0;border-top:1px solid var(--border)}
@media (max-width: 900px){
  .info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 520px){
  .detail-head{flex-direction:column-reverse;gap:8px}
  .info-grid{grid-template-columns:1fr 1fr;padding:12px 14px}
  .info-grid .info-wide{grid-column:1 / -1}
}

/* Icon + menu */
.ico{width:20px;height:20px;flex:0 0 auto}
.topbar-left{display:flex;align-items:center;gap:10px;min-width:0}
.topbar-right{display:flex;align-items:center;gap:8px}
.topbar-brand,.tabbar{display:none}

/* ===== Điện thoại / máy tính bảng ===== */
@media (max-width: 920px){
  .sidebar{display:none}
  .app-shell{display:block}
  .topbar{
    min-height:56px;
    padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));
    background:#fff;
  }
  .topbar-brand{display:grid;width:34px;height:34px;border-radius:9px;box-shadow:none}
  .topbar-brand .ico{width:20px;height:20px}
  .page-kicker{font-size:16px}
  .user-chip{padding:3px;gap:0}
  .user-chip .user-meta,.user-caret{display:none}
  .user-chip .avatar{width:36px;height:36px}
  .user-dropdown{width:min(280px,calc(100vw - 24px))}

  .tabbar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;
    background:#fff;border-top:1px solid #e2e8f0;
    padding-bottom:env(safe-area-inset-bottom);
    box-shadow:0 -6px 20px rgba(15,23,42,.06);
  }
  .tab{
    flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;
    padding:8px 2px 7px;font-size:11px;font-weight:500;color:var(--gray);text-decoration:none;
    -webkit-tap-highlight-color:transparent;
  }
  .tab span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tab .ico{width:23px;height:23px}
  .tab.active{color:var(--primary);font-weight:600}
  .tab.active .ico{stroke-width:2.4}

  .main-inner{padding:12px 12px calc(78px + env(safe-area-inset-bottom))}
  .card{padding:14px;border-radius:var(--radius-lg)}
  .alert{margin-bottom:12px}

  /* iOS tự phóng to khi ô nhập có chữ < 16px */
  .input,.textarea,select,.filter-pagesize select{font-size:16px}
  .btn{min-height:40px}
  .btn.small{min-height:36px}

  .auth-shell{padding:16px 12px;place-items:start center}
  .auth-panel{grid-template-columns:1fr}
  .auth-brand{grid-row:auto;padding:20px 22px;gap:0}
  .auth-footer{grid-column:1}
  .auth-brand-title{font-size:20px}
  .auth-points{display:none}
  .auth-panel-inner{padding:24px 20px}
}

@media (max-width: 760px){
  .list-head h2{font-size:19px}
  .list-actions{width:100%}
  .list-actions .btn{flex:1 1 0;padding-left:6px;padding-right:6px;white-space:nowrap}

  .filter-bar{gap:8px;padding:10px}
  .filter-fields{display:grid;grid-template-columns:1fr auto;gap:8px;width:100%;flex:1 1 100%}
  .filter-unit{max-width:none;min-width:0}
  .filter-fields label{font-size:12px}
  .filter-reset .btn{min-height:44px}
  .filter-pagesize{display:none}

  .pager{margin-top:10px;flex-wrap:nowrap}
  .pager-actions{flex-wrap:nowrap;gap:6px}
  .pager-meta{white-space:nowrap}
  .pager-page{display:none}
  .pager-meta{font-size:12.5px}
  .pager-btn{padding:8px 12px}

  /* Bảng nhiệm vụ -> thẻ */
  .table-responsive{overflow:visible}
  .excel-table,.excel-table tbody{display:block;border:0;background:none;border-radius:0;font-size:14px}
  .excel-table colgroup,.excel-table thead{display:none}
  .excel-table tr{
    position:relative;display:flex;flex-direction:column;
    gap:8px;margin-bottom:10px;padding:14px;
    background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);
  }
  .excel-table tr.row-overdue,.excel-table tr.row-today{background:#fffafa;border-left:3px solid #dc2626}
  .excel-table tr.row-soon{background:#fffcf7;border-left:3px solid #f97316}
  .excel-table td{
    display:block;border:0;padding:0 !important;text-align:left;
    background:none !important;box-shadow:none !important;
  }
  .excel-table td.is-empty{display:none}
  .excel-table td[colspan]{text-align:center}
  .excel-table td.excel-col-deadline{order:1;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-weight:600}
  .excel-table td.excel-col-deadline::before{content:"Hạn";font-size:12px;font-weight:500;color:var(--gray)}
  .excel-table td.excel-col-deadline div{margin-top:0 !important}
  .excel-table td.excel-col-task{order:2}
  .excel-table a.task-title{font-size:15px;font-weight:600;line-height:1.4}
  .excel-table a.task-title::after{content:"";position:absolute;inset:0;border-radius:var(--radius-lg)}
  .excel-table .att-chip,.excel-table .task-dossier{position:relative;z-index:1}
  .excel-table td.excel-col-result{order:3;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
  .excel-table td.excel-col-result .cell-level{flex-basis:100%;margin:0}
  .excel-table td.excel-col-result .badge{white-space:nowrap;flex:0 0 auto}
  .cell-progress{margin:0;flex:1;display:flex;align-items:center;gap:8px}
  .cell-progress .progress-text{margin:0;min-width:34px;text-align:right}
  .excel-table td.excel-col-exec{order:4}
  .excel-table td.excel-col-coord{order:5}
  .excel-table td.excel-col-mixed{order:6}
  .excel-table td.excel-col-done{order:7}
  .excel-table td.excel-col-coord::before{content:"Phối hợp: ";color:var(--gray)}
  .excel-table td.excel-col-mixed::before{
    content:attr(data-label);display:block;margin-bottom:2px;
    font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8;
  }
  .excel-table td.excel-col-exec{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 6px}
  .excel-table td.excel-col-exec::before{content:"Chủ trì:";font-size:13px;color:var(--gray)}
  .excel-table td.excel-col-exec > div:has(.coord-tag-mine){order:2;margin:0 !important}
  .excel-table td.excel-col-exec .coord-line{flex-basis:100%;margin-top:0;font-size:13px}
  .excel-table td.excel-col-level,.excel-table td.excel-col-done{font-size:12.5px;color:#475569}
  .excel-table td.excel-col-level::before{content:"Cấp độ: ";color:#94a3b8}
  .excel-table td.excel-col-done::before{content:"Xong: ";color:#94a3b8}
  /* Link tài liệu nằm trên lớp "chạm cả thẻ" */
  .excel-table td.excel-col-mixed a{position:relative;z-index:1}

  .stat-card{padding:12px}
  .detail-progress b{min-width:40px;text-align:right}
  .row>*{flex:1 1 140px}
  .page-title h1{font-size:22px}
  .auth-submit{width:100%;min-height:46px;font-size:16px}
  .kv{grid-template-columns:120px 1fr}
}

/* File đính kèm */
.att-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.att-item{display:flex;align-items:center;gap:6px}
.att-link{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;color:var(--ink);text-decoration:none;transition:border-color .15s,background .15s}
.att-link:hover{border-color:#94a3b8;background:var(--surface2)}
.att-ext{flex:none;min-width:44px;padding:3px 6px;border-radius:6px;background:#eef2f7;color:#334155;font-size:11px;font-weight:600;text-align:center;text-transform:uppercase}
.att-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.att-size{flex:none;font-size:12px}
.att-del{width:36px;height:36px;border-radius:8px;border:1px solid rgba(239,68,68,.35);background:#fff;color:var(--red);font-size:20px;line-height:1;cursor:pointer}
.att-del:hover{background:#fef2f2}
.att-upload{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.att-upload .input{flex:1 1 240px;width:auto}
.att-upload .file-pick-list{flex-basis:100%}
.file-pick-list{list-style:none;margin:6px 0 0;padding:0;font-size:13px;color:var(--gray)}
.file-pick-list li::before{content:"📎 "}
.file-pick-list li.too-big{color:var(--red);font-weight:700}
.file-pick-list li.too-big::after{content:" — quá 20 MB"}
.att-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.att-chip{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:2px 8px;border-radius:6px;background:#f1f5f9;border:1px solid var(--border);color:#334155;font-size:12px;font-weight:500;text-decoration:none}
.att-chip:hover{background:#e8edf3;color:var(--ink)}

/* Trang xem file */
.viewer-body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:#e5e7eb}
.viewer-bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top));background:#fff;border-bottom:1px solid var(--border);box-shadow:0 4px 14px rgba(15,23,42,.06)}
.viewer-name{flex:1;min-width:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.viewer-main{flex:1;display:flex;flex-direction:column;min-height:0}
.viewer-status{margin:40px auto;padding:24px;max-width:480px;text-align:center;background:#fff;border-radius:14px;color:var(--gray)}
.viewer-frame{flex:1;width:100%;min-height:calc(100vh - 60px);border:0;background:#fff}
.pdf-pages{display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px}
.pdf-page{width:min(100%,1000px);background:#fff;box-shadow:0 2px 10px rgba(15,23,42,.15)}
.pdf-page canvas{display:block;width:100%;height:auto}
.docx-box{overflow-x:auto}
.docx-box .docx-wrapper{background:#e5e7eb!important;padding:10px!important}
.sheet-tabs{display:flex;gap:4px;overflow-x:auto;padding:8px 10px 0;background:#f8fafc}
.sheet-tabs button{flex:none;padding:7px 12px;border:1px solid var(--border);border-bottom:0;border-radius:9px 9px 0 0;background:#eef2f7;font:inherit;font-size:13px;cursor:pointer}
.sheet-tabs button.active{background:#fff;font-weight:600;color:var(--primary)}
.sheet-body{flex:1;overflow:auto;background:#fff;-webkit-overflow-scrolling:touch}
.sheet-body table{border-collapse:collapse;font-size:13px}
.sheet-body td{border:1px solid #d1d5db;padding:4px 8px;white-space:nowrap;vertical-align:top}
.viewer-img{display:block;max-width:100%;height:auto;margin:10px auto;background:#fff}
.viewer-text{margin:10px;padding:14px;background:#fff;border-radius:10px;white-space:pre-wrap;word-break:break-word;font-size:14px}
@media (max-width: 760px){
  .viewer-bar .btn.secondary{padding:8px}
  .pdf-pages{padding:6px;gap:6px}
}

/* Văn bản đến: danh mục */
.crumbs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--gray-light);margin-bottom:8px}
.crumbs a{color:var(--gray);font-weight:500;text-decoration:none}
.crumbs a:hover{color:var(--primary);text-decoration:underline}
.dossier-search{display:flex;gap:8px;align-items:center;margin-top:16px}
.dossier-search .input{flex:1;min-width:0}
.dossier-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:16px}
.dossier-card{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;color:var(--ink);text-decoration:none;box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}
.dossier-card:hover{border-color:#a7b4c6;box-shadow:var(--shadow)}
.dossier-head{display:flex;gap:12px;align-items:flex-start}
.dossier-icon{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--primary-soft);color:var(--primary)}
.dossier-icon .ico{width:20px;height:20px}
.dossier-title{min-width:0}
.dossier-name{font-weight:600;font-size:15px;line-height:1.4;overflow-wrap:anywhere;color:var(--ink)}
.dossier-code{font-size:12.5px;margin-bottom:2px}
.dossier-code b{color:#334155;font-weight:600}
.dossier-desc{font-size:13px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dossier-stats{display:flex;flex-wrap:wrap;gap:4px 16px;padding-top:12px;border-top:1px solid #f1f5f9;font-size:13px;color:var(--gray)}
.dossier-stats b{color:var(--ink);font-weight:600}
.dossier-alerts{display:flex;flex-wrap:wrap;gap:6px}
.dossier-card .detail-progress{margin-top:auto}
.dossier-desc-full{margin-top:10px;color:#475569;white-space:pre-wrap}
.seg-tabs{display:flex;gap:4px;margin-top:16px;padding:4px;background:#f1f5f9;border:1px solid var(--border);border-radius:10px;width:fit-content;max-width:100%}
.seg-tabs a{padding:6px 14px;border-radius:7px;color:var(--gray);font-weight:500;font-size:13.5px;text-decoration:none;white-space:nowrap}
.seg-tabs a:hover{color:var(--ink)}
.seg-tabs a b{display:inline-block;min-width:20px;margin-left:6px;padding:0 6px;border-radius:999px;background:#e2e8f0;color:#475569;font-size:12px;font-weight:600;text-align:center}
.seg-tabs a.active{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(15,23,42,.08)}
.seg-tabs a.active b{background:var(--primary-soft);color:var(--primary)}
.task-dossier{display:block;width:fit-content;max-width:100%;margin-bottom:4px;font-size:12px;font-weight:500;color:var(--gray);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.task-dossier:hover{color:var(--primary);text-decoration:underline}
@media (max-width: 760px){
  .dossier-grid{grid-template-columns:1fr}
  .seg-tabs{width:100%}
  .seg-tabs a{flex:1;text-align:center}
}

/* Văn bản đến: chi tiết + form */
.doc-kicker{font-size:12.5px;color:var(--gray);font-weight:500;text-transform:uppercase;letter-spacing:.04em}
.doc-kicker b{color:var(--ink);font-weight:600}
.doc-meta{display:flex;flex-wrap:wrap;gap:8px 32px;margin:14px 0 0;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface2)}
.doc-meta div{min-width:0}
.doc-meta dt{font-size:12px;color:var(--gray)}
.doc-meta dd{margin:2px 0 0;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;margin-bottom:12px}
.form-grid-3{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);gap:12px 16px;margin-bottom:14px}
.doc-fields{max-width:820px}
.doc-fields > div{margin-bottom:12px}
.doc-section-title{margin:24px 0 2px;padding-top:20px;border-top:1px solid var(--border);font-size:16px}
.doc-section-hint{margin:0 0 12px;font-size:13px}
@media (max-width: 640px){
  .form-grid-2,.form-grid-3{grid-template-columns:1fr}
  .doc-meta{gap:8px 18px}
}

/* Phân nhiệm vụ: mỗi hàng một nhiệm vụ */
.trows{display:flex;flex-direction:column;gap:8px}
.trows [data-rows]{display:flex;flex-direction:column;gap:8px}
.trow{
  display:grid;align-items:start;gap:8px;
  grid-template-columns:28px minmax(0,2.6fr) minmax(0,1.1fr) minmax(0,1.4fr) 150px 130px 110px 32px;
  padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;
}
.trow:focus-within{border-color:#a7b4c6;box-shadow:var(--shadow-sm)}
.trow-head{padding:8px 10px;border:1px solid var(--border);background:var(--surface2);font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#475569}
.trow-no{padding-top:9px;text-align:center;font-weight:600;color:var(--gray-light);font-variant-numeric:tabular-nums}
.trow-label{display:none}
.trow .textarea{min-height:42px;resize:vertical;font:inherit;font-size:14px;line-height:1.4}
.trow .input,.trow .textarea{width:100%;margin:0}
.trow-del{width:32px;height:38px;border:1px solid transparent;border-radius:8px;background:none;color:var(--gray);font-size:20px;line-height:1;cursor:pointer}
.trow-del:hover:not(:disabled){background:#fef2f2;border-color:rgba(239,68,68,.25);color:#dc2626}
.trow-del:disabled{opacity:.3;cursor:default}
.trow-add{margin-top:10px}
.trow-file{position:relative;display:flex;align-items:center;justify-content:center;height:38px;padding:0 8px;border:1px dashed #b8c3d1;border-radius:8px;font-size:13px;color:var(--gray);cursor:pointer;white-space:nowrap;overflow:hidden}
.trow-file:hover{border-color:var(--leaf2);color:var(--primary);background:var(--primary-soft)}
.trow-file.has-value{border-style:solid;border-color:#a7f3d0;background:var(--primary-soft);color:var(--primary);font-weight:600}
.trow-file input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}

.coord-dd{position:relative}
.coord-dd-sum{display:flex;align-items:center;height:38px;cursor:pointer;list-style:none;color:var(--gray);overflow:hidden}
.coord-dd-sum::-webkit-details-marker{display:none}
.coord-dd-sum::after{content:"▾";margin-left:auto;padding-left:6px;font-size:11px}
.coord-dd-sum.has-value{color:#5b21b6;font-weight:600}
.coord-dd-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.coord-dd-panel{position:absolute;z-index:30;top:calc(100% + 4px);left:0;width:max(100%,260px);padding:8px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-pop)}
.coord-dd-search{margin:0 0 6px !important}
.coord-dd-list{max-height:240px;overflow:auto}
.coord-dd-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;font-size:14px;cursor:pointer}
.coord-dd-item:hover{background:#f8fafc}
.coord-dd-item input{margin:0;accent-color:#7c3aed}
.coord-dd-item:has(input:checked){background:#f5f3ff;color:#5b21b6;font-weight:600}
.coord-dd-item.is-lead{opacity:.45;cursor:not-allowed}

@media (max-width: 1100px){
  .trow-head{display:none}
  .trow{grid-template-columns:1fr 1fr;padding:12px 12px 12px 40px;position:relative}
  .trow-no{position:absolute;left:10px;top:12px;padding:0}
  .trow-main{grid-column:1 / -1}
  .trow-label{display:block;font-size:12.5px;color:var(--gray);margin-bottom:3px}
  .trow-del{position:absolute;right:6px;top:4px;height:30px}
  .trow-main .trow-label{padding-right:30px}
}
@media (max-width: 520px){
  .trow{grid-template-columns:1fr}
  .coord-dd-panel{width:100%}
}
.list-actions form{display:contents}
.btn.btn-danger-soft{color:#b91c1c}
.btn.secondary.btn-danger-soft:hover{color:#991b1b}
.btn.btn-danger-soft:hover{background:#fef2f2;border-color:rgba(239,68,68,.35)}
.trow.has-error{border-color:#fca5a5;background:#fff7f7}
.trow-error{grid-column:1 / -1;color:#b91c1c;font-size:13px;font-weight:600}
.input.has-error,.textarea.has-error{border-color:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.12)}
.trow-summary{margin-top:12px}
.trow-summary[hidden]{display:none}

/* ===== Lịch công tác tuần ===== */
.wk-range{margin-top:2px;font-size:13.5px}
.wk-nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 4px}
.wk-nav .is-current{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}
.wk-jump{display:flex;align-items:center;gap:8px;margin-left:auto}
.wk-jump label{font-size:13px;white-space:nowrap}
.wk-jump .input{width:auto;min-height:34px}
.wk-days{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.wk-day{display:grid;grid-template-columns:150px minmax(0,1fr);border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;overflow:hidden;scroll-margin-top:72px}
.wk-day.is-today{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-ring)}
.wk-day-head{display:flex;flex-direction:column;gap:2px;padding:14px 16px;background:var(--surface2);border-right:1px solid var(--border)}
.wk-day.is-today .wk-day-head{background:var(--primary-soft)}
.wk-weekday{font-weight:600;font-size:15px;color:var(--ink)}
.wk-date{font-size:13px;color:var(--gray)}
.wk-today{align-self:flex-start;margin-top:6px;padding:2px 8px;border-radius:999px;background:var(--primary);color:#fff;font-size:11.5px;font-weight:600}
.wk-sessions{display:grid;grid-template-columns:1fr 1fr}
.wk-session{min-width:0;padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.wk-session + .wk-session{border-left:1px solid var(--border)}
.wk-session-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.wk-session-name{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--gray)}
.wk-session-name::before{content:"";width:8px;height:8px;border-radius:50%}
.wk-am::before{background:#f59e0b}
.wk-pm::before{background:#6366f1}
.wk-add{font-size:12.5px;font-weight:500;color:var(--primary);text-decoration:none;padding:2px 6px;border-radius:6px}
.wk-add:hover{background:var(--primary-soft)}
.wk-empty{font-size:13px;color:var(--gray-light)}
.wk-item{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:#fff}
.wk-item:hover{border-color:var(--border-strong)}
.wk-item-top{display:flex;align-items:flex-start;gap:8px}
.wk-time{flex:none;padding:1px 7px;border-radius:6px;background:#ecfdf5;color:var(--primary);font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;line-height:20px}
.wk-content{flex:1;min-width:0;font-weight:600;color:var(--ink);white-space:pre-line;overflow-wrap:anywhere;line-height:1.45}
.wk-edit{flex:none;font-size:12.5px;color:var(--gray);text-decoration:none;padding:1px 6px;border-radius:6px}
.wk-edit:hover{color:var(--primary);background:var(--primary-soft)}
.wk-meta{margin:6px 0 0;display:flex;flex-direction:column;gap:2px;font-size:13px}
.wk-meta div{display:flex;gap:6px}
.wk-meta dt{flex:none;width:76px;color:var(--gray-light)}
.wk-meta dd{margin:0;min-width:0;color:var(--text);white-space:pre-line;overflow-wrap:anywhere}
.wk-docs{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:4px}
.wk-docs-label{font-size:12px;font-weight:600;color:var(--gray)}
.wk-doc{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;background:var(--surface2);border:1px solid var(--border);color:var(--ink);text-decoration:none;font-size:13px}
.wk-doc:hover{border-color:#94a3b8;background:#fff}
.wk-doc .att-ext{min-width:38px;font-size:10.5px;padding:2px 4px}
.wk-doc-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.wk-day.is-quiet .wk-sessions{opacity:.75}
.wk-doc-edit{margin-bottom:4px}
.file-remove{flex:none;display:flex;align-items:center;gap:4px;padding:0 10px;min-height:36px;border:1px solid rgba(239,68,68,.35);border-radius:8px;color:var(--red);font-size:13px;cursor:pointer}
.file-remove:has(input:checked){background:#fef2f2}
.seg-choice{display:flex;gap:4px;padding:3px;background:#f1f5f9;border:1px solid var(--border);border-radius:9px}
.seg-choice label{flex:1;margin:0;cursor:pointer}
.seg-choice input{position:absolute;opacity:0;pointer-events:none}
.seg-choice span{display:block;padding:6px 10px;border-radius:7px;text-align:center;font-weight:500;color:var(--gray)}
.seg-choice input:checked + span{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(15,23,42,.1)}
.seg-choice input:focus-visible + span{outline:2px solid var(--primary);outline-offset:1px}

@media (max-width: 900px){
  .wk-day{grid-template-columns:1fr}
  .wk-day-head{flex-direction:row;align-items:center;gap:8px;padding:10px 14px;border-right:0;border-bottom:1px solid var(--border)}
  .wk-today{margin:0 0 0 auto}
  .wk-sessions{grid-template-columns:1fr}
  .wk-session + .wk-session{border-left:0;border-top:1px solid var(--border)}
  .wk-jump{margin-left:0;width:100%}
  .wk-jump .input{flex:1}
}

@media print{
  .sidebar,.topbar,.tabbar,.app-footer,.wk-nav,.list-actions,.wk-add,.wk-edit,.alert{display:none !important}
  body,.app-body{background:#fff}
  .app-shell{display:block}
  .main-inner{padding:0}
  .card{border:0;box-shadow:none;padding:0}
  .wk-day{break-inside:avoid;box-shadow:none;border-color:#94a3b8}
  .wk-day.is-today{box-shadow:none}
  .wk-doc{border:0;background:none;padding:0}
}

/* ===== Sản phẩm của nhiệm vụ ===== */
.trow-sub-label{display:block;margin:8px 0 3px;font-size:12px;font-weight:600;color:var(--gray)}
.trow-sub-label span{font-weight:400;color:var(--gray-light)}
.trow .trow-products{min-height:58px;font-size:13.5px;background:var(--surface2)}
.trow .trow-products:focus{background:#fff}

.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.section-head .section-title{margin:0}
.prod-count,.prod-sum{font-size:12.5px;font-weight:600;color:#b45309}
.prod-count{padding:2px 10px;border-radius:999px;background:#fffbeb;border:1px solid #fde68a}
.prod-count.is-done{color:#15803d;background:#f0fdf4;border-color:#bbf7d0}
.prod-sum.is-done{color:#15803d}
.prod-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.prod-card{border:1px solid var(--border);border-left:3px solid #f59e0b;border-radius:var(--radius);background:#fff;overflow:hidden}
.prod-card.is-done{border-left-color:#16a34a}
.prod-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface2);border-bottom:1px solid var(--border)}
.prod-no{flex:none;display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#e2e8f0;color:#334155;font-size:12px;font-weight:600}
.prod-card.is-done .prod-no{background:#dcfce7;color:#15803d}
.prod-name{flex:1;min-width:0;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.prod-body{padding:10px 14px 12px}
.prod-label{margin:8px 0 4px;font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--gray-light)}
.prod-label:first-child{margin-top:0}
.prod-text{white-space:pre-wrap;overflow-wrap:anywhere}
.prod-time{margin-top:8px;font-size:12.5px;color:var(--gray-light)}

.prod-report{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}
.prod-form{margin:0;padding:12px 14px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface2);min-width:0}
.prod-form legend{display:flex;align-items:center;gap:8px;padding:0 6px;margin-left:-6px;font-weight:600;color:var(--ink)}
.prod-form .textarea{background:#fff}
.prod-form .att-list{margin-bottom:8px}
.prod-upload .input{background:#fff}

.prod-edit-list{margin:0 0 8px;padding-left:22px;display:flex;flex-direction:column;gap:6px}
.prod-edit-item{padding-left:4px}
.prod-edit-item::marker{color:var(--gray);font-weight:600}
.prod-edit-item{display:list-item}
.prod-edit-item > *{vertical-align:middle}
.prod-edit-item .input{width:calc(100% - 170px);min-width:200px;display:inline-block}
.prod-edit-item .badge{margin-left:6px}
.prod-edit-item .file-remove{display:inline-flex;margin-left:6px}

.prod-mini{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.prod-mini li{position:relative;padding-left:16px;font-size:13px}
.prod-mini li::before{content:"";position:absolute;left:2px;top:6px;width:8px;height:8px;border-radius:50%;border:2px solid #f59e0b;background:#fff}
.prod-mini li.is-done::before{border-color:#16a34a;background:#16a34a}
.prod-mini-name{font-weight:600;color:var(--ink)}
.prod-mini-text{color:var(--gray);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.prod-mini .att-chips{margin-top:3px}
.prod-legacy{margin-top:8px;padding-top:6px;border-top:1px dashed var(--border);font-size:13px}

@media (max-width: 640px){
  .prod-edit-item .input{width:100%;margin-bottom:4px}
  .prod-edit-item .badge{margin-left:0}
}

/* ===== Lịch công tác hôm nay (nổi đầu trang) ===== */
.today-sched{margin-bottom:16px;border:1px solid #a7f3d0;border-radius:var(--radius-lg);background:#fff;box-shadow:0 0 0 4px rgba(16,185,129,.08),var(--shadow-sm);overflow:hidden}
.today-head{display:flex;align-items:center;gap:16px;padding:16px 20px;background:linear-gradient(120deg,#065f46 0%,#047857 55%,#0f766e 100%);color:#fff}
.today-cal{flex:none;display:flex;flex-direction:column;align-items:center;width:74px;padding:6px 0 7px;border-radius:12px;background:#fff;color:var(--ink);box-shadow:0 4px 14px rgba(0,0,0,.18);line-height:1.1}
.today-cal-dow{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#047857}
.today-cal-day{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;margin:2px 0}
.today-cal-month{font-size:11px;color:var(--gray)}
.today-heading{flex:1;min-width:0}
.today-kicker{font-size:12.5px;font-weight:500;color:#a7f3d0;text-transform:uppercase;letter-spacing:.05em}
.today-title{margin:2px 0 0;font-size:21px;font-weight:700;color:#fff}
.today-sub{margin-top:2px;font-size:13.5px;color:#d1fae5}
.today-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.today-actions .btn.secondary{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.35);color:#fff}
.today-actions .btn.secondary:hover{background:rgba(255,255,255,.22)}
.today-actions .btn:not(.secondary){background:#fff;color:#047857;border-color:#fff}
.today-actions .btn:not(.secondary):hover{background:#ecfdf5}
.today-sessions{display:grid;grid-template-columns:1fr 1fr}
.today-session{min-width:0;padding:14px 18px 16px;display:flex;flex-direction:column;gap:10px}
.today-session + .today-session{border-left:1px solid var(--border)}
.today-session .wk-item{padding:12px 14px;border-color:#d1fae5;background:#fbfffd}
.today-session .wk-content{font-size:15px}
.today-session .wk-time{font-size:13.5px}
.today-sched.is-compact.is-empty{box-shadow:none;border-color:var(--border)}
.today-sched.is-compact.is-empty .today-head{padding:12px 18px}
.today-sched.is-compact.is-empty .today-cal{width:60px}
.today-sched.is-compact.is-empty .today-cal-day{font-size:24px}

@media (max-width: 900px){
  .today-head{flex-wrap:wrap;gap:12px;padding:14px}
  .today-cal{width:60px}
  .today-cal-day{font-size:24px}
  .today-title{font-size:18px}
  .today-actions{width:100%;justify-content:stretch}
  .today-actions .btn{flex:1}
  .today-sessions{grid-template-columns:1fr}
  .today-session{padding:12px 14px}
  .today-session + .today-session{border-left:0;border-top:1px solid var(--border)}
}
@media print{
  .today-sched{display:none}
}

/* ===== Văn bản đến: danh sách hàng ngang ===== */
.doc-rows{margin-top:16px;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:#fff}
.doc-row{
  display:grid;grid-template-columns:40px minmax(0,1fr) 74px 74px 84px 150px 150px;align-items:center;gap:0 12px;
  padding:14px 16px;border-top:1px solid var(--border);color:var(--ink);text-decoration:none;transition:background .15s
}
.doc-row:first-child{border-top:0}
a.doc-row:hover{background:#f8fafc}
a.doc-row:hover .dossier-name{color:var(--primary)}
.doc-row-head{padding:10px 16px;background:var(--surface2);font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#475569}
.doc-row-head span:nth-child(n+3):nth-child(-n+5){text-align:center}
.doc-row-no{text-align:center;font-weight:600;color:var(--gray-light);font-variant-numeric:tabular-nums}
.doc-row-main{display:flex;align-items:flex-start;gap:12px;min-width:0}
.doc-row-title{display:flex;flex-direction:column;min-width:0}
.doc-row-title .dossier-desc{margin-top:2px;-webkit-line-clamp:1}
.doc-row-num{text-align:center;font-size:15px;font-variant-numeric:tabular-nums}
.doc-row-num b{font-weight:600}
.doc-row-alerts{display:flex;flex-wrap:wrap;gap:4px}
.doc-row-progress{margin:0}
.doc-row .progress,.doc-row .progress-fill{display:block}
.doc-row-progress b{min-width:38px;text-align:right;font-size:13px;font-variant-numeric:tabular-nums}

@media (max-width: 1100px){
  .doc-row{grid-template-columns:32px minmax(0,1fr) 64px 64px 78px 130px 120px;gap:0 8px;padding:12px}
}
@media (max-width: 900px){
  .doc-row-head{display:none}
  .doc-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 8px;padding:14px;position:relative}
  .doc-row-no{display:none}
  .doc-row-main{grid-column:1 / -1}
  .doc-row-num{display:flex;flex-direction:column;gap:1px;padding:6px 0;border-radius:8px;background:var(--surface2);font-size:16px}
  .doc-row-num::after{content:attr(data-label);font-size:11.5px;font-weight:500;color:var(--gray)}
  .doc-row-alerts{grid-column:1 / -1}
  .doc-row-alerts:has(.excel-muted){display:none}
  .doc-row-progress{grid-column:1 / -1}
}

/* ===== Văn bản đến: bảng sổ theo dõi (như Excel) ===== */
.vb-wrap{margin-top:14px;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;background:#fff}
.vb-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13.5px;line-height:1.45}
.vb-c-stt{width:4%}.vb-c-task{width:21%}.vb-c-deadline{width:8%}.vb-c-doc{width:18%}
.vb-c-result{width:11%}.vb-c-proc{width:18%}.vb-c-done{width:10%}.vb-c-unit{width:10%}
.vb-table th{
  padding:10px 8px;background:#f1f5f9;border:1px solid var(--border-strong);border-top:0;
  font-size:12px;font-weight:600;color:#334155;text-align:center;vertical-align:middle;line-height:1.3
}
.vb-table th:first-child{border-left:0}.vb-table th:last-child{border-right:0}
.vb-table td{padding:9px 8px;border:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere;color:var(--text)}
.vb-table td:first-child{border-left:0}.vb-table td:last-child{border-right:0}
.vb-group + .vb-group tr.is-first td{border-top:2px solid var(--border-strong)}
.vb-row[data-href]{cursor:pointer}
.vb-row[data-href]:hover td:not(.vb-doc){background:#f8fafc}
.vb-stt{text-align:center;color:var(--gray);font-variant-numeric:tabular-nums}
.vb-task-link{color:var(--ink);text-decoration:none;white-space:pre-line}
.vb-row:hover .vb-task-link{color:var(--primary)}
.vb-deadline,.vb-done{text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
.vb-deadline .due-badge{margin-top:4px;white-space:normal}
.vb-deadline.is-overdue{background:#fef2f2}
.vb-deadline.is-today,.vb-deadline.is-soon{background:#fffbeb}
.vb-doc{cursor:pointer;box-shadow:inset 3px 0 0 var(--vb-accent)}
.vb-group:nth-of-type(odd){--vb-doc-bg:#ecfdf5;--vb-doc-hover:#d1fae5;--vb-accent:#34d399}
.vb-group:nth-of-type(even){--vb-doc-bg:#eff6ff;--vb-doc-hover:#dbeafe;--vb-accent:#60a5fa}
.vb-table .vb-doc{background:var(--vb-doc-bg)}
.vb-table .vb-doc:hover{background:var(--vb-doc-hover)}
.vb-doc-code{font-size:12px;color:var(--gray);margin-bottom:3px}
.vb-doc-code b{color:#334155;font-weight:600}
.vb-doc-name{display:block;font-weight:600;color:var(--ink);text-decoration:none}
.vb-doc:hover .vb-doc-name{color:var(--primary)}
.vb-doc-note{margin-top:4px;font-size:12.5px;color:var(--gray);white-space:pre-line}
.vb-doc-stats{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;margin-top:8px;font-size:12px;color:var(--gray)}
.vb-doc-add{display:inline-block;margin-top:8px;font-size:12.5px;font-weight:500;color:var(--primary);text-decoration:none}
.vb-doc-add:hover{text-decoration:underline}
.vb-result{text-align:center}
.vb-result .badge{white-space:nowrap;padding:2px 7px;font-size:11.5px}
.vb-progress{margin-top:4px;font-size:12px;color:var(--gray)}
.vb-text{white-space:pre-line}
.vb-proc .prod-mini{margin-top:4px}
.vb-unit b{font-weight:600;color:var(--ink)}
.vb-row-empty .vb-task{font-style:italic}

@media (max-width: 900px){
  .vb-wrap{border:0;border-radius:0;background:none}
  .vb-table,.vb-table tbody,.vb-table tr,.vb-table td{display:block;width:auto}
  .vb-table colgroup,.vb-table thead{display:none}
  .vb-group{margin-bottom:14px;border:1px solid var(--border-strong);border-radius:var(--radius-lg);overflow:hidden;background:#fff}
  .vb-group + .vb-group tr.is-first td{border-top:0}
  .vb-table tr{display:flex;flex-direction:column;border-top:1px solid var(--border)}
  .vb-table tr.is-first{border-top:0}
  .vb-table td{border:0;padding:4px 14px}
  .vb-doc{order:-1;padding:12px 14px !important;border-bottom:1px solid var(--border) !important}
  .vb-table .vb-stt{display:none}
  .vb-task{padding-top:12px !important;font-size:14.5px}
  .vb-deadline,.vb-done,.vb-result{text-align:left;white-space:normal}
  .vb-deadline.is-overdue,.vb-deadline.is-today,.vb-deadline.is-soon{background:none}
  .vb-table td[data-label]::before{content:attr(data-label) ": ";font-size:12.5px;color:var(--gray)}
  .vb-deadline .due-badge{display:inline-flex;margin:0 0 0 6px}
  .vb-deadline > div{display:inline}
  .vb-result .vb-progress{display:inline;margin-left:6px}
  .vb-unit{padding-bottom:12px !important}
  .vb-row-empty .vb-task{padding-bottom:12px !important}
  .vb-empty-rest{display:none !important}
}

/* ===== Văn bản đến: chế độ xem theo thông báo/ chỉ đạo ===== */
.vb-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:14px}
.vb-toolbar .seg-tabs{margin-top:0}
.doc-item{border-top:1px solid var(--border)}
.doc-rows > .doc-row-head + .doc-item{border-top:0}
.doc-item:nth-of-type(odd){--vb-doc-bg:#ecfdf5;--vb-doc-hover:#d1fae5;--vb-accent:#34d399}
.doc-item:nth-of-type(even){--vb-doc-bg:#eff6ff;--vb-doc-hover:#dbeafe;--vb-accent:#60a5fa}
summary.doc-row{list-style:none;cursor:pointer;border-top:0;background:var(--vb-doc-bg);box-shadow:inset 3px 0 0 var(--vb-accent)}
summary.doc-row::-webkit-details-marker{display:none}
summary.doc-row:hover{background:var(--vb-doc-hover)}
summary.doc-row:hover .dossier-name{color:var(--primary)}
summary.doc-row:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
.doc-row-no{display:flex;align-items:center;justify-content:center;gap:6px}
.doc-chev{width:7px;height:7px;border-right:2px solid var(--gray);border-bottom:2px solid var(--gray);transform:rotate(-45deg);transition:transform .15s}
.doc-item[open] .doc-chev{transform:rotate(45deg)}
.doc-tasks{padding:10px 16px 14px 56px;background:#fff;border-top:1px solid var(--border)}
.doc-task-table{width:100%;border-collapse:collapse;font-size:13.5px}
.doc-task-table th{padding:7px 8px;text-align:left;font-size:11.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:#64748b;border-bottom:1px solid var(--border)}
.doc-task-table td{padding:8px;border-bottom:1px solid #f1f5f9;vertical-align:top}
.doc-task-table tr[data-href]{cursor:pointer}
.doc-task-table tbody tr:hover td{background:#f8fafc}
.doc-task-table td:first-child a{color:var(--ink);text-decoration:none;white-space:pre-line}
.doc-task-table tbody tr:hover td:first-child a{color:var(--primary)}
.doc-task-table th:nth-child(2),.doc-task-table td:nth-child(2){width:180px}
.doc-task-table th:nth-child(3),.doc-task-table td:nth-child(3){width:170px}
.doc-task-table th:nth-child(4),.doc-task-table td:nth-child(4){width:200px}
.doc-task-table .badge{white-space:nowrap}
.doc-tasks-empty{padding:6px 0}
.doc-tasks-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}

@media (max-width: 900px){
  .vb-toolbar .seg-tabs{width:100%}
  .vb-toolbar .seg-tabs a{flex:1;text-align:center}
  .vb-toolbar .btn{width:100%}
  .doc-rows{border:0;background:none;overflow:visible}
  .doc-item{margin-bottom:12px;border:1px solid var(--border-strong);border-radius:var(--radius-lg);overflow:hidden;background:#fff}
  .doc-rows > .doc-row-head + .doc-item{border-top:1px solid var(--border-strong)}
  .doc-item .doc-row-no{display:flex;position:absolute;right:12px;top:14px}
  .doc-item .doc-row-main{padding-right:44px}
  .doc-tasks{padding:10px 12px 12px}
  .doc-task-table thead{display:none}
  .doc-task-table,.doc-task-table tbody,.doc-task-table tr,.doc-task-table td{display:block;width:auto !important}
  .doc-task-table tr{padding:8px 0;border-bottom:1px solid var(--border)}
  .doc-task-table td{padding:2px 0;border:0}
  .doc-task-table td:first-child{font-weight:600}
}

/* ===== Yêu cầu nộp báo cáo: tiến độ tự tính ===== */
.badge.gray{background:#f8fafc;border-color:#e2e8f0;color:#64748b}
.req{color:#dc2626}
.prod-kicker{font-weight:500;color:var(--gray)}
.prod-form{border-left:3px solid #f59e0b}
.prod-form.is-done{border-left-color:#16a34a}
.prod-form.is-done .prod-no{background:#dcfce7;color:#15803d}
.auto-progress{margin:4px 0 12px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:#fff}
.auto-progress-head{display:flex;justify-content:space-between;align-items:baseline;gap:6px 14px;flex-wrap:wrap;margin-bottom:8px;font-size:13.5px}
.auto-progress-head b[data-auto-pct]{font-size:15px}
.auto-progress .progress-fill{transition:width .25s}

/* ===== Lịch họp: bấm để xem chi tiết ===== */
.wk-item[data-href]{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.wk-item[data-href]:hover{border-color:#a7f3d0;box-shadow:var(--shadow-sm)}
a.wk-content{text-decoration:none}
.wk-item[data-href]:hover a.wk-content{color:var(--primary)}
.wk-pre{white-space:pre-line;overflow-wrap:anywhere}
.prod-form.report-general{border-left-color:var(--border-strong)}

/* ===== Chi tiết nhiệm vụ: thông báo/ chỉ đạo chứa nhiệm vụ ===== */
.task-doc{padding:14px 16px;border:1px solid #d1fae5;border-left:3px solid #34d399;border-radius:var(--radius);background:#f6fefa}
.task-doc-meta{font-size:12.5px;margin-bottom:2px}
.task-doc-name{display:block;font-size:15.5px;font-weight:650;color:var(--ink);text-decoration:none;line-height:1.45;overflow-wrap:anywhere}
.task-doc-name:hover{color:var(--primary)}
.task-doc-desc{margin-top:6px;white-space:pre-line;color:#334155;overflow-wrap:anywhere}
.task-doc-files{margin-top:12px}
.task-doc .att-item{background:#fff}
.att-add{margin-top:10px}
.att-add > summary{display:inline-block;cursor:pointer;list-style:none;font-size:13px;font-weight:600;color:var(--primary)}
.att-add > summary::-webkit-details-marker{display:none}
.att-add > summary:hover{text-decoration:underline}
.att-add[open] > summary{margin-bottom:8px}

/* ===== Ngày hoàn thành theo từng yêu cầu ===== */
.prod-done-at{display:flex;align-items:center;gap:6px 10px;flex-wrap:wrap;margin-top:10px}
.prod-done-at .field-label{margin:0}
.prod-done-at .input{width:auto;min-width:170px;background:#fff}
.prod-done-at .muted{font-size:12.5px}
.prod-done-day{font-size:12px;font-weight:500;color:#15803d;white-space:nowrap}
.prod-dates-task{margin-bottom:4px;font-size:13px}
.prod-dates{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.prod-dates li{display:flex;flex-direction:column;padding-left:8px;border-left:2px solid #fde68a;font-size:12px;line-height:1.35}
.prod-dates li.is-done{border-left-color:#86efac}
.prod-dates-name{color:var(--gray);overflow-wrap:anywhere}
.prod-dates-day{font-weight:600;color:#94a3b8}
.prod-dates li.is-done .prod-dates-day{color:#15803d}

.vb-done .prod-dates,.excel-col-done .prod-dates{text-align:left;white-space:normal}
.prod-mini-done{margin-top:2px;font-size:12px;font-weight:600;color:#15803d}

/* ===== Thống kê: bấm số liệu ra danh sách ===== */
a.stat-link{display:block;color:inherit;text-decoration:none;transition:box-shadow .15s,border-color .15s,transform .15s}
a.stat-link:hover{border-color:var(--border-strong);box-shadow:var(--shadow);transform:translateY(-1px)}
a.stat-link:hover .stat-value{color:var(--primary)}
a.stat-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.stat-card.stat-teal::before{background:#0d9488}
.stat-grid-done{margin-top:-6px}
.done-split{display:flex;justify-content:center;gap:4px 8px;flex-wrap:wrap;margin-top:3px;font-size:11.5px}
.stats-table td .done-split a{font-weight:500;color:var(--gray)}
.stats-table td .done-split a:hover{color:var(--primary)}
.stats-table td .done-split a.is-late{color:#b91c1c}
.stat-filter{display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap;margin-top:12px;padding:10px 14px;border:1px solid #bfdbfe;border-radius:var(--radius);background:#eff6ff;font-size:13.5px}
.stat-filter a:not(.btn){color:var(--primary);font-weight:600}
@media (max-width: 900px){
  .done-split{justify-content:flex-start}
}
