:root{--green:#2e4a35;--green2:#466b50;--bg:#f4f6f4;--line:#dfe6e0;--text:#1f2d24;--muted:#6f7c73;--danger:#a33a3a;--ok:#2d7c4c;--warn:#9a6a12}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit}.sidebar{position:fixed;inset:0 auto 0 0;width:240px;background:var(--green);color:#fff;padding:22px 16px;display:flex;flex-direction:column;z-index:20}.brand{font-weight:800;font-size:22px;letter-spacing:.06em;padding:0 8px 18px}.brand span{display:block;font-size:12px;font-weight:500;opacity:.75;letter-spacing:.02em}.sidebar nav{display:grid;gap:5px}.sidebar nav a{padding:11px 12px;border-radius:9px;text-decoration:none;color:#eef5ef}.sidebar nav a:hover,.sidebar nav a.active{background:#ffffff18}.userbox{margin-top:auto;padding:14px 10px;border-top:1px solid #ffffff2a}.userbox strong,.userbox small{display:block}.userbox small{opacity:.7;margin:4px 0 10px}.userbox a{font-size:13px}.main{margin-left:240px;min-height:100vh}.guest-main{margin-left:0}.top{height:72px;display:flex;align-items:center;padding:0 28px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.top h1{font-size:22px;margin:0}.wrap{padding:24px 28px;max-width:1600px}.grid{display:grid;gap:16px}.grid.cards{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px}.stat b{font-size:32px;display:block;margin-top:8px}.stat small{color:var(--muted)}.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:#fff;color:var(--text);padding:10px 14px;border-radius:9px;text-decoration:none;cursor:pointer;font-weight:600}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.danger{background:#fff0f0;color:var(--danger);border-color:#f0caca}.btn.small{padding:6px 9px;font-size:12px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}table{border-collapse:collapse;width:100%;min-width:760px}th,td{padding:12px 14px;text-align:left;border-bottom:1px solid #edf0ed;vertical-align:top}th{background:#fafbfa;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}tr:last-child td{border-bottom:0}label{display:grid;gap:6px;font-weight:600;font-size:14px}input,select,textarea{width:100%;border:1px solid #cfd8d1;border-radius:9px;padding:10px 11px;font:inherit;background:#fff;color:var(--text)}textarea{min-height:120px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1/-1}.alert{padding:12px 14px;border-radius:10px;margin-bottom:14px;background:#eef3ef}.alert.success{background:#e7f5ec;color:#1d6a3c}.alert.error{background:#fdecec;color:#8b2e2e}.alert.warning{background:#fff4db;color:#7c5611}.badge{display:inline-block;padding:4px 8px;border-radius:99px;font-size:12px;background:#eef2ef}.badge.success{background:#dff2e6;color:#226d40}.badge.failed{background:#fbe4e4;color:#9a3333}.badge.open{background:#e8f0ea;color:#315a3c}.login-card{max-width:430px;margin:8vh auto;background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 20px 50px #0000000d}.login-card form{display:grid;gap:14px}.hint{margin-top:16px;color:var(--muted);font-size:12px}.split{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.qr-card{text-align:center}.qr-box{display:flex;justify-content:center;margin:12px}.qr-print-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.qr-ticket{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;text-align:center;break-inside:avoid}.scanner{max-width:700px;margin:auto}.scanner #reader{background:#fff;border-radius:14px;overflow:hidden}.result-card{margin-top:16px;padding:22px;border-radius:14px;background:#fff;border:1px solid var(--line)}.result-card.ok{border-color:#a7d9b8}.result-card.dup{border-color:#e3c783}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;white-space:pre-wrap;word-break:break-word}.pill{padding:3px 7px;border-radius:20px;background:#edf1ed;font-size:12px}.kpi-row{display:flex;gap:8px;flex-wrap:wrap}.actions{display:flex;gap:6px;flex-wrap:wrap}@media(max-width:1000px){.grid.cards{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.qr-print-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.sidebar{position:static;width:auto;height:auto}.sidebar nav{grid-template-columns:repeat(2,1fr)}.userbox{display:none}.main{margin-left:0}.top{position:static;padding:0 16px}.wrap{padding:16px}.form-grid,.grid.cards{grid-template-columns:1fr}.qr-print-grid{grid-template-columns:1fr}.top h1{font-size:18px}}@media print{.sidebar,.top,.toolbar,.no-print{display:none!important}.main{margin:0}.wrap{padding:0}.qr-print-grid{grid-template-columns:repeat(3,1fr)}.qr-ticket{border:1px solid #bbb}}

/* Dashboard realtime */
.realtime-status{display:flex;align-items:center;gap:8px;font-size:13px;color:#52615a}
.live-dot{width:10px;height:10px;border-radius:50%;background:#1e9f57;display:inline-block;box-shadow:0 0 0 0 rgba(30,159,87,.45);animation:livePulse 1.6s infinite}
.live-dot.offline{background:#c0392b;animation:none;box-shadow:none}
.dashboard-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.stat-pop{animation:statPop .45s ease}
.row-new:first-child{animation:rowFlash 1.2s ease}
@keyframes livePulse{0%{box-shadow:0 0 0 0 rgba(30,159,87,.45)}70%{box-shadow:0 0 0 8px rgba(30,159,87,0)}100%{box-shadow:0 0 0 0 rgba(30,159,87,0)}}
@keyframes statPop{0%{transform:scale(1)}45%{transform:scale(1.15)}100%{transform:scale(1)}}
@keyframes rowFlash{0%{background:#dff7e8}100%{background:transparent}}

/* V2.4 - Check-in feedback */
.checkin-overlay{position:fixed;inset:0;background:rgba(18,31,23,.72);backdrop-filter:blur(4px);z-index:9999;display:flex;align-items:center;justify-content:center;padding:18px;opacity:0;visibility:hidden;transition:.18s ease}
.checkin-overlay.show{opacity:1;visibility:visible}
.checkin-modal{width:min(560px,100%);background:#fff;border-radius:24px;padding:30px 24px;text-align:center;box-shadow:0 28px 80px rgba(0,0,0,.3);transform:scale(.92);transition:.18s ease;border:5px solid #d7ded9}
.checkin-overlay.show .checkin-modal{transform:scale(1)}
.checkin-modal.success{border-color:#33a35c;background:#f3fff7}
.checkin-modal.duplicate{border-color:#e2a92f;background:#fffaf0}
.checkin-modal.error{border-color:#d64e4e;background:#fff5f5}
.checkin-icon{width:104px;height:104px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 18px;font-size:64px;font-weight:900;color:#fff;background:#77827a}
.checkin-modal.success .checkin-icon{background:#23964f}
.checkin-modal.duplicate .checkin-icon{background:#d79412}
.checkin-modal.error .checkin-icon{background:#c93f3f}
.checkin-title{font-size:29px;font-weight:900;letter-spacing:.02em}
.checkin-modal.success .checkin-title{color:#176b39}
.checkin-modal.duplicate .checkin-title{color:#8c5a05}
.checkin-modal.error .checkin-title{color:#982f2f}
.checkin-guest{font-size:32px;font-weight:800;margin-top:14px}
.checkin-meta{font-size:17px;line-height:1.6;margin-top:9px}
.checkin-zns{font-size:13px;color:#667168;margin-top:12px}
.checkin-next{margin-top:22px;min-width:220px;background:#2e4a35!important;color:#fff!important;border-color:#2e4a35!important}
.checkin-countdown{font-size:12px;color:#7a857d;margin-top:10px}
@media(max-width:600px){
  .checkin-modal{padding:26px 18px;border-radius:20px}
  .checkin-icon{width:88px;height:88px;font-size:54px}
  .checkin-title{font-size:24px}
  .checkin-guest{font-size:27px}
  .checkin-meta{font-size:16px}
}

/* V2.5 - Search guest check-in fallback */
.checkin-search-card{border:1px solid #dfe7e1}
.guest-search-results{display:grid;gap:10px;margin-top:14px}
.guest-search-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border:1px solid #dde5df;border-radius:14px;background:#fff}
.guest-search-item.is-checked{background:#f7f8f7;opacity:.78}
.guest-search-main{min-width:0}
.guest-search-name{font-size:17px;font-weight:800;color:#26372d}
.guest-search-meta{font-size:13px;color:#657068;margin-top:3px}
.guest-search-checked{font-size:13px;font-weight:700;color:#267a47;margin-top:6px}
.guest-checkin-btn{white-space:nowrap}
@media(max-width:640px){
  .guest-search-item{align-items:stretch;flex-direction:column}
  .guest-checkin-btn{width:100%;min-height:46px}
}

/* V2.7.1 - ZNS mode visibility */
.zns-mode-panel{padding:16px;border-radius:14px;margin:0 0 16px}
.zns-mode-panel.test{background:#fff4cf;border:2px solid #dfb13c;color:#73550a}
.zns-mode-panel.production{background:#ffe4e4;border:2px solid #cf4141;color:#8a2020}
.zns-mode-panel .mode-title{font-size:21px;font-weight:900;margin-bottom:5px}
.zns-mode-switch{padding:14px;border:1px solid #d9e0db;border-radius:12px;background:#f8faf8}
.zns-mode-switch small{display:block;margin:5px 0 0 25px}
.zns-test-card{outline:2px solid #e0b442;background:#fff9e8!important}
.zns-production-card{outline:2px solid #cf4141;background:#fff0f0!important}

/* V2.9 - Dashboard phân loại check-in */
.guest-status-tabs{display:flex;gap:8px;flex-wrap:wrap}
.guest-status-tab{border:1px solid #d7e0da;background:#f5f7f5;color:#385143;border-radius:999px;padding:9px 14px;font-weight:800;cursor:pointer}
.guest-status-tab span{display:inline-flex;min-width:24px;height:24px;padding:0 7px;align-items:center;justify-content:center;border-radius:999px;background:#e4ebe6;margin-left:5px}
.guest-status-tab.active{background:#2e4a35;color:#fff;border-color:#2e4a35}
.guest-status-tab.active span{background:rgba(255,255,255,.18)}
.guest-list-tools{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 0}
.guest-list-tools input{max-width:390px;width:100%}
.pending-badge{display:inline-block;background:#fff4d7;color:#805d08;border:1px solid #efd184;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}
@media(max-width:640px){
  .dashboard-head{align-items:flex-start;flex-direction:column}
  .guest-list-tools{align-items:stretch;flex-direction:column}
  .guest-list-tools input{max-width:none}
  .guest-status-tab{flex:1}
}

/* V2.9.1 - guest type filter */
.guest-list-tools select{min-width:210px}
@media(max-width:640px){.guest-list-tools select{width:100%}}

/* V2.9.2 - two guest tables */
.dashboard-guest-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.dashboard-guest-grid .card{min-width:0}
.guest-table-count{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:28px;padding:0 8px;border-radius:999px;background:#e7eee9;color:#2e4a35;font-size:13px;margin-left:5px}
.guest-table-search{width:100%;margin:12px 0}
.checked-badge{display:inline-block;background:#dff3e6;color:#1f7040;border:1px solid #b8dfc5;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}
@media(max-width:900px){.dashboard-guest-grid{grid-template-columns:1fr}}

/* V2.10 - Remember Login */
.remember-login{display:flex!important;align-items:flex-start;gap:10px;margin:4px 0 14px;padding:12px;border:1px solid #dbe3dd;border-radius:12px;background:#f7faf8}
.remember-login input{width:18px!important;height:18px!important;margin-top:2px;flex:0 0 auto}
.remember-login span{display:block}
.remember-login strong{display:block;font-size:14px}
.remember-login small{display:block;margin-top:3px;color:#778178;font-size:12px;line-height:1.4}

/* V2.11 - PWA + Mobile Logout */
.pwa-install-btn{border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.08);color:#fff;border-radius:9px;padding:8px 10px;font-weight:800;cursor:pointer;margin-top:8px}
.mobile-logout-btn{display:none!important}
@media(max-width:768px){
  body{padding-bottom:78px}
  .desktop-logout{display:none!important}
  .mobile-logout-btn{
    display:inline-flex!important;
    position:fixed;
    right:14px;
    bottom:14px;
    z-index:9998;
    align-items:center;
    justify-content:center;
    min-width:112px;
    height:48px;
    padding:0 17px;
    border-radius:999px;
    background:#9e3434;
    color:#fff!important;
    font-weight:900;
    text-decoration:none!important;
    box-shadow:0 10px 30px rgba(0,0,0,.24);
  }
}
@media(display-mode:standalone){
  .pwa-install-btn{display:none!important}
}

/* V2.11.1 PWA install fix */
.pwa-help-modal{position:fixed;inset:0;z-index:10050;background:rgba(18,31,23,.68);display:flex;align-items:center;justify-content:center;padding:18px}
.pwa-help-modal[hidden]{display:none!important}
.pwa-help-card{width:min(440px,100%);background:#fff;border-radius:20px;padding:22px;color:#243329;box-shadow:0 24px 70px rgba(0,0,0,.3)}
.pwa-help-card h3{margin-top:0}.pwa-help-card ol{padding-left:22px;line-height:1.7}
@media(max-width:768px){
  .pwa-install-btn{
    display:inline-flex!important;
    position:fixed;
    left:14px;
    bottom:14px;
    z-index:9998;
    height:48px;
    align-items:center;
    justify-content:center;
    border:0;
    border-radius:999px;
    padding:0 16px;
    background:#2e4a35;
    color:#fff;
    font-weight:900;
    box-shadow:0 10px 28px rgba(0,0,0,.22);
  }
  .pwa-install-btn[hidden]{display:none!important}
}

/* V2.12.1 Smart Check-in Popup */
.checkin-guest-type{display:inline-flex;align-items:center;justify-content:center;max-width:92%;margin:14px auto 4px;padding:10px 16px;border-radius:999px;font-size:17px;font-weight:950;letter-spacing:.02em;text-transform:uppercase;border:2px solid transparent}
.checkin-guest-type.wedding{background:#e4f5ea;border-color:#72bd8b;color:#17683a}
.checkin-guest-type.tasting{background:#fff0db;border-color:#e7a84b;color:#9a5700}

/* V2.13 - Global check-in notifications */
.global-checkin-toast-wrap{
  position:fixed;
  top:18px;
  right:18px;
  z-index:2147483000;
  display:grid;
  gap:10px;
  width:min(420px,calc(100vw - 28px));
  pointer-events:none;
}
.global-checkin-toast{
  display:flex;
  align-items:center;
  gap:13px;
  padding:15px 16px;
  border-radius:16px;
  background:#fff;
  border:2px solid #72bd8b;
  box-shadow:0 16px 45px rgba(0,0,0,.25);
  transform:translateY(0);
  opacity:1;
  transition:.3s ease;
}
.global-checkin-toast.tasting{
  border-color:#e7a84b;
  background:#fffaf2;
}
.global-checkin-toast.hide{
  opacity:0;
  transform:translateY(-12px);
}
.global-checkin-toast-icon{
  width:48px;
  height:48px;
  flex:0 0 48px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  background:#269357;
  font-size:28px;
  font-weight:900;
}
.global-checkin-toast.tasting .global-checkin-toast-icon{
  background:#dc8b22;
}
.global-checkin-toast-title{
  font-size:12px;
  font-weight:900;
  letter-spacing:.06em;
  color:#526158;
}
.global-checkin-toast-name{
  font-size:19px;
  font-weight:900;
  color:#23392c;
  margin-top:2px;
}
.global-checkin-toast-type{
  font-size:13px;
  font-weight:900;
  margin-top:3px;
}
.global-checkin-toast-meta{
  font-size:12px;
  color:#6d786f;
  margin-top:4px;
}
@media(max-width:768px){
  .global-checkin-toast-wrap{
    top:10px;
    right:10px;
    left:10px;
    width:auto;
  }
  .global-checkin-toast{
    padding:13px 14px;
  }
}

/* V2.14 - Edit/Delete Event Guests */
.btn.danger{background:#a73434!important;color:#fff!important;border-color:#a73434!important}
.table-wrap .actions form{margin:0}
@media(max-width:768px){.table-wrap td.actions{min-width:190px}.table-wrap td.actions .btn{margin:2px}}

/* V2.14.1 - Guests page UI fix */
.guest-table-wrap{overflow-x:auto}
.guest-table{min-width:980px}
.guest-sub{display:block;margin-top:4px;color:var(--muted)}
.guest-code{font-weight:800;white-space:nowrap}
.guest-actions{display:flex;gap:5px;flex-wrap:wrap;align-items:center;min-width:210px}
.guest-actions form{display:inline-flex!important;margin:0!important}
.guest-actions .btn{white-space:nowrap;margin:0!important}
.guest-type-pill{display:inline-flex;align-items:center;border-radius:999px;padding:6px 9px;font-size:12px;font-weight:800;line-height:1.2}
.guest-type-pill.wedding{background:#e5f4ea;color:#216b3f;border:1px solid #b9ddc6}
.guest-type-pill.tasting{background:#fff0d9;color:#945700;border:1px solid #edc17b}

@media(max-width:760px){
  .guest-table-wrap{overflow:visible;background:transparent;border:0}
  .guest-table{min-width:0;width:100%;display:block}
  .guest-table thead{display:none}
  .guest-table tbody{display:grid;gap:12px}
  .guest-table tr{display:block;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;box-shadow:0 3px 12px rgba(0,0,0,.035)}
  .guest-table td{display:grid;grid-template-columns:105px minmax(0,1fr);gap:10px;padding:7px 0;border:0;align-items:start}
  .guest-table td::before{content:attr(data-label);font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
  .guest-table td:last-child{padding-top:10px;margin-top:4px;border-top:1px solid #edf0ed}
  .guest-actions{min-width:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
  .guest-actions .btn,.guest-actions form,.guest-actions form .btn{width:100%}
  .guest-actions .btn{min-height:40px;display:inline-flex;align-items:center;justify-content:center}
}

/* V2.15 - Bulk Ticket Export */
.bulk-ticket-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0}
.bulk-export-progress{height:12px;background:#e7ece8;border-radius:999px;overflow:hidden;margin:16px 0 8px}
.bulk-export-progress-bar{height:100%;background:#2e4a35;transition:width .2s ease}
.bulk-ticket-stage{position:fixed;left:-10000px;top:0;width:1024px;pointer-events:none}
.bulk-ticket-card{width:1024px;background:#fff;border-radius:44px 44px 0 0;overflow:hidden;color:#193024;font-family:Inter,Segoe UI,Arial,sans-serif}
.bulk-ticket-head{background:#2e4a35;color:#fff;text-align:center;padding:50px 50px 42px}
.bulk-ticket-brand{font-size:25px;font-weight:900;letter-spacing:.32em}
.bulk-ticket-subbrand{font-size:18px;letter-spacing:.08em;margin-top:10px;opacity:.82}
.bulk-ticket-head h1{font-size:42px;line-height:1.18;margin:45px 0 16px;font-weight:900}
.bulk-ticket-head p{font-size:27px;margin:0;font-weight:400}
.bulk-ticket-body{padding:54px 44px 42px;text-align:center}
.bulk-ticket-invite{font-size:23px;color:#7b8980;margin-bottom:14px}
.bulk-ticket-salutation{font-size:30px;font-weight:900;color:#2e4a35;margin-bottom:12px}
.bulk-ticket-name{font-size:49px;line-height:1.1;font-weight:950;color:#2e4a35;margin-bottom:35px}
.bulk-ticket-qrbox{display:inline-block;padding:24px;border:2px solid #dbe6dd;border-radius:35px;background:#fff}
.bulk-ticket-qr{width:330px;height:330px}
.bulk-ticket-code{font-size:28px;font-weight:950;letter-spacing:.08em;margin-top:23px}
.bulk-ticket-hint{font-size:20px;color:#718078;margin:17px 0 35px}
.bulk-ticket-info-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.bulk-ticket-info{background:#f4f6f4;border-radius:22px;padding:24px 25px;text-align:left;margin-bottom:18px}
.bulk-ticket-info span{display:block;font-size:17px;color:#7c8981;letter-spacing:.05em;margin-bottom:9px}
.bulk-ticket-info strong{font-size:26px;line-height:1.3}
.bulk-ticket-info.wide{width:100%}
@media(max-width:760px){
  .bulk-ticket-tools{align-items:flex-start;flex-direction:column}
}

/* V2.15.6 - Missing dashboard customer names */
.guest-orphan-warning{margin-left:10px;padding:5px 9px;border-radius:999px;background:#fff2d9;color:#8b5700;border:1px solid #ebc67f;font-weight:800}

/* V2.15.8 - Event Checklist Module */
.task-overview{margin-bottom:16px}.task-progress-number{font-size:30px;color:#2e4a35}.task-progress{height:11px;background:#e8eeea;border-radius:999px;overflow:hidden;margin:12px 0}.task-progress span{display:block;height:100%;background:#2e4a35}.task-progress.small{height:7px;margin:8px 0}.task-summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.task-summary-grid>div{background:#f5f8f6;border-radius:12px;padding:11px;text-align:center}.task-summary-grid small{display:block;color:#718078}.task-summary-grid b{display:block;font-size:23px}.task-dept-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:16px}.task-dept-head{display:flex;justify-content:space-between}.task-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px}.task-section{margin-bottom:14px}.task-list{display:grid;gap:9px}.task-item{display:flex;justify-content:space-between;gap:14px;padding:13px;border:1px solid #e1e8e3;border-radius:13px;background:#fff}.task-item.status-done{opacity:.72;background:#f6faf7}.task-item.status-issue{border-color:#e7a7a7;background:#fff7f7}.task-item.status-doing{border-color:#e7ca8f;background:#fffbf2}.task-main{min-width:0;flex:1}.task-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.task-main p{margin:7px 0;color:#5f6e64}.task-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:7px;font-size:12px;color:#66756b}.task-priority{font-size:11px;font-weight:900;border-radius:999px;padding:4px 7px}.priority-urgent{background:#ffe1e1;color:#a72525}.priority-high{background:#fff0d4;color:#985b00}.priority-normal{background:#e9f0eb;color:#386048}.priority-low{background:#edf0f4;color:#596575}.task-note{margin-top:8px;padding:7px 9px;background:#f5f7f5;border-radius:9px;font-size:12px}.task-actions{display:flex;gap:5px;align-items:flex-start;flex-wrap:wrap}.task-actions form{margin:0}.task-editor{position:sticky;top:18px;align-self:start}@media(max-width:1100px){.task-dept-grid{grid-template-columns:repeat(2,1fr)}.task-layout{grid-template-columns:1fr}.task-editor{position:static}}@media(max-width:700px){.task-summary-grid{grid-template-columns:repeat(2,1fr)}.task-dept-grid{grid-template-columns:1fr}.task-item{display:block}.task-actions{margin-top:10px}}

/* V2.15.8.3 - Dashboard Task Progress */
.dashboard-task-progress-card{overflow:hidden}
.dashboard-task-rate{font-size:34px;font-weight:900;color:#2e4a35}
.dashboard-task-progress{height:12px;background:#e7ede8;border-radius:999px;overflow:hidden;margin:14px 0}
.dashboard-task-progress>span{display:block;height:100%;background:#2e4a35;border-radius:999px;transition:width .3s ease}
.dashboard-task-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.dashboard-task-stats>div{background:#f5f8f6;border-radius:12px;padding:11px;text-align:center}
.dashboard-task-stats small{display:block;color:#718078}
.dashboard-task-stats b{display:block;font-size:24px;margin-top:3px}
.task-issue-number{color:#b12f2f}
.dashboard-task-depts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.dashboard-task-dept{border:1px solid #e4e9e5;border-radius:12px;padding:10px}
.dashboard-task-dept>div:first-child{display:flex;justify-content:space-between;gap:8px;font-size:12px}
.dashboard-task-dept small{color:#718078}
.dashboard-task-mini-progress{height:7px;background:#edf1ee;border-radius:999px;overflow:hidden;margin:8px 0 5px}
.dashboard-task-mini-progress>span{display:block;height:100%;background:#2e4a35;border-radius:999px}
@media(max-width:900px){
  .dashboard-task-depts{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .dashboard-task-stats{grid-template-columns:repeat(2,1fr)}
  .dashboard-task-depts{grid-template-columns:1fr}
}

/* V2.15.9 - Reusable Checklist Templates */
.task-template-layout{align-items:start}
.task-template-list{display:grid;gap:10px}
.task-template-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px;border:1px solid #e2e8e4;border-radius:12px;background:#fff}
.task-template-row small{display:block;color:#718078;margin-top:4px}
.task-template-row form{margin:0}
.task-template-apply{display:grid;grid-template-columns:1fr 1fr auto;gap:7px;padding:8px 12px 14px;border-bottom:1px solid #edf0ed}
.template-items{display:grid;gap:10px;margin-top:10px}
.template-item-card{border:1px solid #e2e8e4;border-radius:13px;padding:12px;background:#f9fbf9}
.template-item-grid{display:grid;grid-template-columns:2fr 1.2fr .8fr .8fr 1fr 1.3fr;gap:8px}
.template-item-grid .wide{grid-column:span 3}
.remove-template-item{margin-top:8px}
@media(max-width:1100px){.template-item-grid{grid-template-columns:1fr 1fr}.template-item-grid .wide{grid-column:span 2}}
@media(max-width:700px){.task-template-row{display:block}.task-template-row .actions{margin-top:8px}.task-template-apply{grid-template-columns:1fr}.template-item-grid{grid-template-columns:1fr}.template-item-grid .wide{grid-column:auto}}

/* V2.16.0 - Task Photo Proof */
.task-photo-required{margin-top:8px;display:inline-flex;padding:5px 8px;border-radius:999px;background:#fff0d9;color:#915800;font-size:11px;font-weight:900}
.task-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px;margin-top:10px;max-width:620px}
.task-photo-thumb{position:relative;margin:0;border:1px solid #dfe7e1;border-radius:10px;overflow:hidden;background:#fff}
.task-photo-thumb img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover}
.task-photo-thumb figcaption{padding:5px 6px;font-size:10px;color:#66756b}
.task-photo-delete{position:absolute;right:4px;top:4px;width:24px;height:24px;border:0;border-radius:50%;background:#9e2e2e;color:#fff;cursor:pointer}
.task-photo-upload{display:grid;grid-template-columns:auto minmax(140px,1fr) auto;gap:6px;align-items:center;margin-top:9px;max-width:620px}
.task-photo-file{position:relative;overflow:hidden;background:#edf3ef;color:#2e4a35;border-radius:9px;padding:8px 10px;font-size:12px;font-weight:800;cursor:pointer}
.task-photo-file input{position:absolute;inset:0;opacity:0}
.task-require-photo-check{display:flex!important;align-items:center;gap:7px}.task-require-photo-check input{width:auto!important}
@media(max-width:700px){.task-photo-upload{grid-template-columns:1fr}.task-photo-file{text-align:center}}

/* V2.16.1 - Staff Position Realtime */
.staff-position-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:16px}
.staff-location-card{min-height:150px}.staff-location-card.unassigned{border-style:dashed}
.staff-location-head{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:10px}
.staff-location-head h3{margin:0}.staff-location-head span{font-size:12px;font-weight:800;background:#edf3ef;padding:5px 8px;border-radius:999px}
.staff-location-list{display:grid;gap:8px}.staff-location-empty{padding:16px;text-align:center;color:#748077;background:#f7f9f7;border-radius:10px}
.staff-person-card{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:8px;align-items:center;padding:9px;border:1px solid #e3e9e5;border-radius:11px}
.staff-person-card strong,.staff-person-card small{display:block}.staff-person-card small{font-size:11px;color:#748077}
.staff-position-admin-grid{display:grid;grid-template-columns:1.5fr .7fr;gap:16px;margin-top:16px}
.staff-location-edit-row{display:grid;grid-template-columns:1fr auto;gap:7px;margin-bottom:8px}
@media(max-width:1000px){.staff-position-board{grid-template-columns:repeat(2,1fr)}.staff-position-admin-grid{grid-template-columns:1fr}}
@media(max-width:700px){.staff-position-board{grid-template-columns:1fr}.staff-person-card{grid-template-columns:1fr}}

/* V2.16.2 - Multi Ticket */
.multi-ticket-btn{font-weight:900}.multi-ticket-add{display:flex;gap:10px;align-items:end;margin-top:14px}.multi-ticket-add label{max-width:160px}.multi-ticket-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}.multi-ticket-card.checked{border:1px solid #9fd0ae;background:#f6fbf7}.multi-ticket-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.multi-ticket-head strong,.multi-ticket-head small{display:block}.multi-ticket-head small{color:#728078;margin-top:3px}.multi-ticket-rename{display:grid;grid-template-columns:1fr auto;gap:6px;margin-top:10px}.multi-ticket-card form{margin-bottom:0}@media(max-width:900px){.multi-ticket-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.multi-ticket-grid{grid-template-columns:1fr}.multi-ticket-add{align-items:stretch;flex-direction:column}.multi-ticket-add label{max-width:none}}

/* V2.16.4 - Guest Seating */
.seating-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:16px}.seating-table-title{display:flex;gap:12px;align-items:center;margin-bottom:12px}.seating-table-title h3{margin:0}.table-circle{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#2e4a35;color:#fff;font-weight:900}.seating-people{display:grid;gap:7px}.seating-person{display:flex;justify-content:space-between;gap:8px;padding:9px 10px;border:1px solid #e1e8e3;border-radius:10px;text-decoration:none;color:inherit;background:#fff}.seating-person span{font-size:12px;color:#728078}.seating-person.arrived{background:#eef8f1;border-color:#a8d2b3}.seating-table-card.unassigned{border-style:dashed}.seat-ticket-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.seat-ticket-grid small{display:block;color:#728078}@media(max-width:950px){.seating-board{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.seating-board,.seat-ticket-grid{grid-template-columns:1fr}.seating-person{flex-direction:column}}

/* V2.16.5 - Visual Seating Map */
.visual-table-create{display:grid;grid-template-columns:1.2fr 1.4fr 90px 150px auto;gap:8px;margin-top:14px}
.visual-seating-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;margin-top:16px}
.visual-map-card{overflow:auto}
.visual-seating-canvas{position:relative;width:1100px;height:1000px;border:1px solid #dce5df;border-radius:18px;overflow:hidden;background:
linear-gradient(#edf2ee 1px,transparent 1px),linear-gradient(90deg,#edf2ee 1px,transparent 1px),#fafcfb;background-size:40px 40px}
.visual-stage{position:absolute;left:50%;top:12px;transform:translateX(-50%);min-width:320px;text-align:center;padding:14px 22px;background:#2e4a35;color:#fff;border-radius:0 0 16px 16px;font-weight:900;letter-spacing:.12em}
.visual-map-empty{position:absolute;inset:0;display:grid;place-items:center;color:#7d8b82}
.visual-table-node{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#fff;border:3px solid #2e4a35;box-shadow:0 8px 20px rgba(0,0,0,.08);touch-action:none;cursor:grab;user-select:none}
.visual-table-node.round{border-radius:50%}.visual-table-node.rect{border-radius:16px}
.visual-table-node.dragging{cursor:grabbing;box-shadow:0 14px 30px rgba(0,0,0,.18);z-index:20}
.visual-table-node strong{font-size:20px;color:#2e4a35}.visual-table-node small{font-size:11px;color:#718078;max-width:90%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.visual-table-node span{font-size:12px;font-weight:900;margin-top:5px}
.visual-seat-sidebar{max-height:760px;overflow:auto}
.visual-seat-table-block{padding:12px 0;border-bottom:1px solid #e6ece8}
.visual-seat-table-block.unassigned{border-bottom:0}
.visual-seat-table-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}
.visual-seat-table-head span{font-weight:800}
.visual-seat-guest{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 9px;background:#f5f8f6;border-radius:10px;margin:5px 0}
.visual-seat-guest.arrived{background:#eaf6ed;border:1px solid #b5d8bd}
.visual-seat-guest strong,.visual-seat-guest small{display:block}.visual-seat-guest small{font-size:11px;color:#738178;margin-top:2px}
.visual-seat-guest form{margin:0}
.visual-seat-assign-form{display:grid;grid-template-columns:1fr auto;gap:6px;margin-top:8px}
@media(max-width:1000px){.visual-seating-layout{grid-template-columns:1fr}.visual-seat-sidebar{max-height:none}.visual-table-create{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.visual-table-create{grid-template-columns:1fr}.visual-seat-assign-form{grid-template-columns:1fr}}

/* V2.16.6 - Mobile Full Seating Map */
.visual-map-tools{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.visual-seating-viewport{
  position:relative;
  width:100%;
  overflow:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  border-radius:18px;
  background:#f7faf8;
  min-height:min(72vh,720px);
}
.visual-seating-viewport::after{
  content:"";
  display:block;
  width:var(--map-width,1100px);
  height:var(--map-height,720px);
  pointer-events:none;
}
.visual-seating-canvas{
  position:absolute;
  left:0;
  top:0;
  margin:0;
  transition:transform .15s ease;
}
.visual-map-card{min-width:0}
.visual-seat-sidebar{min-width:0}
.visual-seat-table-block{break-inside:avoid}
@media(max-width:1000px){
  .visual-seating-layout{grid-template-columns:1fr}
  .visual-map-card{padding:12px}
  .visual-seat-sidebar{max-height:none}
  .visual-map-tools{position:sticky;top:0;z-index:30;background:#fff;padding:4px 0 8px}
}
@media(max-width:700px){
  .visual-seating-viewport{
    min-height:auto;
    height:calc(1000px * var(--map-scale,.35));
    max-height:68vh;
    overflow:auto;
    border:1px solid #dce5df;
  }
  .visual-stage{
    min-width:260px;
    padding:10px 18px;
    font-size:12px;
  }
  .visual-map-tools .btn{padding:7px 10px}
  .visual-seat-table-block{padding:10px 0}
  .visual-seat-guest{align-items:flex-start}
  .visual-seat-table-head{position:sticky;top:0;background:#fff;z-index:2;padding:6px 0}
}

/* V2.16.9 - Multi Ticket Import */
.import-ticket-rule{display:grid;gap:5px;background:#f4f8f5;border:1px solid #dce7df;border-radius:12px;padding:12px 14px;margin:14px 0}
.import-ticket-rule strong{color:#2e4a35}.import-ticket-rule span{font-size:13px;color:#65746a}
.import-check-option{display:flex!important;align-items:center;gap:8px;padding:10px 12px;background:#f7f9f7;border-radius:10px}.import-check-option input{width:auto!important}
.import-preview-card .actions form{margin:0}.import-preview-table{max-height:520px}.import-preview-table thead th{position:sticky;top:0;background:#fff;z-index:2}
.import-invalid{opacity:.55;background:#fff4f4}

/* V2.17.0 - Realtime Seating Checkin Status */
.visual-table-node em{font-style:normal;font-size:10px;margin-top:4px;padding:3px 7px;border-radius:999px;background:#eef1ef;color:#56635a}
.visual-table-node.table-partial-arrived{border-color:#d39b2a;background:#fffaf0}
.visual-table-node.table-partial-arrived em{background:#fff0c9;color:#8b6413}
.visual-table-node.table-all-arrived{border-color:#23844a;background:#edf9f0}
.visual-table-node.table-all-arrived em{background:#d9f2df;color:#176335}
.seat-checkin-state{display:inline-block;margin-top:5px;font-size:10px;font-weight:800;padding:3px 7px;border-radius:999px}
.seat-checkin-state.is-in{background:#d9f2df;color:#176335}.seat-checkin-state.is-waiting{background:#ecefed;color:#667269}

/* V2.17.1 - Seating Map inside Checkin */
.checkin-seating-card{overflow:hidden}
.checkin-seating-viewport{position:relative;width:100%;overflow:hidden;border:1px solid #dce5df;border-radius:16px;background:#f8fbf9;min-height:180px}
.checkin-seating-canvas{position:absolute;left:0;top:0;width:1100px;height:1000px;background:linear-gradient(#edf2ee 1px,transparent 1px),linear-gradient(90deg,#edf2ee 1px,transparent 1px),#fafcfb;background-size:40px 40px}
.checkin-seating-stage{position:absolute;left:50%;top:10px;transform:translateX(-50%);min-width:300px;text-align:center;padding:12px 20px;border-radius:0 0 14px 14px;background:#2e4a35;color:#fff;font-size:13px;font-weight:900;letter-spacing:.12em}
.checkin-seating-node{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#fff;border:3px solid #9ba8a0;box-shadow:0 7px 18px rgba(0,0,0,.08)}
.checkin-seating-node.round{border-radius:50%}.checkin-seating-node.rect{border-radius:14px}
.checkin-seating-node strong{font-size:18px;color:#2e4a35}.checkin-seating-node small{font-size:10px;color:#758179}.checkin-seating-node em{font-style:normal;font-size:10px;font-weight:800;margin-top:4px;padding:3px 7px;border-radius:999px;background:#edf0ee;color:#68736c}
.checkin-seating-node.table-partial-arrived{border-color:#d49a2a;background:#fffaf0}.checkin-seating-node.table-partial-arrived em{background:#ffe9b7;color:#855c08}
.checkin-seating-node.table-all-arrived{border-color:#23844a;background:#edf9f0}.checkin-seating-node.table-all-arrived em{background:#d9f2df;color:#176335}
.checkin-seat-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:#66746b}.checkin-seat-legend span{display:flex;align-items:center;gap:5px}.seat-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.seat-dot.waiting{background:#9ba8a0}.seat-dot.partial{background:#d49a2a}.seat-dot.complete{background:#23844a}
@media(max-width:700px){.checkin-seating-card{padding:12px}.checkin-seating-card .dashboard-head{align-items:flex-start}.checkin-seat-legend{font-size:11px;gap:9px}}

/* V2.17.3 - Rect Table Resize Rotate */
.visual-table-node.rect{overflow:visible}
.rect-resize-handle,.rect-rotate-handle{position:absolute;z-index:40;touch-action:none}
.rect-resize-se{width:16px;height:16px;right:-8px;bottom:-8px;border-radius:50%;background:#fff;border:2px solid #2e4a35;cursor:nwse-resize}
.rect-resize-e{width:10px;height:34px;right:-6px;top:50%;transform:translateY(-50%);border-radius:999px;background:#fff;border:2px solid #2e4a35;cursor:ew-resize}
.rect-resize-s{width:34px;height:10px;bottom:-6px;left:50%;transform:translateX(-50%);border-radius:999px;background:#fff;border:2px solid #2e4a35;cursor:ns-resize}
.rect-rotate-handle{width:30px;height:30px;left:50%;top:-38px;transform:translateX(-50%);border-radius:50%;border:2px solid #2e4a35;background:#fff;color:#2e4a35;font-size:18px;font-weight:900;line-height:24px;cursor:grab;box-shadow:0 4px 10px rgba(0,0,0,.12)}
.visual-table-node.resizing,.visual-table-node.rotating{z-index:50;box-shadow:0 16px 34px rgba(0,0,0,.18)}
.visual-table-node.rotating .rect-rotate-handle{cursor:grabbing}
@media(max-width:700px){
  .rect-resize-se{width:20px;height:20px;right:-10px;bottom:-10px}
  .rect-resize-e{width:14px;height:40px;right:-8px}
  .rect-resize-s{width:40px;height:14px;bottom:-8px}
  .rect-rotate-handle{width:34px;height:34px;top:-42px}
}

/* V2.17.4 - Round Resize Taller Map */
.visual-seating-canvas{height:1000px}
.round-resize-handle{position:absolute;right:-8px;bottom:-8px;width:18px;height:18px;border-radius:50%;background:#fff;border:2px solid #2e4a35;cursor:nwse-resize;z-index:40;touch-action:none}
.visual-table-node.round.resizing{z-index:50;box-shadow:0 16px 34px rgba(0,0,0,.18)}
@media(max-width:700px){.round-resize-handle{width:22px;height:22px;right:-11px;bottom:-11px}}

/* V2.17.6 Export Seating PNG */
#exportSeatingPng:disabled{opacity:.65;cursor:wait}

/* V2.17.7 - Canvas PNG Export Fix */

/* V2.17.8 - Seating Ticket Counts */

/* V2.17.9 - Checkin Seating Full Size */
.checkin-seating-canvas{width:1100px;height:1000px}
.checkin-seating-viewport{width:100%;overflow:hidden}
@media(max-width:700px){
  .checkin-seating-viewport{min-height:0}
}

/* V2.18.0 - Seating Capacity Fix */
.checkin-seat-capacity{font-size:11px;font-weight:900;color:#2e4a35;margin-top:3px}
.visual-table-node>span:not(.rect-resize-handle):not(.round-resize-handle){font-weight:900}

/* V2.18.1 - Export Seating PDF */
#exportSeatingPdf{white-space:nowrap}.seat-capacity-label{font-size:10px;font-weight:900;color:#2e4a35;margin-top:3px}

/* V2.18.2 - PDF Fit One Page */
#exportSeatingPdf:disabled{opacity:.65;cursor:wait}

/* V2.18.3 - Remove duplicate seating capacity label */

/* V2.18.4 - Guest Payment Status */
.payment-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:900;white-space:nowrap}
.payment-badge.paid{background:#dff4e5;color:#176335}
.payment-badge.unpaid{background:#fff0d9;color:#8b5b12}

/* V2.18.5 - Payment Visible In Guest List */
.payment-quick-form{margin-top:6px}
.payment-quick-form select{min-width:145px;padding:6px 8px;font-size:11px;border-radius:8px}
.guest-table td[data-label="Thanh toán"]{min-width:165px}
@media(max-width:760px){
  .guest-table td[data-label="Thanh toán"]{display:flex;flex-direction:column;align-items:flex-start;gap:5px}
  .payment-quick-form,.payment-quick-form select{width:100%}
}

/* V2.18.6 - Checkin Search Payment Status */
.checkin-payment-row{margin-top:7px}
.guest-search-item .payment-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:900}
.guest-search-item .payment-badge.paid{background:#dff4e5;color:#176335}
.guest-search-item .payment-badge.unpaid{background:#fff0d9;color:#8b5b12}
@media(max-width:700px){
  .checkin-payment-row{margin-top:8px}
  .guest-search-item .payment-badge{font-size:12px;padding:6px 9px}
}

/* V2.18.7 - Batch Multi Ticket Checkin */
.guest-ticket-batch-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;padding:9px 10px;background:#f4f8f5;border:1px solid #dce7df;border-radius:10px}
.batch-select-all{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:800;color:#425249;cursor:pointer}
.batch-select-all input,.ticket-select-wrap input{width:auto!important}
.ticket-select-wrap{display:flex;align-items:center;gap:9px;min-width:0;cursor:pointer}
.ticket-check-placeholder{width:17px;height:17px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;background:#dff4e5;color:#176335;font-size:11px;font-weight:900;flex:0 0 auto}
.batch-checkin-btn{white-space:nowrap}
@media(max-width:700px){
  .guest-ticket-batch-toolbar{flex-direction:column;align-items:stretch}
  .batch-checkin-btn{width:100%}
  .search-ticket-row{align-items:flex-start}
  .ticket-select-wrap{flex:1}
}

/* V2.18.8 - Single Check-in Button */
.ticket-row-state{font-size:10px;font-weight:900;padding:4px 7px;border-radius:999px;white-space:nowrap}
.ticket-row-state.pending{background:#eef2ef;color:#68736c}
.ticket-row-state.checked{background:#dff4e5;color:#176335}
.batch-checkin-btn:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:700px){
  .ticket-row-state{font-size:10px}
}

/* V2.18.9 - Batch Check-in Button State Fix */
.batch-checkin-btn[data-loading="1"]{opacity:.7;cursor:wait}

/* V2.19.0 - Batch Execution Fix */

/* V2.19.1 - Check-in Show Table / Seat / Location */
.checkin-place-box{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:12px 0 7px}
.checkin-place-box span{display:inline-flex;padding:8px 10px;border-radius:10px;background:#f1f5f2;color:#31483a;font-size:13px}
.checkin-place-box .checkin-table-highlight{background:#2e4a35;color:#fff;font-size:18px;font-weight:900;padding:9px 14px}
.checkin-location-note{margin-top:5px;font-size:12px;color:#65746b}
.checkin-inline-place{margin:8px 0;padding:9px 10px;border-radius:10px;background:#edf5ef;color:#294333}
@media(max-width:700px){
  .checkin-place-box{display:grid;grid-template-columns:1fr 1fr}
  .checkin-place-box span{justify-content:center}
  .checkin-place-box .checkin-table-highlight{grid-column:1/-1;font-size:20px}
}

/* V2.19.2 - Check-in Table Only */
.checkin-place-box{display:flex;justify-content:center}
.checkin-place-box .checkin-table-highlight{font-size:22px;padding:11px 20px}

/* V2.19.3 - Popup Fix No Notification */

/* V2.19.4 - Popup Name + Table Fix */
#checkinGuest{font-size:28px;font-weight:900;margin:8px 0 10px}
.checkin-no-table{margin-top:10px;font-weight:800;color:#7a6d60}
.checkin-place-box .checkin-table-highlight{font-size:24px;padding:12px 22px}
@media(max-width:700px){
  #checkinGuest{font-size:24px}
  .checkin-place-box .checkin-table-highlight{font-size:22px}
}

/* V2.19.5 - Copy Seating Map */
.copy-seating-panel{margin-top:14px;border:1px solid #dce7df}
.copy-seating-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;align-items:end}
.copy-seating-note{grid-column:1/-1;padding:10px 12px;border-radius:10px;background:#f5f8f6;color:#5b695f;font-size:12px;line-height:1.55}
@media(max-width:760px){.copy-seating-form{grid-template-columns:1fr}.copy-seating-note{grid-column:auto}.copy-seating-form .btn{width:100%}}

/* V2.19.6 - Print seating map + guest list */
.seating-guest-print-section{display:none}
@media print{
  body.print-map-with-guests .visual-map-tools,
  body.print-map-with-guests .visual-seat-sidebar,
  body.print-map-with-guests .visual-table-create,
  body.print-map-with-guests .toolbar,
  body.print-map-with-guests #copySeatingPanel{display:none!important}
  body.print-map-with-guests .visual-seating-layout{display:block!important}
  body.print-map-with-guests .visual-map-card{box-shadow:none!important;border:0!important;page-break-after:always;break-after:page}
  body.print-map-with-guests .visual-seating-viewport{overflow:visible!important}
  body.print-map-with-guests .seating-guest-print-section{display:block!important;page-break-before:always;break-before:page;font-size:10px}
  body.print-map-with-guests .seating-guest-print-section h2{font-size:18px;margin:0 0 4px}
  body.print-map-with-guests .seating-guest-print-section p{margin:0 0 10px}
  body.print-map-with-guests .seating-guest-print-section table{width:100%;border-collapse:collapse}
  body.print-map-with-guests .seating-guest-print-section th,
  body.print-map-with-guests .seating-guest-print-section td{border:1px solid #aaa;padding:5px 6px;text-align:left}
  body.print-map-with-guests .seating-guest-print-section th{background:#eee;font-weight:800}
  body.print-map-with-guests .seating-guest-print-section tr{break-inside:avoid}
  @page{size:A4 landscape;margin:8mm}
}

/* V2.19.7 - Edit table name / capacity */
.table-edit-btn{position:absolute;right:5px;top:5px;z-index:8;width:24px;height:24px;border:0;border-radius:50%;background:#fff;box-shadow:0 1px 5px rgba(0,0,0,.2);font-weight:900;cursor:pointer}
.table-edit-modal[hidden]{display:none!important}
.table-edit-modal{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:18px}
.table-edit-dialog{width:min(440px,100%);background:#fff;border-radius:16px;padding:18px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.table-edit-dialog form{display:grid;gap:12px}
.table-edit-dialog label{display:grid;gap:5px;font-weight:800}
.table-edit-dialog input{width:100%}

/* V2.19.8 - Edit form visibility fix */
.table-edit-modal:not([hidden]){display:flex!important}
.table-edit-dialog input{display:block!important;visibility:visible!important;opacity:1!important;min-height:42px;width:100%;padding:9px 10px}
.table-edit-dialog label{display:grid!important;gap:6px;margin-bottom:10px}
.table-edit-dialog .btn.primary{display:block!important;width:100%;margin-top:8px}

/* V2.19.9 - Check-in Ticket KPI */
.checkin-ticket-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 16px}
.checkin-kpi-card{background:#fff;border:1px solid #dfe7e1;border-radius:14px;padding:14px 16px;box-shadow:0 4px 14px rgba(0,0,0,.04)}
.checkin-kpi-card span{display:block;font-size:11px;font-weight:850;color:#68766d;margin-bottom:6px}
.checkin-kpi-card strong{display:block;font-size:30px;line-height:1;color:#2e4a35}
.checkin-kpi-card.success{background:#edf9f0;border-color:#cae9d2}
.checkin-kpi-card.success strong{color:#23844a}
.checkin-kpi-card.pending{background:#fff8eb;border-color:#f0dfba}
.checkin-kpi-card.pending strong{color:#a36a12}
.checkin-kpi-card.rate{background:#f2f6f3}
@media(max-width:760px){
  .checkin-ticket-kpis{grid-template-columns:1fr 1fr;gap:8px}
  .checkin-kpi-card{padding:12px}
  .checkin-kpi-card strong{font-size:25px}
}

/* V2.19.10 - Check-in CSRF Auto Refresh */

/* V2.20 - Seat Level Seating Map */
.visual-table-node{overflow:visible!important}
.table-seat-layer,.checkin-seat-layer{position:absolute;inset:-24px;z-index:12;pointer-events:none}
.seat-node,.checkin-seat-dot-node{
  position:absolute;transform:translate(-50%,-50%);
  width:25px;height:25px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:950;line-height:1;
  border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.25)
}
.seat-node{pointer-events:auto;cursor:pointer;padding:0}
.seat-node.empty,.checkin-seat-dot-node.empty{background:#fff;color:#2e4a35;border-color:#bdc9c0}
.seat-node.assigned,.checkin-seat-dot-node.assigned{background:#f1ad2f;color:#fff;border-color:#fff}
.seat-node.checked_in,.checkin-seat-dot-node.checked_in{background:#23844a;color:#fff;border-color:#fff}
.seat-node:hover{transform:translate(-50%,-50%) scale(1.15)!important;z-index:20}
.seat-assign-panel[hidden]{display:none!important}
.seat-assign-panel{position:fixed;inset:0;z-index:100002;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:18px}
.seat-assign-dialog{width:min(470px,100%);background:#fff;border-radius:18px;padding:18px;box-shadow:0 24px 70px rgba(0,0,0,.3)}
.seat-assign-dialog form{display:grid;gap:12px}
.seat-assign-dialog label{display:grid;gap:6px;font-weight:850}
.seat-assign-dialog select{width:100%;min-height:44px;padding:8px}
.seat-assign-actions{display:flex;gap:8px;flex-wrap:wrap}
.checkin-seating-node{overflow:visible!important}
.checkin-seat-layer{inset:-20px}
.checkin-seat-dot-node{width:21px;height:21px;font-size:8px;pointer-events:none}
@media(max-width:700px){
  .table-seat-layer{inset:-20px}
  .seat-node{width:22px;height:22px;font-size:9px}
  .checkin-seat-dot-node{width:18px;height:18px;font-size:7px}
  .seat-assign-actions{display:grid;grid-template-columns:1fr}
}

/* V2.20.1 - Dual Seating Modes */
.seating-mode-switcher{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;margin-top:14px;padding:12px;background:#f6f9f7;border:1px solid #dfe8e2;border-radius:12px}
.seating-mode-switcher>div{display:grid;gap:2px}
.seating-mode-option{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid #d5dfd8;border-radius:10px;background:#fff;cursor:pointer}
.seating-mode-option.active{border-color:#2e4a35;background:#edf5ef}
.seating-mode-option input{width:auto!important}
.seating-mode-option span{display:grid;gap:2px}
.seating-mode-option small{font-size:10px;color:#718078}
@media(max-width:800px){.seating-mode-switcher{grid-template-columns:1fr}}

/* V2.20.2 - Draggable Seats */
.seat-edit-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0;padding:10px 12px;border:1px dashed #c7d4ca;border-radius:10px;background:#fbfdfb}
.seat-position-editing .seat-node{cursor:grab!important;touch-action:none;outline:2px dashed rgba(46,74,53,.35);outline-offset:2px}
.seat-position-editing .seat-node.dragging{cursor:grabbing!important;z-index:999;box-shadow:0 5px 16px rgba(0,0,0,.35);transition:none!important}
.seat-node.seat-saved{box-shadow:0 0 0 4px rgba(35,132,74,.22),0 2px 6px rgba(0,0,0,.25)}
@media(max-width:700px){.seat-edit-toolbar{display:grid;grid-template-columns:1fr}.seat-edit-toolbar .btn{width:100%}}

/* V2.20.3 - JSON CSRF API Fix */

/* V2.20.4 - Multi Ticket Seat Assignment */
.seat-ticket-count{font-size:12px;font-weight:900;color:#2e4a35;margin-left:4px}
#seatAssignTicket option{padding:6px}
#seatTicketHelp{display:block;line-height:1.35}
/* V2.20.5 Quick Add Guest */.quick-guest-modal[hidden]{display:none!important}.quick-guest-modal{position:fixed;inset:0;z-index:100100;background:rgba(0,0,0,.52);display:flex;align-items:center;justify-content:center;padding:18px}.quick-guest-dialog{width:min(720px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:18px;padding:18px;box-shadow:0 24px 80px rgba(0,0,0,.3)}.checkin-quick-add-row{display:flex;justify-content:flex-end;margin-bottom:10px}
/* V2.20.6 - Guest List Search */
.guest-search-box{display:flex;align-items:center;gap:8px;flex:1;min-width:260px}
.guest-search-box input{width:min(420px,100%);min-height:42px}
.guest-search-box .muted{white-space:nowrap;font-size:12px}
@media(max-width:700px){.guest-search-box{width:100%;min-width:0;flex-wrap:wrap}.guest-search-box input{width:100%}}

/* V2.20.7 - Checkin device notification setting */
.checkin-notify-setting{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px;border:1px solid #dce6df;border-radius:14px;background:#f8fbf9}
.checkin-notify-setting>div{display:grid;gap:5px}
.config-switch{display:flex!important;align-items:center!important;gap:10px!important;white-space:nowrap;cursor:pointer}
.config-switch input{position:absolute;opacity:0;pointer-events:none}
.config-switch-slider{width:48px;height:26px;border-radius:999px;background:#b9c1bc;position:relative;transition:.2s}
.config-switch-slider:after{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25);transition:.2s}
.config-switch input:checked+.config-switch-slider{background:#2e7d4b}
.config-switch input:checked+.config-switch-slider:after{transform:translateX(22px)}
@media(max-width:700px){.checkin-notify-setting{align-items:flex-start;flex-direction:column}.config-switch{width:100%;justify-content:flex-start}}


/* V2.21.1 - Seat status legend: empty / assigned / checked-in */
.seat-status-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:10px 0 12px;padding:10px 12px;border:1px solid #e1e8e3;border-radius:12px;background:#fafcfb;font-size:12px;color:#59675e}
.seat-status-legend span,.checkin-seat-legend span{display:flex;align-items:center;gap:6px}
.seat-dot.seat-empty{background:#fff;border:1.5px solid #bdc9c0}
.seat-dot.seat-assigned{background:#f1ad2f;border:1.5px solid #f1ad2f}
.seat-dot.seat-checked{background:#23844a;border:1.5px solid #23844a}
@media(max-width:700px){.seat-status-legend{gap:10px;font-size:11px}}


/* V2.21.2 - Bulk ticket export: per-ticket / all tickets by guest */
.bulk-ticket-mode-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
.bulk-ticket-mode{display:flex;align-items:flex-start;gap:10px;padding:14px;border:2px solid #dfe7e1;border-radius:14px;background:#fff;cursor:pointer}
.bulk-ticket-mode.active{border-color:#2e7d4b;background:#f3faf5}
.bulk-ticket-mode input{margin-top:4px}
.bulk-ticket-mode span{display:grid;gap:4px}
.bulk-ticket-mode small{color:#718078;line-height:1.4}
.bulk-ticket-guest-groups{display:grid;gap:12px}
.bulk-ticket-guest-card{border:1px solid #dfe7e1;border-radius:14px;overflow:hidden;background:#fff}
.bulk-ticket-guest-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#f7faf8;border-bottom:1px solid #e5ece7}
.bulk-guest-select{display:flex;align-items:center;gap:10px;cursor:pointer}
.bulk-guest-select>span{display:grid;gap:2px}
.bulk-guest-select small{color:#748078}
.bulk-ticket-list{display:grid}
.bulk-ticket-item{display:grid;grid-template-columns:auto minmax(150px,1fr) minmax(180px,.8fr) auto;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid #edf1ee;cursor:pointer}
.bulk-ticket-item:last-child{border-bottom:0}
.bulk-ticket-item.disabled{opacity:.55}
.bulk-guest-select.disabled{opacity:.55}
.bulk-ticket-item-main{display:grid;gap:2px}.bulk-ticket-item-main small{color:#78847c}
.bulk-ticket-seat{font-size:12px;color:#58675e}
@media(max-width:700px){
  .bulk-ticket-mode-picker{grid-template-columns:1fr}
  .bulk-ticket-item{grid-template-columns:auto 1fr;gap:7px}
  .bulk-ticket-seat,.bulk-ticket-item>.badge{grid-column:2}
}

/* V2.22.4 - Layout objects: stage / door */
.layout-object-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0;padding:10px 12px;border:1px solid #dfe8e2;border-radius:12px;background:#f8fbf9}
.layout-object-toolbar form{margin:0}
.visual-layout-object{position:absolute;z-index:7;display:flex;align-items:center;justify-content:center;border-radius:12px;box-sizing:border-box;user-select:none;touch-action:none;cursor:grab}
.visual-layout-object.stage{background:#2e4a35;color:#fff;border:2px solid #2e4a35}
.visual-layout-object.door{background:#f4eee5;color:#6f451f;border:2px solid #9b6a35;border-radius:6px}
.visual-layout-object strong{font-size:13px;letter-spacing:.04em;text-align:center;pointer-events:none}
.visual-layout-object.dragging{cursor:grabbing;z-index:50;box-shadow:0 8px 20px rgba(0,0,0,.22)}
.layout-object-resize{position:absolute;width:14px;height:14px;right:-7px;bottom:-7px;border-radius:50%;background:#fff;border:2px solid #2e4a35;cursor:nwse-resize}
.layout-object-rotate{position:absolute;width:22px;height:22px;left:50%;top:-31px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;border-radius:50%;background:#fff;color:#2e4a35;border:2px solid #2e4a35;font-size:13px;cursor:grab}
.layout-object-delete{position:absolute;right:-10px;top:-10px;margin:0!important;z-index:3}
.layout-object-delete button{width:22px;height:22px;padding:0;border:0;border-radius:50%;background:#a53a3a;color:#fff;font-weight:900;cursor:pointer}
@media(max-width:700px){.layout-object-toolbar{align-items:flex-start}.visual-layout-object strong{font-size:11px}}

/* V2.22.7 - staff consultation */
.staff-consult-summary{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.staff-consult-summary>span{padding:8px 12px;border-radius:999px;background:#eef3ef;font-size:13px}
.staff-consult-summary .consult-pending{background:#fff3dc;color:#8a5a00}
.staff-consult-summary .consult-done{background:#e6f5ea;color:#1d6a39}
.staff-consult-card{margin-top:14px}
.staff-consult-filter select{min-width:180px}
.staff-consult-list{display:grid;gap:10px}
.staff-consult-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(340px,2fr) minmax(180px,.9fr);gap:12px;align-items:center;padding:12px;border:1px solid #e1e8e3;border-radius:14px;background:#fff}
.staff-consult-row.pending{border-left:5px solid #e5a52d}
.staff-consult-row.consulted{border-left:5px solid #2a8a4c;background:#f9fcfa}
.staff-consult-guest,.staff-consult-status{display:grid;gap:4px}
.staff-consult-guest small,.staff-consult-status small{color:#718078;font-size:12px}
.staff-consult-controls{display:grid;grid-template-columns:1fr 1.2fr 1.2fr;gap:8px}
.staff-consult-controls label{display:grid;gap:4px;font-size:11px;color:#6c786f}
.staff-consult-controls select,.staff-consult-controls input{min-width:0;width:100%}
.staff-consult-status{justify-items:start}
.consult-badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}
.consult-badge.pending{background:#fff0cf;color:#8a5a00}
.consult-badge.done{background:#dff3e4;color:#176638}
@media(max-width:900px){
 .staff-consult-row{grid-template-columns:1fr}
 .staff-consult-controls{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
 .staff-consult-controls{grid-template-columns:1fr}
 .staff-consult-filter{width:100%}.staff-consult-filter select{width:100%}
}

/* V2.22.9 - compact staff admin popups */
.staff-admin-compact{margin-top:14px}
.staff-location-compact-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 9px}
.staff-location-chip-list{display:flex;gap:8px;flex-wrap:wrap}
.staff-location-chip{display:grid;gap:2px;text-align:left;min-width:150px;padding:10px 12px;border:1px solid #dfe7e1;border-radius:12px;background:#f9fbfa;color:#2d4235;cursor:pointer;transition:.18s}
.staff-location-chip:hover{border-color:#74967e;background:#f1f7f3;transform:translateY(-1px)}
.staff-location-chip span{font-weight:800}
.staff-location-chip small{font-size:10px;color:#7b887f}
.staff-ui-modal[hidden]{display:none!important}
.staff-ui-modal{position:fixed;inset:0;z-index:120000;background:rgba(17,28,21,.52);display:flex;align-items:center;justify-content:center;padding:18px}
.staff-ui-dialog{width:min(720px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:18px;padding:18px;box-shadow:0 28px 90px rgba(0,0,0,.32)}
.staff-ui-dialog.compact{width:min(520px,100%)}
.staff-modal-actions{display:flex;justify-content:flex-end;gap:8px}
body.staff-modal-open{overflow:hidden}
@media(max-width:650px){
 .staff-admin-compact .dashboard-head{align-items:stretch}
 .staff-admin-compact .dashboard-head>.btn{width:100%}
 .staff-location-chip{width:100%}
 .staff-modal-actions{flex-direction:column-reverse}
 .staff-modal-actions .btn{width:100%}
}

/* V2.22.10 - mobile compact staff halls and consultation */
.staff-location-mobile-toggle,.staff-consult-mobile-summary{display:none}
.staff-location-count{font-size:12px;color:#718078;font-weight:700}
@media(max-width:700px){
  .staff-position-board{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
  }
  .staff-location-card{
    padding:9px!important;
    margin:0!important;
    min-width:0!important;
    border-radius:12px!important;
  }
  .staff-location-head{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:6px!important;
    margin:0!important;
  }
  .staff-location-head>div{min-width:0}
  .staff-location-head h3{
    margin:0!important;
    font-size:13px!important;
    line-height:1.2!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    max-width:110px!important;
  }
  .staff-location-head .staff-location-count{
    display:block!important;
    font-size:10px!important;
    margin-top:2px!important;
  }
  .staff-location-mobile-toggle{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    border:0!important;
    background:#eef4ef!important;
    color:#355543!important;
    border-radius:8px!important;
    padding:5px 7px!important;
    font-size:10px!important;
    font-weight:800!important;
    flex:0 0 auto!important;
  }
  .staff-location-card .staff-location-list{display:none!important}
  .staff-location-card.mobile-open{
    grid-column:1/-1!important;
  }
  .staff-location-card.mobile-open .staff-location-list{
    display:grid!important;
    gap:6px!important;
    margin-top:8px!important;
  }
  .staff-person-card{
    padding:7px 8px!important;
    gap:6px!important;
  }
  .staff-person-card strong{font-size:12px!important}
  .staff-person-card small{font-size:10px!important}
  .staff-person-card select{
    font-size:11px!important;
    padding:6px 7px!important;
  }

  .staff-consult-list{gap:7px!important}
  .staff-consult-row{
    display:block!important;
    padding:9px 10px!important;
    border-radius:12px!important;
  }
  .staff-consult-mobile-summary{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:8px!important;
  }
  .staff-consult-mobile-main{
    min-width:0!important;
    display:grid!important;
    gap:2px!important;
  }
  .staff-consult-mobile-main strong{
    font-size:13px!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .staff-consult-mobile-main small{
    font-size:10px!important;
    color:#718078!important;
  }
  .staff-consult-mobile-toggle{
    flex:0 0 auto!important;
    border:0!important;
    background:#eef4ef!important;
    color:#355543!important;
    border-radius:8px!important;
    padding:6px 8px!important;
    font-size:10px!important;
    font-weight:800!important;
  }
  .staff-consult-row>.staff-consult-guest,
  .staff-consult-row>.staff-consult-controls,
  .staff-consult-row>.staff-consult-status{
    display:none!important;
  }
  .staff-consult-row.mobile-open>.staff-consult-guest{
    display:grid!important;
    margin-top:9px!important;
  }
  .staff-consult-row.mobile-open>.staff-consult-controls{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:6px!important;
    margin-top:8px!important;
  }
  .staff-consult-row.mobile-open>.staff-consult-status{
    display:grid!important;
    gap:6px!important;
    margin-top:8px!important;
  }
  .staff-consult-guest>strong{display:none!important}
  .staff-consult-guest small{font-size:10px!important}
  .consult-history{display:grid!important;gap:4px!important;margin-top:5px!important}
  .consult-history-item{padding:6px 7px!important;font-size:10px!important}
  .staff-consult-controls label{font-size:10px!important}
  .staff-consult-controls select,.staff-consult-controls input{
    font-size:12px!important;
    padding:7px 8px!important;
  }
  .consult-badge{font-size:10px!important;padding:4px 7px!important}
}
@media(max-width:420px){
  .staff-position-board{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .staff-location-head h3{max-width:92px!important}
}

/* V2.22.11 - mobile: always show employee names in 2-column halls */
@media(max-width:700px){
  .staff-position-board{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    align-items:start!important;
  }
  .staff-location-card .staff-location-list{
    display:grid!important;
    gap:4px!important;
    margin-top:6px!important;
  }
  .staff-location-mobile-toggle{display:none!important}
  .staff-location-card.mobile-open{grid-column:auto!important}
  .staff-person-card{
    display:block!important;
    padding:5px 6px!important;
    border-radius:8px!important;
  }
  .staff-person-card>div{
    min-width:0!important;
  }
  .staff-person-card strong{
    display:block!important;
    font-size:11px!important;
    line-height:1.25!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
  .staff-person-card small{
    display:block!important;
    font-size:9px!important;
    line-height:1.2!important;
    margin-top:1px!important;
  }
  .staff-person-card .staff-location-select{
    margin-top:4px!important;
    width:100%!important;
    font-size:10px!important;
    padding:4px 5px!important;
    min-height:28px!important;
  }
  .staff-location-empty{
    font-size:10px!important;
    padding:5px!important;
  }
}

/* V2.22.12 - delete staff hall */
.staff-location-delete-form{margin-top:14px;padding-top:12px;border-top:1px solid #ecefec}
.staff-danger-btn{background:#fff!important;color:#a32d2d!important;border:1px solid #dca9a9!important}
.staff-danger-btn:hover{background:#fff1f1!important;border-color:#c96666!important}
@media(max-width:650px){.staff-location-delete-form .staff-danger-btn{width:100%}}

/* V2.22.13 checklist phases / departments / partners */
.task-phase-section{margin-bottom:14px}.task-phase-section.phase-before{border-top:4px solid #718a78}.task-phase-section.phase-during{border-top:4px solid #c18b2d}.task-phase-section.phase-after{border-top:4px solid #657a9a}
.task-tags{display:flex;gap:6px;flex-wrap:wrap;margin:5px 0}.task-dept-tag,.task-partner-tag{font-size:10px;font-weight:800;padding:4px 7px;border-radius:999px;background:#edf3ee;color:#355543}.task-partner-tag{background:#fff0d6;color:#815300}
@media(max-width:700px){.task-phase-section{padding:10px!important}.task-item{padding:9px!important}.task-title-row strong{font-size:12px!important}}

/* V2.22.14 - separate Internal / Partner checklist */
.task-type-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px}
.task-type-group{border:1px solid #e3e9e4;border-radius:14px;padding:11px;background:#fbfcfb;min-width:0}
.task-type-partner{background:#fffdf8;border-color:#eadfc9}
.task-type-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:2px 2px 9px;border-bottom:1px solid #e8ece9;margin-bottom:8px}
.task-type-head>div{display:grid;gap:2px;min-width:0}
.task-type-head strong{font-size:14px}
.task-type-head small{font-size:10px;color:#7b877f}
.task-type-head>span{min-width:25px;height:25px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#e9f0eb;font-size:11px;font-weight:800}
.task-type-partner .task-type-head>span{background:#f7ead1;color:#77541b}
.task-type-empty{padding:13px 8px;text-align:center;color:#8a948d;font-size:11px}
.task-partner-name{font-size:10px;font-weight:800;padding:4px 7px;border-radius:999px;background:#fff0d6;color:#815300}
@media(max-width:800px){
 .task-type-columns{grid-template-columns:1fr!important;gap:9px!important}
 .task-type-group{padding:8px!important}
 .task-type-head{padding-bottom:6px!important;margin-bottom:6px!important}
 .task-type-head strong{font-size:12px!important}
 .task-type-head small{font-size:9px!important}
}

/* V2.22.15 - guest search on staff positions */
.staff-consult-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.staff-guest-search{position:relative;display:flex;align-items:center;min-width:260px}
.staff-guest-search>span{position:absolute;left:10px;font-size:18px;color:#718078;pointer-events:none}
.staff-guest-search input{width:100%;padding-left:32px!important;padding-right:30px!important}
.staff-guest-search button{position:absolute;right:5px;width:25px;height:25px;border:0;border-radius:999px;background:#edf2ee;color:#52645a;font-size:18px;line-height:1;cursor:pointer}
.staff-guest-search-info{margin:0 0 9px;padding:7px 10px;border-radius:9px;background:#f2f6f3;color:#52645a;font-size:11px;font-weight:700}
@media(max-width:700px){
 .staff-consult-card .dashboard-head{display:block!important}
 .staff-consult-toolbar{display:grid!important;grid-template-columns:1fr auto!important;gap:6px!important;margin-top:8px!important}
 .staff-guest-search{min-width:0!important;width:100%!important}
 .staff-guest-search input{height:36px!important;font-size:12px!important}
 .staff-consult-filter select{height:36px!important;max-width:125px!important;font-size:11px!important}
 .staff-guest-search-info{font-size:10px!important;padding:5px 8px!important;margin-bottom:6px!important}
}

/* V2.22.16 - collapsible internal / partner checklist */
.task-type-head-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.task-type-head-actions>span{min-width:25px;height:25px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#e9f0eb;font-size:11px;font-weight:800}
.task-type-partner .task-type-head-actions>span{background:#f7ead1;color:#77541b}
.task-collapse-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #dce5de;border-radius:8px;background:#fff;color:#486052;font-size:17px;font-weight:800;cursor:pointer;padding:0;line-height:1}
.task-collapse-btn:hover{background:#eef4ef}
.task-type-body{display:block}
.task-type-group.task-group-collapsed .task-type-body{display:none}
.task-type-group.task-group-collapsed .task-type-head{border-bottom:0;margin-bottom:0;padding-bottom:2px}
.task-type-group.task-group-collapsed{padding-bottom:9px}
@media(max-width:800px){
 .task-collapse-btn{width:26px!important;height:26px!important;font-size:15px!important}
 .task-type-group.task-group-collapsed{padding:7px 8px!important}
}

/* V2.22.17 - checklist search */
.task-search-card{padding:10px 12px!important;margin-bottom:12px}
.task-search-box{position:relative;display:flex;align-items:center}
.task-search-icon{position:absolute;left:11px;color:#718078;font-size:19px;pointer-events:none}
.task-search-box input{width:100%;padding-left:34px!important;padding-right:34px!important;height:40px}
.task-search-clear{position:absolute;right:6px;width:27px;height:27px;border:0;border-radius:999px;background:#edf2ee;color:#52645a;font-size:18px;cursor:pointer}
.task-search-info{padding:7px 3px 0;font-size:11px;font-weight:700;color:#52645a}
.task-search-no-result,.task-item[hidden]{display:none!important}
@media(max-width:700px){.task-search-card{padding:7px!important;margin-bottom:8px!important}.task-search-box input{height:36px!important;font-size:12px!important}.task-search-info{font-size:10px!important;padding-top:5px!important}}

/* V2.22.18 - search placed directly beside checklist controls */
.task-search-inline{position:relative;display:flex;align-items:center;width:230px}
.task-search-inline .task-search-icon{left:9px}
.task-search-inline input{width:100%;height:36px;padding:6px 31px 6px 30px!important;font-size:12px;border-radius:9px}
.task-search-inline .task-search-clear{right:5px;width:24px;height:24px;font-size:16px}
.task-search-info-inline{margin:-2px 0 8px 0;padding:5px 8px;background:#f2f6f3;border-radius:8px}
@media(max-width:700px){
 .task-toolbar .actions{display:flex!important;flex-wrap:wrap!important;gap:6px!important}
 .task-search-inline{order:-1;width:100%!important}
 .task-search-inline input{height:36px!important}
}

/* V2.22.19 - search directly below progress/department summary and above checklist */
.task-search-above-list{margin:0 0 10px 0}
.task-search-above-list .task-search-box{max-width:560px}
.task-search-above-list .task-search-box input{height:38px;background:#fff;border-radius:10px}
.task-search-above-list .task-search-info{padding:5px 4px 0}
@media(max-width:700px){
 .task-search-above-list{margin-bottom:8px!important}
 .task-search-above-list .task-search-box{max-width:none!important;width:100%!important}
 .task-search-above-list .task-search-box input{height:36px!important;font-size:12px!important}
}

/* V2.22.20 - template CSV import */
.template-import-note{font-size:11px;line-height:1.5;padding:9px 10px;border-radius:9px;background:#f3f6f4;color:#59675e;word-break:break-word}
@media(max-width:650px){#openTemplateImport{width:100%}}

/* V2.22.21 - restore checklist photo button + compact upload */
.task-photo-upload{display:grid;grid-template-columns:auto minmax(120px,1fr) auto;gap:6px;align-items:center;margin-top:8px;padding:7px;border-radius:10px;background:#f7faf8;border:1px dashed #ccd9cf}
.task-photo-file{display:inline-flex!important;align-items:center!important;justify-content:center;cursor:pointer;padding:7px 9px!important;border-radius:8px;background:#e9f1eb;color:#355543;font-size:11px!important;font-weight:800!important;white-space:nowrap}
.task-photo-file input{display:none!important}
.task-photo-upload>input{height:32px!important;font-size:11px!important;min-width:0}
.task-photo-grid{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
.task-photo-thumb{position:relative;width:74px;margin:0!important}
.task-photo-thumb img{display:block;width:74px;height:58px;object-fit:cover;border-radius:8px;border:1px solid #dce4de}
.task-photo-thumb figcaption{font-size:9px;line-height:1.2;margin-top:2px;color:#6f7c73}
.task-photo-delete{position:absolute;right:-5px;top:-5px;width:20px;height:20px;border:0;border-radius:50%;background:#a43b3b;color:#fff;font-weight:900;cursor:pointer;padding:0}
@media(max-width:700px){
 .task-photo-upload{grid-template-columns:1fr auto!important;padding:6px!important}
 .task-photo-upload>input{grid-column:1/-1!important;order:2}
 .task-photo-file{font-size:10px!important;padding:6px 8px!important}
 .task-photo-upload .btn{font-size:10px!important;padding:6px 8px!important}
 .task-photo-thumb,.task-photo-thumb img{width:62px!important}
 .task-photo-thumb img{height:50px!important}
}

/* V2.22.22 - save current template + CSV export */
.task-template-row .actions{flex-wrap:wrap}
@media(max-width:650px){.task-template-row .actions .btn{min-height:30px}}

/* V2.22.25 - instant photo preview + AJAX upload */
.task-photo-live-preview{grid-column:1/-1;display:flex;align-items:center;gap:8px;padding:5px 7px;border-radius:8px;background:#eef5f0;font-size:10px;font-weight:700;color:#52645a}
.task-photo-live-preview[hidden]{display:none!important}
.task-photo-live-preview img{width:54px;height:44px;object-fit:cover;border-radius:7px}
.task-photo-toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:99999;max-width:90vw;padding:9px 13px;border-radius:10px;color:#fff;font-size:12px;font-weight:800;box-shadow:0 5px 20px #0003}
.task-photo-toast.ok{background:#2e6545}.task-photo-toast.err{background:#a33c3c}
.task-photo-upload button[disabled]{opacity:.6;pointer-events:none}

/* V2.22.26 */
.task-photo-live-preview span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
\n/* V2.22.28 - compact department checklist progress */\n.task-dept-grid{grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:6px;margin-bottom:10px}\n.task-dept-card{padding:7px 9px!important;border-radius:9px!important;min-width:0}\n.task-dept-head{align-items:center;gap:6px;font-size:11px;line-height:1.15}\n.task-dept-head strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.task-dept-head span{flex:0 0 auto;font-size:10px;color:#69776e;white-space:nowrap}\n.task-dept-head span b{color:#2e4a35;font-size:10px;margin-left:3px}\n.task-dept-card .task-progress.small{height:4px;margin:5px 0 0}\n@media(max-width:700px){\n .task-dept-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important;margin-bottom:8px!important}\n .task-dept-card{padding:6px 7px!important}\n .task-dept-head{font-size:10px!important;gap:4px!important}\n .task-dept-head span,.task-dept-head span b{font-size:9px!important}\n .task-dept-card .task-progress.small{height:3px!important;margin-top:4px!important}\n}\n@media(max-width:360px){.task-dept-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}\n
/* V2.22.29 configurable brand */
.brand-config-preview{margin-top:8px;padding:9px 12px;border-radius:9px;background:#f2f6f3;color:#233b2d;font-size:16px;font-weight:800}.brand-config-preview span{font-size:11px;font-weight:600;opacity:.72}

/* V2.22.30 - RBAC roles & permissions */
.rbac-layout{grid-template-columns:minmax(320px,.8fr) minmax(480px,1.2fr)}
.rbac-role-list{display:grid;gap:7px}.rbac-role-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border:1px solid #e1e8e3;border-radius:10px}.rbac-role-row>div:first-child{display:grid;gap:2px}.rbac-role-row small{font-size:10px;color:#738078}
.rbac-permissions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.rbac-permissions section{border:1px solid #e2e9e4;border-radius:11px;padding:9px}.rbac-group-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:6px}.rbac-permissions section>label{display:flex;gap:6px;align-items:flex-start;padding:5px 0;font-size:12px}.link-btn{border:0;background:none;color:#356348;font-size:10px;cursor:pointer}
@media(max-width:800px){.rbac-layout{grid-template-columns:1fr!important}.rbac-permissions{grid-template-columns:1fr!important}}

/* V2.22.31 - seeded editable legacy roles */
.rbac-system-badge{display:inline-flex;margin-left:5px;padding:2px 5px;border-radius:999px;background:#e7f0e9;color:#315c3e;font-size:8px;font-weight:800;vertical-align:middle}
.rbac-system-note{padding:8px 10px;border-radius:9px;background:#f3f7f4;color:#52645a;font-size:11px;line-height:1.45}

/* V2.22.34 standalone chair */
.visual-layout-object.chair{min-width:22px!important;min-height:22px!important;border:2px solid #64766b;border-radius:9px;background:#f7faf8;display:flex;align-items:center;justify-content:center;padding:0;box-sizing:border-box}
.visual-layout-object.chair .standalone-chair-icon{font-size:20px;line-height:1;transform:rotate(180deg);font-family:Arial,sans-serif;color:#43574a;pointer-events:none}
.visual-layout-object.chair .layout-object-resize{width:8px;height:8px}.visual-layout-object.chair .layout-object-delete{top:-13px;right:-13px}.visual-layout-object.chair .layout-object-rotate{bottom:-17px}

/* V2.22.35 - clean PDF map + guest list */
@media print{
 body.print-map-with-guests button,
 body.print-map-with-guests form,
 body.print-map-with-guests .table-edit-btn,
 body.print-map-with-guests .layout-object-resize,
 body.print-map-with-guests .layout-object-rotate,
 body.print-map-with-guests .layout-object-delete,
 body.print-map-with-guests .rect-rotate-handle,
 body.print-map-with-guests .rect-resize-handle,
 body.print-map-with-guests .round-resize-handle{display:none!important}
}

/* V2.22.36 - show stage / door / standalone chairs on QR Check-in map */
.checkin-layout-object{
  position:absolute;
  z-index:5;
  box-sizing:border-box;
  transform-origin:center center;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  overflow:hidden;
}
.checkin-layout-object.stage{
  border:2px solid #2e4a35;
  border-radius:10px;
  background:#2e4a35;
  color:#fff;
}
.checkin-layout-object.door{
  border:2px solid #9b6a35;
  border-radius:8px;
  background:#f4eee5;
  color:#6f451f;
}
.checkin-layout-object.stage strong,
.checkin-layout-object.door strong{
  display:block;
  max-width:94%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:12px;
  font-weight:900;
  text-align:center;
}
.checkin-layout-object.chair{
  min-width:22px;
  min-height:22px;
  border:2px solid #64766b;
  border-radius:9px;
  background:#f7faf8;
  color:#43574a;
}
.checkin-standalone-chair{
  font:700 20px/1 Arial,sans-serif;
  transform:rotate(180deg);
}
.checkin-seating-node{z-index:10;transform-origin:center center}

/* V2.22.38 - staff identity colors */
.staff-person-card{border-left:4px solid var(--staff-color,#64766b)!important}
.staff-person-identity{display:flex;align-items:center;gap:8px;min-width:0}
.staff-person-identity>div{min-width:0}
.staff-color-dot{width:11px;height:11px;border-radius:50%;background:var(--staff-color,#64766b);box-shadow:0 0 0 3px color-mix(in srgb,var(--staff-color,#64766b) 14%,transparent);flex:0 0 auto}
.consult-staff-color{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:1px}
@media(max-width:700px){.staff-person-card{border-left-width:3px!important}.staff-color-dot{width:9px;height:9px}}

/* V2.22.39 manual staff colors */
.staff-card-controls{display:flex;align-items:center;gap:7px;min-width:0}.staff-color-picker{display:flex;align-items:center;gap:5px;padding:3px 6px;border:1px solid #dce5df;border-radius:8px;background:#fff;font-size:9px;color:#6b776f;white-space:nowrap}.staff-color-input{width:25px;height:22px;padding:0;border:0;background:transparent;cursor:pointer}.staff-color-input::-webkit-color-swatch-wrapper{padding:1px}.staff-color-input::-webkit-color-swatch{border:0;border-radius:5px}@media(max-width:700px){.staff-card-controls{gap:4px}.staff-color-picker span{display:none}.staff-color-input{width:23px;height:21px}}

/* V2.22.40 - staff color managed in User accounts by Admin */
.user-staff-color-dot{display:inline-block;width:18px;height:18px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #ccd6cf;vertical-align:middle}
.user-staff-color-field{display:flex;align-items:center;gap:9px;min-height:42px;padding:5px 8px;border:1px solid #d7e0da;border-radius:9px;background:#fff}
.user-staff-color-field input[type=color]{width:42px;height:30px;padding:0;border:0;background:transparent;cursor:pointer}
.user-staff-color-field span{font:700 12px ui-monospace,SFMono-Regular,Menlo,monospace;color:#526159}
.user-staff-color-readonly{display:flex;align-items:center;gap:8px;min-height:42px;padding:7px 9px;border:1px solid #e1e7e3;border-radius:9px;background:#f7f9f8;font-size:11px;color:#68756d}
.user-staff-color-readonly span{width:18px;height:18px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #ccd6cf}

/* V2.22.42 - one-click consultation complete for all halls */
.consult-finish-controls{grid-template-columns:minmax(180px,1fr) minmax(180px,1fr)}
.consult-auto-sales{display:flex;align-items:center;gap:9px;min-height:42px;padding:7px 10px;border:1px solid #dbe5de;border-radius:9px;background:#f4f8f5}
.consult-auto-sales .staff-color-dot{background:var(--staff-color,#64766b)}
.consult-auto-sales div{display:grid;gap:1px}.consult-auto-sales small{font-size:9px;color:#758078}.consult-auto-sales strong{font-size:12px}
@media(max-width:700px){.consult-finish-controls{grid-template-columns:1fr!important}.consult-add{min-height:38px}}

/* V2.22.43 - single hall + all halls consultation buttons */
.consult-finish-controls{grid-template-columns:minmax(150px,.8fr) minmax(180px,1fr) minmax(180px,1.1fr)}
.consult-notes-label{min-width:0}
.consult-action-buttons{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.consult-action-buttons .btn{white-space:nowrap}
@media(max-width:700px){
 .consult-finish-controls{grid-template-columns:1fr!important}
 .consult-action-buttons{display:grid;grid-template-columns:1fr 1fr;width:100%}
 .consult-action-buttons .btn{width:100%;min-height:38px}
}
\n/* V2.22.44 - previous Sales advisor on guest & check-in */
.guest-sales-sub{display:flex;align-items:center;gap:5px;margin-top:3px;font-size:10px;color:#58675d}
.guest-sales-sub i,.guest-search-sales i,.checkin-pre-sales-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.guest-search-sales{display:flex;align-items:center;gap:5px;margin-top:4px;font-size:11px;color:#4e6256}
.checkin-pre-sales{display:flex;align-items:center;justify-content:center;gap:6px;margin:10px auto 4px;padding:8px 11px;width:fit-content;max-width:100%;border-radius:10px;background:#eef5f0;border:1px solid #cfddd3;color:#294a36;font-size:15px}
.checkin-pre-sales b{font-weight:800}
@media(max-width:700px){.checkin-pre-sales{font-size:13px;padding:7px 9px}.guest-sales-sub{font-size:9px}}

/* V2.22.51 - add hall/location on Staff Positions */
.staff-location-compact-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}
.staff-location-compact-head>div{display:flex;align-items:center;gap:8px;min-width:0}
.staff-location-compact-head .btn{white-space:nowrap}
@media(max-width:700px){
 .staff-location-compact-head{align-items:stretch;flex-direction:column}
 .staff-location-compact-head>div{justify-content:space-between}
 .staff-location-compact-head .btn{width:100%}
}

/* V2.22.55 - Staff Hall & Unassigned Fix */
.staff-location-note{margin:7px 0 10px;font-size:12px;line-height:1.45}

/* V2.23.0 Service Staff */
.service-staff-person{display:flex;align-items:center;gap:10px}.service-staff-person img{width:44px;height:44px;object-fit:cover;border-radius:50%}.service-doc-preview{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.service-doc-preview a{display:grid;gap:4px;text-decoration:none}.service-doc-preview img{width:105px;height:75px;object-fit:cover;border-radius:9px;border:1px solid var(--line)}@media(max-width:760px){.service-doc-preview img{width:90px;height:65px}}

/* V2.23.2 - Smart Checkout & Admin Manual Time */
.service-manual-checkout{display:flex;align-items:center;gap:5px;white-space:nowrap;font-size:9px;color:#68766d}
.service-manual-checkout input{width:156px;min-height:34px;padding:5px 6px;font-size:11px}
@media(max-width:760px){
  .service-manual-checkout{width:100%;display:grid;gap:3px}
  .service-manual-checkout input{width:100%;min-height:40px}
}

/* V2.23.3 checkout manual time popup */
.service-checkout-modal[hidden]{display:none!important}
.service-checkout-modal{position:fixed;inset:0;z-index:2147483000;background:rgba(12,22,15,.52);display:flex;align-items:center;justify-content:center;padding:16px}
.service-checkout-dialog{width:min(430px,96vw);background:#fff;border-radius:18px;padding:18px;box-shadow:0 24px 70px rgba(0,0,0,.28)}
.service-checkout-dialog input[type=datetime-local]{width:100%;min-height:48px;font-size:16px;padding:9px 10px}

/* V2.23.4 - Smart Check-in + Admin Backdate */
.service-admin-checkin-btn{white-space:nowrap}

/* V2.23.3 - cảnh báo CCCD trùng nhân viên phục vụ */
.service-cccd-warning{margin-top:7px;padding:9px 10px;border:1px solid #e4b2aa;border-radius:10px;background:#fff4f2;font-size:12px;line-height:1.45;color:#7b2f25}
.service-cccd-warning strong{font-size:13px}.service-cccd-warning a{font-weight:800}

/* V2.23.4 Service Staff Delete / Deactivate */
.service-staff-danger-zone{margin-top:18px;padding-top:16px;border-top:1px solid #e2e6e3}.service-staff-danger-zone h4{margin:0 0 10px}.service-staff-danger-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.service-delete-btn,.service-delete-confirm{border-color:#b42318!important;color:#b42318!important}.service-delete-confirm{background:#b42318!important;color:#fff!important}.service-delete-modal[hidden]{display:none!important}.service-delete-modal{position:fixed;inset:0;z-index:2147483647;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:18px}.service-delete-dialog{position:relative;background:#fff;border-radius:18px;width:min(430px,94vw);padding:22px;box-shadow:0 24px 70px rgba(0,0,0,.28)}.service-delete-x{position:absolute;right:10px;top:10px;width:34px;height:34px;border:0;border-radius:50%;font-size:22px}.service-delete-dialog h3{margin-top:0}

/* V2.23.5 - salary from employee profile */
.service-salary-readonly{display:grid;gap:4px;padding:10px 12px;border:1px solid #dce5df;border-radius:10px;background:#f7f9f8}.service-salary-readonly span{font-size:16px;font-weight:900;color:#2e4a35}.service-salary-readonly small{color:#6c786f}.service-assignment-salary-info{padding:10px 12px;border:1px solid #d9e4dc;border-radius:10px;background:#f3f7f4;font-size:12px;line-height:1.5}.service-assignment-salary-info strong{color:#2e4a35}
