/* Design tokens live in the single :root block lower in this file (search ":root"). */
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
.hidden{display:none!important}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14px}

/* Brand */
.brand{display:flex;flex-direction:column;line-height:1;letter-spacing:.5px}
.brand-uni{font-family:var(--font-display,inherit);font-weight:800;font-size:22px;letter-spacing:.02em;color:var(--heading,#0b2036)}
.brand-sec{font-family:var(--font-display,inherit);font-weight:600;font-size:10px;color:var(--blue,#0a6bb0);letter-spacing:.32em}
.brand.small .brand-uni{font-size:16px;color:#fff}
.brand.small .brand-sec{font-size:8px}

/* Login */
.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--navy),var(--navy-2))}
.login-card{background:#fff;padding:36px 32px;border-radius:14px;width:340px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}
.login-card .brand{align-items:center;margin-bottom:4px}
.login-card h2{margin:0 0 8px;text-align:center;font-size:15px;color:var(--muted);font-weight:600}
.login-card input{padding:11px 12px;border:1px solid var(--line);border-radius:8px}
.login-card button{padding:11px;background:var(--grad-primary,var(--navy));color:#fff;border:none;border-radius:10px;font-weight:700;box-shadow:var(--shadow-btn,none)}
.login-card button:hover{filter:brightness(1.08)}
.error{color:var(--red);font-size:13px;text-align:center;min-height:16px}

/* Sidebar */
.app{display:flex;min-height:100vh}
.sidebar{width:246px;flex-shrink:0;background:var(--navy);color:#fff;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:20}
.side-brand{padding:20px 20px 16px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;line-height:1;letter-spacing:.5px}
.side-brand .brand-uni{font-family:var(--font-display,inherit);font-weight:800;font-size:19px;letter-spacing:.02em;color:#fff}
.side-brand .brand-sec{font-family:var(--font-display,inherit);font-weight:600;font-size:9.5px;color:#4aa3dd;letter-spacing:.32em;margin-top:3px}
.side-nav{flex:1;display:flex;flex-direction:column;gap:2px;padding:14px 12px;overflow-y:auto}
.nav-btn{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:transparent;border:none;color:#aeb8cc;padding:9px 12px;border-radius:8px;font-size:14px;font-weight:600;transition:background .12s,color .12s}
.nav-btn svg{width:18px;height:18px;flex-shrink:0;opacity:.85}
.nav-btn:hover{background:rgba(255,255,255,.07);color:#fff}
.nav-btn:hover svg{opacity:1}
.nav-btn.active{background:var(--blue,#0a6bb0);color:#fff}
.nav-btn.active svg{opacity:1}
.side-foot{padding:14px 16px;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;justify-content:space-between;gap:8px}
.side-user{display:flex;align-items:center;gap:9px;font-size:13px;color:#eaf1f8;font-weight:600;overflow:hidden}
.side-user #who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#0a6bb0,#003050);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--font-display,inherit);font-size:12px;font-weight:700;flex-shrink:0;text-transform:uppercase}
.link{background:none;border:none;color:var(--blue,#0a6bb0);text-decoration:underline;font-size:13px}
.link:hover{color:var(--blue-deep,#005080)}
.side-foot .link{color:#7f97ae;text-decoration:none;flex-shrink:0}
.side-foot .link:hover{color:#fff;text-decoration:underline}

/* Layout */
main{margin-left:246px;flex:1;min-width:0;padding:28px 36px}
.view-head{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
h1{font-size:22px;margin:0 12px 0 0}
h2{font-size:16px;margin:24px 0 12px}
.search{padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:#fff}
.btn{padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:#fff;font-weight:600;font-size:14px}
.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.btn.primary:hover{background:var(--navy-2)}
.btn.ghost:hover{background:#eef1f6}
.btn.danger{color:var(--red);border-color:#f1c4c6}

/* Cards */
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.card .num{font-size:30px;font-weight:800;color:var(--navy)}
.card .lbl{color:var(--muted);font-size:13px;margin-top:2px}
.card.alert .num{color:var(--red)}

/* Tables */
.data-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg,16px);overflow:hidden;box-shadow:var(--shadow,0 1px 2px rgba(18,28,48,.05))}
.data-table th,.data-table td{text-align:left;padding:12px 16px;border-bottom:1px solid #f1f5f9;font-size:13px}
.data-table th{background:var(--panel,#f8fafc);color:var(--muted,#5f7288);font-weight:800;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line)}
.data-table td b{color:var(--heading,#0b2036)}
.data-table tr:last-child td{border-bottom:none}
.data-table tr:hover td{background:#f7fafc}
/* Click-to-sort column headers (OS file-explorer style) */
.data-table th.th-sort{cursor:pointer;user-select:none;white-space:nowrap;transition:background .12s,color .12s}
.data-table th.th-sort:hover{background:#eef2fb;color:var(--navy-2,#2b4a80)}
.data-table th.th-on{color:var(--navy-2,#2b4a80)}
.th-arrow{margin-left:5px;font-size:10px;display:inline-block}
.th-arrow-idle{opacity:.25}
.data-table th.th-sort:hover .th-arrow-idle{opacity:.55}
html[data-theme="dark"] .data-table th.th-sort:hover{background:#26324a;color:#cdd9f2}
html[data-theme="dark"] .data-table th.th-on{color:#9db6e6}
.pill{display:inline-block;padding:2px 9px;border-radius:var(--radius-pill,20px);font-size:12px;font-weight:600;border:1px solid transparent}
.pill.active{background:var(--ok-bg,#e4f6ec);color:var(--ok-text,#0d7a45);border-color:var(--ok-border,#b7e6ca)}
.pill.inactive{background:var(--neutral-bg,#eef1f5);color:var(--muted)}
.pill.applicant{background:var(--warn-bg,#fdf0dc);color:var(--warn-text,#a8660a);border-color:var(--warn-border,#f3ddb5)}
.pill.account{background:var(--info-bg,#e7f0fa);color:var(--info-text,#0a5a94);border-color:var(--info-border,#d8e2ec)}
.row-actions{display:flex;gap:8px}
.list .li{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-bottom:8px;display:flex;justify-content:space-between;font-size:14px}

/* Schedule grid */
.schedule-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius)}
.schedule{border-collapse:collapse;width:100%;min-width:900px}
.schedule th,.schedule td{border:1px solid var(--line);vertical-align:top;padding:4px 6px}
.schedule thead th{background:#f7f9fc;font-size:12px;color:var(--muted);position:sticky;top:0}
/* Excel-dense name column: ONE line per row, ellipsized — full name on hover.
   Width is dispatcher-resizable (drag the header edge, like Excel) via --sitecol. */
.schedule .site-col{position:sticky;left:0;background:#f7f9fc;width:var(--sitecol,190px);min-width:var(--sitecol,190px);max-width:var(--sitecol,190px);font-weight:600;font-size:12.5px;line-height:1.3;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.schedule .site-col .account-tag{display:inline;margin-left:6px}
.schedule th.site-col{overflow:visible} /* the resize handle must poke out of the header cell */
.col-rz{position:absolute;right:-4px;top:0;bottom:0;width:8px;cursor:col-resize;z-index:9;border-radius:3px}
.col-rz:hover,.col-rz.on{background:rgba(43,108,255,.4)}
.schedule td.day{min-width:132px;height:44px;padding:3px 4px}
.shift{background:#eaf0fb;border-left:3px solid var(--navy);border-radius:7px;padding:4px 6px;margin-bottom:4px;font-size:12px;cursor:pointer;position:relative}
/* design week-matrix chips: DAY = blue, NIGHT = dark navy, OPEN = dashed red */
.shift.sh-day{background:linear-gradient(135deg,#0a6bb0,#1a86d0);border-left-color:#005080;color:#fff}
.shift.sh-night{background:linear-gradient(135deg,#0b2036,#003050);border-left-color:#001a2c;color:#fff}
.shift.sh-day .g,.shift.sh-night .g{color:rgba(255,255,255,.88)}
.shift.sh-day .p,.shift.sh-night .p{color:rgba(255,255,255,.62)}
.shift.open{background:#fff5f5;border:1.5px dashed #e79aa3;border-left:3px dashed var(--red);color:var(--danger-text,#c0182a)}
.shift.open .g{color:var(--danger-text,#c0182a);font-weight:700}
.shift.draft{opacity:.62;border-style:dashed;border-left-style:dashed}
.shift.warn{box-shadow:inset 0 0 0 1.5px #e8a33d}
.shift .t{font-weight:700}
.shift .g{color:var(--navy-2)}
.shift .p{color:var(--muted)}
.schedule td.day.today{background:var(--selected,#eef6ff)}
.shift .badge-row{display:flex;gap:3px;flex-wrap:wrap;margin-top:2px}
.shift .mini{font-size:9px;font-weight:700;padding:0 4px;border-radius:8px;line-height:14px}
.mini.ok{background:#d8f3df;color:#1a7a3e}.mini.no{background:#fde0e0;color:#b3261e}.mini.pend{background:#fff2d6;color:#9a6a10}
.mini.spots{background:#e7eefc;color:#2b4a8b}.mini.tasks{background:#eee;color:#555}.mini.rep{background:#efe6fb;color:#6b3fa0}.mini.draftt{background:#eee;color:#777}
.sched-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px}
.sched-actions{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
/* segmented filters — Command Center chips: quiet idle, navy-ink active */
.seg{display:inline-flex;gap:6px;border:none;background:transparent;border-radius:10px}
.seg-btn{background:#f1f5f9;border:0;border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600;color:#5f7288;cursor:pointer;transition:background .12s,color .12s}
.seg-btn:hover{background:#e6edf4}
.seg-btn.active{background:#0b2036;color:#fff;font-weight:700}
.swap-badge{background:var(--red);color:#fff;font-size:12px;font-weight:700;padding:3px 9px;border-radius:12px}
.warn-line{color:#a4671a;font-size:12px;margin:3px 0 0;display:flex;align-items:flex-start;gap:5px}
.btn.danger{background:var(--red);color:#fff;border-color:var(--red)}
.ck{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink);margin:6px 0;cursor:pointer}
.ck input{width:auto;margin:0}
.day-chips{display:flex;flex-wrap:wrap;gap:6px}
.day-chips .chip{display:flex;align-items:center;gap:5px;background:#f3f6fb;border:1px solid var(--line);border-radius:16px;padding:5px 11px;font-size:12px;font-weight:600;cursor:pointer}
.day-chips .chip input{width:auto;margin:0}
.row-line{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--line);font-size:13px}
.shift.dragging{opacity:.4}
td.day.drop-hot{background:#eaf2ff;outline:2px dashed var(--navy);outline-offset:-3px}
.role-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:0 0 18px}
.role-chip{background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px 13px;font-size:12px;color:var(--muted)}
.role-chip b{display:block;color:var(--navy);font-size:13px;margin-bottom:3px}
.perm-views{display:grid;grid-template-columns:1fr 1fr;gap:2px 14px}
.audit-detail{color:#2b3547;font-size:12.5px;margin-top:3px;background:#f6f8fc;border-left:2px solid var(--navy);padding:4px 8px;border-radius:0 6px 6px 0}
/* field-level change diffs (audit log + per-record history) */
.chg-list{display:flex;flex-direction:column;gap:3px;margin-top:4px}
.chg{font-size:12.5px;display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;line-height:1.5}
.chg-f{font-weight:700;color:#3a475a}
.chg-a{color:#8a5a10;background:#faf0dd;border-radius:4px;padding:0 6px;text-decoration:line-through;text-decoration-color:#c9a15588}
.chg-arw{color:#8ea0b3;font-weight:800}
.chg-b{color:#0f6e56;background:#e2f4ee;border-radius:4px;padding:0 6px;font-weight:600}
.ehist-last{font-size:12.5px;color:#5f7288;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--line,#e4eaf1)}
.ehist{display:flex;flex-direction:column;gap:11px;max-height:340px;overflow:auto}
.ehist-row{border-left:2px solid var(--line,#e4eaf1);padding:1px 0 1px 11px}
.ehist-h{font-size:13px}.ehist-act{font-size:13px;color:#2b3547;margin-top:2px}
.ehist-empty{color:#8ea0b3;font-size:13px;padding:8px 0}
[data-theme="dark"] .chg-a{background:#3a2c12;color:#e9c98b}
[data-theme="dark"] .chg-b{background:#123227;color:#8fe1c7}
[data-theme="dark"] .chg-f{color:#c2ccdb}
.audit-ep{color:var(--muted);font-size:10.5px;margin-top:3px;opacity:.7}
.audit-row{cursor:pointer}
.audit-row:hover{background:#f6f8fc}
.audit-open{color:var(--navy);font-size:11px;font-weight:700;opacity:.65}
.sh-activity{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.sh-act-title{font-size:12px;font-weight:700;color:var(--navy);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
.sh-act{border-left:2px solid var(--line);padding:2px 0 8px 10px;margin-left:2px;font-size:13px}
.sh-act-h{font-size:12px}
.nav-section{margin-bottom:6px}
.nav-sec-label{font-size:9.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.32);padding:12px 16px 5px}
.nav-sec-label.nav-sec-toggle{cursor:pointer;display:flex;align-items:center;justify-content:space-between;user-select:none}
.nav-sec-label.nav-sec-toggle:hover{color:rgba(255,255,255,.6)}
.nav-sec-chev{font-size:9px;opacity:.7;transition:transform .15s}
.nav-section.collapsed .nav-sec-chev{transform:rotate(-90deg)}
.nav-section.collapsed .nav-btn{display:none}
.account-tag{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.week-nav{display:flex;align-items:center;gap:8px;flex:1}
.week-nav span{font-weight:600;min-width:190px;text-align:center}

/* Modal */
.modal-backdrop{position:fixed;inset:0;background:rgba(20,28,46,.45);display:flex;align-items:center;justify-content:center;z-index:100060} /* above the Timesheets drawer (#ts-drawer 100050) so "Add time entry" isn't hidden behind it; also beats Leaflet (<=1000) */
/* Flex shell so the header + action footer stay pinned and only the body scrolls —
   Save/Cancel never scroll out of view no matter how tall the form gets. */
.modal{background:#fff;border-radius:14px;width:460px;max-width:94vw;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal-head{flex:none;display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0;font-family:var(--font-display,inherit);font-size:16px;color:var(--heading)}
.modal-head .link{color:var(--muted)}
#modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:18px 20px;display:grid;gap:12px}
.modal-foot{flex:none;padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;background:#fff;box-shadow:0 -4px 14px rgba(15,23,42,.05)}
.field{display:flex;flex-direction:column;gap:5px}
.field label{font-size:12px;color:var(--muted);font-weight:600}
.field input,.field select,.field textarea{padding:9px 11px;border:1px solid var(--line);border-radius:8px}
.field.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:980px){.cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:860px){.sidebar{width:62px}.side-brand,.nav-btn span,.side-user #who,.nav-sec-label{display:none}.nav-btn{justify-content:center;padding:10px 0}.side-foot{justify-content:center}main{margin-left:62px;padding:22px 18px}}

/* Invoices */
.hint{font-size:13px;color:var(--muted);margin:0 0 6px}
.muted{color:var(--muted)}
.pill.draft{background:var(--neutral-bg,#eef1f5);color:var(--muted)}
.pill.sent{background:var(--warn-bg,#fdf0dc);color:var(--warn-text,#a8660a);border-color:var(--warn-border,#f3ddb5)}
.pill.paid{background:var(--ok-bg,#e4f6ec);color:var(--ok-text,#0d7a45);border-color:var(--ok-border,#b7e6ca)}
.inv-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:14px}
.inv-meta .field input{padding:8px 10px;border:1px solid var(--line);border-radius:8px}
.inv-items input{width:100%;border:1px solid transparent;background:transparent;padding:6px 8px;border-radius:6px}
.inv-items input:hover,.inv-items input:focus{border-color:var(--line);background:#fff;outline:none}
.inv-items .num{text-align:right}
.inv-items td.amt{text-align:right;font-weight:600;white-space:nowrap}
.inv-items th:nth-child(2),.inv-items th:nth-child(3),.inv-items th:nth-child(4){text-align:right}
.inv-foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px}
.inv-total{font-size:18px;color:var(--navy)}
.inv-total b{font-size:22px}
@media(max-width:720px){.inv-meta{grid-template-columns:1fr 1fr}}
.inv-items select.pl{padding:5px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:13px}
.inv-items td:nth-child(7){text-align:center}

/* Reports */
.pill.sev1{background:#e6f1fb;color:#185fa5}
.pill.sev2{background:#fff3df;color:#9a6a00}
.pill.sev3{background:#fcebeb;color:#a32d2d}
.rep-narr{color:var(--muted);font-size:13px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rep-detail{display:flex;flex-direction:column;gap:8px;font-size:14px}
.rep-narrative{background:#f7f9fc;border:1px solid var(--line);border-radius:8px;padding:10px 12px;white-space:pre-wrap;font-size:14px}
.photo-row{display:flex;justify-content:space-between;align-items:center;background:#f4f6fa;border-radius:6px;padding:5px 10px;margin-bottom:5px;font-size:13px}

/* ===== New feature views ===== */
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
@media(max-width:900px){.cols2{grid-template-columns:1fr}}
.inline-form{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.inline-form input,.inline-form select{padding:8px 11px;border:1px solid var(--line);border-radius:8px;flex:1;min-width:120px}

/* Dispatch board */
.board{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:1000px){.board{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.board{grid-template-columns:1fr}}
.board-col{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px;min-height:120px}
.board-col.ok{border-top:3px solid var(--green)}
.board-col.bad{border-top:3px solid var(--red)}
.board-col.warn{border-top:3px solid var(--amber)}
.board-h{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin-bottom:10px}
.board-n{background:#eef1f6;color:var(--navy);border-radius:20px;padding:1px 9px;font-size:12px}
.board-card{background:#fafbfd;border:1px solid var(--line);border-radius:8px;padding:9px 11px;margin-bottom:8px;font-size:13px}
.board-card b{color:var(--navy)}
.board-flag{color:var(--red);font-size:12px;font-weight:600;margin-top:2px}
.board-col.warn .board-flag{color:var(--amber)}
.board-empty{color:var(--muted);font-size:13px;padding:8px 2px}

/* Messages */
.msg-wrap{display:grid;grid-template-columns:250px 1fr;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;height:65vh;min-height:420px}
.msg-wrap.with-info{grid-template-columns:250px 1fr 292px}
.msg-info{border-left:1px solid var(--line);overflow-y:auto;padding:18px 16px;display:none;background:#fbfcfe}
.msg-wrap.with-info .msg-info{display:block}
.mi-av{width:64px;height:64px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:700;margin:6px auto 8px}
.mi-name{text-align:center;font-weight:800;font-size:16px;color:var(--ink)}
.mi-sub{text-align:center;font-size:12px;color:var(--muted);margin-bottom:12px}
.mi-acts{display:flex;justify-content:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.mi-acts button{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center}
.mi-acts button:hover{background:#eef3fc;border-color:#b9cdf4}
.mi-sec{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:14px 0 7px}
.mi-kv{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:5px 0;border-bottom:1px solid #eef1f6}
.mi-kv span{color:var(--muted)}
.mi-kv b{font-weight:600;color:var(--ink);text-align:right;word-break:break-word;min-width:0}
.mi-kv a{color:var(--blue,#0a6bb0);text-decoration:none}
.mi-media{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.mi-media a{display:block;aspect-ratio:1/1;border-radius:8px;overflow:hidden;border:1px solid var(--line)}
.mi-media img{width:100%;height:100%;object-fit:cover}
.mi-empty{font-size:12.5px;color:var(--muted)}
@media(max-width:1100px){.msg-wrap.with-info{grid-template-columns:250px 1fr}.msg-wrap.with-info .msg-info{display:none}}
[data-theme="dark"] .msg-info{background:#161e2d;border-color:#2b3648}
[data-theme="dark"] .mi-acts button{background:#1a2233;border-color:#2b3648;color:#dbe4f2}
[data-theme="dark"] .mi-kv{border-color:#232e44}
.msg-channels{border-right:1px solid var(--line);overflow-y:auto}
.msg-chan{padding:12px 16px;border-bottom:1px solid var(--line);cursor:pointer;font-size:14px;font-weight:600;color:var(--ink)}
.msg-chan:hover{background:#f7f9fc}
.msg-chan.active{background:#eef3fc;border-left:3px solid var(--navy)}
.msg-main{display:flex;flex-direction:column;min-width:0}
.msg-thread{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:8px;background:#f4f6fa}
.bubble{max-width:75%;padding:8px 12px;border-radius:12px;font-size:14px;line-height:1.4;white-space:pre-wrap;word-break:break-word}
.bubble .bmeta{font-size:11px;opacity:.7;margin-bottom:2px}
.bubble.mine{align-self:flex-end;background:var(--grad-primary,linear-gradient(135deg,#005080,#0a6bb0));color:#fff;border-radius:14px 14px 4px 14px;box-shadow:0 2px 8px rgba(0,80,128,.18)}
.bubble.them{align-self:flex-start;background:#fff;border:1px solid var(--line);border-radius:14px 14px 14px 4px}
.msg-compose{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}
.msg-compose input{flex:1;padding:10px 12px;border:1px solid var(--line);border-radius:8px}
@media(max-width:720px){.msg-wrap{grid-template-columns:1fr;height:auto}.msg-channels{max-height:140px}.msg-thread{height:50vh}}

/* Tours */
.cp-row{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 12px;margin-bottom:7px}
.cp-code{font-family:var(--font-mono,ui-monospace,Menlo,Consolas,monospace);background:var(--blue-tint,#e7f0fa);color:var(--blue-text,#0a5a94);padding:1px 7px;border-radius:5px;font-size:12px;margin-left:6px}

/* Message attachments + compose buttons */
.iconbtn{background:#eef1f6;border:1px solid var(--line);border-radius:8px;width:38px;flex-shrink:0;font-size:17px;line-height:1;cursor:pointer}
.iconbtn:hover{background:#e3e8f0}
.iconbtn.recording{background:var(--red);color:#fff;border-color:var(--red);animation:pulse 1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.55}}
.att-img{max-width:220px;max-height:220px;border-radius:8px;display:block;margin-top:5px}
.att-audio{margin-top:5px;height:36px;max-width:240px;display:block}
.att-file{display:inline-block;margin-top:5px;color:inherit;text-decoration:underline;font-size:13px}
.bubble.mine .att-file{color:#fff}

/* fix: keep compose bar visible when thread overflows */
.msg-main{min-height:0}
.msg-thread{min-height:0}

/* fix: compose never overflows horizontally */
.msg-compose{flex-wrap:nowrap}
.msg-compose input{min-width:0}
.msg-compose .btn{flex-shrink:0}

/* Voice call overlay */
.uc-overlay{position:fixed;inset:0;background:rgba(15,20,35,.78);display:flex;align-items:center;justify-content:center;z-index:9999}
.uc-card{background:#fff;border-radius:18px;padding:30px 26px;width:300px;max-width:90vw;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.45)}
.uc-sub{color:#6b7688;font-size:14px}
.uc-name{font-family:var(--font-display,inherit);font-size:22px;font-weight:800;color:#0b2036;margin:8px 0}
.uc-timer{font-size:18px;color:#1f9d57;font-weight:700;min-height:22px;margin-top:4px}
.uc-acts{display:flex;gap:12px;justify-content:center;margin-top:22px}
.uc-b{flex:1;padding:13px;border:none;border-radius:12px;font-weight:700;font-size:15px;background:#eef1f5;color:#0b2036;cursor:pointer}
.uc-b.red{background:#e11d2a;color:#fff}.uc-b.grn{background:#0f9d58;color:#fff}.uc-b.on{background:#032b49;color:#fff}
.msg-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line);min-height:44px}
.msg-title{font-weight:700;color:var(--navy)}
.msg-chan.unread{font-weight:800}
.msg-chan.unread::after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--red);margin-left:8px;vertical-align:middle}
.msg-chan{display:flex;justify-content:space-between;align-items:center;gap:8px}
.msg-chan.needreply{background:#fff7e8;border-left:3px solid #e8a33d}
.msg-chan.needreply .chan-flag{font-size:10px;font-weight:700;color:#b9751b;background:#fdebc8;padding:2px 6px;border-radius:8px;white-space:nowrap}
.bubble.them{border-left:3px solid var(--red)}
/* messaging overhaul */
.msg-sidebar{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.msg-side-head{padding:10px;border-bottom:1px solid var(--line);display:flex;gap:6px;align-items:center}
.msg-side-head .btn{width:auto;flex:1;min-width:0;white-space:nowrap;padding-left:8px;padding-right:8px}
.msg-sidebar .msg-channels{border-right:0;flex:1}
.chan-sec{font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--muted);padding:12px 14px 4px;background:#fafbfd}
.msg-chan{align-items:center;padding:9px 12px}
.msg-chan.unread::after{display:none}
.msg-chan.needreply{background:#fff7e8}
.chan-ic{width:22px;height:22px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#eef1f8;color:var(--navy);font-weight:800;font-size:12px}
.chan-body{flex:1;min-width:0;display:flex;flex-direction:column}
.chan-name{font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chan-prev{font-size:12px;color:var(--muted);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chan-dot{width:9px;height:9px;border-radius:50%;background:var(--red);flex-shrink:0}
.chan-mention{background:var(--red);color:#fff;font-size:9px;font-weight:800;padding:1px 5px;border-radius:8px}
/* Discord-style collapsible categories + channel management */
.chan-sec{display:flex;align-items:center;gap:5px;cursor:pointer;user-select:none}
.chan-sec:hover{color:var(--navy)}
.chan-caret{font-size:9px;width:10px;flex:0 0 auto;text-align:center}
.chan-sec-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chan-sec-acts{display:none;gap:2px;flex:0 0 auto}
.chan-sec:hover .chan-sec-acts{display:flex}
.chan-sec-acts button{border:none;background:transparent;color:var(--muted);font-size:15px;line-height:1;cursor:pointer;padding:0 5px;border-radius:5px}
.chan-sec-acts button:hover{background:#e8ecf5;color:var(--navy)}
.chan-secadd{font-weight:800}
.msg-chan .chan-cog{display:none;border:none;background:transparent;color:var(--muted);font-size:15px;line-height:1;cursor:pointer;padding:0 4px;flex:0 0 auto;border-radius:5px}
.msg-chan:hover .chan-cog{display:block}
.msg-chan .chan-cog:hover{background:#e8ecf5;color:var(--navy)}
.msg-chan[draggable="true"]{cursor:grab}
.msg-chan.dragging{opacity:.45}
.chan-sec-body{min-height:2px}
.chan-sec-body.drop-hot{background:#eef4ff;outline:2px dashed #9db8ff;outline-offset:-3px;border-radius:8px}
.chan-drop-hint{font-size:11px;color:var(--muted);padding:6px 14px;font-style:italic}
.chan-pop{position:fixed;z-index:100001;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(10,18,38,.22);padding:5px;min-width:180px;display:flex;flex-direction:column}
.chan-pop button{border:none;background:transparent;text-align:left;padding:9px 11px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;border-radius:7px;white-space:nowrap}
.chan-pop button:hover{background:#eef1f8}
.chan-pop button.danger{color:var(--red)}
.chan-pop button.danger:hover{background:#fdeaea}
/* Messenger Archives — imported Discord history, tucked below the operational channels */
#chan-arch{border-top:1px solid var(--line)}
.arch-head{color:#5a6b82}
.arch-head .chan-sec-label{flex:0 1 auto;font-weight:800}
.arch-head-n{background:#e6ebf3;color:#41526b;border-radius:9px;font-size:10.5px;font-weight:800;padding:1px 6px;margin-left:6px}
.arch-head-hint{margin-left:auto;font-size:10px;color:#a2afc2;font-weight:700;letter-spacing:.2px;text-transform:none}
.arch-wrap{padding:2px 8px 8px}
.arch-search{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12.5px;margin:2px 0 6px;background:#fff;color:var(--ink)}
.arch-list{max-height:44vh;overflow:auto}
.arch-loading,.arch-empty{padding:12px 8px;color:#8894a8;font-size:12.5px;text-align:center}
.arch-cat{display:flex;align-items:center;gap:6px;padding:5px 6px;cursor:pointer;color:#41526b;font-weight:700;font-size:12px;border-radius:6px;user-select:none}
.arch-cat:hover{background:#eef2f8}
.arch-cat .chan-caret{font-size:9px;color:#93a1b5}
.arch-cat-lbl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arch-cat-n{margin-left:auto;background:#eef2f8;color:#6b7a90;border-radius:9px;font-size:10px;font-weight:800;padding:0 6px}
.arch-cat-body{padding-left:4px}
.arch-chan{display:flex;align-items:center;gap:8px;padding:5px 8px 5px 10px;cursor:pointer;border-radius:7px}
.arch-chan:hover{background:#eef2f8}
.arch-chan .chan-ic{width:20px;height:20px;background:#eef1f8;color:#7c8aa2;flex:0 0 auto}
.arch-body{min-width:0;display:flex;flex-direction:column;line-height:1.25}
.arch-name{font-size:12.5px;font-weight:600;color:#26364d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arch-meta{font-size:10.5px;color:#9aa7bb;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Read-only banner shown in place of the composer on archived channels */
.msg-readonly{display:flex;align-items:center;gap:9px;background:#f3f6fb;border-top:1px solid var(--line);color:#5a6b82;font-size:12.5px;padding:11px 16px}
.msg-readonly .ic{color:#8a99b0;flex:0 0 auto}
.msg-readonly.hidden{display:none}
/* Dashboard "Get the Windows app" nudge (browser-only, dismissible) */
.win-promo{display:flex;align-items:center;gap:14px;margin:0 0 16px;padding:13px 16px;border-radius:14px;background:linear-gradient(135deg,#052e4d,#0a4d7a);color:#fff;box-shadow:0 8px 24px rgba(3,43,73,.18)}
.win-promo .wp-ic{flex:0 0 auto;width:40px;height:40px;border-radius:10px;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center}
.win-promo .wp-ic svg{width:22px;height:22px}
.win-promo .wp-tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.win-promo .wp-tx b{font-size:14.5px;font-weight:700}
.win-promo .wp-tx span{font-size:12.5px;color:#c7dcef}
.win-promo .wp-go{flex:0 0 auto;background:#fff;color:#063352;border:none;font-weight:800;text-decoration:none}
.win-promo .wp-go:hover{background:#eaf3fb}
.win-promo .wp-x{flex:0 0 auto;background:transparent;border:none;color:#bcd4ea;font-size:22px;line-height:1;cursor:pointer;padding:0 4px;border-radius:6px}
.win-promo .wp-x:hover{color:#fff}
@media (max-width:640px){ .win-promo{flex-wrap:wrap} .win-promo .wp-tx{flex-basis:55%} }
/* Remote-desktop fullscreen: override the inline height so the view fills the whole screen + center the display */
#rs-view:fullscreen{width:100vw!important;height:100vh!important;max-height:none!important;display:flex;align-items:center;justify-content:center;background:#000}
#rs-view:fullscreen > *{margin:auto}
[data-theme="dark"] .chan-pop{background:#1a2438;border-color:#2b3a52}
[data-theme="dark"] .chan-pop button{color:#e6ecf7}
[data-theme="dark"] .chan-pop button:hover{background:#232f42}
[data-theme="dark"] .chan-sec-acts button:hover,[data-theme="dark"] .msg-chan .chan-cog:hover{background:#232f42;color:#cdd8ec}
[data-theme="dark"] .chan-sec-body.drop-hot{background:#1c2a44}
.msg-receipt{font-size:11px;color:var(--muted);text-align:right;padding:2px 14px 0}
.msg-typing{font-size:12px;color:var(--navy);font-style:italic;padding:2px 14px;min-height:18px}
.msg-compose{position:relative}
.mention-pop{position:absolute;bottom:52px;left:12px;right:12px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 24px rgba(20,30,50,.18);max-height:200px;overflow:auto;z-index:5}
.mention-item{padding:9px 12px;font-size:13px;cursor:pointer;border-bottom:1px solid #f2f4f8}
.mention-item:hover{background:#eef3fc}
.ment{background:var(--blue-tint-2,#d8e9f7);color:#0a5a94;font-weight:700;border-radius:4px;padding:0 3px}
.bubble.mine .ment{background:rgba(255,255,255,.25);color:#fff}
.nav-badge{margin-left:auto;background:var(--red);color:#fff;font-size:10px;font-weight:800;min-width:17px;height:17px;padding:0 5px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center}
/* profile + avatars */
.side-user{cursor:pointer;display:flex;align-items:center;gap:8px}
.side-user-edit{margin-left:auto;opacity:.5;font-size:12px}
.side-user:hover .side-user-edit{opacity:1}
.prof-photo-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:14px}
.prof-photo{width:96px;height:96px;border-radius:50%;object-fit:cover;border:2px solid var(--line);background:#f0f2f6}
.bavatar{width:18px;height:18px;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:5px}
.bubble.them .bmeta{display:flex;align-items:center}
/* live dashboard — Command Center treatment */
/* the design's signature animations (shared: LIVE pulse, alert ring, clock blink, sheen) */
@keyframes usgpulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.82)}}
@keyframes usgring{0%{box-shadow:0 0 0 0 rgba(15,157,88,.45)}70%{box-shadow:0 0 0 7px rgba(15,157,88,0)}100%{box-shadow:0 0 0 0 rgba(15,157,88,0)}}
@keyframes usgblink{0%,49%{opacity:1}50%,100%{opacity:.25}}
@keyframes usgsheen{0%{transform:translateX(-120%)}100%{transform:translateX(220%)}}
.dash-live{display:inline-flex;align-items:center;gap:6px;background:var(--ok-bg,#e4f6ec);border:1px solid var(--ok-border,#b7e6ca);color:var(--ok-text,#0d7a45);font-size:11px;font-weight:800;letter-spacing:.08em;padding:4px 9px;border-radius:20px;margin-left:12px}
.dash-live::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#0f9d58;animation:usgpulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.dash-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg,16px);padding:14px 16px;box-shadow:var(--shadow)}
.dash-card.dash-wide{grid-column:1/-1}
.dash-card h3{margin:0 0 10px;font-family:var(--font-display,inherit);font-size:14px;font-weight:700;color:var(--heading);display:flex;align-items:center;gap:8px}
.dash-n{background:#0f9d58;color:#fff;font-size:11px;font-weight:800;min-width:18px;height:18px;padding:0 5px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center}
.dot-on{display:inline-block;width:8px;height:8px;border-radius:50%;background:#0f9d58;margin-right:7px}
.att-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:9px;margin-bottom:7px;font-size:13px;cursor:pointer;font-weight:600;border-left:3px solid transparent}
.att-item .att-go{margin-left:auto;opacity:.5;font-weight:800}
.att-item:hover{filter:brightness(.97)}
.att-open,.att-warn{background:var(--warn-bg,#fdf0dc);color:var(--warn-text,#a8660a);border-left-color:#e08600}
.att-info{background:var(--info-bg,#e7f0fa);color:var(--info-text,#0a5a94);border-left-color:#1a86d0}
@media(max-width:760px){.dash-grid{grid-template-columns:1fr}}
/* ===== Dark theme ===== */
html[data-theme="dark"]{--bg:#081522;--ink:#d5e2ee;--muted:#8ca3b8;--line:#1d3247;--white:#0e1e2e;--panel:#0c1a28;--panel-2:#123049;--card:#0e1e2e;--text:#d5e2ee;--heading:#eaf1f8;--navy:#0b3a5e;--navy-2:#0f4d7d;--red:#ff5a60;--shadow:0 1px 3px rgba(0,0,0,.4);
  /* navy-tinted dark remaps for the Unified Command palette */
  --info:#4aa3dd;--ok:#3fbf7a;--warn:#f4a63d;--blue:#1a86d0;--blue-deep:#0a6bb0;--blue-bright:#4aa3dd;--blue-text:#7fd0ff;
  --ok-bg:rgba(15,157,88,.16);--ok-text:#7fe0a9;--ok-border:rgba(15,157,88,.35);
  --danger-bg:rgba(225,29,42,.14);--danger-text:#f0a9b1;--danger-border:rgba(225,29,42,.35);
  --warn-bg:rgba(224,134,0,.14);--warn-text:#f4c47a;--warn-border:rgba(224,134,0,.35);
  --info-bg:rgba(26,134,208,.14);--info-text:#7fd0ff;--info-border:rgba(26,134,208,.35);
  --blue-tint:rgba(26,134,208,.14);--blue-tint-2:rgba(26,134,208,.22);--selected:rgba(26,134,208,.10);--neutral-bg:#12202f}
[data-theme="dark"] body{background:var(--bg);color:var(--ink)}
[data-theme="dark"] .card,[data-theme="dark"] .dash-card,[data-theme="dark"] .msg-wrap,[data-theme="dark"] .modal,[data-theme="dark"] .role-chip,[data-theme="dark"] .mention-pop{background:#1a2231;color:var(--ink);border-color:var(--line)}
[data-theme="dark"] table,[data-theme="dark"] .data-table,[data-theme="dark"] .schedule{background:#1a2231;color:var(--ink)}
[data-theme="dark"] th,[data-theme="dark"] .schedule thead th,[data-theme="dark"] .schedule .site-col{background:#141b28;color:var(--muted);border-color:var(--line)}
[data-theme="dark"] td,[data-theme="dark"] .schedule th,[data-theme="dark"] .schedule td,[data-theme="dark"] .row-line,[data-theme="dark"] .li{border-color:var(--line)}
[data-theme="dark"] input,[data-theme="dark"] select,[data-theme="dark"] textarea{background:#111927;color:var(--ink);border-color:var(--line)}
[data-theme="dark"] .msg-channels,[data-theme="dark"] .msg-sidebar,[data-theme="dark"] .msg-main{background:#1a2231}
[data-theme="dark"] .chan-sec,[data-theme="dark"] .msg-side-head,[data-theme="dark"] .msg-head{background:#141b28;border-color:var(--line)}
[data-theme="dark"] .msg-chan:hover,[data-theme="dark"] .msg-chan.active,[data-theme="dark"] .mention-item:hover,[data-theme="dark"] .audit-row:hover{background:#232f42}
[data-theme="dark"] .chan-ic{background:#232f42;color:#cdd8ec}
[data-theme="dark"] .bubble.them{background:#232f42;color:var(--ink);border-color:var(--line)}
[data-theme="dark"] .msg-thread{background:#141b28}
[data-theme="dark"] .shift{background:#22314e;color:var(--ink)}
[data-theme="dark"] .shift.open{background:#3a2330}
[data-theme="dark"] .att-info{background:#1a2842;color:#a9c1ee}
[data-theme="dark"] .audit-detail,[data-theme="dark"] .sh-act-title,[data-theme="dark"] .board,[data-theme="dark"] .empty{background:transparent}
[data-theme="dark"] .audit-detail{background:#141b28}
[data-theme="dark"] .modal-backdrop{background:rgba(0,0,0,.6)}
[data-theme="dark"] .pill.account{background:#26324a;color:#b9c6e0}
[data-theme="dark"] .dash-card h3,[data-theme="dark"] .view-head h1,[data-theme="dark"] h2,[data-theme="dark"] h3,[data-theme="dark"] .chan-name{color:#e6eaf2}
[data-theme="dark"] .prof-photo{background:#232f42}
html[data-theme="dark"] .num,html[data-theme="dark"] .card-n,html[data-theme="dark"] .dash-n{color:var(--heading)}
html[data-theme="dark"] .att-item,html[data-theme="dark"] .att-warn,html[data-theme="dark"] .att-open{background:#2a2413;color:#e8d9a8;border-color:#5a4a1f}
html[data-theme="dark"] .att-item.att-info{background:#152238;color:#a9c1ee;border-color:#274063}
html[data-theme="dark"] .shift .g,html[data-theme="dark"] .shift .p{color:#c9d5ec}
html[data-theme="dark"] .account-tag,html[data-theme="dark"] .post,html[data-theme="dark"] .account{color:#9aa7bd}
html[data-theme="dark"] .board-card b,html[data-theme="dark"] .board-col b,html[data-theme="dark"] .wcard b{color:var(--heading)}
/* ---- Dark theme: full-site contrast sweep (2026) ---- */
html[data-theme="dark"] .msg-title{color:var(--heading)}
html[data-theme="dark"] a{color:#7fb0ff}
html[data-theme="dark"] .btn,html[data-theme="dark"] .nav-btn{color:var(--ink)}
html[data-theme="dark"] .data-table b,html[data-theme="dark"] td b,html[data-theme="dark"] .li b,html[data-theme="dark"] .role-chip b{color:var(--heading)}
html[data-theme="dark"] .audit-open{color:#7fb0ff}
html[data-theme="dark"] .audit-detail{color:#c2ccdb}
html[data-theme="dark"] .dash-live{color:#3fbf74}
html[data-theme="dark"] .gps-badge.none{color:#7a8698}
html[data-theme="dark"] .pill.sev1{background:#16283f;color:#8fbef0}
html[data-theme="dark"] .pill.sev2,html[data-theme="dark"] .pill.applicant,html[data-theme="dark"] .pill.sent{background:#3a2f12;color:#eccb8c}
html[data-theme="dark"] .pill.sev3{background:#3a1c1c;color:#f2acac}
html[data-theme="dark"] .pill.active,html[data-theme="dark"] .pill.paid{background:#123021;color:#84d6a6}
html[data-theme="dark"] .leaflet-control-zoom a,html[data-theme="dark"] .leaflet-bar a{background:#1b2432;color:#d7dfec;border-color:#2b3648}
html[data-theme="dark"] .leaflet-control-attribution{background:rgba(20,27,40,.85);color:#93a1b8}
html[data-theme="dark"] .leaflet-control-attribution a,html[data-theme="dark"] .leaflet-control-attribution span{color:#93a1b8}
/* ---- Dark theme: newer components (2026) ---- */
[data-theme="dark"] .ts-tv,[data-theme="dark"] .set-tab.active,[data-theme="dark"] .sched-menu button,[data-theme="dark"] .schedule td.site-col.link-col,[data-theme="dark"] .map-near-h,[data-theme="dark"] .stub-line.net,[data-theme="dark"] .map-panel-v{color:var(--heading)}
[data-theme="dark"] .set-tab{color:var(--muted)}
[data-theme="dark"] .set-tab:hover{color:var(--heading);background:var(--panel)}
[data-theme="dark"] .set-tabs{border-color:var(--line)}
[data-theme="dark"] .ts-tile,[data-theme="dark"] .map-panel{background:var(--panel);border-color:var(--line);color:var(--ink)}
[data-theme="dark"] .ts-tile.locked{background:repeating-linear-gradient(45deg,#151d2b,#151d2b 8px,#1e2739 8px,#1e2739 16px)}
[data-theme="dark"] .map-panel-sec{border-color:var(--line)}
[data-theme="dark"] .sched-menu{background:var(--card);border-color:var(--line)}
[data-theme="dark"] .sched-menu button:hover{background:var(--panel-2)}
[data-theme="dark"] .sched-menu-sep{background:var(--line)}
[data-theme="dark"] tr.ts-appr>td{background:rgba(30,157,87,.12)}
[data-theme="dark"] .schedule td.day.today{background:rgba(255,90,96,.055)}
[data-theme="dark"] .schedule td.site-col.link-col:hover{background:#232f42}
[data-theme="dark"] .schedule td.day:hover{background:rgba(120,160,255,.06)}
[data-theme="dark"] .schedule .shift:hover{box-shadow:0 4px 12px rgba(0,0,0,.5)}
[data-theme="dark"] .gps-badge.none{color:#4a5568}
[data-theme="dark"] .map-near-row{border-color:var(--line)}
[data-theme="dark"] .map-pin-txt{background:#0f1826}
[data-theme="dark"] .msglink{color:#7fb0ff}
[data-theme="dark"] .schedule thead th.today{box-shadow:inset 0 -3px 0 var(--red)}
[data-theme="dark"] .schedule .site-col.link-col{color:#cfe0ff}
/* ============ Dark theme: comprehensive surface + control overrides (html-prefixed to win the cascade) ============ */
html[data-theme="dark"]{--navy:#0b3a5e;--navy-2:#0f4d7d}
/* buttons & controls */
html[data-theme="dark"] .btn,html[data-theme="dark"] .search,html[data-theme="dark"] .seg-btn,html[data-theme="dark"] .btn.ghost{background:#1e2739;color:var(--ink);border-color:var(--line)}
html[data-theme="dark"] .btn:hover,html[data-theme="dark"] .btn.ghost:hover,html[data-theme="dark"] .seg-btn:hover{background:#28344a;border-color:#3a4863}
html[data-theme="dark"] .btn.primary{background:var(--grad-primary,#0a6bb0);border-color:transparent;color:#fff;box-shadow:0 2px 10px rgba(10,107,176,.35)}
html[data-theme="dark"] .btn.primary:hover{background:var(--grad-primary,#0a6bb0);filter:brightness(1.15)}
html[data-theme="dark"] .btn.danger{background:#b3312f;border-color:#b3312f;color:#fff}
html[data-theme="dark"] .seg{background:#151d2b;border-color:var(--line)}
html[data-theme="dark"] .seg-btn.active{background:#0a6bb0;color:#fff}
html[data-theme="dark"] .iconbtn{background:#28344a;color:#cfe0ff;border-color:var(--line)}
html[data-theme="dark"] .iconbtn:hover{background:#33425e}
html[data-theme="dark"] .link,html[data-theme="dark"] a.link,html[data-theme="dark"] button.link{color:#7fb0ff}
/* surfaces */
html[data-theme="dark"] .schedule-wrap,html[data-theme="dark"] .board-col,html[data-theme="dark"] .list .li,html[data-theme="dark"] .cp-row,html[data-theme="dark"] .role-chip,html[data-theme="dark"] .inv-meta,html[data-theme="dark"] .uc-card{background:#1a2231;border-color:var(--line);color:var(--ink)}
html[data-theme="dark"] .board-card{background:#141b28;border-color:var(--line)}
html[data-theme="dark"] .board-n{background:#28344a;color:#cfe0ff}
html[data-theme="dark"] .board-col .board-h,html[data-theme="dark"] .dash-card h3{color:var(--heading)}
html[data-theme="dark"] .cp-code,html[data-theme="dark"] .day-chips .chip{background:#28344a;color:#cfe0ff;border-color:var(--line)}
html[data-theme="dark"] .uc-b{background:#28344a;color:#e8ecf5}
html[data-theme="dark"] .photo-row{background:#141b28}
html[data-theme="dark"] .data-table tr:hover td,html[data-theme="dark"] .audit-row:hover,html[data-theme="dark"] .msg-chan:hover{background:#232f42}
html[data-theme="dark"] .schedule thead th,html[data-theme="dark"] .schedule .site-col{background:#141b28;color:var(--muted)}
html[data-theme="dark"] .shift{background:#22314e;color:var(--ink)}
html[data-theme="dark"] .shift.open{background:#3a2330}
/* status pills — keep semantic hue but dark-friendly */
html[data-theme="dark"] .pill.inactive,html[data-theme="dark"] .pill.draft{background:#28344a;color:#aab6cc}
html[data-theme="dark"] .mini.tasks,html[data-theme="dark"] .mini.draftt{background:#28344a;color:#aab6cc}
html[data-theme="dark"] .needreply,html[data-theme="dark"] .msg-chan.needreply{background:#2a2413}
html[data-theme="dark"] .disp-alert{background:#2a1a1c;border-color:#5a2b2b;color:#f0c9c9}
html[data-theme="dark"] .disp-alert.auto_clockout{background:#331a1a}
html[data-theme="dark"] .msg-reply,html[data-theme="dark"] .reply-quote{background:#1a2440;border-left-color:#3a5bc7;color:#c8d6f0}
html[data-theme="dark"] .modal-foot,html[data-theme="dark"] .msg-compose,html[data-theme="dark"] .msg-side-head{background:#141b28;border-color:var(--line)}
html[data-theme="dark"] .empty{color:var(--muted)}
.rep-line{display:flex;justify-content:space-between;gap:14px;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}
.rep-line b{text-align:right}
.rep-narrative{white-space:pre-wrap;background:#f7f9fc;border:1px solid var(--line);border-radius:8px;padding:12px;margin:12px 0;font-size:14px;line-height:1.5}
.rep-photos{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.rep-photo{position:relative;width:96px;height:96px}
.rep-photo img{width:96px;height:96px;object-fit:cover;border-radius:8px;border:1px solid var(--line);cursor:pointer}
.rep-photo .link{position:absolute;top:-6px;right:-6px;background:var(--red);color:#fff;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:11px}
[data-theme="dark"] .rep-narrative{background:#141b28}
.company-logo{width:26px;height:26px;border-radius:6px;object-fit:cover;margin-right:8px;vertical-align:middle}
.ann-feed{max-width:720px}
.ann-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}
.ann-card.pinned{box-shadow:0 0 0 2px var(--amber) inset}
.ann-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ann-kind{font-weight:800;font-size:13px;color:var(--navy)}
.ann-pin{font-size:11px;color:var(--amber);font-weight:700}
.ann-title{font-size:16px;font-weight:700;margin:2px 0}
.ann-body{white-space:pre-wrap;font-size:14px;line-height:1.5;margin:4px 0}
.ann-img{max-width:100%;border-radius:10px;margin-top:8px;cursor:pointer}
.ann-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px}
.ann-reacts{display:flex;gap:6px}
.ann-react{background:#f2f5fa;border:1px solid var(--line);border-radius:16px;padding:3px 9px;font-size:13px;cursor:pointer}
.ann-react:hover{background:#e7eefc}
.ann-react.on{background:#dbe9ff;border-color:#7aa7ff;font-weight:700}
.ann-card.draft{border:1px dashed #f0a500;background:#fffdf5}
.ann-draftbar{display:flex;align-items:center;gap:10px;font-size:13px;color:#8a6d00;margin-bottom:8px;flex-wrap:wrap}
[data-theme="dark"] .ann-card.draft{background:#2a2415;border-color:#6a5520}
.ann-cbtn{background:#f2f5fa;border:1px solid var(--line);border-radius:16px;padding:3px 9px;font-size:13px;cursor:pointer;margin-left:auto}
.ann-comments{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.ann-cmt{font-size:13px;margin-bottom:6px}
.ann-cadd{display:flex;gap:6px;margin-top:8px}
.ann-cadd input{flex:1;padding:6px 8px;border:1px solid var(--line);border-radius:8px}
[data-theme="dark"] .ann-cbtn{background:#232f42}[data-theme="dark"] .ann-react.on{background:#26407a;border-color:#4a74c8}
.task-done{opacity:.55}.task-done b{text-decoration:line-through}
.pofiles{border:1px solid var(--line);border-radius:8px;padding:8px;background:#fafbfd}
.pofile{display:flex;align-items:center;gap:8px;padding:4px 2px}
.pofile-name{font-size:13px;text-decoration:none;color:var(--navy);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pofile-name:hover{text-decoration:underline}
[data-theme="dark"] .pofiles{background:#141b28}[data-theme="dark"] .pofile-name{color:#cfe0ff}
.cb-lesson{border:1px solid var(--line);border-radius:8px;padding:8px;margin-bottom:8px;background:#fafbfd}
.cb-lhead{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.cb-lhead .cb-title{flex:1}
.cb-lesson textarea,.cb-lesson input,.cb-lesson select{padding:5px 7px;border:1px solid var(--line);border-radius:6px}
.cb-lesson textarea,.cb-url{width:100%;box-sizing:border-box}
.cb-q{border-left:3px solid var(--line);padding-left:8px;margin:6px 0}
.cb-q input,.cb-q textarea{width:100%;box-sizing:border-box;margin-bottom:3px}
[data-theme="dark"] .cb-lesson{background:#141b28}
.kb-cat{margin-bottom:16px}.kb-cat h3{margin:0 0 6px;font-size:15px;color:var(--navy)}
.kb-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;margin-bottom:6px;background:#fff}
[data-theme="dark"] .kb-item{background:#1a2231}
.fb-row{display:flex;gap:6px;align-items:center;margin-bottom:6px;flex-wrap:wrap}
.fb-row .fb-label{flex:1;min-width:140px}
.fb-row .fb-opts{flex:1;min-width:140px}
.fb-row select,.fb-row input{padding:5px 7px;border:1px solid var(--line);border-radius:6px}
.fb-req{font-size:12px;color:var(--muted);white-space:nowrap}
.tax-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:12px 0}
.tax-form{border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:12px;background:#fff}
.tf-co{font-size:13px;color:var(--muted);margin-bottom:6px}
.tax-tbl{border-collapse:collapse;width:100%;max-width:520px;margin:8px 0}
.tax-tbl td{border:1px solid var(--line);padding:6px 10px;font-size:13px}
.txbox{width:44px;font-weight:700;text-align:center;background:#f2f5fa}
.txv{text-align:right;font-variant-numeric:tabular-nums}
[data-theme="dark"] .tax-form{background:#1a2231}[data-theme="dark"] .txbox{background:#232f42}
.tl-ev{font-size:13px;padding:5px 0;border-bottom:1px solid var(--line)}
.tl-t{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:4px}
.tl-shots{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.tl-shot{width:88px;text-align:center;text-decoration:none;color:var(--muted);font-size:11px}
.tl-shot img{width:88px;height:88px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}
.ai-suggest{white-space:pre-wrap;font-size:13px;line-height:1.5;background:#eef3fb;border-radius:8px;padding:10px}
.cov-row{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
[data-theme="dark"] .ai-suggest{background:#141b28}
.maint-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.maint-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.money-cards{display:flex;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.mcard{flex:1;min-width:150px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.mcard.sm{padding:10px 12px}
.mc-lbl{font-size:12px;color:var(--muted);margin-bottom:4px}
.mc-val{font-size:22px;font-weight:800;color:var(--navy)}
.mcard.sm .mc-val{font-size:18px}
.money-neg{color:#c0182a;font-weight:700}
.money-pos{color:#0d7a45;font-weight:700}
[data-theme="dark"] .mcard{background:#1a2231}[data-theme="dark"] .mc-val{color:#e8eef7}
/* Money overview — category bars + AI insight chips */
.mbars{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.mbar-row{display:grid;grid-template-columns:110px 1fr 80px;align-items:center;gap:10px;font-size:13px}
.mbar-lbl{color:var(--navy);text-transform:capitalize;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mbar-track{background:var(--panel,#f0f3f8);border-radius:6px;height:14px;overflow:hidden}
.mbar-fill{height:100%;background:linear-gradient(90deg,#2f6fed,#5b8def);border-radius:6px}
.mbar-amt{text-align:right;font-weight:700;color:var(--navy)}
.mai-insight{border-left:3px solid #2f6fed;background:var(--panel,#f6f8fc);border-radius:8px;padding:8px 10px;margin-top:8px;font-size:13px;line-height:1.45}
.mai-insight.sev2{border-left-color:#e08600}.mai-insight.sev3{border-left-color:#e11d2a}
[data-theme="dark"] .mbar-track{background:#232f42}[data-theme="dark"] .mai-insight{background:#1a2231}
[data-theme="dark"] .ann-card{background:#1a2231}[data-theme="dark"] .ann-react{background:#232f42}
.clock-btn{background:#0f9d58;color:#fff;border:0;border-radius:8px;padding:8px 12px;font-size:13px;font-weight:700;width:100%;margin-bottom:8px}
.clock-btn.on{background:var(--red)}
.theme-toggle{background:transparent;border:1px solid rgba(255,255,255,.2);color:#cdd8ec;border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px}
.theme-toggle:hover{background:rgba(255,255,255,.08)}
.dir-av{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#0a6bb0,#003050);color:#fff;font-weight:700;font-size:13px;flex:0 0 auto;text-transform:uppercase}
/* Channels 2.0 */
.compose-tog{display:inline-flex;align-items:center;gap:2px;font-size:15px;padding:0 4px;cursor:pointer;user-select:none}
.compose-tog input{margin:0;cursor:pointer}
.bubble.prio{border:2px solid #e11d2a;box-shadow:0 0 0 2px rgba(225,29,42,.12)}
.bubble.needsack{background:#fff7e6}
.prioT{color:#c0182a;letter-spacing:.5px}
.bubblebar{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;align-items:center}
.rx{border:1px solid var(--line);background:#fff;border-radius:12px;padding:1px 7px;font-size:12px;cursor:pointer;line-height:1.5}
.rx.on{background:#e7f0ff;border-color:#8fb3ff}
.rx.add{color:#888;font-weight:700}
.mbtn{border:none;background:transparent;cursor:pointer;font-size:13px;opacity:.6}
.mbtn:hover{opacity:1}
.mbtn-del{color:var(--red,#e11d2a)}
.mbtn-del:hover{opacity:1;color:var(--red,#e11d2a)}
.ackline{display:block;margin-top:4px;font-size:11px;color:#1e7a44;cursor:pointer}
.pin-item{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:8px}
/* Walkie-talkie radio bar — floats ABOVE the AI FAB (right:22 bottom:22, 56px tall) so the two
   never overlap; matches the collapsed rad-fab which already sits at bottom:128px. */
.rad-bar{position:fixed;right:18px;bottom:calc(94px + env(safe-area-inset-bottom,0px));width:280px;background:#01192b;color:#fff;border-radius:14px;box-shadow:0 8px 30px rgba(0,0,0,.4);padding:12px;z-index:100000;font-family:var(--font-body,system-ui,sans-serif)}
.rad-top{display:flex;align-items:center;gap:6px;font-size:12px;margin-bottom:8px}
.rad-live{color:#38d996;font-weight:800;letter-spacing:.5px}
.rad-label{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rad-mem{margin-left:auto;color:#9fb0c8}
.rad-x{background:transparent;border:none;color:#9fb0c8;font-size:16px;cursor:pointer;margin-left:6px}
.rad-status{font-size:13px;text-align:center;margin-bottom:8px;color:#9fb0c8;min-height:18px}
.rad-status.me{color:#38d996;font-weight:700}
.rad-status.other{color:#ff9d6b;font-weight:700}
.rad-ptt{width:100%;padding:20px 0;border:none;border-radius:12px;background:#032b49;color:#fff;font-size:16px;font-weight:800;letter-spacing:.5px;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none}
.rad-ptt:active,.rad-ptt.on{background:#e11d2a}
/* Inline icon system (matches nav line-icons) */
.ic{width:16px;height:16px;vertical-align:-3px;flex:0 0 auto}
.iconbtn .ic{width:20px;height:20px;vertical-align:-4px}
.compose-tog{color:#7a8699}
.compose-tog input:checked ~ .ic,.compose-tog input:checked + .ic{color:#0a6bb0}
.compose-tog:has(input:checked){color:#0a6bb0}
/* Dispatch left-post alerts */
.disp-alerts{margin-bottom:14px;display:flex;flex-direction:column;gap:6px}
.disp-alert{display:flex;align-items:center;gap:10px;background:var(--danger-bg,#fdeaea);border:1px solid var(--danger-border,#f3c3c3);border-left:4px solid #e11d2a;border-radius:8px;padding:8px 12px;font-size:13px}
.disp-alert.auto_clockout{background:#fbeaea;border-left-color:#a31515}
.disp-alert span{flex:1}
.disp-alert button{margin-left:auto}
/* Quoted replies */
.reply-quote{border-left:3px solid #9fb3d9;background:rgba(0,0,0,.04);padding:3px 8px;margin-bottom:4px;font-size:12px;color:#556;border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.reply-quote b{color:#0b2036}
.msg-reply{display:flex;align-items:center;gap:8px;background:var(--blue-tint,#e7f0fa);border-left:3px solid var(--blue,#0a6bb0);padding:6px 10px;font-size:12px;border-radius:6px 6px 0 0}
.msg-reply span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg-reply-x{border:none;background:transparent;cursor:pointer;color:#888;font-size:14px}
/* Command wall (full-screen dispatch) */
.cmd-wall{display:none;position:fixed;inset:0;z-index:100000;background:#01192b;color:#eef3fb;overflow:auto;padding:18px 22px;font-family:var(--font-body,system-ui,sans-serif)}
.wall-head{display:flex;align-items:center;gap:16px;margin-bottom:14px}
.wall-title{font-size:22px;font-weight:800;letter-spacing:1px}
.wall-clock{margin-left:auto;font-size:26px;font-weight:800;font-variant-numeric:tabular-nums;color:#9fd8ff}
.wall-x{background:#032b49;color:#fff;border:none;border-radius:8px;padding:8px 14px;font-weight:700;cursor:pointer}
.wstats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:16px}
.wstat{background:#131d33;border-radius:12px;padding:12px;text-align:center;border-top:3px solid #2a3a5e}
.wstat.grn{border-top-color:#38d996}.wstat.amber{border-top-color:#f0a93b}.wstat.red{border-top-color:#ff5a5a}
.wnum{font-size:34px;font-weight:800;line-height:1}.wlbl{font-size:12px;color:#9fb0c8;margin-top:4px}
.wall-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.wcol{background:#111a2e;border-radius:12px;padding:10px;min-height:120px}
.wcol-h{font-size:13px;font-weight:700;color:#9fb0c8;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;border-bottom:1px solid #22314f;padding-bottom:6px}
.wcard{background:#182541;border-radius:8px;padding:8px 10px;margin-bottom:7px;font-size:13px}
.wcard.bad{background:#3a1620;border-left:3px solid #ff5a5a}
.wcard.warn{background:#3a2f14;border-left:3px solid #f0a93b}
.wcard.brk{opacity:.75}
.wc-top{display:flex;align-items:center;gap:6px}
.wdot{width:10px;height:10px;border-radius:50%;margin-left:auto;flex:0 0 auto}
.wdot.grn{background:#38d996}.wdot.amber{background:#f0a93b}.wdot.red{background:#ff5a5a}
.wc-sub{color:#c3d0e6;font-size:12px;margin-top:2px}
.wc-meta{color:#8497b5;font-size:11px;margin-top:3px}
.wempty{color:#5f6f8c;font-size:12px;padding:8px;text-align:center}
@media(max-width:900px){.wstats{grid-template-columns:repeat(3,1fr)}.wall-grid{grid-template-columns:1fr}}

/* ============================================================
   MODERN REFRESH 2026 — appended overrides (cascade wins)
   UNIFIED COMMAND (2026-07): logo-matched navy/blue system.
   Navy console sidebar · calm light content · blue actions ·
   red is DANGER-ONLY (alerts, SOS, fails) — never brand accent.
   ============================================================ */
/* Self-hosted brand fonts (SIL OFL) — zero runtime dependency on Google Fonts.
   Saira = display (headings, KPI numbers, wordmark) · JetBrains Mono = clock/times/IDs. */
@font-face{font-family:'Saira';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/saira-600.woff2') format('woff2')}
@font-face{font-family:'Saira';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/saira-700.woff2') format('woff2')}
@font-face{font-family:'Saira';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/saira-800.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/jetbrains-mono-400.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/jetbrains-mono-700.woff2') format('woff2')}
:root{
  --navy:#032b49; --navy-2:#01192b; --red:#e11d2a; --red-soft:#fdeaea;
  --ink:#16222f; --muted:#5f7288; --line:#e4eaf1; --bg:#eaf0f6; --white:#fff;
  --green:#0f9d58; --amber:#e08600;
  /* surfaces + text (merged from the legacy :root so there is a single source of truth) */
  --panel:#f8fafc; --panel-2:#eef2f7; --card:#ffffff; --text:#16222f; --heading:#0b2036;
  /* semantic accents — use these instead of raw hex going forward */
  --ai:#7b3ff2; --ai-soft:#f3edff; --ok:#0f9d58; --warn:#e08600; --info:#1a86d0; --star:#f5b400;
  --radius:12px; --radius-lg:16px; --radius-sm:9px;
  /* spacing scale */
  --sp-1:6px; --sp-2:10px; --sp-3:14px; --sp-4:20px;
  --shadow:0 1px 2px rgba(18,28,48,.05), 0 8px 22px rgba(18,28,48,.05);
  --shadow-lg:0 1px 2px rgba(18,28,48,.05), 0 12px 28px rgba(18,28,48,.10);
  --ring:0 0 0 3px rgba(26,134,208,.28);
  /* ---- Unified Command palette ---- */
  /* navy scale */
  --navy-deep:#01192b; --navy-ink:#0b2036; --slate:#3a5064; --faint:#8593a5; --disabled:#93a3b5;
  /* blue scale */
  --blue:#0a6bb0; --blue-deep:#005080; --blue-text:#0a5a94;
  --blue-bright:#1a86d0; --blue-light:#4aa3dd;
  --blue-tint:#e7f0fa; --blue-tint-2:#d8e9f7; --selected:#eef6ff;
  /* status triples (text / bg / border — dot uses the base color) */
  --ok-text:#0d7a45; --ok-bg:#e4f6ec; --ok-border:#b7e6ca;
  --danger:#e11d2a; --danger-text:#c0182a; --danger-bg:#fdeaea; --danger-border:#f3c3c3;
  --warn-text:#a8660a; --warn-bg:#fdf0dc; --warn-border:#f3ddb5;
  --info-text:#0a5a94; --info-bg:#e7f0fa; --info-border:#d8e2ec;
  --neutral-bg:#eef1f5;
  /* gradients */
  --grad-primary:linear-gradient(90deg,#005080,#0a6bb0);
  --grad-sidebar:linear-gradient(180deg,#032b49,#01192b);
  --grad-header-mobile:linear-gradient(165deg,#032b49,#005080);
  --grad-map:linear-gradient(135deg,#052a45,#0b3a5e);
  /* gold (ratings / badge tiers — distinct from amber warnings) */
  --gold:#f5b400;
  /* fonts */
  --font-body:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-display:'Saira','Segoe UI Variable Display','Segoe UI',var(--font-body);
  --font-mono:'JetBrains Mono',ui-monospace,'Cascadia Mono',Menlo,Consolas,monospace;
  /* elevated shadows */
  --shadow-btn:0 6px 16px rgba(0,80,128,.28);
  --shadow-nav-active:0 6px 16px rgba(0,80,128,.4);
  --radius-pill:20px;
}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{background:var(--bg)}
::selection{background:rgba(0,80,128,.2)}
/* slim modern scrollbars */
*{scrollbar-width:thin;scrollbar-color:#b9c6d6 transparent}
*::-webkit-scrollbar{width:9px;height:9px}
*::-webkit-scrollbar-thumb{background:#c2cedd;border-radius:20px;border:2px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#aab5c7;background-clip:content-box}

/* Sidebar — logo-navy console gradient, blue action accents */
.sidebar{background:var(--grad-sidebar);box-shadow:1px 0 0 rgba(255,255,255,.03), 6px 0 26px rgba(3,18,34,.16)}
.side-brand{padding:22px 20px 18px}
.side-nav{gap:3px;padding:14px 12px}
.nav-btn{color:#9db0c6;border-radius:10px;padding:10px 12px;position:relative;transition:background .15s,color .15s,transform .05s}
.nav-btn:hover{background:rgba(255,255,255,.06);color:#fff}
.nav-btn.active{background:var(--grad-primary);color:#fff;box-shadow:var(--shadow-nav-active)}
.nav-btn.active::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--blue-light);opacity:.95}
.nav-badge{margin-left:auto;background:var(--red);color:#fff;font-size:10px;font-weight:800;min-width:18px;height:18px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
.nav-btn.active .nav-badge{background:#fff;color:var(--blue-deep)}

/* Typography */
h1{font-family:var(--font-display);font-size:25px;font-weight:800;letter-spacing:-.01em;color:var(--heading)}
h2{font-family:var(--font-display,inherit);font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--heading)}
.view-head{margin-bottom:22px}
main{padding:30px 40px}

/* Buttons — soft depth, focus ring, press feedback */
.btn{border-radius:10px;transition:background .15s,border-color .15s,box-shadow .15s,transform .04s;padding:9px 15px}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:none;box-shadow:var(--ring)}
.btn.primary{background:var(--grad-primary,var(--navy));border-color:transparent;box-shadow:var(--shadow-btn,0 2px 8px rgba(0,80,128,.18))}
.btn.primary:hover{background:var(--grad-primary,var(--navy));filter:brightness(1.08)}
.btn.ghost{background:#fff;border-color:var(--line)}
.btn.ghost:hover{background:#eef1f7;border-color:#d7dde8}
.btn.danger{background:#e11d2a;border-color:#e11d2a;color:#fff}
.btn.danger:hover{background:#c0182a;border-color:#c0182a}

/* Inputs — consistent, modern focus glow */
input,select,textarea,.search{border-radius:10px}
input:focus,select:focus,textarea:focus,.search:focus{outline:none;border-color:var(--blue-bright,#1a86d0);box-shadow:var(--ring)}
.field input,.field select,.field textarea{padding:10px 12px;border:1px solid var(--line)}

/* Cards — larger radius, hover lift, tabular numbers */
.card{border-radius:var(--radius-lg);border-color:var(--line);box-shadow:var(--shadow);transition:box-shadow .18s,transform .18s}
.cards .card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}
.card .num{font-family:var(--font-display,inherit);font-size:32px;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--heading)}

/* Tables — cleaner, rounded, soft hover */
.data-table{border-radius:var(--radius-lg);box-shadow:var(--shadow)}
.data-table th{background:var(--panel,#f8fafc);font-size:10.5px;font-weight:800;letter-spacing:.05em;color:var(--muted)}
.data-table td{border-bottom-color:#f1f5f9}
.data-table tr:hover td{background:#f7fafc}
html[data-theme="dark"] .data-table td{border-bottom-color:var(--line)}

/* Pills / chips — refined */
.pill{padding:4px 10px;font-weight:700;font-size:11px;letter-spacing:.02em}
/* canonical status pills — leading dot like the Command Center design */
.pill.ok::before,.pill.info::before,.pill.warn::before,.pill.danger::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:1px}
.pill.ok::before{background:#0f9d58}.pill.info::before{background:#1a86d0}.pill.warn::before{background:#e08600}.pill.danger::before{background:#e11d2a}
.seg{border-radius:10px}.seg-btn.active{background:#0b2036}

/* Modal polish */
.modal,.modal-card{border-radius:var(--radius-lg)!important}
/* Module toggles */
.mod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 18px}
.mod-tog{margin:5px 0;font-size:13px}
/* Global search */
.side-search{padding:8px 12px 4px;position:relative}
.side-search input{width:100%;padding:8px 11px;border-radius:9px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#fff;font-size:13px}
.side-search input::placeholder{color:#8493ad}
.side-search input:focus{outline:none;border-color:#1a86d0;background:rgba(255,255,255,.10)}
.global-results{position:absolute;left:12px;right:12px;top:44px;background:#fff;border-radius:10px;box-shadow:0 12px 30px rgba(10,15,30,.35);z-index:60;overflow:hidden;max-height:60vh;overflow-y:auto}
.gr-item{padding:9px 12px;font-size:13px;color:#1b2230;cursor:pointer;border-bottom:1px solid #eef1f6}
.gr-item:hover{background:#f2f5fb}
.gr-none{padding:12px;color:#8894a8;font-size:13px}
.sub-loc{font-size:13px;background:#f2f6fc;border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:6px}
.fb-help{font-size:12px}

/* ---- collapsible sidebar: icon rail mode (persisted) — more room for the Schedule ---- */
.sidebar{transition:width .18s ease}
main{transition:margin-left .18s ease}
.nav-collapse{position:fixed;left:213px;top:70px;width:26px;height:26px;border-radius:50%;border:1px solid var(--line,#e4eaf1);background:#fff;color:var(--navy,#032b49);font-size:14px;font-weight:800;cursor:pointer;z-index:30;box-shadow:0 2px 8px rgba(18,28,48,.22);transition:left .18s ease;line-height:1;padding:0}
.nav-collapse:hover{background:#f0f4fb}
body.nav-min .nav-collapse{left:49px}
html[data-theme="dark"] .nav-collapse{background:#1d2636;color:#dbe4f2;border-color:#2b3648}
body.nav-min .sidebar{width:62px}
body.nav-min .side-brand,body.nav-min .nav-btn span,body.nav-min .side-user #who,body.nav-min .nav-sec-label,body.nav-min .side-search{display:none}
body.nav-min .nav-btn{justify-content:center;padding:10px 0}
body.nav-min .nav-section.collapsed .nav-btn{display:flex} /* section labels are hidden in rail mode — never trap buttons */
body.nav-min .side-foot{flex-direction:column;justify-content:center}
body.nav-min main{margin-left:62px}

/* ---- modern form fields: match the rest of the UI (no more legacy browser look) ---- */
.field label{font-size:12px;font-weight:700;color:var(--muted,#5a6577)}
.field input,.field select,.field textarea{padding:9px 12px;border:1.5px solid #dbe4ee;border-radius:10px;font-size:13.5px;background:var(--panel,#f8fafc);color:inherit;transition:border-color .12s,box-shadow .12s,background .12s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:#1a86d0;background:var(--card,#fff);box-shadow:var(--ring)}
input[type="checkbox"],input[type="radio"]{accent-color:#0a6bb0}
.modal{width:500px;border:1px solid var(--line,#e6e9ef)}
html[data-theme="dark"] .field input,html[data-theme="dark"] .field select,html[data-theme="dark"] .field textarea{background:#1a2231;border-color:#2b3648}
html[data-theme="dark"] .field input:focus,html[data-theme="dark"] .field select:focus,html[data-theme="dark"] .field textarea:focus{border-color:#4f7bff;box-shadow:0 0 0 3px rgba(79,123,255,.2)}

/* clickable status pills (Sites) — the pill is the on/off shortcut */
.pill-tgl{cursor:pointer;user-select:none}
.pill-tgl:hover{box-shadow:0 0 0 2px rgba(26,134,208,.35)}

/* officer flags in the Messages details panel — must-know facts, visible instantly */
.mi-flags{display:flex;flex-direction:column;gap:6px;margin:10px 0 2px;width:100%}
.mi-flag{font-size:12px;font-weight:600;padding:7px 10px;border-radius:9px;text-align:left;line-height:1.35}
.mi-flag.red{background:#fde8e8;color:#b3261e;border:1px solid #f0b3b1}
.mi-flag.amber{background:#fff4e0;color:#8a5a00;border:1px solid #f3d18a}
.mi-flag.grey{background:var(--panel,#f4f7fb);color:var(--muted,#5a6577);border:1px solid var(--line,#e2e6ee)}
html[data-theme="dark"] .mi-flag.red{background:#2c1414;border-color:#5c2726;color:#f0a3a1}
html[data-theme="dark"] .mi-flag.amber{background:#2a2310;border-color:#5c4a1e;color:#f0c974}
html[data-theme="dark"] .mi-flag.grey{background:#1d2636;border-color:#2b3648;color:#aab6cc}
.mi-click{cursor:pointer}
.mi-name.mi-click:hover{text-decoration:underline}
.mi-av.mi-click:hover{filter:brightness(1.12)}

/* ================= OpenPhone-style messenger polish ================= */
/* conversation header: name left, quiet round icon actions right */
.msg-head{gap:4px;padding:8px 12px}
.msg-title{font-size:15px;font-weight:700;margin-right:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-head .btn{width:34px;height:34px;min-width:34px;padding:0;border-radius:50%;border:1px solid transparent;background:transparent;color:#5f6b80;display:inline-flex;align-items:center;justify-content:center;box-shadow:none;font-size:0;line-height:0}
.msg-head .btn .ic{width:17px;height:17px}
.msg-head .btn:hover{background:#edf1f7;color:var(--navy,#032b49)}
html[data-theme="dark"] .msg-head .btn{color:#9fb0c9;background:transparent;border-color:transparent}
html[data-theme="dark"] .msg-head .btn:hover{background:#22304a;color:#fff}
/* sidebar head: compact square compose buttons */
.msg-hbtn{flex:0 0 32px!important;width:32px;height:32px;padding:0!important;border-radius:9px;font-size:15px!important;display:inline-flex;align-items:center;justify-content:center}
/* bubbles: blue mine / soft-gray theirs, tail-corner, tight type — no more red stripe */
.bubble{max-width:62%;padding:7px 11px;border-radius:16px;font-size:13.5px;line-height:1.45}
.bubble.mine{background:#0a6bb0;color:#fff;border-bottom-right-radius:5px}
.bubble.them{background:#f0f2f7;border:0;border-bottom-left-radius:5px}
html[data-theme="dark"] .bubble.them{background:#26334b;border:0}
.bubble .bmeta{font-size:10.5px;margin-bottom:1px}
.bubble.mine .bmeta{opacity:.8}
.bubble.prio{border:2px solid #e11d2a}
/* message actions appear on hover (stay visible when reactions exist / on touch) */
.bubblebar{opacity:0;transition:opacity .15s}
.bubble:hover .bubblebar,.bubblebar:has(.rx){opacity:1}
@media (hover:none){.bubblebar{opacity:1}}
/* info-panel action circles: calmer, uniform */
.mi-acts{gap:10px}
.mi-acts button{width:38px;height:38px;border:1px solid transparent;background:#f1f4f9;font-size:15px}
.mi-acts button:hover{background:#fff;border-color:#b9cdf4}
html[data-theme="dark"] .mi-acts button{background:#22304a;border-color:transparent}
/* schedule week-nav: one grouped segmented control (Google-style) */
.week-nav{flex:0 0 auto;gap:0;background:var(--card,#fff);border:1px solid var(--line,#dce3ee);border-radius:11px;padding:2px;display:inline-flex;align-items:center}
.week-nav .btn{border:none;background:transparent;box-shadow:none;padding:6px 11px;border-radius:9px;font-weight:700}
.week-nav .btn:hover{background:#eef1f6}
.week-nav span{min-width:150px;font-size:13.5px;font-weight:700}
html[data-theme="dark"] .week-nav{background:#1a2231;border-color:#2b3648}
html[data-theme="dark"] .week-nav .btn:hover{background:#22304a}
#add-shift{margin-left:auto}

/* icon sizing for dense contexts (schedule headers, summary chips, badges) */
.svgi.xs{width:12px;height:12px;vertical-align:-2px}
.svgi.sm{width:14px;height:14px;vertical-align:-2px}
.phone-call-btn{padding:0 4px}
.phone-call-btn .svgi{width:14px;height:14px;vertical-align:-2px;color:var(--blue,#0a6bb0)}

/* ============ Global contextual topbar (design: USG Platform) ============ */
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:20px;
  margin:-28px -36px 22px;padding:15px 36px;
  background:rgba(234,240,246,.86);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid #dbe4ee}
.tb-lead{min-width:0}
.tb-title-row{display:flex;align-items:center;gap:11px}
.topbar h1{font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:24px;letter-spacing:-.01em;margin:0;color:var(--heading,#0b2036);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-sub{font-size:12.5px;color:var(--muted,#5f7288);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-live{display:inline-flex;align-items:center;gap:6px;background:var(--ok-bg,#e4f6ec);border:1px solid var(--ok-border,#b7e6ca);color:var(--ok-text,#0d7a45);font-size:11px;font-weight:800;letter-spacing:.08em;padding:4px 9px;border-radius:20px;flex:none}
.tb-live-dot{width:7px;height:7px;border-radius:50%;background:var(--ok,#0f9d58);animation:usgpulse 1.6s infinite}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:14px;flex:none}
.tb-bell{position:relative;width:40px;height:40px;border-radius:11px;border:1px solid var(--blue-tint-2,#d8e2ec);background:var(--card,#fff);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--slate,#3a5064)}
.tb-bell:hover{background:#f2f7fb}
.tb-bell svg{width:18px;height:18px}
.tb-bell-badge{position:absolute;top:-3px;right:-3px;min-width:17px;height:17px;background:var(--red,#e11d2a);color:#fff;font-size:10px;font-weight:800;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid var(--bg,#eaf0f6)}
/* global comms buttons (message / call / radio) — match the bell's icon-button style */
.tb-comms{display:flex;align-items:center;gap:8px}
.tb-comm{position:relative;width:40px;height:40px;border-radius:11px;border:1px solid var(--blue-tint-2,#d8e2ec);background:var(--card,#fff);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--slate,#3a5064);transition:background .12s,color .12s,border-color .12s}
.tb-comm:hover{background:#f2f7fb;color:var(--primary,#0a6bb0);border-color:var(--primary,#0a6bb0)}
.tb-comm svg{width:18px;height:18px}
.tb-comm[hidden]{display:none}
/* notification dropdown */
.tb-notif{position:absolute;top:64px;right:30px;width:340px;max-height:70vh;overflow:auto;background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);border-radius:14px;box-shadow:var(--shadow-lg,0 18px 44px rgba(3,43,73,.18));z-index:60}
.tb-notif-head{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--line,#e4eaf1);font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:13px;color:var(--heading,#0b2036)}
.tb-notif-row{display:flex;gap:11px;padding:12px 16px;border-bottom:1px solid var(--panel-2,#eef2f7);cursor:pointer}
.tb-notif-row:hover{background:var(--selected,#eef6ff)}
.tb-notif-row:last-child{border-bottom:0}
.tb-notif-ic{width:32px;height:32px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center}
.tb-notif-ic svg{width:16px;height:16px}
.tb-notif-ic.sos{background:var(--danger-bg,#fdeaea);color:var(--danger-text,#c0182a)}
.tb-notif-ic.warn{background:var(--warn-bg,#fdf0dc);color:var(--warn-text,#a8660a)}
.tb-notif-ic.info{background:var(--info-bg,#e7f0fa);color:var(--info-text,#0a5a94)}
.tb-notif-t{font-size:13px;font-weight:600;color:var(--heading,#0b2036);line-height:1.3}
.tb-notif-m{font-size:11.5px;color:var(--muted,#5f7288);margin-top:2px}
.tb-notif-empty{padding:26px 16px;text-align:center;color:var(--muted,#5f7288);font-size:13px}
/* the topbar owns the title now — retire per-view h1s; each view keeps its OWN action button(s).
   (The topbar is comms-only; it no longer proxies a view's primary action.) */
#main .view-head h1{display:none}
#main .view-head{min-height:0}
#main .view-head:has(.btn){margin-bottom:14px}
@media(max-width:820px){ .topbar{gap:12px;padding:12px 16px;margin:-28px -20px 16px} .topbar h1{font-size:20px} }
html[data-theme="dark"] .topbar{background:rgba(8,21,34,.82);border-bottom-color:#1d3247}
html[data-theme="dark"] .tb-bell{background:#0e1e2e;border-color:#1d3247;color:#9fb2c4}
html[data-theme="dark"] .tb-bell:hover{background:#12283b}
html[data-theme="dark"] .tb-comm{background:#0e1e2e;border-color:#1d3247;color:#9fb2c4}
html[data-theme="dark"] .tb-comm:hover{background:#12283b;color:#5fb0ec;border-color:#2a5c86}
/* Office hub ⊞ app-launcher (topbar, left) + grid popover */
.tb-applauncher{position:relative;flex:none;margin-right:4px}
.tb-apps-btn{width:40px;height:40px;border-radius:11px;border:1px solid var(--blue-tint-2,#d8e2ec);background:var(--card,#fff);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--slate,#3a5064)}
.tb-apps-btn:hover{background:#f2f7fb;color:var(--primary,#0a6bb0);border-color:var(--primary,#0a6bb0)}
.tb-apps-btn svg{width:20px;height:20px}
.tb-apps-pop{position:absolute;top:50px;left:0;z-index:60;background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);border-radius:14px;box-shadow:var(--shadow-lg,0 18px 44px rgba(3,43,73,.18));padding:12px;width:322px;max-height:min(72vh,540px);overflow:auto}
.tb-apps-pop[hidden]{display:none}
.tb-apps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.tb-app{display:flex;flex-direction:column;align-items:center;gap:7px;padding:13px 8px;border-radius:11px;cursor:pointer;border:1px solid transparent;background:transparent;font:inherit}
.tb-app:hover{background:var(--selected,#eef6ff);border-color:var(--tint,#d8e2ec)}
.tb-app.on{background:var(--selected,#eef6ff);border-color:var(--primary,#0a6bb0)}
.tb-app .tb-app-ic{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:#fff}
.tb-app .tb-app-ic svg{width:21px;height:21px}
.tb-app>span:last-child{font-size:12px;font-weight:700;color:var(--heading,#0b2036)}
html[data-theme="dark"] .tb-apps-btn{background:#0e1e2e;border-color:#1d3247;color:#9fb2c4}
html[data-theme="dark"] .tb-apps-btn:hover{background:#12283b;color:#5fb0ec;border-color:#2a5c86}
html[data-theme="dark"] .tb-apps-pop{background:#0e1e2e;border-color:#1d3247}
html[data-theme="dark"] .tb-app:hover,html[data-theme="dark"] .tb-app.on{background:#12283b}

/* ============ Design-system: filter chips, grid tables, progress, alert cards ============ */
.fchips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.fchip{padding:7px 13px;border-radius:9px;font-size:12px;font-weight:600;color:var(--muted,#5f7288);background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);cursor:pointer;font-family:inherit}
.fchip:hover{background:#f7fafc}
.fchip.on{background:var(--navy-ink,#0b2036);border-color:var(--navy-ink,#0b2036);color:#fff;font-weight:700}
/* grid-table (design "gt" pattern): card-wrapped rows with typed cells */
.gt{background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);border-radius:16px;overflow:hidden;box-shadow:var(--shadow,0 1px 2px rgba(18,28,48,.05))}
.gt-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--line,#e4eaf1)}
.gt-head b{font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:14.5px;color:var(--heading,#0b2036)}
.gt-count{font-size:11px;font-weight:800;padding:3px 9px;border-radius:20px;background:var(--info-bg,#e7f0fa);color:var(--info-text,#0a5a94)}
.gt-cols{display:grid;gap:12px;align-items:center;padding:10px 18px;background:var(--panel,#f8fafc);border-bottom:1px solid var(--line,#e4eaf1);font-size:10.5px;font-weight:800;letter-spacing:.05em;color:var(--muted,#5f7288);text-transform:uppercase}
.gt-row{display:grid;gap:12px;align-items:center;padding:12px 18px;border-bottom:1px solid #f1f5f9;font-size:13px}
.gt-row:hover{background:#f7fafc}
.gt-row:last-child{border-bottom:0}
.gt-strong{font-weight:700;color:var(--heading,#0b2036)}
.gt-sub{font-size:11.5px;color:var(--muted,#5f7288);margin-top:1px;font-weight:400}
.gt-mono{font-family:var(--font-mono),'JetBrains Mono',monospace;font-weight:700;font-variant-numeric:tabular-nums;color:var(--heading,#0b2036)}
.gt-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;white-space:nowrap}
.gt-chip .dt{width:6px;height:6px;border-radius:50%;flex:none}
.gt-chip.g{background:var(--ok-bg,#e4f6ec);color:var(--ok-text,#0d7a45)} .gt-chip.g .dt{background:var(--ok,#0f9d58)}
.gt-chip.b{background:var(--info-bg,#e7f0fa);color:var(--info-text,#0a5a94)} .gt-chip.b .dt{background:var(--blue-bright,#1a86d0)}
.gt-chip.r{background:var(--danger-bg,#fdeaea);color:var(--danger-text,#c0182a)} .gt-chip.r .dt{background:var(--danger,#e11d2a)}
.gt-chip.a{background:var(--warn-bg,#fdf0dc);color:var(--warn-text,#a8660a)} .gt-chip.a .dt{background:var(--warn,#e08600)}
.gt-chip.s{background:var(--neutral-bg,#eef1f5);color:var(--muted,#5f7288)} .gt-chip.s .dt{background:var(--disabled,#93a3b5)}
.gt-chip.live .dt{animation:usgpulse 1.6s infinite}
/* progress bar utility */
.pbar{height:6px;border-radius:20px;background:#e9eff5;overflow:hidden}
.pbar>span{display:block;height:100%;border-radius:20px;background:var(--grad-primary,linear-gradient(90deg,#005080,#0a6bb0))}
.pbar>span.ok{background:linear-gradient(90deg,#0f9d58,#3fbf7a)}
.pbar>span.warn{background:linear-gradient(90deg,#e08600,#f4a63d)}
.pbar>span.danger{background:linear-gradient(90deg,#e11d2a,#f26b6b)}
.pbar-row{display:flex;align-items:center;gap:9px}
.pbar-row .pbar{flex:1}
.pbar-row .pv{font-family:var(--font-mono),'JetBrains Mono',monospace;font-size:11.5px;font-weight:700;color:var(--heading,#0b2036);flex:none}
/* action/alert cards with tint gradients + blinking label dot */
.acard{border-radius:12px;padding:14px 16px;border:1px solid var(--line,#e4eaf1);background:var(--card,#fff)}
.acard.red{border-color:#f3c3c3;background:linear-gradient(180deg,#fff5f5,#fff)}
.acard.amber{border-color:#f3ddb5;background:linear-gradient(180deg,#fffaf0,#fff)}
.acard.blue{border-color:var(--info-border,#d8e2ec);background:linear-gradient(180deg,#f8fbfe,#fff)}
.acard-lbl{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.acard-lbl .dt{width:9px;height:9px;border-radius:50%;animation:usgblink 1.2s infinite}
.acard.red .acard-lbl{color:var(--danger-text,#c0182a)} .acard.red .acard-lbl .dt{background:var(--danger,#e11d2a)}
.acard.amber .acard-lbl{color:var(--warn-text,#a8660a)} .acard.amber .acard-lbl .dt{background:var(--warn,#e08600)}
.acard.blue .acard-lbl{color:var(--info-text,#0a5a94)} .acard.blue .acard-lbl .dt{background:var(--blue-bright,#1a86d0);animation:none}
@keyframes usgblink{0%,100%{opacity:1}50%{opacity:.25}}
/* dark-neutral + danger-outline button variants */
.btn.dark{background:var(--navy-ink,#0b2036);color:#fff;border-color:var(--navy-ink,#0b2036)}
.btn.dark:hover{background:#183048}
.btn.danger-o{background:var(--card,#fff);color:var(--danger-text,#c0182a);border:1px solid #f3c3c3}
.btn.danger-o:hover{background:var(--danger-bg,#fdeaea)}
/* dispatch v2: nearest-available-unit hint on late/open cards */
.disp-nearest{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line,#e4eaf1);font-size:11.5px;color:var(--muted,#5f7288)}
.disp-nearest b{color:var(--heading,#0b2036)}
.disp-nearest .svgi{color:var(--blue,#0a6bb0)}
html[data-theme="dark"] .disp-nearest{border-top-color:#1d3247}

/* ===== Intelligence Timeline (Command) — the Cascade, live. Deliberately an ink "command"
   surface in both themes (a NOC screen), rendered with the Jelanex rail-and-node motif. ===== */
.il-panel{background:linear-gradient(180deg,#0b1626,#0d1a2e);border:1px solid #1d3350;border-radius:14px;padding:18px 20px;margin-bottom:18px;color:#dbe6f2;box-shadow:0 10px 30px -18px rgba(3,20,45,.5)}
.il-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.il-head b{color:#eaf2fb;font-size:15px;letter-spacing:.01em}
.il-head .il-sub{color:#7f95ad;font-size:12.5px;margin-left:auto;font-weight:500}
.il-live{width:9px;height:9px;border-radius:50%;background:#4a93ff;box-shadow:0 0 0 0 rgba(74,147,255,.5);animation:ilpulse 2.2s infinite;flex:none}
@keyframes ilpulse{0%{box-shadow:0 0 0 0 rgba(74,147,255,.5)}70%{box-shadow:0 0 0 8px rgba(74,147,255,0)}100%{box-shadow:0 0 0 0 rgba(74,147,255,0)}}
.il-casc{border-top:1px solid #16273e;padding:14px 0 4px}
.il-casc:first-of-type{border-top:0;padding-top:8px}
.il-casc-h{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}
.il-casc-h b{color:#eaf2fb;font-size:14px}
.il-casc-h .il-when{color:#6b829b;font-family:ui-monospace,"Cascadia Code",Consolas,monospace;font-size:11.5px}
.il-casc-h .il-resolve{margin-left:auto;color:#7db2ff;font-size:12.5px}
.il-steps{position:relative}
.il-step{position:relative;display:flex;gap:14px;padding:0 0 15px 24px;align-items:flex-start}
.il-step:last-child{padding-bottom:2px}
.il-step::before{content:"";position:absolute;left:5px;top:15px;bottom:-2px;width:1px;background:#25405f}
.il-step:last-child::before{display:none}
.il-node{position:absolute;left:0;top:3px;width:11px;height:11px;border-radius:50%;background:#0d1a2e;border:1.5px solid #3a5c86;flex:none}
.il-step.done .il-node{background:#34c08e;border-color:#34c08e}
.il-step.proposed .il-node{background:#4a93ff;border-color:#4a93ff;box-shadow:0 0 0 3px rgba(74,147,255,.2)}
.il-step.failed .il-node{background:#ff6b6b;border-color:#ff6b6b}
.il-step.skipped .il-node{background:transparent;border-style:dashed}
.il-body{flex:1;min-width:0}
.il-lbl{color:#e3edf8;font-size:13.5px;font-weight:600}
.il-step.skipped .il-lbl{color:#8ba0b8;font-weight:500}
.il-det{color:#8098b1;font-size:12.5px;margin-top:2px;line-height:1.45}
.il-time{color:#5f7794;font-family:ui-monospace,"Cascadia Code",Consolas,monospace;font-size:11px;flex:none;padding-top:2px}
.il-accept{margin-top:9px;background:#0a63e0;color:#fff;border:0;border-radius:8px;padding:8px 15px;font:600 12.5px system-ui;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.il-accept:hover{filter:brightness(1.1)} .il-accept:disabled{opacity:.6;cursor:default}
.il-accept .svgi{color:#fff}

/* LIVE UNITS overlay on the map (design: dark translucent stats panel) */
.map-liveunits{position:absolute;top:14px;right:14px;z-index:800;background:rgba(4,26,44,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:12px 15px;color:#e6f0f8;min-width:150px;pointer-events:none}
.map-liveunits .mlu-t{font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:10px;letter-spacing:.12em;color:#7fb3d6}
.map-liveunits .mlu-n{font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:26px;line-height:1.1;margin:3px 0 7px}
.map-liveunits .mlu-n span{font-size:11px;font-weight:600;color:#9cc0da;margin-left:4px}
.map-liveunits .mlu-r{display:flex;align-items:center;gap:7px;font-size:11.5px;padding:2px 0;color:#c9dcea}
.map-liveunits .mlu-r b{margin-left:auto;font-family:var(--font-mono),'JetBrains Mono',monospace;font-weight:700;color:#fff}
.map-liveunits .mlu-dot{width:7px;height:7px;border-radius:50%;flex:none}
.map-liveunits .mlu-dot.ok{background:#3fbf7a}
.map-liveunits .mlu-dot.brk{background:#f4a63d}
.map-liveunits .mlu-dot.bad{background:#f26b6b}
.map-liveunits .mlu-dot.sup{background:#3d8fd6}
.map-liveunits .mlu-dot.sos{background:#ff4d57;animation:usgblink 1s infinite}
.map-liveunits .mlu-r.sos{color:#ffb3b8;font-weight:700}

/* sites coverage cards (design: Sites & Posts) */
.sites-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}
.site-card{background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);border-radius:16px;padding:16px 18px;cursor:pointer;box-shadow:var(--shadow,0 1px 2px rgba(18,28,48,.05));transition:box-shadow .15s}
.site-card:hover{box-shadow:var(--shadow-lg,0 12px 30px rgba(3,43,73,.12))}
.site-card-top{display:flex;align-items:center;gap:11px}
.site-card-nm{min-width:0;flex:1}
.site-card-nm b{display:block;font-family:var(--font-display),'Saira',sans-serif;font-weight:700;font-size:15px;color:var(--heading,#0b2036);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.site-card-nm small{display:block;font-size:11.5px;color:var(--muted,#5f7288);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.site-card-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;padding-top:13px;border-top:1px solid var(--panel-2,#eef2f7)}
.scs-n{display:block;font-size:17px;color:var(--heading,#0b2036)}
.scs-of{font-size:12px;color:var(--faint,#8593a5);font-weight:600}
.scs-l{display:block;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted,#5f7288);margin-top:2px}
.site-card-foot{margin-top:11px;font-size:11.5px;color:var(--muted,#5f7288)}
html[data-theme="dark"] .site-card{background:#0e1e2e;border-color:#1d3247}
html[data-theme="dark"] .site-card-stats{border-top-color:#132434}

/* dark theme parity */
html[data-theme="dark"] .fchip{background:#0e1e2e;border-color:#1d3247;color:#9fb2c4}
html[data-theme="dark"] .fchip:hover{background:#12283b}
html[data-theme="dark"] .fchip.on{background:#1a86d0;border-color:#1a86d0;color:#fff}
html[data-theme="dark"] .gt{background:#0e1e2e;border-color:#1d3247}
html[data-theme="dark"] .gt-head{border-bottom-color:#1d3247}
html[data-theme="dark"] .gt-cols{background:#0c1a28;border-bottom-color:#1d3247}
html[data-theme="dark"] .gt-row{border-bottom-color:#132434}
html[data-theme="dark"] .gt-row:hover{background:#12283b}
html[data-theme="dark"] .pbar{background:#132434}
html[data-theme="dark"] .acard{background:#0e1e2e;border-color:#1d3247}
html[data-theme="dark"] .acard.red{background:linear-gradient(180deg,#2a1418,#0e1e2e)}
html[data-theme="dark"] .acard.amber{background:linear-gradient(180deg,#26200f,#0e1e2e)}
html[data-theme="dark"] .acard.blue{background:linear-gradient(180deg,#0f2436,#0e1e2e)}

/* AI Brain: main column + side rail (quick asks / today's digest, design: AI Assistant) */
.ai-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
@media(max-width:1100px){.ai-grid{grid-template-columns:1fr}}
.ai-col-side{display:flex;flex-direction:column;gap:16px}
.qasks{padding:16px 18px}
.qasks-lbl{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#5f7288);margin-bottom:10px}
.qask{display:block;width:100%;text-align:left;background:#f8fafc;border:1px solid #eef2f7;border-radius:10px;padding:10px 12px;font-size:12.5px;font-weight:600;color:#3a5064;font-family:inherit;cursor:pointer;margin-bottom:7px;transition:background .12s,border-color .12s}
.qask:last-child{margin-bottom:0}
.qask:hover{background:#f2f7fb;border-color:#dbe9f5}
.ai-digest{background:linear-gradient(165deg,#032b49,#01192b);border-radius:16px;padding:16px 18px;color:#fff}
.ai-digest-lbl{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#4aa3dd;margin-bottom:10px}
.ai-digest-row{display:flex;gap:9px;font-size:12.5px;line-height:1.5;color:#c9dcea;margin-bottom:10px}
.ai-digest-row:last-child{margin-bottom:0}
.ai-digest-row>span:first-child{flex:none}
html[data-theme="dark"] .qask{background:#0d2438;border-color:#1d3a52;color:#b9cbdc}
html[data-theme="dark"] .qask:hover{background:#123049;border-color:#2a4f6e}
html[data-theme="dark"] .ai-digest{border:1px solid #1d3a52}

/* Onboarding pipeline board (design: Onboarding kanban) */
.obk{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}
@media(max-width:1200px){.obk{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.obk{grid-template-columns:1fr}}
.obk-col{background:#eef2f7;border:1px solid #e0e8f0;border-radius:16px;padding:12px}
.obk-head{display:flex;align-items:center;gap:8px;padding:4px 6px 10px}
.obk-head span{font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.obk-head .c-grey{color:var(--muted,#5f7288)}
.obk-head .c-blue{color:#0a5a94}
.obk-head .c-green{color:#0d7a45}
.obk-head b{margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;color:var(--faint,#8593a5)}
.obk-cards{display:flex;flex-direction:column;gap:9px}
.obk-none{font-size:12px;color:var(--faint,#93a3b5);text-align:center;padding:14px 0}
.obk-card{background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);border-radius:12px;padding:12px 13px}
.obk-card.click{cursor:pointer}
.obk-card.click:hover{box-shadow:0 4px 14px rgba(3,43,73,.10)}
.obk-card>b,.obk-card div>b{font-size:13px;font-weight:700;color:var(--heading,#16222f)}
.obk-card small{display:block;font-size:11px;color:var(--faint,#8593a5);margin-top:2px}
.obk-card.ready{border:2px solid #b7e6ca}
.obk-chip{margin-left:auto;font-size:9.5px;font-weight:800;color:#0d7a45;background:#e4f6ec;padding:2px 7px;border-radius:5px;flex:none}
.obk-docs{margin-top:9px;display:flex;flex-direction:column;gap:5px}
.obk-doc{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600}
.obk-doc.ok{color:#0d7a45}
.obk-doc.no{color:var(--faint,#93a3b5)}
.obk-acts{display:flex;gap:10px;margin-top:8px}
.obk-acts .link{font-size:11.5px}
.obk-declined{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding:10px 14px;background:var(--panel,#f8fafc);border:1px solid var(--line,#e4eaf1);border-radius:12px}
.obk-dec-item{font-size:12.5px;color:var(--muted,#5f7288);display:inline-flex;gap:8px;align-items:center}
html[data-theme="dark"] .obk-col{background:#0c1a28;border-color:#1d3247}
html[data-theme="dark"] .obk-card{background:#0e1e2e;border-color:#1d3247}
html[data-theme="dark"] .obk-card.ready{border-color:#1d5c3a}
html[data-theme="dark"] .obk-chip{background:#123024;color:#3fbf7a}
html[data-theme="dark"] .obk-declined{background:#0c1a28;border-color:#1d3247}

/* Rewards leaderboard + points pool (design: Rewards) */
.rw-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:20px;align-items:start}
@media(max-width:1000px){.rw-grid{grid-template-columns:1fr}}
.rw-board{padding:0;overflow:hidden}
.rw-board-head{display:flex;align-items:center;gap:9px;padding:16px 20px;border-bottom:1px solid var(--panel-2,#eef2f7)}
.rw-board-head b{font-family:var(--font-display),'Saira',sans-serif;font-weight:700;font-size:16px;color:var(--heading,#0b2036)}
.rw-row{display:flex;align-items:center;gap:13px;padding:14px 20px;border-bottom:1px solid #f1f5f9}
.rw-row:last-child{border-bottom:0}
.rw-row.top{background:linear-gradient(90deg,#fffaf0,transparent)}
.rw-rank{font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:18px;color:#b3c0cf;width:24px;flex:none}
.rw-rank.r1{color:#a8660a}
.rw-rank.r2{color:#8593a5}
.rw-rank.r3{color:#b3722d}
.rw-ava{width:38px;height:38px;border-radius:11px;background:#e7eff7;color:#0a6bb0;font-family:var(--font-display),'Saira',sans-serif;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;flex:none}
.rw-ava.gold{background:#fdf0dc;color:#a8660a}
.rw-who{flex:1;min-width:0}
.rw-who b{display:block;font-size:13.5px;font-weight:700;color:var(--heading,#16222f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rw-who small{display:block;font-size:11px;color:var(--faint,#8593a5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rw-pts{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:15px;color:var(--heading,#0b2036);flex:none}
.rw-row.top .rw-pts{color:#a8660a}
.rw-rail{display:flex;flex-direction:column;gap:16px}
.rw-pool{background:linear-gradient(165deg,#032b49,#01192b);border-radius:16px;padding:18px;color:#fff}
.rw-pool-lbl{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#4aa3dd}
.rw-pool-num{font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:34px;margin-top:6px}
.rw-pool-num span{font-size:15px;color:#7d9cb5;font-weight:600}
.rw-pool-bar{margin-top:10px;height:7px;border-radius:20px;background:rgba(255,255,255,.14);overflow:hidden}
.rw-pool-bar span{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,#4aa3dd,#7fd0ff)}
.rw-pool-sub{font-size:11.5px;color:#9dbdd6;margin-top:7px}
.rw-pool-set{margin-top:9px;font-size:12px;color:#7fd0ff}
.rw-cat{padding:16px 18px}
.rw-cat-lbl{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#5f7288);margin-bottom:11px}
.rw-cat-item{display:flex;align-items:center;gap:11px;padding:10px 12px;background:#f8fafc;border:1px solid #eef2f7;border-radius:11px;margin-bottom:9px}
.rw-cat-item:last-child{margin-bottom:0}
.rw-cat-item .svgi{width:17px;height:17px;color:#0a6bb0;flex:none}
.rw-cat-item .rw-who b{font-size:12.5px}
.rw-cat-item .rw-who small{font-size:10.5px}
.rw-cat-cost{font-family:'JetBrains Mono',monospace;font-size:11.5px;font-weight:700;color:#0a5a94;flex:none}
html[data-theme="dark"] .rw-row{border-bottom-color:#132434}
html[data-theme="dark"] .rw-row.top{background:linear-gradient(90deg,#221a0c,transparent)}
html[data-theme="dark"] .rw-ava{background:#0f2436;color:#4aa3dd}
html[data-theme="dark"] .rw-ava.gold{background:#2a2010;color:#e0a94e}
html[data-theme="dark"] .rw-pool{border:1px solid #1d3a52}
html[data-theme="dark"] .rw-cat-item{background:#0d2438;border-color:#1d3a52}
html[data-theme="dark"] .rw-cat-cost{color:#4aa3dd}

/* announcement slot-picker (admin feed) */
.ann-poll{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.ann-slot{flex:1;min-width:80px;background:#e7f0fa;color:#0a5a94;border:none;border-radius:9px;padding:9px;font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}
.ann-slot.on{background:var(--grad-primary,linear-gradient(90deg,#005080,#0a6bb0));color:#fff}
.ann-slot:disabled{opacity:.45;cursor:default}
.ann-slot small{font-family:var(--font-mono),monospace;font-size:10px;font-weight:400;opacity:.8}
html[data-theme=dark] .ann-slot{background:#14263a;color:#4aa3dd}

/* editable timesheet grid (Connecteam-style) */
#timesheets-table tr.ts-grp>td{background:#f1f5f9;font-size:13px;padding:8px 12px;border-top:2px solid #e2e8f0}
#timesheets-table tr.ts-grp .ts-sub{font-family:var(--font-mono),monospace}
#timesheets-table .ts-inout{white-space:nowrap}
#timesheets-table input.ts-time{width:92px;padding:5px 7px;border:1px solid var(--line,#e4eaf1);border-radius:7px;font-family:var(--font-mono),monospace;font-size:13px;background:#fff}
#timesheets-table input.ts-time:hover{border-color:#1a86d0}
#timesheets-table input.ts-time:focus{outline:none;border-color:#1a86d0;box-shadow:0 0 0 2px rgba(26,134,208,.2)}
#timesheets-table input.ts-time:disabled{opacity:.5}
#timesheets-table td.ts-hrs b{font-family:var(--font-mono),monospace}
html[data-theme=dark] #timesheets-table tr.ts-grp>td{background:#141b28;border-top-color:#26303f}
html[data-theme=dark] #timesheets-table input.ts-time{background:#0e1e2e;border-color:#26303f;color:#e6eaf2}

/* ── Time Clock: Connecteam summary row + weekly grid + per-officer drawer ── */
.ts-crow{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;margin:14px 0 4px}
.ts-ct{flex:1 1 auto;min-width:92px;background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);border-radius:12px;padding:11px 13px;text-align:center}
.ts-ct .ts-cv{font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:21px;color:var(--heading,#0b2036);line-height:1.1;font-variant-numeric:tabular-nums}
.ts-ct .ts-ck{font-size:11px;color:var(--muted,#5f7288);margin-top:3px;letter-spacing:.02em}
.ts-ct.hero{background:linear-gradient(135deg,rgba(10,107,176,.10),rgba(0,80,128,.05));border-color:var(--primary,#0a6bb0)}
.ts-ct.hero .ts-cv{color:var(--primary,#0a6bb0)}
.ts-ct.pay .ts-cv{color:var(--ok-text,#0d7a45)}
.ts-cop{display:flex;align-items:center;font-size:20px;font-weight:700;color:var(--muted,#9fb0c0);flex:0 0 auto;padding:0 2px}
.ts-lock svg{width:15px;height:15px;color:var(--muted,#9fb0c0);vertical-align:middle}
.ts-empty{padding:34px 16px;text-align:center;color:var(--muted,#5f7288);background:var(--card,#fff);border:1px dashed var(--line,#e4eaf1);border-radius:12px;font-size:14px}
.ts-ok svg{width:14px;height:14px;color:var(--ok,#0f9d58);vertical-align:middle}
.ts-pend{font-size:11px;color:var(--warn-text,#a8660a);font-weight:700;font-variant-numeric:tabular-nums}
/* weekly grid */
.ts-gwrap{overflow-x:auto;border:1px solid var(--line,#e4eaf1);border-radius:12px;margin-top:6px}
table.ts-grid{border-collapse:collapse;width:100%;min-width:520px}
table.ts-grid th,table.ts-grid td{padding:8px 6px;text-align:center;border-bottom:1px solid var(--panel-2,#eef2f7);font-size:13px}
table.ts-grid thead th{position:sticky;top:0;background:var(--panel,#f4f7fb);font-weight:700;color:var(--muted,#5f7288);font-size:11px;z-index:1}
table.ts-grid th.ts-gd span{display:block;font-weight:800;color:var(--heading,#0b2036);font-size:12px;font-variant-numeric:tabular-nums}
table.ts-grid th.ts-gname,table.ts-grid td.ts-gname{position:sticky;left:0;background:var(--card,#fff);text-align:left;min-width:168px;z-index:1;box-shadow:1px 0 0 var(--line,#e4eaf1)}
table.ts-grid thead th.ts-gname{background:var(--panel,#f4f7fb);z-index:2}
table.ts-grid th.ts-gtot,table.ts-grid td.ts-gtot{background:var(--panel,#f8fafc);font-variant-numeric:tabular-nums}
.ts-gc.wend,.ts-gd.wend{background:rgba(10,107,176,.035)}
.ts-gc.ts-wsep,.ts-gd.ts-wsep,.ts-gname.ts-wsep{border-left:2px solid var(--line,#dbe4ee)}
.ts-gcv{display:inline-block;background:rgba(15,157,88,.12);color:var(--ok-text,#0d7a45);font-weight:700;border-radius:7px;padding:3px 7px;font-size:12.5px;font-variant-numeric:tabular-nums}
.ts-gz{color:var(--line,#cfd8e3)}
tr.ts-grow{cursor:pointer}
tr.ts-grow:hover td,tr.ts-grow:hover td.ts-gname{background:var(--selected,#eef6ff)}
tr.ts-grow.appr td.ts-gname{box-shadow:inset 3px 0 0 var(--ok,#0f9d58),1px 0 0 var(--line,#e4eaf1)}
/* per-officer editable drawer */
#ts-drawer{position:fixed;inset:0;z-index:100050}
#ts-drawer[hidden]{display:none}
.tsd-scrim{position:absolute;inset:0;background:rgba(4,18,32,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.tsd-panel{position:absolute;top:0;right:0;height:100%;width:min(760px,96vw);background:var(--bg,#eef3f8);box-shadow:-14px 0 44px rgba(3,43,73,.28);display:flex;flex-direction:column;animation:tsdIn .18s ease}
@keyframes tsdIn{from{transform:translateX(24px);opacity:.6}to{transform:none;opacity:1}}
.tsd-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 20px;border-bottom:1px solid var(--line,#e4eaf1);background:var(--card,#fff)}
.tsd-nm{font-family:var(--font-display),'Saira',sans-serif;font-weight:800;font-size:20px;color:var(--heading,#0b2036)}
.tsd-sub{font-size:12.5px;color:var(--muted,#5f7288);margin-top:2px}
.tsd-head-a{display:flex;align-items:center;gap:10px;flex:none}
.tsd-x{width:34px;height:34px;border-radius:9px;border:1px solid var(--line,#e4eaf1);background:var(--card,#fff);cursor:pointer;color:var(--muted,#5f7288);font-size:15px}
.tsd-x:hover{background:#f2f7fb}
.tsd-body{flex:1;overflow-y:auto;padding:14px 20px 40px}
.tsd-day{margin-bottom:14px}
.tsd-day-h{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:var(--muted,#5f7288);padding:4px 2px;border-bottom:1px solid var(--line,#e4eaf1);margin-bottom:6px}
.tsd-day-h span{font-family:var(--font-mono),monospace;color:var(--heading,#0b2036)}
.tsd-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);border-radius:10px;padding:8px 10px;margin-bottom:6px}
.tsd-row select,.tsd-row input{border:1px solid var(--line,#e4eaf1);border-radius:7px;padding:6px 8px;font-size:13px;background:var(--card,#fff);color:var(--heading,#0b2036)}
.tsd-type{flex:0 0 108px}
.tsd-site{flex:1 1 150px;min-width:120px}
.tsd-io{display:inline-flex;align-items:center;gap:4px}
.tsd-in,.tsd-out{width:94px;font-family:var(--font-mono),monospace}
.tsd-hrs{width:72px;font-family:var(--font-mono),monospace;text-align:right}
.tsd-row input:focus,.tsd-row select:focus{outline:none;border-color:var(--primary,#1a86d0);box-shadow:0 0 0 2px rgba(26,134,208,.18)}
.tsd-row input:disabled{opacity:.5}
.tsd-rowa{display:inline-flex;align-items:center;gap:6px;margin-left:auto}
.tsd-rowa .link svg{width:15px;height:15px}
.tsd-brkbox{flex-basis:100%;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line,#e4eaf1)}
.tsd-add{margin-top:6px}
body.ts-drawer-open{overflow:hidden}
html[data-theme=dark] .ts-ct{background:#0e1e2e;border-color:#1d3247}
html[data-theme=dark] .ts-ct.hero{background:linear-gradient(135deg,rgba(95,176,236,.14),rgba(10,107,176,.06));border-color:#2a5c86}
html[data-theme=dark] .ts-empty{background:#0e1e2e;border-color:#1d3247}
html[data-theme=dark] .ts-gwrap{border-color:#1d3247}
html[data-theme=dark] table.ts-grid thead th,html[data-theme=dark] table.ts-grid thead th.ts-gname{background:#0c2033}
html[data-theme=dark] table.ts-grid th.ts-gname,html[data-theme=dark] table.ts-grid td.ts-gname{background:#0e1e2e}
html[data-theme=dark] table.ts-grid th.ts-gtot,html[data-theme=dark] table.ts-grid td.ts-gtot{background:#0c2033}
html[data-theme=dark] table.ts-grid th,html[data-theme=dark] table.ts-grid td{border-bottom-color:#1a2a3c}
html[data-theme=dark] tr.ts-grow:hover td,html[data-theme=dark] tr.ts-grow:hover td.ts-gname{background:#12283b}
html[data-theme=dark] .tsd-panel{background:#0a1a2a}
html[data-theme=dark] .tsd-head{background:#0e1e2e;border-color:#1d3247}
html[data-theme=dark] .tsd-row{background:#0e1e2e;border-color:#1d3247}
html[data-theme=dark] .tsd-row select,html[data-theme=dark] .tsd-row input{background:#0c2033;border-color:#1d3247;color:#e6eaf2}
html[data-theme=dark] .tsd-x{background:#0e1e2e;border-color:#1d3247;color:#9fb2c4}

/* web line (browser softphone) floating cards */
/* Docked LEFT of the bottom-right FAB column (AI ✦ + radio) — right:96px clears the FABs
   (which sit at right:22px, ~56px wide) horizontally at any height, so a call never covers
   them. High z-index keeps the call card on top and clickable. */
.webline-card{position:fixed;right:96px;bottom:22px;z-index:100011;background:#fff;border:1px solid var(--line,#e4eaf1);border-radius:14px;box-shadow:0 12px 32px rgba(3,43,73,.22);padding:14px 16px;min-width:240px}
@media(max-width:640px){ .webline-card{left:12px;right:12px;top:70px;bottom:auto;min-width:0} } /* mobile: dock at top, clear of the bottom FABs */
.webline-card .wl-title{font-family:Saira,sans-serif;font-weight:700;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:#0b2036}
.webline-card .wl-who{font-size:15px;font-weight:600;margin:6px 0 2px;color:#0b2036}
.webline-card .wl-timer{font-family:'JetBrains Mono',monospace;font-size:13px;color:#5a6b7c;margin-bottom:4px}
.webline-card .wl-acts{display:flex;gap:8px;margin-top:10px}
.webline-card .wl-acts .btn{flex:1}
#webline-incoming{animation:usgpulse 1.6s ease-in-out infinite}
/* Dial pad (Messages → phone icon) */
.dialpad{max-width:300px;margin:0 auto}
.dp-display{width:100%;font-size:26px;text-align:center;letter-spacing:2px;padding:12px;border:1px solid var(--line);border-radius:10px;margin-bottom:14px;font-variant-numeric:tabular-nums;color:var(--ink,#0b2036);background:#fff}
.dp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.dp-key{aspect-ratio:1;border:1px solid var(--line,#e4eaf1);border-radius:50%;background:#fff;font-size:22px;font-weight:600;color:var(--ink,#0b2036);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;transition:background .12s,transform .06s}
.dp-key:hover{background:#f0f4f9}
.dp-key:active{transform:scale(.94)}
.dp-key small{font-size:9px;font-weight:700;letter-spacing:1.5px;color:#8a94a6;margin-top:3px}
.dp-back{background:none;border:0;font-size:20px;cursor:pointer;color:#66748e;padding:8px 4px;margin-top:8px;float:right}
[data-theme="dark"] .dp-display{background:#0f1e30;border-color:#24374f;color:#e6edf3}
[data-theme="dark"] .dp-key{background:#12203a;border-color:#24374f;color:#e6edf3}
[data-theme="dark"] .dp-key:hover{background:#1a2c4a}

/* Command palette (⌘K) */
.cmdk{position:fixed;inset:0;z-index:100050;background:rgba(9,20,34,.44);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:12vh 16px 16px}
.cmdk.hidden{display:none}
.cmdk-box{width:min(620px,94vw);background:#fff;border:1px solid var(--line,#e4eaf1);border-radius:14px;box-shadow:0 26px 64px rgba(3,43,73,.36);overflow:hidden;display:flex;flex-direction:column;max-height:72vh}
.cmdk-input{border:0;border-bottom:1px solid var(--line,#eef1f5);padding:16px 18px;font-size:16px;outline:none;font-family:inherit;color:#0b2036;background:#fff}
.cmdk-input::placeholder{color:#9aa6b5}
.cmdk-list{overflow-y:auto;padding:6px}
.cmdk-h{font-size:10.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:#8493a6;padding:10px 12px 4px}
.cmdk-row{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:8px;cursor:pointer}
.cmdk-row.sel{background:#0a6bb0;color:#fff}
.cmdk-row.sel .cmdk-s{color:#dbeafc}
.cmdk-ic{width:18px;height:18px;display:inline-flex;align-items:center;flex:none;opacity:.85}
.cmdk-ic svg{width:18px;height:18px}
.cmdk-l{flex:1;font-size:14.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmdk-s{font-size:11.5px;color:#8493a6;font-weight:600;flex:none}
.cmdk-empty{padding:26px;text-align:center;color:#8493a6;font-size:14px}
.cmdk-foot{display:flex;gap:15px;align-items:center;padding:8px 14px;border-top:1px solid var(--line,#eef1f5);font-size:11px;color:#8493a6}
.cmdk-foot kbd{font-family:inherit;background:#f0f3f7;border:1px solid #dde3ea;border-radius:4px;padding:1px 5px;font-size:10.5px;margin-right:2px}
[data-theme="dark"] .cmdk-box{background:#0f1e30;border-color:#24374f}
[data-theme="dark"] .cmdk-input{background:#0f1e30;color:#e6edf3;border-color:#24374f}
[data-theme="dark"] .cmdk-foot{border-color:#24374f}
[data-theme="dark"] .cmdk-foot kbd{background:#1a2c44;border-color:#2a3d57;color:#c3d0e0}

/* Pin-to-top star on sidebar nav items + Pinned section */
.nav-btn{position:relative}
.nav-pin{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:0;background:none;color:#c3ccd8;font-size:12px;line-height:1;cursor:pointer;opacity:0;padding:4px;border-radius:5px;transition:opacity .12s,color .12s}
.nav-btn:hover .nav-pin{opacity:.85}
.nav-pin:hover{color:#f2b705}
.nav-pin.pinned{opacity:1;color:#f2b705}
body.nav-min .nav-pin{display:none}
#nav-pinned .nav-sec-label{color:#e0a92e}

/* Dashboard "Needs Attention" action queue */
.dash-attn{padding:0;overflow:hidden}
.attn-h{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line,#e4eaf1)}
.attn-title{font-family:Saira,sans-serif;font-weight:700;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:var(--navy,#0b2036)}
.attn-count{background:#0a6bb0;color:#fff;font-size:12px;font-weight:700;border-radius:100px;padding:1px 9px;font-variant-numeric:tabular-nums}
.attn-clear{color:#0d7a45;font-size:12.5px;font-weight:700}
.attn-list{display:flex;flex-direction:column}
.attn-row{display:flex;align-items:center;gap:13px;padding:12px 16px;border:0;border-bottom:1px solid var(--line-2,#eef1f5);background:none;width:100%;text-align:left;cursor:pointer;border-left:3px solid transparent;transition:background .1s}
.attn-row:last-child{border-bottom:0}
.attn-row:hover{background:#f5f8fc}
.attn-row.crit{border-left-color:#c0392b}
.attn-row.warn{border-left-color:#e0912e}
.attn-row.info{border-left-color:#0a6bb0}
.attn-ic{width:20px;height:20px;flex:none;display:inline-flex;color:#5a6b80}
.attn-ic svg{width:20px;height:20px}
.attn-row.crit .attn-ic{color:#c0392b}
.attn-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.attn-t{font-weight:650;font-size:14.5px;color:var(--navy,#0b2036)}
.attn-d{font-size:12.5px;color:#66748e}
.attn-tag{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:100px;flex:none}
.attn-row.crit .attn-tag{background:#fbe6e2;color:#c0392b}
.attn-row.warn .attn-tag{background:#fbeed7;color:#b26a00}
.attn-row.info .attn-tag{background:#e7f0fa;color:#0a6bb0}
.attn-arw{color:#b7c2d0;font-size:18px;flex:none}
.attn-empty{padding:20px 16px;color:#0d7a45;font-size:14px}
[data-theme="dark"] .attn-h{border-color:#22344c}
[data-theme="dark"] .attn-row{border-color:#22344c}
[data-theme="dark"] .attn-row:hover{background:#16273f}
[data-theme="dark"] .attn-t{color:#e6edf3}
[data-theme="dark"] .attn-title{color:#e6edf3}

/* Phase 4: visible keyboard focus across the reorganized nav, palette and dashboard queue */
.nav-btn:focus-visible,.attn-row:focus-visible,.dp-key:focus-visible,.nav-sec-toggle:focus-visible,.cmdk-input:focus-visible,.nav-pin:focus-visible{outline:2px solid #2f80c4;outline-offset:1px;border-radius:6px}
.nav-sec-toggle{cursor:pointer}
.mi-acts .svgi{width:17px;height:17px}
#theme-ic .ic,#theme-ic svg{width:15px;height:15px;vertical-align:-3px}
.side-foot-row .clock-btn .ic{width:15px;height:15px}

/* ===== Messages: fill the viewport instead of floating in a 65vh box ===== */
#view-messages{display:flex;flex-direction:column;height:calc(100vh - 60px)}
#view-messages .view-head{flex:0 0 auto}
#view-messages .msg-wrap{height:auto;flex:1;min-height:0}
.msg-wrap{grid-template-columns:280px 1fr}
.msg-wrap.with-info{grid-template-columns:280px 1fr 300px}
@media(max-width:1100px){.msg-wrap.with-info{grid-template-columns:280px 1fr}}

/* ===== Schedule: fit the week to the container — no sideways scroll on desktop ===== */
/* day columns flex to share the available width; only scrolls below tablet size */
.schedule{table-layout:fixed;width:100%;min-width:720px;border-collapse:collapse;border-spacing:0}
.schedule-wrap{max-width:100%}
.schedule th.hrs-col,.schedule td.hrs-col{width:48px;min-width:48px;max-width:48px}
.schedule td.day{min-width:0}

/* ============ Global modern polish — site-wide, token-based, additive ============ */
/* thin modern scrollbars everywhere */
*{scrollbar-width:thin;scrollbar-color:#b9c6d6 transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#c2cedd;border-radius:8px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#aab5c7;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}
html[data-theme="dark"] *{scrollbar-color:#3a465c transparent}
html[data-theme="dark"] ::-webkit-scrollbar-thumb{background:#3a465c}
/* brand text selection */
::selection{background:rgba(0,80,128,.2)}
/* consistent keyboard-only focus ring (a11y) — mouse users unaffected; inputs keep their own ring */
button:focus-visible,a:focus-visible,.nav-btn:focus-visible,.pill:focus-visible,[role="button"]:focus-visible,[tabindex]:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(26,134,208,.38)}
/* unified button press feedback */
.btn{transition:background .13s ease,border-color .13s ease,box-shadow .13s ease,transform .05s ease}
.btn:active{transform:translateY(1px)}

/* ============ Foundation utility classes (referenced by code, were undefined) ============ */
.btn.small,.btn.sm{padding:5px 10px;font-size:12.5px;border-radius:var(--radius-sm,8px)}
.btn.tiny{padding:3px 8px;font-size:11.5px;border-radius:7px}
.pill.danger{background:var(--danger-bg,#fdeaea);color:var(--danger-text,#c0182a);border-color:var(--danger-border,#f3c3c3)}
.pill.warn{background:var(--warn-bg,#fdf0dc);color:var(--warn-text,#a8660a);border-color:var(--warn-border,#f3ddb5)}
.pill.info{background:var(--info-bg,#e7f0fa);color:var(--info-text,#0a5a94);border-color:var(--info-border,#d8e2ec)}

/* ---- Knowledge sub-tabs (chips) + Policy library / Legal register cards ---- */
.kb-subtabs .chip{display:inline-flex;align-items:center;gap:5px;background:#f3f6fb;border:1px solid var(--line);border-radius:16px;padding:6px 13px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--ink,#28303e)}
.kb-subtabs .chip.active{background:var(--brand,#16386f);color:#fff;border-color:var(--brand,#16386f)}
html[data-theme="dark"] .kb-subtabs .chip{background:#28344a;color:#cfe0ff;border-color:var(--line)}
html[data-theme="dark"] .kb-subtabs .chip.active{background:var(--brand,#2f6fd0);color:#fff}
.pol-card{border:1px solid var(--line,#e4eaf1);border-radius:10px;padding:12px 14px;margin:8px 0;background:var(--card,#fff)}
.pol-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:5px}
.pol-text{font-size:13.5px;line-height:1.5;color:var(--ink,#28303e)}
.pol-ladder{display:flex;flex-direction:column;gap:4px;margin-top:9px;border-left:3px solid var(--brand,#16386f);padding-left:10px}
.pol-rung{display:flex;gap:10px;align-items:baseline;font-size:12.5px}
.pol-step{min-width:96px;font-weight:700;color:var(--brand,#16386f)}
.pol-pen{color:var(--muted,#5a6676)}
html[data-theme="dark"] .pol-step{color:#7fb0ff}
.lr-strip{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.lr-stat{border:1px solid var(--line,#e4eaf1);border-radius:10px;padding:10px 14px;min-width:96px;background:var(--card,#fff)}
.lr-stat .n{font-size:22px;font-weight:800;line-height:1}
.lr-stat .l{font-size:11px;color:var(--muted,#5a6676);text-transform:uppercase;letter-spacing:.4px;margin-top:3px}
.lr-stat.high{border-color:var(--danger-border,#f3c3c3)}.lr-stat.high .n{color:var(--danger-text,#c0182a)}
.lr-card{border:1px solid var(--line,#e4eaf1);border-left-width:4px;border-radius:10px;padding:11px 14px;margin:8px 0;background:var(--card,#fff)}
.lr-card.sev-high{border-left-color:#e11d2a}.lr-card.sev-medium{border-left-color:#e08600}.lr-card.sev-low{border-left-color:#8a97a8}
.lr-card.done{opacity:.55}
.lr-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:11px;color:var(--muted,#5a6676);margin-top:5px}

/* ---- Quo SMS archive: thread list + chat bubbles ---- */
.sms-threads{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.sms-thread{text-align:left;border:1px solid var(--line,#e4eaf1);border-radius:10px;padding:11px 13px;background:var(--card,#fff);cursor:pointer;display:flex;flex-direction:column;gap:3px}
.sms-thread:hover{border-color:var(--brand,#16386f);box-shadow:0 1px 6px rgba(20,40,80,.07)}
.sms-th-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:14px}
.sms-th-top .muted{font-size:11px}
.sms-th-last{font-size:12.5px;line-height:1.35;max-height:2.7em;overflow:hidden}
.sms-th-n{font-size:11px}
.sms-head{display:flex;align-items:center;gap:12px;padding:6px 2px 12px;border-bottom:1px solid var(--line,#e4eaf1);margin-bottom:12px;flex-wrap:wrap}
.sms-thread-view{display:flex;flex-direction:column;gap:8px;max-height:62vh;overflow-y:auto;padding:6px 2px}
.sms-bubble{max-width:70%;padding:8px 12px;border-radius:14px;font-size:13.5px;line-height:1.45}
.sms-bubble.in{align-self:flex-start;background:#f1f4f8;color:var(--ink,#28303e);border-bottom-left-radius:4px}
.sms-bubble.out{align-self:flex-end;background:var(--brand,#16386f);color:#fff;border-bottom-right-radius:4px}
.sms-body{white-space:pre-wrap;word-break:break-word}
.sms-time{font-size:10px;opacity:.6;margin-top:3px}
html[data-theme="dark"] .sms-bubble.in{background:#28344a;color:#e6eefc}
.pill.ok{background:var(--ok-bg,#e4f6ec);color:var(--ok-text,#0d7a45);border-color:var(--ok-border,#b7e6ca)}
.pill.neutral{background:var(--neutral-bg,#eef1f5);color:var(--muted)}
/* base empty-state (only dark overrides existed before) */
.empty{padding:30px 18px;text-align:center;color:var(--muted);font-size:14px;line-height:1.5}
.empty b,.empty .empty-t{display:block;color:var(--heading,var(--ink));font-size:15px;font-weight:700;margin-bottom:3px}
/* inline error + wide-table scroll wrapper */
.err{color:var(--red);font-size:13px}
.hint-warn{color:var(--amber);font-size:12.5px}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius,12px)}

/* ============ UI Kit components (window.UI) — the template all views use ============ */
/* promise-based dialog overlay (UI.confirm / UI.prompt) */
.ui-modal-ov{position:fixed;inset:0;z-index:100061;background:rgba(16,22,38,.5);display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px)} /* confirm/prompt sits above base modals (100060) and the drawer (100050) */
.ui-modal{background:var(--card,#fff);border:1px solid var(--line);border-radius:var(--radius-lg,16px);width:420px;max-width:100%;box-shadow:var(--shadow-lg);overflow:hidden;animation:ui-pop .14s ease}
@keyframes ui-pop{from{transform:translateY(6px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.ui-modal-h{padding:15px 18px 0;font-size:16px;font-weight:800;color:var(--heading,var(--ink))}
.ui-modal-b{padding:16px 18px}
.ui-modal-f{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px 16px}
.ui-dialog{display:flex;gap:12px;align-items:flex-start}
.ui-dialog-ic{flex:0 0 auto;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--panel);color:var(--info)}
.ui-dialog-ic.danger{background:var(--red-soft,#fdecec);color:var(--red)}
.ui-dialog-ic svg{width:20px;height:20px}
.ui-dialog-t{font-weight:800;font-size:15px;color:var(--heading,var(--ink));margin-bottom:3px}
.ui-dialog-msg{font-size:14px;color:var(--ink);line-height:1.5}
.ui-label{display:block;font-size:12px;font-weight:700;color:var(--muted);margin-bottom:6px}
.ui-input{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;font-size:14px;background:var(--card,#fff);color:inherit}
.ui-input:focus{outline:none;border-color:var(--blue-bright,#1a86d0);box-shadow:var(--ring,0 0 0 3px rgba(26,134,208,.28))}
html[data-theme="dark"] .ui-input{background:#1a2231;border-color:#2b3648}
.ui-loading{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--muted)}
.ui-loading svg{width:16px;height:16px;animation:ui-spin 1s linear infinite}
@keyframes ui-spin{to{transform:rotate(360deg)}}
/* card head (UI.card with title/actions) */
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 0 12px}
.card-t{margin:0;font-family:var(--font-display,inherit);font-size:15px;font-weight:700;color:var(--heading,var(--ink))}
.card-sub{font-size:12.5px;color:var(--muted);margin-top:2px}
/* stat card (UI.statCard) tones — Command Center KPI pattern: 4px left edge accent */
.card.stat{display:flex;flex-direction:column;gap:1px;position:relative;overflow:hidden}
.card.stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,#0a6bb0,#003050)}
.card.stat.tone-ok::before{background:linear-gradient(180deg,#3fbf7a,#0f9d58)}
.card.stat.tone-warn::before{background:linear-gradient(180deg,#f4a63d,#e08600)}
.card.stat.tone-bad::before{background:linear-gradient(180deg,#f26b6b,#e11d2a)}
.card.stat.tone-ai::before{background:linear-gradient(180deg,#a97ff7,#7b3ff2)}
.card.stat .stat-ic{position:absolute;top:16px;right:16px;color:var(--muted);opacity:.5}
.card.stat .stat-ic svg{width:20px;height:20px}
.card.stat .card-t{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.card.stat.tone-ok .num{color:var(--ok,#0f9d58)}
.card.stat.tone-warn .num{color:var(--warn,#e08600)}
.card.stat.tone-bad .num{color:#e11d2a}
.card.stat.tone-ai .num{color:var(--ai,#7b3ff2)}
.card.stat .stat-sub{font-size:12px;color:var(--muted);margin-top:4px}
.empty .empty-ic{display:block;margin:0 auto 8px;color:var(--muted);opacity:.6}
.empty .empty-ic svg{width:26px;height:26px}
.vh-actions{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}

/* ============ Command Center dashboard widgets (design: Command Center.dc.html) ============ */
.cc-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:14px}
@media(max-width:1200px){.cc-kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.cc-kpis{grid-template-columns:1fr}}
.cck{background:var(--card,#fff);border:1px solid var(--line,#e4eaf1);border-radius:16px;padding:18px 20px;position:relative;overflow:hidden;box-shadow:var(--shadow)}
.cck::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,#0a6bb0,#003050)}
.cck.red::before{background:linear-gradient(180deg,#f26b6b,#e11d2a)}
.cck.amber::before{background:linear-gradient(180deg,#f4a63d,#e08600)}
.cck.green::before{background:linear-gradient(180deg,#3fbf7a,#0f9d58)}
.cck-top{display:flex;align-items:center;justify-content:space-between}
.cck-label{font-size:11.5px;font-weight:700;letter-spacing:.06em;color:var(--muted,#5f7288);text-transform:uppercase}
.cck-ic svg{width:18px;height:18px}
.cck-num{font-family:var(--font-display,inherit);font-weight:800;font-size:38px;line-height:1;color:var(--heading,#0b2036);margin-top:10px;letter-spacing:-.01em}
.cck-num.bad{color:#c0182a}
.cck-den{font-size:18px;color:var(--disabled,#93a3b5);font-weight:600;font-family:var(--font-display,inherit)}
.cck-bar{margin-top:11px;height:6px;border-radius:20px;background:#e9eff5;overflow:hidden}
html[data-theme="dark"] .cck-bar{background:#12202f}
.cck-bar span{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,#0f9d58,#3fbf7a);transition:width .4s}
.cck-bar.warn span{background:linear-gradient(90deg,#f4a63d,#e08600)}
.cck-segs{display:flex;gap:5px;margin-top:13px}
.cck-segs span{flex:1;height:6px;border-radius:20px;background:#e11d2a}
.cck-segs span.pale{background:#f7b7bd}
html[data-theme="dark"] .cck-segs span.pale{background:rgba(225,29,42,.3)}
.cck-sub{font-size:11.5px;font-weight:600;margin-top:7px;color:var(--muted,#5f7288)}
.cck-sub.ok{color:var(--ok-text,#0d7a45)}.cck-sub.bad{color:#c0182a}.cck-sub.warn{color:var(--warn-text,#a8660a)}
.cck-dashes{display:inline-flex;gap:3px;margin-right:7px;vertical-align:1px}
.cck-dashes i{width:12px;height:6px;border-radius:2px;background:#0f9d58;display:inline-block}
.cck-dashes i.bad{background:#e11d2a}
.cck-pills{display:flex;gap:6px;margin-top:14px;font-size:11px;font-weight:700;flex-wrap:wrap}
.cck-pills span{padding:3px 8px;border-radius:20px}
.cck-pills .p-sos{background:var(--danger-bg,#fdeaea);color:#c0182a}
.cck-pills .p-warn{background:var(--warn-bg,#fdf0dc);color:var(--warn-text,#a8660a)}
.cck-pills .p-ok{background:var(--ok-bg,#e4f6ec);color:var(--ok-text,#0d7a45)}
/* grid */
.cc-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;align-items:start;margin-top:16px}
@media(max-width:1100px){.cc-grid{grid-template-columns:1fr}}
.cc-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.cc-card{padding:0;overflow:hidden}
.cc-card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 20px;border-bottom:1px solid #eef2f7}
html[data-theme="dark"] .cc-card-h{border-bottom-color:var(--line)}
.cc-card-h h3{font-family:var(--font-display,inherit);font-weight:700;font-size:16px;margin:0;color:var(--heading,#0b2036)}
.cc-tracked{font-size:11.5px;color:var(--ok-text,#0d7a45);font-weight:700;display:inline-flex;align-items:center;gap:6px}
.cc-tracked::before{content:"";width:7px;height:7px;border-radius:50%;background:#0f9d58;animation:usgpulse 1.6s infinite}
.cc-count-pill{font-size:11px;font-weight:800;font-family:var(--font-mono,monospace);background:var(--danger-bg,#fdeaea);color:#c0182a;padding:3px 9px;border-radius:20px}
.cc-count-pill.ok{background:var(--ok-bg,#e4f6ec);color:var(--ok-text,#0d7a45)}
.cc-count-pill:empty{display:none}
/* field map */
.cc-map-wrap{position:relative;background:#0b3a5e}
#cc-map{height:310px;background:#0b3a5e}
#cc-map .leaflet-control-attribution{display:none}
.cc-map-legend{position:absolute;left:12px;bottom:12px;z-index:500;display:flex;gap:14px;background:rgba(1,25,43,.88);color:#fff;font-size:12.5px;font-weight:700;padding:9px 14px;border-radius:12px}
.cc-map-legend span{display:inline-flex;align-items:center;gap:6px}
.ccd{width:9px;height:9px;border-radius:50%;display:inline-block}
.ccd-g{background:#22b573}.ccd-a{background:#f0a93b}.ccd-r{background:#f04b52}
.cc-map-open{position:absolute;right:12px;bottom:12px;z-index:500;background:rgba(255,255,255,.94);border:none;border-radius:9px;padding:8px 12px;font-size:12px;font-weight:700;color:#0b2036;cursor:pointer;font-family:inherit;box-shadow:0 2px 10px rgba(1,25,43,.3)}
.cc-map-open:hover{background:#fff}
/* coverage timeline */
#cc-cov{padding:10px 20px 4px}
.cc-cov-win{font-family:var(--font-mono,monospace);font-size:12.5px;color:var(--muted,#5f7288)}
.cc-cov-ticks{display:grid;grid-template-columns:150px 1fr;gap:12px;margin-bottom:6px}
.cc-cov-ticks .tks{position:relative;height:16px;font-family:var(--font-mono,monospace);font-size:11.5px;color:#8593a5}
.cc-cov-ticks .tks span{position:absolute;transform:translateX(-50%)}
.cc-cov-row{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center;margin-bottom:11px}
.cc-cov-site{font-size:13.5px;font-weight:600;color:var(--ink,#16222f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-cov-track{position:relative;height:16px;border-radius:99px;background:#f1f5f9;overflow:hidden}
html[data-theme="dark"] .cc-cov-track{background:#12202f}
.cc-cov-seg{position:absolute;top:0;bottom:0;border-radius:99px}
.cc-cov-seg.cov{background:linear-gradient(90deg,#0a6bb0,#1a86d0)}
.cc-cov-seg.chg{background:linear-gradient(90deg,#4aa3dd,#7fc0e8)}
.cc-cov-seg.gap{background:repeating-linear-gradient(45deg,#fbdada,#fbdada 3px,#f7c4c4 3px,#f7c4c4 6px);box-shadow:inset 0 0 0 1px #ef9a9a;border-radius:4px}
.cc-cov-legend{display:flex;gap:18px;padding:10px 20px 16px;font-size:12.5px;color:var(--muted,#5f7288);border-top:1px solid #eef2f7;margin-top:6px}
html[data-theme="dark"] .cc-cov-legend{border-top-color:var(--line)}
.cc-cov-legend span{display:inline-flex;align-items:center;gap:6px}
.cc-lg{width:14px;height:8px;border-radius:2px;display:inline-block}
.cc-lg-cov{background:linear-gradient(90deg,#0a6bb0,#1a86d0)}
.cc-lg-gap{background:repeating-linear-gradient(45deg,#fbdada,#fbdada 3px,#f7c4c4 3px,#f7c4c4 6px)}
.cc-lg-chg{background:#4aa3dd}
/* open shifts */
.cc-os{position:relative;display:flex;align-items:center;gap:10px;padding:14px 20px 14px 23px;border-bottom:1px solid #f1f5f9}
html[data-theme="dark"] .cc-os{border-bottom-color:var(--line)}
.cc-os:last-child{border-bottom:none}
.cc-os::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#e11d2a}
.cc-os.amber::before{background:#e08600}
.cc-os-main{flex:1;min-width:0}
.cc-os-t{font-size:14.5px;font-weight:800;color:var(--ink,#16222f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-os-m{font-size:12.5px;color:#8593a5;margin-top:2px}
.cc-os-m .tm{font-family:var(--font-mono,monospace)}
.cc-os-chip{font-size:10px;font-weight:800;color:#c0182a;background:var(--danger-bg,#fdeaea);padding:3px 8px;border-radius:6px;white-space:nowrap;flex:none}
.cc-os-chip.amber{color:var(--warn-text,#a8660a);background:var(--warn-bg,#fdf0dc)}
.cc-os-fill{flex:none;background:var(--grad-primary,#0a6bb0);color:#fff;border:none;border-radius:10px;padding:9px 16px;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 4px 12px rgba(0,80,128,.25)}
.cc-os-fill:hover{filter:brightness(1.08)}
.cc-empty{padding:18px 20px;font-size:13px;color:var(--muted)}
.cc-empty.ok{color:var(--ok-text,#0d7a45);font-weight:600}
/* priority alerts */
#cc-alerts{padding:14px 16px}
.cc-al{border-radius:14px;border:1px solid;padding:13px 15px}
.cc-al+.cc-al{margin-top:12px}
.cc-al.sos{background:linear-gradient(180deg,#fdf3f3,#fff);border-color:var(--danger-border,#f3c3c3)}
.cc-al.warn{background:linear-gradient(180deg,#fffaf0,#fff);border-color:var(--warn-border,#f3ddb5)}
html[data-theme="dark"] .cc-al.sos{background:rgba(225,29,42,.10)}
html[data-theme="dark"] .cc-al.warn{background:rgba(224,134,0,.10)}
.cc-al-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.cc-al-k{font-size:11px;font-weight:800;letter-spacing:.08em;display:inline-flex;align-items:center;gap:7px}
.cc-al.sos .cc-al-k{color:#c0182a}.cc-al.warn .cc-al-k{color:var(--warn-text,#a8660a)}
.cc-al-k::before{content:"";width:8px;height:8px;border-radius:50%}
.cc-al.sos .cc-al-k::before{background:#e11d2a;animation:usgpulse 1.2s infinite}
.cc-al.warn .cc-al-k::before{background:#e08600}
.cc-al-t{font-family:var(--font-mono,monospace);font-size:12px}
.cc-al.sos .cc-al-t{color:#c0182a}.cc-al.warn .cc-al-t{color:var(--warn-text,#a8660a)}
.cc-al-title{font-size:15px;font-weight:800;color:var(--ink,#16222f);margin:7px 0 2px}
.cc-al-meta{font-size:12.5px;color:#8593a5}
.cc-al-btns{display:flex;gap:8px;margin-top:11px}
.cc-al-btn{flex:1;border-radius:9px;padding:9px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit;text-align:center;text-decoration:none;border:1px solid transparent}
.cc-al-btn.rsolid{background:#e11d2a;color:#fff;border:none}.cc-al-btn.rsolid:hover{background:#c0182a}
.cc-al-btn.rline{background:#fff;color:#c0182a;border-color:var(--danger-border,#f3c3c3)}.cc-al-btn.rline:hover{background:var(--danger-bg,#fdeaea)}
.cc-al-btn.navy{background:#0b2036;color:#fff;border:none}.cc-al-btn.navy:hover{background:#183048}
.cc-al-btn.nline{background:#fff;color:var(--muted,#5f7288);border-color:#e0e7ef}.cc-al-btn.nline:hover{background:#f1f5f9}
.cc-el-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line,#e4eaf1);border-radius:10px;margin-bottom:7px;font-size:13.5px;cursor:pointer}
.cc-el-row:hover{background:var(--selected,#eef6ff)}
.cc-el-row .who{font-weight:700;flex:1}
.cc-el-row .m{font-size:12px;color:var(--muted);font-family:var(--font-mono,monospace)}

/* ============ Command Center language — site-wide (applies via classes every view already uses) ============ */
/* summary tiles (.cards grids, e.g. Analytics KPIs) get the KPI edge accent */
.cards>.card{position:relative;overflow:hidden}
.cards>.card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,#0a6bb0,#003050)}
.cards>.card.alert::before{background:linear-gradient(180deg,#f26b6b,#e11d2a)}
.cards .card .lbl{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
/* list rows: design hover */
.list .li{transition:background .12s}
.list .li:hover{background:#f7fafc}
html[data-theme="dark"] .list .li:hover{background:#16283a}
/* view-header count pill (sites, contacts, …) */
.vh-pill{font-family:var(--font-mono,monospace);font-size:11.5px;font-weight:800;background:var(--blue-tint,#e7f0fa);color:var(--blue-text,#0a5a94);padding:3px 10px;border-radius:20px;vertical-align:3px}
.vh-pill:empty{display:none}
html[data-theme="dark"] .vh-pill{background:rgba(26,134,208,.16);color:#7fd0ff}
/* On Duty Now roster rows (design: avatar tile · name/meta · site · mono time · status pill) */
.od-row{display:grid;grid-template-columns:auto 1.5fr 1.1fr auto auto;align-items:center;gap:12px;padding:10px 2px;border-bottom:1px solid #f1f5f9;transition:background .12s}
.od-row:last-child{border-bottom:none}
.od-row:hover{background:#f7fafc}
html[data-theme="dark"] .od-row{border-bottom-color:var(--line)}
html[data-theme="dark"] .od-row:hover{background:#16283a}
.od-av{width:36px;height:36px;border-radius:10px;background:var(--blue-tint,#e7eff7);color:#0a6bb0;font-family:var(--font-display,inherit);font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;flex:none}
html[data-theme="dark"] .od-av{background:rgba(26,134,208,.16);color:#7fd0ff}
.od-main{min-width:0}
.od-nm{font-size:13.5px;font-weight:700;color:var(--ink,#16222f);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.od-sub{font-size:11.5px;color:#8593a5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.od-site{font-size:12.5px;color:#3a5064;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
html[data-theme="dark"] .od-site{color:#9db6cf}
.od-t{font-family:var(--font-mono,monospace);font-size:12px;color:#5f7288;white-space:nowrap}
@media(max-width:760px){.od-row{grid-template-columns:auto 1fr auto}.od-site,.od-t{display:none}}
