:root{
  color-scheme:light;--nav:#102838;--nav-deep:#0b1d29;--nav-hover:#183a4d;--accent:#0b7c72;
  --accent-dark:#075f58;--accent-soft:#e4f3f0;--ink:#17252f;--muted:#61727d;--line:#d9e1e5;
  --paper:#f2f5f6;--surface:#fff;--danger:#a43a3a;--warning:#a4690b;--focus:#f2b84b;
  font:15px/1.55 system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{min-height:100%;margin:0}
body{background:var(--paper);color:var(--ink)}
a{color:var(--accent)}
button,input,select{font:inherit}
button{min-height:40px;border:1px solid var(--accent);border-radius:6px;padding:.55rem .9rem;background:var(--accent);color:#fff;font-weight:700;cursor:pointer}
button:hover{background:var(--accent-dark);border-color:var(--accent-dark)}
button.secondary{background:#fff;border-color:#aab8bf;color:#314650}
button.secondary:hover{background:#edf2f4;border-color:#84969f}
button:disabled{opacity:.52;cursor:not-allowed}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
input,select{display:block;width:100%;min-height:40px;margin-top:.35rem;padding:.55rem .65rem;border:1px solid #aebcc3;border-radius:5px;background:#fff;color:var(--ink)}
input:hover,select:hover{border-color:#7e929b}
label{display:block;color:#40535d;font-size:.86rem;font-weight:700}
.check{display:flex;align-items:center;gap:.55rem;min-height:40px;margin-top:1.42rem}
.check input,input[type=checkbox]{width:auto;min-height:auto;margin:0;accent-color:var(--accent)}
h1,h2,h3,p{overflow-wrap:anywhere}
h1{margin:0;font-size:1.45rem;line-height:1.25}
h2{margin:.1rem 0 .25rem;font-size:1.16rem}
h3{margin:1.5rem 0 .65rem;font-size:1rem}
.eyebrow,.section-tag{margin:0;color:var(--muted);font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.muted{color:var(--muted)}

/* Login */
.login-page{display:grid;min-height:100vh;place-items:center;background:var(--nav-deep);padding:1.25rem}
.login-shell{width:min(100%,410px)}
.login-card{padding:2.25rem;background:var(--surface);border-top:4px solid var(--accent);border-radius:8px;box-shadow:0 20px 55px rgba(0,0,0,.28)}
.login-brand{display:grid;width:46px;height:46px;margin-bottom:1.4rem;place-items:center;border-radius:6px;background:var(--accent);color:#fff;font-size:1.35rem;font-weight:900}
.login-card h1{margin:.15rem 0 1.75rem;font-size:1.75rem}
.login-form{display:grid;gap:.75rem}
.login-form button{width:100%;margin-top:.35rem}
.form-error{min-height:1.5rem;margin:.25rem 0 0;color:var(--danger);font-size:.88rem}

/* Application shell */
.app-shell{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;z-index:10;display:flex;width:236px;flex-direction:column;background:var(--nav);color:#fff}
.brand{display:flex;align-items:center;gap:.75rem;min-height:82px;padding:1rem 1.15rem;border-bottom:1px solid rgba(255,255,255,.1);color:#fff;text-decoration:none}
.brand-mark{display:grid;width:38px;height:38px;flex:none;place-items:center;border-radius:5px;background:#14a494;font-weight:900}
.brand strong,.brand small{display:block}.brand small{margin-top:.05rem;color:#a9bdc7;font-size:.72rem;font-weight:600}
.side-nav{padding:.8rem}
.side-nav p{margin:.85rem .65rem .35rem;color:#77919f;font-size:.68rem;font-weight:800;letter-spacing:.1em}
.side-nav a{display:flex;align-items:center;gap:.7rem;min-height:42px;margin:.18rem 0;padding:.55rem .7rem;border-left:3px solid transparent;border-radius:4px;color:#c9d7dd;text-decoration:none;font-weight:650}
.side-nav a span{width:1.25rem;text-align:center;color:#92abb6}
.side-nav a:hover{background:var(--nav-hover);color:#fff}
.side-nav a.active{border-left-color:#27b7a8;background:#173c4e;color:#fff}
.side-nav a.active span{color:#51d1c4}
.sidebar-foot{display:flex;align-items:center;gap:.55rem;margin-top:auto;padding:1rem 1.4rem;border-top:1px solid rgba(255,255,255,.1);color:#9fb4be;font-size:.76rem}
.system-dot{width:8px;height:8px;border-radius:50%;background:#3bc89c;box-shadow:0 0 0 3px rgba(59,200,156,.13)}
.workspace-body{min-width:0;margin-left:236px}
.topbar{position:sticky;top:0;z-index:8;display:flex;min-height:82px;align-items:center;justify-content:space-between;padding:.9rem 1.6rem;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line)}
.topbar .eyebrow{margin-bottom:.25rem}.topbar button{min-height:36px}
.content{width:min(100%,1440px);margin:0 auto;padding:1.35rem 1.6rem 3rem}
.global-notice:empty{display:none}.global-notice{position:sticky;top:92px;z-index:7;padding:.65rem .8rem;border:1px solid #e7c47f;background:#fff7e6;color:#704b0c}
.panel{margin-bottom:1rem;padding:1.15rem;background:var(--surface);border:1px solid var(--line);border-radius:7px;box-shadow:0 1px 2px rgba(13,38,53,.04)}
.page-hero{display:grid;grid-template-columns:minmax(220px,.55fr) minmax(0,1.45fr);gap:1.25rem;align-items:start}
.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;margin-bottom:1rem;padding-bottom:.9rem;border-bottom:1px solid var(--line)}
.section-heading>p{max-width:48rem;margin:.1rem 0;color:var(--muted);font-size:.86rem;text-align:right}
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:.65rem}
.metric{min-width:0;padding:.75rem;border:1px solid #dfe6e9;border-left:3px solid var(--accent);background:#f9fbfb}
.metric span,.metric small{display:block;color:var(--muted);font-size:.75rem}.metric strong{display:block;margin:.1rem 0;font-size:1.12rem;overflow-wrap:anywhere}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:.75rem;align-items:end;margin:.8rem 0}
.form-stack{display:grid;gap:.65rem}
.split-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1.2rem}
.split-grid>section{padding:1rem;border:1px solid var(--line);background:#f9fbfb}
.list-toolbar{display:grid;grid-template-columns:minmax(210px,1fr) repeat(2,minmax(140px,.35fr)) auto;gap:.65rem;align-items:end;margin:1rem 0}
.editor{margin:1rem 0;border:1px solid var(--line);background:#f9fbfb}
.editor summary{padding:.8rem 1rem;color:var(--accent-dark);font-weight:800;cursor:pointer}.editor form{padding:0 1rem 1rem}
.preview{margin-top:1rem;padding:.8rem;border-left:3px solid var(--warning);background:#fff7e7;white-space:pre-wrap;overflow-wrap:anywhere}
.download-link{display:inline-flex;align-items:center;min-height:38px;padding:.45rem .75rem;border:1px solid #8abbb5;border-radius:5px;background:var(--accent-soft);font-weight:700;text-decoration:none}
.table-wrap{width:100%;overflow:visible}
table{width:100%;border-collapse:collapse;table-layout:auto}
th,td{padding:.62rem .55rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:anywhere}
th{background:#edf2f4;color:#3b505b;font-size:.78rem;white-space:nowrap}
td{font-size:.86rem}td button{min-height:32px;padding:.3rem .55rem;font-size:.8rem}
.row-actions{display:flex;flex-wrap:wrap;gap:.4rem}.danger{border-color:#c96b6b;background:#fff3f3;color:#8d2020}.danger:hover{background:#ffe4e4}
.map-actions{display:flex;align-items:center;gap:.75rem;min-height:42px}.map-actions p{margin:0}.map-status{display:grid;gap:.3rem;margin:.5rem 0 .9rem;padding:.75rem;border-left:3px solid var(--accent);background:var(--accent-soft)}.map-status span,.map-status small{color:var(--muted)}
.map-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(240px,.75fr);gap:1rem;align-items:start}.map-canvas{min-height:390px;border:1px solid var(--line);background:#f8fbfb}.business-map{display:block;width:100%;height:auto;min-height:390px}.map-region path{stroke:#fff;stroke-width:.7;vector-effect:non-scaling-stroke}.map-region text{fill:#223a44;font-size:8px;font-weight:700;pointer-events:none}.map-region.clickable{cursor:pointer}.map-region.clickable:focus{outline:none}.map-region.clickable:focus path,.map-region.clickable:hover path{stroke:var(--accent-dark);stroke-width:2}.map-list{display:grid;gap:.45rem;max-height:470px;overflow:auto}.map-list h3{margin:.2rem 0}.map-list-row{display:grid;grid-template-columns:1fr auto;gap:.25rem .6rem;padding:.6rem;border:1px solid var(--line);background:#fff}.map-list-row small{grid-column:1/-1;color:var(--muted)}.map-list-row button{grid-column:1/-1;justify-self:start}
.pagination,.dispatch-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:.75rem 0}
.pagination button,.dispatch-actions button{min-height:34px;padding:.35rem .65rem}
.dispatch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:.65rem;margin:.8rem 0}
.dispatch-card{min-width:0;margin:.6rem 0;padding:.8rem;border:1px solid var(--line);border-radius:5px;background:#fbfcfc;overflow-wrap:anywhere}
.dispatch-card small{display:block}.dispatch-card p{margin:.4rem 0}.dispatch-status{color:var(--muted);overflow-wrap:anywhere}

@media(max-width:1024px){
  .sidebar{width:205px}.workspace-body{margin-left:205px}.content,.topbar{padding-left:1rem;padding-right:1rem}
  .page-hero{grid-template-columns:1fr}.list-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.map-layout{grid-template-columns:1fr}.map-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}.map-list h3{grid-column:1/-1}
}
@media(max-width:760px){
  .app-shell{display:block}.sidebar{position:static;width:100%}.brand{min-height:64px}.side-nav{display:flex;gap:.35rem;overflow-x:auto;padding:.55rem}.side-nav p,.sidebar-foot{display:none}.side-nav a{flex:none;margin:0;padding:.5rem .7rem;border-left:0;border-bottom:3px solid transparent}.side-nav a.active{border-left:0;border-bottom-color:#27b7a8}
  .workspace-body{margin-left:0}.topbar{position:static;min-height:70px}.content{padding:.85rem}.section-heading{display:block}.section-heading>p{text-align:left}.split-grid{grid-template-columns:1fr}.list-toolbar{grid-template-columns:1fr}.map-list{grid-template-columns:1fr}.map-canvas,.business-map{min-height:260px}
  table,thead,tbody,tr,th,td{display:block}thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}tr{margin-bottom:.7rem;border:1px solid var(--line);background:#fff}td{display:grid;grid-template-columns:minmax(7.5rem,38%) minmax(0,1fr);gap:.5rem;border-bottom:1px solid #e8edef}td:last-child{border-bottom:0}td::before{content:attr(data-label);color:var(--muted);font-size:.75rem;font-weight:800}
}
@media(max-width:430px){.login-card{padding:1.5rem}.topbar{align-items:flex-start}.topbar h1{font-size:1.25rem}.panel{padding:.9rem}.form-grid{grid-template-columns:1fr}.check{margin-top:.25rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
/* Four metric columns keep actuals, targets and differences together. */
.monthly-table{width:100%;table-layout:fixed;border-collapse:collapse}
.monthly-table th,.monthly-table td{padding:12px 10px;vertical-align:top;overflow-wrap:anywhere}
.monthly-table th:first-child{width:14%}
.monthly-table strong,.monthly-table small{display:block;margin-bottom:6px}
.monthly-table label{display:block;font-size:12px;color:var(--muted,#667782)}
.monthly-table input{display:block;width:100%;min-width:0;box-sizing:border-box;margin:4px 0 8px}
.monthly-savebar{position:sticky;bottom:0;display:flex;gap:12px;padding:12px;background:#fff;border-top:1px solid #dce5e8}
.monthly-progress-legend{display:flex;flex-wrap:wrap;gap:7px 16px;margin:10px 0 12px;color:var(--muted);font-size:12px}
.monthly-progress-legend span{padding-left:8px;border-left:5px solid #1668dc;line-height:1}
.monthly-progress-legend .forecast{border-left-color:#79b9ec}.monthly-progress-legend .time{border-left-color:#d38a2f}.monthly-progress-legend .target{border-left-color:#17304d}
.monthly-progress{min-width:0;padding:10px;background:#f8fafc;border:1px solid #dbe4ef;border-left:4px solid #1668dc;border-radius:8px}
.monthly-progress-head,.monthly-progress-values{display:flex;align-items:center;justify-content:space-between;gap:8px}
.monthly-progress-label{min-width:0;color:#36566b;font-size:12px;font-weight:700}
.monthly-progress-badge{flex:none;padding:3px 7px;color:#315f9b;background:#e8eff8;border-radius:999px;font-size:11px;font-weight:700}
.monthly-progress-values{align-items:flex-end;margin-top:7px}.monthly-progress-values strong{margin:0;color:#17304d;font-size:18px;line-height:1.2}.monthly-progress-values>span{color:#60758c;font-size:11px;text-align:right}
.monthly-progress-track{position:relative;width:100%;height:10px;margin:12px 0 11px;overflow:visible;background:#e4eaf1;border-radius:999px}
.monthly-progress-fill,.monthly-progress-projection{position:absolute;top:0;height:100%;border-radius:999px}
.monthly-progress-fill{left:0;z-index:1;background:#1668dc}.monthly-progress-projection{z-index:2;background:#9cccf2;border-radius:0 999px 999px 0}
.monthly-progress-forecast,.monthly-progress-time,.monthly-progress-target{position:absolute;z-index:3;top:-4px;width:2px;height:18px;transform:translateX(-1px);border-radius:2px}
.monthly-progress-forecast{background:#08979c}.monthly-progress-time{background:#d38a2f}.monthly-progress-target{right:0;background:#17304d}
.monthly-progress-unset{margin-top:10px;padding:7px 9px;color:#60758c;background:#e9eef3;border-radius:999px;font-size:11px;text-align:center}
.monthly-progress-details{margin-top:8px;color:#60758c;font-size:11px}.monthly-progress-details summary{color:#245987;font-weight:700;cursor:pointer}.monthly-progress-details small{margin:5px 0 0;line-height:1.45}
.monthly-progress.achieved{border-left-color:#25845e}.monthly-progress.achieved .monthly-progress-badge{color:#17613f;background:#e4f3eb}
.monthly-progress.risk{border-left-color:#c77715}.monthly-progress.risk .monthly-progress-badge{color:#8b551d;background:#fff0da}
.monthly-progress.partial{border-left-color:#9b6a2f}.monthly-progress.partial .monthly-progress-badge{color:#755023;background:#f6ead8}
.monthly-progress.unset{border-left-color:#84919b}.monthly-progress.unset .monthly-progress-badge{color:#52697a;background:#e9eef3}
@media(max-width:720px){.monthly-table{table-layout:auto}.monthly-table thead{display:none}.monthly-table tr{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid #dce5e8}.monthly-table th:first-child{width:auto;grid-column:1/-1}.monthly-table td{display:block}.monthly-table td::before{display:none}.monthly-savebar{flex-wrap:wrap}}
@media(max-width:560px){.monthly-table tr{grid-template-columns:1fr}}

#monthly-content .monthly-filters { display:flex; flex-wrap:wrap; align-items:end; gap:12px; }
#monthly-content .monthly-filters label { flex:0 1 220px; margin:0; }
#monthly-content .monthly-filters input,#monthly-content .monthly-filters select { margin:4px 0 0; }
#monthly-content .monthly-filters button { margin:0; }

.people-edit-table { table-layout:fixed; width:100%; }
.people-edit-table th:first-child { width:16%; }
.people-edit-table th:nth-child(2) { width:14%; }
.people-edit-table td input[type=checkbox] { width:20px;height:20px; }
.people-edit-table td { padding:8px; }
.people-edit-table td input,.people-edit-table td select { margin:0;min-width:0;width:100%; }
.people-savebar {position:sticky;bottom:0;background:white;padding:12px 0;border-top:1px solid #dce5e9;}
.people-savebar button {margin-right:12px;}

.compact-business-table table {width:100%;table-layout:fixed;}
.compact-business-table td,.compact-business-table th {padding:9px 10px;overflow-wrap:anywhere;white-space:normal;}
.compact-business-table th:first-child {width:24%;}
.compact-business-table details p {white-space:pre-wrap;}
#business-content .list-toolbar {display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;}
#business-content .list-toolbar button {flex:0 0 auto;width:auto;margin:0;}
#business-content .list-toolbar input {flex:1 1 220px;min-width:180px;width:auto;margin:0;}
#business-content .list-toolbar select {flex:0 1 190px;width:auto;max-width:100%;margin:0;}

.customer-drawer{box-sizing:border-box;width:min(880px,calc(100vw - 24px));height:calc(100vh - 24px);max-height:none;margin:12px 12px 12px auto;padding:20px;border:1px solid #dce7eb;border-radius:12px;overflow:auto;color:#193c4b}.customer-drawer::backdrop{background:rgba(15,35,45,.3)}.customer-drawer table{width:100%;font-size:13px}.customer-drawer td,.customer-drawer th{padding:8px;white-space:normal;overflow-wrap:anywhere}.customer-drawer h2{font-size:20px;margin:12px 0}.customer-drawer h3{font-size:16px;margin:18px 0 8px}.customer-drawer .list-toolbar{position:sticky;top:0;background:#fff;padding:8px 0;z-index:1}

.topbar{min-height:64px;padding:10px 20px}.brand{min-height:64px}.content{padding:14px 20px 32px}
#overview{padding:10px 14px;margin-bottom:10px}
#overview .section-heading{border:0;padding:0;margin:0 0 4px;align-items:center}
#overview .section-heading h2{font-size:14px;margin:0}
#overview .section-heading a{font-size:13px}
#overview .publication-summary p{margin:3px 0;font-size:13px;line-height:1.5}
#overview .publication-summary details{font-size:12px;color:var(--muted)}

/* Compact target editing and explicit tab selection. */
.monthly-table th button{display:block;max-width:100%;white-space:normal;margin:6px 0;font-size:12px;padding:6px 8px}
.monthly-table th,.monthly-table td{padding:9px 8px}
.list-toolbar button.active{background:var(--primary,#175c4e);color:white;border-color:var(--primary,#175c4e)}
.followup-metrics{margin:12px 0}.followup-grade-grid{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:10px;margin:12px 0}.followup-grade-card{display:grid;gap:3px;min-height:92px;padding:12px;text-align:left;border:1px solid #cbdde3;background:#fff;color:#193c4b}.followup-grade-card strong{font-size:20px;color:#176c75}.followup-grade-card span{font-weight:700}.followup-grade-card small{line-height:1.45;color:#52697a}.followup-grade-card.active{border-color:#1668dc;background:#edf5ff;box-shadow:inset 0 0 0 1px #1668dc}.followup-daily{margin:14px 0}.followup-daily td:last-child{white-space:normal}.followup-daily td:last-child button{width:auto;margin:2px 4px 2px 0;padding:5px 8px;font-size:12px}
@media(max-width:1024px){.followup-grade-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.followup-grade-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.followup-grade-card{min-height:84px}}
/* UI10 shared palette: primary action blue, business data cyan, text-backed status. */
:root{--primary:#1668dc;--business:#08979c;--surface:#fff;--canvas:#f3f6fa;--line:#dbe4ef;--ink:#17304d;--muted:#60758c}
.filing-footer{padding:14px 20px 22px;text-align:center;font-size:12px;color:var(--muted)}
.filing-footer a{color:#24568e}
.login-page .filing-footer a{color:#d8eaff}
body.workspace-page{background:var(--canvas);color:var(--ink)}
.sidebar{background:linear-gradient(180deg,#102f50,#144b66)}
.side-nav a.active{background:#1668dc;color:#fff;border-radius:8px}
.panel{border:1px solid var(--line);box-shadow:0 2px 8px #17304d06}
button{min-height:36px;border-radius:7px;background:var(--primary);color:white;border:1px solid var(--primary);font-weight:500}
button.secondary,button.quiet{background:#fff;color:#245987;border-color:#c9d8e8}
button.danger{background:#fff;color:#b42318;border-color:#f1b6b0}
button:disabled{opacity:.5;cursor:not-allowed}
.row-actions{display:flex;flex-wrap:wrap;gap:6px}.row-actions button,table button{min-height:32px;padding:4px 9px}
th{background:#eaf2fb;color:#244968}tbody tr:nth-child(even){background:#f8fbfd}
.account-dialog{width:min(720px,90vw);max-height:85vh;overflow:auto;border:1px solid #dbe4ef;border-radius:14px;padding:24px;box-shadow:0 20px 80px #102f5040}
.account-dialog::backdrop{background:#102f5055}.account-dialog h2{margin-top:0}
[data-page=quality] .health-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
[data-page=quality] .card{padding:20px;background:white;border:1px solid var(--line);border-radius:12px}
[data-page=quality] .health-item{padding:12px;background:#f3f8fd;display:flex;flex-direction:column;gap:5px}
[data-page=quality] .health-value.warn{color:#a65c00}
[data-page=exports] .export-menu{display:block;margin-top:14px}
[data-page=exports] .export-menu>summary{display:none}
[data-page=exports] .export-menu>div{display:flex;flex-wrap:wrap;gap:8px}
[data-page=exports] .export-jobs-table{width:100%;table-layout:fixed;border-collapse:collapse}
.export-jobs-table td{overflow-wrap:anywhere;padding:10px;vertical-align:top;border-bottom:1px solid var(--line)}
@media(max-width:800px){[data-page=quality] .health-panel{grid-template-columns:1fr}}

/* Personnel tabs are navigation, not a search form grid. */
.organization-tabs{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 16px}
.organization-tabs button{width:auto;min-width:112px;flex:0 0 auto;margin:0;background:#fff;color:#24577a;border:1px solid #cbdcf0}
.organization-tabs button.active{background:#1668dc;border-color:#1668dc;color:#fff}
.interaction-table table{table-layout:fixed;width:100%}
.interaction-table td,.interaction-table th{white-space:normal;overflow-wrap:anywhere;text-overflow:clip;vertical-align:top}
.interaction-table td:nth-child(5){white-space:pre-wrap}
.interaction-table th:nth-child(1){width:15%}.interaction-table th:nth-child(2){width:9%}.interaction-table th:nth-child(3){width:6%}.interaction-table th:nth-child(4){width:11%}.interaction-table th:nth-child(5){width:30%}.interaction-table th:nth-child(6){width:13%}.interaction-table th:nth-child(7){width:16%}
