/* ═══════════════════════════════════════════
   RESET & BASE
═══════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:14px;-webkit-text-size-adjust:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  background:#f2f3f7;
  color:#1a1a2e;
  /* center app on desktop */
  display:flex;justify-content:center;
}
.hidden{display:none!important}
button{cursor:pointer;border:none;background:none;font-family:inherit}
input,select,textarea{font-family:inherit;outline:none}

/* ═══════════════════════════════════════════
   LOGIN
═══════════════════════════════════════════ */
.login-wrap{
  width:100%;max-width:400px;min-height:100vh;
  display:flex;align-items:center;justify-content:center;padding:20px;
}
.login-card{
  width:100%;background:#fff;border-radius:20px;
  padding:32px 24px;box-shadow:0 8px 30px rgba(0,0,0,.1);
}
.login-logo{font-size:40px;text-align:center;margin-bottom:12px}
.login-card h1{font-size:20px;font-weight:700;text-align:center;margin-bottom:4px}
.login-sub{font-size:13px;color:#6b7280;text-align:center;margin-bottom:20px}
.err-msg{color:#ef4444;font-size:12px;text-align:center;margin-top:8px;min-height:16px}

/* ═══════════════════════════════════════════
   APP SHELL
═══════════════════════════════════════════ */
.app{
  width:100%;max-width:480px;min-height:100vh;
  background:#f2f3f7;
  position:relative;
  padding-bottom:80px; /* room for bottom nav */
}

/* ═══════════════════════════════════════════
   HEADER
═══════════════════════════════════════════ */
.header{
  background:#fff;
  padding:14px 16px;
  display:flex;align-items:center;justify-content:space-between;
  border-bottom:1px solid #eee;
  position:sticky;top:0;z-index:50;
}
.header-left{display:flex;align-items:center;gap:10px}
.header-logo{font-size:26px}
.header-title{font-size:17px;font-weight:700;color:#1a1a2e}
.header-sub{font-size:11px;color:#6b7280}
.header-right{display:flex;align-items:center;gap:6px}
#refreshBtn{opacity:.7;transition:opacity .2s,transform .3s}
#refreshBtn:hover{opacity:1}
#refreshBtn:disabled{transform:rotate(360deg);opacity:.5}
.avatar-circle{
  width:36px;height:36px;border-radius:50%;
  background:#dbeafe;color:#1d4ed8;
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;border:2px solid #93c5fd;
}

/* ═══════════════════════════════════════════
   VIEWS
═══════════════════════════════════════════ */
.view{display:none}
.view.active{display:block}
.view-title{font-size:17px;font-weight:700;padding:16px 16px 8px}

/* ═══════════════════════════════════════════
   SEARCH
═══════════════════════════════════════════ */
.search-wrap{
  margin:12px 16px;position:relative;
}
.search-ic{
  position:absolute;left:12px;top:50%;transform:translateY(-50%);
  font-size:16px;opacity:.45;pointer-events:none;
}
.search-inp{
  width:100%;background:#fff;border:1.5px solid #e5e7eb;
  border-radius:12px;padding:10px 14px 10px 38px;
  font-size:14px;color:#1a1a2e;
  transition:border-color .2s;
}
.search-inp:focus{border-color:#3b82f6}

/* ═══════════════════════════════════════════
   STAT BAR (6 tabs)
═══════════════════════════════════════════ */
.stat-bar{
  display:flex;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  gap:6px;
  padding:0 16px 10px;
  -webkit-overflow-scrolling:touch;
}
.stat-bar::-webkit-scrollbar{display:none}
.stat-tab{
  flex:0 0 auto;
  min-width:54px;
  scroll-snap-align:start;
  background:#fff;
  border:1.5px solid #e5e7eb;
  border-radius:10px;
  padding:8px 6px 6px;
  text-align:center;
  cursor:pointer;
  transition:all .2s;
}
.stat-tab.active{
  border-color:#3b82f6;
  background:#eff6ff;
}
.stat-tab.active .stat-num{color:#1d4ed8}
.stat-tab.active .stat-lbl{color:#1d4ed8;font-weight:600}
.stat-num{font-size:18px;font-weight:700;color:#1a1a2e;line-height:1.2}
.stat-lbl{font-size:7.5px;color:#6b7280;margin-top:2px;text-transform:uppercase;letter-spacing:.3px}

/* ═══════════════════════════════════════════
   FILTER ROW
═══════════════════════════════════════════ */
.filter-row{
  display:flex;gap:8px;padding:0 16px 12px;
}
.sel-job{
  flex:1;background:#fff;border:1.5px solid #e5e7eb;
  border-radius:10px;padding:9px 12px;
  font-size:13px;color:#374151;
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%236b7280' viewBox='0 0 16 16'%3E%3Cpath d='M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;
  cursor:pointer;
}
.inp-date{
  background:#fff;border:1.5px solid #e5e7eb;
  border-radius:10px;padding:9px 10px;
  font-size:12px;color:#374151;min-width:0;width:130px;
}

/* ═══════════════════════════════════════════
   BOARD
═══════════════════════════════════════════ */
.board-wrap{padding:0 16px 16px}

.status-group{margin-bottom:20px}

.status-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px;
  background:#fff;
  border-radius:12px 12px 0 0;
  border:1px solid #eee;
  border-bottom:none;
}
.sh-left{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:#374151}
.sh-dot{width:8px;height:8px;border-radius:50%}
.sh-badge{
  background:#e0f2fe;color:#0369a1;
  font-size:12px;font-weight:700;
  padding:2px 10px;border-radius:20px;
}

/* ═══════════════════════════════════════════
   TASK CARD
═══════════════════════════════════════════ */
.task-card{
  background:#fff;border:1px solid #eee;border-top:none;
  padding:14px;
  position:relative;
}
.task-card:last-child{border-radius:0 0 12px 12px}
.task-card+.task-card{border-top:1px solid #f3f4f6}

/* Card top row */
.card-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:6px}
.card-name{font-size:15px;font-weight:700;color:#1a1a2e}
.card-plate{font-size:15px;font-weight:700}
/* Plate color by status */
.plate-inprogress{color:#16a34a}
.plate-waiting{color:#dc2626}
.plate-special{color:#0891b2}
.plate-new{color:#d97706}
.plate-done{color:#7c3aed}

.pill{
  font-size:10px;font-weight:700;
  padding:3px 8px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.4px;
}
.pill-job{background:#dbeafe;color:#1e40af}
.pill-st-inprogress{background:#dcfce7;color:#166534}
.pill-st-waiting{background:#fee2e2;color:#991b1b}
.pill-st-special{background:#cffafe;color:#155e75}
.pill-st-new{background:#fef3c7;color:#92400e}
.pill-st-done{background:#ede9fe;color:#5b21b6}

/* Card meta */
.card-meta{
  display:flex;justify-content:space-between;
  font-size:12px;color:#6b7280;margin-top:6px;
}
.card-meta-item{display:flex;align-items:center;gap:3px}

/* Deadline chip inline */
.dl-chip{
  display:inline-block;font-size:11px;font-weight:600;
  padding:2px 8px;border-radius:6px;margin-top:6px;
}
.dl-green{background:#dcfce7;color:#166534}
.dl-yellow{background:#fef3c7;color:#92400e}
.dl-red{background:#fee2e2;color:#991b1b}

/* Card actions */
.card-actions{
  display:flex;gap:5px;margin-top:12px;
  border-top:1px solid #f3f4f6;padding-top:10px;
  flex-wrap:wrap;
}
.act-btn{
  flex:1;min-width:0;
  background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;
  padding:7px 4px;
  font-size:11px;font-weight:600;color:#374151;
  display:flex;align-items:center;justify-content:center;gap:3px;
  transition:background .15s;
  white-space:nowrap;
}
.act-btn:active{background:#e5e7eb}
.act-del{flex:0 0 36px;color:#9ca3af;font-size:15px}
.btn-more{flex:0 0 40px;color:#6b7280;font-size:16px;letter-spacing:1px}
.card-extra{border-top:1px dashed #e5e7eb;padding-top:8px;margin-top:-4px}

/* Collapse nhóm */
.sh-collapsible{cursor:pointer;user-select:none}
.sh-collapsible:hover{opacity:.85}
.sh-arrow{font-size:11px;margin-left:6px;color:#9ca3af}

/* ═══════════════════════════════════════════
   BOTTOM NAV
═══════════════════════════════════════════ */
.bottom-nav{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:480px;
  background:#fff;border-top:1px solid #eee;
  display:flex;align-items:flex-end;justify-content:space-around;
  padding:8px 0 max(16px,env(safe-area-inset-bottom));
  z-index:100;
}
.nav-btn{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  color:#9ca3af;padding:4px 0;transition:color .2s;
}
.nav-btn.active{color:#16a34a}
.nav-ic{font-size:20px;line-height:1}
.nav-lbl{font-size:10px;font-weight:500}
.nav-fab-wrap{flex:1;display:flex;justify-content:center;position:relative}
.nav-fab{
  width:52px;height:52px;border-radius:50%;
  background:#16a34a;color:#fff;
  font-size:30px;line-height:1;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(22,163,74,.4);
  position:absolute;bottom:4px;
  transition:transform .15s;
}
.nav-fab:active{transform:scale(.93)}

/* ═══════════════════════════════════════════
   FORMS & INPUTS
═══════════════════════════════════════════ */
.form-field{display:flex;flex-direction:column;gap:4px}
.form-field label{font-size:12px;font-weight:600;color:#6b7280}
.inp{
  background:#f9fafb;border:1.5px solid #e5e7eb;
  border-radius:10px;padding:10px 12px;
  font-size:14px;color:#1a1a2e;
  transition:border-color .2s;width:100%;
}
.inp:focus{border-color:#3b82f6;background:#fff}
.textarea{min-height:90px;resize:vertical}

/* ═══════════════════════════════════════════
   BUTTONS
═══════════════════════════════════════════ */
.btn-primary{
  background:#16a34a;color:#fff;border-radius:12px;
  padding:12px 20px;font-size:14px;font-weight:600;
  display:flex;align-items:center;justify-content:center;gap:6px;
  transition:background .15s;
}
.btn-primary:active{background:#15803d}
.btn-success{
  background:#0891b2;color:#fff;border-radius:12px;
  padding:12px 20px;font-size:14px;font-weight:600;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.btn-outline{
  background:#fff;border:1.5px solid #e5e7eb;border-radius:12px;
  padding:11px 20px;font-size:14px;font-weight:600;color:#374151;
  display:flex;align-items:center;justify-content:center;gap:6px;
}
.btn-danger{
  background:#fee2e2;color:#dc2626;border-radius:12px;
  padding:12px 20px;font-size:14px;font-weight:600;width:100%;
  display:flex;align-items:center;justify-content:center;
}
.w-full{width:100%}
.flex1{flex:1}
.row-btns{display:flex;gap:10px;margin-top:12px}

/* ═══════════════════════════════════════════
   PANEL
═══════════════════════════════════════════ */
.panel{background:#fff;border-radius:14px;padding:16px;margin:0 16px 16px}
.profile-panel{text-align:center;padding:32px 20px}
.avatar-lg{font-size:48px;margin-bottom:12px}
.profile-panel h3{font-size:18px;font-weight:700}
.profile-sub{font-size:13px;color:#6b7280;margin-top:4px}

/* Mẫu biểu – tờ khai */
.doc-list{
  background:#fff;border-radius:14px;
  margin:0 16px 16px;
  overflow:hidden;
}
.doc-link{
  display:flex;
  align-items:center;
  gap:12px;
  padding:13px 16px;
  border-bottom:1px solid #f3f4f6;
  text-decoration:none;
  color:#1a1a2e;
  width:100%;
  transition:background .15s;
}
.doc-link:last-child{border-bottom:none}
.doc-link:active{background:#f0fdf4}
.doc-ic{
  font-size:20px;
  width:38px;height:38px;
  background:#f0fdf4;
  border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.doc-name{flex:1;font-size:14px;font-weight:500;line-height:1.3}
.doc-arrow{font-size:20px;color:#9ca3af;flex-shrink:0}

/* ═══════════════════════════════════════════
   MODALS / BOTTOM SHEETS
═══════════════════════════════════════════ */
.modal{
  position:fixed;inset:0;
  background:rgba(0,0,0,.45);
  display:flex;align-items:flex-end;justify-content:center;
  z-index:200;
}
.sheet{
  background:#fff;width:100%;max-width:480px;
  border-radius:20px 20px 0 0;
  padding:0 20px max(20px,env(safe-area-inset-bottom));
  max-height:92vh;overflow-y:auto;
  animation:slideUp .25s ease;
}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet-handle{
  width:40px;height:4px;background:#e5e7eb;
  border-radius:4px;margin:12px auto 4px;
}
.sheet-title{font-size:17px;font-weight:700;padding:12px 0}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}
.form-grid .form-field:nth-child(1),
.form-grid .form-field:nth-child(7),
.form-grid .form-field:nth-child(8){grid-column:1/-1}
.sheet-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}

/* ═══════════════════════════════════════════
   DETAIL GRID
═══════════════════════════════════════════ */
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:13px}
.detail-item strong{display:block;font-size:11px;color:#6b7280;margin-bottom:2px}
.detail-item span{font-size:14px;font-weight:600;color:#1a1a2e}

/* ═══════════════════════════════════════════
   STATS TABLE
═══════════════════════════════════════════ */
.stats-tbl{width:100%;border-collapse:collapse}
.stats-tbl th,.stats-tbl td{padding:10px 8px;border-bottom:1px solid #f3f4f6;text-align:left;font-size:13px}
.stats-tbl th{color:#6b7280;font-weight:500}
.stats-tbl td{font-weight:700;text-align:right}

/* ═══════════════════════════════════════════
   DARK MODE
═══════════════════════════════════════════ */
body.dark{background:#0f172a;color:#e2e8f0}
body.dark .app{background:#0f172a}
body.dark .header,
body.dark .stat-tab,
body.dark .task-card,
body.dark .status-header,
body.dark .panel,
body.dark .sheet,
body.dark .bottom-nav,
body.dark .search-inp,
body.dark .sel-job,
body.dark .inp-date,
body.dark .inp,
body.dark .act-btn,
body.dark .btn-outline{background:#1e293b;border-color:#334155;color:#e2e8f0}
body.dark .card-name,
body.dark .sh-left{color:#f1f5f9}
body.dark .stat-num{color:#f1f5f9}
body.dark .stat-lbl,
body.dark .card-meta,
body.dark .form-field label{color:#94a3b8}
body.dark .bottom-nav{border-color:#1e293b}
