/* 1.3.0 — quiet, task-first work surface; shared tokens and responsive layout. */
:root{--ink:#20252d;--muted:#687382;--line:#e5e7eb;--blue:#285fe3;--green:#13795b;--red:#bb3547;--orange:#a96618}
body{background:#f7f8fa;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;font-size:16px;line-height:1.6}
button,input,select,textarea{font:inherit}button{transition:background .15s,border-color .15s}button:focus-visible,a:focus-visible{outline:3px solid #8bb3ff;outline-offset:3px}button:disabled{opacity:.45;cursor:not-allowed}
.sidebar{width:224px;background:#fff;color:var(--ink);border-right:1px solid var(--line);padding:25px 15px;overflow-y:auto}
.brand{color:var(--ink);gap:10px;padding:0 9px 25px;text-decoration:none}.brand img{width:43px;height:43px;border-radius:10px}.brand b{font-size:19px;letter-spacing:0}.brand small{font-size:10px;color:#808995;letter-spacing:.6px}
.nav-label{color:#8a929e;letter-spacing:.05em;margin:22px 13px 9px}.sidebar nav{gap:4px}.sidebar nav button{color:#5c6573;border-radius:7px;font-size:14px;padding:10px 13px;min-height:44px}.sidebar nav button:hover{background:#f5f6f8}.sidebar nav button.active{background:#edf2fd;color:#2456c5;box-shadow:none;font-weight:650}.sidebar nav button svg{width:19px;height:19px;flex-shrink:0}.sidebar-foot button{background:#fafbfc;border-color:var(--line);color:var(--ink)}.sidebar-foot small,.version{color:#858e9b}.avatar{background:#edf1f7;color:#536174}.version b{background:#edf0f4;color:#657080}
main{margin-left:224px}.topbar{height:68px;background:#fff;padding:0 36px}.top-right>span{font-size:13px}.content{max-width:1560px;padding:30px 36px 56px}.page-heading{margin-bottom:24px}.eyebrow{color:#7c8592;letter-spacing:.08em;font-size:12px}h1{font-size:27px;font-weight:650;letter-spacing:-.7px}h2{font-size:17px;font-weight:650}.sub{font-size:14px;line-height:1.7}.hint{font-size:13px}
.primary,.secondary,.danger{border-radius:7px;font-size:14px;padding:9px 16px;min-height:40px;box-shadow:none}.primary{background:var(--blue);color:white}.quiet{font-size:14px;min-height:36px}.card{border-radius:10px;box-shadow:none;border-color:var(--line)}.card-head{padding:17px 22px;border-color:#eef0f3}.card-body{padding:22px}.metrics{gap:0;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:24px}.metric,.metric:first-child{border:0;border-radius:0;background:white;color:var(--ink);padding:23px 26px}.metric+.metric{border-left:1px solid var(--line)}.metric>span,.metric:first-child>span{color:#697381;font-size:14px}.metric small,.metric:first-child>small{color:#87909c;font-size:13px}.metric strong{font-size:31px;letter-spacing:-1px;font-weight:650;font-variant-numeric:tabular-nums;margin:7px 0}.metric .positive{color:var(--green)}
.dashboard-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px;gap:16px}.dashboard-heading p{margin:5px 0 0;color:var(--muted);font-size:14px}.dashboard-heading .hint{text-align:right}.dashboard-workspace{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(260px,1fr);gap:22px;margin-bottom:24px;align-items:stretch}.dashboard-workspace .chart-card{margin:0}.dashboard-workspace .dash-grid{display:flex;flex-direction:column;gap:18px}.dashboard-workspace .dash-grid>.card{flex:1}.dashboard-workspace .card-head{flex-wrap:wrap}.quick-links{grid-template-columns:1fr 1fr;gap:8px}.quick-links button{white-space:normal;font-size:14px;padding:9px 11px;text-align:center}.quick-links button:first-child{grid-column:1/-1}
.alert-card,.ok-card{border-top:1px solid var(--line);margin:0 0 22px}.ok-empty{padding:24px}.ok-empty b{font-weight:500;color:#697381}.chart-tools{gap:8px}.filters{gap:3px}.chip{font-size:14px;border-radius:6px}.chip.active{background:#eef2f8;color:#29384d}.mode-toggle .chip.active{background:#eef2f8;color:#29384d}.chart-axis{fill:#737e8e;font-size:13px}.chart-legend{font-size:14px}.chart-grid{stroke:#edf0f3}.trend-chart{min-height:210px}.status-bars .bar i{background:#7798dd}.status-bars .bar{height:6px}.badge,.age-pill{font-size:13px;border-radius:5px;font-weight:500}.ov-row.row-over{background:#fffafa}.order-id{letter-spacing:0;font-variant-numeric:tabular-nums}th{font-size:13px;background:#fafbfc;color:#7a8391;padding:12px 20px}td{padding:16px 20px}tbody tr:hover{background:#f8fafc}td small{font-size:13px}.table-wrap{max-width:100%}
.dir-tabs{gap:12px}.dir-option{border-radius:9px;padding:19px 22px}.dir-option.active{box-shadow:none;border-color:#9db6ef;background:#f7faff}.dir-option>span{font-size:14px}.dir-option b small{font-size:13px}.dir-option em{font-size:13px}.logistics-search{margin-bottom:16px;display:flex;gap:10px}.logistics-search input{max-width:440px}.logistics-search .quiet{margin-left:auto}.track-no{font-size:14px;background:#f3f5f8;letter-spacing:0}.addr-cell{font-size:14px}.row-actions{white-space:normal;min-width:125px}.track-time{max-height:50vh}.track-time>div:first-child i{background:var(--blue)}
input,select,textarea{border-color:#dce0e6;border-radius:7px;font-size:14px;min-height:42px}input:focus,select:focus,textarea:focus{outline:2px solid #cbdcff;outline-offset:0;border-color:#7fa2ef}.workflow-card{border-color:#d8e0ee}.workflow-card .card-head{background:#fafbfe}.workflow-actions{gap:12px}.steps{border-radius:9px}.settings-grid{align-items:start}.settings-grid>.card{min-width:0}.software-releases{margin-top:18px}.release-row{display:flex;gap:12px;justify-content:space-between;padding:15px 0;border-top:1px solid var(--line)}.release-row small{display:block;color:var(--muted);font-size:13px;overflow-wrap:anywhere}.release-actions{display:flex;align-items:center;gap:8px}.release-actions button{white-space:normal}.address-tools{flex-wrap:wrap}.summary-grid b{overflow-wrap:anywhere}dialog{border-radius:12px;max-height:90vh;overflow:auto}dialog::backdrop{background:#17202d66;backdrop-filter:blur(2px)}.login{background:#f5f6f8}.login-box{border-radius:12px;box-shadow:0 12px 40px #1e293b08}.login-box img{width:88px;height:88px}.hero{display:none}
@media(max-width:1200px){.content{padding:26px 24px}.topbar{padding:0 24px}.dashboard-workspace{grid-template-columns:1fr}.dashboard-workspace .dash-grid{display:grid;grid-template-columns:1fr 1fr}.metric{padding:20px}}
@media(max-width:950px){.metric:nth-child(3){border-left:0}.metric:nth-child(n+3){border-top:1px solid var(--line)}.chart-tools{flex-wrap:wrap}.top-right>span{display:none}}
@media(max-width:700px){.sidebar{width:224px}main{margin-left:0}.content{padding:24px 14px}.topbar{padding:0 16px}.dashboard-heading{align-items:start}.dashboard-heading .hint{max-width:130px}.dashboard-workspace .dash-grid{grid-template-columns:1fr}.metric,.metric:first-child{padding:17px 15px}.metric strong{font-size:25px}.dir-tabs{grid-template-columns:1fr}.logistics-search{flex-wrap:wrap}.logistics-search input{max-width:none;width:100%}.chart-card .card-body{padding:15px}.card-head{flex-wrap:wrap}.release-row{flex-direction:column}.dashboard-heading h1{font-size:25px}.quick-links{grid-template-columns:1fr 1fr}.search-box{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.link-model{border:0;background:none;padding:0;font:inherit;font-weight:650;color:var(--blue);cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:#bcd0f5;text-underline-offset:3px}.link-model:hover{color:#16409b;text-decoration-color:var(--blue)}
.logi-window{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#f7f9fc;border:1px solid var(--line);border-radius:9px;padding:11px 16px;margin-bottom:16px;font-size:14px;color:#5c6573}.logi-window b{color:var(--ink)}.logi-window small{color:#87909c;font-size:13px}.logi-window .quiet{margin-left:auto}
.pick-head{display:flex;flex-direction:column;gap:4px;background:#f7f9fc;border:1px solid var(--line);border-radius:9px;padding:13px 16px;margin-bottom:14px}.pick-head b{font-size:16px}.pick-head span{color:#87909c;font-size:13px}
.pick-list{display:flex;flex-direction:column;gap:8px;max-height:270px;overflow:auto;margin-bottom:8px}.pick-order{display:flex;flex-direction:column;gap:3px;text-align:left;border:1px solid var(--line);border-radius:8px;background:#fff;padding:11px 14px;cursor:pointer}.pick-order:hover{border-color:#b9cff5;background:#f8fbff}.pick-order.active{border-color:var(--blue);background:#f2f7ff;box-shadow:0 0 0 2px #dfebff}.pick-order b{font-variant-numeric:tabular-nums;font-size:14px}.pick-order span{font-size:13px;color:#5c6573}.pick-order small{color:#87909c;font-size:13px}
.device-head{border:1px solid var(--line);border-radius:9px;padding:16px 18px;margin-bottom:14px;background:#fafbfc}.device-body{padding:0}.device-body hr{margin:14px 0;border:0;border-top:1px solid var(--line)}
.demand-field{margin:4px 0 14px}.demand-label{display:block;font-size:14px;color:#4a5462;margin-bottom:8px;font-weight:500}.demand-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.demand-chip{min-height:38px;padding:8px 15px;border-radius:7px;border:1px solid #dce0e6;background:#fff;font-size:14px;cursor:pointer}.demand-chip:hover{border-color:#b9cff5;background:#f8fbff}.demand-chip.active{border-color:var(--blue);background:#eef4ff;color:#1d4ed8;font-weight:650}
.finance-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);gap:20px;align-items:start}.pager{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:14px 20px;border-top:1px solid var(--line);font-size:14px}.pager span{color:#5c6573}.pager button[disabled]{opacity:.45;cursor:not-allowed}.month-pick{display:flex;align-items:center;gap:8px;font-size:14px;color:#4a5462}.month-pick select{min-height:38px}
.cancel-banner{display:flex;flex-direction:column;gap:5px;background:#fdeff1;border:1px solid #f3c9d0;border-radius:9px;padding:14px 18px;margin-bottom:20px}.cancel-banner b{color:var(--red);font-size:15px}.cancel-banner span{color:#7a4b53;font-size:14px}
.cust-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;background:#fafbfc;border:1px solid var(--line);border-radius:9px;padding:16px 18px;margin-bottom:14px}.cust-summary>div{display:flex;flex-direction:column;gap:4px}.cust-summary span{font-size:13px;color:#87909c}.cust-summary b{font-size:15px;font-variant-numeric:tabular-nums}
.cust-bytype{display:flex;flex-direction:column;gap:2px;margin-bottom:14px}.cust-bytype .money-row{display:flex;justify-content:space-between;padding:8px 2px;border-bottom:1px dashed var(--line);font-size:14px}
.cust-orders{display:flex;flex-direction:column;gap:12px;max-height:52vh;overflow:auto}.cust-order{border:1px solid var(--line);border-radius:9px;padding:13px 15px;background:#fff}.cust-order-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.cust-order-head small{color:#87909c;font-size:13px;margin-left:auto}.cust-order-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:9px}.cust-order-body>div{display:flex;flex-direction:column;gap:3px}.cust-order-body span{font-size:13px;color:#87909c}.cust-order-body b{font-size:14px}.cust-order-body em{font-style:normal}.cust-tags{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:7px;font-size:13px}.cust-tags>b{color:#87909c;font-weight:500;flex-shrink:0}.mini-tag{display:inline-block;background:#f3f5f8;border-radius:6px;padding:4px 9px;font-size:13px;color:#4a5462}
@media(max-width:1100px){.finance-grid{grid-template-columns:1fr}}
.board{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;align-items:start}.board-col{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}.board-col.has-late{border-color:#f0c4cb}.board-col-head{display:flex;align-items:center;gap:8px;padding:13px 15px;border-bottom:1px solid var(--line);background:#fafbfc;flex-wrap:wrap}.board-col-head b{font-size:14px}.board-col-head small{color:#87909c;font-size:12px}.board-col-head .cnt{margin-left:auto;background:#eef1f5;border-radius:20px;padding:2px 9px;font-size:12px;font-weight:650}.over-pill{background:#fde8eb;color:var(--red);border-radius:20px;padding:2px 9px;font-size:12px;font-weight:650}.board-col-body{display:flex;flex-direction:column;gap:8px;padding:10px;max-height:58vh;overflow:auto}.board-empty{color:#98a1ad;font-size:13px;text-align:center;padding:14px 0;margin:0}
.board-card{display:flex;flex-direction:column;gap:4px;text-align:left;border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px 12px;cursor:pointer;font:inherit}.board-card:hover{border-color:#b9cff5;background:#f8fbff}.board-card.late{border-color:#f0c4cb;background:#fffafa}.board-card b{font-size:13px;font-variant-numeric:tabular-nums}.board-card span{font-size:13px;color:#5c6573}.board-card i{font-style:normal;font-size:12px;color:#87909c}
.due-pill{display:inline-block;font-size:12px;padding:3px 8px;border-radius:5px;background:#f1f4f8;color:#5c6573}.due-pill.late{background:#fdeff1;color:var(--red);font-weight:600}
.due-line{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:8px;background:#f7f9fc;border:1px solid var(--line);margin-bottom:12px}.due-line.late{background:#fdeff1;border-color:#f3c9d0}.due-line b{font-size:15px}.due-line.late b{color:var(--red)}.due-line span{font-size:14px;color:#5c6573}
.delay-list{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px;display:flex;flex-direction:column;gap:9px}.delay-list>b{font-size:13px;color:#87909c}.delay-row{display:flex;flex-direction:column;gap:3px;font-size:14px}.delay-reason{font-weight:650;color:var(--ink)}.delay-row small{color:#87909c;font-size:13px}
.unit-list{display:flex;flex-direction:column;gap:12px}.unit-row{border:1px solid var(--line);border-radius:9px;padding:13px 15px;background:#fafbfc}.unit-head{margin-bottom:9px}.unit-head b{font-size:14px}
.unit-card{border:1px solid var(--line);border-radius:9px;padding:13px 15px;margin-bottom:11px;background:#fff}.unit-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.unit-card-head b{font-size:15px}.unit-card-head>span{color:#5c6573;font-size:14px}.unit-card-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px}.unit-card-body>div{display:flex;flex-direction:column;gap:3px}.unit-card-body span{font-size:13px;color:#87909c}.unit-card-body b{font-size:14px}
.cust-banner{border:1px solid var(--line);border-radius:9px;padding:13px 15px;margin:4px 0 14px;background:#fafbfc;display:flex;flex-direction:column;gap:9px}.cust-banner.vip{border-color:#f0d08a;background:#fffbf0}.cust-banner>div:first-child{display:flex;flex-direction:column;gap:3px}.cust-banner b{font-size:15px}.cust-banner.vip b{color:#a9700c}.cust-banner>div:first-child span{font-size:14px;color:#5c6573}.cust-banner-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:#69737f;font-variant-numeric:tabular-nums}.cust-banner-models{display:flex;gap:6px;flex-wrap:wrap}.lookup-cell{display:flex;align-items:flex-end}
.batch-bar{margin-top:-6px}.bucket-chips{display:flex;gap:6px;flex-wrap:wrap}.abnormal-list{display:flex;flex-direction:column;gap:10px}.abnormal-row{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(150px,1.2fr) minmax(150px,1fr) auto;gap:12px;align-items:center;padding:11px 13px;border:1px solid #f3c9d0;border-radius:8px;background:#fffafa}.abnormal-row>div{display:flex;flex-direction:column;gap:3px;min-width:0}.abnormal-row b{font-size:14px;font-variant-numeric:tabular-nums}.abnormal-row span{font-size:13px;color:#5c6573}.abnormal-row small{font-size:12px;color:#87909c}.abnormal-row button{justify-self:end}
@media(max-width:900px){.board{grid-template-columns:1fr 1fr}.abnormal-row{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.board{grid-template-columns:1fr}.abnormal-row{grid-template-columns:1fr}}
.logi-line{border:1px solid var(--line);border-radius:9px;padding:12px 15px;margin-bottom:11px;background:#fafbfc}.logi-line-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:9px}.logi-line-head small{color:#87909c;font-size:13px}.logi-line-body{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.view-actions{display:flex;gap:6px;white-space:nowrap}.view-actions .quiet{padding:6px 9px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:13px}.view-actions .quiet:hover{border-color:#b9cff5;background:#f8fbff;color:var(--blue)}
.cust-banner.newbie{border-color:#d8e0ee;background:#f8fbff}.cust-banner.newbie b{color:var(--blue)}
.danger-card{border-color:#f0c4cb}.danger-card .card-head{background:#fffafa}.danger-text{color:var(--red)}.quiet.danger-text{border-color:#f0c4cb;background:#fff}.quiet.danger-text:hover{background:#fdeff1;border-color:#e8a9b3}
.confirm-action.danger>span{background:#fdeff1;color:var(--red)}.delete-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:#fffafa;border:1px solid #f3c9d0;border-radius:9px;padding:14px 16px;margin-bottom:14px}.delete-summary>div{display:flex;flex-direction:column;gap:3px}.delete-summary span{font-size:13px;color:#87909c}.delete-summary b{font-size:16px;color:var(--red);font-variant-numeric:tabular-nums}
.unit-demand{display:flex;flex-direction:column;gap:8px;margin-bottom:11px}.unit-demand-label{font-size:13.5px;color:#4a5462;font-weight:600}.unit-demand .demand-chips{gap:6px}.unit-demand .demand-chip{min-height:34px;padding:6px 12px;font-size:13.5px}.nopad{padding:4px 9px;font-size:13px}.unit-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.cust-unit{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:5px 0;font-size:14px;border-bottom:1px dashed var(--line)}.cust-unit:last-child{border-bottom:0}.cust-unit>span{color:#87909c;min-width:52px}.cust-unit>b{font-weight:600}.cust-unit>em{font-style:normal;color:#2456c5;background:#eef2fd;border-radius:6px;padding:3px 9px;font-size:13px}
.board-card{display:flex;flex-direction:column;gap:6px}.bc-top{display:flex;align-items:center;gap:8px;justify-content:space-between}.bc-top>b{font-size:13px;font-variant-numeric:tabular-nums;word-break:break-all}.bc-multi{font-style:normal;font-size:12px;background:#eef2fd;color:#2456c5;border-radius:20px;padding:2px 8px;font-weight:600;flex-shrink:0}
.bc-row{display:flex;gap:8px;align-items:baseline;font-size:13px;line-height:1.5}.bc-row>i{font-style:normal;color:#98a1ad;flex-shrink:0;min-width:48px;font-size:12.5px}.bc-row>b{font-weight:600;color:var(--ink);word-break:break-all}.bc-row-demand{align-items:flex-start}.bc-demand{color:#2456c5;font-size:13px;line-height:1.6;word-break:break-all}.bc-demand .hint{color:#b3bbc6}
.bc-units{display:flex;flex-direction:column;gap:5px;width:100%}.bc-unit{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12.5px}.bc-unit>i{font-style:normal;color:#98a1ad;min-width:48px}.bc-unit>em{font-style:normal;color:var(--ink);font-weight:600}.bc-unit>b{font-weight:500;color:#2456c5;background:#eef2fd;border-radius:6px;padding:2px 8px;font-size:12.5px}.bc-unit>b.hint{background:#f3f5f8;color:#b3bbc6;font-weight:400}
.chart-box{position:relative}.chart-hit{cursor:crosshair}.chart-hit .chart-cross{stroke:#b9c4d4;stroke-width:1;stroke-dasharray:4 3;opacity:0;transition:opacity .12s}.chart-hit .chart-dot{opacity:0;transition:opacity .12s}.chart-hit .chart-tip-wrap{opacity:0;pointer-events:none;transition:opacity .12s}.chart-hit:hover .chart-cross,.chart-hit:focus .chart-cross,.chart-hit:hover .chart-dot,.chart-hit:focus .chart-dot,.chart-hit:hover .chart-tip-wrap,.chart-hit:focus .chart-tip-wrap{opacity:1}
.chart-tip{background:rgba(24,34,48,.94);color:#fff;border-radius:8px;padding:9px 12px;font-size:13px;line-height:1.55;box-shadow:0 6px 18px rgba(20,32,50,.22)}.chart-tip>b{display:block;font-size:12.5px;color:#bcc9dc;font-weight:600;margin-bottom:5px}.chart-tip>span{display:flex;justify-content:space-between;gap:14px}.chart-tip>span>i{font-style:normal;color:#d7e0ec}.chart-tip>span>em{font-style:normal;font-weight:650;font-variant-numeric:tabular-nums}
.board-zones{display:flex;flex-direction:column;gap:22px}.board-zone{border:1px solid var(--line);border-radius:11px;padding:15px 16px;background:#fbfcfe}.board-zone-head{display:flex;align-items:baseline;gap:10px;margin-bottom:13px;flex-wrap:wrap}.board-zone-head>b{font-size:16px;letter-spacing:-.2px}.board-zone-head>span{font-size:13px;color:#87909c}.board-zone-head>em{margin-left:auto;font-style:normal;font-size:12.5px;font-weight:650;background:#eef2fd;color:#2456c5;border-radius:20px;padding:3px 10px}.board-zone.zone-mail{border-color:#dbe6f8}.board-zone.zone-remote{border-color:#dcefe6;background:#fbfefc}.board-zone.zone-remote .board-zone-head>em{background:#e8f6f0;color:#0f7a5a}.board-zone .board{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.today-card .today-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:16px}.today-cell{display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:9px;padding:14px 16px;background:#fafbfc}.today-cell>span{font-size:13px;color:#87909c}.today-cell>b{font-size:24px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.5px}.delta{font-style:normal;font-size:12.5px;font-weight:600}.delta.up{color:var(--green)}.delta.down{color:var(--red)}.delta.flat{color:#98a1ad}
.compare-table{margin-top:4px}.compare-table .today-row{background:#f7faff}.compare-table td{font-variant-numeric:tabular-nums}
.alert-list{display:flex;flex-direction:column;gap:10px}.alert-row{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 13px;border:1px solid var(--line);border-radius:8px;background:#fff}.alert-row.over{border-color:#f3c9d0;background:#fffafa}.alert-kind{font-size:12.5px;font-weight:650;background:#fff0df;color:#c47b12;border-radius:6px;padding:4px 8px;text-align:center;white-space:nowrap}.alert-row.over .alert-kind{background:#fdeff1;color:var(--red)}.alert-row>div{display:flex;flex-direction:column;gap:3px;min-width:0}.alert-row b{font-size:14px}.alert-row small{font-size:12.5px;color:#87909c}
.todo-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;padding:11px 13px;border:1px solid var(--line);border-radius:8px;background:#fff;margin-bottom:9px}.todo-row.unassigned{border-color:#f0d08a;background:#fffbf0}.todo-done{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--line);background:#fff;color:#98a1ad;font-size:15px;cursor:pointer;flex-shrink:0}.todo-done:hover{border-color:var(--green);color:var(--green);background:#f2fbf7}.todo-row>div{display:flex;flex-direction:column;gap:3px;min-width:0}.todo-row b{font-size:14px}.todo-row small{font-size:12.5px;color:#87909c}
.perm-box{margin:14px 0;border-top:1px solid var(--line);padding-top:13px}.perm-box>b{display:block;font-size:14px;margin-bottom:10px}.perm-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.perm-check{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;cursor:pointer;font-size:14px;background:#fff}.perm-check:hover{border-color:#b9cff5;background:#f8fbff}.perm-check.on{border-color:var(--blue);background:#eef4ff}.perm-check input{width:auto;min-height:auto;margin:0}.perm-cell{max-width:340px}.perm-cell .mini-tag{margin:2px 3px 2px 0}
.perms-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.perms-legend>div{display:flex;flex-direction:column;gap:3px;font-size:14px}.perms-legend small{color:#98a1ad;font-size:12px}
.row-disabled{opacity:.55}
.logi-mini{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:7px;padding:7px 9px;border-radius:7px;background:#f7f9fc;border:1px solid var(--line);font-size:12.5px}.logi-mini.delivered{background:#f2fbf7;border-color:#cfe9dd}.lm-dir{font-weight:650;color:#5c6573}.logi-mini small{color:#87909c;font-size:12.5px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lm-time{margin-left:auto;color:#98a1ad}
.dupe-warn{border:1px solid #f0d08a;background:#fffbf0;border-radius:9px;padding:12px 14px;margin:4px 0 14px;display:flex;flex-direction:column;gap:8px}.dupe-warn>b{font-size:14.5px;color:#a9700c}.dupe-warn>span{font-size:13.5px;color:#5c6573}.dupe-list{display:flex;flex-wrap:wrap;gap:7px}.dupe-item{border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 10px;font-size:13px;cursor:pointer}.dupe-item:hover{border-color:#b9cff5;color:var(--blue)}
.addr-history-slot:empty{display:none}.addr-history{border:1px solid #dbe6f8;background:#f7faff;border-radius:9px;padding:12px 14px;margin-bottom:13px;display:flex;flex-direction:column;gap:8px}.addr-history>b{font-size:13.5px;color:#2456c5}.addr-item{display:flex;flex-direction:column;gap:3px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px 12px;font-size:13.5px;cursor:pointer}.addr-item:hover{border-color:#b9cff5;background:#f8fbff}.addr-item small{color:#87909c;font-size:12.5px}

/* ===== 1.6.0 待办事项：进来第一眼就能看到（暖色左边框 + 浅底 + 大数字徽标） ===== */
.todo-card{border-left:5px solid var(--warn,#e08a1e);background:linear-gradient(180deg,#fffaf0,#fff 60%)}
.todo-card .card-head h2{display:flex;align-items:center;gap:8px}
.todo-badge{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 8px;border-radius:13px;background:#e08a1e;color:#fff;font-size:15px;font-weight:700;line-height:1}
.todo-row{display:grid;grid-template-columns:30px 1fr auto auto auto;align-items:center;gap:10px;padding:9px 10px;border-bottom:1px solid var(--line,#ececec);grid-auto-flow:row}
.todo-row:last-child{border-bottom:0}
.todo-row.unassigned{background:#fffdf6}
.todo-row.overdue{background:#fff5f4}
.todo-row.daily .todo-tag.daily{background:#e8f1ff;color:#2c6bd6}
.todo-done{width:26px;height:26px;border-radius:50%;border:2px solid #e08a1e;background:#fff;color:#e08a1e;font-size:14px;font-weight:700;cursor:pointer;line-height:1}
.todo-done:hover{background:#e08a1e;color:#fff}
.todo-main{min-width:0}
.todo-main b{display:block;font-size:14.5px}
.todo-main small{display:block;color:var(--muted,#7a7a7a);font-size:12px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.todo-meta{display:flex;gap:6px;align-items:center}
.todo-tag{font-style:normal;font-size:11px;padding:1px 7px;border-radius:9px;background:#f1f1f1;color:#666}
.due-pill.today{background:#e08a1e;color:#fff}

/* ===== 1.6.0 客户未回复挂起：发灰、与正常单分开 ===== */
.hold-tag{font-style:normal;font-size:11px;padding:1px 6px;border-radius:8px;background:#ececec;color:#777;margin-left:6px;vertical-align:middle}
tr.row-held{opacity:.62;background:#fafafa}
tr.row-held:hover{opacity:.85}
.board-card.held{background:#f7f7f7;border-style:dashed}
.board-col.col-hold{background:#fafafa}
.board-col.col-hold .board-col-head b{color:#777}
.zone-hold .board-zone-head{border-left:4px solid #c9c9c9;padding-left:8px;color:#666}
.hold-actions{display:flex;align-items:center;gap:8px;margin-top:6px}
.hold-days{font-size:11px;color:#888}
.hold-release{font-size:11.5px;padding:2px 8px;border-radius:9px;background:#2c6bd6;color:#fff;cursor:pointer}
.hold-release:hover{background:#1f55b0}
.hold-banner{display:flex;flex-direction:column;gap:3px;padding:11px 14px;margin-bottom:12px;border-radius:10px;background:#f4f4f4;border-left:5px solid #b9b9b9}
.hold-banner b{color:#555}
.hold-banner span{color:#777;font-size:12.5px}
.alert-row.held{background:#fafafa;opacity:.85}

/* ===== 1.6.0 报价版本时间线 ===== */
.quote-card .qv-summary{display:flex;flex-wrap:wrap;gap:14px;padding:8px 10px;margin-bottom:10px;background:#f7f9fc;border-radius:9px;font-size:13px}
.qv-row{display:grid;grid-template-columns:42px 1fr auto auto;gap:10px;align-items:center;padding:9px 10px;border-bottom:1px solid var(--line,#ececec)}
.qv-row:last-child{border-bottom:0}
.qv-row.agreed{background:#f4fbf5}
.qv-row.refused{background:#fdf5f4}
.qv-round{font-weight:700;color:#888;font-size:12.5px}
.qv-main b{font-size:14px}
.qv-main small{display:block;color:var(--muted,#7a7a7a);font-size:12px;margin-top:1px}
.qv-main .qv-note{color:#555}
.qv-main .qv-meta{color:#a0a0a0;font-size:11.5px}
.qv-cents{font-weight:700;font-size:15px;white-space:nowrap}
.qv-state{display:flex;flex-direction:column;gap:4px;align-items:flex-end}
.qv-state small{color:#a0a0a0;font-size:11px}

/* ===== 1.6.0 看板收缩 ===== */
.board-zone-head .zone-fold,.board-col-head .col-fold{background:none;border:0;cursor:pointer;font-size:12px;color:#888;padding:0 4px;line-height:1}
.board-zone-head .zone-fold:hover,.board-col-head .col-fold:hover{color:#2c6bd6}
.board-zone.collapsed .board-zone-head{margin-bottom:0}
.board-col.collapsed .board-col-body{display:none}
.board-col.collapsed{padding-bottom:0}
.board-card.slim{padding:7px 9px;min-height:auto}
.board-card.slim .bc-top{margin-bottom:2px}
.bc-slim-row{display:flex;gap:6px;align-items:center;font-size:12px;color:#666;overflow:hidden}
.bc-slim-row i{font-style:normal;color:#333;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bc-slim-row em{font-style:normal;color:#999;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ===== 1.6.0 密度压缩：整体收紧，减少上下滚动 ===== */
.compact-metrics .metric{padding:11px 14px}
.compact-metrics .metric strong{font-size:22px}
.compact-metrics .metric small{font-size:11.5px}
.compact-card .card-body{padding:10px 14px}
.compact-card .alert-row{padding:7px 10px}
.today-card .today-cell{padding:10px 12px}
.today-card .today-cell b{font-size:20px}
.board-card{padding:9px 10px}
.board-col-body{gap:7px}
.board{gap:11px}
.card-head{padding:11px 14px}
.card-body{padding:12px 14px}
.page-heading{margin-bottom:12px}
@media(max-width:1100px){.todo-row{grid-template-columns:28px 1fr auto}}

/* ===== 1.6.0 首页布局：左列（曲线 + 今日待办摘要）自动等高，消除右侧空白 ===== */
.dashboard-workspace{align-items:stretch}
.dashboard-workspace .dash-main{display:flex;flex-direction:column;gap:18px;min-width:0}
.dashboard-workspace .dash-main>.chart-card{flex:1;display:flex;flex-direction:column;min-height:0}
.dashboard-workspace .chart-card .chart-body{flex:1;display:flex;flex-direction:column;min-height:0;padding-bottom:14px}
.dashboard-workspace .chart-card .chart-box{flex:1;min-height:0;display:flex}
/* 曲线随卡片高度拉伸：SVG 用 preserveAspectRatio=none 填满，避免下方留一条空白 */
.dashboard-workspace .trend-chart{width:100%;height:100%;min-height:210px;max-height:none}
.dashboard-workspace .dash-main>.todo-mini-card{flex:0 0 auto}

/* 今日待办摘要：四个小正方形 */
.todo-mini-card .card-head{padding-bottom:8px}
.todo-minis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding-top:0}
.todo-mini{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  aspect-ratio:1/1;min-height:74px;border:1px solid var(--line,#e6e8ec);border-radius:10px;
  background:#fbfcfe;cursor:pointer;padding:6px;transition:border-color .15s,background .15s}
.todo-mini:hover{border-color:#b9cff5;background:#f5f9ff}
.todo-mini span{font-size:12px;color:#78818e;white-space:nowrap}
.todo-mini b{font-size:20px;line-height:1.1;font-variant-numeric:tabular-nums;color:#2c3440}
.todo-mini.zero b{color:#b4bcc6}
.todo-mini.over{border-color:#f0cfc9;background:#fffaf9}
.todo-mini.over b{color:#c0392b}
.todo-mini.mail{border-color:#cddcf5;background:#fafcff}
.todo-mini.mail b{color:#2c6bd6}
@media(max-width:1200px){
  .dashboard-workspace{grid-template-columns:1fr}
  .dashboard-workspace .dash-main{display:contents}
  .dashboard-workspace .trend-chart{min-height:200px}
}
@media(max-width:700px){.todo-minis{grid-template-columns:repeat(2,1fr)}}

/* ===== 1.6.1 看板折叠三角放大：原来太小看不见 ===== */
.board-zone-head .zone-fold,.board-col-head .col-fold{
  display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:26px;min-width:26px;padding:0;margin-right:2px;
  font-size:17px;line-height:1;font-weight:700;color:#6b7480;
  border:1px solid #dfe3ea;border-radius:7px;background:#fff;cursor:pointer;
  transition:background .15s,border-color .15s,color .15s}
.board-zone-head .zone-fold:hover,.board-col-head .col-fold:hover{
  background:#eef4ff;border-color:#9db6ef;color:#1d4ed8}
.board-zone-head .zone-fold:focus-visible,.board-col-head .col-fold:focus-visible{
  outline:2px solid #cbdcff;outline-offset:1px}
.board-col-head{align-items:center}

/* ===== 1.6.1 分页控件 ===== */
.pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  padding:12px 18px;border-top:1px solid var(--line,#ececec);
  font-size:13px;color:#5c6573}
.pager button{min-height:32px;padding:4px 11px;font-size:13px;border-radius:7px}
.pager .page-num{min-width:34px;padding:4px 8px;text-align:center}
.pager button[disabled]{opacity:.45;cursor:not-allowed}
.pager .primary{background:var(--blue,#2464dd);color:#fff;border-color:transparent}

/* ===== 1.6.2 首页右列吃满高度：消掉「状态分布/快捷入口」下面的空白 ===== */
.dashboard-workspace .dash-grid{
  display:flex;flex-direction:column;gap:18px;
  height:100%;min-height:0}
/* 状态分布按内容高度，快捷入口占满剩余空间 */
.dashboard-workspace .dash-grid>.card:first-child{flex:0 0 auto}
.dashboard-workspace .dash-grid>.card:last-child{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}
.dashboard-workspace .dash-grid>.card:last-child .card-body{flex:1;display:flex;flex-direction:column;justify-content:flex-start}
/* 快捷入口按钮在富余空间里均匀铺开，不留空档 */
.dashboard-workspace .quick-links{
  flex:1;align-content:start;grid-auto-rows:minmax(44px,auto)}
/* 状态分布内部也铺开一点，避免下方空太多 */
.dashboard-workspace .status-bars{gap:10px}

/* ===== 1.6.6 待办事项：来源标记、优先级、完成记录 ===== */
/* 管理员下发：金色左边框 + 浅黄底，第一眼就能认出“这是老板派的” */
.todo-row.src-admin{border-left:4px solid #e08a1e;background:#fffaf1}
.todo-row.src-admin .todo-main>b{font-weight:700}
.todo-tag.src-admin{background:#fdeecf;color:#a8690a;font-style:normal}
.todo-tag.src-self{background:#eef2f8;color:#4a5a72;font-style:normal}
.todo-tag.log-count{background:#e8f1ff;color:#2c6bd6}
.nav-dot{width:7px;height:7px;border-radius:50%;background:#e08a1e;display:inline-block;margin-left:6px;vertical-align:middle}

/* 已完成：打勾变实心绿 */
.todo-done.checked{background:#108161;border-color:#108161;color:#fff}
.todo-row.is-done{opacity:.78}

/* 完成情况：谁、何时、备注了什么 */
.todo-done-info{color:#108161 !important}
.todo-logs{margin-top:6px;border-top:1px dashed #e6e8ec;padding-top:6px;display:flex;flex-direction:column;gap:4px}
.todo-log{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:baseline;font-size:12.5px}
.todo-log b{color:#108161}
.todo-log span{color:#3d4653;overflow-wrap:anywhere}
.todo-log small{color:#a0a0a0;white-space:nowrap}
.todo-recent{margin-top:12px;padding-top:10px;border-top:1px solid var(--line,#ececec);display:flex;flex-direction:column;gap:6px}
.todo-recent>b{font-size:13px;color:#5c6573}

/* 专页里的完成情况汇总 */
.todo-log-row{display:grid;grid-template-columns:auto 1fr auto auto;gap:10px;align-items:center;
  padding:9px 10px;border-bottom:1px solid var(--line,#ececec);font-size:13px}
.todo-log-row:last-child{border-bottom:0}
.todo-log-row.src-admin{border-left:3px solid #e08a1e;background:#fffdf8}
.todo-log-row>b{color:#108161;white-space:nowrap}
.todo-log-row>div{min-width:0}
.todo-log-row>div>span{display:block;color:#2c3440}
.todo-log-row>div>small{display:block;color:#7a8391;font-size:12.5px;overflow-wrap:anywhere}
.todo-log-row>small{color:#a0a0a0;white-space:nowrap}

/* 待办行操作区 */
.todo-acts{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:1100px){.todo-log-row{grid-template-columns:auto 1fr auto}.todo-log-row>button{grid-column:1/-1;justify-self:start}}
