/* ===== Phi Trường Nhậu — theme thương hiệu ===== */
:root{
  --green-900:#0c1d15;
  --green-850:#102519;
  --green-800:#12291d;
  --green-700:#173a28;
  --green-600:#1e4a34;
  --green-500:#246b47;
  --cream:#f3ead4;
  --cream-2:#e9dcbd;
  --gold:#e2b53f;
  --gold-2:#c99a2e;
  --red:#8f2f28;
  --red-2:#7a271f;
  --ok:#3fbf6b;
  --warn:#e6a23c;
  --bad:#d9534f;
  --muted:#9fb3a3;
  --line:rgba(226,181,63,.18);
  --card:#13301f;
  --card-2:#0f2619;
  --r:14px;
  --font:'Be Vietnam Pro','Segoe UI',system-ui,-apple-system,Roboto,Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{
  font-family:var(--font);color:var(--cream);line-height:1.45;
  background:
    radial-gradient(1200px 600px at 50% -10%, #1b3d2a 0%, transparent 60%),
    var(--green-900);
  -webkit-tap-highlight-color:transparent;
}
img{max-width:100%;display:block}
button{font-family:inherit;cursor:pointer}
a{color:var(--gold);text-decoration:none}
.wrap{max-width:720px;margin:0 auto;padding:16px}
.wrap-wide{max-width:1200px;margin:0 auto;padding:16px}

/* Header */
.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;
  background:linear-gradient(180deg,var(--green-850),transparent);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;backdrop-filter:blur(6px)}
.topbar .logo{width:44px;height:44px;border-radius:50%;object-fit:cover;border:2px solid var(--gold);flex:0 0 auto}
.topbar .t1{font-weight:900;letter-spacing:.3px;font-size:16px}
.topbar .t2{font-size:12px;color:var(--muted)}

/* Cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:0 10px 24px rgba(0,0,0,.25);margin-bottom:14px}
.card h3{font-size:15px;letter-spacing:.3px;margin-bottom:10px;display:flex;align-items:center;gap:8px}

/* Pills / tags */
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;padding:4px 10px;border-radius:999px;border:1px solid var(--line)}
.pill.sang{background:rgba(226,181,63,.14);color:var(--gold)}
.pill.toi{background:rgba(38,80,120,.25);color:#9ec3ea;border-color:rgba(158,195,234,.25)}
.pill.full{background:rgba(63,191,107,.15);color:var(--ok)}
.pill.part{background:rgba(230,162,60,.15);color:var(--warn)}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:12px;padding:13px 18px;font-weight:800;font-size:14px;letter-spacing:.3px;transition:.15s;width:100%}
.btn-gold{background:var(--gold);color:#201402}
.btn-gold:active{background:var(--gold-2)}
.btn-ghost{background:transparent;border:1.5px solid var(--line);color:var(--cream)}
.btn-red{background:var(--red);color:#fff}
.btn-sm{padding:8px 12px;font-size:13px;width:auto;border-radius:10px}
.btn[disabled]{opacity:.5;pointer-events:none}

/* Action tiles (NV) */
.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.act{position:relative;text-align:left;background:var(--card-2);border:1.5px solid var(--line);border-radius:14px;padding:14px;color:var(--cream);transition:.15s}
.act:active{transform:scale(.98)}
.act .ic{font-size:26px}
.act .nm{font-weight:800;margin-top:6px;font-size:14px}
.act .st{font-size:12px;margin-top:4px;color:var(--muted)}
.act.done{border-color:rgba(63,191,107,.5);background:rgba(63,191,107,.08)}
.act.done .st{color:var(--ok);font-weight:700}
.act .badge{position:absolute;top:10px;right:10px;font-size:11px;font-weight:800;color:var(--ok)}
.act .thumbs{display:flex;gap:4px;margin-top:8px;flex-wrap:wrap}
.act .thumbs img{width:34px;height:34px;border-radius:6px;object-fit:cover;border:1px solid var(--line)}

/* Sheet / modal */
.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:flex-end;justify-content:center;z-index:50}
.sheet-bg.on{display:flex}
.sheet{background:var(--green-800);width:100%;max-width:720px;border-radius:18px 18px 0 0;border-top:3px solid var(--gold);padding:18px;max-height:92vh;overflow:auto}
.sheet h3{margin-bottom:6px}
.sheet .sub{color:var(--muted);font-size:13px;margin-bottom:14px}
.filebtns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
textarea,input,select{width:100%;background:var(--card-2);border:1.5px solid var(--line);color:var(--cream);border-radius:10px;padding:11px;font-family:inherit;font-size:14px}
.preview{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.preview .pv{position:relative}
.preview img{width:64px;height:64px;border-radius:8px;object-fit:cover;border:1px solid var(--line)}
.preview .rm{position:absolute;top:-6px;right:-6px;background:var(--bad);color:#fff;border:none;border-radius:50%;width:20px;height:20px;font-size:12px;line-height:1}

/* Table (admin) */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th,.tbl td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.tbl th{color:var(--gold);font-size:12px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}
.tbl tr:hover td{background:rgba(226,181,63,.04)}
.cell-ok{color:var(--ok);font-weight:800}
.cell-no{color:#c98;opacity:.6}
.chip{display:inline-block;font-size:11px;font-weight:800;padding:3px 8px;border-radius:999px}
.chip.full{background:rgba(63,191,107,.18);color:var(--ok)}
.chip.miss{background:rgba(217,83,79,.18);color:#f0a}

/* Tabs */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.tab{padding:9px 14px;border-radius:10px;border:1.5px solid var(--line);background:transparent;color:var(--cream);font-weight:800;font-size:13px}
.tab.on{background:var(--gold);color:#201402;border-color:var(--gold)}

.muted{color:var(--muted)}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spread{display:flex;justify-content:space-between;align-items:center;gap:10px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--green-600);border:1px solid var(--gold);color:var(--cream);padding:11px 18px;border-radius:12px;font-weight:700;z-index:99;opacity:0;transition:.25s;pointer-events:none}
.toast.on{opacity:1;bottom:34px}
.lb{position:fixed;inset:0;background:rgba(0,0,0,.9);display:none;align-items:center;justify-content:center;z-index:80;padding:16px}
.lb.on{display:flex}
.lb img{max-width:100%;max-height:90vh;border-radius:8px}
.empty{text-align:center;color:var(--muted);padding:30px 10px;font-size:14px}
.grid-emp{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px}

/* ===== App shell (admin) ===== */
.shell{display:flex;min-height:calc(100vh - 66px)}
.sidebar{width:216px;flex:0 0 216px;background:var(--green-850);border-right:1px solid var(--line);padding:12px;position:sticky;top:66px;height:calc(100vh - 66px);overflow:auto}
.side-sec{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:14px 8px 6px}
.nav-item{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;color:var(--cream);font-weight:700;font-size:14px;cursor:pointer;margin-bottom:3px;border:1px solid transparent}
.nav-item:hover{background:rgba(226,181,63,.08)}
.nav-item.on{background:var(--gold);color:#201402}
.nav-item .ic{font-size:17px}
.content{flex:1;padding:18px;min-width:0;overflow:auto}
.page-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.page-h h2{font-size:20px;font-weight:900}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.kpi .n{font-size:26px;font-weight:900;color:var(--gold);line-height:1.1}
.kpi .l{font-size:12px;color:var(--muted);margin-top:4px}
@media(max-width:820px){
  .shell{flex-direction:column;min-height:auto}
  .sidebar{width:auto;flex:none;position:static;height:auto;display:flex;gap:6px;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line)}
  .side-sec{display:none}
  .nav-item{white-space:nowrap;margin-bottom:0}
}

/* ===== Lịch tháng ô lớn ===== */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;min-width:860px}
.cal-scroll{overflow-x:auto}
.dow{text-align:center;font-weight:800;color:var(--gold);font-size:12px;padding:6px 0;text-transform:uppercase;letter-spacing:.5px}
.dow.sun{color:var(--red)}
.cal-day{min-height:118px;background:var(--card-2);border:1px solid var(--line);border-radius:10px;padding:7px;cursor:pointer;display:flex;flex-direction:column;gap:5px;transition:.12s}
.cal-day:hover{border-color:var(--gold)}
.cal-day.blank{background:transparent;border:none;cursor:default}
.cal-day.today{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.cal-day .dnum{font-weight:800;font-size:13px;display:flex;justify-content:space-between;align-items:center;color:var(--cream)}
.cal-day.wknd .dnum{color:var(--red)}
.cal-day .cnt{font-size:10px;color:var(--muted);font-weight:800}
.cal-sec{border-radius:7px;padding:3px 5px}
.cal-sec.sang{background:rgba(226,181,63,.10)}
.cal-sec.toi{background:rgba(43,91,134,.16)}
.cal-sec .seclb{font-size:9px;font-weight:900;letter-spacing:.4px;opacity:.9;display:block;margin-bottom:2px}
.cal-sec.sang .seclb{color:var(--gold)}
.cal-sec.toi .seclb{color:#9ec3ea}
.nchip{display:inline-block;font-size:11px;line-height:1.5;padding:0 5px;border-radius:5px;margin:1px 2px 1px 0;background:rgba(255,255,255,.06);color:var(--cream)}
.cal-sec.toi .nchip{background:rgba(158,195,234,.12)}
/* editor ngày */
.ed-emp{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;margin-bottom:6px;background:var(--card-2)}
.ed-emp .shbtns{display:flex;gap:6px}
.sh-toggle{min-width:58px;padding:6px 10px;border-radius:8px;border:1.5px solid var(--line);background:transparent;color:var(--muted);font-weight:800;font-size:12px}
.sh-toggle.on-sang{background:var(--gold);color:#201402;border-color:var(--gold)}
.sh-toggle.on-toi{background:#2b5b86;color:#fff;border-color:#2b5b86}

/* ===== Lịch part-time ca tối (v3) ===== */
.cal-day .cnt.toi{color:#9ec3ea}
.nwrap{display:flex;flex-wrap:wrap;gap:4px;align-content:flex-start}
.nwrap .nchip{background:rgba(158,195,234,.14);color:#dfeaf5;border:1px solid rgba(158,195,234,.22);font-size:11px;padding:1px 7px;border-radius:999px;margin:0}
.addhint{color:var(--muted);font-size:11px;opacity:.55;margin-top:2px}
/* picker trong modal ngày */
.pg{border:1.5px solid rgba(158,195,234,.3);background:rgba(43,91,134,.10);border-radius:12px;padding:12px;margin:12px 0}
.pg-head{font-weight:800;color:#9ec3ea;margin-bottom:10px;font-size:14px}
.grid-checks{display:flex;flex-wrap:wrap;gap:8px}
.chk{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;background:var(--card-2);cursor:pointer;font-size:13px;font-weight:700;user-select:none}
.chk input{width:16px;height:16px;accent-color:var(--ok);pointer-events:none}
.chk.on{border-color:var(--ok);background:rgba(63,191,107,.14);color:#cdefd8}
.summary-line{background:rgba(63,191,107,.10);border:1px solid rgba(63,191,107,.3);color:#cdefd8;border-radius:10px;padding:10px 12px;font-weight:700;margin-bottom:12px}
.ed-footer{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:12px}

/* ===== v4: ô lịch kiểu tên vây quanh số ngày ===== */
.cal-day.surround{position:relative;display:grid;
  grid-template-areas:"tl tc tr" "ml cc mr" "bl bc br";
  grid-template-columns:1fr auto 1fr;grid-template-rows:1fr auto 1fr;
  gap:4px;min-height:152px;align-items:center;justify-items:center}
.cal-day.surround .dnum-c{grid-area:cc;display:flex;flex-direction:column;align-items:center;gap:2px}
.cal-day.surround .dnum-c .dd{font-size:30px;font-weight:900;line-height:1;color:var(--cream)}
.cal-day.surround.wknd .dnum-c .dd{color:var(--red)}
.cal-day.surround.today{box-shadow:inset 0 0 0 2px var(--gold)}
.cal-day.surround .cnt.toi{font-size:11px}
.cal-day.surround .addhint{opacity:.4}
.nslot{font-size:11px;font-weight:700;color:#dfeaf5;background:rgba(158,195,234,.16);border:1px solid rgba(158,195,234,.26);border-radius:999px;padding:2px 8px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nslot.more{background:rgba(226,181,63,.16);color:var(--gold);border-color:rgba(226,181,63,.3)}
.s-tl{grid-area:tl;justify-self:start;align-self:start}
.s-tc{grid-area:tc;justify-self:center;align-self:start}
.s-tr{grid-area:tr;justify-self:end;align-self:start}
.s-ml{grid-area:ml;justify-self:start;align-self:center}
.s-mr{grid-area:mr;justify-self:end;align-self:center}
.s-bl{grid-area:bl;justify-self:start;align-self:end}
.s-bc{grid-area:bc;justify-self:center;align-self:end}
.s-br{grid-area:br;justify-self:end;align-self:end}

/* ===== v4: popup ra giữa + to ===== */
.sheet-bg.centered{align-items:center}
.sheet.modal-lg{max-width:780px;width:calc(100% - 32px);border-radius:18px;max-height:88vh}
.modal-lg .grid-checks{gap:10px}
.modal-lg .chk{font-size:15px;padding:13px 16px}
.modal-lg .chk input{width:18px;height:18px}
.modal-lg .pg{padding:16px}
.modal-lg .pg-head{font-size:16px}
.modal-lg .summary-line{font-size:15px;padding:12px 14px}

/* ===== v5: ô lịch rộng hơn, tên vây quanh xuống 2 dòng (không cắt 1 chữ) ===== */
.cal{min-width:1120px}
.cal-day.surround{min-height:162px}
.cal-day.surround .dnum-c .dd{font-size:26px}
.cal-day.surround .cnt.toi{font-size:10px;opacity:.85}
.nslot{white-space:normal;text-overflow:clip;line-height:1.12;text-align:center;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:100%}

/* v6: tên gọi ngắn 1 dòng */
.nslot{white-space:nowrap;-webkit-line-clamp:1}

/* ===== v7: lịch danh sách dọc (dễ nhìn) ===== */
.cal{min-width:980px}
.cal-day{min-height:96px;gap:5px}
.cal-day .dnum{display:flex;justify-content:space-between;align-items:center}
.cal-day .dnum .dd{font-weight:800;font-size:15px;color:var(--cream)}
.cal-day.wknd .dnum .dd{color:var(--red)}
.cal-day .cnt.toi{font-size:11px;color:#9ec3ea;font-weight:800}
.cal-day.today{box-shadow:inset 0 0 0 2px var(--gold)}
.plist{display:flex;flex-direction:column;gap:3px}
.prow{display:flex;align-items:center;gap:6px;background:rgba(158,195,234,.10);border:1px solid rgba(158,195,234,.20);border-radius:7px;padding:3px 7px;font-size:12px;font-weight:600;color:#eaf1f8;line-height:1.25}
.prow .av{width:17px;height:17px;border-radius:50%;background:var(--gold);color:#201402;font-size:9.5px;font-weight:900;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.prow .pnm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== v8: popup xếp lịch to, hiện hết nhân viên không cuộn ===== */
.sheet.modal-lg{max-width:1040px}
.modal-lg .grid-checks{gap:8px}
.modal-lg .chk{font-size:14px;padding:10px 12px;flex:1 1 calc(25% - 8px);min-width:150px;justify-content:flex-start}
@media(max-width:700px){ .modal-lg .chk{flex:1 1 calc(50% - 8px)} }

/* ===== v9: tối ưu điện thoại ===== */
@media(max-width:640px){
  .wrap-wide,.content{padding:12px 10px}
  .page-h h2{font-size:17px}
  /* nav gọn */
  .sidebar{gap:4px;padding:8px}
  .nav-item{padding:9px 11px;font-size:13px}
  .nav-item .ic{font-size:15px}
  /* KPI 2 cột */
  .kpis{grid-template-columns:1fr 1fr;gap:8px}
  .kpi{padding:11px 12px}
  .kpi .n{font-size:21px}
  /* Bảng -> thẻ (không kéo ngang) */
  .cal-scroll{overflow-x:visible}
  table.tcard{display:block}
  table.tcard thead{display:none}
  table.tcard tbody,table.tcard tr,table.tcard td{display:block;width:auto}
  table.tcard tr{background:var(--card-2);border:1px solid var(--line);border-radius:12px;margin-bottom:10px;padding:6px 12px}
  table.tcard tr:hover td{background:transparent}
  table.tcard td{display:flex;align-items:center;gap:10px;justify-content:space-between;border:none;padding:7px 0;text-align:right;flex-wrap:wrap}
  table.tcard td::before{content:attr(data-label);color:var(--gold);font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:.3px;text-align:left;margin-right:auto}
  table.tcard td:first-child{font-size:15px;border-bottom:1px solid var(--line);padding:4px 0 9px;text-align:left;justify-content:flex-start}
  table.tcard td:first-child::before{content:none}
  table.tcard td.cell-no{color:var(--muted)}
  .link-box{font-size:11px;flex:1 1 100%;text-align:left}
}

/* ===== v9: lịch dạng agenda trên điện thoại ===== */
.agenda{display:flex;flex-direction:column;gap:6px}
.agrow{display:flex;gap:12px;align-items:flex-start;background:var(--card-2);border:1px solid var(--line);border-radius:10px;padding:9px 11px;cursor:pointer}
.agrow:active{border-color:var(--gold)}
.agrow.today{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.agd{flex:0 0 40px;text-align:center}
.agd b{font-size:19px;display:block;line-height:1}
.agd span{font-size:10px;color:var(--muted)}
.agrow.sun .agd b{color:var(--red)}
.agn{font-size:13px;flex:1;color:var(--cream);line-height:1.5}
