
:root{
  --bg:#f7f8fc;--panel:#fff;--ink:#17203b;--muted:#69728a;--line:#e1e5ee;
  --blue:#172aa6;--cyan:#4159d8;--green:#172aa6;--amber:#ff7a18;--red:#ff2a12;
  --shadow:0 10px 28px rgba(28,45,78,.08);--radius:16px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
.shell{min-height:100vh}
#dashboardView,#tableView{contain:layout style}
.panel{}
.tablewrap{overscroll-behavior:contain}

.topbar{position:sticky;top:0;z-index:30;background:#fff;color:var(--ink);border-bottom:1px solid #e4e7ee;box-shadow:0 4px 18px rgba(27,38,88,.06)}
.toprow{max-width:1800px;margin:auto;padding:7px 10px;display:flex;align-items:center;gap:6px;position:relative}
.toprow:after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;background:linear-gradient(90deg,#ff2a12 0 32%,#ff7a18 32% 45%,#172aa6 45% 100%);opacity:.9}
.brand{display:flex;align-items:center;gap:6px;min-width:220px;max-width:235px;flex:0 0 auto}
.mark{width:88px;height:40px;border-radius:8px;background:#fff center/contain no-repeat;border:1px solid #eef0f5;flex:none}
.brand h1{font-size:14px;margin:0;color:#172aa6;line-height:1.05}.brand small{color:#72798a;font-size:8px;line-height:1.05;display:block;white-space:nowrap}
.nav{display:flex;gap:0;overflow:hidden;flex:1;min-width:0;padding-bottom:1px;align-items:center;justify-content:flex-start}
.nav button{white-space:nowrap;border:0;border-radius:7px;padding:5px 4px;background:transparent;color:#59627b;font-weight:750;font-size:8.4px;line-height:1.05;letter-spacing:-.02em;flex:0 1 auto;min-width:0}
.nav button.active,.nav button:hover{background:#fff0ed;color:#e82611}
.status{font-size:12px;color:#737b8d;white-space:nowrap}
.main{max-width:1800px;margin:auto;padding:18px}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.search{flex:1;min-width:280px;position:relative}
.search input{width:100%;padding:11px 13px 11px 38px;border:1px solid var(--line);border-radius:12px;background:#fff;outline:none}
.search:before{content:"⌕";position:absolute;left:13px;top:7px;font-size:22px;color:#78849a}
.control{padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#fff;color:#24334c}
.btn{border:0;border-radius:11px;padding:10px 14px;background:#e9eef6;color:#24334c;font-weight:700}
.btn.primary{background:linear-gradient(135deg,#ff2a12,#ff5b22);color:#fff;box-shadow:0 5px 14px rgba(255,42,18,.18)}
.btn.good{background:#172aa6;color:#fff}
.btn.danger{background:#fff0ed;color:#c92514}
.cards{display:grid;grid-template-columns:repeat(6,minmax(145px,1fr));gap:12px;margin-bottom:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(#ff2a12,#172aa6)}
.card .k{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.card .v{font-size:24px;font-weight:850;margin-top:5px;letter-spacing:-.03em}
.card .s{font-size:12px;color:var(--muted);margin-top:4px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.panelhead{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--line)}
.panelhead h2{font-size:15px;margin:0}.panelhead .meta{font-size:12px;color:var(--muted)}
.tablewrap{overflow:auto;max-height:calc(100dvh - 220px);min-height:180px}
table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:12px}
th,td{border-bottom:1px solid #edf1f6;border-right:1px solid #edf1f6;padding:8px 10px;vertical-align:top;max-width:300px;white-space:normal;word-break:break-word}
th{position:sticky;top:0;background:#f2f4fb;color:#263377;z-index:4;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;min-width:110px;border-top:2px solid #172aa6}
th:first-child,td:first-child{position:sticky;left:0;z-index:3;background:#fff;min-width:155px}
th:first-child{z-index:7;background:#eceffc}
tr:hover td{background:#f8fbff}tr:hover td:first-child{background:#f8fbff}
td.amount{text-align:right;font-variant-numeric:tabular-nums}
.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 14px;border-top:1px solid var(--line);background:#fff;position:sticky;bottom:0;z-index:18;box-shadow:0 -4px 12px rgba(20,35,75,.05)}
.pager .pages,.topPager{display:flex;gap:6px;align-items:center}
.pager button,.topPager button{border:1px solid #cfd6e5;background:#fff;border-radius:8px;padding:7px 11px;font-weight:800;color:#172aa6}
.pager button:not(:disabled):hover,.topPager button:not(:disabled):hover{background:#eef1ff;border-color:#172aa6}
.pager button:disabled,.topPager button:disabled{opacity:.35;cursor:not-allowed}
.topPager{white-space:nowrap}
.topPager .pageNow{font-size:11px;font-weight:850;color:#59627b;min-width:68px;text-align:center}
@media(max-width:650px){.topPager .pageNow{display:none}.pager{padding:8px 10px}.pager button,.topPager button{padding:7px 9px}}
.badge{display:inline-flex;padding:3px 7px;border-radius:999px;font-size:11px;font-weight:800}
.badge.final{background:#daf5e7;color:#0e6a43}.badge.pending{background:#fff1cf;color:#8c5b00}.badge.overdue{background:#ffe3e6;color:#9f2535}
.rowlink{color:#135fc5;text-decoration:none;font-weight:700}.rowlink:hover{text-decoration:underline}
.iconbtn{border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 8px}
.split{display:grid;grid-template-columns:1.3fr .7fr;gap:14px}
.list{padding:8px 14px}.listitem{display:grid;grid-template-columns:115px 1fr auto;gap:10px;padding:10px 0;border-bottom:1px solid #edf1f6;align-items:center}.listitem:last-child{border-bottom:0}
.listitem .date{font-weight:800}.listitem .desc{min-width:0}.listitem .desc b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listitem .desc span{color:var(--muted);font-size:12px}
.managerbar{display:grid;grid-template-columns:110px 1fr 70px;gap:8px;align-items:center;margin:9px 0}.bar{height:8px;border-radius:99px;background:#edf1f6;overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,#ff2a12,#ff7a18,#172aa6)}
.empty{padding:36px;text-align:center;color:var(--muted)}
.modal{position:fixed;inset:0;z-index:60;background:rgba(13,24,41,.48);display:none;align-items:flex-start;justify-content:center;padding:28px 12px;overflow:auto}
.modal.show{display:flex}.dialog{width:min(1080px,100%);background:#fff;border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.22);overflow:hidden}
.dialoghead{position:sticky;top:0;z-index:2;background:#fff;padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}
.dialoghead h3{margin:0;font-size:16px}.formgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:16px}
.field label{display:block;font-size:11px;font-weight:800;color:#5f6c82;margin:0 0 5px;text-transform:uppercase}.field input,.field textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 10px;outline:none;background:#fff}.field textarea{min-height:72px;resize:vertical}.field input:focus,.field textarea:focus{border-color:#78aaf0;box-shadow:0 0 0 3px #e8f1ff}
.dialogfoot{padding:12px 16px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:#fafcff}
.toast{position:fixed;right:20px;bottom:20px;z-index:80;background:#17243a;color:#fff;padding:10px 13px;border-radius:10px;box-shadow:var(--shadow);display:none}.toast.show{display:block}

.small{font-size:12px;color:var(--muted)}
.dashsection{margin-top:14px}
.pivotcontrols{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.pivotcontrols button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 10px;font-weight:750;color:#42506a}
.pivotcontrols button.active{background:#172aa6;color:#fff;border-color:#172aa6}
.pivotwrap{overflow:auto;max-height:440px}
.pivottable{font-size:11.5px;min-width:760px;width:100%}
.pivottable th,.pivottable td{padding:7px 9px;white-space:nowrap;max-width:none}
.pivottable th:first-child,.pivottable td:first-child{min-width:150px}
.pivottable td.num{text-align:right;font-variant-numeric:tabular-nums}
.pivottable tr.totalrow td{font-weight:850;background:#f3f7fc}

/* V120.11 · screenshot-friendly month-wise pivot controls retained */
.monthpivot-controls{display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.monthpivot-controls button{border:1px solid #dce1ea;background:#fff;color:#5d667d;border-radius:8px;padding:5px 8px;font-size:10px;font-weight:850;line-height:1.1;white-space:nowrap}
.monthpivot-controls button:hover{background:#f4f6ff;color:#172aa6}
.monthpivot-controls button.active{background:#172aa6;color:#fff;border-color:#172aa6}
.monthpivot-wrap.monthpivot-compact{overflow-x:hidden}
.monthpivot-wrap.monthpivot-compact .pivottable{font-size:9.5px;min-width:0;width:100%;table-layout:fixed}
.monthpivot-wrap.monthpivot-compact .pivottable th,.monthpivot-wrap.monthpivot-compact .pivottable td{padding:4px 3px;line-height:1.06;overflow:hidden;text-overflow:ellipsis}
.monthpivot-wrap.monthpivot-compact .pivottable th:first-child,.monthpivot-wrap.monthpivot-compact .pivottable td:first-child{min-width:105px;width:17%}
.monthpivot-wrap.monthpivot-compact .pivottable .dashcellbtn{font-size:9px;padding:0 1px;letter-spacing:-.03em}
.monthpivot-wrap.monthpivot-current{overflow-x:hidden;max-height:none}
.monthpivot-wrap.monthpivot-current .pivottable{min-width:0;width:100%;font-size:13px;table-layout:fixed}
.monthpivot-wrap.monthpivot-current .pivottable th,.monthpivot-wrap.monthpivot-current .pivottable td{padding:9px 10px}
.monthpivot-wrap.monthpivot-current .pivottable th:first-child,.monthpivot-wrap.monthpivot-current .pivottable td:first-child{width:48%;min-width:0}
@media (max-width:800px){.monthpivot-controls button{font-size:9px;padding:5px 6px}.monthpivot-wrap.monthpivot-compact .pivottable{font-size:8.5px}.monthpivot-wrap.monthpivot-compact .pivottable .dashcellbtn{font-size:8px}}
.pivottable th.sortable{cursor:pointer;user-select:none;transition:background .15s ease,color .15s ease}
.pivottable th.sortable:hover{background:#e7eafa;color:#172aa6}
.pivottable th.sortable .sortmark{display:inline-block;margin-left:5px;font-size:10px;color:#8a92aa;min-width:10px}
.pivottable th.sortable.sorted{background:#e9ecff;color:#172aa6}
.pivottable th.sortable.sorted .sortmark{color:#ff2a12;font-weight:900}
.summarychips{display:flex;gap:8px;flex-wrap:wrap;padding:12px 14px;border-bottom:1px solid var(--line)}
.summarychip{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:6px 10px;background:#fff;font-size:12px}
.summarychip b{font-size:13px}
.liveflag{display:inline-flex;align-items:center;gap:5px;margin-left:7px;padding:2px 7px;border-radius:999px;background:#fff0ed;color:#d72815;font-size:10px;font-weight:900;letter-spacing:.04em}
.liveflag:before{content:"";width:6px;height:6px;border-radius:50%;background:#ff2a12}
.panelactions{display:flex;gap:7px;flex-wrap:wrap}
.linkbtn{border:0;background:transparent;color:#172aa6;font-weight:800;padding:3px 0}
.newrow td{background:#fffbea!important;border-top:2px solid #e6b83d;border-bottom:2px solid #e6b83d;padding:5px}
.newrow td:first-child{background:#fff4c9!important}
.cellinput{width:100%;min-width:125px;border:1px solid #cbd6e6;border-radius:7px;padding:7px 8px;background:#fff;outline:none;font-size:12px}
.cellinput:focus{border-color:#377bd1;box-shadow:0 0 0 2px #dfeeff;background:#fff}
.cellinput[readonly]{background:#edf3f9;color:#43516a;font-weight:750}
.newrow .actions{white-space:nowrap;min-width:145px}
.newhint{font-size:11px;color:#876000;font-weight:750;padding-left:4px}

.auditcell{min-width:245px;max-width:360px}
.auditdetails{font-size:11px}
.auditdetails summary{cursor:pointer;color:#172aa6;font-weight:800;white-space:nowrap}
.auditdetails pre{margin:7px 0 0;white-space:pre-wrap;word-break:break-word;font:11px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace;color:#4d566b;background:#f7f8fc;border:1px solid #e4e7ef;border-radius:8px;padding:8px;max-height:240px;overflow:auto}
.auditreadonly{background:#f6f7fa!important;color:#59627b!important}
.smartac-menu{
  position:fixed;z-index:10050;display:none;background:#fff;border:1px solid #d9deea;
  border-radius:11px;box-shadow:0 14px 38px rgba(25,37,78,.18);
  max-height:300px;overflow:auto;min-width:230px;max-width:min(620px,calc(100vw - 20px));
}
.smartac-menu.show{display:block}
.smartac-item{padding:9px 11px;border-bottom:1px solid #eef1f6;cursor:pointer;color:#27324b;font-size:12px;line-height:1.35}
.smartac-item:last-child{border-bottom:0}
.smartac-item:hover,.smartac-item.active{background:#eef1ff;color:#172aa6}
.smartac-item b{font-weight:850}
.smartac-item small{display:block;color:#858da0;margin-top:2px}
.smartac-help{padding:7px 10px;background:#fafbfe;border-top:1px solid #eef1f6;color:#7a8398;font-size:10px;position:sticky;bottom:0}
.cellinput.smartac-open,.field input.smartac-open,.field textarea.smartac-open{border-color:#172aa6!important;box-shadow:0 0 0 3px rgba(23,42,166,.10)!important}
#inlineNewBookingRow .cellinput:focus{outline:none;border-color:#ff3a1d!important;box-shadow:0 0 0 3px rgba(255,58,29,.10)!important;background:#fffdfc}
#inlineNewBookingRow td:has(.cellinput:focus){background:#fff8f6!important}
.filterrow th{top:32px;background:#fbfcff;border-top:0;padding:5px 6px;z-index:5}
.filterrow th:first-child{background:#f6f7fd;z-index:8}
.colfilter{width:100%;min-width:90px;border:1px solid #dce1ec;border-radius:7px;background:#fff;padding:6px 7px;font-size:10.5px;color:#2f3952;outline:none;text-transform:none;letter-spacing:0}
.colfilter:focus{border-color:#172aa6;box-shadow:0 0 0 2px rgba(23,42,166,.09)}
.colfilter.active{border-color:#ff5a2b;background:#fff8f5}
.clearfilters{white-space:nowrap;border:1px solid #f2c2b8;background:#fff5f2;color:#c92c16;border-radius:8px;padding:6px 8px;font-size:10px;font-weight:800}
.filtercount{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:999px;background:#fff0ed;color:#d72815;font-size:10px;font-weight:900}
.importnote{font-size:11px;color:#69728a}
.billinline{width:150px;min-width:120px;border:1px solid #ffb7aa;border-radius:8px;padding:7px 8px;background:#fffaf8;color:#252f48;outline:none;font-weight:750}
.billinline:focus{border-color:#ff2a12;box-shadow:0 0 0 3px rgba(255,42,18,.10);background:#fff}
.billinline.saving{opacity:.55}
.pendingbill-fields{display:grid;gap:4px;min-width:145px}
.pendingbill-date{width:145px;min-width:125px;border:1px solid #ffb7aa;border-radius:8px;padding:7px 8px;background:#fffaf8;color:#252f48;outline:none;font-weight:750}
.pendingbill-date:focus{border-color:#ff2a12;box-shadow:0 0 0 3px rgba(255,42,18,.10);background:#fff}
.pendingbill-save{border:1px solid #172aa6;border-radius:7px;padding:5px 8px;background:#172aa6;color:#fff;font-size:10px;font-weight:900;white-space:nowrap;cursor:pointer}
.pendingbill-save:disabled{opacity:.55;cursor:wait}
.pendingactionbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pendingexcel{background:#172aa6!important;color:#fff!important}
.pendingrowlink{font-weight:850;color:#172aa6;background:transparent;border:0;padding:0;cursor:pointer}
.pendingrowlink:hover{text-decoration:underline}
.pendingnote{font-size:10px;color:#7a8398;margin-top:3px;white-space:normal;min-width:145px}
.monthbilllink{border:0;background:transparent;color:#172aa6;font-weight:900;padding:0;cursor:pointer}
.monthbilllink:hover{text-decoration:underline}
.billok{color:#14845a;font-weight:850}
.billpending{color:#d72815;font-weight:900}
.monthlycustomer{font-weight:850;color:#172aa6}
.monthlydueamount{font-weight:900;color:#d72815}
input[data-auto-due="1"]{font-weight:850;background:#f5fbff}
.datehint{font-size:9px;color:#75809a;margin-top:4px;line-height:1.25}

.insightgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px}
.insightcard{border:1px solid var(--line);border-radius:14px;background:#fff;padding:13px;min-width:0}
.insightcard h3{margin:0 0 8px;font-size:14px;color:#1b2850}
.insightcard .meta{margin-bottom:8px}
.insightlist{display:grid;gap:7px}
.insightrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start;padding:7px 0;border-bottom:1px dashed #e7eaf1}
.insightrow:last-child{border-bottom:0}
.insightname{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis}
.insightvalue{font-weight:900;white-space:nowrap;color:#172aa6}
.aihero{margin:12px;padding:14px;border:1px solid #dfe4f2;border-radius:16px;background:linear-gradient(180deg,#fff,#f8f9ff)}
.aihero h3{margin:0 0 8px;font-size:15px}
.aibullets{display:grid;gap:7px}
.aibullet{padding:9px 10px;border-radius:10px;background:#fff;border:1px solid #e7eaf2;font-size:12px;line-height:1.45}
@media(max-width:800px){.insightgrid{grid-template-columns:1fr}}




.hidden{display:none!important}.roleHidden{display:none!important}
@media(max-width:1100px){.cards{grid-template-columns:repeat(3,1fr)}.split{grid-template-columns:1fr}.formgrid{grid-template-columns:repeat(2,1fr)}.status{display:none}}
@media(max-width:650px){.main{padding:10px}.toprow{padding:8px 10px}.brand{min-width:185px}.mark{width:78px;height:40px}.brand h1{font-size:15px}.brand small{display:none}.cards{grid-template-columns:repeat(2,1fr)}.formgrid{grid-template-columns:1fr}.toolbar{gap:7px}.search{min-width:100%}}

.mark{background-image:url("data:image/webp;base64,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");}
.search input:focus,.control:focus{border-color:#172aa6;box-shadow:0 0 0 3px rgba(23,42,166,.10)}
.panelhead h2{color:#172aa6}
.card .v{color:#17203b}
.card:nth-child(3n+1) .v{color:#172aa6}
.card:nth-child(3n+2) .v{color:#ef2a16}
.card:nth-child(3n) .v{color:#d76510}


.amendhero{display:grid;grid-template-columns:180px minmax(220px,1fr) auto;gap:8px;align-items:end;padding:12px}
.amendhero label{display:block;font-size:10px;font-weight:850;color:#6b748b;margin-bottom:4px}
.amendhero input,.amendhero select,.amendreason{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:#fff;font:inherit}
.amendmeta{display:flex;gap:8px;flex-wrap:wrap;padding:0 12px 12px}
.amendpill{font-size:10px;font-weight:850;border:1px solid #dce2f1;border-radius:999px;padding:5px 8px;background:#f7f9ff}
.amendchange{width:100%;border-collapse:collapse}
.amendchange th,.amendchange td{padding:7px 8px;border:1px solid #e5e8f0;vertical-align:top;font-size:11px}
.amendchange th{background:#f7f8fc;color:#47506a;text-align:left}
.amendold{background:#fff8f6}
.amendnew{background:#f5fbff}
.amendhistory details{min-width:360px}
.amendhistory summary{cursor:pointer;font-weight:850;color:#172aa6}
.amendhistory pre{white-space:pre-wrap;word-break:break-word;font:11px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;margin:8px 0 0}
.amenddialog{width:min(1160px,96vw);max-height:92vh}
.amendtop{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:12px 14px 0}
.amendtop .field{margin:0}
.amendreasonwrap{padding:10px 14px 0}
.amendreason{min-height:74px;resize:vertical}
.amendpreview{padding:10px 14px}
.amendpreview h4{margin:0 0 7px;color:#172aa6}
.amendnote{font-size:10px;color:#69738a;line-height:1.4}
@media(max-width:760px){
  .amendhero{grid-template-columns:1fr}
  .amendtop{grid-template-columns:1fr 1fr}
  .amendhistory details{min-width:240px}
}


/* ───────── Role / Login Security ───────── */
.authgate{position:fixed;inset:0;z-index:100000;background:
  radial-gradient(circle at 15% 15%,rgba(255,90,35,.12),transparent 32%),
  radial-gradient(circle at 85% 80%,rgba(23,42,166,.13),transparent 34%),
  #f7f8fc;display:flex;align-items:center;justify-content:center;padding:20px}
.authgate.hidden{display:none!important}
.authcard{width:min(470px,100%);background:#fff;border:1px solid #dde3ef;border-radius:22px;
  box-shadow:0 28px 80px rgba(20,32,72,.16);padding:24px}
.authbrand{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.authbrand .authlogo{width:74px;height:42px;border:1px solid #edf0f6;border-radius:9px;
  background:#fff center/contain no-repeat}
.authbrand h2{margin:0;color:#172aa6;font-size:20px}.authbrand p{margin:3px 0 0;color:#747c8d;font-size:12px}
.authfield{margin-top:12px}.authfield label{display:block;font-size:11px;font-weight:900;color:#4d5870;margin-bottom:5px;text-transform:uppercase;letter-spacing:.04em}
.authfield input,.authfield select{width:100%;padding:12px;border:1px solid #d9dfeb;border-radius:11px;background:#fff;outline:none}
.authfield input:focus,.authfield select:focus{border-color:#172aa6;box-shadow:0 0 0 3px rgba(23,42,166,.08)}
.authlogin{width:100%;margin-top:16px;padding:12px}
.authmsg{min-height:19px;margin-top:10px;font-size:12px;font-weight:800;color:#c92514}
.authnote{margin-top:14px;padding:10px 11px;border-radius:10px;background:#f5f7fb;color:#687188;font-size:11px;line-height:1.45}
.usercontrols{display:flex;align-items:center;gap:7px;white-space:nowrap}
.rolebadge{display:inline-flex;align-items:center;gap:5px;padding:7px 9px;border:1px solid #dfe4ef;border-radius:999px;background:#f7f8fc;color:#28355b;font-size:11px;font-weight:850}
.rolebadge.admin{background:#fff0ed;color:#c92514;border-color:#ffd1c9}
.userctrlbtn{border:1px solid #dfe4ef;background:#fff;border-radius:9px;padding:7px 9px;font-size:11px;font-weight:800;color:#263377}
.userctrlbtn:hover{background:#f4f6fb}
.viewermask{display:inline-block;font-weight:850;letter-spacing:.04em;color:#6b7280;background:#f2f4f8;border-radius:6px;padding:2px 6px}
.lockedaction{font-size:10px;color:#8b93a5;font-weight:800;white-space:nowrap}
.rolelock{display:inline-flex;margin-top:3px;padding:2px 6px;border-radius:999px;background:#f1f3f7;color:#7a8292;font-size:9px;font-weight:850}
.adminsecurity{width:min(1040px,100%)}
.adminroleintro{padding:12px 16px;background:#f7f8fc;border-bottom:1px solid var(--line);font-size:12px;color:#606a80}
.adminrolegrid{padding:14px 16px;overflow:auto}
.adminroletable{width:100%;min-width:800px;border-collapse:collapse;font-size:12px}
.adminroletable th,.adminroletable td{position:static!important;min-width:0!important;max-width:none!important;background:#fff;padding:10px;border:1px solid #e5e9f1}
.adminroletable th{background:#f0f3fa;color:#263377}
.adminpassrow{display:flex;gap:6px;min-width:250px}.adminpassrow input{flex:1;min-width:150px;padding:8px;border:1px solid #d9dfeb;border-radius:8px}
.adminpassrow button{padding:8px 10px}
.adminfooter{padding:11px 16px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}
@media(max-width:950px){.brand{min-width:220px}.usercontrols{width:100%;justify-content:flex-end}.toprow{flex-wrap:wrap}}


/* ───────── Local HTML Cloud Auto Sync V58 ───────── */
.syncbadge{display:inline-flex;align-items:center;gap:6px;padding:7px 9px;border:1px solid #dfe4ef;
  border-radius:999px;background:#fff;color:#5d6678;font-size:10px;font-weight:900;white-space:nowrap}
.syncbadge:before{content:"";width:7px;height:7px;border-radius:50%;background:#9aa3b5}
.syncbadge.ok{background:#eefaf2;color:#18783a;border-color:#ccebd6}.syncbadge.ok:before{background:#24a148}
.syncbadge.wait{background:#fff8e9;color:#8b5c00;border-color:#f1dda9}.syncbadge.wait:before{background:#e8a317}
.syncbadge.bad{background:#fff0ed;color:#b62b1e;border-color:#ffd1c9}.syncbadge.bad:before{background:#e03322}
.syncdialog{width:min(760px,96vw)}
.syncbody{padding:16px}
.syncurlrow{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}
.syncfield label{display:block;font-size:10px;font-weight:900;text-transform:uppercase;color:#667085;margin-bottom:5px}
.syncfield input{width:100%;padding:11px;border:1px solid #d9dfeb;border-radius:10px;outline:none;background:#fff}
.syncfield input:focus{border-color:#172aa6;box-shadow:0 0 0 3px rgba(23,42,166,.08)}
.syncstatusgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px}
.syncstat{padding:10px 11px;border:1px solid #e1e5ee;border-radius:10px;background:#f8f9fc;min-width:0}
.syncstat .k{font-size:9px;font-weight:900;text-transform:uppercase;color:#7b8496}
.syncstat .v{margin-top:4px;font-size:12px;font-weight:850;color:#213056;word-break:break-word}
.syncnote{margin-top:12px;padding:10px 12px;background:#f6f8fc;border:1px solid #e6e9f1;border-radius:10px;
  color:#5f697d;font-size:11px;line-height:1.55}
.syncnote.pending{background:#fff8e9;border-color:#f1dda9;color:#805700}
.syncnote.error{background:#fff0ed;border-color:#ffd1c9;color:#a42b20}
.syncactions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap;margin-top:13px}
.syncqueue{font-variant-numeric:tabular-nums}
.synciframe{position:fixed!important;left:-10000px!important;top:-10000px!important;width:2px!important;height:2px!important;border:0!important;opacity:.01!important;pointer-events:none!important}
@media(max-width:700px){.syncurlrow{grid-template-columns:1fr}.syncstatusgrid{grid-template-columns:1fr}}


.adminrestore{margin:0 16px 16px;border:1px solid #dfe4ef;border-radius:14px;background:#fbfcff;overflow:hidden}
.adminrestorehead{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:#f1f4fb;border-bottom:1px solid #dfe4ef}
.adminrestorehead h4{margin:0;color:#25357f;font-size:13px}.adminrestorehead .small{margin-top:3px}
.adminrestoreactions{display:flex;gap:7px;flex-wrap:wrap}
.adminrestorestatus{padding:9px 14px;font-size:11px;color:#667085;border-bottom:1px solid #edf0f5;background:#fff}
.restorelist{max-height:260px;overflow:auto;background:#fff}
.restoreitem{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid #edf0f5}
.restoreitem:last-child{border-bottom:0}
.restorename{font-size:12px;font-weight:850;color:#26345f;word-break:break-word}
.restoremeta{font-size:10px;color:#7a8395;margin-top:3px}
.restorebuttons{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.restoreempty{padding:18px;text-align:center;color:#7a8395;font-size:11px}
@media(max-width:720px){.adminrestorehead,.restoreitem{grid-template-columns:1fr;display:grid}.adminrestoreactions,.restorebuttons{justify-content:flex-start}}


html,.tablewrap,.nav{scroll-behavior:auto!important}

.drivecell{display:flex;gap:5px;align-items:center;flex-wrap:wrap;min-width:145px}
.drivebtn{display:inline-flex;align-items:center;justify-content:center;padding:5px 7px;border:1px solid #dce3ef;border-radius:7px;background:#fff;color:#223273;font-size:10px;font-weight:850;text-decoration:none;white-space:nowrap;cursor:pointer}
.drivebtn:hover{background:#f2f5ff;border-color:#bfcaf0}
.drivebtn.attach{background:#eef8f1;color:#176b35;border-color:#cae8d3}
.drivepending{font-size:10px;color:#7a8496}

/* HTML-only booking workspace maximize mode */
body.bookingbox-maximized{overflow:hidden!important}
body.bookingbox-maximized .topbar{display:none!important}
body.bookingbox-maximized .main>.toolbar{display:none!important}
body.bookingbox-maximized #dashboardView{display:none!important}
body.bookingbox-maximized #tableView{
  position:fixed!important;
  inset:0!important;
  z-index:55!important;
  background:#fff!important;
  margin:0!important;
  padding:0!important;
}
body.bookingbox-maximized #tableView>.panel{
  width:100vw!important;
  height:100dvh!important;
  max-width:none!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
body.bookingbox-maximized #tableView>.panel>.panelhead{
  flex:0 0 auto!important;
  border-radius:0!important;
}
body.bookingbox-maximized #tableView>.panel>.tablewrap{
  flex:1 1 auto!important;
  min-height:0!important;
  max-height:none!important;
  height:auto!important;
}
body.bookingbox-maximized #tableView>.panel>.pager{flex:0 0 auto!important}
.bookingmaxbtn{white-space:nowrap}
body.bookingbox-maximized .bookingmaxbtn{background:#172aa6!important;color:#fff!important}

.maxnewbtn{display:none}
body.bookingbox-maximized .maxnewbtn{display:inline-flex!important;align-items:center;justify-content:center}

.activebadge{
  display:inline-flex;align-items:center;gap:5px;padding:6px 8px;border:1px solid #dfe4ef;
  border-radius:999px;background:#f5f8ff;color:#23356f;font-size:9px;font-weight:900;
  white-space:nowrap;cursor:pointer
}
.activebadge:before{content:"";width:7px;height:7px;border-radius:50%;background:#24a148;box-shadow:0 0 0 2px rgba(36,161,72,.10)}
.activebadge:hover{background:#edf3ff;border-color:#cad5f0}
.activebadge.unknown:before{background:#9aa3b5;box-shadow:none}
.activedevdialog{width:min(640px,96vw)}
.activedevsummary{padding:10px 14px;border-bottom:1px solid var(--line);font-size:11px;color:#5f687b;background:#f8f9fc}
.activedevlist{padding:10px 14px;max-height:56vh;overflow:auto}
.activedevrow{display:grid;grid-template-columns:minmax(130px,1fr) minmax(190px,1.5fr) 90px;gap:8px;align-items:center;padding:8px 9px;border:1px solid #e6eaf2;border-radius:9px;margin-bottom:7px;background:#fff;font-size:10px}
.activedevrole{font-weight:900;color:#263377}
.activedevid{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#515b70;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.activedevtime{text-align:right;color:#6f7788;white-space:nowrap}
.activedevself{display:inline-flex;margin-left:5px;padding:1px 5px;border-radius:999px;background:#eefaf2;color:#18783a;font-size:8px;font-weight:900}
.activedevempty{padding:20px;text-align:center;color:#7a8292;font-size:11px}
@media(min-width:951px){
  .nav button{font-size:8.7px;padding:6px 5px}
}
@media(max-width:1250px) and (min-width:951px){
  .toprow{gap:8px;padding-left:10px;padding-right:10px}
  .brand{min-width:195px;max-width:210px}
  .nav{gap:1px}
  .nav button{font-size:8.2px;padding:5px 4px}
  .usercontrols{gap:4px}
  .syncbadge,.rolebadge,.activebadge,.userctrlbtn{font-size:8.5px;padding:5px 6px}
}

.globalsearchbtn{padding:8px 9px!important;font-size:9px!important;font-weight:900!important;white-space:nowrap}
.clienttemplate-title{padding:7px 10px 5px;background:#fff8f3;color:#b74318;font-size:9px;font-weight:950;text-transform:uppercase;letter-spacing:.04em;border-top:1px solid #f1e3dc}
.clienttemplate-item{padding:8px 10px;border-top:1px solid #f3ece8;cursor:pointer;background:#fffdfb;color:#26324b;font-size:10.5px;line-height:1.3}
.clienttemplate-item:hover{background:#fff2ea;color:#a83210}
.clienttemplate-item b{display:block;font-size:10.5px;font-weight:900}
.clienttemplate-item small{display:block;margin-top:2px;color:#7f8797;font-size:9px}
.clienttemplate-tag{display:inline-block;margin-left:5px;padding:1px 5px;border-radius:999px;background:#eef1ff;color:#172aa6;font-size:8px;font-weight:900}

/* V82 compact brand + larger navigation tabs */
.brand{min-width:205px!important;max-width:225px!important;gap:7px!important}
.brand .title,
.brand h1,
.brand strong{font-size:13px!important;line-height:1.05!important;white-space:nowrap}
.brand .sub,
.brand small,
.brand .subtitle{font-size:8.5px!important;line-height:1.05!important;white-space:nowrap}
.nav{gap:2px!important;overflow:hidden!important}
.nav button{
  font-size:10px!important;
  padding:6px 6px!important;
  line-height:1.15!important;
  letter-spacing:0!important;
  font-weight:800!important
}
@media(max-width:1250px) and (min-width:951px){
  .brand{min-width:185px!important;max-width:200px!important}
  .brand .title,.brand h1,.brand strong{font-size:12px!important}
  .brand .sub,.brand small,.brand .subtitle{font-size:8px!important}
  .nav button{font-size:9.3px!important;padding:5px 5px!important}
}
@media(min-width:1400px){
  .nav button{font-size:10.5px!important;padding:6px 7px!important}
}

.adminpowerbox{margin:12px 0 14px;border:1px solid #dfe5f2;border-radius:12px;background:#f8faff;overflow:hidden}
.adminpowerhead{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:11px 12px;border-bottom:1px solid #e2e7f1;background:#f1f5ff}
.adminpowerhead h4{margin:0 0 3px;font-size:12px;color:#17245d}
.adminpowerstatus{padding:8px 12px;font-size:10px;color:#646e82;border-bottom:1px solid #e7ebf3}
.adminpowerlist{padding:9px;max-height:48vh;overflow:auto}
.powercard{border:1px solid #e0e5ef;border-radius:11px;background:#fff;margin-bottom:8px;padding:9px}
.powercardhead{display:grid;grid-template-columns:minmax(135px,1fr) minmax(160px,1.4fr) 110px;gap:7px;align-items:center}
.poweridentity b{display:block;font-size:10px;color:#1e2b60}
.poweridentity small{display:block;font-size:8.5px;color:#7a8292;margin-top:2px}
.powerdevice{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:8.5px;color:#5f687a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.powerstatusselect,.powerlabelinput{width:100%;border:1px solid #d9dfeb;border-radius:7px;padding:6px;font-size:9px;background:#fff}
.powerlabelrow{display:grid;grid-template-columns:105px 1fr;gap:7px;align-items:center;margin-top:7px;font-size:9px;color:#677084}
.powertoggles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:8px}
.powertoggle{display:flex;gap:5px;align-items:center;padding:6px 7px;border:1px solid #e3e7ef;border-radius:8px;background:#fbfcfe;font-size:9px;font-weight:750;color:#3d485d;cursor:pointer}
.powertoggle input{margin:0}
.poweractions{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-top:8px}
.poweractions .btn{font-size:8.5px;padding:5px 7px}
.powercustom{font-size:8px;font-weight:900;border-radius:999px;padding:2px 6px;background:#eef3ff;color:#2342a1}
.powerdefault{background:#f0f3f7;color:#637087}
.poweradminlock{padding:8px;margin-top:7px;border-radius:8px;background:#fff8e7;color:#805f0a;font-size:9px;font-weight:750}
@media(max-width:850px){
  .powercardhead{grid-template-columns:1fr}
  .powertoggles{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* V101 Hybrid repair: dedicated Devices approval tab */
.devicesdialog{width:min(1080px,97vw)}
.devicesummary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:10px 12px;border-bottom:1px solid #e4e8f0;background:#f8faff}
.devicekpi{background:#fff;border:1px solid #e1e6f0;border-radius:9px;padding:8px 9px}
.devicekpi span{display:block;font-size:8px;color:#778197;text-transform:uppercase;font-weight:900;letter-spacing:.04em}
.devicekpi b{display:block;font-size:18px;color:#1b2b70;margin-top:2px}
.deviceslist{padding:10px;max-height:62vh;overflow:auto}
.deviceapprovalcard{border:1px solid #e0e5ef;border-radius:11px;background:#fff;margin-bottom:8px;padding:10px}
.deviceapprovalhead{display:grid;grid-template-columns:minmax(160px,1fr) minmax(190px,1.4fr) 95px 130px;gap:8px;align-items:center}
.deviceapprovalidentity b{display:block;font-size:10px;color:#1e2b60}
.deviceapprovalidentity small{display:block;margin-top:2px;font-size:8.5px;color:#778197}
.deviceapprovalid{font:8.5px ui-monospace,SFMono-Regular,Consolas,monospace;color:#59657c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.deviceapprovalstatus{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:4px 7px;font-size:8px;font-weight:950;text-transform:uppercase}
.deviceapprovalstatus.pending{background:#fff3c4;color:#7a5b00}.deviceapprovalstatus.approved{background:#e8f7ec;color:#16713a}.deviceapprovalstatus.revoked{background:#ffe8e8;color:#a12d2d}
.deviceapprovalactions{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.deviceapprovalactions .btn{padding:5px 7px;font-size:8.5px}
@media(max-width:760px){.devicesummary{grid-template-columns:repeat(2,minmax(0,1fr))}.deviceapprovalhead{grid-template-columns:1fr}}

.nablscope-inline-wrap{display:flex;gap:4px;align-items:center;min-width:190px}
.nablscope-inline-wrap .cellinput{min-width:135px;flex:1}
.nablscope-btn{flex:0 0 auto;border:1px solid #cbd5f4;border-radius:7px;background:#eef3ff;color:#18379b;font-size:8.5px;font-weight:900;padding:5px 6px;cursor:pointer;white-space:nowrap}
.nablscope-btn:hover{background:#e1e9ff;border-color:#9fb1eb}
.nablscope-dialog{width:min(980px,97vw)}
.nablscope-body{padding:12px 14px}
.nablscope-manual{border:1px solid #cbd8ff;background:#f6f8ff;border-radius:10px;padding:10px;margin-bottom:10px}
.nablscope-manual-title{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;color:#20368f;font-size:10px;margin-bottom:7px}
.nablscope-manual-title span{font-size:8.8px;color:#67728c;font-weight:600}
.nablscope-manual textarea{width:100%;min-height:62px;resize:vertical;border:1px solid #cfd7e8;border-radius:8px;padding:8px;font-size:10px;line-height:1.35;background:#fff}
.nablscope-manual-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:7px;flex-wrap:wrap}
.nablscope-or{display:flex;align-items:center;gap:8px;color:#8992a5;font-size:8.5px;font-weight:900;margin:2px 0 9px}
.nablscope-or:before,.nablscope-or:after{content:"";height:1px;background:#e3e8f1;flex:1}
.nablscope-controls{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:9px}
.nablscope-controls .field{margin:0}
.nablscope-controls select,.nablscope-controls input{width:100%;border:1px solid #d8deeb;border-radius:8px;padding:8px;font-size:10px;background:#fff}
.nablscope-actions,.nablscope-selectbar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:9px}
.nablscope-status{margin-top:9px;padding:8px 10px;border-radius:8px;background:#f6f8fc;border:1px solid #e3e8f1;color:#58647a;font-size:10px}
.nablscope-selectbar{padding:7px 0}
#nablScopeSelectedCount{font-size:9px;font-weight:900;color:#243b8d}
.nablscope-list{border:1px solid #e2e6ef;border-radius:10px;max-height:52vh;overflow:auto;background:#fff}
.nablscope-row{display:grid;grid-template-columns:32px minmax(180px,.9fr) minmax(280px,1.7fr);gap:8px;align-items:start;padding:8px 9px;border-bottom:1px solid #edf0f5;font-size:10px}
.nablscope-row:last-child{border-bottom:0}
.nablscope-row:hover{background:#f8faff}
.nablscope-param{font-weight:900;color:#1f2e63;line-height:1.3}
.nablscope-method{color:#616b7d;line-height:1.35}
.nablscope-check{margin-top:2px}
.nablscope-field-button{margin-top:5px;display:inline-flex}
.nablscope-sourcehint{font-size:8.5px;color:#6e7789;margin-left:5px}
@media(max-width:760px){
  .nablscope-controls{grid-template-columns:1fr}
  .nablscope-row{grid-template-columns:28px 1fr}
  .nablscope-method{grid-column:2}
}

/* V85 lightweight status / lab / Drive-folder visuals */
.cell-status{font-weight:900!important;text-align:center}
.status-final{background:#e8f7ee!important;color:#176b36!important;border-color:#bde6cb!important}
.status-pending{background:#fff5d9!important;color:#8a6200!important;border-color:#f2dc98!important}
.status-hold{background:#fff0df!important;color:#9b4e00!important;border-color:#efc28d!important}
.status-cancelled{background:#f4e8ea!important;color:#8a2636!important;border-color:#dfbac1!important}
.status-progress{background:#eaf2ff!important;color:#28549f!important;border-color:#bfd2f4!important}
.status-approved{background:#e8f7ee!important;color:#176b36!important;border-color:#bde6cb!important}
.status-rejected{background:#f4e8ea!important;color:#8a2636!important;border-color:#dfbac1!important}
.status-generic{background:#f2f4f8!important;color:#4e596d!important;border-color:#d8dde7!important}
.lab-chip{display:inline-block;max-width:100%;padding:3px 7px;border-radius:999px;font-size:9px;font-weight:900;line-height:1.2;border:1px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lab-tone-0{background:#eaf2ff;color:#234b97;border-color:#c4d5f4}
.lab-tone-1{background:#eef9e9;color:#3f6f21;border-color:#cfe8c0}
.lab-tone-2{background:#fff0e6;color:#9a4f16;border-color:#efccb0}
.lab-tone-3{background:#f5ecff;color:#6d3a9a;border-color:#dac4ef}
.lab-tone-4{background:#e8f8f5;color:#1d7166;border-color:#bfe6df}
.lab-tone-5{background:#fff6df;color:#8a6500;border-color:#eedda5}
.lab-tone-6{background:#fcecf2;color:#914066;border-color:#edc6d5}
.lab-tone-7{background:#edf0f8;color:#46516e;border-color:#d3d9e8}
.lab-tone-8{background:#e9f6fc;color:#26687e;border-color:#c3e3ef}
.lab-tone-9{background:#f4f2e8;color:#6e6540;border-color:#ded8bd}
.folder-empty-cell{background:#fff1f1!important;box-shadow:inset 0 0 0 2px #e36b6b!important}
.folder-empty-cell a,.folder-empty-cell .rowlink{color:#a92424!important;font-weight:950!important}
.folder-empty-tag{display:block;margin-top:2px;font-size:8px;font-weight:950;color:#b32626;white-space:nowrap}
.folder-filled-cell{background:#f0faf4!important}
.folder-checking-cell{background:#fffaf0!important}
@keyframes remoteCellFlash{0%{box-shadow:inset 0 0 0 2px #2f73d9;background:#eaf3ff}100%{box-shadow:inset 0 0 0 0 transparent}}
.remote-cell-flash{animation:remoteCellFlash 1.15s ease-out}

.smartac-addnew{
  display:flex;align-items:center;gap:7px;padding:9px 10px;border-top:1px solid #dfe5f1;
  background:#f4f7ff;color:#173a9b;font-size:10px;font-weight:950;cursor:pointer
}
.smartac-addnew:hover{background:#e8efff;color:#102f86}
.smartac-addnew .plus{
  display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;
  border-radius:50%;background:#1e47ba;color:#fff;font-size:13px;line-height:1
}
.smartac-addnew small{font-size:8.5px;color:#69758d;font-weight:700}

/* V86 expanded category/type value colors */
.category-chip{
  display:inline-block;max-width:100%;padding:3px 7px;border-radius:999px;
  font-size:9px;font-weight:850;line-height:1.2;border:1px solid transparent;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.cat-tone-0{background:#eef4ff;color:#294d92;border-color:#cbd9f4}
.cat-tone-1{background:#f0f8e9;color:#4a6f29;border-color:#d2e5bf}
.cat-tone-2{background:#fff2e8;color:#95511d;border-color:#efcdb2}
.cat-tone-3{background:#f7efff;color:#704399;border-color:#dbc8ee}
.cat-tone-4{background:#eaf8f5;color:#246f65;border-color:#c4e4df}
.cat-tone-5{background:#fff8e7;color:#80640e;border-color:#eadba8}
.cat-tone-6{background:#fceef3;color:#8b4565;border-color:#e9cbd7}
.cat-tone-7{background:#eef1f7;color:#4d586d;border-color:#d7dce7}
.cat-tone-8{background:#eaf7fb;color:#2b687d;border-color:#c7e4ee}
.cat-tone-9{background:#f6f3ea;color:#706647;border-color:#dfd9c3}
.category-cell{background:transparent!important}

.personnamedialog{width:min(470px,94vw)}
.personnamebody{padding:16px}
.personnamebody label{display:block;font-size:10px;font-weight:900;color:#303b55;margin:12px 0 5px}
.personnamebody input{width:100%;box-sizing:border-box;border:1px solid #ccd5e6;border-radius:9px;padding:10px 11px;font-size:13px;font-weight:750;outline:none}
.personnamebody input:focus{border-color:#395bc5;box-shadow:0 0 0 3px rgba(57,91,197,.10)}
.persondevicepreview{padding:10px;border-radius:9px;background:#f3f6fc;border:1px solid #e1e6f0}
.persondevicepreview span{display:block;font-size:8.5px;color:#758096}
.persondevicepreview b{display:block;margin-top:3px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px;color:#1c2f73}
.personnamehint{font-size:9px;color:#697489;margin-top:7px;line-height:1.4}
.personnameerror{min-height:17px;margin-top:6px;font-size:9px;font-weight:850;color:#a72836}

/* V89 Stable Viewport — table position must not jump during background work */
#tableView .tablewrap{
  overflow-anchor:none!important;
  scroll-behavior:auto!important;
  overscroll-behavior:contain!important;
}
#tableView table{overflow-anchor:none!important}

/* V89 hard DOM-lock safeguards */
#tableView{overflow-anchor:none!important}
#tableView .tablewrap{overflow-anchor:none!important;scroll-behavior:auto!important}
#inlineNewBookingRow{overflow-anchor:none!important}
#saveStatus{min-width:165px;display:inline-block}

/* V89 urgent incomplete-row control */
.urgentIncompleteBtn{
  background:#fff0f0!important;color:#a8212c!important;border-color:#e7aeb4!important;
  font-weight:950!important;white-space:nowrap
}
.urgentIncompleteBtn.hot{
  background:#b5222d!important;color:#fff!important;border-color:#951923!important;
  box-shadow:0 0 0 2px rgba(181,34,45,.10)
}
.urgentIncompleteBtn.clear{
  background:#edf8f1!important;color:#257045!important;border-color:#c9e7d4!important
}
.urgentIncompleteBtn span{
  display:inline-flex;min-width:22px;height:18px;padding:0 5px;align-items:center;justify-content:center;
  border-radius:999px;background:rgba(255,255,255,.78);color:inherit;font-size:9px;margin-left:3px
}
.urgentdialog{width:min(1080px,96vw);max-height:92vh}
.urgentcontrols{display:grid;grid-template-columns:minmax(250px,1fr) 180px auto;gap:8px;padding:12px 14px;border-bottom:1px solid #e3e8f1}
.urgentcontrols input,.urgentcontrols select{border:1px solid #ccd5e6;border-radius:8px;padding:8px 9px;font-size:10px;background:#fff}
.urgentsummary{padding:9px 14px;font-size:10px;font-weight:850;background:#fff8e8;border-bottom:1px solid #eee1b9;color:#765700}
.urgentlist{overflow:auto;max-height:58vh;padding:10px 12px;background:#f7f9fc}
.urgentrow{
  display:grid;grid-template-columns:120px minmax(120px,170px) minmax(190px,1fr) minmax(280px,1.5fr) auto;
  gap:8px;align-items:center;padding:8px 9px;margin-bottom:6px;background:#fff;border:1px solid #e0e5ef;border-radius:9px
}
.urgentrow:hover{border-color:#c9d2e4;box-shadow:0 2px 8px rgba(34,52,86,.05)}
.urgentcat{font-size:9px;font-weight:900;color:#506078}
.urgentserial{font-size:10px;font-weight:950;color:#17357f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.urgentclient{font-size:9px;color:#47536a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.urgentmissing{font-size:9px;color:#8c2834;line-height:1.35}
.urgentmissing b{color:#a11f2b}
.urgentactions{display:flex;gap:5px;white-space:nowrap}
.urgentcorrect{background:#b5222d!important;color:#fff!important;border-color:#951923!important}
.urgentpager{display:flex;align-items:center;justify-content:center;gap:10px;padding:8px;border-top:1px solid #e4e8f0;background:#fff}
.urgentpager span{font-size:9px;font-weight:900;color:#536079}
.urgentempty{padding:30px;text-align:center;font-size:11px;font-weight:850;color:#3c7150;background:#f0faf4;border:1px solid #d0e9d8;border-radius:10px}
@media(max-width:900px){
  .urgentrow{grid-template-columns:1fr}
  .urgentcontrols{grid-template-columns:1fr}
}


/* ===== V89 cumulative compact workspace patch ===== */
/* Compact top header */
.toprow{padding:4px 12px!important;gap:7px!important;min-height:0!important}
.toprow:after{left:12px!important;right:12px!important;height:1px!important}
.brand{min-width:170px!important;max-width:185px!important;gap:6px!important}
.mark{width:68px!important;height:30px!important;border-radius:6px!important}
.brand .title,.brand h1,.brand strong{font-size:11px!important;line-height:1!important}
.brand .sub,.brand small,.brand .subtitle{font-size:7.5px!important;line-height:1!important;margin-top:2px!important}
.nav{gap:1px!important;padding-bottom:0!important}
.nav button{font-size:10.6px!important;padding:4px 5px!important;border-radius:6px!important;line-height:1.05!important;font-weight:850!important}
.status{font-size:9px!important}.usercontrols{gap:3px!important}
.syncbadge,.rolebadge,.activebadge,.userctrlbtn{font-size:8px!important;padding:4px 6px!important;line-height:1.05!important}
.syncbadge:before,.activebadge:before{width:5px!important;height:5px!important}
.main{padding-top:7px!important}
@media(min-width:951px){.toprow{flex-wrap:nowrap!important}.brand{flex:0 0 170px!important}.nav{min-width:0!important;flex:1 1 auto!important}.usercontrols{width:auto!important;flex:0 0 auto!important;justify-content:flex-end!important}}
@media(max-width:1250px) and (min-width:951px){.toprow{padding:3px 8px!important;gap:4px!important}.toprow:after{left:8px!important;right:8px!important}.brand{min-width:150px!important;max-width:160px!important;flex-basis:150px!important}.mark{width:58px!important;height:27px!important}.brand .title,.brand h1,.brand strong{font-size:10px!important}.brand .sub,.brand small,.brand .subtitle{font-size:7px!important}.nav button{font-size:9.6px!important;padding:4px!important}.syncbadge,.rolebadge,.activebadge,.userctrlbtn{font-size:7.5px!important;padding:3px 5px!important}}
@media(max-width:950px){.toprow{padding:4px 8px!important;gap:5px!important}.brand{min-width:145px!important;max-width:160px!important}.mark{width:58px!important;height:27px!important}.brand .title,.brand h1,.brand strong{font-size:10px!important}.brand .sub,.brand small,.brand .subtitle{font-size:7px!important}.nav button{font-size:9.4px!important;padding:4px!important;font-weight:850!important}.usercontrols{gap:3px!important}.syncbadge,.rolebadge,.activebadge,.userctrlbtn{font-size:7.5px!important;padding:3px 5px!important}}
@media(max-width:650px){.toprow{padding:3px 6px!important}.mark{width:50px!important;height:24px!important}.brand{min-width:118px!important;max-width:130px!important}.brand h1{font-size:9px!important}.brand small{display:none!important}.main{padding-top:6px!important}}

/* Compact second action bar */
@media(min-width:951px){
  .toolbar{gap:4px!important;margin-bottom:5px!important;flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden!important;padding:0 0 1px!important;scrollbar-width:thin}
  .toolbar .search{min-width:210px!important;flex:1 1 280px!important}
  .toolbar .search input{padding:5px 7px 5px 27px!important;min-height:27px!important;border-radius:7px!important;font-size:9px!important;line-height:1!important}
  .toolbar .search:before{left:8px!important;top:1px!important;font-size:17px!important}
  .toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{padding:4px 6px!important;min-height:27px!important;border-radius:7px!important;font-size:8.6px!important;line-height:1!important;white-space:nowrap!important;flex:0 0 auto!important}
}
@media(max-width:1250px) and (min-width:951px){.toolbar{gap:3px!important}.toolbar .search{min-width:175px!important;flex-basis:215px!important}.toolbar .search input,.toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{font-size:8.2px!important}}

/* Maximize button in the second bar */
.toolbar .bookingmaxbtn{flex:0 0 auto!important;white-space:nowrap!important;font-weight:900!important;border-color:#cfd6e5!important;background:#f5f7ff!important;color:#172aa6!important}
.toolbar .bookingmaxbtn:hover{background:#e9edff!important;border-color:#aeb9e8!important}
body.bookingbox-maximized .main>.toolbar{display:flex!important;align-items:center!important;position:fixed!important;top:6px!important;right:8px!important;left:auto!important;width:auto!important;min-width:0!important;margin:0!important;padding:0!important;overflow:visible!important;background:transparent!important;z-index:75!important}
body.bookingbox-maximized .main>.toolbar>*:not(.bookingmaxbtn):not(.bookingdefaultbtn):not(.formulafillbtn):not(#addBtn){display:none!important}
body.bookingbox-maximized .main>.toolbar .bookingmaxbtn,body.bookingbox-maximized .main>.toolbar .bookingdefaultbtn,body.bookingbox-maximized .main>.toolbar #addBtn{display:inline-flex!important;min-height:27px!important;padding:5px 9px!important}
body.bookingbox-maximized .main>.toolbar .bookingmaxbtn{background:#172aa6!important;color:#fff!important;border-color:#172aa6!important;box-shadow:0 3px 12px rgba(23,42,166,.22)!important}
body.bookingbox-maximized .main>.toolbar #addBtn{margin-right:5px!important;box-shadow:0 3px 12px rgba(255,42,18,.18)!important}
body.bookingbox-maximized #tableView{inset:0!important}

/* Status moved into footer */
.bookingtab-footerinfo{display:flex;align-items:center;gap:4px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9px;color:#5f687b;font-weight:750}
.bookingtab-footerinfo b{color:#172aa6;font-size:9.5px;font-weight:900}.bookingtab-footerinfo .sep{color:#a0a7b5;font-weight:500}
.pager{padding:4px 8px!important;min-height:28px!important}.pager button{padding:3px 7px!important;font-size:9px!important;border-radius:6px!important}
@media(max-width:700px){.bookingtab-footerinfo .footer-filter-note{display:none}.bookingtab-footerinfo{font-size:8.5px}.bookingtab-footerinfo b{font-size:9px}}

/* ===== Ultra-compact booking grid · 110px maximum data columns ===== */
#tableView .tablewrap{max-height:calc(100dvh - 105px)!important}
#tableView table{table-layout:auto!important;width:max-content!important;min-width:100%!important;font-size:10px!important}
#tableView th,#tableView td{
  padding:2px 4px!important;
  width:auto!important;min-width:44px!important;max-width:110px!important;
  height:22px!important;line-height:1.08!important;vertical-align:middle!important;
  white-space:nowrap!important;word-break:normal!important;
  overflow:hidden!important;text-overflow:ellipsis!important;
}
#tableView th{font-size:9px!important;letter-spacing:0!important;border-top-width:1px!important}
#tableView th:first-child,#tableView td:first-child{min-width:70px!important;max-width:110px!important}
#tableView .filterrow th{top:22px!important;padding:2px 3px!important;height:25px!important;min-width:44px!important;max-width:110px!important}
#tableView .colfilter{min-width:0!important;width:100%!important;max-width:100%!important;height:21px!important;padding:2px 4px!important;font-size:8.5px!important;border-radius:5px!important;text-overflow:ellipsis!important}
#tableView .clearfilters{padding:3px 5px!important;font-size:8.5px!important;border-radius:5px!important;max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important}
#tableView .badge{padding:2px 5px!important;font-size:9px!important;line-height:1.05!important;max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#tableView .iconbtn,#tableView .drivebtn{padding:2px 4px!important;font-size:8.5px!important;border-radius:5px!important;max-width:100%!important}
#tableView .drivecell{min-width:0!important;max-width:100%!important;gap:2px!important;flex-wrap:wrap!important;justify-content:center!important}
#tableView .pendingnote,#tableView .datehint{margin-top:1px!important;font-size:8px!important;line-height:1.05!important;max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#tableView .billinline{width:100%!important;min-width:0!important;max-width:100%!important;padding:3px 4px!important;font-size:9px!important;border-radius:5px!important}
#tableView .cellinput{width:100%!important;min-width:0!important;max-width:100%!important;padding:3px 4px!important;font-size:9px!important;border-radius:5px!important;line-height:1.05!important;text-overflow:ellipsis!important}
#tableView .newrow td{padding:2px 3px!important}
#tableView .newrow .actions{width:110px!important;min-width:110px!important;max-width:110px!important;white-space:normal!important;overflow:hidden!important}
#tableView .newrow .actions .btn,#tableView td:last-child .btn{padding:2px 4px!important;font-size:8px!important;margin:1px!important}
#tableView th.compact-grid-col,#tableView td.compact-grid-col{min-width:44px!important;max-width:110px!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#tableView .filterrow th.compact-grid-col{min-width:44px!important;max-width:110px!important}
#tableView td.compact-grid-col>a,#tableView td.compact-grid-col>button,#tableView td.compact-grid-col>span{max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}

#tableView th.compact-actions-col,#tableView td.compact-actions-col{width:110px!important;min-width:110px!important;max-width:110px!important;white-space:normal!important;overflow:hidden!important;text-overflow:clip!important}
#tableView td.compact-actions-col{line-height:1.2!important}

/* V89 final grid refinement: center all booking-table content + selectable full-text hover */
#tableView th,#tableView td{
  text-align:center!important;
}
#tableView td.amount,#tableView td.num{
  text-align:center!important;
}
#tableView .colfilter,#tableView .cellinput,#tableView .billinline{
  text-align:center!important;
}
#tableView .drivecell,#tableView .pendingactionbar{
  justify-content:center!important;
}
#tableView .pendingnote,#tableView .datehint{
  text-align:center!important;
}
#tableView td.compact-grid-col,#tableView th.compact-grid-col{
  cursor:default;
}
.copyhover-popover{
  position:fixed;
  z-index:100500;
  display:none;
  max-width:min(520px,calc(100vw - 20px));
  max-height:220px;
  overflow:auto;
  padding:8px 10px;
  border:1px solid #cfd6e5;
  border-radius:8px;
  background:#fff;
  color:#17203b;
  box-shadow:0 10px 30px rgba(23,32,59,.18);
  font-size:11px;
  line-height:1.35;
  text-align:center;
  white-space:normal;
  word-break:break-word;
  user-select:text;
  -webkit-user-select:text;
  cursor:text;
}
.copyhover-popover.show{display:block}
.copyhover-popover::after{
  content:"Stays open — select / copy text";
  display:block;
  margin-top:6px;
  padding-top:5px;
  border-top:1px solid #edf0f5;
  color:#7b8496;
  font-size:8.5px;
  font-weight:750;
  letter-spacing:.01em;
}


/* V89 Stability Audit: keep async folder/status decoration from changing row height */
#tableView .folder-empty-tag{
  display:inline-flex!important;
  align-items:center!important;
  margin:0 0 0 3px!important;
  line-height:1!important;
  vertical-align:middle!important;
}


/* V89 Bulk Duplicate Booking Editor */
.rowactions{display:inline-flex;align-items:center;justify-content:center;gap:3px;white-space:nowrap}
.rowactions .iconbtn{padding:2px 5px!important;font-size:8.5px!important;line-height:1.05!important}
.rowactions .dupbookingbtn{background:#eef3ff!important;color:#172aa6!important;border-color:#cbd5f2!important;font-weight:900!important}
.bulkdup-row td{background:#f8fbff!important;vertical-align:middle!important}
.bulkdup-row td:first-child{background:#eef3ff!important}
.bulkdup-row .cellinput{min-width:62px!important;padding:3px 4px!important;font-size:9px!important;line-height:1.05!important;text-align:center!important;border-radius:5px!important}
.bulkdup-row .cellinput[readonly]{background:#f0f2f7!important;color:#59627b!important;font-weight:850!important}
.bulkdup-row .bulkdup-serial{font-weight:950!important;color:#172aa6!important;background:#eef3ff!important}
.bulkdup-row .bulkdup-changed{background:#fff7d8!important;border-color:#dca900!important;box-shadow:inset 0 0 0 1px rgba(220,169,0,.10)!important}
.bulkdup-action{display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap}
.bulkdup-change-count{font-size:8px;font-weight:900;color:#687188;padding:2px 4px;border-radius:999px;background:#f1f3f7}
.bulkdup-change-count.haschange{background:#fff0c7;color:#8a6200}
.bulkdup-remove{padding:2px 5px!important;font-size:8px!important}
.bulkdup-footer-title{color:#172aa6;font-weight:950}
.bulkdup-save{background:#172aa6!important;color:#fff!important;border-color:#172aa6!important}
.bulkdup-cancel{color:#b62b1e!important;border-color:#efc5bf!important;background:#fff7f5!important}
body.bookingbox-maximized .bulkdup-save,body.bookingbox-maximized .bulkdup-cancel{display:inline-flex!important}


/* V89 grid containment: no booking-cell text may paint outside its own column. */
#tableView th.serial-full-col,#tableView td.serial-full-col{
  overflow:hidden!important;text-overflow:clip!important;white-space:nowrap!important;
}
#tableView td.serial-full-col>a,#tableView td.serial-full-col>button,#tableView td.serial-full-col>span{
  display:block!important;max-width:100%!important;overflow:hidden!important;text-overflow:clip!important;white-space:nowrap!important;
}
#tableView .filterrow th.serial-full-col{overflow:hidden!important;text-overflow:clip!important}

/* Hard containment for every booking cell and every nested visible control. */
#tableView th.compact-grid-col,#tableView td.compact-grid-col,
#tableView th.compact-actions-col,#tableView td.compact-actions-col{
  box-sizing:border-box!important;
  overflow:hidden!important;
  contain:paint!important;
}
#tableView td.compact-grid-col a,#tableView td.compact-grid-col button,#tableView td.compact-grid-col span,
#tableView td.compact-grid-col div,#tableView td.compact-grid-col label,#tableView td.compact-grid-col input,
#tableView td.compact-grid-col select,#tableView td.compact-grid-col textarea{
  box-sizing:border-box!important;
  max-width:100%!important;
}
#tableView td.compact-grid-col a,#tableView td.compact-grid-col span,
#tableView td.compact-grid-col label{
  overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;
}
#tableView .drivebtn,#tableView .iconbtn,#tableView .btn,
#tableView .rowlink,#tableView .pendingrowlink,#tableView .monthbilllink{
  max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;
}
#tableView .rowactions,#tableView .bulkdup-action,#tableView .drivecell{
  width:100%!important;max-width:100%!important;min-width:0!important;
  overflow:hidden!important;flex-wrap:wrap!important;
}
#tableView .compact-actions-col .rowactions{
  display:flex!important;justify-content:center!important;align-items:center!important;
}
#tableView .compact-actions-col .rowactions>*{
  min-width:0!important;max-width:100%!important;
}

/* V89 key-column sizing: Serial, Customer, Bill Number and Manager get wider readable caps; all other booking columns remain <=110px. */

/* V89 serial visibility refinement: show complete serial inside its own widened column. */
#tableView th.serial-full-col,#tableView td.serial-full-col{
  min-width:240px!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:clip!important;
}
#tableView td.serial-full-col .rowlink,
#tableView td.serial-full-col .bulkdup-serial,
#tableView td.serial-full-col input.cellinput{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:clip!important;
}


/* V89 permanent fixed-pixel defaults + user manual column resizing */
.toolbar .bookingdefaultbtn{
  flex:0 0 auto!important;white-space:nowrap!important;font-weight:900!important;
  border-color:#d9deea!important;background:#fff!important;color:#4f5870!important;
}
.toolbar .bookingdefaultbtn:hover{background:#f4f6fb!important;border-color:#bfc7d8!important;color:#172aa6!important}
body.bookingbox-maximized .main>.toolbar .bookingdefaultbtn{
  background:#fff!important;color:#172aa6!important;border-color:#cfd6e5!important;
  box-shadow:0 3px 12px rgba(23,42,166,.12)!important;margin-right:5px!important;
}
#tableView th.compact-grid-col{position:sticky!important}
#tableView .col-resize-handle{
  position:absolute;top:0;right:0;width:7px;height:100%;z-index:14;
  cursor:col-resize;touch-action:none;user-select:none;-webkit-user-select:none;
  background:transparent;
}
#tableView .col-resize-handle::after{
  content:"";position:absolute;top:18%;bottom:18%;right:1px;width:1px;background:transparent;
}
#tableView .col-resize-handle:hover::after,
body.booking-column-resizing #tableView .col-resize-handle.active::after{
  width:2px;background:#172aa6;
}
body.booking-column-resizing,body.booking-column-resizing *{
  cursor:col-resize!important;user-select:none!important;-webkit-user-select:none!important;
}
#tableView th.compact-grid-col .col-resize-handle{max-width:none!important;overflow:visible!important;text-overflow:clip!important}



/* V90 security gate: hide booking data behind login without deleting stored business data. */
body.security-gated .topbar,
body.security-gated .main{
  visibility:hidden!important;
  pointer-events:none!important;
  user-select:none!important;
}
body.security-gated #authGate{display:flex!important}
body.security-gated{overflow:hidden!important}


/* V92 lightweight startup: approved refreshes open a loader, not the login form. */
.workspaceboot{position:fixed;inset:0;z-index:99990;display:flex;align-items:center;justify-content:center;background:#f7f8fc}
.workspaceboot.hidden{display:none!important}
.workspacebootcard{background:#fff;border:1px solid #dfe4ef;border-radius:16px;padding:18px 22px;box-shadow:0 18px 50px rgba(20,32,72,.12);text-align:center;color:#17203b;min-width:240px}
.workspacebootcard b{display:block;color:#172aa6;font-size:15px;margin-bottom:5px}
.workspacebootcard span{font-size:11px;color:#6d7587}

/* V94 switch-performance + normal footer visibility */
#tableView>.panel{overflow:hidden!important}
#tableView>.panel>.pager{flex:0 0 auto!important}
#tableView table.booking-fixed-grid{table-layout:fixed!important}
#tableView table.booking-fixed-grid th:nth-child(1),#tableView table.booking-fixed-grid td:nth-child(1){width:var(--booking-col-1,110px)!important;min-width:var(--booking-col-1,110px)!important;max-width:var(--booking-col-1,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(2),#tableView table.booking-fixed-grid td:nth-child(2){width:var(--booking-col-2,110px)!important;min-width:var(--booking-col-2,110px)!important;max-width:var(--booking-col-2,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(3),#tableView table.booking-fixed-grid td:nth-child(3){width:var(--booking-col-3,110px)!important;min-width:var(--booking-col-3,110px)!important;max-width:var(--booking-col-3,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(4),#tableView table.booking-fixed-grid td:nth-child(4){width:var(--booking-col-4,110px)!important;min-width:var(--booking-col-4,110px)!important;max-width:var(--booking-col-4,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(5),#tableView table.booking-fixed-grid td:nth-child(5){width:var(--booking-col-5,110px)!important;min-width:var(--booking-col-5,110px)!important;max-width:var(--booking-col-5,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(6),#tableView table.booking-fixed-grid td:nth-child(6){width:var(--booking-col-6,110px)!important;min-width:var(--booking-col-6,110px)!important;max-width:var(--booking-col-6,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(7),#tableView table.booking-fixed-grid td:nth-child(7){width:var(--booking-col-7,110px)!important;min-width:var(--booking-col-7,110px)!important;max-width:var(--booking-col-7,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(8),#tableView table.booking-fixed-grid td:nth-child(8){width:var(--booking-col-8,110px)!important;min-width:var(--booking-col-8,110px)!important;max-width:var(--booking-col-8,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(9),#tableView table.booking-fixed-grid td:nth-child(9){width:var(--booking-col-9,110px)!important;min-width:var(--booking-col-9,110px)!important;max-width:var(--booking-col-9,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(10),#tableView table.booking-fixed-grid td:nth-child(10){width:var(--booking-col-10,110px)!important;min-width:var(--booking-col-10,110px)!important;max-width:var(--booking-col-10,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(11),#tableView table.booking-fixed-grid td:nth-child(11){width:var(--booking-col-11,110px)!important;min-width:var(--booking-col-11,110px)!important;max-width:var(--booking-col-11,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(12),#tableView table.booking-fixed-grid td:nth-child(12){width:var(--booking-col-12,110px)!important;min-width:var(--booking-col-12,110px)!important;max-width:var(--booking-col-12,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(13),#tableView table.booking-fixed-grid td:nth-child(13){width:var(--booking-col-13,110px)!important;min-width:var(--booking-col-13,110px)!important;max-width:var(--booking-col-13,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(14),#tableView table.booking-fixed-grid td:nth-child(14){width:var(--booking-col-14,110px)!important;min-width:var(--booking-col-14,110px)!important;max-width:var(--booking-col-14,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(15),#tableView table.booking-fixed-grid td:nth-child(15){width:var(--booking-col-15,110px)!important;min-width:var(--booking-col-15,110px)!important;max-width:var(--booking-col-15,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(16),#tableView table.booking-fixed-grid td:nth-child(16){width:var(--booking-col-16,110px)!important;min-width:var(--booking-col-16,110px)!important;max-width:var(--booking-col-16,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(17),#tableView table.booking-fixed-grid td:nth-child(17){width:var(--booking-col-17,110px)!important;min-width:var(--booking-col-17,110px)!important;max-width:var(--booking-col-17,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(18),#tableView table.booking-fixed-grid td:nth-child(18){width:var(--booking-col-18,110px)!important;min-width:var(--booking-col-18,110px)!important;max-width:var(--booking-col-18,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(19),#tableView table.booking-fixed-grid td:nth-child(19){width:var(--booking-col-19,110px)!important;min-width:var(--booking-col-19,110px)!important;max-width:var(--booking-col-19,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(20),#tableView table.booking-fixed-grid td:nth-child(20){width:var(--booking-col-20,110px)!important;min-width:var(--booking-col-20,110px)!important;max-width:var(--booking-col-20,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(21),#tableView table.booking-fixed-grid td:nth-child(21){width:var(--booking-col-21,110px)!important;min-width:var(--booking-col-21,110px)!important;max-width:var(--booking-col-21,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(22),#tableView table.booking-fixed-grid td:nth-child(22){width:var(--booking-col-22,110px)!important;min-width:var(--booking-col-22,110px)!important;max-width:var(--booking-col-22,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(23),#tableView table.booking-fixed-grid td:nth-child(23){width:var(--booking-col-23,110px)!important;min-width:var(--booking-col-23,110px)!important;max-width:var(--booking-col-23,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(24),#tableView table.booking-fixed-grid td:nth-child(24){width:var(--booking-col-24,110px)!important;min-width:var(--booking-col-24,110px)!important;max-width:var(--booking-col-24,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(25),#tableView table.booking-fixed-grid td:nth-child(25){width:var(--booking-col-25,110px)!important;min-width:var(--booking-col-25,110px)!important;max-width:var(--booking-col-25,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(26),#tableView table.booking-fixed-grid td:nth-child(26){width:var(--booking-col-26,110px)!important;min-width:var(--booking-col-26,110px)!important;max-width:var(--booking-col-26,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(27),#tableView table.booking-fixed-grid td:nth-child(27){width:var(--booking-col-27,110px)!important;min-width:var(--booking-col-27,110px)!important;max-width:var(--booking-col-27,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(28),#tableView table.booking-fixed-grid td:nth-child(28){width:var(--booking-col-28,110px)!important;min-width:var(--booking-col-28,110px)!important;max-width:var(--booking-col-28,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(29),#tableView table.booking-fixed-grid td:nth-child(29){width:var(--booking-col-29,110px)!important;min-width:var(--booking-col-29,110px)!important;max-width:var(--booking-col-29,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(30),#tableView table.booking-fixed-grid td:nth-child(30){width:var(--booking-col-30,110px)!important;min-width:var(--booking-col-30,110px)!important;max-width:var(--booking-col-30,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(31),#tableView table.booking-fixed-grid td:nth-child(31){width:var(--booking-col-31,110px)!important;min-width:var(--booking-col-31,110px)!important;max-width:var(--booking-col-31,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(32),#tableView table.booking-fixed-grid td:nth-child(32){width:var(--booking-col-32,110px)!important;min-width:var(--booking-col-32,110px)!important;max-width:var(--booking-col-32,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(33),#tableView table.booking-fixed-grid td:nth-child(33){width:var(--booking-col-33,110px)!important;min-width:var(--booking-col-33,110px)!important;max-width:var(--booking-col-33,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(34),#tableView table.booking-fixed-grid td:nth-child(34){width:var(--booking-col-34,110px)!important;min-width:var(--booking-col-34,110px)!important;max-width:var(--booking-col-34,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(35),#tableView table.booking-fixed-grid td:nth-child(35){width:var(--booking-col-35,110px)!important;min-width:var(--booking-col-35,110px)!important;max-width:var(--booking-col-35,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(36),#tableView table.booking-fixed-grid td:nth-child(36){width:var(--booking-col-36,110px)!important;min-width:var(--booking-col-36,110px)!important;max-width:var(--booking-col-36,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(37),#tableView table.booking-fixed-grid td:nth-child(37){width:var(--booking-col-37,110px)!important;min-width:var(--booking-col-37,110px)!important;max-width:var(--booking-col-37,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(38),#tableView table.booking-fixed-grid td:nth-child(38){width:var(--booking-col-38,110px)!important;min-width:var(--booking-col-38,110px)!important;max-width:var(--booking-col-38,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(39),#tableView table.booking-fixed-grid td:nth-child(39){width:var(--booking-col-39,110px)!important;min-width:var(--booking-col-39,110px)!important;max-width:var(--booking-col-39,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(40),#tableView table.booking-fixed-grid td:nth-child(40){width:var(--booking-col-40,110px)!important;min-width:var(--booking-col-40,110px)!important;max-width:var(--booking-col-40,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(41),#tableView table.booking-fixed-grid td:nth-child(41){width:var(--booking-col-41,110px)!important;min-width:var(--booking-col-41,110px)!important;max-width:var(--booking-col-41,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(42),#tableView table.booking-fixed-grid td:nth-child(42){width:var(--booking-col-42,110px)!important;min-width:var(--booking-col-42,110px)!important;max-width:var(--booking-col-42,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(43),#tableView table.booking-fixed-grid td:nth-child(43){width:var(--booking-col-43,110px)!important;min-width:var(--booking-col-43,110px)!important;max-width:var(--booking-col-43,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(44),#tableView table.booking-fixed-grid td:nth-child(44){width:var(--booking-col-44,110px)!important;min-width:var(--booking-col-44,110px)!important;max-width:var(--booking-col-44,110px)!important}
#tableView table.booking-fixed-grid th:nth-child(45),#tableView table.booking-fixed-grid td:nth-child(45){width:var(--booking-col-45,110px)!important;min-width:var(--booking-col-45,110px)!important;max-width:var(--booking-col-45,110px)!important}


/* ===== V96 mobile workspace: visible tabs + touch-friendly compact controls ===== */
@media(max-width:700px){
  /* Header becomes two purposeful rows: identity/security + all booking tabs. */
  .toprow{
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr)!important;
    grid-template-areas:"brand users" "nav nav"!important;
    align-items:center!important;
    column-gap:6px!important;
    row-gap:2px!important;
    padding:3px 6px 2px!important;
    flex-wrap:nowrap!important;
  }
  .brand{
    grid-area:brand!important;
    min-width:108px!important;
    max-width:125px!important;
    width:auto!important;
    gap:4px!important;
  }
  .mark{width:47px!important;height:23px!important}
  .brand h1,.brand .title,.brand strong{font-size:8.8px!important;white-space:nowrap!important}
  .brand small,.brand .sub,.brand .subtitle{display:none!important}
  .status{display:none!important}
  .usercontrols{
    grid-area:users!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    justify-content:flex-end!important;
    flex-wrap:nowrap!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    gap:2px!important;
    padding-bottom:1px!important;
  }
  .usercontrols::-webkit-scrollbar{display:none}
  .syncbadge,.rolebadge,.activebadge,.userctrlbtn{
    flex:0 0 auto!important;
    font-size:7.3px!important;
    padding:3px 5px!important;
    min-height:24px!important;
    border-radius:6px!important;
  }

  /* Critical mobile fix: never clip navigation. All tabs remain reachable by swipe. */
  .nav{
    grid-area:nav!important;
    display:flex!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior-x:contain;
    scrollbar-width:none;
    gap:3px!important;
    padding:3px 0 4px!important;
    border-top:1px solid #eef0f5;
    scroll-snap-type:x proximity;
  }
  .nav::-webkit-scrollbar{display:none}
  .nav button{
    flex:0 0 auto!important;
    scroll-snap-align:start;
    font-size:10px!important;
    line-height:1!important;
    padding:6px 8px!important;
    min-height:28px!important;
    border-radius:7px!important;
    background:#f7f8fc!important;
    color:#4f596f!important;
  }
  .nav button.active{
    background:#fff0ed!important;
    color:#d92d19!important;
    box-shadow:inset 0 0 0 1px #ffd2c9;
  }

  .main{padding:6px!important;padding-top:5px!important}

  /* Mobile actions use a stable grid instead of irregular wrapping. */
  .toolbar{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:6px!important;
    align-items:stretch!important;
    overflow:visible!important;
    margin-bottom:6px!important;
    padding:0!important;
  }
  .toolbar .search{
    grid-column:1/-1!important;
    width:100%!important;
    min-width:0!important;
  }
  .toolbar .search input{
    min-height:40px!important;
    padding:8px 10px 8px 34px!important;
    border-radius:9px!important;
    font-size:13px!important;
  }
  .toolbar .search:before{left:10px!important;top:5px!important;font-size:20px!important}
  .toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{
    width:100%!important;
    min-width:0!important;
    min-height:38px!important;
    padding:7px 8px!important;
    border-radius:8px!important;
    font-size:10px!important;
    line-height:1.05!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  #globalSearchBtn{grid-column:auto!important}

  /* Table remains a local horizontal scroller; page itself must not drift sideways. */
  #tableView>.panel{max-width:100%!important}
  #tableView .tablewrap{
    width:100%!important;
    max-width:100%!important;
    overflow-x:auto!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior-x:contain!important;
  }
  #tableView table.booking-fixed-grid{min-width:max-content!important}
  .pager{gap:5px!important;padding:4px 6px!important;min-width:0!important}
  .bookingtab-footerinfo{min-width:0!important;max-width:calc(100% - 92px)!important;font-size:8px!important}
  .pager .pages{flex:0 0 auto!important;gap:3px!important}
  .pager button{padding:4px 6px!important;font-size:8.5px!important}
}

@media(max-width:420px){
  .brand{min-width:96px!important;max-width:108px!important}
  .mark{width:41px!important;height:21px!important}
  .brand h1,.brand .title,.brand strong{font-size:8px!important}
  .syncbadge,.rolebadge,.activebadge,.userctrlbtn{font-size:6.8px!important;padding:3px 4px!important}
  .nav button{font-size:9.5px!important;padding:6px 7px!important}
  .toolbar{gap:5px!important}
  .toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{font-size:9.5px!important;padding:7px 6px!important}
}


/* ───────── V97 Filter-based Bulk Correction ───────── */
.toolbar .bulkcorrectbtn{
  flex:0 0 auto!important;white-space:nowrap!important;font-weight:900!important;
  border:1px solid #d9c78b!important;background:#fff9df!important;color:#725400!important;
}
.toolbar .bulkcorrectbtn:hover{background:#fff2b9!important;border-color:#c7aa4f!important}
body.bookingbox-maximized .main>.toolbar>*:not(.bookingmaxbtn):not(.bookingdefaultbtn):not(.bulkcorrectbtn):not(.formulafillbtn):not(#addBtn){display:none!important}
body.bookingbox-maximized .main>.toolbar .bulkcorrectbtn{display:inline-flex!important;min-height:27px!important;padding:5px 9px!important}
.bulkcorrect-dialog{width:min(720px,96vw)!important}
.bulkcorrect-body{padding:14px 16px;display:grid;gap:12px}
.bulkcorrect-scope{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:9px 10px;border:1px solid #e1e5ee;border-radius:10px;background:#f8f9fc;font-size:11px;color:#59627b}
.bulkcorrect-scope b{color:#172aa6;font-size:12px}
.bulkcorrect-grid{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(220px,1.2fr);gap:10px}
.bulkcorrect-field label{display:block;font-size:10px;font-weight:900;color:#59627b;margin-bottom:4px;text-transform:uppercase}
.bulkcorrect-field select,.bulkcorrect-field input,.bulkcorrect-field textarea{width:100%;border:1px solid #d9dfeb;border-radius:9px;padding:8px 9px;background:#fff;outline:none}
.bulkcorrect-field textarea{min-height:58px;resize:vertical}
.bulkcorrect-field select:focus,.bulkcorrect-field input:focus,.bulkcorrect-field textarea:focus{border-color:#172aa6;box-shadow:0 0 0 2px rgba(23,42,166,.08)}
.bulkcorrect-clear{display:flex;gap:7px;align-items:center;font-size:11px;color:#59627b;font-weight:750}
.bulkcorrect-clear input{width:auto!important}
.bulkcorrect-note{font-size:10.5px;line-height:1.45;color:#69728a;background:#fffaf0;border:1px solid #efe0b9;border-radius:9px;padding:8px 9px}
.bulkcorrect-progress{font-size:11px;font-weight:800;color:#172aa6;min-height:17px}
.bulkcorrect-actions{display:flex;gap:8px;justify-content:flex-end;align-items:center;padding:10px 16px;border-top:1px solid #e5e8f0;background:#fafbfe}
.bulkcorrect-actions .btn{min-width:110px}
@media(max-width:650px){
  .bulkcorrect-dialog{width:calc(100vw - 16px)!important}
  .bulkcorrect-body{padding:10px}
  .bulkcorrect-grid{grid-template-columns:1fr}
  .bulkcorrect-actions{padding:9px 10px;position:sticky;bottom:0}
}


/* V97.1: Bulk Correct visibility repair — same existing toolbar, no extra bar */
#bulkCorrectBtn:not(.hidden){display:inline-flex!important;align-items:center!important;justify-content:center!important}
#bulkCorrectBtn:disabled{opacity:.48!important;cursor:not-allowed!important}


/* V97.2 — selective bulk correction without adding another table column */
.serial-select-wrap{
  display:flex!important;align-items:center!important;justify-content:center!important;gap:5px!important;
  width:100%!important;min-width:0!important;overflow:hidden!important;
}
.booking-row-select{
  flex:0 0 auto!important;width:13px!important;height:13px!important;margin:0!important;
  accent-color:#172aa6!important;cursor:pointer!important;
}
.serial-select-wrap .bookingserial,
.serial-select-wrap .rowlink,
.serial-select-wrap > :not(.booking-row-select){min-width:0!important}
.bookingtab-footerinfo .selected-row-count{
  display:inline-flex;align-items:center;padding:1px 5px;border-radius:999px;
  background:#eef1ff;color:#172aa6;font-weight:900;white-space:nowrap
}
#bulkCorrectScope .selected-scope{color:#172aa6;font-weight:900}
@media(max-width:650px){
  .booking-row-select{width:15px!important;height:15px!important}
}



/* ───────── V98 Cascading Multi Filter · all booking sheets ───────── */
.toolbar .multifilterbtn{
  flex:0 0 auto!important;white-space:nowrap!important;font-weight:900!important;
  border:1px solid #cbd4ee!important;background:#f4f6ff!important;color:#223690!important;
}
.toolbar .multifilterbtn.active{background:#e7ebff!important;border-color:#8999df!important;color:#172aa6!important}
.toolbar .multifilterbtn:hover{background:#e9edff!important;border-color:#aeb9e8!important}
body.bookingbox-maximized .main>.toolbar>*:not(.bookingmaxbtn):not(.bookingdefaultbtn):not(.multifilterbtn):not(.rowselectbtn):not(.copytoolbtn):not(.bulkcorrectbtn):not(.formulafillbtn):not(#addBtn){display:none!important}
body.bookingbox-maximized .main>.toolbar .multifilterbtn{display:inline-flex!important;min-height:27px!important;padding:5px 9px!important}
.multifilter-dialog{width:min(860px,96vw)!important}
.multifilter-body{padding:14px 16px;display:grid;gap:12px}
.multifilter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.multifilter-field label{display:block;font-size:10px;font-weight:900;color:#59627b;margin-bottom:4px;text-transform:uppercase}
.multifilter-field select{width:100%;min-width:0;border:1px solid #d9dfeb;border-radius:9px;padding:8px 9px;background:#fff;color:#26324b;outline:none}
.multifilter-field select:focus{border-color:#172aa6;box-shadow:0 0 0 2px rgba(23,42,166,.08)}
.multifilter-summary{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:9px 10px;border:1px solid #dfe4ef;border-radius:10px;background:#f8f9fc;color:#59627b;font-size:11px;font-weight:750}
.multifilter-summary b{color:#172aa6}
.multifilter-note{font-size:10.5px;line-height:1.45;color:#69728a;background:#f7f9ff;border:1px solid #e0e5f4;border-radius:9px;padding:8px 9px}
.multifilter-actions{display:flex;gap:8px;justify-content:flex-end;padding:10px 16px;border-top:1px solid #e5e8f0;background:#fafbfe}
@media(max-width:700px){
  .multifilter-dialog{width:calc(100vw - 12px)!important}
  .multifilter-body{padding:10px}
  .multifilter-grid{grid-template-columns:1fr 1fr}
  .multifilter-actions{padding:9px 10px;position:sticky;bottom:0}
}
@media(max-width:430px){.multifilter-grid{grid-template-columns:1fr}}


/* ───────── V99 Any-column cascading Multi Filter ───────── */
.multifilter-grid{display:grid!important;grid-template-columns:1fr!important;gap:7px!important}
.multifilter-row{display:grid;grid-template-columns:28px minmax(170px,.8fr) minmax(220px,1.2fr) 34px;gap:7px;align-items:center;padding:7px;border:1px solid #e1e5ee;border-radius:9px;background:#fff;min-width:0}
.multifilter-rowno{font-size:10px;font-weight:950;color:#172aa6;text-align:center}
.multifilter-row select,.multifilter-row input{width:100%;min-width:0;border:1px solid #d9dfeb;border-radius:8px;padding:7px 8px;background:#fff;color:#26324b;outline:none;font-size:11px}
.multifilter-row select:focus,.multifilter-row input:focus{border-color:#172aa6;box-shadow:0 0 0 2px rgba(23,42,166,.08)}
.multifilter-remove{width:30px;height:30px;padding:0!important;border-radius:7px!important;background:#fff0ed!important;color:#bd2d1c!important}
.multifilter-add{padding:7px 10px!important;font-size:10px!important;background:#eef1ff!important;color:#172aa6!important}
.multifilter-valuewrap{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}
.multifilter-valuehint{font-size:9px;color:#7a8396;white-space:nowrap;max-width:92px;overflow:hidden;text-overflow:ellipsis}
@media(max-width:650px){
  .multifilter-row{grid-template-columns:24px minmax(0,1fr) 30px;gap:5px}
  .multifilter-valuewrap{grid-column:2/4;grid-row:2}
  .multifilter-remove{grid-column:3;grid-row:1}
}


/* ───────── V99.1 Fast row selection: all filtered / current page / clear / shift-range ───────── */
.toolbar .rowselectbtn{
  flex:0 0 auto!important;white-space:nowrap!important;font-weight:900!important;
  border:1px solid #cbd4ee!important;background:#f7f8ff!important;color:#223690!important;
}
.toolbar .rowselectbtn.active{background:#e7ebff!important;border-color:#8999df!important;color:#172aa6!important}
#rowSelectModal .dialog{width:min(460px,calc(100vw - 20px))!important}
.rowselect-body{padding:14px 16px;display:grid;gap:9px}
.rowselect-summary{padding:9px 10px;border:1px solid #dfe4ef;border-radius:9px;background:#f8f9fc;color:#59627b;font-size:11px;line-height:1.4}
.rowselect-summary b{color:#172aa6}
.rowselect-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.rowselect-actions .btn{min-height:38px;padding:8px 10px!important}
.rowselect-note{font-size:10px;color:#727b8e;line-height:1.4}
@media(max-width:480px){.rowselect-actions{grid-template-columns:1fr}}


/* V100 · Bulk Booking Excel */

/* ───────── V104 Filter Select All + multi-column Copy / Replace All ───────── */
.toolbar .selectallcopybtn,.toolbar .replaceallpastebtn{
  flex:0 0 auto!important;white-space:nowrap!important;font-weight:900!important;
  border:1px solid #ccd5ee!important;background:#f7f8ff!important;color:#223690!important;
}
.toolbar .selectallcopybtn:hover,.toolbar .replaceallpastebtn:hover{background:#e9edff!important;border-color:#aeb9e8!important}
.toolbar .replaceallpastebtn{background:#fff8e7!important;border-color:#e4c77a!important;color:#7b5400!important}
.toolbar .replaceallpastebtn:hover{background:#fff0c9!important}
body.bookingbox-maximized .main>.toolbar .selectallcopybtn:not(.hidden),body.bookingbox-maximized .main>.toolbar .replaceallpastebtn:not(.hidden){display:inline-flex!important;min-height:27px!important;padding:5px 9px!important}
#tableView th.bulk-col-selected,#tableView td.bulk-col-selected{background:#eef1ff!important;box-shadow:inset 2px 0 0 #8494dc,inset -2px 0 0 #8494dc}
#tableView th.bulk-col-selected{background:#dfe5ff!important;color:#172aa6!important}
.colbulk-toggle{float:right;margin-left:4px;width:18px;height:18px;padding:0!important;border:1px solid #c9d1ea;border-radius:5px;background:#fff;color:#50609a;font-size:10px;line-height:16px;font-weight:950;cursor:pointer;position:relative;z-index:5}
.colbulk-toggle:hover{border-color:#7889d2;background:#f2f4ff;color:#172aa6}
.colbulk-toggle.active{background:#172aa6;color:#fff;border-color:#172aa6}
#replaceAllModal .dialog{width:min(760px,calc(100vw - 20px))!important}
.replaceall-body{padding:14px 16px;display:grid;gap:10px}
.replaceall-scope{padding:9px 10px;border:1px solid #dfe4ef;border-radius:9px;background:#f8f9fc;color:#59627b;font-size:11px;line-height:1.45}
.replaceall-scope b{color:#172aa6}
.replaceall-columns{font-size:10px;color:#5f697d;line-height:1.5;max-height:76px;overflow:auto;border:1px solid #e3e7f0;border-radius:8px;padding:7px 9px;background:#fff}
.replaceall-field{display:grid;gap:5px}
.replaceall-field label{font-size:10px;font-weight:900;color:#59627b;text-transform:uppercase}
.replaceall-field textarea{width:100%;min-height:145px;resize:vertical;border:1px solid #d7ddea;border-radius:9px;padding:9px 10px;font:11px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;outline:none}
.replaceall-field textarea:focus{border-color:#7688d4;box-shadow:0 0 0 2px rgba(23,42,166,.08)}
.replaceall-tools{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.replaceall-note{font-size:10px;color:#727b8e;line-height:1.45}
.replaceall-progress{font-size:10px;font-weight:850;color:#263377;min-height:15px}
.replaceall-actions{padding:10px 16px;border-top:1px solid #e7eaf1;display:flex;justify-content:flex-end;gap:8px}


/* ───────── V105 Direct cell edit + multi-value filter helpers ───────── */
#tableView td.v105-cell-editable{cursor:cell}
#tableView td.v105-cell-editable:hover{outline:1px solid rgba(23,42,166,.28);outline-offset:-1px;background-image:linear-gradient(rgba(245,247,255,.55),rgba(245,247,255,.55))}
#tableView td.v105-cell-editing{padding:1px 2px!important;background:#fffbe8!important;outline:2px solid #e0b53b!important;outline-offset:-2px}
#tableView .v105-cell-editor{width:100%!important;min-width:70px!important;box-sizing:border-box!important;border:1px solid #7d8ed4!important;border-radius:5px!important;padding:4px 5px!important;background:#fff!important;color:#17203a!important;font:inherit!important;line-height:1.25!important;outline:none!important}
#tableView .v105-cell-editor.smartac-open{border-color:#172aa6!important;box-shadow:0 0 0 3px rgba(23,42,166,.10)!important}
#tableView input.v105-cell-editor[type="date"],#tableView input.v105-cell-editor[type="month"]{cursor:pointer!important;min-width:128px!important}
#tableView textarea.v105-cell-editor{min-height:52px!important;resize:vertical!important;white-space:pre-wrap!important}
#tableView .filter-tools-cell{min-width:170px!important;white-space:normal!important;padding:3px!important}
#tableView .filter-tools{display:flex;gap:3px;align-items:center;flex-wrap:wrap}
#tableView .filter-tools button{font-size:9px!important;line-height:1!important;min-height:24px!important;padding:4px 6px!important;border-radius:6px!important}
#tableView .filter-copy-all{background:#e9edff!important;color:#172aa6!important;border:1px solid #aab6e8!important}
#tableView .filter-replace-all{background:#fff3cf!important;color:#795300!important;border:1px solid #dec374!important}
#tableView .filter-multi-hint{display:block;font-size:8px;color:#7a8396;line-height:1.15;margin-top:2px}
.multifilter-note .v105-filter-help{display:block;margin-top:6px;padding:6px 8px;border-radius:7px;background:#eef1ff;color:#263377}

.bulkbookingexcelbtn{white-space:nowrap!important;font-weight:900!important}
.bulkbookingexcel-dialog{width:min(920px,96vw)!important}
.bulkbookingexcel-body{padding:14px 16px}
.bulkbookingexcel-actions{display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.bulkbookingexcel-scope{display:grid;gap:4px;min-width:220px;font-size:10px;font-weight:900;color:#59627b}
.bulkbookingexcel-scope .control{min-width:220px}
.bulkbookingexcel-note{margin-top:12px;padding:10px 12px;border:1px solid #e1e5ee;border-radius:10px;background:#f8f9fc;color:#5f697d;font-size:11px;line-height:1.45}
.bulkbookingexcel-status{margin-top:10px;font-size:11px;font-weight:850;color:#263377}
.bulkbookingexcel-preview{margin-top:9px;max-height:44vh;overflow:auto;border:1px solid #e4e8f0;border-radius:10px;background:#fff}
.bulkbookingexcel-preview table{width:100%!important;min-width:0!important;font-size:10px!important}
.bulkbookingexcel-preview th,.bulkbookingexcel-preview td{position:static!important;min-width:0!important;max-width:none!important;padding:6px 7px!important;white-space:normal!important;overflow-wrap:anywhere!important}
.bulkbookingexcel-preview th{background:#f2f4fb!important;color:#263377!important}
.bulkbookingexcel-ok{color:#16743a;font-weight:900}
.bulkbookingexcel-warn{color:#a15f00;font-weight:900}
@media(max-width:650px){
  .bulkbookingexcel-dialog{width:calc(100vw - 12px)!important}
  .bulkbookingexcel-actions{display:grid;grid-template-columns:1fr!important}
  .bulkbookingexcel-scope,.bulkbookingexcel-scope .control{min-width:0;width:100%}
  .bulkbookingexcel-actions .btn{width:100%}
}


/* V100.1 · keep Bulk Booking Excel unmistakably visible beside New Booking */
.toolbar .bulkbookingexcelbtn{
  background:#172aa6!important;color:#fff!important;border:1px solid #172aa6!important;
  box-shadow:0 3px 9px rgba(23,42,166,.16)!important;
}
.toolbar .bulkbookingexcelbtn:hover:not(:disabled){background:#0f207f!important}
.toolbar .bulkbookingexcelbtn:disabled{opacity:.52!important;cursor:not-allowed!important}
@media(max-width:700px){
  /* Search occupies row 1; New Booking + Bulk Booking are the first two visible actions on row 2. */
  #addBtn,#bulkBookingExcelBtn{display:inline-flex;align-items:center;justify-content:center}
}


/* ───────── V109 Excel dropdown import + V108 Blank filter + booking compliance / Genuine indicators ───────── */
.colfilterwrap{display:flex;align-items:center;gap:2px;width:100%;min-width:0}
.colfilterwrap .colfilter{flex:1 1 auto;min-width:0!important}
.filterblankbtn{flex:0 0 auto;border:1px solid #cfd6e5;background:#f7f8fc;color:#667085;border-radius:5px;padding:2px 4px;font-size:7.5px;font-weight:900;line-height:1.05;cursor:pointer;min-width:30px;height:21px}
.filterblankbtn:hover{background:#eef1f8;color:#26324b}
.filterblankbtn.active{background:#e8f7ec;border-color:#6fbd7e;color:#187438}
.serial-compliance-wrap{display:flex;align-items:flex-start;gap:4px;min-width:0}
.serial-compliance-wrap>.serial-select-wrap{min-width:0;flex:1 1 auto}
.booking-flag-btn{border:1px solid #cfd6e5;background:#f7f8fc;color:#6c7487;border-radius:999px;min-width:22px;height:22px;padding:0 5px;font-size:9px;font-weight:950;line-height:20px;cursor:pointer;white-space:nowrap;flex:0 0 auto}
.booking-flag-btn:hover{background:#eef1f8}
.booking-flag-btn.done{background:#e7f8eb;border-color:#62bc75;color:#08762c;box-shadow:0 0 0 1px rgba(40,150,70,.05) inset}
.booking-flag-btn.partial{background:#fff6d9;border-color:#e0bc56;color:#825f00}
.booking-flag-btn:disabled{opacity:.55;cursor:not-allowed}
.booking-flag-mini{font-size:7px;font-weight:950;margin-left:2px;vertical-align:1px}
.compliance-popover{position:fixed;z-index:10050;min-width:230px;max-width:300px;background:#fff;border:1px solid #dce2ec;border-radius:12px;box-shadow:0 14px 38px rgba(32,42,68,.22);padding:10px}
.compliance-popover.hidden{display:none!important}
.compliance-popover .cp-title{font-size:11px;font-weight:950;color:#172aa6;margin-bottom:3px}
.compliance-popover .cp-serial{font-size:9px;color:#70798f;margin-bottom:8px;word-break:break-word}
.compliance-popover .cp-grid{display:grid;grid-template-columns:1fr;gap:6px}
.compliance-popover .cp-action-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;align-items:stretch}
.compliance-popover .cp-export{border:1px solid #cbd5f4;border-radius:8px;background:#eef3ff;color:#18379b;font-size:8px;font-weight:950;padding:4px 6px;cursor:pointer;white-space:nowrap}
.compliance-popover .cp-export:hover{background:#dfe8ff}
.compliance-popover .cp-export:disabled{opacity:.45;cursor:not-allowed}
.compliance-popover .cp-bulk-note{font-size:8px;color:#69748c;margin-top:7px;line-height:1.35}
.compliance-popover .cp-check{display:flex;align-items:center;justify-content:space-between;border:1px solid #dfe4ed;border-radius:9px;background:#fafbfe;padding:7px 9px;font-size:10px;font-weight:850;color:#364059;cursor:pointer}
.compliance-popover .cp-check.on{background:#e7f8eb;border-color:#6dbb7c;color:#08762c}
.compliance-popover .cp-check .mark{font-size:13px;font-weight:1000}
.compliance-popover .cp-foot{font-size:8.5px;color:#7b8497;margin-top:8px;line-height:1.35}
@media(max-width:700px){.filterblankbtn{min-width:26px;font-size:7px;padding:2px 3px}.booking-flag-btn{min-width:20px;height:20px;line-height:18px;padding:0 4px;font-size:8px}}

/* V100.2: Booking Executive can edit historical rows; only editable Serial Number is age-limited to 10 days. Restriction is silent. */
/* V102 Hybrid Repair: resumable Google backup rebuild + dedicated Devices approval tab. */
/* V106 Smart Cell Edit: autocomplete dropdown while typing + native date/month picker. */
/* V107: Pending Excel toolbar export visible to Booking Executive / all roles with pendingReportExport permission. */
/* V109: Excel-source dropdown options imported from Booking MIS 2026-27-3.xlsx into smart autocomplete across all four tabs. */
/* V110: preset Excel dropdowns open immediately for OLD + NEW booking correction/edit fields. */
/* V108: blank-filter selector + Cloud-backed NABL compliance / Genuine flags beside serial. */

/* V120.12 additive business-control styles */
.toolbar .historybtn{white-space:nowrap;font-weight:850;background:#eef1ff;color:#172aa6;border:1px solid #d5daf8}
.toolbar .historybtn:disabled{opacity:.4;cursor:not-allowed}
.toolbar .deleteselectedbtn{white-space:nowrap;font-weight:900}
.bulkcorrect-lines{display:grid;gap:9px}
.bulkcorrect-lines-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.bulkcorrect-line{display:grid;grid-template-columns:minmax(190px,.9fr) minmax(220px,1.2fr) auto auto;gap:8px;align-items:end;padding:9px;border:1px solid #e1e5ee;border-radius:11px;background:#fbfcff}
.bulkcorrect-line .bulkcorrect-field{min-width:0}
.bulkcorrect-line-clear{display:flex;align-items:center;gap:5px;white-space:nowrap;font-size:10.5px;font-weight:800;color:#59627b;padding:0 2px 8px}
.bulkcorrect-line-remove{margin-bottom:1px;min-width:38px;padding:8px!important}
.bulkcorrect-line select,.bulkcorrect-line input{width:100%;border:1px solid #d9dfeb;border-radius:9px;padding:8px 9px;background:#fff;outline:none}
.bulkcorrect-line select:focus,.bulkcorrect-line input:focus{border-color:#172aa6;box-shadow:0 0 0 2px rgba(23,42,166,.08)}
.lostsales-card .v{color:#b42318}
.lostsales-meta{font-size:11px;color:#6d3740}
.lostflag{display:inline-flex;padding:2px 6px;border-radius:999px;background:#fff0ed;color:#b42318;font-weight:850;font-size:10px}
@media(max-width:760px){.bulkcorrect-line{grid-template-columns:1fr}.bulkcorrect-line-clear{padding:0}.bulkcorrect-line-remove{width:100%}}


/* V120.12 dashboard drill-down links */
.dashcellbtn,.insightdrill{border:0;background:transparent;color:inherit;font:inherit;padding:0;cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}
.dashcellbtn:hover,.insightdrill:hover{color:#172aa6;text-decoration-style:solid}
.pivottable .dashcellbtn{font-weight:inherit;width:100%;text-align:right}
.insightname .insightdrill{text-align:left;font-weight:700}

/* V120.12 · dashboard filter bar + filter-aware exports */
.dashboardfilterbar{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin:0 0 10px;padding:8px 10px;border:1px solid #dfe4f4;border-radius:12px;background:#f8f9ff;box-shadow:0 4px 14px rgba(30,45,120,.05)}
.dashboardfilterbar .df-title{font-weight:950;color:#172aa6;margin-right:2px;white-space:nowrap}
.dashboardfilterbar .df-search{min-width:220px;flex:1 1 280px;border:1px solid #d5daea;border-radius:8px;padding:7px 9px;background:#fff;font:inherit}
.dashboardfilterbar select{min-width:130px;max-width:210px}
.dashboardfilterbar .df-summary{font-size:10px;color:#596174;flex:1 1 100%;padding-top:2px}
.dashboardfilterbar .df-summary b{color:#172aa6}
@media(max-width:700px){.dashboardfilterbar{gap:5px}.dashboardfilterbar .df-search{min-width:100%;flex-basis:100%}.dashboardfilterbar select{min-width:0;flex:1 1 42%}.dashboardfilterbar .btn{font-size:9px;padding:6px 7px}}

/* V120.16.8 · Excel-style drag fill and safe calculated fill */
.toolbar .formulafillbtn{white-space:nowrap;font-weight:900;border:1px solid #a9d5c7;background:#edfff8;color:#116149}
.toolbar .formulafillbtn:hover{background:#dff8ef;border-color:#79bca7}
body.bookingbox-maximized .main>.toolbar .formulafillbtn:not(.hidden){display:inline-flex!important;min-height:27px!important;padding:5px 9px!important}
#tableView td.sheet-fill-source{position:relative!important;outline:2px solid #188765!important;outline-offset:-2px;z-index:3}
#tableView td.sheet-fill-preview{background:#dcf8ed!important;box-shadow:inset 0 0 0 1px #56ad91!important}
#tableView td.sheet-calc-selected{background:#e8f1ff!important;box-shadow:inset 0 0 0 1px #6d94d8!important}
.sheet-fill-handle{position:absolute;right:-4px;bottom:-4px;width:10px;height:10px;border:1px solid #fff;border-radius:2px;background:#188765;box-shadow:0 0 0 1px #0d6249;cursor:crosshair;z-index:30;padding:0}
.sheet-fill-handle:hover{transform:scale(1.25)}
.sheet-selection-summary{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:7px 10px;border-top:1px solid #dce5ef;background:#f3f8ff;color:#40506d;font-size:10.5px;line-height:1.35}
.sheet-selection-summary b{color:#173f83}.sheet-selection-summary .sheet-summary-sum{color:#0b6b4f;font-weight:950}
.sheet-selection-summary button{margin-left:auto;border:1px solid #a9bfdc;border-radius:7px;background:#fff;color:#173f83;padding:4px 7px;font-size:9px;font-weight:900;cursor:pointer}
.sheetformula-dialog{width:min(820px,96vw)!important}
.sheetformula-body{display:grid;gap:11px;padding:14px 16px}
.sheetformula-scope{padding:9px 10px;border:1px solid #dce4ec;border-radius:10px;background:#f8fbfa;color:#50635d;font-size:11px;line-height:1.45}
.sheetformula-scope b{color:#116149}
.sheetformula-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.sheetformula-field label{display:block;margin-bottom:4px;font-size:10px;font-weight:900;color:#59627b;text-transform:uppercase}
.sheetformula-field input,.sheetformula-field select,.sheetformula-field textarea{width:100%;border:1px solid #d6e0dd;border-radius:9px;padding:8px 9px;background:#fff;outline:none}
.sheetformula-field textarea{min-height:78px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.sheetformula-field input:focus,.sheetformula-field select:focus,.sheetformula-field textarea:focus{border-color:#188765;box-shadow:0 0 0 2px rgba(24,135,101,.1)}
.sheetformula-wide{grid-column:1/-1}
.sheetformula-help{padding:10px;border:1px solid #d9e8e3;border-radius:10px;background:#f1fbf7;font-size:10.5px;line-height:1.55;color:#53645f}
.sheetformula-help code{padding:1px 4px;border-radius:4px;background:#fff;color:#135c48}
.sheetformula-examples{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}
.sheetformula-example{border:1px solid #b9d9cf;border-radius:999px;background:#fff;color:#116149;padding:4px 7px;font-size:9.5px;font-weight:800;cursor:pointer}
.sheetformula-progress{min-height:18px;color:#116149;font-size:11px;font-weight:850}
.sheetformula-actions{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid #e3e8e6;background:#fbfdfc}
@media(max-width:680px){.sheetformula-grid{grid-template-columns:1fr}.sheetformula-wide{grid-column:auto}.sheetformula-body{padding:10px}.sheet-fill-handle{width:13px;height:13px}}


/* V120.16.12 · client-wise billing desk + duplicate-only Excel paste/fill */
.clientbill-btn{font-weight:950;background:#fff6df!important;border-color:#e4bd60!important;color:#785000!important}
.clientbill-dialog{width:min(1180px,97vw)!important;max-height:92vh;display:flex;flex-direction:column}
.clientbill-body{padding:12px 14px;display:grid;gap:10px;min-height:0}
.clientbill-controls{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(260px,1.6fr) minmax(180px,1fr) 160px auto;gap:8px;align-items:end}
.clientbill-field label{display:block;margin-bottom:4px;font-size:9.5px;font-weight:950;text-transform:uppercase;color:#59627b}
.clientbill-field input,.clientbill-field select{width:100%;border:1px solid #d7ddea;border-radius:9px;padding:8px 9px;background:#fff;outline:none}
.clientbill-field input:focus,.clientbill-field select:focus{border-color:#172aa6;box-shadow:0 0 0 2px rgba(23,42,166,.08)}
.clientbill-copy{white-space:nowrap;font-weight:900}
.clientbill-summary{border:1px solid #e0e5ef;border-radius:9px;background:#f8faff;padding:8px 10px;font-size:10.5px;color:#59627b}.clientbill-summary b{color:#172aa6}
.clientbill-tablewrap{overflow:auto;max-height:52vh;border:1px solid #e1e5ee;border-radius:10px;background:#fff}
.clientbill-table{width:100%;border-collapse:collapse;font-size:10px}.clientbill-table th{position:sticky;top:0;z-index:2;background:#f3f5fb;color:#34405e;text-align:left;padding:7px 8px;border-bottom:1px solid #dfe4ef;white-space:nowrap}.clientbill-table td{padding:6px 8px;border-bottom:1px solid #edf0f5;vertical-align:top}.clientbill-table td.amount{text-align:right;white-space:nowrap}.clientbill-empty{text-align:center!important;color:#7b8497;padding:22px!important}
.clientbill-progress{min-height:18px;font-size:10.5px;font-weight:850;color:#116149}
.clientbill-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #e2e6ef;background:#fbfcff}.clientbill-footer .small{margin-right:auto;max-width:620px}
.bulkdup-edit-cell{position:relative!important}.bulkdup-edit-cell.bulkdup-selected{box-shadow:inset 0 0 0 2px #5c7edb!important;background:#edf3ff!important}.bulkdup-edit-cell.bulkdup-active{box-shadow:inset 0 0 0 2px #173f83!important}.bulkdup-edit-cell.bulkdup-fill-preview{background:#ddf8ed!important;box-shadow:inset 0 0 0 2px #188765!important}
.bulkdup-fill-handle{display:none;position:absolute;right:1px;bottom:1px;width:9px;height:9px;border:1px solid #fff;border-radius:2px;background:#188765;box-shadow:0 0 0 1px #0d6249;cursor:crosshair;z-index:15}.bulkdup-active .bulkdup-fill-handle{display:block}
@media(max-width:820px){.clientbill-controls{grid-template-columns:1fr 1fr}.clientbill-client{grid-column:1/-1}.clientbill-copy{grid-column:1/-1}.clientbill-footer{flex-wrap:wrap}.clientbill-footer .small{flex:1 1 100%;max-width:none}}

/* V120.16.13 · Duplicate-box-only Excel selection/copy/paste for Booking + Finance */
.bulkdup-row td.bulkdup-selected{box-shadow:inset 0 0 0 2px #5c7edb!important;background:#edf3ff!important}
.bulkdup-row td.bulkdup-active{box-shadow:inset 0 0 0 2px #173f83!important}
.bulkdup-row td.bulkdup-fill-preview{background:#ddf8ed!important;box-shadow:inset 0 0 0 2px #188765!important}
.bulkdup-selectall,.bulkdup-copy,.bulkdup-paste{font-weight:900!important;white-space:nowrap!important}
.bulkdup-selectall{background:#eef4ff!important;border-color:#9db3e8!important;color:#173f83!important}
.bulkdup-copy{background:#f3f8ff!important;border-color:#b9c9eb!important;color:#274c92!important}
.bulkdup-paste{background:#f0fbf7!important;border-color:#9ed8c6!important;color:#126b51!important}
.bulkdup-copy:disabled,.bulkdup-paste:disabled{opacity:.48!important;cursor:not-allowed!important}
body.bookingbox-maximized .bulkdup-selectall,
body.bookingbox-maximized .bulkdup-copy,
body.bookingbox-maximized .bulkdup-paste{display:inline-flex!important}

.bulkdup-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 10px;border:1px solid #ccd9f3;border-bottom:0;background:#f7faff;position:sticky;top:0;z-index:24}
.bulkdup-topbar-left{display:flex;align-items:center;gap:8px;min-width:0}.bulkdup-topbar-left b{color:#173f83;font-size:11px;white-space:nowrap}.bulkdup-topbar-left span{font-size:9px;color:#66728b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bulkdup-topbar-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}
@media(max-width:760px){.bulkdup-topbar{align-items:flex-start;flex-direction:column}.bulkdup-topbar-actions{width:100%;overflow-x:auto}.bulkdup-topbar-left span{white-space:normal}}

/* V120.16.18 — billing target inside Agent/Sub Executive due finder */
.clientbill-table tr.clientbill-target-row td{background:#eef8f0}.clientbill-load-client.active{font-weight:800;text-decoration:underline}

/* V120.16.22 — one dynamic C handle only on the exact hovered non-blank editable cell. */
#tableView td.v1219-copy-cell{position:relative!important;padding-right:20px!important}
#tableView .v1219-copy-handle{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:16px;height:16px;min-width:16px;padding:0;border:1px solid #7b879a;border-radius:4px;background:#fff;color:#24324a;font-size:9px;font-weight:950;line-height:14px;text-align:center;cursor:ns-resize;z-index:20;box-shadow:0 1px 3px rgba(20,35,60,.12)}
#tableView td.v1219-copy-preview{box-shadow:inset 0 0 0 2px #188765!important;background:#e9f8f2!important}

/* V120.16.25 — Amendment dialog internal scrolling. */
#amendModal{overflow:hidden!important}
#amendModal .amenddialog{display:flex;flex-direction:column;max-height:calc(100vh - 32px);overflow:hidden}
#amendModal .dialoghead{flex:0 0 auto}
#amendModal #amendForm{display:block;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
#amendModal #amendForm .dialogfoot{position:sticky;bottom:0;z-index:8;background:#fafcff}
@media(max-width:760px){#amendModal .amenddialog{max-height:calc(100dvh - 12px)}#amendModal{padding:6px}}

/* V120.16.28 — Admin live-device cell locator */
.activedevrow.activedevjump{cursor:pointer}.activedevrow.activedevjump:hover{background:rgba(76,111,255,.08)}
.activedevwhere{font-size:10px;font-weight:700;color:#516078;margin-top:3px;white-space:normal}
#tableView td.v1228-admin-live-cell{outline:3px solid #ff9f1c!important;outline-offset:-3px!important;box-shadow:0 0 0 4px rgba(255,159,28,.22)!important;animation:v1228LiveCellPulse .8s ease-in-out 3}
@keyframes v1228LiveCellPulse{50%{box-shadow:0 0 0 8px rgba(255,159,28,.32)}}

/* V120.16.29 — blank Bill Number selection/copy */
.clientbill-check{width:34px!important;text-align:center!important}.clientbill-check input{width:15px;height:15px;cursor:pointer}.clientbill-table tr:has(.clientbill-check input:checked) td{background:#f1f7ff}.clientbill-field.hidden{display:none!important}
/* V120.16.27 — Pending Report customer/date/age control. */
.pending-control-panel{border-color:#dbe4ff;background:linear-gradient(180deg,#fff 0%,#fbfcff 100%)}
.pending-control-grid{display:grid;grid-template-columns:minmax(220px,1.7fr) minmax(140px,.8fr) minmax(145px,.8fr) minmax(145px,.8fr);gap:9px;padding:0 12px 10px}
.pr-field{display:flex;flex-direction:column;gap:4px}.pr-field label{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.03em;color:#596174}.pr-field select,.pr-field input{width:100%;border:1px solid #d5daea;border-radius:8px;padding:8px 9px;background:#fff;font:inherit;min-height:34px}.pr-masked{border:1px solid #e1e5ec;border-radius:8px;padding:8px 9px;color:#7a8294;background:#f5f6f8;font-size:11px}
.pending-summary-cards{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:8px;padding:0 12px 10px}.pending-mini{border:1px solid #e1e6f2;border-radius:10px;padding:9px 10px;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:8px}.pending-mini span{font-size:10px;color:#667085;font-weight:800}.pending-mini b{font-size:18px;color:#172aa6}.pending-mini.overdue b{color:#b42318}
.pending-age-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 12px 7px;font-size:11px}.pending-age-title span{color:#667085;font-size:10px}.pending-age-grid{display:grid;grid-template-columns:repeat(7,minmax(90px,1fr));gap:7px;padding:0 12px 12px}.pending-age-card{border:1px solid #dfe4ef;border-radius:10px;background:#fff;padding:8px 7px;cursor:pointer;text-align:left;transition:.15s ease}.pending-age-card:hover{border-color:#8ca5df;transform:translateY(-1px)}.pending-age-card.active{border-color:#172aa6;box-shadow:0 0 0 2px rgba(23,42,166,.10);background:#eef1ff}.pending-age-card span{display:block;font-size:9px;font-weight:850;color:#596174;white-space:nowrap}.pending-age-card b{display:block;font-size:17px;color:#172aa6;margin-top:2px}
@media(max-width:900px){.pending-control-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pending-age-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:600px){.pending-control-grid{grid-template-columns:1fr}.pending-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.pending-age-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pending-age-title{align-items:flex-start;flex-direction:column}}

/* V120.16.55 · NABL TRF Maker */
.trfmakerbtn{border-color:#5d3fd3;background:#f4f0ff;color:#4025a8;font-weight:800}.trfmakerbtn.active{background:#5d3fd3;color:#fff}.trfmaker-overlay{position:fixed;inset:0;z-index:10050;background:#eef2f7;display:none}.trfmaker-overlay.show{display:block}.trfmaker-shell{height:100%;display:flex;flex-direction:column}.trfmaker-head{height:52px;min-height:52px;padding:8px 12px;background:#fff;border-bottom:1px solid #dbe1ea;display:flex;align-items:center;justify-content:space-between;gap:12px}.trfmaker-head span{font-size:12px;color:#64748b;font-weight:500}.trfmaker-head .btn{white-space:nowrap}.trfmaker-shell iframe{border:0;width:100%;flex:1;background:#f4f6f9}.trfmaker-open{overflow:hidden!important}

/* V120.16.57 — NABL Test Parameters column uses the inbuilt TRF NABL selector directly. */
.nabl-table-param-cell{display:flex;flex-direction:column;gap:5px;min-width:104px;align-items:flex-start}
.nabl-table-param-value{font-size:9px;line-height:1.25;max-width:100%;white-space:pre-line;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.nabl-table-param-empty{color:#9a5b00;font-weight:800}
.nabl-table-param-btn{font-size:8px;padding:4px 6px;background:#edf4ff;border-color:#b8caf5;color:#18379b}

/* V120.16.65 — explicit Save Now + persistent save failure banner. */
.savenowbtn{font-weight:950!important;border-color:#8fb7a5!important;background:#eefaf4!important;color:#125c3e!important;white-space:nowrap}
.savenowbtn.pending{border-color:#d8a531!important;background:#fff7df!important;color:#765000!important}
.savenowbtn.saving{border-color:#7796d8!important;background:#edf3ff!important;color:#173f83!important}
.savenowbtn.saved{border-color:#8fb7a5!important;background:#eefaf4!important;color:#125c3e!important}
.savenowbtn.error{border-color:#d64545!important;background:#fff0f0!important;color:#9f1d1d!important}
.save-error-banner{margin:8px 10px 0;border:1px solid #d64545;background:#fff1f1;color:#7e1c1c;border-radius:10px;padding:9px 11px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 2px 8px rgba(120,20,20,.08)}
.save-error-banner.hidden{display:none!important}.save-error-banner>div{min-width:0;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.save-error-banner b{font-size:11px}.save-error-banner span{font-size:10px;line-height:1.35}.save-error-banner .btn{flex:0 0 auto;padding:6px 10px;font-size:9px}
@media(max-width:680px){.save-error-banner{align-items:stretch;flex-direction:column}.save-error-banner .btn{align-self:flex-start}.savenowbtn{order:-1}}

/* V120.16.71 · CAPA Case Hub */
.booking-flag-btn.capa-flag{background:#f5f1ff;border-color:#cbbdf8;color:#5635b5}
.booking-flag-btn.capa-flag.capa-open{background:#fff0ed;border-color:#f09a88;color:#b42318;box-shadow:0 0 0 1px rgba(180,35,24,.05) inset}
.booking-flag-btn.capa-flag.done{background:#e8f8ec;border-color:#78c98a;color:#08762c}
.capa-dashboard-banner{display:grid;grid-template-columns:minmax(240px,1.25fr) minmax(360px,1.8fr) auto;gap:14px;align-items:center;margin:0 0 10px;padding:13px 15px;border:1px solid #d9d4ff;border-radius:15px;background:linear-gradient(110deg,#fff3ee 0%,#f7f2ff 52%,#eaf8ff 100%);box-shadow:0 8px 24px rgba(67,57,150,.08);cursor:pointer}
.capa-dash-title{font-size:17px;font-weight:950;color:#241a5d}.capa-dash-sub{font-size:10px;color:#667085;margin-top:2px}
.capa-dash-metrics{display:grid;grid-template-columns:repeat(4,minmax(70px,1fr));gap:7px}.capa-dash-metrics span{background:rgba(255,255,255,.78);border:1px solid #e8e4f9;border-radius:10px;padding:7px 9px;font-size:9px;color:#667085;font-weight:800}.capa-dash-metrics b{display:block;font-size:18px;color:#4030b4;line-height:1.1}.capa-dash-metrics .open b{color:#d76510}.capa-dash-metrics .overdue b{color:#b42318}
.capa-dialog{width:min(1240px,100%)}.capa-dialog .dialoghead{background:linear-gradient(100deg,#fff0eb,#f6f1ff,#eaf8ff)}
.capa-dialog .dialogfoot{position:sticky;bottom:0;background:#fff;border-top:1px solid #e7eaf1;z-index:2}
.capa-section{border-bottom:1px solid #eef0f6;padding:3px 0 8px}.capa-section-title{padding:10px 16px 0;font-size:11px;font-weight:950;color:#392b90;text-transform:uppercase;letter-spacing:.04em}.capa-grid{padding-top:10px}.capa-grid .field.capa-wide{grid-column:1/-1}.capa-grid textarea{min-height:74px;resize:vertical}.capa-grid input[readonly],.capa-grid textarea[readonly],.capa-grid select:disabled{background:#f6f7fb;color:#697386}
.capa-remarks{padding:0 16px 14px}.capa-remark-list{display:grid;gap:7px;max-height:180px;overflow:auto;margin-top:8px}.capa-remark{border:1px solid #e5e7ef;border-radius:10px;padding:8px 10px;background:#fafbff}.capa-remark b{font-size:10px;color:#26306d}.capa-remark span{font-size:9px;color:#8991a3;margin-left:8px}.capa-remark p{margin:4px 0 0;font-size:11px;white-space:pre-wrap}.capa-remark-add textarea{width:100%;min-height:62px;margin-top:8px;border:1px solid #d9deea;border-radius:10px;padding:9px;font:inherit}
.capa-hub{display:grid;gap:12px}.capa-hub-head{background:linear-gradient(115deg,#fff4ef,#f8f5ff 52%,#eefaff)}.capa-dept-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:0 12px 10px}.capa-dept-card{border:1px solid #e2e4ef;border-radius:13px;background:#fff;padding:12px;text-align:left;cursor:pointer}.capa-dept-card b{display:block;font-size:13px;color:#1f2444}.capa-dept-card span{display:block;margin-top:3px;font-size:10px;color:#697386}.capa-dept-card.active{border-color:#7f5cf1;box-shadow:0 0 0 2px rgba(127,92,241,.11);background:#fbf9ff}
.capa-kpis{display:grid;grid-template-columns:repeat(5,minmax(100px,1fr));gap:8px;padding:0 12px 12px}.capa-kpis>div{border:1px solid #e6e8f0;background:#fff;border-radius:11px;padding:9px 10px}.capa-kpis span{display:block;font-size:9px;font-weight:850;color:#687086;text-transform:uppercase}.capa-kpis b{font-size:20px;color:#4938ba}.capa-kpis .bad b{color:#b42318}
.capa-filters{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.capa-filters input,.capa-filters select{min-width:160px;border:1px solid #d7dbea;border-radius:8px;padding:7px 8px;background:#fff}.capa-filters input{min-width:260px}.capa-tablewrap{max-height:62vh}.capa-tablewrap td{vertical-align:top}.capa-status{display:inline-block;border-radius:999px;padding:3px 7px;font-size:8px;font-weight:950;text-transform:uppercase;background:#fff2d9;color:#8a5a00}.capa-status.solved,.capa-status.closed{background:#e7f8eb;color:#08762c}.capa-status.overdue{background:#fee9e7;color:#b42318}.capa-status.in-progress{background:#eaf1ff;color:#1f55a8}.capa-status.waiting{background:#f4efff;color:#6542a5}
@media(max-width:900px){.capa-dashboard-banner{grid-template-columns:1fr}.capa-dash-metrics{grid-template-columns:repeat(2,1fr)}.capa-dept-grid{grid-template-columns:1fr}.capa-kpis{grid-template-columns:repeat(2,1fr)}.capa-filters{justify-content:stretch}.capa-filters input,.capa-filters select{min-width:0;flex:1 1 100%}}

/* V120.16.72 · Embedded UniQ OneHub */
.onehub-launcher{display:flex;flex-direction:column;gap:14px;padding:4px 0 20px}.onehub-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px;background:linear-gradient(135deg,#fff7f2 0%,#f7f4ff 46%,#eefaff 100%);border:1px solid #e7dff9}.onehub-hero h2{margin:4px 0 6px;font-size:26px}.onehub-hero p{margin:0;max-width:850px;color:var(--muted);line-height:1.55}.onehub-kicker{font-size:10px;font-weight:900;letter-spacing:.15em;color:#6541d8}.onehub-card-grid{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:12px}.onehub-card{appearance:none;text-align:left;background:#fff;border:1px solid #e5e7ef;border-radius:16px;padding:20px;min-height:175px;display:flex;flex-direction:column;align-items:flex-start;gap:8px;cursor:pointer;box-shadow:0 8px 24px rgba(43,36,80,.06)}.onehub-card:hover{border-color:#9f85ed;box-shadow:0 12px 28px rgba(75,50,145,.11)}.onehub-card .onehub-icon{font-size:28px}.onehub-card b{font-size:17px;color:#211945}.onehub-card small{font-size:11.5px;line-height:1.5;color:#656176;flex:1}.onehub-card em{font-style:normal;font-weight:800;font-size:11px;color:#5f3bd2}.onehub-card.customer{background:linear-gradient(145deg,#fff,#faf7ff)}.onehub-card.courier{background:linear-gradient(145deg,#fff,#f4fbff)}.onehub-card.capa{background:linear-gradient(145deg,#fff,#f6fff9)}.onehub-note{padding:12px 14px;border-radius:12px;background:#fff9e8;border:1px solid #f0dfaa;font-size:11px;color:#735712}.onehub-embed-shell{height:calc(100vh - 170px);min-height:620px;display:flex;flex-direction:column;border:1px solid #e2e3ec;border-radius:14px;overflow:hidden;background:#fff}.onehub-embed-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid #ececf2;background:#fafafe}.onehub-embed-bar>div:first-child{display:flex;flex-direction:column;gap:2px}.onehub-embed-bar b{font-size:13px}.onehub-embed-bar span{font-size:9.5px;color:#777489}.onehub-embed-actions{display:flex;gap:7px}.onehub-embed-frame{border:0;width:100%;height:100%;min-height:0;flex:1;background:#fff}@media(max-width:760px){.onehub-card-grid{grid-template-columns:1fr}.onehub-hero{align-items:flex-start;flex-direction:column}.onehub-embed-shell{height:calc(100vh - 135px);min-height:540px}.onehub-embed-bar{align-items:flex-start;flex-direction:column}.onehub-embed-actions{width:100%}.onehub-embed-actions .btn{flex:1}}

/* V120.16.75 — compact desktop/tablet header so every Booking MIS tab stays visible. */
@media (min-width:701px) and (max-width:1350px){
  .toprow{padding-left:7px!important;padding-right:7px!important;gap:3px!important}
  .brand{min-width:145px!important;max-width:155px!important;gap:3px!important}
  .mark{width:54px!important;height:28px!important}
  .brand h1{font-size:10px!important}
  .brand small{font-size:6.5px!important}
  .nav button{font-size:7.5px!important;padding:5px 3px!important;letter-spacing:-.035em!important}
  .status{display:none!important}
  .usercontrols{gap:2px!important}
  .syncbadge,.rolebadge,.activebadge,.userctrlbtn{font-size:8px!important;padding:4px 5px!important}
}
.serial-continuity-hint.warn{color:#b04b00!important;font-weight:800}


/* V120.16.76 — squeeze the second Booking action bar without hiding functions. */
@media (min-width:901px) and (max-width:1400px){
  .main>.toolbar{gap:2px!important;margin-bottom:3px!important;flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden!important;padding:0 0 1px!important}
  .main>.toolbar .search{min-width:135px!important;flex:1 1 165px!important;max-width:230px!important}
  .main>.toolbar .search input{min-height:22px!important;height:22px!important;padding:3px 5px 3px 22px!important;border-radius:5px!important;font-size:7.5px!important}
  .main>.toolbar .search:before{left:6px!important;top:0!important;font-size:14px!important}
  .main>.toolbar .control,
  .main>.toolbar .btn,
  .main>.toolbar .globalsearchbtn,
  .main>.toolbar .urgentIncompleteBtn{min-height:22px!important;height:22px!important;padding:2px 4px!important;border-radius:5px!important;font-size:7.3px!important;line-height:1!important;white-space:nowrap!important;flex:0 0 auto!important}
  .main>.toolbar #monthFilter{max-width:86px!important;padding-right:16px!important}
  .main>.toolbar #statusFilter{max-width:92px!important;padding-right:16px!important}
  .main>.toolbar .urgentIncompleteBtn{padding-left:5px!important;padding-right:5px!important}
}
@media (min-width:901px) and (max-width:1200px){
  .main>.toolbar .search{min-width:118px!important;flex-basis:145px!important;max-width:180px!important}
  .main>.toolbar .control,.main>.toolbar .btn,.main>.toolbar .globalsearchbtn,.main>.toolbar .urgentIncompleteBtn{font-size:6.9px!important;padding-left:3px!important;padding-right:3px!important}
  .main>.toolbar #monthFilter{max-width:78px!important}
  .main>.toolbar #statusFilter{max-width:84px!important}
}

/* ===== V120.16.77 final compact header/toolbar squeeze ===== */
.toprow{padding:3px 8px!important;gap:4px!important}
.brand{min-width:142px!important;max-width:154px!important;gap:4px!important}
.mark{width:54px!important;height:24px!important}
.brand h1{font-size:10px!important;line-height:1!important}
.brand small{font-size:6.8px!important;line-height:1!important}
.nav button{font-size:8.2px!important;padding:3px 4px!important;border-radius:5px!important}
.usercontrols{gap:2px!important}
.syncbadge,.rolebadge,.activebadge,.userctrlbtn{font-size:7.2px!important;padding:3px 5px!important;line-height:1!important}

.toolbar{gap:3px!important;margin-bottom:4px!important;flex-wrap:nowrap!important;overflow-x:auto!important;overflow-y:hidden!important;padding:0 0 2px!important;scrollbar-width:thin!important}
.toolbar>*{flex:0 0 auto!important}
.toolbar .search{min-width:140px!important;flex:1 1 180px!important}
.toolbar .search input{padding:4px 6px 4px 22px!important;min-height:24px!important;border-radius:6px!important;font-size:7.8px!important;line-height:1!important}
.toolbar .search:before{left:7px!important;top:1px!important;font-size:14px!important}
.toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{padding:3px 5px!important;min-height:24px!important;border-radius:6px!important;font-size:7.8px!important;line-height:1!important;white-space:nowrap!important}
.toolbar .urgentIncompleteBtn{max-width:92px!important;overflow:hidden!important;text-overflow:ellipsis!important}

@media(max-width:1200px){
  .toolbar .search{min-width:120px!important;flex-basis:145px!important}
  .toolbar .search input,.toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{font-size:7.2px!important;padding:3px 4px!important}
}
@media(max-width:900px){
  .toprow{padding:3px 6px!important}
  .brand{min-width:122px!important;max-width:132px!important}
  .mark{width:46px!important;height:21px!important}
  .brand h1{font-size:8.8px!important}
  .brand small{font-size:6px!important}
  .nav button{font-size:7.6px!important;padding:3px!important}
  .toolbar .search{min-width:110px!important;flex-basis:130px!important}
  .toolbar .search input,.toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{font-size:6.8px!important;min-height:22px!important;padding:2px 4px!important}
}

/* ===== V120.16.79 · tighter filter row + approximately +1px readable type ===== */
/* Keep the compact geometry from V78; only make text easier to read. */
html,body{font-size:17px}
.brand h1{font-size:11px!important}.brand small{font-size:7.8px!important}
.nav button{font-size:9.2px!important}
.syncbadge,.rolebadge,.activebadge,.userctrlbtn{font-size:8.2px!important}
.toolbar .search input,.toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{font-size:8.8px!important}
#tableView table{font-size:11px!important}
#tableView th{font-size:10px!important}
#tableView .badge{font-size:10px!important}
#tableView .iconbtn,#tableView .drivebtn{font-size:9.5px!important}
#tableView .pendingnote,#tableView .datehint{font-size:9px!important}
#tableView .billinline,#tableView .cellinput{font-size:10px!important}
.bookingtab-footerinfo{font-size:10px!important}.bookingtab-footerinfo b{font-size:10.5px!important}
.pager button,.topPager button{font-size:10px!important}
.panelhead h2{font-size:16px}.panelhead .meta,.small{font-size:13px}
.card .k{font-size:13px}.card .v{font-size:25px}.card .s{font-size:13px}

/* Filters use less vertical/horizontal space even though their text is clearer. */
#tableView .filterrow th{
  top:22px!important;
  height:19px!important;
  min-height:19px!important;
  padding:0 2px!important;
  line-height:1!important;
}
#tableView .colfilterwrap{gap:1px!important;height:18px!important;align-items:center!important}
#tableView .colfilter{
  height:18px!important;
  min-height:18px!important;
  padding:1px 3px!important;
  font-size:9px!important;
  line-height:1!important;
  border-radius:4px!important;
}
#tableView .filterblankbtn{
  min-width:25px!important;
  width:25px!important;
  height:18px!important;
  padding:1px 2px!important;
  font-size:6.8px!important;
  line-height:1!important;
  border-radius:4px!important;
}
#tableView .filter-tools{gap:2px!important;min-height:18px!important}
#tableView .filter-tools button,
#tableView .filter-copy-all,
#tableView .filter-replace-all,
#tableView .clearfilters{
  min-height:18px!important;
  height:18px!important;
  padding:1px 3px!important;
  font-size:7.5px!important;
  line-height:1!important;
  border-radius:4px!important;
}
#tableView .filter-multi-hint{display:none!important}

/* Preserve the one-line second toolbar after the +1px type increase. */
@media(min-width:901px){
  .toolbar{gap:2px!important}
  .toolbar .search{min-width:120px!important;flex:1 1 150px!important;max-width:190px!important}
  .toolbar .search input{min-height:22px!important;height:22px!important;padding:3px 4px 3px 21px!important}
  .toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{min-height:22px!important;height:22px!important;padding:2px 3px!important}
  .toolbar #monthFilter{max-width:76px!important}
  .toolbar #statusFilter{max-width:82px!important}
}
@media(max-width:900px){
  .brand h1{font-size:9.8px!important}.brand small{font-size:7px!important}
  .nav button{font-size:8.6px!important}
  .toolbar .search input,.toolbar .control,.toolbar .btn,.toolbar .globalsearchbtn,.toolbar .urgentIncompleteBtn{font-size:7.8px!important}
}
