:root {
  --brand: #3079fc; --brand-strong: #0065fe; --brand-soft: #eaf2ff;
  --energy: #1dce7c; --energy-soft: #e9fbf3; --warning: #ff9126; --warning-soft: #fff5e9;
  --danger: #e93c3a; --danger-soft: #fff0f0; --info-soft: #eef5ff;
  --canvas: #f5f7fa; --surface: #fff; --subtle: #f8fafc; --selected: #eaf2ff;
  --text: #333; --text-2: #666; --text-3: #999; --disabled: #b8c0cc;
  --divider: rgba(51,52,68,.08); --table-divider: #edf0f4; --border: rgba(51,52,68,.15); --border-strong: #cbd3df;
  --shadow-float: 0 8px 24px rgba(15,23,42,.1);
  --r-control: 4px; --r-card: 6px; --r-panel: 8px;
  --header: 56px; --sidebar: 216px;
  font-family: "PingFang SC", -apple-system, BlinkMacSystemFont, "Microsoft YaHei", sans-serif;
  color: var(--text); background: var(--canvas); font-size: 12px;
}
* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; background: var(--canvas); }
button, input, select, textarea { font: inherit; color: inherit; }
button, a, input, select, textarea { outline: none; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { box-shadow: 0 0 0 3px rgba(48,121,252,.22); }
button { cursor: pointer; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.icon { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; }
.btn { min-height: 32px; border: 1px solid var(--border); background: var(--surface); border-radius: var(--r-control); padding: 0 12px; display:inline-flex; align-items:center; justify-content:center; gap:6px; font-weight:500; }
.btn:hover { border-color: var(--border-strong); background: var(--subtle); }
.btn.primary { background: var(--brand); border-color: var(--brand); color:#fff; }
.btn.primary:hover { background: var(--brand-strong); }
.btn.danger { color: var(--danger); border-color: rgba(233,60,58,.35); }
.dictionary-switch { width:32px; height:18px; padding:2px; border:1px solid var(--border-strong); border-radius:999px; background:var(--subtle); display:inline-flex; align-items:center; cursor:pointer; transition:background .15s,border-color .15s; }
.dictionary-switch span { width:12px; height:12px; border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(15,23,42,.18); transition:transform .15s; }
.dictionary-switch[aria-checked="true"] { background:var(--brand); border-color:var(--brand); }
.dictionary-switch[aria-checked="true"] span { transform:translateX(14px); }
.dictionary-switch:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.dictionary-switch:disabled { opacity:.55; cursor:not-allowed; }
.region-status-switch { vertical-align:middle; }
.region-pending { color:var(--text-3); font-size:12px; }
.region-blocker-list { margin:12px 0 0; padding-left:20px; color:var(--text); line-height:1.9; }
.modal .readonly-field, .modal .readonly-field:focus { background:var(--subtle); border-color:var(--divider); color:var(--text-2); cursor:default; box-shadow:none; }
.modal input.readonly-field::-webkit-inner-spin-button, .modal input.readonly-field::-webkit-outer-spin-button { appearance:none; margin:0; }
.btn.ghost { border-color:transparent; background:transparent; }
.btn.small { min-height: 28px; padding: 0 9px; }
.btn:disabled { cursor:not-allowed; opacity:.48; }
.field { display:flex; flex-direction:column; gap:6px; min-width:0; }
.field label { font-weight:500; color:var(--text-2); }
.required::after { content:" *"; color:var(--danger); }
.input, .select, .textarea { width:100%; min-height:32px; border:1px solid var(--border); border-radius:var(--r-control); background:#fff; padding:6px 10px; }
.textarea { min-height:76px; resize:vertical; }
.input:focus, .select:focus, .textarea:focus { border-color:var(--brand); }
.field-error { color:var(--danger); font-size:11px; }
.help { color:var(--text-3); font-size:11px; line-height:18px; }
.app-shell { min-height:100vh; }
.topbar { height:var(--header); background:#fff; border-bottom:1px solid var(--border); display:flex; align-items:center; position:fixed; inset:0 0 auto 0; z-index:30; }
.brand { width:var(--sidebar); height:100%; display:flex; align-items:center; gap:10px; padding:0 18px; border-right:1px solid var(--border); font-size:14px; font-weight:600; white-space:nowrap; }
.brand-mark { width:26px; height:26px; border-radius:5px; background:var(--brand); color:#fff; display:grid; place-items:center; }
.topbar-main { flex:1; display:flex; justify-content:space-between; align-items:center; padding:0 18px; min-width:0; }
.scope-note { color:var(--text-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.user-menu { display:flex; align-items:center; gap:10px; }
.avatar { width:30px; height:30px; border-radius:50%; background:var(--brand-soft); color:var(--brand-strong); display:grid; place-items:center; font-weight:600; }
.identity { line-height:1.35; }
.identity-line { display:flex; align-items:baseline; gap:8px; white-space:nowrap; }
.identity-separator { color:var(--text-3); }
.identity-role { color:var(--text-2); font-size:11px; font-weight:400; }
.logout-btn { margin-left:6px; color:var(--text-2); }
.logout-btn:hover { color:var(--brand-strong); border-color:var(--brand); background:var(--brand-soft); }
.identity small { color:var(--text-3); display:block; }
.sidebar { position:fixed; top:var(--header); bottom:0; left:0; width:var(--sidebar); background:#fff; border-right:1px solid var(--border); padding:14px 10px; z-index:20; }
.nav-group-title { padding:10px 10px 6px; color:var(--text-3); font-size:10px; }
.nav-item { width:100%; border:0; background:transparent; border-radius:4px; min-height:38px; padding:0 10px; display:flex; align-items:center; gap:10px; color:var(--text-2); text-align:left; margin:2px 0; }
.nav-item:hover { background:var(--subtle); color:var(--text); }
.nav-item.active { background:var(--brand-soft); color:var(--brand-strong); font-weight:600; }
.sidebar .vehicle-source-icon { width:16px; height:16px; fill:currentColor; stroke:none; }
.main { margin-left:var(--sidebar); padding:calc(var(--header) + 22px) 24px 36px; min-height:100vh; }
.page-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:18px; }
.page-head h1 { margin:0; font-size:20px; line-height:28px; font-weight:600; }
.page-head p { margin:4px 0 0; color:var(--text-3); line-height:18px; }
.head-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.calc-center-page-head .head-actions { align-items:center; flex-wrap:nowrap; gap:6px; white-space:nowrap; }
.calc-center-page-head .head-actions > * { align-self:center; margin-top:0; margin-bottom:0; }
.calc-center-page-head .ai-view-toggle .btn.primary { background:var(--brand); border-color:var(--brand); color:#fff; }
.stats-strip { background:#fff; border:0; border-radius:var(--r-panel); margin-bottom:16px; overflow:hidden; }
.vehicle-metrics { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; }
.metric-section { margin-bottom:16px; }
.metric-card { display:grid; grid-template-columns:minmax(0,1fr) 36px; gap:8px 10px; padding:16px; background:var(--surface); border-radius:var(--r-panel); min-width:0; }
.metric-label { color:var(--text-2); font-size:12px; }
.metric-value { color:var(--text); font-size:22px; font-weight:600; line-height:1.35; margin-top:6px; font-variant-numeric:tabular-nums; }
.metric-value .metric-unit { margin-left:4px; color:var(--text-2); font-size:12px; font-weight:400; line-height:1; }
.metric-icon { width:36px; height:36px; border-radius:6px; display:grid; place-items:center; background:var(--brand-soft); color:var(--brand); }
.metric-icon .icon { width:22px; height:22px; }
.metric-icon > svg { width:22px; height:22px; }
.metric-icon .project-metric-icon { fill:currentColor; stroke:none; }
.metric-icon .project-management-icon { width:28px; height:28px; display:block; fill:currentColor; }
.metric-icon .vehicle-source-icon { fill:currentColor; stroke:none; }
.metric-icon .tractor-source-icon { width:22px; height:22px; }
.metric-card .metric-value.is-missing { font-size:16px; line-height:29.7px; font-weight:500; color:var(--text-2); }
.metric-icon.planned { background:var(--warning-soft); color:#d87916; }
.metric-icon.delivered { background:var(--energy-soft); color:#149763; }
.metric-icon.timeout { background:#fff1f1; color:var(--danger); }
.project-timeout-risk-icon { width:18px; height:18px; display:block; fill:currentColor; }
.metric-note { grid-column:1 / -1; font-size:11px; color:#999999; line-height:1.5; overflow-wrap:anywhere; }
.project-timeout-metric { width:100%; border:0; text-align:left; font:inherit; cursor:pointer; }
.project-timeout-metric:hover { background:#f8fbff; }
.project-timeout-metric:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.customer-list-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
.customer-list-metrics .metric-icon.customers-total { background:var(--brand-soft); color:var(--brand); }
.customer-list-metrics .metric-icon.customers-formal { background:var(--energy-soft); color:#149763; }
.customer-list-metrics .metric-icon.customers-potential { background:var(--subtle); color:var(--text-3); }
.inventory-metrics { grid-template-columns:repeat(8,minmax(120px,1fr)); }
.compact-inventory-metrics { grid-template-columns:repeat(4,minmax(150px,1fr)); }
.metric-section-heading { display:flex; align-items:center; gap:8px; margin:0 0 12px 2px; }
.metric-section-heading h2 { margin:0; font-size:16px; line-height:22px; color:var(--text); }
.metric-section-icon { display:grid; place-items:center; width:22px; height:22px; color:var(--text); }
.metric-section-icon svg { width:22px; height:22px; }
.inventory-metric { border:0; box-shadow:none; background:var(--surface); }
.inventory-metric .metric-label { display:flex; align-items:center; gap:6px; white-space:nowrap; }
.inventory-tone-marker { width:4px; height:16px; flex:0 0 4px; border-radius:1px; background:#333; }
.inventory-metric.available .inventory-tone-marker { background:#0f9d58; }
.inventory-metric.rented .inventory-tone-marker { background:#2563eb; }
.inventory-metric.repair .inventory-tone-marker { background:#dc2626; }
.inventory-metric.preparing .inventory-tone-marker { background:#d97706; }
.inventory-metric.rectify .inventory-tone-marker { background:#7c3aed; }
.inventory-metric.reserved .inventory-tone-marker { background:#0891b2; }
.inventory-metric.loaned .inventory-tone-marker { background:#64748b; }
.inventory-metric.unlinked .inventory-tone-marker { background:#d97706; }
.inventory-metric .metric-value { color:var(--text); }
.vehicle-analysis { margin:0 0 16px; border-radius:var(--r-panel); background:var(--surface); overflow:hidden; }
.vehicle-analysis > summary { min-height:46px; padding:0 16px; display:flex; align-items:center; gap:10px; cursor:pointer; list-style:none; color:var(--text); font-weight:600; }
.vehicle-analysis > summary::-webkit-details-marker { display:none; }
.vehicle-analysis > summary small { margin-left:auto; color:var(--text-3); font-size:11px; font-weight:400; }
.vehicle-analysis-caret { color:var(--text-3); transition:transform .18s ease; }
.vehicle-analysis[open] .vehicle-analysis-caret { transform:rotate(180deg); }
.vehicle-analysis-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding:0 12px 12px; }
.vehicle-analysis-card { padding:14px 16px; background:var(--subtle); }
.vehicle-analysis-modules { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin:0 0 16px; }
.vehicle-analysis-modules .vehicle-analysis-card { background:var(--surface); }
.vehicle-analysis-toggle-row { grid-column:1 / -1; display:flex; justify-content:flex-end; margin-bottom:-4px; }
.vehicle-analysis-toggle-row .btn { min-height:32px; padding:0 12px; color:var(--text-2); background:#fff; border-color:var(--border); }
.vehicle-analysis-toggle-row .btn:hover { color:var(--brand-strong); border-color:var(--brand); background:var(--brand-soft); }
.vehicle-analysis-cards { grid-column:1 / -1; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.vehicle-analysis-cards.is-collapsed { display:none; }
.vehicle-analysis-card-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.vehicle-analysis-card-head h2 { margin:0; font-size:13px; font-weight:600; }
.vehicle-analysis-card-head span { color:var(--text-3); font-size:10px; }
.vehicle-donut-card { display:flex; flex-direction:column; }
.vehicle-donut-layout { display:grid; grid-template-columns:190px minmax(0,1fr); align-items:center; flex:1; gap:22px; min-height:190px; padding:0 8px 4px; }
.vehicle-donut-canvas { display:block; width:176px; height:176px; justify-self:center; }
.tractor-model-donut .vehicle-donut-layout { grid-template-columns:164px minmax(0,1fr); gap:12px; padding-left:0; }
.tractor-model-donut .vehicle-donut-canvas { width:154px !important; height:154px !important; }
.vehicle-donut-legend { display:grid; gap:14px; min-width:0; }
.vehicle-donut-legend-item { display:grid; grid-template-columns:8px minmax(0,1fr) auto 34px; align-items:center; gap:7px; min-width:0; font-size:12px; }
.vehicle-donut-swatch { width:8px; height:8px; border-radius:50%; background:var(--donut-color); }
.vehicle-donut-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.vehicle-donut-legend-item strong { font-size:12px; font-weight:600; font-variant-numeric:tabular-nums; }
.vehicle-donut-legend-item small { color:var(--text-3); font-size:12px; text-align:right; font-variant-numeric:tabular-nums; }
.vehicle-ranking-head { display:grid; grid-template-columns:42px minmax(0,1fr) 54px; gap:10px; align-items:center; margin:0 0 7px; color:var(--text-3); font-size:10px; }
.vehicle-ranking-head span:last-child { text-align:right; }
.vehicle-ranking-list { display:grid; gap:6px; min-height:180px; margin:0; padding:0; list-style:none; }
.vehicle-ranking-list li { display:grid; grid-template-columns:42px minmax(0,1fr) 54px; gap:10px; align-items:center; min-width:0; min-height:30px; }
.vehicle-ranking-number { display:grid; place-items:center; width:26px; height:26px; border-radius:4px; background:#f1f2f4; color:var(--text-2); font-size:13px; font-variant-numeric:tabular-nums; }
.vehicle-ranking-number.is-top { background:#eaf2ff; color:var(--brand); }
.vehicle-ranking-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }
.vehicle-ranking-list strong { text-align:right; font-size:12px; font-weight:500; font-variant-numeric:tabular-nums; }
.vehicle-ranking-card.is-dense .vehicle-ranking-list { gap:3px; min-height:224px; }
.vehicle-ranking-card.is-dense .vehicle-ranking-list li { min-height:25px; }
.vehicle-ranking-card.is-dense .vehicle-ranking-number { width:22px; height:22px; font-size:11px; }
.vehicle-ranking-card.is-dense .vehicle-ranking-name { font-size:12px; }
.vehicle-ranking-card.is-dense .vehicle-ranking-list strong { font-size:12px; }
.vehicle-ranking-card.is-scrollable .vehicle-ranking-list { overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
.vehicle-ranking-card.is-scrollable .vehicle-ranking-list:focus-visible { outline:2px solid color-mix(in srgb,var(--brand) 35%,transparent); outline-offset:2px; border-radius:4px; }
.tractor-analysis > summary { min-height:40px; }
.tractor-analysis .vehicle-analysis-card { min-height:0; padding:12px 14px; }
.tractor-analysis .vehicle-analysis-card-head { margin-bottom:8px; }
.tractor-analysis .vehicle-donut-layout { grid-template-columns:150px minmax(210px,240px); justify-content:center; min-height:126px; gap:16px; padding:0 10px 0 18px; }
.tractor-analysis .vehicle-donut-canvas { width:120px !important; height:120px !important; }
.tractor-analysis .vehicle-donut-legend { gap:8px; }
.tractor-analysis .vehicle-ranking-head { margin-bottom:4px; }
.tractor-analysis .vehicle-ranking-card.is-dense .vehicle-ranking-list { min-height:0; height:130px; gap:2px; padding-right:5px; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
.tractor-analysis .vehicle-ranking-card.is-dense .vehicle-ranking-list li { min-height:24px; }
.trailer-analysis .vehicle-analysis-card { padding:12px 14px; }
.trailer-analysis .vehicle-analysis-card-head { margin-bottom:8px; }
.trailer-analysis .vehicle-donut-layout { grid-template-columns:150px minmax(210px,240px); justify-content:center; min-height:126px; gap:16px; padding:0 10px 0 18px; }
.trailer-analysis .vehicle-donut-canvas { width:120px !important; height:120px !important; }
.trailer-analysis .vehicle-donut-legend { gap:8px; }
.trailer-analysis .vehicle-ranking-card.is-dense .vehicle-ranking-list { min-height:0; height:130px; gap:2px; padding-right:5px; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
.trailer-analysis .vehicle-ranking-card.is-dense .vehicle-ranking-list li { min-height:24px; }
.trailer-analysis .vehicle-ranking-card.is-dense .vehicle-ranking-number { width:22px; height:22px; font-size:11px; }
.trailer-analysis .vehicle-ranking-card.is-dense .vehicle-ranking-name { font-size:12px; }
.trailer-analysis .vehicle-ranking-card.is-dense .vehicle-ranking-list strong { font-size:12px; }
.vehicle-distribution-list { display:grid; gap:9px; }
.vehicle-distribution-row { display:grid; grid-template-columns:minmax(130px,1.2fr) minmax(120px,1fr) 36px; gap:10px; align-items:center; min-width:0; }
.vehicle-distribution-label { display:flex; align-items:center; justify-content:space-between; gap:8px; min-width:0; font-size:11px; }
.vehicle-distribution-label span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.vehicle-distribution-label strong { flex:0 0 auto; font-size:11px; font-weight:600; font-variant-numeric:tabular-nums; }
.vehicle-distribution-track { height:8px; overflow:hidden; border-radius:999px; background:#e8edf4; }
.vehicle-distribution-track span { display:block; height:100%; border-radius:inherit; background:var(--brand); }
.vehicle-distribution-track span.location { background:#2563eb; }
.vehicle-distribution-track span.model { background:#0f9d58; }
.vehicle-distribution-track span.type { background:#7c3aed; }
.vehicle-distribution-track span.brand { background:#0891b2; }
.vehicle-distribution-row small { color:var(--text-3); font-size:10px; text-align:right; font-variant-numeric:tabular-nums; }
@media (max-width:700px) {
  .customer-list-metrics { grid-template-columns:repeat(3,minmax(180px,1fr)); overflow:auto; }
  .inventory-metrics { grid-template-columns:repeat(8,minmax(150px,1fr)); overflow:auto; }
  .compact-inventory-metrics { grid-template-columns:repeat(4,minmax(150px,1fr)); }
  .vehicle-analysis-grid { grid-template-columns:1fr; }
  .vehicle-analysis-modules { grid-template-columns:1fr; }
  .vehicle-analysis-cards { grid-template-columns:1fr; }
  .vehicle-donut-layout { grid-template-columns:160px minmax(0,1fr); gap:16px; }
  .vehicle-donut-canvas { width:148px !important; height:148px !important; }
  .tractor-analysis .vehicle-donut-layout { grid-template-columns:142px minmax(0,1fr); }
  .tractor-analysis .vehicle-donut-canvas { width:132px !important; height:132px !important; }
  .trailer-analysis .vehicle-donut-layout { grid-template-columns:128px minmax(0,1fr); min-height:128px; }
  .trailer-analysis .vehicle-donut-canvas { width:116px !important; height:116px !important; }
  .vehicle-distribution-row { grid-template-columns:minmax(120px,1fr) minmax(100px,1fr) 34px; }
}
@media (max-width:460px) {
  .vehicle-donut-layout { grid-template-columns:1fr; }
  .vehicle-donut-legend { width:100%; }
}
.project-vehicle-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0; margin:0; padding:8px 0; border:1px solid var(--divider); border-radius:var(--r-panel); }
.project-vehicle-metric { display:flex; align-items:center; gap:12px; min-width:0; }
.project-vehicle-metric .metric-label { font-size:12px; }
.project-vehicle-metric .metric-value { font-size:14px; margin-top:4px; }
.project-object-header .object-header-top { display:grid; grid-template-columns:minmax(0,36%) minmax(0,1fr); gap:12px 22px; align-items:center; }
.project-object-header .object-header-top > div:first-child { grid-row:1 / span 2; }
.project-object-header .head-actions { justify-self:end; }
.project-vehicle-metric .metric-icon { width:28px; height:28px; flex-shrink:0; }
.project-vehicle-metric .metric-icon .icon { width:18px; height:18px; }
.project-vehicle-metric .metric-icon .tractor-source-icon { width:18px; height:18px; }
.project-vehicle-metric { gap:8px; padding:0 10px; }
.project-vehicle-metric + .project-vehicle-metric { border-left:1px solid var(--divider); }
@media (max-width:1000px) {
  .project-object-header .object-header-top { grid-template-columns:minmax(0,1fr) auto; }
  .project-object-header .object-header-top > div:first-child { grid-row:auto; }
  .project-object-header .project-vehicle-stats { grid-column:1 / -1; margin-top:8px; }
}
@media (max-width:640px) {
  .project-vehicle-stats { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0; padding:0; }
  .project-vehicle-metric { padding:10px; }
  .project-vehicle-metric:nth-child(3) { border-left:0; }
  .project-vehicle-metric:nth-child(n+3) { border-top:1px solid var(--divider); }
  .project-vehicle-metric { gap:8px; }
}
.charts-heading { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; color:var(--text-2); }
.demo-state-tool { position:fixed; right:16px; bottom:16px; z-index:35; width:154px; padding:8px; border:1px solid var(--divider); border-radius:8px; background:#f3f7ff; }
.demo-drag-handle { display:block; width:100%; border:0; background:transparent; color:var(--text-2); font-size:11px; text-align:left; padding:2px 0 7px; cursor:grab; touch-action:none; }
.demo-drag-handle.dragging { cursor:grabbing; }
.demo-state-tool .select { width:100%; min-width:0; font-size:11px; }
@media (max-width:640px) { .demo-state-tool { bottom:72px; right:12px; } }
.project-charts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:stretch; gap:12px; margin-bottom:16px; }
.project-charts[hidden] { display:none; }
.chart-card { padding:14px 16px; min-width:0; display:grid; grid-template-rows:28px 36px auto; align-content:start; }
.chart-card > .help { margin:0; line-height:16px; }
.chart-card h2 { font-size:14px; margin:0 0 6px; }
.stage-distribution { display:grid; grid-template-columns:minmax(110px,1fr) minmax(0,1fr); align-items:center; gap:10px; min-height:174px; }
.stage-donut { position:relative; width:100%; max-width:174px; margin:auto; }
.stage-donut svg { width:100%; display:block; }
.donut-total { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; pointer-events:none; }
.donut-total strong { font-size:26px; line-height:1.2; font-weight:600; }
.donut-total span { font-size:11px; color:var(--text-2); }
.stage-legend { display:flex; flex-direction:column; gap:0; min-width:0; }
.vehicle-ranking { min-height:174px; margin-top:0; }
.ranking-head, .ranking-row { display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:10px; align-items:center; }
.ranking-head { font-size:10px; color:var(--text-2); margin-bottom:6px; }
.ranking-row { min-height:32px; padding:3px 0; }
.rank-number { width:22px; height:22px; display:grid; place-items:center; border-radius:4px; background:var(--subtle); }
.rank-number.top-rank { color:var(--brand); background:var(--brand-soft); }
.rank-project { font-size:12px; line-height:1.4; overflow-wrap:anywhere; }
.rank-project small { display:block; font-size:10px; color:var(--text-2); }
.ranking-row > strong { font-size:12px; font-weight:500; font-variant-numeric:tabular-nums; }
.stage-legend-item { display:grid; grid-template-columns:7px minmax(0,1fr) auto; align-items:center; gap:7px; border:0; border-radius:4px; padding:4px; background:transparent; text-align:left; font-size:12px; min-height:28px; }
.stage-legend-item:hover, .stage-legend-item[aria-pressed="true"] { background:var(--brand-soft); color:var(--brand-strong); }
.stage-legend-item strong { font-weight:500; font-variant-numeric:tabular-nums; }
.legend-dot { width:7px; height:7px; border-radius:50%; }
.conversion-funnel { margin-top:0; min-height:174px; }
.funnel-heading { display:flex; justify-content:space-between; margin-left:calc(44% + 8px); font-size:10px; color:var(--text-2); margin-bottom:6px; }
.funnel-row { display:grid; grid-template-columns:44% minmax(0,1fr); gap:8px; min-height:22px; margin-bottom:3px; }
.funnel-segment { width:100%; height:22px; display:block; }
.ranking-title { display:flex; align-items:start; justify-content:space-between; gap:6px; }
.ranking-switch { display:inline-flex; border:1px solid var(--border); border-radius:4px; overflow:hidden; }
.ranking-kind { border:0; background:var(--surface); color:var(--text-2); padding:5px 7px; min-height:28px; font-size:11px; }
.ranking-kind + .ranking-kind { border-left:1px solid var(--border); }
.ranking-kind[aria-pressed="true"] { background:var(--brand-soft); color:var(--brand-strong); }
.ranking-row { min-height:34px; }
.funnel-values { display:grid; grid-template-columns:minmax(0,1fr) auto 38px; align-items:center; min-width:0; gap:6px; font-size:12px; font-variant-numeric:tabular-nums; }
.funnel-stage { font-size:12px; color:var(--text-2); overflow-wrap:anywhere; }
.funnel-values > div { display:flex; justify-content:space-between; gap:6px; font-variant-numeric:tabular-nums; }
.funnel-values strong { font-weight:600; }
.funnel-rate { text-align:right; }
.chart-item { margin:12px 0; }
.chart-label { display:flex; justify-content:space-between; gap:8px; font-size:11px; margin-bottom:5px; }
.chart-label span { min-width:0; overflow-wrap:anywhere; }
.chart-label strong { flex-shrink:0; font-weight:500; }
.chart-track { height:8px; border-radius:3px; background:var(--subtle); overflow:hidden; }
.chart-fill { height:100%; background:var(--brand); border-radius:3px; }
.funnel-track .chart-fill { margin:auto; border-radius:0; }
.chart-stage { display:block; width:100%; border:0; padding:0; background:transparent; text-align:left; }
.chart-stage[aria-pressed="true"] { color:var(--brand-strong); }
.delivery-panel { margin-top:16px; }
@media (max-width:900px) {
  .project-charts { overflow-x:auto; grid-template-columns:repeat(3,minmax(280px,1fr)); }
  .vehicle-metrics { grid-template-columns:repeat(6,minmax(150px,1fr)); overflow:auto; }
}
.stats-primary { display:grid; grid-template-columns:150px repeat(6, minmax(105px,1fr)); border-bottom:1px solid var(--divider); }
.stat { padding:14px 16px; min-width:0; border:0; background:#fff; text-align:left; }
button.stat { border-top:0; border-bottom:0; border-left:0; cursor:pointer; }
.stat:last-child { border-right:0; }
.stat:hover, .stat.selected { background:var(--brand-soft); }
.stat-label { color:var(--text-3); font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.stat-value { font-size:22px; line-height:30px; font-weight:600; font-variant-numeric:tabular-nums; margin-top:3px; }
.stat-value small { font-size:11px; font-weight:400; color:var(--text-3); margin-left:3px; }
.conversion-row { display:flex; align-items:center; gap:0; padding:10px 16px; overflow:auto; }
.conversion-title { color:var(--text-2); font-weight:500; margin-right:18px; white-space:nowrap; }
.conversion-item { display:flex; align-items:center; white-space:nowrap; color:var(--text-2); }
.conversion-item strong { color:var(--text); margin-left:5px; }
.conversion-item:not(:last-child)::after { content:"→"; color:var(--text-3); margin:0 14px; }
.status-summary { display:flex; gap:8px; flex-wrap:wrap; margin:0 0 16px; align-items:center; }
.status-summary .label { color:var(--text-3); margin-right:4px; }
.status-chip { border:0; background:#fff; border-radius:999px; min-height:28px; padding:0 10px; display:flex; align-items:center; gap:6px; white-space:nowrap; flex:0 0 auto; }
.status-chip:hover, .status-chip.selected { background:var(--brand-soft); color:var(--brand-strong); }
.dot { width:6px; height:6px; border-radius:50%; background:var(--text-3); }
.dot.info { background:var(--brand); }.dot.success{background:var(--energy)}.dot.warning{background:var(--warning)}.dot.danger{background:var(--danger)}
.panel { background:#fff; border:0; border-radius:var(--r-panel); }
.toolbar { padding:12px; display:flex; align-items:center; gap:8px; border-bottom:1px solid var(--divider); flex-wrap:wrap; }
.toolbar .search { min-width:230px; flex:1; max-width:340px; }
.active-filters { padding:8px 12px; background:var(--subtle); border-bottom:1px solid var(--divider); display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.filter-tag { border:1px solid var(--border); background:#fff; border-radius:4px; padding:4px 7px; display:inline-flex; gap:6px; align-items:center; }
.table-wrap { overflow:auto; }
.vehicle-plan-panel { overflow:hidden; }
.vehicle-plan-toolbar-left { display:flex; align-items:center; gap:16px; min-width:0; }
.vehicle-plan-table-actions { min-height:54px; padding:10px 12px; display:flex; align-items:center; justify-content:space-between; gap:16px; border-bottom:1px solid var(--divider); background:#fff; }
.vehicle-plan-action-buttons { display:flex; align-items:center; gap:8px; }
.vehicle-plan-toolbar { min-height:54px; padding:10px 12px; display:flex; align-items:center; justify-content:space-between; gap:12px; border-bottom:1px solid var(--divider); }
.vehicle-plan-toolbar > div { display:flex; align-items:center; gap:10px; }
.vehicle-plan-summary { min-width:0; }
.vehicle-plan-summary strong { color:#666; font-weight:500; }
.vehicle-plan-filter-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; }
.vehicle-plan-toolbar strong { font-weight:500; color:var(--text); }
.vehicle-plan-toolbar span { color:var(--text-3); }
.vehicle-plan-search { width:min(280px,40vw); }
.vehicle-plan-query-bar { padding:12px; display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; border-bottom:1px solid var(--divider); background:#fff; }
.vehicle-query-field { min-width:180px; display:grid; gap:6px; color:var(--text-2); font-size:11px; }
.vehicle-query-field > span { min-height:18px; display:flex; align-items:center; }
.vehicle-query-field .input,.vehicle-query-field .select { width:100%; }
.vehicle-project-query { min-width:260px; flex:1; max-width:360px; }
.vehicle-status-query { min-width:150px; }
.vehicle-status-query .inventory-status-filter,.vehicle-status-query .inventory-status-filter summary { width:100%; }
.vehicle-query-reset { min-height:36px; }
.vehicle-plan-table { min-width:max-content; }
.vehicle-plan-table th, .vehicle-plan-table td { max-width:240px; color:#333; }
.vehicle-plan-table th:nth-child(2), .vehicle-plan-table td:nth-child(2) { width:170px; min-width:170px; }
.vehicle-plan-table th:nth-child(3), .vehicle-plan-table td:nth-child(3) { width:150px; min-width:150px; max-width:180px; }
.vehicle-plan-table th:nth-child(4), .vehicle-plan-table td:nth-child(4) { width:105px; min-width:105px; }
.vehicle-plan-table th:nth-child(5), .vehicle-plan-table td:nth-child(5) { width:150px; min-width:150px; }
.vehicle-plan-table th:nth-child(6), .vehicle-plan-table td:nth-child(6) { width:140px; min-width:140px; }
.vehicle-plan-table th:nth-child(7), .vehicle-plan-table td:nth-child(7) { width:110px; min-width:110px; }
.vehicle-plan-table th:nth-child(n+8), .vehicle-plan-table td:nth-child(n+8) { width:125px; min-width:125px; }
.vehicle-plan-table th:first-child, .vehicle-plan-table td:first-child { position:static; left:auto; z-index:auto; background:inherit; }
.vehicle-plan-table th:nth-child(2), .vehicle-plan-table td:nth-child(2) { position:static; left:auto; z-index:auto; background:inherit; box-shadow:none; }
.vehicle-plan-table thead th:first-child, .vehicle-plan-table thead th:nth-child(2) { z-index:auto; }
.vehicle-plan-table .plan-project-name { min-width:220px; max-width:300px; overflow:hidden; text-overflow:ellipsis; }
.plan-select-cell { width:42px; min-width:42px; text-align:center; }
.plan-select-cell input, .table-wrap input[type="checkbox"] { width:15px; height:15px; border:1px solid #EEF0F3; background:#fff; accent-color:var(--brand); }
.plan-select-cell input:not(:checked), .table-wrap input[type="checkbox"]:not(:checked) { border-color:#EEF0F3; }
.plan-select-cell input:checked, .table-wrap input[type="checkbox"]:checked { border-color:#DFE1E6; }
.plan-linked-project { width:150px; min-width:150px; max-width:150px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.plan-project-link { display:block; width:100%; min-width:0; padding:0; border:0; background:transparent; color:var(--brand); text-align:left; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.plan-project-link:hover { text-decoration:underline; }
.plan-unlinked { color:var(--text-3); }
.plan-updated-at { min-width:154px; color:var(--text-3); }
.batch-link-summary { margin-bottom:16px; padding:12px; border-radius:var(--r-card); background:var(--subtle); }
.batch-link-summary p { margin:5px 0 0; color:var(--text-2); line-height:20px; }
.inventory-import-note { margin-bottom:14px; padding:12px; border-radius:var(--r-card); background:var(--brand-soft); color:var(--text); }
.inventory-import-note p { margin:5px 0 0; color:var(--text-2); line-height:20px; }
.inventory-import-zone { min-height:112px; padding:18px; border:1px dashed var(--border-strong); border-radius:var(--r-card); background:var(--subtle); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; cursor:pointer; text-align:center; }
.inventory-import-zone:hover { border-color:var(--brand); background:var(--brand-soft); }
.inventory-import-zone span { color:var(--text-3); }
.inventory-status-filter { position:relative; flex:0 0 auto; }
.inventory-status-filter summary { min-width:138px; min-height:36px; padding:0 10px 0 12px; display:flex; align-items:center; justify-content:space-between; gap:12px; border:1px solid var(--border); border-radius:var(--r-control); background:#fff; color:var(--text-2); cursor:pointer; list-style:none; }
.inventory-status-filter summary::-webkit-details-marker { display:none; }
.inventory-status-filter summary:hover { border-color:var(--brand); }
.inventory-status-filter summary:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.inventory-status-options { position:absolute; top:calc(100% + 6px); right:0; z-index:45; width:210px; padding:6px; border:1px solid var(--border); border-radius:var(--r-panel); background:#fff; box-shadow:var(--shadow-float); }
.inventory-status-options label { min-height:38px; padding:0 8px; display:grid; grid-template-columns:18px 1fr auto; align-items:center; gap:8px; border-radius:4px; cursor:pointer; }
.inventory-status-options label:hover { background:var(--subtle); }
.inventory-status-options input { width:15px; height:15px; accent-color:var(--brand); }
.inventory-status-options span { color:var(--text); }
.inventory-status-options strong { color:var(--text-3); font-weight:400; }
.inventory-status-tag { min-height:22px; padding:0 8px; display:inline-flex; align-items:center; border-radius:4px; font-size:11px; line-height:22px; white-space:nowrap; }
.inventory-status-tag.status-available { color:#087344; background:#e8f7f0; }
.inventory-status-tag.status-rented { color:#1765cc; background:#eaf2ff; }
.inventory-status-tag.status-repair { color:#c7382f; background:#fff0ef; }
.inventory-status-tag.status-preparing { color:#a05a00; background:#fff4df; }
.inventory-status-tag.status-rectify { color:#7646b8; background:#f4edff; }
.inventory-status-tag.status-reserved { color:#087c8c; background:#e7f7f8; }
.inventory-status-tag.status-loaned { color:#596579; background:#eef1f5; }
.inventory-status-tag.status-unknown { color:var(--text-2); background:var(--subtle); }
@media (max-width:640px) {
  .vehicle-plan-toolbar { align-items:stretch; flex-direction:column; }
  .vehicle-plan-toolbar-left { align-items:flex-start; flex-direction:column; gap:8px; }
  .vehicle-plan-filter-actions { align-items:stretch; flex-direction:column; }
  .vehicle-plan-query-bar { align-items:stretch; flex-direction:column; }
  .vehicle-query-field,.vehicle-project-query,.vehicle-status-query { width:100%; max-width:none; }
  .inventory-status-filter summary { width:100%; }
  .inventory-status-options { left:0; right:auto; width:min(260px,calc(100vw - 48px)); }
  .vehicle-plan-search { width:100%; }
}
table { width:100%; border-collapse:collapse; table-layout:auto; }
th { position:sticky; top:0; background:var(--surface); color:var(--text); font-weight:500; text-align:left; height:40px; padding:0 12px; border-bottom:1px solid var(--table-divider); white-space:nowrap; }
td { height:48px; padding:7px 12px; border-bottom:1px solid var(--table-divider); color:var(--text-2); background:var(--surface); white-space:nowrap; }
tr:hover td { background:#f8fbff; }
.object-cell { min-width:210px; white-space:normal; }
.object-name { color:var(--text); font-weight:500; cursor:pointer; }
.object-name:hover { color:var(--brand); }
.object-meta { color:var(--text-3); margin-top:2px; font-size:11px; }
.table-actions { display:inline-flex; align-items:center; gap:4px; }
.project-list-panel { padding:0 12px; }
.project-list-panel .toolbar { padding:12px 0; border-bottom:0; }
.project-list-panel th { background:var(--surface); color:var(--text); font-weight:500; height:40px; }
.project-list-panel td { color:var(--text); background:var(--surface); border-bottom:1px solid var(--table-divider); }
.project-list-panel th:first-child, .project-list-panel td:first-child { position:static; left:auto; z-index:auto; background:inherit; box-shadow:none; }
.project-list-panel thead th:first-child { z-index:auto; }
.customer-project-count { padding:4px 8px; border:0; border-radius:var(--r-control); background:transparent; color:var(--text); }
.customer-project-count:hover { color:var(--brand); background:var(--brand-soft); }
.customer-project-popup { position:fixed; inset:auto; margin:0; width:300px; max-width:calc(100vw - 24px); max-height:300px; overflow:auto; padding:12px; border:1px solid var(--divider); border-radius:var(--r-panel); box-shadow:var(--shadow-float); background:var(--surface); color:var(--text); text-align:left; white-space:normal; }
.customer-project-popup strong { display:block; padding:0 8px 8px; font-weight:500; }
.customer-project-popup a { display:block; padding:8px; border-radius:var(--r-control); color:var(--text); text-decoration:none; line-height:1.5; }
.customer-project-popup a:hover { background:var(--brand-soft); color:var(--brand); }
.customer-project-popup small { display:block; color:var(--text-3); }
.project-list-panel tr:hover td { background:#f8fbff; }
.project-list-panel tr:hover td:first-child { background:#f8fbff; }
.customer-list-panel th:first-child, .customer-list-panel td:first-child { position:static; left:auto; z-index:auto; background:inherit; box-shadow:none; }
.customer-list-panel thead th:first-child { z-index:auto; }
.customer-list-panel tr:hover td:first-child { background:#f8fbff; }
.project-list-panel .table-wrap.has-horizontal-scroll th:first-child, .project-list-panel .table-wrap.has-horizontal-scroll td:first-child,
.customer-list-panel .table-wrap.has-horizontal-scroll th:first-child, .customer-list-panel .table-wrap.has-horizontal-scroll td:first-child { position:sticky; left:0; z-index:2; background:var(--surface); box-shadow:4px 0 6px rgba(31,41,55,.06); }
.project-list-panel .table-wrap.has-horizontal-scroll thead th:first-child, .customer-list-panel .table-wrap.has-horizontal-scroll thead th:first-child { z-index:4; }
.vehicle-plan-table-wrap.has-horizontal-scroll .vehicle-plan-table th:first-child, .vehicle-plan-table-wrap.has-horizontal-scroll .vehicle-plan-table td:first-child { position:sticky; left:0; z-index:3; background:var(--surface); }
.vehicle-plan-table-wrap.has-horizontal-scroll .vehicle-plan-table th:nth-child(2), .vehicle-plan-table-wrap.has-horizontal-scroll .vehicle-plan-table td:nth-child(2) { position:sticky; left:42px; z-index:2; background:var(--surface); box-shadow:4px 0 6px rgba(31,41,55,.06); }
.vehicle-plan-table-wrap.has-horizontal-scroll .vehicle-plan-table thead th:first-child, .vehicle-plan-table-wrap.has-horizontal-scroll .vehicle-plan-table thead th:nth-child(2) { z-index:5; }
.project-list-panel .tag { border:0; border-radius:4px; min-height:22px; padding:0 7px; font-weight:400; }
.project-list-panel .tag.info { background:var(--info-soft); }
.project-list-panel .tag.success { background:var(--energy-soft); }
.project-list-panel .tag.warning { background:var(--warning-soft); }
.project-list-panel .tag.danger { background:var(--danger-soft); }
.project-list-panel th:first-child, .project-list-panel td:first-child { width:25%; min-width:260px; }
.project-list-panel th:nth-child(5), .project-list-panel td:nth-child(5) { width:14%; min-width:145px; }
.object-name-row { min-width:0; display:inline-flex; max-width:100%; align-items:center; gap:6px; }
.object-name-row .object-name { min-width:0; flex:0 1 auto; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.project-timeout-inline-tag { flex:0 0 auto; white-space:nowrap; }
.project-list-panel .pagination { padding:12px 0; }
.project-list-panel .page-btn.active { color:var(--brand); background:var(--surface); border-color:var(--brand); }
@media (max-width:640px) {
  .project-list-panel { padding:0 10px; }
  .project-list-panel .table-wrap.responsive td { border:0; }
}
.btn.text-action { color:var(--brand); }
.btn.text-action:hover { color:var(--brand-strong); background:var(--brand-soft); }
.num { text-align:right; font-variant-numeric:tabular-nums; }
.tag { display:inline-flex; align-items:center; gap:5px; min-height:24px; border-radius:4px; padding:0 8px; font-size:11px; border:1px solid var(--border); color:var(--text-2); background:#fff; }
.tag.info { color:#135fbd; border-color:#c5daf7; background:var(--info-soft); }
.tag.success { color:#087344; border-color:#b9ead4; background:var(--energy-soft); }
.tag.warning { color:#9a4b05; border-color:#f6d3aa; background:var(--warning-soft); }
.tag.danger { color:#b52826; border-color:#f1c2c1; background:var(--danger-soft); }
table .tag { border:0; border-radius:4px; min-height:22px; padding:0 7px; font-weight:400; }
table .btn.ghost:not(.danger) { color:var(--brand); }
table .btn.ghost:not(.danger):hover { color:var(--brand-strong); background:var(--brand-soft); }
.stage-text { display:flex; align-items:center; gap:7px; }
.stage-text::before { content:""; width:7px; height:7px; flex-shrink:0; background:var(--stage-color); border-radius:50%; }
.stage-warning-normal { color:var(--brand); background:var(--brand-soft); }
.stage-warning-paused { color:var(--text-2); background:var(--subtle); }
.stage-summary-row { display:flex; justify-content:space-between; align-items:center; gap:16px; min-width:0; }
.stage-summary-row h2 { flex-shrink:0; }
.stage-summary-meta { display:flex; align-items:center; justify-content:flex-end; gap:8px; min-width:0; color:var(--text-3); font-size:11px; line-height:18px; }
.stage-summary-meta strong { color:var(--text-2); font-size:11px; font-weight:500; white-space:nowrap; }
.stage-summary-meta .tag { flex-shrink:0; }
@media (max-width:900px) {
  .stage-summary-row { align-items:flex-start; flex-wrap:wrap; }
  .stage-summary-meta { margin-left:auto; }
}
.pagination { min-height:48px; padding:8px 12px; display:flex; align-items:center; justify-content:space-between; color:var(--text-3); }
.pages { display:flex; gap:4px; }
.page-btn { width:28px; height:28px; border:1px solid var(--border); background:#fff; border-radius:4px; }
.page-btn.active { background:var(--surface); color:var(--brand); border-color:var(--brand); }
.form-page { max-width:1100px; margin:0 auto; }
.project-edit-page { max-width:none; padding-bottom:70px; }
.project-edit-page > .page-head { background:var(--surface); padding:8px 16px; min-height:44px; align-items:center; margin-bottom:16px; }
.project-edit-page > .page-head > div:first-child { display:flex; align-items:center; flex-wrap:wrap; gap:4px 20px; }
.project-edit-page > .page-head h1 { display:flex; align-items:center; gap:16px; font-size:14px; line-height:24px; }
.project-edit-page > .page-head .btn { color:var(--brand); padding:0; min-height:24px; font-size:12px; }
.project-edit-page > .page-head p { margin:0; font-size:11px; line-height:18px; }
.project-edit-page #project-form, .customer-edit-page #customer-form { background:var(--surface); padding:24px max(24px,calc((100% - 920px) / 2)) 30px; }
.customer-edit-page .form-grid { align-items:start; gap:20px 16px; }
.customer-edit-page .form-grid > .field > label { min-height:26px; display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
.customer-edit-page .form-grid .input, .customer-edit-page .form-grid .select { min-height:32px; }
.customer-edit-page .vehicle-editor td { color:var(--text); }
.customer-section-actions { display:flex; justify-content:flex-end; margin:0 0 12px; }
.project-edit-page .form-section { padding:0 0 24px; margin:0 0 8px; border:0; }
.project-edit-page .section-title { position:relative; min-height:36px; background:#f3f7ff; padding:10px 12px; margin-bottom:18px; gap:12px; }
.project-edit-page .section-title::before { content:""; position:absolute; left:0; top:50%; transform:translateY(-50%); width:3px; height:14px; background:var(--brand); }
.project-edit-page .section-title h2 { font-size:12px; }
.project-edit-page .section-title > div { display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; min-width:0; }
.project-edit-page .section-title h2, .project-edit-page .section-title p { line-height:18px; }
.project-upload-row > .btn { flex-shrink:0; }
.project-edit-page .section-title p { margin:0; font-size:11px; color:var(--text-2); }
.project-edit-page .dimension-grid { border:0; background:var(--subtle); padding:16px; }
.project-edit-page .vehicle-editor { border:0; background:var(--subtle); }
.project-edit-page .vehicle-editor .table-wrap { background:var(--surface); overflow:auto; }
.project-edit-page .sticky-actions { position:fixed; bottom:0; left:calc(var(--sidebar) + 24px); right:24px; justify-content:center; background:var(--surface); border-top:1px solid var(--divider); padding:12px 18px; z-index:25; }
/* 创建与编辑共用同一套表单骨架；新建态沿用已确认的编辑页布局。 */
.form-page:has(#project-form), .form-page:has(#customer-form) { max-width:none; padding-bottom:70px; }
.form-page:has(#project-form) > .page-head, .form-page:has(#customer-form) > .page-head { background:var(--surface); padding:8px 16px; min-height:44px; align-items:center; margin-bottom:16px; }
.form-page:has(#project-form) > .page-head > div:first-child, .form-page:has(#customer-form) > .page-head > div:first-child { display:flex; align-items:center; flex-wrap:wrap; gap:4px 20px; }
.form-page:has(#project-form) > .page-head h1, .form-page:has(#customer-form) > .page-head h1 { display:flex; align-items:center; gap:16px; font-size:14px; line-height:24px; }
.form-page:has(#project-form) > .page-head .btn, .form-page:has(#customer-form) > .page-head .btn { color:var(--brand); padding:0; min-height:24px; font-size:12px; }
.form-page:has(#project-form) > .page-head p, .form-page:has(#customer-form) > .page-head p { margin:0; font-size:11px; line-height:18px; }
.form-page:has(#project-form) #project-form, .form-page:has(#customer-form) #customer-form { background:var(--surface); padding:24px max(24px,calc((100% - 920px) / 2)) 30px; }
.form-page:has(#customer-form) .form-grid { align-items:start; gap:20px 16px; }
.form-page:has(#customer-form) .form-grid > .field > label { min-height:26px; display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
.form-page:has(#customer-form) .form-grid .input, .form-page:has(#customer-form) .form-grid .select { min-height:32px; }
.form-page:has(#project-form) .form-section, .form-page:has(#customer-form) .form-section { padding:0 0 24px; margin:0 0 8px; border:0; }
.form-page:has(#project-form) .section-title, .form-page:has(#customer-form) .section-title { position:relative; min-height:36px; background:#f3f7ff; padding:10px 12px; margin-bottom:18px; gap:12px; }
.form-page:has(#project-form) .section-title::before, .form-page:has(#customer-form) .section-title::before { content:""; position:absolute; left:0; top:50%; transform:translateY(-50%); width:3px; height:14px; background:var(--brand); }
.form-page:has(#project-form) .section-title h2, .form-page:has(#customer-form) .section-title h2 { font-size:12px; line-height:18px; }
.form-page:has(#project-form) .section-title > div, .form-page:has(#customer-form) .section-title > div { display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; min-width:0; }
.form-page:has(#project-form) .section-title p, .form-page:has(#customer-form) .section-title p { margin:0; font-size:11px; line-height:18px; color:var(--text-2); }
.form-page:has(#project-form) .dimension-grid { border:0; background:var(--subtle); padding:16px; }
.form-page:has(#project-form) .vehicle-editor, .form-page:has(#customer-form) .vehicle-editor { border:0; background:var(--subtle); }
.form-page:has(#project-form) .vehicle-editor .table-wrap { background:var(--surface); overflow:auto; }
.form-page:has(#project-form) .sticky-actions, .form-page:has(#customer-form) .sticky-actions { position:fixed; bottom:0; left:calc(var(--sidebar) + 24px); right:24px; justify-content:center; background:var(--surface); border-top:1px solid var(--divider); padding:12px 18px; z-index:25; }
@media (max-width:640px) {
  .form-page:has(#project-form) #project-form, .form-page:has(#customer-form) #customer-form { padding:16px 12px 24px; }
  .form-page:has(#project-form) > .page-head, .form-page:has(#customer-form) > .page-head { padding:10px 12px; }
  .form-page:has(#project-form) .sticky-actions, .form-page:has(#customer-form) .sticky-actions { left:0; right:0; bottom:60px; padding:10px 12px; }
  .project-edit-page #project-form, .customer-edit-page #customer-form { padding:16px 12px 24px; }
  .project-edit-page > .page-head { padding:10px 12px; }
  .project-edit-page .sticky-actions { left:0; right:0; bottom:60px; padding:10px 12px; }
}
.form-section { padding:20px 0; border-top:1px solid var(--border); }
.form-section:first-of-type { border-top:0; padding-top:0; }
.section-title { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
.section-title h2 { margin:0; font-size:15px; font-weight:600; }
.section-title p { margin:3px 0 0; color:var(--text-3); }
.form-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.organization-project-role-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.organization-management-owner { display:grid; grid-template-columns:72px minmax(0,1fr); align-items:baseline; gap:8px; margin-top:8px; color:var(--text-3); font-size:12px; line-height:18px; }
.organization-management-owner strong { min-width:0; color:var(--text-2); font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.org-region-checks { display:flex; flex-wrap:wrap; gap:10px 18px; min-height:34px; align-items:center; }
.org-region-checks label { display:inline-flex; align-items:center; gap:6px; }
.field.span-2 { grid-column:span 2; }.field.span-3{grid-column:span 3;}
.dimension-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; padding:14px; background:var(--subtle); border-left:3px solid var(--brand); }
.stage-reason-field { grid-column:1 / -1; }
.dimension-card h3 { margin:0 0 4px; font-size:12px; }.dimension-card p{margin:0 0 8px;color:var(--text-3);font-size:11px;line-height:17px}
.vehicle-editor { border:1px solid var(--border); border-radius:6px; overflow:hidden; }
.vehicle-toolbar { padding:10px 12px; background:var(--subtle); display:flex; justify-content:space-between; align-items:center; gap:12px; }
.vehicle-summary { display:flex; gap:16px; }.vehicle-summary strong{font-size:16px;margin-left:4px}
.sticky-actions { position:sticky; bottom:0; background:rgba(255,255,255,.96); border-top:1px solid var(--border); padding:12px 0; display:flex; justify-content:flex-end; gap:8px; z-index:10; }
.object-header { padding:20px 22px; background:var(--surface); border:0; border-radius:var(--r-panel); }
.object-header-top { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.object-header h1 { margin:0; font-size:26px; line-height:1.35; font-weight:600; color:var(--text); overflow-wrap:anywhere; }.object-id{color:var(--text-3);margin-top:6px}
.object-header-top > div:first-child { min-width:0; }
.project-object-header { border-radius:var(--r-panel); padding:16px 20px 20px; }
.project-object-header .object-header-top { align-items:start; gap:10px 22px; }
.project-object-header .object-header-top > div:first-child > .btn { color:var(--brand); padding:0; min-height:24px; font-size:12px; }
.project-object-header .object-header-top > div:first-child > .btn { gap:4px; }
.customer-identity { display:inline-flex; align-items:center; gap:6px; }
.customer-identity-icon { width:14px; height:14px; flex-shrink:0; }
.customer-address { display:inline-flex; align-items:center; gap:6px; min-width:0; max-width:100%; margin-left:12px; color:var(--text-3); font-size:12px; line-height:20px; vertical-align:middle; }
.customer-address > span { overflow-wrap:anywhere; }
.customer-address-icon { width:14px; height:14px; flex-shrink:0; }
.customer-address .address-copy { width:22px; height:22px; }
.project-object-header h1 { font-size:22px; line-height:1.4; }
.project-object-header .object-id { font-size:12px; margin-top:6px; }
.project-object-header .facts { margin-top:18px; gap:14px 24px; }
.project-object-header .facts { grid-template-columns:repeat(5,minmax(0,1fr)); }
.project-object-header .facts > div { flex-direction:column; align-items:flex-start; gap:6px; }
.project-vehicle-summary .metric-value.is-missing { font-size:12px; font-weight:400; color:var(--text-3); }
@media (max-width:1100px) {
  .project-object-header .facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .project-object-header .facts > div:last-child { grid-column:auto; }
}
.project-object-header .facts > div { display:flex; flex-direction:column; flex-wrap:nowrap; align-items:flex-start; gap:6px; min-width:0; text-align:left; }
.project-object-header .fact-label { font-size:12px; color:var(--text-2); }
.project-object-header .fact-label::after { content:"："; }
.project-object-header .fact-value { margin:0; font-size:12px; font-weight:400; display:flex; align-items:center; flex-wrap:wrap; gap:4px; }
@media (max-width:640px) {
  .project-object-header { padding:14px; }
  .project-object-header h1 { font-size:20px; }
  .project-object-header .facts { grid-template-columns:1fr; gap:10px; }
}
@media (max-width:640px) {
  .object-header { padding:16px; }
  .object-header h1 { font-size:22px; }
}
.facts { display:grid; grid-template-columns:2fr 1.2fr 1fr 1.2fr; gap:22px; margin-top:16px; }
.fact-label { color:var(--text-3); font-size:11px; }.fact-value{margin-top:4px;font-weight:500}
.tabs { height:44px; display:flex; align-items:flex-end; gap:24px; border-bottom:1px solid var(--border); margin-bottom:18px; }
.project-detail-content { background:var(--surface); border:0; border-radius:var(--r-panel); margin-top:16px; padding:0 16px 20px; min-width:0; }
.project-detail-content > .tabs { margin:0; min-height:46px; height:auto; gap:24px; flex-wrap:wrap; overflow:visible; border-bottom:1px solid var(--divider); }
.project-detail-content > .tabs .tab { flex-shrink:0; height:46px; padding:12px 0; font-size:12px; font-weight:400; }
.project-detail-content > .tabs .tab.active { font-weight:600; }
.project-detail-content > .tabs .tab.active::after { height:3px; }
.project-tab-content { padding-top:18px; }
.project-tab-content .panel { background:transparent; border-radius:0; box-shadow:none; }
.project-tab-content .detail-panel { padding:0; }
.customer-tab-content > .detail-panel { margin-top:0; padding-top:0; border:0; }
.customer-tab-panel[hidden] { display:none; }
.customer-tab-content .desc-list { grid-template-columns:100px minmax(0,1fr); gap:14px 16px; }
.customer-tab-content .desc-list dt { color:var(--text-2); }
.customer-tab-content .desc-list dd { overflow-wrap:anywhere; line-height:1.6; }
.customer-tab-content .tag { border:0; border-radius:var(--r-control); font-weight:400; }
.customer-project-metrics-module { margin-top:16px; padding:10px 16px 12px; }
.customer-project-metrics-heading { display:flex; align-items:center; gap:12px; min-height:24px; margin-bottom:6px; }
.customer-project-metrics-heading h2 { margin:0; padding-left:0; border-left:0; font-size:12px; line-height:16px; }
.customer-project-metrics-heading p { margin:0; color:var(--text-3); font-size:11px; }
.customer-project-metrics { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:12px; }
.customer-project-metrics-module .metric-card { grid-template-columns:minmax(0,1fr) 30px; gap:2px 8px; min-height:72px; padding:8px 12px; border:0; border-radius:0; }
.customer-project-metrics-module .metric-card + .metric-card { border-left:1px solid var(--divider); }
.customer-project-metrics-module .metric-value { margin-top:2px; font-size:18px; line-height:24px; }
.customer-project-metrics-module .metric-value .metric-unit { margin-left:3px; font-size:10px; font-weight:400; color:var(--text-2); }
.customer-project-metrics-module .metric-value.is-missing { font-size:14px; line-height:24px; }
.customer-project-metrics-module .metric-icon { width:30px; height:30px; }
.customer-project-metrics-module .metric-icon .icon, .customer-project-metrics-module .metric-icon .tractor-source-icon { width:18px; height:18px; }
.customer-project-metrics-module .metric-icon .project-management-icon { width:22px; height:22px; }
.customer-project-metrics-module .metric-icon.projects { background:var(--brand-soft); color:var(--brand); }
.customer-project-metrics-module .metric-note { color:#999999; font-size:10px; line-height:14px; }
@media (max-width:1100px) {
  .customer-project-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .customer-project-metrics-module .metric-card:nth-child(4) { border-left:0; }
}
@media (max-width:700px) {
  .customer-project-metrics { grid-template-columns:repeat(2,minmax(150px,1fr)); overflow:auto; }
  .customer-project-metrics-heading { align-items:flex-start; flex-direction:column; gap:4px; }
  .customer-project-metrics-module .metric-card { border-left:0!important; border-top:1px solid var(--divider); }
  .customer-project-metrics-module .metric-card:nth-child(-n+2) { border-top:0; }
}
.customer-object-header.project-object-header .facts { grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px 24px; }
.customer-object-header .facts .customer-brief-fact { display:grid; grid-template-columns:72px minmax(0,1fr); grid-column:1 / -1; align-items:start; width:100%; }
.customer-object-header .customer-brief-fact .fact-value { min-width:0; line-height:20px; }
.customer-brief-value { display:block!important; }
.customer-brief-copy { white-space:pre-wrap; overflow-wrap:anywhere; }
.customer-brief-copy.is-collapsed { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:4; overflow:hidden; }
.customer-brief-toggle { min-height:24px; margin-top:2px; padding:0; border:0; background:transparent; color:var(--brand); font-size:11px; }
.customer-brief-toggle:hover { color:var(--brand-strong); }
.customer-brief-toggle[hidden] { display:none; }
.customer-brief-field { grid-column:1 / -1; }
.customer-type-tag { min-height:22px; padding:0 8px; border:0; border-radius:4px; font-weight:400; }
.customer-type-tag.formal { background:var(--energy-soft); color:#087a4e; }
.customer-type-tag.potential { background:var(--subtle); color:var(--text-2); }
@media (max-width:900px) {
  .customer-object-header.project-object-header .facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:600px) {
  .customer-object-header.project-object-header .facts { grid-template-columns:minmax(0,1fr); gap:12px; }
  .customer-object-header .facts .customer-brief-fact { grid-template-columns:72px minmax(0,1fr); }
}
@media (max-width:640px) {
  .customer-tab-content .desc-list { grid-template-columns:80px minmax(0,1fr); gap:12px; }
}
.project-tab-content .detail-panel table tbody td { color:var(--text); }
.project-tab-content .detail-grid { gap:20px; }
.project-tab-content .detail-grid > aside.panel { padding-left:20px; border-left:1px solid var(--divider); }
.project-tab-content .section-title h2 { font-size:12px; border-left:3px solid var(--brand); padding-left:8px; line-height:16px; }
.project-tab-content .section-title > div > p { padding-left:11px; }
.project-tab-content .delivery-panel { margin-top:24px; padding-top:18px; border-top:1px solid var(--divider); }
@media (max-width:640px) {
  .project-detail-content { padding:0 12px 16px; }
  .project-detail-content > .tabs { gap:20px; }
  .project-tab-content .detail-grid > aside.panel { padding:16px 0 0; border-left:0; border-top:1px solid var(--divider); }
}
.tab { height:44px; border:0; background:transparent; padding:0 2px; color:var(--text-2); position:relative; }
.tab.active { color:var(--brand-strong); font-weight:600; }.tab.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--brand)}
.detail-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(260px,1fr); gap:16px; }
.detail-panel { padding:18px; }
.detail-grid > aside.panel { border:0; border-left:1px solid var(--border); border-radius:0; background:transparent; }
.roles-layout { grid-template-columns: minmax(220px, .72fr) minmax(0, 2.28fr); align-items:start; gap:20px; }
.roles-layout > .role-list-panel { background:#fff; border:1px solid var(--border); border-radius:10px; padding:18px 14px; }
.roles-layout > .role-list-panel .section-title { padding:0 8px 10px; border-bottom:1px solid var(--divider); }
.roles-layout > .role-list-panel .nav-item { width:100%; justify-content:flex-start; margin:3px 0; }
.roles-layout > .role-permission-panel { background:#fff; border:1px solid var(--border); border-radius:10px; padding:20px; }
.role-permission-panel .section-title { align-items:flex-start; }
.role-impact-note { display:block; width:max-content; margin-top:10px; }
.region-hover { position:relative; cursor:help; border-bottom:1px dotted var(--text-3); }
.region-hover::after { content:attr(data-tooltip); position:absolute; z-index:20; left:50%; bottom:calc(100% + 8px); transform:translateX(-50%); min-width:150px; max-width:260px; padding:8px 10px; border:1px solid var(--border); border-radius:6px; background:#fff; box-shadow:0 8px 20px rgba(15,23,42,.12); color:var(--text); font-size:12px; line-height:18px; text-align:left; white-space:normal; opacity:0; pointer-events:none; transition:opacity .15s ease; }
.region-hover::before { content:""; position:absolute; z-index:21; left:50%; bottom:calc(100% + 2px); transform:translateX(-50%); border:5px solid transparent; border-top-color:var(--border); opacity:0; pointer-events:none; }
.region-hover:hover::after, .region-hover:hover::before, .region-hover:focus-visible::after, .region-hover:focus-visible::before { opacity:1; }
.roles-card { display:grid; grid-template-columns:220px minmax(0,1fr); gap:0; background:#fff; border:0; border-radius:10px; overflow:hidden; }
.roles-card .role-list-panel { padding:18px 14px; border-right:0; background:#fff; }
.roles-card .role-list-panel .section-title { padding:0 8px 10px; border-bottom:0; }
.roles-card .role-list-panel .nav-item { width:100%; justify-content:flex-start; margin:3px 0; }
.roles-card .role-permission-panel { min-width:0; padding:20px 24px 18px; background:#fff; }
.roles-card .role-permission-panel .section-title { align-items:flex-start; }
.role-save-row { display:flex; justify-content:flex-end; padding-top:18px; margin-top:6px; border-top:1px solid var(--divider); }
.stage-panel { padding:18px; margin:18px 0 0; }
.project-sales-stage { padding:12px 16px; margin-top:16px; }
.project-sales-stage .section-title { margin-bottom:8px; }
.project-sales-stage .section-title > .btn { flex-shrink:0; min-height:26px; padding:3px 9px; font-size:11px; }
.project-sales-stage .section-title > div { display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; }
.project-sales-stage .section-title h2 { font-size:12px; line-height:18px; }
.project-sales-stage .section-title p { margin:0; font-size:11px; line-height:18px; }
.project-sales-stage .stage-flow { margin-top:8px; }
.project-sales-stage .stage-step { font-size:11px; line-height:18px; }
.project-sales-stage .stage-step::before { top:5px; }
.project-sales-stage .stage-node { box-sizing:border-box; width:12px; height:12px; margin-bottom:4px; }
.project-sales-stage .stage-step.current .stage-node { border-width:3px; background:var(--brand-soft); }
.project-sales-stage .stage-step.done::before, .project-sales-stage .stage-step.current::before { background:var(--brand); }
.project-sales-stage .stage-step.done .stage-node { background:var(--brand); border-color:var(--brand); }
.project-sales-stage .stage-step.done .stage-node::after { content:none; }
#advance-stage.btn, [data-edit-demand].btn, [data-edit-delivery].btn, [data-model-delivery].btn { min-height:32px; padding:5px 12px; border:1px solid var(--border); border-radius:var(--r-control); background:var(--surface); color:var(--text); font-size:12px; line-height:20px; font-weight:500; }
#advance-stage.btn:hover, [data-edit-demand].btn:hover, [data-edit-delivery].btn:hover, [data-model-delivery].btn:hover { border-color:var(--brand); color:var(--brand); background:var(--brand-soft); }
.project-summary-row { display:grid; grid-template-columns:minmax(0,32%) minmax(0,1fr); align-items:stretch; gap:16px; margin-top:16px; }
.project-vehicle-summary { padding:12px 16px; display:grid; grid-template-rows:36px 1fr; }
.project-vehicle-summary h2 { margin:0; align-self:center; font-size:12px; line-height:18px; font-weight:600; }
.project-vehicle-summary .project-vehicle-stats { grid-template-columns:repeat(4,minmax(0,1fr)); padding:0; border:0; border-radius:0; }
.project-vehicle-summary .project-vehicle-metric { padding:8px 14px; display:grid; grid-template-columns:minmax(0,1fr) 24px; align-items:center; gap:6px; }
.project-vehicle-summary .project-vehicle-metric > div:last-child { display:contents; }
.project-vehicle-summary .project-vehicle-metric .metric-icon { grid-column:2; grid-row:2; width:24px; height:24px; }
.project-vehicle-summary .project-vehicle-metric .metric-label { grid-column:1 / -1; grid-row:1; line-height:16px; white-space:nowrap; }
.project-vehicle-summary .project-vehicle-metric .metric-value { grid-column:1; grid-row:2; white-space:nowrap; }
.project-vehicle-summary .project-vehicle-metric .metric-unit { margin-left:3px; color:var(--text-2); font-size:10px; font-weight:400; }
.project-vehicle-summary .project-vehicle-metric:nth-child(3) { border-left:1px solid var(--divider); }
.project-vehicle-summary .project-vehicle-metric:nth-child(n+3) { border-top:0; }
.project-summary-row .project-sales-stage { margin:0; min-width:0; display:grid; grid-template-rows:36px 1fr; }
.project-summary-row .project-sales-stage .section-title { margin:0; align-self:center; gap:12px; }
.project-summary-row .project-sales-stage .stage-flow { margin:0; align-self:center; }
.project-vehicle-summary .project-vehicle-stats { align-self:center; }
.project-summary-row .project-sales-stage .stage-step { min-width:0; padding:0 3px; }
.project-object-header .object-header-top { grid-template-columns:minmax(0,1fr) auto; }
.project-object-header .object-header-top > div:first-child { display:contents; }
.project-object-header .object-header-top > div:first-child > .btn { grid-column:1 / -1; grid-row:1; justify-self:start; }
.project-object-header .object-header-top h1 { grid-column:1; grid-row:2; margin:0!important; }
.project-object-header .object-header-top .object-id { grid-column:1; grid-row:3; margin-top:0; }
.project-object-header .object-header-top .head-actions { grid-column:2; grid-row:2; align-self:center; }
@media (max-width:1000px) {
  .project-summary-row { grid-template-columns:1fr; }
  .project-vehicle-summary .project-vehicle-stats { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .project-vehicle-summary .project-vehicle-metric:nth-child(3) { border-left:1px solid var(--divider); }
  .project-vehicle-summary .project-vehicle-metric:nth-child(n+3) { border-top:0; }
}
@media (max-width:640px) {
  .project-vehicle-summary .project-vehicle-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .project-vehicle-summary .project-vehicle-metric:nth-child(3) { border-left:0; }
  .project-vehicle-summary .project-vehicle-metric:nth-child(n+3) { border-top:1px solid var(--divider); }
}
.stage-flow { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); margin-top:18px; }
.stage-step { position:relative; text-align:center; color:var(--text-3); min-width:90px; }
.stage-step > div:last-child { white-space:nowrap; }
.stage-step::before { content:""; position:absolute; top:5px; left:0; right:0; height:2px; background:#dfe5ed; }
.stage-step:first-child::before{left:50%}.stage-step:last-child::before{right:50%}
.stage-node { box-sizing:border-box;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid #d1d8e2;margin:0 auto 8px;position:relative;z-index:1; }
.stage-step.done .stage-node{background:var(--energy);border-color:var(--energy)}.stage-step.done .stage-node::after{content:"✓";color:#fff;position:absolute;inset:0;display:grid;place-items:center;font-size:10px}
.stage-step.current .stage-node{border:3px solid var(--brand);}.stage-step.current{color:var(--brand-strong);font-weight:600}.stage-step.done::before,.stage-step.current::before{background:var(--energy)}
.desc-list { display:grid; grid-template-columns:120px 1fr; gap:12px 16px; margin:0; }.desc-list dt{color:var(--text-3)}.desc-list dd{margin:0;color:var(--text)}
.customer-contact-toolbar { min-height:32px; margin-bottom:10px; display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--text-3); font-size:12px; }
.customer-contact-toolbar [data-detail-contact-add] { border-color:transparent; background:transparent; color:var(--brand); }
.customer-contact-toolbar [data-detail-contact-add]:hover { border-color:transparent; background:var(--brand-soft); color:var(--brand-strong); }
.customer-contact-toolbar [data-detail-contact-add]:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.customer-contact-header-action { margin-left:auto; border-color:transparent!important; background:transparent!important; color:var(--brand)!important; }
.customer-contact-header-action:hover { border-color:transparent!important; background:var(--brand-soft)!important; color:var(--brand-strong)!important; }
.customer-contact-list { display:grid; gap:10px; }
.customer-contact-inline-form { margin-bottom:12px; padding:12px; border:1px solid var(--brand); border-radius:var(--r-panel); background:var(--brand-soft); display:grid; gap:10px; }
.customer-contact-inline-form[hidden] { display:none; }
.customer-contact-primary-check { display:flex; align-items:center; gap:6px; font-size:12px; }
.customer-contact-inline-actions { display:flex; justify-content:flex-end; gap:8px; }
.customer-contact-card { box-sizing:border-box; min-height:104px; padding:12px; border:1px solid var(--divider); border-radius:var(--r-panel); background:var(--surface); }
.customer-contact-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.customer-contact-head-action { width:96px; min-height:24px; flex:0 0 96px; display:flex; align-items:center; justify-content:flex-end; }
.customer-set-primary { color:#666666; }
.customer-set-primary:hover,.customer-set-primary:focus-visible { color:#666666; }
.customer-contact-card dl { margin:10px 0 0; display:grid; gap:7px; }
.customer-contact-card dl > div { display:grid; grid-template-columns:64px minmax(0,1fr); gap:8px; font-size:12px; }
.customer-contact-card dt { color:var(--text-3); }
.customer-contact-card dd { min-width:0; margin:0; color:var(--text); overflow-wrap:anywhere; }
.customer-contact-actions { margin-top:8px; display:flex; justify-content:flex-end; gap:4px; }
.customer-actual-controller-module { margin:0 0 18px; padding:0 0 18px; border-bottom:1px solid var(--divider); }
.customer-actual-controller-card { min-height:76px; padding:10px 12px; display:flex; flex-direction:column; justify-content:center; }
.customer-business-title { align-items:flex-start; }
.customer-business-refresh { display:flex; align-items:center; justify-content:flex-end; gap:10px; color:var(--text-3); font-size:11px; white-space:nowrap; }
.customer-business-refresh .btn { min-height:28px; color:var(--brand); }
.customer-business-refresh .btn:hover { background:var(--brand-soft); color:var(--brand-strong); }
.customer-business-query { display:flex; align-items:center; gap:8px; }
.customer-data-status { margin-bottom:18px; padding:12px 14px; display:flex; align-items:center; justify-content:space-between; gap:18px; border:1px solid #dbe8ff; border-radius:var(--r-panel); background:#f7faff; }
.customer-data-status > div { min-width:0; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.customer-data-status strong { color:var(--text); font-size:12px; }
.customer-data-status small { color:var(--text-3); font-size:11px; }
.customer-data-cost { justify-content:flex-end; text-align:right; }
.data-source-badge { display:inline-flex; align-items:center; min-height:22px; padding:0 8px; border-radius:999px; font-size:10px; font-weight:600; white-space:nowrap; }
.data-source-badge.external { color:#1b5fc7; background:#eaf2ff; }
.data-source-badge.paid { color:#a64b00; background:#fff2e5; }
.data-source-badge.manual { color:#087344; background:#e8f8f1; }
.customer-due-section { margin-top:18px; }
.customer-due-section + .customer-due-section { padding-top:18px; border-top:1px solid var(--divider); }
.customer-due-section-head { margin-bottom:12px; display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.customer-due-section-head h3 { margin:0 0 4px; color:var(--text); font-size:14px; }
.customer-due-section-head p { margin:0; color:var(--text-3); font-size:11px; line-height:1.5; }
.customer-business-core-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.customer-business-card { min-width:0; padding:12px; border:0; border-radius:var(--r-panel); background:var(--subtle); }
.customer-business-card.wide { grid-column:1 / -1; }
.customer-business-card span { display:block; margin-bottom:6px; color:var(--text-3); font-size:11px; }
.customer-business-card strong { display:block; color:var(--text); font-size:12px; font-weight:600; line-height:1.6; overflow-wrap:anywhere; }
.customer-business-more { margin-top:12px; border:1px solid var(--divider); border-radius:var(--r-panel); overflow:hidden; }
.customer-business-more summary { padding:10px 12px; color:var(--brand); font-size:12px; font-weight:600; cursor:pointer; user-select:none; }
.customer-business-more[open] summary { border-bottom:1px solid var(--divider); background:var(--subtle); }
.customer-business-more .customer-business-desc { padding:12px; }
.customer-business-desc { grid-template-columns:92px minmax(0,1fr); }
.form-subsection-title { grid-column:1 / -1; margin-top:8px; padding:8px 0; border-bottom:1px solid var(--divider); color:var(--text); font-size:13px; font-weight:600; }
.customer-name-query-row { display:flex; align-items:stretch; gap:8px; }
.customer-name-query-row .input { min-width:0; flex:1; }
.customer-business-query-button { flex:0 0 auto; width:auto; min-width:0; padding:0 10px; color:var(--brand); border-color:var(--brand); background:var(--surface); white-space:nowrap; }
.customer-business-query-button:hover { color:#fff; background:var(--brand); }
.customer-query-risk-result { grid-column:1 / -1; }
.customer-query-risk-result[hidden] { display:none; }
.customer-query-risk-meta { margin-bottom:10px; color:var(--text-3); font-size:11px; text-align:right; }
.customer-query-risk-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; }
.customer-query-risk-grid article,.customer-query-preview-grid article { min-width:0; padding:12px; border-radius:var(--r-panel); background:var(--subtle); }
.customer-query-risk-grid span,.customer-query-preview-grid span { display:block; margin-bottom:6px; color:var(--text-3); font-size:11px; }
.customer-query-risk-grid strong,.customer-query-preview-grid strong { display:block; color:var(--text); font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.modal.customer-business-query-modal { width:760px; }
.customer-query-result-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:18px; color:var(--text-3); font-size:11px; }
.customer-query-result h3 { margin:18px 0 10px; font-size:13px; }
.customer-query-result h3:first-of-type { margin-top:0; }
.customer-query-preview-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.customer-query-preview-grid article.wide { grid-column:1 / -1; }
@media (max-width:700px) {
  .customer-name-query-row { align-items:stretch; flex-direction:column; }
  .customer-business-query-button { width:100%; justify-content:center; }
  .customer-query-preview-grid,.customer-query-risk-grid { grid-template-columns:1fr 1fr; }
}
.customer-equity-grid { display:grid; grid-template-columns:1.15fr .8fr 1.2fr; gap:10px; }
.customer-equity-card { min-width:0; padding:12px; border:0; border-radius:var(--r-panel); background:var(--subtle); }
.customer-equity-card h4,.customer-risk-events h4 { margin:0 0 10px; color:var(--text-2); font-size:12px; }
.customer-equity-row { min-height:34px; display:flex; align-items:center; justify-content:space-between; gap:12px; border-top:1px solid var(--divider); font-size:11px; }
.customer-equity-row:first-of-type { border-top:0; }
.customer-equity-row span { min-width:0; color:var(--text); overflow-wrap:anywhere; }
.customer-equity-row span small { display:block; margin-top:2px; color:var(--text-3); }
.customer-equity-row strong { color:var(--brand-strong); }
.customer-controller { min-height:68px; display:flex; flex-direction:column; justify-content:center; }
.customer-controller strong { color:var(--text); font-size:14px; }
.customer-controller small { margin-top:5px; color:var(--text-3); font-size:10px; }
.customer-risk-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.customer-risk-stat { min-width:0; padding:12px; border:0; border-radius:var(--r-panel); background:var(--subtle); }
.customer-risk-stat:last-child { grid-column:1 / -1; }
.customer-risk-stat span { display:block; color:var(--text-3); font-size:11px; }
.customer-risk-stat strong { display:block; margin-top:6px; color:var(--text); font-size:13px; }
.customer-risk-stat.has-record strong { color:#ad4e00; }
.customer-risk-events { margin-top:10px; display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.customer-risk-events > article { min-width:0; padding:12px; border:0; border-radius:var(--r-panel); background:var(--subtle); }
.customer-risk-event { min-height:38px; display:flex; align-items:center; gap:8px; border-top:1px solid var(--divider); font-size:11px; }
.customer-risk-event:first-of-type { border-top:0; }
.customer-risk-event strong { min-width:0; flex:1; color:var(--text); font-weight:500; overflow-wrap:anywhere; }
.customer-risk-event em { color:var(--text-3); font-style:normal; white-space:nowrap; }
.customer-manual-section { padding:14px; border:1px solid #d9eee5!important; border-radius:var(--r-panel); background:#fbfefc; }
.customer-risk-block { margin-top:22px; padding-top:18px; border-top:1px solid var(--divider); }
.customer-risk-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.customer-risk-item { min-width:0; padding:12px; border:1px solid var(--divider); border-radius:var(--r-panel); background:var(--subtle); }
.customer-risk-item h3,.customer-risk-item h4 { margin:0 0 6px; font-size:12px; color:var(--text-2); }
.customer-risk-item p { margin:0; color:var(--text); font-size:12px; line-height:1.6; overflow-wrap:anywhere; }
.query-cost-note { margin-bottom:12px; padding:12px; border:1px solid #dbe8ff; border-radius:var(--r-panel); background:#f7faff; }
.query-cost-note strong { font-size:13px; }
.query-cost-note p { margin:4px 0 0; color:var(--text-3); font-size:11px; line-height:1.6; }
.query-plan-list { display:grid; gap:8px; }
.query-plan { position:relative; display:flex; gap:10px; padding:12px; border:1px solid var(--divider); border-radius:var(--r-panel); cursor:pointer; }
.query-plan:has(input:checked) { border-color:var(--brand); background:var(--brand-soft); }
.query-plan input { margin-top:3px; }
.query-plan span { min-width:0; display:grid; gap:4px; }
.query-plan strong { display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--text); font-size:12px; }
.query-plan strong em { color:var(--brand-strong); font-style:normal; white-space:nowrap; }
.query-plan small { color:var(--text-3); font-size:10px; line-height:1.5; }
.query-trigger-tip { margin-top:12px; padding:10px 12px; display:grid; gap:4px; border-radius:var(--r-panel); background:var(--subtle); }
.query-trigger-tip strong { font-size:11px; }
.query-trigger-tip span { color:var(--text-3); font-size:10px; line-height:1.5; }
@media (max-width:700px) {
  .customer-business-core-grid { grid-template-columns:1fr; }
  .customer-business-card.wide { grid-column:auto; }
  .customer-risk-grid { grid-template-columns:1fr; }
  .customer-business-title { align-items:flex-start; flex-direction:column; }
  .customer-data-status { align-items:flex-start; flex-direction:column; }
  .customer-data-cost { text-align:left; justify-content:flex-start; }
  .customer-equity-grid,.customer-risk-events { grid-template-columns:1fr; }
  .customer-risk-summary { grid-template-columns:1fr 1fr; }
  .customer-risk-stat:last-child { grid-column:1 / -1; }
}
.file-row { display:flex; align-items:center; gap:10px; padding:10px 0; border-top:1px solid var(--border); }.file-row:first-child{border-top:0}.file-icon{width:32px;height:32px;border-radius:4px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center}.file-main{flex:1;min-width:0}.file-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-meta{color:var(--text-3);font-size:11px;margin-top:2px}
.document-card-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.document-card { min-width:0; min-height:132px; display:flex; flex-direction:column; padding:12px; border:1px solid var(--divider); border-radius:var(--r-panel); background:var(--surface); transition:border-color .16s,box-shadow .16s; }
.document-card:hover { border-color:var(--brand); box-shadow:0 4px 14px rgba(48,121,252,.08); }
.document-card:focus-within { border-color:var(--brand); }
.document-card-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.document-card-title { min-width:0; display:flex; align-items:center; gap:10px; }
.document-card-icon { width:28px; height:28px; display:grid; place-items:center; border-radius:var(--r-panel); background:var(--brand-soft); color:var(--brand); flex:0 0 28px; }
.document-card-icon .icon { width:14px; height:14px; fill:currentColor; stroke:none; }
.document-status { min-height:22px; display:inline-flex; align-items:center; padding:0 8px; border-radius:var(--r-control); font-size:11px; }
.document-status.success { color:#087344; background:var(--energy-soft); }
.document-status.missing { color:var(--text-3); background:var(--subtle); }
.document-card h3 { min-width:0; margin:0; font-size:13px; line-height:1.5; font-weight:600; }
.document-card-title-muted { color:var(--text-3); font-weight:400; }
.synced-document-title { margin-top:22px; padding-top:18px; border-top:1px solid var(--divider); }
.document-sync-copy { margin-top:auto; padding-top:8px; color:var(--text-3); font-size:10px; line-height:16px; }
.document-card.is-synced { min-height:104px; padding:10px 12px; background:#fcfdff; }
.document-card.is-synced .document-file,.document-card.is-synced .document-empty-copy { margin-top:8px; }
.document-synced-footer { min-height:24px; margin-top:auto; padding-top:4px; display:flex; align-items:center; justify-content:space-between; gap:8px; }
.document-card.is-synced .document-card-actions { margin:0; padding:0; }
.document-card.is-synced .document-sync-copy { margin:0; padding:0; }
.document-file { min-width:0; display:grid; gap:4px; }
.document-file,.document-empty-copy { margin-top:10px; }
.document-file strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--text); font-size:14px; line-height:1.45; font-weight:600; }
.document-file span,.document-empty-copy { color:var(--text-3); font-size:11px; line-height:1.5; }
.document-empty-copy { margin-bottom:0; }
.document-upload-zone { flex:1; min-height:64px; margin-top:10px; padding:6px 10px; border:0; border-radius:var(--r-panel); background:var(--subtle); color:#666666; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; font:inherit; text-align:center; cursor:pointer; transition:background .16s; }
.document-upload-zone:hover { background:var(--brand-soft); color:#666666; }
.document-upload-zone:focus-visible { outline:0; box-shadow:none; }
.document-upload-zone .document-upload-plus { width:22px; height:22px; display:grid; place-items:center; color:#666666; }
.document-upload-zone .document-upload-plus .icon { width:22px; height:22px; stroke-width:1.5; }
.document-upload-zone strong { color:#666666; font-size:12px; line-height:18px; font-weight:400; }
.document-upload-zone > span:last-child { color:var(--text-3); font-size:10px; line-height:16px; }
.document-upload-zone:hover .document-upload-plus { color:#666666; }
.document-upload-zone.is-disabled { cursor:default; opacity:.72; }
.document-card-actions { margin-top:auto; padding-top:6px; border-top:0; display:flex; align-items:center; justify-content:center; gap:8px; flex-wrap:nowrap; }
.document-card-actions .btn { position:relative; min-height:24px; padding:2px 4px; border:0; border-radius:0; background:transparent; color:var(--brand); font-size:11px; line-height:20px; }
.document-card-actions .btn + .btn::before { content:""; position:absolute; left:-4px; top:50%; width:1px; height:12px; background:var(--divider); transform:translateY(-50%); }
.document-card.is-uploaded .document-card-actions { opacity:0; transform:translateY(4px); pointer-events:none; transition:opacity .16s ease,transform .16s ease; }
.document-card.is-uploaded:hover .document-card-actions,.document-card.is-uploaded:focus-within .document-card-actions { opacity:1; transform:translateY(0); pointer-events:auto; }
.document-card-actions .btn.ghost,.document-card-actions .btn.danger { color:var(--brand); }
@media (hover:none) { .document-card.is-uploaded .document-card-actions { opacity:1; transform:none; pointer-events:auto; } }
@media (max-width:1000px) { .document-card-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:600px) { .document-card-grid { grid-template-columns:minmax(0,1fr); } }
.attachment-manager { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:24px; row-gap:20px; }
.attachment-category { min-width:0; padding-bottom:12px; border-bottom:1px solid var(--divider); }
.attachment-category-head { min-height:30px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.attachment-category-head h3 { min-width:0; display:flex; align-items:baseline; gap:8px; margin:0; color:var(--text); font-size:13px; line-height:20px; font-weight:600; }
.attachment-category-count { flex:0 0 auto; color:var(--text-3); font-size:11px; font-weight:400; white-space:nowrap; }
.attachment-category-head .btn { flex:0 0 auto; color:var(--brand); }
.attachment-list { margin-top:8px; border-top:1px solid var(--divider); }
.attachment-row { min-width:0; display:grid; grid-template-columns:38px minmax(0,1fr) auto; align-items:center; gap:10px; min-height:54px; border-bottom:1px solid var(--divider); }
.attachment-type { display:inline-flex; width:38px; height:22px; align-items:center; justify-content:center; border-radius:4px; background:var(--brand-soft); color:var(--brand); font-size:10px; font-weight:600; line-height:1; }
.attachment-summary { min-width:0; display:grid; gap:2px; }
.attachment-summary strong { overflow:hidden; color:var(--text); font-size:13px; font-weight:500; line-height:20px; text-overflow:ellipsis; white-space:nowrap; }
.attachment-summary span { overflow:hidden; color:var(--text-3); font-size:11px; line-height:16px; text-overflow:ellipsis; white-space:nowrap; }
.attachment-actions { display:flex; align-items:center; gap:2px; white-space:nowrap; }
.attachment-actions .btn { min-height:24px; padding:2px 5px; border:0; color:var(--brand); font-size:11px; }
.attachment-actions .btn.danger { color:var(--danger); }
.attachment-editor-section { margin-top:16px; }
.attachment-editor-section .attachment-category { padding:0; border:0; }
.attachment-preview-body { min-width:min(720px,70vw); max-height:calc(100vh - 220px); overflow:auto; }
.attachment-preview-media { display:grid; min-height:260px; max-height:calc(100vh - 360px); place-items:center; margin-bottom:16px; background:var(--subtle); border-radius:var(--r-control); overflow:hidden; }
.attachment-preview-media img { display:block; max-width:100%; max-height:calc(100vh - 390px); object-fit:contain; }
.attachment-preview-pdf { height:min(620px,calc(100vh - 360px)); }
.attachment-preview-pdf iframe { width:100%; height:100%; border:0; background:#fff; }
.attachment-preview-meta { display:grid; grid-template-columns:88px minmax(0,1fr); gap:6px 12px; margin:0; font-size:12px; }
.attachment-preview-meta dt { color:var(--text-3); }
.attachment-preview-meta dd { min-width:0; margin:0; overflow-wrap:anywhere; }
.attachment-preview-empty { margin:16px 0 0; padding:12px; color:var(--text-2); background:var(--subtle); border-radius:var(--r-control); font-size:12px; line-height:18px; }
.dictionary-layout { display:grid; grid-template-columns:248px minmax(0,1fr); gap:0; align-items:stretch; margin:0; overflow:hidden; border:0; border-radius:10px; background:var(--surface); }
.dictionary-sidebar { min-width:0; border-right:1px solid var(--divider); padding:18px 16px 20px; background:var(--surface); }
.dictionary-sidebar > #dictionary-search { width:100%; box-sizing:border-box; margin-bottom:18px; }
.dictionary-menu-group { margin:0 0 20px; }
.dictionary-menu-group h2 { margin:0 0 7px; padding:0; color:var(--text-2); font-size:12px; line-height:18px; font-weight:600; }
.dictionary-menu-item { display:flex; width:100%; align-items:center; justify-content:space-between; gap:10px; border:0; border-radius:6px; padding:9px 10px 9px 14px; color:var(--text); background:transparent; text-align:left; font:inherit; font-size:13px; line-height:18px; cursor:pointer; }
.dictionary-menu-item:hover { background:var(--subtle); }
.dictionary-menu-item.active { color:var(--brand); background:var(--brand-soft); font-weight:600; }
.dictionary-main { min-width:0; padding:22px 24px 24px; }
.dictionary-title { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin:0 0 20px; }
.dictionary-title h2 { margin:0; font-size:18px; line-height:24px; }
.dictionary-title p { margin:4px 0 0; color:var(--text-3); font-size:12px; line-height:18px; }
.dictionary-title .object-meta { display:block; margin-top:4px; }
.dictionary-title > .btn { flex:0 0 auto; margin-top:0; }
.dictionary-table { table-layout:fixed; }
.dictionary-table th, .dictionary-table td { padding-left:10px; padding-right:10px; }
.dictionary-table th { height:42px; color:var(--text-2); font-weight:500; }
.dictionary-table td { height:56px; }
.dictionary-table .dictionary-name-cell { width:38%; }
.dictionary-table .dictionary-capacity-cell { width:92px; }
.dictionary-table .dictionary-sort-cell { width:78px; }
.dictionary-table .dictionary-remark-cell { width:26%; max-width:240px; overflow:hidden; text-overflow:ellipsis; }
.dictionary-table .dictionary-status-cell { width:76px; }
.dictionary-table .dictionary-actions-cell { width:76px; }
.dictionary-table th.dictionary-status-cell, .dictionary-table td.dictionary-status-cell { text-align:center; }
.dictionary-table .dictionary-actions-cell .table-actions { justify-content:flex-start; }
.dictionary-table .dictionary-name-cell strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dictionary-table .dictionary-name-cell .object-meta { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dictionary-table .dictionary-remark-cell { color:var(--text-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dictionary-table .dictionary-remark-cell:empty { color:var(--text-3); }
.dictionary-toolbar { display:flex; justify-content:space-between; gap:12px; margin:0 0 12px; }
.dictionary-toolbar .search { max-width:280px; }
.dictionary-code { color:var(--text-3); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:11px; white-space:nowrap; }
.dictionary-remark { display:block; max-width:180px; overflow:hidden; color:var(--text-2); font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.system-config-panel { padding:20px 24px 24px; border:0; border-radius:10px; background:var(--surface); }
.system-config-panel .table-wrap { margin:0; }
.system-config-table { table-layout:fixed; width:100%; }
.system-config-table th, .system-config-table td { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.system-config-table .system-ellipsis { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.system-config-table .system-status-cell { width:80px; text-align:center; }
.system-config-table .system-actions-cell { width:76px; }
.system-config-table .system-actions-cell .table-actions { justify-content:flex-start; }
.system-user-table .system-user-name { width:19%; }
.system-user-table .system-user-department { width:12%; }
.system-user-table .system-user-org { width:14%; }
.system-user-table .system-user-region { width:15%; }
.system-user-table .system-user-manager { width:14%; }
.system-user-table .system-user-permission { width:16%; }
.system-region-table .system-region-name { width:28%; }
.system-region-table .system-region-director { width:24%; }
.system-region-table .system-region-count { width:94px; }
.system-region-table .system-region-actions { width:250px; }
.system-stage-table .system-stage-sort { width:68px; }
.system-stage-table .system-stage-code { width:20%; }
.system-stage-table .system-stage-label { width:20%; }
.system-stage-table .system-stage-progress { width:72px; }
.system-stage-table .system-stage-warning { width:100px; }
.system-stage-table .system-stage-timeout { width:100px; }
.system-stage-warning .tag.neutral { color:#5f6b7a; background:#eef1f4; border:0; }
.system-config-master-detail { grid-template-columns:248px minmax(0,1fr); gap:0; border:0; border-radius:10px; background:var(--surface); }
.system-config-master-detail .role-list-panel { padding:18px 16px 20px; border-right:1px solid var(--divider); }
.system-config-master-detail .role-permission-panel { padding:22px 24px 24px; }
.system-config-master-detail .role-list-panel .nav-item { min-height:36px; padding:9px 10px 9px 14px; border-radius:6px; }
.role-scope-note { color:var(--text-3) !important; font-size:11px !important; line-height:18px; }
@media (max-width:900px) { .dictionary-layout { grid-template-columns:1fr; }.dictionary-sidebar { border-right:0; border-bottom:1px solid var(--divider); padding:16px; }.dictionary-sidebar > #dictionary-search { margin-bottom:16px; }.dictionary-menu-group { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:14px; }.dictionary-menu-group h2 { width:100%; }.dictionary-menu-item { width:auto; } .dictionary-main { padding:20px 20px 22px; } }
@media (max-width:600px) { .dictionary-title,.dictionary-toolbar { display:grid; }.dictionary-toolbar .search { max-width:none; }.dictionary-main .table-actions { flex-wrap:wrap; } .dictionary-main { padding:18px 14px 20px; } }
@media (max-width:1000px) { .attachment-manager { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:600px) { .attachment-manager { grid-template-columns:minmax(0,1fr); row-gap:16px; } .attachment-row { grid-template-columns:34px minmax(0,1fr); gap:8px; padding:8px 0; } .attachment-actions { grid-column:1 / -1; justify-content:flex-end; } .attachment-preview-body { min-width:0; width:100%; } }
.timeline { position:relative; padding-left:20px; }.timeline::before{content:"";position:absolute;left:5px;top:7px;bottom:6px;width:1px;background:var(--border)}.timeline-item{position:relative;padding:0 0 16px}.timeline-item::before{content:"";position:absolute;left:-19px;top:4px;width:7px;height:7px;border-radius:50%;background:var(--brand);border:2px solid #fff;box-shadow:0 0 0 1px var(--brand)}.timeline-title{font-weight:500}.timeline-meta{color:var(--text-3);font-size:11px;margin-top:3px}.timeline-note{margin-top:5px;color:var(--text-2)}
.login-page { min-height:100vh; display:grid; grid-template-columns:minmax(360px, 42%) 1fr; background:#fff; }
.login-aside { background:#153154; color:#fff; padding:56px; display:flex; flex-direction:column; justify-content:space-between; position:relative; overflow:hidden; }
.login-aside::after { content:""; position:absolute; width:420px;height:420px;border:1px solid rgba(255,255,255,.11);border-radius:50%;right:-180px;bottom:-160px;box-shadow:0 0 0 70px rgba(255,255,255,.035),0 0 0 140px rgba(255,255,255,.02); }
.login-brand { display:flex;align-items:center;gap:12px;font-size:16px;font-weight:600;position:relative;z-index:1}.login-brand .brand-mark{background:var(--energy)}
.login-message{position:relative;z-index:1}.login-message h1{font-size:30px;line-height:1.35;margin:0 0 14px}.login-message p{font-size:14px;line-height:24px;color:rgba(255,255,255,.72);max-width:380px}.login-stats{display:flex;gap:28px;margin-top:30px}.login-stat strong{font-size:22px;display:block}.login-stat span{color:rgba(255,255,255,.6);font-size:11px}
.login-main { display:grid;place-items:center;padding:32px; }.login-box{width:360px;max-width:100%}.login-box h2{font-size:22px;margin:0 0 6px}.login-box>p{color:var(--text-3);margin:0 0 26px}.login-box .field{margin-bottom:16px}.demo-accounts{margin-top:22px;padding-top:18px;border-top:1px solid var(--border)}.demo-accounts h3{font-size:12px;margin:0 0 10px}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.account-btn{text-align:left;border:1px solid var(--border);background:#fff;border-radius:4px;padding:9px}.account-btn:hover{border-color:var(--brand);background:var(--brand-soft)}.account-btn strong{display:block}.account-btn small{color:var(--text-3)}
.state-page { min-height:60vh;display:grid;place-items:center;text-align:center;padding:40px}.state-visual{width:72px;height:72px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;margin:0 auto 18px}.state-page h1{font-size:20px;margin:0 0 8px}.state-page p{color:var(--text-3);max-width:430px;line-height:20px;margin:0 auto 18px}
.skeleton{background:linear-gradient(90deg,#edf0f4 25%,#f7f8fa 50%,#edf0f4 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:3px;height:14px}@keyframes shimmer{to{background-position:-200% 0}}
.empty-row td{text-align:center;height:260px;color:var(--text-3)}
.toast-region{position:fixed;right:20px;top:70px;z-index:100;display:flex;flex-direction:column;gap:8px}.toast{background:#fff;border:1px solid var(--border);border-left:3px solid var(--energy);border-radius:5px;box-shadow:var(--shadow-float);padding:12px 14px;min-width:260px;animation:toast-in .2s ease}.toast.error{border-left-color:var(--danger)}@keyframes toast-in{from{transform:translateY(-6px);opacity:0}}
.modal-backdrop { position:fixed; inset:0; background:rgba(15,23,42,.38); z-index:80; display:grid; place-items:center; padding:20px; }
.modal { width:460px; max-width:100%; max-height:calc(100dvh - 40px); display:flex; flex-direction:column; background:linear-gradient(180deg,#e5efff 0,#f3f7ff 90px,#fff 180px); border-radius:10px; box-shadow:var(--shadow-float); overflow:hidden; }
.modal-head { padding:20px 22px 12px; border:0; display:flex; justify-content:space-between; align-items:center; gap:12px; flex-shrink:0; }
.modal-head h2 { font-size:16px; font-weight:600; margin:0; }
.modal-head [data-close] { width:28px; padding:0; background:transparent; border:0; }
.modal-body { padding:12px 22px 20px; line-height:20px; overflow:auto; min-height:0; }
.modal-actions { padding:12px 22px 20px; border:0; display:flex; justify-content:flex-end; gap:10px; flex-shrink:0; }
.modal-body .field + .field { margin-top:14px; }
.modal .input, .modal .select, .modal .textarea { border-color:var(--border); background:#fff; border-radius:5px; min-height:34px; }
.modal .input:hover, .modal .select:hover, .modal .textarea:hover { border-color:var(--border-strong); }
.modal .input:focus, .modal .select:focus, .modal .textarea:focus { border-color:var(--brand); background:#f8fbff; }
.modal .btn { border-radius:5px; min-height:32px; }
.modal .btn.primary { background:var(--brand); border-color:var(--brand); color:#fff; }
.modal .btn.primary:hover { background:var(--brand-strong); border-color:var(--brand-strong); }
.modal .btn:not(.primary):not(.ghost):hover { border-color:var(--brand); color:var(--brand-strong); background:var(--brand-soft); }
.modal input[type="checkbox"], .modal input[type="radio"] { accent-color:var(--brand); }
.modal [aria-pressed="true"], .modal [role="switch"][aria-checked="true"] { color:var(--brand-strong); border-color:var(--brand); background:var(--brand-soft); }
.modal .input:disabled, .modal .select:disabled, .modal .textarea:disabled { background:var(--subtle); color:var(--text-3); cursor:not-allowed; }
.modal [aria-invalid="true"] { border-color:var(--danger); }
.modal .demand-row { border-color:var(--divider); }
@media (max-width:640px) {
  .modal-head { padding:16px 16px 10px; }
  .modal-body { padding:10px 16px 16px; }
  .modal-actions { padding:10px 16px 16px; }
}
.mobile-only{display:none}
.vehicle-type-cell { display:inline-flex; align-items:center; gap:8px; white-space:nowrap; }
.vehicle-type-icon { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; border-radius:var(--r-panel); background:var(--brand-soft); color:var(--brand); flex:0 0 32px; }
.vehicle-type-icon img { display:block; width:20px; height:20px; object-fit:contain; }
.vehicle-type-icon .icon { width:20px; height:20px; }
.vehicle-type-icon .vehicle-source-icon { fill:currentColor; stroke:none; }
.demand-modal { width:760px; max-height:calc(100dvh - 40px); display:flex; flex-direction:column; }
.demand-modal .modal-body { overflow:auto; min-height:0; }
.demand-toolbar,.demand-row-head { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; }
.demand-modal #demand-rows { display:grid; gap:12px; padding:0; background:transparent; }
.demand-modal .demand-row { display:grid; grid-template-columns:minmax(0,1fr); gap:8px; padding:12px 16px; border:1px solid var(--divider); border-radius:var(--r-panel); background:var(--surface); }
.demand-modal .demand-row-head { display:flex; margin:0; padding:0; }
.demand-modal .demand-row-head strong { font-size:14px; line-height:24px; white-space:nowrap; }
.demand-modal .demand-row-head button { color:var(--text-2); }
.demand-modal .demand-row-head button:hover { color:var(--danger); background:var(--danger-soft); }
.demand-modal .demand-fields { padding-top:0; gap:10px 12px; }
.demand-modal .demand-fields > .field:nth-child(5):last-child { grid-column:span 2; }
@media (max-width:700px) {
  .demand-modal #demand-rows { gap:12px; }
  .demand-modal .demand-row { grid-template-columns:minmax(0,1fr); gap:8px; padding:12px; }
  .demand-modal .demand-row-head { min-height:24px; }
  .demand-modal .demand-fields { padding-top:0; }
}
@media (max-width:600px) { .demand-modal .demand-fields > .field:nth-child(5):last-child { grid-column:auto; } }
.demand-fields { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
@media (max-width:600px) { .demand-fields { grid-template-columns:1fr; } }
@media (max-width: 900px) {
  :root{--sidebar:64px}.brand{width:64px;padding:0 18px}.brand span{display:none}.nav-item{justify-content:center;padding:0}.nav-item span,.nav-group-title{display:none}.main{padding-left:84px;padding-right:20px}.scope-note{display:none}.stats-primary{grid-template-columns:140px repeat(3,minmax(110px,1fr));overflow:auto}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field.span-3{grid-column:span 2}.detail-grid{grid-template-columns:1fr}.detail-grid > aside.panel{border-left:0;border-top:1px solid var(--border)}.roles-card{grid-template-columns:1fr}.roles-card .role-list-panel{border-right:0;border-bottom:0}.roles-card .role-list-panel .nav-item{justify-content:flex-start}.roles-card .role-list-panel .nav-item span{display:inline}.facts{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 600px) {
  :root{font-size:13px}.topbar{height:52px}.brand{border:0;width:auto;padding:0 14px}.brand span{display:block;font-size:12px}.topbar-main{padding:0 12px;justify-content:flex-end}.identity{display:none}.sidebar{top:auto;bottom:0;width:100%;height:60px;display:flex;justify-content:space-around;padding:6px;border-right:0;border-top:1px solid var(--border)}.nav-group-title{display:none}.nav-item{width:auto;min-width:62px;flex-direction:column;gap:2px;min-height:48px;font-size:10px}.nav-item span{display:block}.main{margin:0;padding:68px 12px 76px}.page-head{align-items:center}.page-head p{display:none}.page-head h1{font-size:18px}.btn .btn-label-mobile{display:none}.stats-strip{border-radius:6px}.stats-primary{grid-template-columns:110px repeat(6,104px)}.stat{padding:10px 12px}.stat-value{font-size:18px}.status-summary{overflow:auto;flex-wrap:nowrap;padding-bottom:4px}.toolbar{align-items:stretch}.toolbar .search{min-width:100%;max-width:none}.toolbar .select{flex:1;min-width:120px}.table-wrap.responsive table,.table-wrap.responsive thead,.table-wrap.responsive tbody,.table-wrap.responsive tr,.table-wrap.responsive td{display:block}.table-wrap.responsive thead{display:none}.table-wrap.responsive tbody{padding:0 12px}.table-wrap.responsive tr{border-bottom:1px solid var(--border);padding:12px 0}.table-wrap.responsive td{height:auto;border:0;padding:3px 0;white-space:normal}.table-wrap.responsive td[data-label]::before{content:attr(data-label);display:inline-block;width:82px;color:var(--text-3)}.table-wrap.responsive .object-cell{min-width:0;margin-bottom:6px}.table-wrap.responsive .object-cell::before{display:none}.table-wrap.responsive .num{text-align:left}.pagination{padding:10px 12px}.pages .page-btn:nth-child(n+4){display:none}.form-grid{grid-template-columns:1fr}.field.span-2,.field.span-3{grid-column:span 1}.dimension-grid{grid-template-columns:1fr}.vehicle-toolbar{align-items:flex-start;flex-direction:column}.sticky-actions{bottom:60px}.facts{grid-template-columns:1fr 1fr;gap:14px}.stage-panel{overflow:auto}.stage-flow{min-width:600px;padding-bottom:8px}.object-header-top{align-items:flex-start}.object-header-top .head-actions{max-width:110px}.login-page{display:block}.login-aside{display:none}.login-main{min-height:100vh;padding:24px}.account-grid{grid-template-columns:1fr 1fr}.mobile-hide{display:none!important}.mobile-only{display:inline-flex}
}
.project-customer-link { color:var(--brand); text-decoration:none; }
.project-customer-link:hover { text-decoration:underline; }
.person-info { position:relative; display:inline-block; }
.person-info-trigger { padding:0; border:0; background:none; color:inherit; font:inherit; cursor:help; text-decoration:underline dotted; text-underline-offset:4px; }
.person-info-trigger:hover { color:var(--brand); }
.person-info-trigger:focus-visible, .project-customer-link:focus-visible { outline:2px solid var(--brand); outline-offset:3px; }
.person-info-card { display:none; position:absolute; top:100%; left:0; width:240px; max-width:calc(100vw - 40px); padding:14px; background:#fff; border:1px solid #e5e7eb; border-radius:8px; box-shadow:0 6px 24px #00000014; z-index:50; color:#333; font-size:12px; font-weight:400; text-align:left; }
.person-info:hover .person-info-card, .person-info:focus-within .person-info-card { display:grid; gap:10px; }
.person-info-field { display:grid; grid-template-columns:72px 1fr; gap:10px; }
.person-info-field > span:first-child { color:#999; }
.project-object-header .facts { grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px 20px; }
.project-object-header .facts > div { display:grid; grid-template-columns:72px minmax(0,1fr); align-items:center; gap:8px; }
.project-object-header .facts .fact-label { white-space:nowrap; }
.project-object-header .facts .fact-value { min-width:0; text-align:left; overflow-wrap:anywhere; }
.project-tab-content .project-overview-grid { grid-template-columns:minmax(0,1fr); }
@media (max-width:1100px) {
  .project-object-header .facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:640px) {
  .project-object-header .facts { grid-template-columns:1fr; }
}
.project-object-header .facts .project-team-fact { grid-column:span 2; }
.project-team-values { display:flex; flex-wrap:wrap; gap:8px 0; align-items:center; }
.primary-person-tag { position:relative; cursor:help; }
.primary-person-tooltip { display:none; position:absolute; bottom:calc(100% + 6px); left:50%; transform:translateX(-50%); padding:5px 8px; border-radius:4px; background:var(--text-1,#333); color:#fff; white-space:nowrap; font-size:12px; font-weight:400; line-height:18px; z-index:60; }
.primary-person-tag:hover .primary-person-tooltip, .primary-person-tag:focus .primary-person-tooltip { display:block; }
.primary-person-tag:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.primary-person-tag { display:inline-block; margin-left:5px; padding:0 4px; border-radius:3px; background:var(--brand-soft); color:var(--brand); font-size:10px; line-height:16px; }
#project-members + .field { margin-top:8px; }
@media (max-width:640px) { .project-object-header .facts .project-team-fact { grid-column:auto; } }
.project-object-header .facts .project-time-fact { grid-column:auto; }
.project-object-header .facts .project-team-fact { grid-column:span 2; align-items:start; }
.project-team-values > span { white-space:nowrap; }
@media (max-width:1100px) { .project-object-header .facts .project-time-fact { grid-column:auto; } }
@media (max-width:640px) { .project-object-header .facts .project-team-fact { grid-column:auto; } }
.project-object-header .facts .project-address-fact { grid-column:span 2; }
.project-object-header .facts .project-background-fact { grid-column:1 / -1; align-items:start; }
.project-background-fact .fact-value { white-space:pre-wrap; line-height:20px; }
@media (max-width:640px) { .project-object-header .facts .project-address-fact { grid-column:auto; } }
.project-tab-content [data-model-delivery].btn { border:0; background:transparent; padding:0; height:auto; min-height:32px; box-shadow:none; color:var(--brand); }
.project-tab-content [data-model-delivery].btn:hover { border:0; background:transparent; text-decoration:underline; }
.delivery-count-link { min-width:24px; padding:2px 4px; border:0; border-radius:4px; background:transparent; color:var(--brand); font:inherit; font-weight:600; line-height:20px; cursor:pointer; }
.delivery-count-link:hover { color:var(--brand-strong); background:var(--brand-soft); text-decoration:underline; }
.delivery-count-link:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.delivery-count-zero { display:inline-block; min-width:24px; padding:2px 4px; color:var(--text); font-weight:400; line-height:20px; }
.project-object-header .facts .project-team-fact { grid-column:1 / span 2; }
.project-object-header .facts .project-address-fact { grid-column:1 / -1; }
@media (max-width:640px) { .project-object-header .facts .project-team-fact { grid-column:auto; } }
.project-object-header .facts .project-background-fact,
.project-object-header .facts .project-team-fact { grid-column:1 / -1; align-items:start; }
.project-object-header .facts .project-background-fact .fact-value { line-height:20px; }
.project-object-header .facts .project-team-fact .fact-value { min-width:0; }
.project-team-values { display:flex; flex-wrap:wrap; gap:8px 20px; align-items:center; }
.project-team-role { display:inline-flex; align-items:center; white-space:nowrap; }
.project-team-role-label { color:var(--text-2); }
@media (max-width:640px) {
  .project-object-header .facts .project-background-fact,
  .project-object-header .facts .project-team-fact { grid-column:auto; }
  .project-team-values { gap:8px 16px; }
}
.project-object-header .project-identity { display:flex; flex-wrap:wrap; gap:8px 24px; }
.project-identity > span { display:inline-flex; align-items:center; gap:6px; }
.project-identity svg { width:14px; height:14px; flex-shrink:0; }
.project-object-header .facts { grid-template-columns:repeat(4,minmax(0,1fr)); }
.project-object-header .facts .project-team-fact { grid-column:auto; }
.project-summary-row { grid-template-columns:minmax(0,32%) minmax(0,1fr); }
@media (max-width:1100px) {
  .project-object-header .facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .project-object-header .facts .project-team-fact { grid-column:auto; }
}
@media (max-width:1000px) { .project-summary-row { grid-template-columns:1fr; } }
@media (max-width:640px) { .project-object-header .facts { grid-template-columns:1fr; } }
.address-copy { display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; padding:4px; border:0; border-radius:4px; background:transparent; color:var(--brand); cursor:pointer; }
.address-copy:hover { background:var(--brand-soft); }
.address-copy:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.project-identity-address { min-width:0; max-width:100%; }
.project-identity-address > span { overflow-wrap:anywhere; }
.address-copy { flex-shrink:0; }
.project-team-editor { grid-column:1 / -1; display:grid; grid-template-columns:1fr; gap:8px; align-items:start; }
.project-team-editor > .help { grid-column:1 / -1; margin-top:0; }
#project-form .form-grid > .field > label, .project-team-editor > .field > label { min-height:26px; display:flex; align-items:center; gap:4px; }
#project-place { width:100%; }
#project-form .form-grid > .field:has(> #project-place) { grid-column:1 / -1; }
.project-team-picker summary > span:first-child { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.project-team-picker summary em { display:inline-block; margin-left:4px; padding:0 4px; border-radius:3px; background:var(--brand-soft); color:var(--brand); font-size:10px; font-style:normal; line-height:16px; }
.project-team-picker summary b { color:var(--text-3); font-weight:400; }
.project-team-editor #join-row { display:flex; align-items:center; gap:6px; width:max-content; margin-top:2px; font-size:12px; color:var(--text-2); }
.project-team-editor #join-row[hidden] { display:none; }
.demand-modal .demand-fields { align-items:start; }
.demand-modal .demand-fields > .field, .demand-modal .demand-fields > .field + .field { margin-top:0; }
.demand-modal .demand-fields > .field > label { min-height:20px; line-height:20px; }
.demand-modal .demand-fields .input, .demand-modal .demand-fields .select { width:100%; height:36px; box-sizing:border-box; }
.demand-total-number { color:var(--brand); font-size:22px; line-height:1.2; font-weight:600; }
#project-form #tractor-total, #project-form #trailer-total { color:var(--brand); }
.project-member-picker { position:relative; min-width:0; }
.project-member-picker summary { display:flex; justify-content:space-between; align-items:center; gap:8px; min-height:36px; padding:6px 12px; border:1px solid var(--border); border-radius:var(--r-control,4px); background:#fff; cursor:pointer; list-style:none; box-sizing:border-box; }
.project-member-picker summary::-webkit-details-marker { display:none; }
.project-member-picker summary:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
.project-member-options { position:absolute; top:calc(100% + 4px); left:0; right:0; max-height:280px; overflow:auto; padding:6px; background:#fff; border:1px solid var(--border); border-radius:4px; box-shadow:0 6px 20px #00000014; z-index:40; }
.project-member-options > label { display:flex; flex-direction:row; align-items:center; gap:10px; padding:8px; cursor:pointer; }
.project-member-options > label:hover { background:var(--brand-soft); }
.project-member-options input { accent-color:var(--brand); }
.project-member-options small { display:block; margin-top:3px; color:var(--text-3); font-size:11px; }
.customer-owner-picker summary > span:first-child { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.customer-owner-picker summary em { display:inline-block; margin-left:4px; padding:0 4px; border-radius:3px; background:var(--brand-soft); color:var(--brand); font-size:10px; font-style:normal; line-height:16px; }
.customer-owner-picker summary b { color:var(--text-3); font-weight:400; }
.customer-owner-options > .customer-owner-option { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:12px; min-height:52px; padding:6px 8px; border-radius:4px; }
.customer-owner-options > .customer-owner-option:hover { background:var(--brand-soft); }
.customer-owner-option > label { display:flex; align-items:center; gap:10px; min-width:0; cursor:pointer; }
.customer-owner-primary-action { padding:4px 0; border:0; background:transparent; color:var(--brand); font-size:11px; white-space:nowrap; }
.customer-owner-primary-action:hover { color:var(--brand-strong); text-decoration:underline; }
.customer-owner-primary-action.is-primary { min-height:20px; padding:0 7px; border-radius:4px; background:var(--brand-soft); color:var(--brand); cursor:default; font-weight:400; line-height:20px; opacity:1; text-decoration:none; }
.customer-owner-primary-action[hidden] { display:none; }
.user-create-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 16px; }
.modal-body .user-create-grid .field + .field { margin-top:0; }
.user-create-grid .span-2 { grid-column:1 / -1; }
@media (max-width:640px) { .user-create-grid { grid-template-columns:1fr; } .user-create-grid .span-2 { grid-column:auto; } }
.project-member-picker.is-disabled summary { background:#f5f6f8; cursor:not-allowed; color:var(--text-3); }
.project-visit-card { border-top:1px solid var(--divider); padding:18px 0; }
.project-visit-head { display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.project-visit-head h3 { margin:0; font-size:13px; font-weight:600; }
.project-visit-head > span { color:var(--text-3); font-size:11px; }
.project-visit-details { display:grid; grid-template-columns:80px minmax(0,1fr); gap:12px; margin:16px 0 0; font-size:12px; }
.project-visit-details dt { color:var(--text-2); }
.project-visit-details dd { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; line-height:20px; }
.project-visits-empty { padding:36px 16px; text-align:center; color:var(--text-2); }
.project-visits-empty p { font-size:12px; color:var(--text-3); }
.visit-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.visit-form-grid .visit-participant-field { grid-column:1 / -1; }
.modal-body .visit-form-grid .field + .field { margin-top:0; }
.visit-people { display:flex; flex-wrap:wrap; gap:12px 18px; border:1px solid var(--divider); border-radius:4px; padding:12px; margin:16px 0; }
.visit-people legend { font-size:12px; color:var(--text-2); }
.visit-people label { display:flex; align-items:center; gap:6px; font-size:12px; }
.visit-people input { accent-color:var(--brand); }
@media (max-width:640px) { .visit-form-grid { grid-template-columns:1fr; } }
.project-visit-timeline { list-style:none; padding:8px 0 0; margin:0; }
.project-visit-event { position:relative; display:grid; grid-template-columns:140px minmax(0,1fr); gap:28px; padding:0 0 24px 24px; }
.project-visit-event::before { content:""; position:absolute; left:5px; top:14px; bottom:-14px; width:1px; background:var(--brand-soft); }
.project-visit-event:last-child::before { display:none; }
.project-visit-event::after { content:""; position:absolute; left:0; top:13px; width:11px; height:11px; border:2px solid var(--brand); border-radius:50%; background:#fff; box-sizing:border-box; }
.project-visit-event:first-child::after { background:var(--brand); }
.project-visit-time { padding-top:10px; font-size:12px; line-height:18px; color:var(--brand); font-weight:600; }
.project-visit-event .project-visit-card { border:1px solid var(--divider); border-radius:8px; padding:14px 16px; min-width:0; }
@media (max-width:640px) {
  .project-visit-event { grid-template-columns:minmax(0,1fr); gap:10px; }
  .project-visit-event .project-visit-card { padding:12px; }
}
.demand-fields > .demand-other-field { grid-column:1 / -1; }
.demand-fields > .demand-other-field[hidden] { display:none; }

/* ===== Phase 4：项目测算模块（对齐 Design Spec，避免 Card 套 Card） ===== */
.calc-breadcrumb { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:0 0 12px; color:var(--text-3); font-size:12px; line-height:18px; }
.calc-crumb { border:0; background:transparent; padding:0; color:var(--text-3); font-size:12px; }
.calc-crumb.link { color:var(--brand); cursor:pointer; }
.calc-crumb.link:hover { color:var(--brand-strong); }
.calc-crumb.current { color:var(--text-2); font-weight:500; }
.calc-crumb-sep { color:var(--disabled); }
.calc-page { display:grid; gap:16px; }
.calc-object-header { margin-bottom:0; }
.calc-context-facts { grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px 24px; }
.calc-context-note { margin:14px 0 0; color:var(--text-3); font-size:11px; line-height:18px; }
.calc-status-hint { margin-right:8px; border:0; }
.calc-status { border:0 !important; }
.calc-center-metrics { margin-bottom:16px; }
.calc-center-metric-row { grid-template-columns:repeat(4,minmax(0,1fr)); }
.calc-engine-value { font-size:14px !important; line-height:22px !important; font-weight:500 !important; }
.calc-center-panel, .calc-scenario-panel { padding:0 12px 8px; }
.calc-center-panel .section-title h2, .calc-scenario-panel .section-title h2, .calc-compare-panel .section-title h2, .calc-workspace-section .section-title h2 { font-size:15px; }
.calc-center-panel .is-positive, .calc-scenario-panel .is-positive, .calc-compare-table .is-positive { color:#087344; font-weight:600; }
.calc-center-panel .is-negative, .calc-scenario-panel .is-negative, .calc-compare-table .is-negative { color:var(--danger); font-weight:600; }
.calc-compare-panel { padding:16px 18px; }
.calc-compare-table th, .calc-compare-table td { height:40px; }
.calc-result-metrics { grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:12px; }
.calc-result-hero { border-top:3px solid var(--brand); }
.calc-empty-result { padding:16px 0; color:var(--text-2); }
.calc-empty-result strong { display:block; margin-bottom:6px; color:var(--text); }
.calc-empty-result p { margin:0; font-size:12px; line-height:1.6; }
.calc-stale-banner { margin:0 0 12px; padding:10px 12px; background:#FFF6E8; color:#8A5A00; border-radius:var(--r-control); font-size:12px; font-weight:500; }
.calc-stale-banner.is-pending { background:var(--brand-soft); color:var(--brand-strong); }
.calc-demo-banner { display:flex; flex-wrap:wrap; align-items:flex-start; gap:8px 10px; margin:0 0 14px; padding:10px 12px; background:#FFF6E8; border-radius:var(--r-control); font-size:12px; line-height:1.55; color:var(--text-2); }
.calc-demo-banner.is-user { background:var(--subtle); }
.calc-demo-banner strong { color:var(--text); }
.calc-context-block { margin-top:12px; }
.calc-section-kicker { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; margin-bottom:10px; color:var(--text-3); font-size:11px; }
.calc-field-error { margin-top:8px; color:var(--danger); font-size:12px; }
.calc-result-metric { border:0; box-shadow:none; }
.calc-result-metric.positive .metric-value { color:#087344; }
.calc-result-metric.negative .metric-value { color:var(--danger); }
.calc-result-metric .metric-value { font-size:20px; }
.calc-result-metric .metric-unit { font-size:10px; color:var(--text-3); }
.calc-result-meta { display:flex; flex-wrap:wrap; gap:10px 18px; color:var(--text-3); font-size:11px; padding-top:4px; border-top:1px solid var(--divider); }
.calc-workspace-section { padding:16px 18px; }
.calc-workspace-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; align-items:start; }
.calc-param-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 16px; }
.calc-param-grid .span-2 { grid-column:1 / -1; }
.calc-workspace-section .form-grid > .field > label { font-size:12px; color:var(--text-2); }
.head-actions .btn .icon { width:14px; height:14px; }
/* 测算页一级容器已用 panel；内部指标不再加边框，防止 Card 套 Card */
.calc-page > .panel { background:var(--surface); }
.calc-page .metric-card { background:var(--subtle); }
@media (max-width:1200px) {
  .calc-result-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .calc-context-facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:900px) {
  .calc-workspace-grid, .calc-center-metric-row { grid-template-columns:1fr 1fr; }
}
@media (max-width:640px) {
  .calc-workspace-grid, .calc-center-metric-row, .calc-result-metrics, .calc-param-grid, .calc-context-facts { grid-template-columns:1fr; }
  .calc-center-panel, .calc-scenario-panel { padding:0 10px 8px; }
}

.calc-ai-chip:hover { background:var(--brand-soft); color:var(--brand-strong); }
.calc-ai-source-quiet { margin:0; color:var(--text-3); font-size:11px; }
.calc-ai-remote { padding:12px; border-left:3px solid var(--brand); background:var(--brand-soft); border-radius:0 var(--r-control) var(--r-control) 0; }
.calc-ai-remote-label { font-size:11px; color:var(--brand-strong); margin-bottom:6px; font-weight:500; }
.calc-ai-remote-text { white-space:pre-wrap; line-height:1.6; color:var(--text); font-size:12px; }
.calc-ai-summary strong { display:block; font-size:14px; margin-bottom:6px; }
.calc-ai-summary p { margin:0; color:var(--text-2); line-height:1.6; font-size:12px; }
.calc-ai-columns { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.calc-ai-columns h3, .calc-ai-risks h3 { margin:0 0 8px; font-size:12px; font-weight:600; color:var(--text); }
.calc-ai-columns ul { margin:0; padding-left:18px; color:var(--text-2); line-height:1.7; }
.calc-ai-risk-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.calc-ai-risk { padding:12px; background:var(--subtle); border-radius:var(--r-control); }
.calc-ai-risk-head { display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:6px; }
.calc-ai-risk p { margin:0; color:var(--text-2); line-height:1.55; font-size:12px; }
.calc-ai-reco { margin-top:6px !important; color:var(--text) !important; }
.calc-ai-disclaimer { margin:0; color:var(--text-3); font-size:11px; }
.calc-ai-fab {
  position:fixed; right:24px; bottom:24px; z-index:30;
  border:0; border-radius:999px; padding:12px 18px;
  background:var(--brand); color:#fff; font-weight:600; box-shadow:0 10px 30px rgba(15,23,42,.18);
  cursor:pointer;
}
.calc-ai-fab {
  width:48px;
  height:48px;
  padding:0;
  border-radius:50%;
  background:transparent url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjQ4cHgiIGhlaWdodD0iMjQ4cHgiIHZpZXdCb3g9IjAgMCAyNDggMjQ4IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPuWbvuW9ojwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjQ4LDEyNCBDMjQ4LDE5Mi40ODMzMDkgMTkyLjQ4MzMwOSwyNDggMTI0LDI0OCBDNTUuNTE2NjkxLDI0OCAwLDE5Mi40ODMzMDkgMCwxMjQgQzAsNTUuNTE2NjkxIDU1LjUxNjY5MSwwIDEyNCwwIEMxOTIuNDgzMzA5LDAgMjQ4LDU1LjUxNjY5MSAyNDgsMTI0IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjEwMCUiIHkxPSI1MCUiIHgyPSIwJSIgeTI9IjUwJSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjOEU1OUY3IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzNjcwRkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvY2RlZnM+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i5Zu+5b2iIiBzdHJva2U9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGNpcmNsZSBpZD0i5qSt5ZyG5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIiBjeD0iMTI0IiBjeT0iMTI0IiByPSIxMjQiPjwvY2lyY2xlPgogICAgICAgIDxnIGlkPSLnvJbnu4QiIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQsIDY1KSIgZmlsbD0iI0ZGRkZGRiI+ICAgICAgICAgICAgPHBhdGggZD0iTTE1MC45ODk5NDcsNzcuMTUxNDc1NSBDMTQ3Ljc3MzI3NCw5NS4yNDQzNzE2IDEzMS41NTUxOCwxMDguOTk0OTczIDExMi4wMzYyMDgsMTA4Ljk5NDk3MyBMNDYuMTM2NTE4NywxMDguOTk0OTczIEMyNi41NDE3NjA3LDEwOC45OTQ5NzMgMTAuMjY0NzIyOCw5NS4xMjY1NTczIDcuMTQ5MDk3MjYsNzYuOTE1ODQ3IEM1LjMxMjA5MTg4LDc3LjA2ODc3NiAzLjQ5NDkxMDM4LDc2LjQ0NjE4NyAyLjEzODE5MTE2LDc1LjE5OTA0ODEgQzAuNzgxNDcxOTM2LDczLjk1MTkwOTIgMC4wMDkxMjA2NjM0Myw3Mi4xOTQxMTgzIDAuMDA4NDIwNTY4MjYsNzAuMzUxOTEyNiBMMCw0NS4wNTU1MTkyIEMwLDQxLjQyMDEwOTMgMi45NDcyMTMyOSwzOC40NjYzMzg5IDYuNTkzMzM3MSwzOC40NjYzMzg3IEM2LjYwMTc1NzY3LDE3LjIyNjEyMDIgMjQuMzAxODc4NywwIDQ2LjEzNjUxODcsMCBMMTEyLjAzNjIwOCwwIEMxMzMuODc5MjY4LDAsMTUxLjU3OTM4OSwxNy4yMjYxMjAyIDE1MS41NzkzODksMzguNDY2MzM4NyBMMTUxLjU3OTM4OSwzOS4zOTIwMjE5IEMxNTMuNTY5NjExLDM4LjgxODMyOTkgMTU1LjcxMzkxMSwzOS4yMTI2NzA1IDE1Ny4zNjk0MDYsNDAuNDU2ODE4IEMxNTkuMDI0OTAyLDQxLjcwMDk2NTYgMTYwLDQzLjY1MDI3NjYgMTYwLDQ1LjcyMDMyNzkgTDE2MCw3MS4wMTY3MjEzIEMxNjAsNzMuMTk3ODE4IDE1OC45MjI2ODMsNzUuMjM4MjcyNCAxNTcuMTE5MDM2LDc2LjQ2NjMzNzQgQzE1NS4zMTUzODksNzcuNjk0NDAyNCAxNTMuMDIwNTI1LDc3Ljk1MDkzMyAxNTAuOTg5OTQ3LDc3LjE1MTQ3NTUgTDE1MC45ODk5NDcsNzcuMTUxNDc1NSBaIi8+ICAgICAgICAgICAgPHBhdGggZD0iTTU4Ljc5MjY5NDYsMTM0LjY0NDgwOSBDNDguMTY0NzcwNywxMzQuNjQwMTYzIDM5LjU1MTYwMjIsMTI2LjAyODY1NiAzOS41NTE2MDIyLDExNS40MDc0MzIgTDExOC42Mjk1NDUsMTE1LjQwNzQzMiBDMTE4LjYyOTU0NSwxMjAuNTA5NTAxIDExNi42MDE0NzcsMTI1LjQwMjYwMyAxMTIuOTkxNDkzLDEyOS4wMTAzMTEgQzEwOS4zODE1MDksMTMyLjYxODAxOSAxMDQuNDg1MzIsMTM0LjY0NDgwOSAzOS41NTE2MDIyLDExNS40MDc0MzIgWiIvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+") center/contain no-repeat;
  color:transparent;
  font-size:0;
  box-shadow:none;
}
.calc-ai-fab:hover,
.calc-ai-fab:focus-visible {
  background-color:transparent;
  box-shadow:0 6px 18px rgba(48,121,252,.22);
}
/* Keep the floating assistant icon valid and self-contained. */
.calc-ai-fab {
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 248 248'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='100%25' y1='50%25' x2='0%25' y2='50%25'%3E%3Cstop stop-color='%238e59f7'/%3E%3Cstop offset='1' stop-color='%233670ff'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ccircle cx='124' cy='124' r='124' fill='url(%23g)'/%3E%3Cg fill='white'%3E%3Crect x='62' y='74' width='124' height='96' rx='28'/%3E%3Crect x='50' y='106' width='18' height='48' rx='9'/%3E%3Crect x='180' y='106' width='18' height='48' rx='9'/%3E%3Ccircle cx='98' cy='121' r='12' fill='%233670ff'/%3E%3Ccircle cx='150' cy='121' r='12' fill='%233670ff'/%3E%3Cpath d='M90 151h68' stroke='%233670ff' stroke-width='10' stroke-linecap='round'/%3E%3Crect x='112' y='50' width='24' height='28' rx='12'/%3E%3C/g%3E%3C/svg%3E");
}
.calc-ai-fab {
  background-image:url("./assets/AI.svg");
}
.calc-ai-drawer {
  position:fixed; top:0; right:0; bottom:0; width:min(420px,100vw); z-index:40;
  background:rgba(255,255,255,.92); backdrop-filter:blur(18px); saturate(1.2);
  border-left:1px solid rgba(15,23,42,.08);
  box-shadow:-12px 0 40px rgba(15,23,42,.12);
  display:flex; flex-direction:column; padding:16px;
}
.calc-ai-drawer[hidden] { display:none !important; }
.calc-ai-drawer-head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; margin-bottom:12px; }
.calc-ai-drawer-head strong { display:block; font-size:16px; }
.calc-ai-drawer-head p { margin:4px 0 0; color:var(--text-3); font-size:12px; }
.calc-ai-chat { flex:1; overflow:auto; display:flex; flex-direction:column; gap:10px; padding-right:4px; }
.calc-ai-msg { display:flex; }
.calc-ai-msg.user { justify-content:flex-end; }
.calc-ai-bubble {
  max-width:92%; padding:10px 12px; border-radius:14px; font-size:13px; line-height:1.55;
  background:var(--subtle); color:var(--text);
  white-space:normal; word-break:break-word;
}
.calc-ai-msg.user .calc-ai-bubble { background:var(--brand-soft); color:var(--brand-strong); }
.calc-ai-compose { display:grid; gap:8px; margin-top:12px; }
.calc-ai-confirm { margin-top:10px; }
.calc-ai-confirm-card {
  padding:12px; border-radius:var(--r-control); background:#fff8eb; border:1px solid rgba(180,120,20,.2);
}
.calc-ai-confirm-card ul { margin:8px 0; padding-left:18px; color:var(--text-2); font-size:12px; }
.calc-ai-confirm-actions { display:flex; gap:8px; }
.calc-ai-compare { margin-top:8px; font-size:12px; }
body.calc-ai-drawer-open { overflow:hidden; }
.calc-ai-report { display:grid; gap:14px; padding:16px; border-radius:16px; background:#f7f8fc; border:1px solid rgba(102,126,234,.18); }
.calc-ai-report-kicker { margin:0; color:var(--brand); font-size:13px; font-weight:600; }
.calc-ai-notice { margin:8px 0 0; color:#c47b12; font-size:13px; }
.calc-ai-report-block { background:#fff; border-radius:14px; padding:14px; box-shadow:none; animation: calc-ai-rise .45s ease both; }
.calc-ai-report-block:nth-child(2) { animation-delay:.05s; }
.calc-ai-report-block:nth-child(3) { animation-delay:.1s; }
.calc-ai-report-block:nth-child(4) { animation-delay:.15s; }
.calc-ai-report-block:nth-child(5) { animation-delay:.2s; }
.calc-ai-report-block h3 { margin:0 0 8px; font-size:15px; }
.calc-ai-kpi-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.calc-ai-kpi { background:#fafafa; border-radius:12px; padding:12px; display:grid; gap:6px; }
.calc-ai-kpi span, .calc-ai-kpi em { color:var(--text-3); font-size:12px; font-style:normal; }
.calc-ai-kpi strong { font-size:18px; letter-spacing:-.02em; }
.calc-ai-cost { display:grid; grid-template-columns:minmax(340px, 35%) minmax(0, 1fr); gap:6px; align-items:center; }
.calc-ai-cost-summary { display:grid; grid-template-columns:140px max-content; justify-content:center; gap:14px; align-items:center; align-self:start; min-width:0; padding:0 4px; }
.calc-ai-donut { position:relative; width:140px; height:140px; border-radius:50%; margin:0 auto; }
.calc-ai-donut::after { content:""; position:absolute; inset:22px; border-radius:50%; background:#fff; }
.calc-ai-cost-legend { display:grid; gap:8px; list-style:none; margin:0; padding:0; color:var(--text-2); font-size:12px; line-height:16px; }
.calc-ai-cost-legend li { display:flex; align-items:center; gap:8px; min-width:0; }
.calc-ai-cost-legend i { width:9px; height:9px; flex:0 0 9px; border-radius:50%; }
.calc-ai-cost-legend span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.calc-ai-bars, .calc-ai-tornado { display:grid; gap:8px; }
.calc-ai-bar-row { display:grid; grid-template-columns:92px 1fr auto; gap:8px; align-items:center; font-size:12px; color:var(--text-2); }
.calc-ai-cost .calc-ai-bars { align-self:start; }
.calc-ai-cost .calc-ai-bars .calc-ai-bar-row { grid-template-columns:minmax(0,1fr) auto; min-height:16px; }
.calc-ai-cost .calc-ai-bars .calc-ai-bar-row > span { display:none; }
.calc-ai-bar-track { height:8px; background:#f0f0f3; border-radius:99px; overflow:hidden; }
.calc-ai-bar-track i { display:block; height:100%; border-radius:99px; }
.calc-ai-scenes { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.calc-ai-scene { background:#fafafa; border-radius:12px; padding:10px; }
.calc-ai-scene-bars { display:flex; align-items:flex-end; gap:8px; height:110px; margin:10px 0; }
.calc-ai-scene-col { flex:1; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; height:100%; gap:4px; font-size:11px; color:var(--text-3); }
.calc-ai-scene-col i { display:block; width:24px; align-self:center; border-radius:6px 6px 0 0; }
.calc-ai-scene-col i.rev { background:#4c96ff; }
.calc-ai-scene-col i.cost { background:#ffa36b; }
.calc-ai-scene-col i.profit { background:#40cfa0; }
.calc-ai-trend { display:flex; align-items:flex-end; justify-content:space-between; gap:0; height:92px; }
.calc-ai-trend span { flex:0 0 20px; width:20px; background:#4c96ff; border-radius:4px 4px 0 0; min-height:4px; }
.calc-ai-tornado { position:relative; height:10px; background:#f0f0f3; border-radius:99px; overflow:hidden; }
.calc-ai-tornado i { position:absolute; top:0; height:100%; }
.calc-ai-tornado i.down { right:50%; background:#ff6b6b; }
.calc-ai-tornado i.up { left:50%; background:#34c759; }
.calc-ai-recs { margin:0; padding-left:0; list-style:none; display:grid; gap:8px; }
.calc-ai-recs li { background:#fafafa; border-radius:12px; padding:10px 12px; }
.calc-ai-recs p { margin:4px 0 0; color:var(--text-2); }
@keyframes calc-ai-rise { from { opacity:0; transform:translateY(8px);} to { opacity:1; transform:none;} }
@media (max-width:900px) {
  .calc-ai-columns, .calc-ai-risk-grid, .calc-ai-kpi-grid, .calc-ai-scenes, .calc-ai-cost { grid-template-columns:1fr; }
}

/* ===== V2.0 AI 资料导入测算 ===== */
.calc-demo-tools { display:inline-block; margin-left:8px; }
.calc-demo-tools summary { cursor:pointer; color:var(--text-2); font-size:12px; padding:6px 10px; border-radius:var(--r-control); background:var(--subtle); list-style:none; }
.calc-demo-tools-body { margin-top:8px; padding:10px; background:var(--subtle); border-radius:var(--r-control); display:grid; gap:8px; }
.ai-service-ready { display:inline-flex; align-items:center; margin-left:8px; color:var(--text-2); font-size:12px; padding:6px 10px; border-radius:var(--r-control); background:var(--subtle); }
.calc-demo-readiness { display:inline-block; margin-left:8px; }
.calc-demo-readiness summary { cursor:pointer; color:var(--text-2); font-size:12px; }
.calc-demo-readiness pre { margin:8px 0 0; white-space:pre-wrap; font:12px/1.5 inherit; color:var(--text-2); }
.calc-empty-state { text-align:center; padding:48px 24px; }
.calc-empty-state h2 { margin:0 0 8px; }
.calc-empty-state p { color:var(--text-2); margin:0 0 20px; }
.calc-empty-actions { display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
.calc-create-options { display:grid; gap:12px; }
.calc-create-card { text-align:left; border:1px solid var(--border); background:#fff; border-radius:12px; padding:14px 16px; cursor:pointer; }
.calc-create-card:hover { border-color:var(--brand); background:var(--brand-soft); }
.calc-create-card strong { display:block; margin-bottom:6px; }
.calc-create-card p { margin:0; color:var(--text-2); font-size:12px; line-height:1.5; }
.calc-import-steps {
  width:min(100%, 960px);
  margin:0 auto 24px;
  padding:0 8px;
  display:flex;
  align-items:center;
  list-style:none;
  color:var(--text-3);
  font-size:13px;
}
.calc-import-steps > li:not(.calc-import-step-line) {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  min-width:0;
  white-space:nowrap;
}
.calc-import-step-line {
  flex:1 1 0;
  min-width:16px;
  height:1px;
  margin:0 16px;
  background:var(--border);
}
.calc-import-step-dot {
  width:24px;
  height:24px;
  flex:0 0 24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:var(--subtle);
  color:var(--text-3);
  font-size:13px;
  line-height:1;
}
.calc-import-step-label { color:var(--text-3); }
.calc-import-steps li.active .calc-import-step-dot {
  background:var(--brand);
  color:#fff;
}
.calc-import-steps li.active .calc-import-step-label {
  color:var(--text);
  font-weight:600;
}
.calc-import-step-line.is-complete { background:var(--brand); }
.calc-import-steps li.complete .calc-import-step-dot {
  background:var(--brand-soft);
  color:transparent;
  font-size:0;
}
.calc-import-steps li.complete .calc-import-step-dot::before {
  content:"✓";
  color:var(--brand);
  font-size:21px;
  font-weight:700;
}
.calc-import-page { display:grid; gap:16px; }
.calc-import-card {
  padding:18px;
  background:var(--surface);
  border-radius:var(--r-panel);
}
.calc-import-card > .calc-import-steps { margin-bottom:16px; }
.calc-import-card > .calc-import-upload {
  padding:0;
  background:transparent;
  border-radius:0;
}
.calc-import-card > .metric-section { margin-bottom:16px; }
.calc-import-card .metric-card { background:var(--subtle); }
.calc-dropzone { border:1px dashed var(--border); border-radius:16px; padding:36px 20px; text-align:center; background:#f8fafc; }
.calc-dropzone.is-drag { border-color:var(--brand); background:var(--brand-soft); }
.calc-dropzone p { color:var(--text-2); margin:8px 0 16px; }
.calc-import-toolbar { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0; }
.calc-import-files { list-style:none; padding:0; margin:0; display:grid; gap:8px; }
.calc-import-files li { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; padding:10px 12px; background:var(--subtle); border-radius:var(--r-control); }
.calc-import-err { color:var(--danger); width:100%; }
.calc-import-review-layout { display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:16px; align-items:start; }
.calc-param-group { margin-bottom:12px; }
.calc-param-group h3 { margin:0 0 10px; font-size:14px; }
.calc-conflict-box, .calc-infer-box, .calc-missing-box { display:grid; gap:6px; margin-top:6px; font-size:12px; }
.calc-candidate-list { display:grid; gap:8px; }
.calc-candidate-card { display:grid; gap:2px; padding:8px 10px; border:1px solid var(--border); border-radius:12px; background:var(--subtle); }
.calc-candidate-card strong { font-size:14px; }
.calc-candidate-card small { color:var(--text-3); }
.calc-import-start-bar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; padding:14px 0 24px; }
.calc-import-assistant { position:sticky; top:12px; }
.calc-project-link-hint { padding:12px 14px; margin-bottom:12px; display:grid; gap:8px; }
@media (max-width:960px) {
  .calc-import-review-layout { grid-template-columns:1fr; }
  .calc-import-assistant { position:static; }
}
@media (max-width:640px) {
  .calc-import-card { padding:14px; overflow:hidden; }
  .calc-import-steps { padding:0 2px; font-size:13px; }
  .calc-import-steps > li:not(.calc-import-step-line) { gap:5px; }
  .calc-import-step-dot { width:24px; height:24px; flex-basis:24px; font-size:13px; }
  .calc-import-steps li.complete .calc-import-step-dot::before { font-size:14px; }
}

.ai-page-head { margin-bottom:12px; }
.ai-page-head .ai-subtitle { color:var(--text-3); font-size:12px; }
.ai-view-toggle { display:inline-flex; gap:6px; padding:3px; background:var(--subtle); border-radius:8px; }
.ai-view-toggle .btn { border-color:transparent; background:transparent; }
.ai-view-toggle .btn.primary { background:var(--brand); border-color:var(--brand); }
.ai-mode-label { display:inline-flex; align-items:center; gap:6px; color:var(--text-2); }
.ai-service-pill { display:inline-flex; align-items:center; gap:6px; color:var(--text-2); font-size:12px; line-height:1; padding:0 4px; }
.ai-service-pill i, .ai-context-status i { width:7px; height:7px; border-radius:50%; background:#1dce7c; display:inline-block; }
.ai-service-pill.is-warn i, .ai-context-status.is-warn i { background:#ff9126; }
.ai-service-pill.is-bad i { background:#e93c3a; }
.ai-context-status.is-muted i { background:#b8c0cc; }
.ai-more { position:relative; }
.ai-more > summary { list-style:none; cursor:pointer; color:var(--text-3); font-size:12px; padding:6px 8px; border-radius:6px; }
.ai-more > summary::-webkit-details-marker { display:none; }
.ai-more > summary:hover { background:var(--subtle); color:var(--text-2); }
.ai-more-panel { position:absolute; right:0; top:calc(100% + 4px); z-index:8; min-width:168px; padding:6px; background:#fff; border:1px solid rgba(51,52,68,.12); border-radius:10px; box-shadow:0 8px 24px rgba(15,23,42,.1); display:grid; gap:4px; }
.ai-more-panel .btn { width:100%; justify-content:flex-start; }
.ai-center { display:flex; gap:12px; align-items:stretch; min-height:0; position:relative; }
.ai-fold { position:absolute; right:8px; top:-28px; display:flex; gap:4px; }
.ai-side, .ai-rail { background:#fff; border:1px solid rgba(51,52,68,.08); border-radius:10px; padding:12px; overflow:visible; }
.ai-side { width:240px; flex:0 0 240px; display:flex; flex-direction:column; }
.ai-rail { width:300px; flex:0 0 300px; }
.ai-side-head, .ai-rail-title { display:flex; align-items:center; justify-content:space-between; gap:8px; font-weight:600; margin-bottom:10px; }
.ai-new { width:100%; margin-bottom:12px; }
.ai-history { min-height:0; }
.ai-history-label { color:var(--text-3); margin:12px 0 6px; font-size:12px; }
.ai-history-item { position:relative; width:100%; text-align:left; border:0; background:transparent; border-radius:8px; padding:8px 8px 8px 10px; display:flex; align-items:center; gap:4px; }
.ai-history-item.is-active { background:var(--brand-soft); box-shadow:inset 3px 0 0 var(--brand); }
.ai-history-item.is-active .ai-history-main span { color:var(--text); font-weight:600; }
.ai-history-item:hover { background:var(--brand-soft); }
.ai-history-main { min-width:0; flex:1; display:flex; flex-direction:column; gap:2px; }
.ai-history-main span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ai-history-item time { color:var(--text-3); font-size:11px; }
.ai-history { display:grid; gap:8px; }
.ai-history-item {
  border:1px solid var(--divider);
  border-radius:var(--r-panel);
  background:#fff;
  padding:10px 10px 10px 12px;
  transition:border-color .16s ease, background .16s ease;
}
.ai-history-item.is-active {
  border-color:var(--brand);
  background:var(--brand-soft);
  box-shadow:inset 2px 0 0 var(--brand);
}
.ai-history-item:hover {
  border-color:var(--brand);
  background:var(--brand-soft);
}
.ai-history-more { opacity:0; border:0; background:transparent; color:var(--text-2); width:24px; height:24px; border-radius:6px; }
.ai-history-item:hover .ai-history-more, .ai-history-item:focus-within .ai-history-more, .ai-history-item.is-menu .ai-history-more { opacity:1; }
.ai-history-pop { position:absolute; right:8px; top:34px; z-index:4; background:#fff; border:1px solid rgba(51,52,68,.12); border-radius:8px; box-shadow:0 8px 24px rgba(15,23,42,.1); display:grid; min-width:96px; padding:4px; }
.ai-history-pop button { border:0; background:transparent; text-align:left; padding:6px 8px; border-radius:6px; }
.ai-history-pop button:hover { background:var(--subtle); }
.ai-main { flex:1; min-width:0; display:flex; flex-direction:column; background:#f4f7fb; border:1px solid rgba(51,52,68,.06); border-radius:10px; overflow:visible; }
.ai-thread { flex:1; overflow:visible; padding:20px 20px 8px; }
.ai-thread.is-empty { display:flex; }
.ai-feed, .ai-welcome { width:min(960px, 100%); margin:0 auto; }
.ai-thread.is-empty .ai-welcome { margin-top:8vh; }
.ai-msg { display:flex; gap:10px; align-items:flex-start; max-width:100%; margin-bottom:16px; }
.ai-msg.is-user { justify-content:flex-end; }
.ai-avatar { width:28px; height:28px; border-radius:8px; background:var(--brand); color:#fff; display:grid; place-items:center; font-size:11px; font-weight:600; flex:0 0 auto; }
.ai-bubble { background:var(--brand-soft); color:var(--text); border-radius:10px; padding:10px 12px; max-width:70%; line-height:1.6; }
.ai-answer { flex:1; min-width:0; max-width:calc(100% - 38px); }
.ai-lead, .ai-text { margin:0 0 10px; line-height:1.65; }
.ai-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin:0 0 10px; }
.ai-kpi { border:1px solid rgba(51,52,68,.08); background:#fff; border-radius:10px; padding:10px 12px; text-align:left; }
.ai-kpi span, .ai-kpi small { display:block; color:var(--text-2); }
.ai-kpi strong { display:block; margin-top:4px; font-size:18px; font-variant-numeric:tabular-nums; font-weight:600; }
.ai-kpi em { margin-left:4px; font-style:normal; font-size:12px; color:var(--text-3); font-weight:400; }
.ai-kpi small.is-up { color:#087344; }
.ai-kpi small.is-down { color:var(--danger); }
.ai-chart, .ai-conclusion, .ai-risks, .ai-calc, .ai-table { background:#fff; border:1px solid rgba(51,52,68,.08); border-radius:10px; padding:12px; margin-top:8px; }
.ai-chart figcaption, .ai-conclusion h3, .ai-risks h3, .ai-calc h3 { margin:0 0 8px; font-size:13px; }
.ai-plot { width:100%; height:auto; display:block; }
.ai-pie { width:148px; height:148px; }
.ai-legend { display:flex; flex-wrap:wrap; gap:8px 12px; list-style:none; margin:8px 0 0; padding:0; color:var(--text-2); }
.ai-legend i { display:inline-block; width:8px; height:8px; border-radius:99px; margin-right:4px; }
.ai-table-head { display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:8px; }
.ai-table .is-positive { color:#087344; font-weight:600; font-variant-numeric:tabular-nums; }
.ai-table .is-negative, .ai-calc .is-negative { color:var(--danger); font-weight:600; font-variant-numeric:tabular-nums; }
.ai-table .num, .ai-calc .num { font-variant-numeric:tabular-nums; }
.ai-conclusion ol { margin:0; padding-left:18px; display:grid; gap:6px; line-height:1.6; }
.ai-risk-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.ai-risk { background:var(--subtle); border-radius:8px; padding:10px; display:grid; gap:6px; }
.ai-risk p { margin:0; color:var(--text-2); line-height:1.5; }
.ai-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.ai-welcome { display:flex; gap:12px; align-items:flex-start; }
.ai-welcome-copy { min-width:0; flex:1; }
.ai-welcome h2 { margin:0 0 8px; font-size:22px; font-weight:600; }
.ai-welcome p, .ai-context-empty p { color:var(--text-2); line-height:1.6; margin:0; }
.ai-welcome-actions { display:flex; flex-wrap:wrap; gap:8px; margin:14px 0; }
.ai-scenes { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.ai-scene { text-align:left; border:1px solid rgba(51,52,68,.1); background:#fff; border-radius:10px; padding:12px; display:grid; gap:4px; }
.ai-scene:hover { border-color:var(--brand); background:var(--brand-soft); }
.ai-scene span { color:var(--brand); font-size:14px; }
.ai-scene strong { font-size:13px; }
.ai-scene em { font-style:normal; color:var(--text-3); font-size:12px; }
.ai-drop { margin:0 0 12px; border:1px dashed rgba(48,121,252,.45); border-radius:12px; background:#fff; padding:22px 16px; text-align:center; cursor:pointer; }
.ai-drop strong { display:block; margin-bottom:6px; }
.ai-drop p { margin:0; color:var(--text-2); }
.ai-compose { padding:10px 12px 12px; background:#f4f7fb; }
.ai-file-row { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:8px; }
.ai-file-chip { display:inline-flex; align-items:center; gap:6px; max-width:100%; background:#fff; border:1px solid rgba(51,52,68,.1); border-radius:8px; padding:6px 8px; }
.ai-file-chip em { font-style:normal; color:var(--brand); font-size:11px; }
.ai-file-chip button { border:0; background:transparent; color:var(--text-3); }
.ai-composer { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:8px; align-items:end; min-height:72px; padding:8px 8px 8px 10px; background:#fff; border:1px solid rgba(51,52,68,.1); border-radius:14px; box-shadow:0 8px 24px rgba(15,23,42,.06); }
.ai-compose.is-drag .ai-composer { border-color:var(--brand); background:var(--brand-soft); }
.ai-clip { width:32px; height:32px; border:0; background:transparent; border-radius:8px; font-size:16px; }
.ai-clip:hover { background:var(--subtle); }
.ai-composer textarea { border:0; min-height:44px; max-height:160px; resize:none; padding:8px 0; background:transparent; overflow:auto; }
.ai-composer textarea:focus { box-shadow:none; }
.ai-composer-side { display:flex; align-items:center; gap:8px; }
.ai-mode-switch { display:inline-flex; gap:2px; padding:2px; background:var(--subtle); border:1px solid var(--divider); border-radius:8px; }
.ai-mode-btn { border:0; background:transparent; color:var(--text-3); font-size:12px; line-height:1; min-height:28px; padding:0 8px; border-radius:6px; white-space:nowrap; }
.ai-mode-btn.is-active { background:#fff; color:var(--brand-strong); box-shadow:0 1px 2px rgba(15,23,42,.08); }
.ai-mode-btn:hover:not(.is-active) { color:var(--text-2); }
#ai-send[data-mode="send"] { width:36px; min-width:36px; height:36px; padding:0; border-radius:8px; font-size:0; }
#ai-send[data-mode="send"]::after { content:"↑"; font-size:16px; line-height:1; }
.ai-loading { min-width:240px; background:#fff; border:1px solid rgba(51,52,68,.08); border-radius:10px; padding:12px 14px; }
.ai-steps { list-style:none; margin:0; padding:0; display:grid; gap:6px; }
.ai-steps .is-done { color:var(--text-2); }
.ai-steps .is-current { color:var(--text); font-weight:600; }
.ai-loading-bar { display:block; height:3px; margin-top:8px; border-radius:99px; background:linear-gradient(90deg, var(--brand-soft), var(--brand), var(--brand-soft)); background-size:200% 100%; animation:ai-load 1.1s linear infinite; }
@keyframes ai-load { from { background-position:100% 0; } to { background-position:0 0; } }
.ai-error { background:var(--warning-soft); border-radius:8px; padding:10px 12px; margin-bottom:10px; display:grid; gap:8px; }
.ai-error.is-calc { background:var(--danger-soft); }
.ai-error p, .ai-error strong { margin:0; }
.ai-picker { position:absolute; inset:0; background:rgba(15,23,42,.28); display:grid; place-items:center; z-index:5; }
.ai-picker[hidden] { display:none; }
.ai-picker-card { width:min(420px, calc(100% - 32px)); background:#fff; border-radius:12px; padding:16px; display:grid; gap:10px; box-shadow:0 8px 24px rgba(15,23,42,.1); }
.ai-picker-list { display:grid; gap:8px; max-height:240px; overflow:auto; }
.ai-context-empty, .ai-context-block, .ai-missing { margin-bottom:12px; }
.ai-context-empty strong, .ai-context-name { display:block; margin:0 0 6px; font-size:15px; }
.ai-context-status { display:flex; align-items:center; gap:6px; margin:0 0 12px; color:var(--text-2); }
.ai-context-label { color:var(--text-3); font-size:12px; margin:8px 0 4px; }
.ai-progress, .ai-keys { margin:0; display:grid; gap:6px; }
.ai-progress div, .ai-keys div { display:flex; justify-content:space-between; gap:8px; }
.ai-progress dt, .ai-keys dt { color:var(--text-2); font-weight:400; }
.ai-progress dd, .ai-keys dd { margin:0; font-variant-numeric:tabular-nums; }
.ai-missing { background:var(--warning-soft); border-radius:8px; padding:10px; }
.ai-missing ul { margin:6px 0 8px; padding-left:16px; color:var(--text-2); }
.ai-versions { margin:0; padding-left:18px; display:grid; gap:4px; color:var(--text-2); }
.ai-context-actions { display:flex; flex-wrap:wrap; gap:8px; }
.ai-drawer { position:absolute; inset:0; background:rgba(15,23,42,.28); display:flex; justify-content:flex-end; z-index:6; }
.ai-drawer[hidden] { display:none; }
.ai-drawer-card { width:min(420px, 100%); height:100%; overflow:auto; background:#fff; padding:16px; box-shadow:-8px 0 24px rgba(15,23,42,.08); display:grid; align-content:start; gap:12px; }
.ai-drawer-card h3 { margin:0; }
.ai-drawer-card fieldset { border:1px solid rgba(51,52,68,.08); border-radius:10px; padding:10px; display:grid; gap:8px; }
.ai-drawer-card legend { padding:0 4px; font-weight:600; }
.ai-drawer-field { display:grid; grid-template-columns:96px minmax(0,1fr) auto; gap:8px; align-items:center; }
.ai-drawer-field em { font-style:normal; color:var(--text-3); }
.ai-center.is-left-collapsed .ai-side { display:none; }
@media (max-width:1279px) {
  .ai-kpis, .ai-risk-grid, .ai-scenes { grid-template-columns:1fr 1fr; }
}
@media (max-width:1023px) {
  .ai-kpis, .ai-risk-grid, .ai-scenes { grid-template-columns:1fr; }
  .ai-center { min-height:calc(100vh - 180px); }
  .ai-bubble { max-width:86%; }
}

/* 项目测算中心 / AI 对话测算：页面级视觉收敛，不改变结构或交互。 */
.ai-page-head { align-items:center; margin-bottom:14px; }
.ai-page-head h1 { font-size:21px; line-height:29px; letter-spacing:-.01em; }
.ai-page-head .ai-subtitle { margin-top:3px; font-size:12px; line-height:18px; }
.ai-page-head .head-actions { align-items:center; gap:6px; }
.ai-view-toggle { gap:2px; padding:2px; border:1px solid var(--divider); border-radius:var(--r-control); background:var(--subtle); }
.ai-view-toggle .btn { min-height:28px; padding:0 10px; border-radius:3px; color:var(--text-2); }
.ai-view-toggle .btn:hover { background:#fff; color:var(--text); }
.ai-view-toggle .btn.primary { box-shadow:none; color:#fff; }
.ai-service-pill { padding:0 2px; font-size:11px; color:var(--text-3); }
.ai-service-pill i { width:6px; height:6px; }
.ai-more > summary { padding:5px 6px; font-size:11px; }

.ai-center { gap:10px; min-height:0; }
.ai-fold { right:6px; top:-26px; gap:2px; }
.ai-fold .btn { min-height:24px; padding:0 6px; font-size:11px; color:var(--text-3); }
.ai-side, .ai-rail { border-color:var(--divider); border-radius:var(--r-card); padding:12px; box-shadow:none; }
.ai-side { width:224px; flex-basis:224px; }
.ai-rail { width:272px; flex-basis:272px; }
.ai-side-head, .ai-rail-title { margin-bottom:8px; font-size:13px; }
.ai-rail-title { padding-bottom:8px; border-bottom:1px solid var(--divider); }
.ai-main { border-color:var(--divider); border-radius:var(--r-card); background:#f7f9fc; }
.ai-thread { padding:16px 18px 6px; overflow:visible; }
.ai-side, .ai-rail, .ai-main { overflow:visible; }

.ai-new { min-height:30px; margin-bottom:10px; font-size:12px; }
.ai-history-label { margin:10px 0 4px; font-size:11px; }
.ai-history-item { min-height:48px; border-radius:var(--r-control); padding:7px 7px 7px 9px; }
.ai-history-item.is-active { box-shadow:inset 2px 0 0 var(--brand); background:#f0f6ff; }
.ai-history-main { gap:1px; }
.ai-history-main span { font-size:12px; line-height:17px; }
.ai-history-item time { font-size:10px; line-height:14px; }
.ai-history-more { width:22px; height:22px; }
.ai-history,
.ai-history-group { display:grid; row-gap:6px; }
.ai-history-item.is-active { box-shadow:none; }

.ai-msg { gap:8px; margin-bottom:14px; }
.ai-avatar { width:26px; height:26px; border-radius:6px; font-size:10px; }
.ai-avatar {
  width:26px;
  height:26px;
  border:0;
  border-radius:50%;
  background:transparent url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjQ4cHgiIGhlaWdodD0iMjQ4cHgiIHZpZXdCb3g9IjAgMCAyNDggMjQ4IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPuWbvuW9ojwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjQ4LDEyNCBDMjQ4LDE5Mi40ODMzMDkgMTkyLjQ4MzMwOSwyNDggMTI0LDI0OCBDNTUuNTE2NjkxLDI0OCAwLDE5Mi40ODMzMDkgMCwxMjQgQzAsNTUuNTE2NjkxIDU1LjUxNjY5MSwwIDEyNCwwIEMxOTIuNDgzMzA5LDAgMjQ4LDU1LjUxNjY5MSAyNDgsMTI0IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjEwMCUiIHkxPSI1MCUiIHgyPSIwJSIgeTI9IjUwJSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjOEU1OUY3IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzNjcwRkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i5Zu+5b2iIiBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIHhsaW5rOmhyZWY9IiNwYXRoLTEiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGNpcmNsZSBpZD0i5qSt5ZyG5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIiBjeD0iMTI0IiBjeT0iMTI0IiByPSIxMjQiPjwvY2lyY2xlPgogICAgICAgIDxnIGlkPSLnvJbnu4QiIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQsIDY1KSIgZmlsbD0iI0ZGRkZGRiI+ICAgICAgICAgICAgPHBhdGggZD0iTTE1MC45ODk5NDcsNzcuMTUxNDc1NSBDMTQ3Ljc3MzI3NCw5NS4yNDQzNzE2IDEzMS41NTUxOCwxMDguOTk0OTczIDExMi4wMzYyMDgsMTA4Ljk5NDk3MyBMNDYuMTM2NTE4NywxMDguOTk0OTczIEMyNi41NDE3NjA3LDEwOC45OTQ5NzMgMTAuMjY0NzIyOCw5NS4xMjY1NTczIDcuMTQ5MDk3MjYsNzYuOTE1ODQ3IEM1LjMxMjA5MTg4LDc3LjA2ODc3NiAzLjQ5NDkxMDM4LDc2LjQ0NjE4NyAyLjEzODE5MTE2LDc1LjE5OTA0ODEgQzAuNzgxNDcxOTM2LDczLjk1MTkwOTIgMC4wMDkxMjA2NjM0Myw3Mi4xOTQxMTgzIDAuMDA4NDIwNTY4MjYsNzAuMzUxOTEyNiBMMCw0NS4wNTU1MTkyIEMwLDQxLjQyMDEwOTMgMi45NDcyMTMyOSwzOC40NjYzMzg5IDYuNTkzMzM3MSwzOC40NjYzMzg3IEM2LjYwMTc1NzY3LDE3LjIyNjEyMDIgMjQuMzAxODc4NywwIDQ2LjEzNjUxODcsMCBMMTEyLjAzNjIwOCwwIEMxMzMuODc5MjY4LDAsMTUxLjU3OTM4OSwxNy4yMjYxMjAyIDE1MS41NzkzODksMzguNDY2MzM4NyBMMTUxLjU3OTM4OSwzOS4zOTIwMjE5IEMxNTMuNTY5NjExLDM4LjgxODMyOTkgMTU1LjcxMzkxMSwzOS4yMTI2NzA1IDE1Ny4zNjk0MDYsNDAuNDU2ODE4IEMxNTkuMDI0OTAyLDQxLjcwMDk2NTYgMTYwLDQzLjY1MDI3NjYgMTYwLDQ1LjcyMDMyNzkgTDE2MCw3MS4wMTY3MjEzIEMxNjAsNzMuMTk3ODE4IDE1OC45MjI2ODMsNzUuMjM4MjcyNCAxNTcuMTE5MDM2LDc2LjQ2NjMzNzQgQzE1NS4zMTUzODksNzcuNjk0NDAyNCAxNTMuMDIwNTI1LDc3Ljk1MDkzMyAxNTAuOTg5OTQ3LDc3LjE1MTQ3NTUgTDE1MC45ODk5NDcsNzcuMTUxNDc1NSBaIi8+ICAgICAgICAgICAgPHBhdGggZD0iTTU4Ljc5MjY5NDYsMTM0LjY0NDgwOSBDNDguMTY0NzcwNywxMzQuNjQwMTYzIDM5LjU1MTYwMjIsMTI2LjAyODY1NiAzOS41NTE2MDIyLDExNS40MDc0MzIgTDExOC42Mjk1NDUsMTE1LjQwNzQzMiBDMTE4LjYyOTU0NSwxMjAuNTA5NTAxIDExNi42MDE0NzcsMTI1LjQwMjYwMyAxMTIuOTkxNDkzLDEyOS4wMTAzMTEgQzEwOS4zODE1MDksMTMyLjYxODAxOSAxMDQuNDg1MzIsMTM0LjY0NDgwOSAzOS41NTE2MDIyLDExNS40MDc0MzIgWiIvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+") center/contain no-repeat;
  box-shadow:none;
}
.ai-bubble { border-radius:var(--r-card); padding:9px 11px; }
.ai-lead, .ai-text { margin-bottom:8px; line-height:1.6; }
.ai-kpis { gap:0; margin:0 0 12px; overflow:hidden; border:1px solid var(--divider); border-radius:var(--r-card); background:#fff; }
.ai-kpi { min-height:78px; border:0; border-right:1px solid var(--divider); border-radius:0; padding:10px 12px; background:transparent; }
.ai-kpi:last-child { border-right:0; }
.ai-kpi:hover { background:#f8fbff; }
.ai-kpi span { font-size:11px; line-height:16px; color:var(--text-3); }
.ai-kpi strong { margin-top:3px; font-size:19px; line-height:25px; font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
.ai-kpi em { margin-left:3px; font-size:11px; color:var(--text-3); }
.ai-kpi small { margin-top:1px; font-size:10px; line-height:14px; color:var(--text-3); }

.ai-chart, .ai-table, .ai-risks, .ai-conclusion, .ai-calc { margin-top:12px; padding:12px 0 0; border:0; border-top:1px solid var(--divider); border-radius:0; background:transparent; }
.ai-chart figcaption, .ai-conclusion h3, .ai-risks h3, .ai-calc h3 { margin-bottom:6px; font-size:13px; line-height:18px; }
.ai-chart .help { margin:6px 0 0; font-size:10px; line-height:15px; }
.ai-legend { gap:5px 10px; margin-top:6px; font-size:11px; }
.ai-legend i { width:6px; height:6px; margin-right:3px; }
.ai-plot { margin-top:2px; }
.ai-table-head { margin-bottom:6px; }
.ai-table-head > strong { font-size:13px; }
.ai-table .table-wrap { border:1px solid var(--divider); border-radius:var(--r-control); background:#fff; }
.ai-table th { height:36px; padding:0 10px; background:#fafbfd; color:var(--text-2); font-size:11px; font-weight:500; }
.ai-table td { height:42px; padding:6px 10px; font-size:12px; }
.ai-table .num { font-variant-numeric:tabular-nums; }
.ai-table tr:hover td { background:#f8fbff; }
.ai-table .table-wrap::-webkit-scrollbar { height:6px; }
.ai-table .table-wrap::-webkit-scrollbar-thumb { border-radius:99px; background:#d7dee8; }

.ai-risk-grid { gap:8px; }
.ai-risk { border-radius:var(--r-control); padding:9px 10px; background:#fff7f6; border-left:2px solid rgba(233,60,58,.58); }
.ai-risk p { font-size:11px; line-height:17px; }
.ai-risk .tag { min-height:20px; border:0; border-radius:3px; padding:0 6px; font-size:10px; }
.ai-conclusion ol { gap:5px; color:var(--text-2); line-height:1.55; }
.ai-actions { gap:6px; margin-top:8px; }
.ai-answer > .ai-actions .btn:first-child { color:var(--brand); border-color:var(--brand-soft); background:var(--brand-soft); }
.ai-answer > .ai-actions .btn:first-child:hover { color:var(--brand-strong); border-color:var(--brand-soft); background:#dceaff; }
.ai-answer > .ai-actions .btn:not(:first-child) { color:var(--text-2); }
.ai-feed .ai-answer .ai-actions .btn { border-radius:999px; }
.ai-page-head h1 {
  font-size:20px;
  line-height:28px;
}
.ai-page-head .ai-subtitle {
  font-size:12px;
  line-height:18px;
}
.ai-error { margin-bottom:8px; border-radius:var(--r-control); padding:9px 10px; border-left:2px solid var(--warning); box-shadow:none; }
.ai-error .btn { min-height:26px; padding:0 8px; }

.ai-context-name { margin-bottom:4px; font-size:15px; line-height:22px; }
.ai-context-status { margin-bottom:14px; font-size:11px; }
.ai-context-label { margin:12px 0 5px; padding-top:10px; border-top:1px solid var(--divider); font-size:11px; }
.ai-context-block:first-of-type .ai-context-label { margin-top:0; }
.ai-progress, .ai-keys { gap:5px; }
.ai-progress div, .ai-keys div { min-height:20px; align-items:baseline; }
.ai-progress dt, .ai-keys dt { font-size:11px; color:var(--text-3); }
.ai-progress dd, .ai-keys dd { font-size:12px; color:var(--text); font-variant-numeric:tabular-nums; }
.ai-versions { font-size:11px; line-height:17px; }
.ai-context-actions { gap:6px; margin-top:2px; }
.ai-context-actions .btn { min-height:28px; padding:0 8px; }

.ai-compose { padding:8px 10px 10px; background:#f7f9fc; }
.ai-composer { min-height:60px; gap:6px; padding:7px 7px 7px 9px; border-color:var(--divider); border-radius:var(--r-card); box-shadow:0 2px 8px rgba(15,23,42,.04); }
.ai-clip { width:30px; height:30px; border-radius:var(--r-control); font-size:15px; }
.ai-composer textarea { min-height:38px; padding:6px 0; font-size:12px; }
.ai-composer-side { gap:6px; }
.ai-mode-switch { border-color:var(--divider); border-radius:var(--r-control); }
.ai-mode-btn { min-height:26px; padding:0 7px; border-radius:3px; font-size:11px; }
.ai-mode-btn.is-active { box-shadow:0 1px 2px rgba(15,23,42,.06); }
#ai-send[data-mode="send"] { width:32px; min-width:32px; height:32px; border-radius:var(--r-control); }

@media (max-width:1180px) {
  .ai-center { gap:8px; }
  .ai-side { width:176px; flex-basis:176px; }
  .ai-rail { width:216px; flex-basis:216px; }
  .ai-thread { padding-left:14px; padding-right:14px; }
  .ai-kpi { padding-left:10px; padding-right:10px; }
}

@media (max-width:1023px) {
  .ai-kpi:nth-child(2n) { border-right:0; }
  .ai-kpi:nth-child(n + 3) { border-top:1px solid var(--divider); }
}

/* AI 对话区：底部浮动输入框，仅调整页面级视觉表现。 */
.ai-main { min-height:0; height:100%; background:#f1f4f8; }
.ai-thread { background:#f1f4f8; }
.ai-thread { min-height:0; }
.ai-thread { padding-bottom:136px; }
.ai-thread { scrollbar-width:thin; scrollbar-color:#c8ced8 transparent; }
.ai-thread::-webkit-scrollbar { width:8px; }
.ai-thread::-webkit-scrollbar-track { background:transparent; margin-block:24px; }
.ai-thread::-webkit-scrollbar-thumb { background:#c8ced8; border:2px solid transparent; border-radius:999px; background-clip:content-box; }
.ai-thread::-webkit-scrollbar-thumb:hover { background:#aeb7c4; border-width:1px; }
.ai-center {
  gap:0;
  background:#fff;
  border-radius:var(--r-panel);
  overflow:hidden;
}
.ai-side,
.ai-main,
.ai-rail {
  background:#fff;
  border:0;
  border-radius:0;
  box-shadow:none;
}
.ai-side,
.ai-main {
  border-right:1px solid var(--divider);
}
.ai-thread { background:#fff; }
.ai-compose { background:#fff; }
.ai-compose {
  isolation:isolate;
}
.ai-compose::before {
  content:"";
  position:absolute;
  z-index:0;
  left:0;
  right:0;
  top:0;
  bottom:-100vh;
  background:#fff;
  pointer-events:none;
}
.ai-compose > * {
  position:relative;
  z-index:1;
}
.ai-center { height:auto; min-height:0; }
.ai-compose {
  position:relative;
  left:calc(var(--sidebar) + 24px + 224px + 10px);
  right:calc(24px + 272px + 10px);
  bottom:auto;
  z-index:auto;
  margin:0;
  min-height:112px;
  overflow:visible;
  padding:10px 12px 14px;
  background:#f1f4f8;
}
.ai-composer {
  min-height:78px;
  gap:10px;
  align-items:center;
  padding:10px 10px 10px 14px;
  border-color:rgba(51,52,68,.1);
  border-radius:18px;
  box-shadow:0 4px 14px rgba(15,23,42,.06);
}
.ai-composer textarea {
  align-self:stretch;
  height:40px;
  min-height:40px;
  padding:0;
  font-size:13px;
  line-height:20px;
}
.ai-clip {
  width:30px;
  height:30px;
  border-radius:8px;
  color:#333;
  font-size:0;
}
.ai-clip::before {
  content:"+";
  display:block;
  color:#333;
  font-size:24px;
  font-weight:400;
  line-height:28px;
}
.ai-composer-side { gap:8px; }
.ai-mode-switch { gap:1px; padding:2px; border-radius:8px; }
.ai-mode-btn { min-height:28px; padding:0 8px; border-radius:6px; font-size:11px; }
.ai-mode-btn.is-active { box-shadow:0 1px 3px rgba(15,23,42,.08); }
#ai-send[data-mode="send"] {
  width:38px;
  min-width:38px;
  height:38px;
  border-radius:50%;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  line-height:0;
}
#ai-send[data-mode="send"]::after {
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:19px;
  height:19px;
  margin:0;
  transform:translate(-50%,-50%);
  background:#fff;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M906.4448 28.859733L75.741867 284.3648c-57.8048 17.783467-68.317867 95.061333-17.3568 127.6416l245.435733 156.893867a70.980267 70.980267 0 0 0 84.002133-5.563734l306.3296-258.491733c16.605867-14.011733 39.0144 8.379733 25.002667 25.002667L460.680533 636.228267a70.946133 70.946133 0 0 0-5.546666 83.985066l156.859733 245.4016c32.5632 50.944 109.858133 40.430933 127.6416-17.3568L995.140267 117.572267c16.7424-54.459733-34.2528-105.454933-88.695467-88.712534z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M906.4448 28.859733L75.741867 284.3648c-57.8048 17.783467-68.317867 95.061333-17.3568 127.6416l245.435733 156.893867a70.980267 70.980267 0 0 0 84.002133-5.563734l306.3296-258.491733c16.605867-14.011733 39.0144 8.379733 25.002667 25.002667L460.680533 636.228267a70.946133 70.946133 0 0 0-5.546666 83.985066l156.859733 245.4016c32.5632 50.944 109.858133 40.430933 127.6416-17.3568L995.140267 117.572267c16.7424-54.459733-34.2528-105.454933-88.695467-88.712534z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.ai-composer {
  min-height:92px;
  align-items:stretch;
  grid-template-columns:minmax(0,1fr) auto;
  position:relative;
  padding:12px 12px 12px 14px;
}
.ai-composer textarea {
  grid-column:1;
  align-self:start;
  height:40px;
  min-height:40px;
  margin-top:0;
}
.ai-clip,
.ai-composer-side {
  align-self:end;
}
.ai-clip {
  position:absolute;
  left:14px;
  bottom:12px;
  margin:0;
}
.ai-composer-side { grid-column:2; }
#ai-send[data-mode="send"] { border:0; }
.ai-compose { background:transparent; }

.ai-center.is-left-collapsed .ai-compose { left:calc(var(--sidebar) + 24px); }

@media (max-width:1023px) {
  .ai-center { height:auto; min-height:0; }
}

@media (max-width:1180px) and (min-width:601px) {
  .ai-compose {
    left:calc(var(--sidebar) + 24px + 176px + 8px);
    right:calc(24px + 216px + 8px);
  }
}

@media (max-width:600px) {
  .ai-compose { left:12px; right:12px; bottom:72px; }
  .ai-center.is-left-collapsed .ai-compose { left:12px; right:12px; }
}
.ai-avatar {
  background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjQ4cHgiIGhlaWdodD0iMjQ4cHgiIHZpZXdCb3g9IjAgMCAyNDggMjQ4IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPHRpdGxlPuWbvuW9ojwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjQ4LDEyNCBDMjQ4LDE5Mi40ODMzMDkgMTkyLjQ4MzMwOSwyNDggMTI0LDI0OCBDNTUuNTE2NjkxLDI0OCAwLDE5Mi40ODMzMDkgMCwxMjQgQzAsNTUuNTE2NjkxIDU1LjUxNjY5MSwwIDEyNCwwIEMxOTIuNDgzMzA5LDAgMjQ4LDU1LjUxNjY5MSAyNDgsMTI0IFoiIGlkPSJwYXRoLTEiPjwvcGF0aD4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjEwMCUiIHkxPSI1MCUiIHgyPSIwJSIgeTI9IjUwJSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjOEU1OUY3IiBvZmZzZXQ9IjAlIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMzNjcwRkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i5Zu+5b2iIiBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIHhsaW5rOmhyZWY9IiNwYXRoLTEiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGNpcmNsZSBpZD0i5qSt5ZyG5b2iIiBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50LTIpIiBjeD0iMTI0IiBjeT0iMTI0IiByPSIxMjQiPjwvY2lyY2xlPgogICAgICAgIDxnIGlkPSLnvJbnu4QiIHN0cm9rZS13aWR0aD0iMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQsIDY1KSIgZmlsbD0iI0ZGRkZGRiI+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNTAuOTg5OTQ3LDc3LjE1MTQ3NTUgQzE0Ny43NzMyNzQsOTUuMjQ0MzcxNiAxMzEuNTU1MTgsMTA4Ljk5NDk3MyAxMTIuMDM2MjA4LDEwOC45OTQ5NzMgTDQ2LjEzNjUxODcsMTA4Ljk5NDk3MyBDMjYuNTQxNzYwNywxMDguOTk0OTczIDEwLjI2NDcyMjgsOTUuMTI2NTU3MyA3LjE0OTA5NzI2LDc2LjkxNTg0NyBDNS4zMTIwOTE4OCw3Ny4wNjg3NzYgMy40OTQ5MTAzOCw3Ni40NDYxODcgMi4xMzgxOTExNiw3NS4xOTkwNDgxIEMwLjc4MTQ3MTkzNiw3My45NTE5MDkyIDAuMDA5MTIwNjYzNDMsNzIuMTk0MTE4MyAwLjAwODQyMDU2ODI2LDcwLjM1MTkxMjYgTDAsNDUuMDU1NTE5MiBDMCw0MS40MjAxMDkzIDIuOTQ3MjEzMjksMzguNDY2MzM4OSA2LjU5MzMzNzEsMzguNDY2MzM4NyBDNi42MDE3NTc2NywxNy4yMjYxMjAyIDI0LjMwMTg3ODcsMCA0Ni4xMzY1MTg3LDAgTDExMi4wMzYyMDgsMCBDMTMzLjg3OTI2OCwwIDE1MS41NzkzODksMTcuMjI2MTIwMiAxNTEuNTc5Mzg5LDM4LjQ2NjMzODcgTDE1MS41NzkzODksMzkuMzkyMDIxOSBDMTUzLjU2OTYxMSwzOC44MTgzMjkzIDE1NS43MTM5MTEsMzkuMjEyNjcwNSAxNTcuMzY5NDA2LDQwLjQ1NjgxOCBDMTU5LjAyNDkwMiw0MS43MDA5NjU2IDE2MCw0My42NTAyNzY2IDE2MCw0NS43MjAzMjc5IEwxNjAsNzEuMDE2NzIxMyBDMTYwLDczLjE5NzgxOCAxNTguOTIyNjgzLDc1LjIzODI3MjQgMTU3LjExOTAzNiw3Ni40NjYzMzc0IEMxNTUuMzE1Mzg5LDc3LjY5NDQwMjQgMTUzLjAyMDUyNSw3Ny45NTA5MzMgMTUwLjk4OTk0Nyw3Ny4xNTE0NzU1IEwxNTAuOTg5OTQ3LDc3LjE1MTQ3NTUgWiBNNDYuMTQ0OTM5MywxNi4wMzExNDc1IEMzMy40MDQ1NTczLDE2LjAzMTE0NzUgMjMuMDgwODkwMywyNi4wNzkwMTYzIDIzLjA4MDg5MDMsMzguNDY2MzM4NyBMMjMuMDgwODkwMyw3MC41Mjg2MzM5IEMyMy4wODA4OTAzLDgyLjkyNDM3MTUgMzMuNDA0NTU3NCw5Mi45NzIyNDA0IDQ2LjE1MzM2LDkyLjk3MjI0MDQgTDExMi4wNDQ2MjgsOTIuOTcyMjQwNCBDMTI0Ljc4NTAxLDkyLjk3MjI0MDQgMTM1LjExNzA5OCw4Mi45MjQzNzE1IDEzNS4xMTcwOTgsNzAuNTI4NjMzOSBMMTM1LjExNzA5OCwzOC40NjYzMzg3IEMxMzUuMTE3MDk4LDI2LjA3OTAxNjMgMTI0Ljc4NTAxLDE2LjAzMTE0NzUgMTEyLjA0NDYyOCwxNi4wMzExNDc1IEw0Ni4xMzY1MTg3LDE2LjAzMTE0NzUgTDQ2LjE0NDkzOTMsMTYuMDMxMTQ3NSBaIE01Ni4wMjIzMTQxLDMyLjA2MjI5NTEgQzYxLjQ4NzI4OTYsMzIuMDYyMjk1MSA2NS45MDgxMDk2LDM2LjQ4MDMyNzkgNjUuOTA4MTA5Niw0MS45MzM0NDI3IEw2NS45MDgxMDk2LDU5LjA5MjI0MDQgQzY1LjkwODEwOTYsNjQuNTQ4NTcyMyA2MS40ODIwODgyLDY4Ljk3MTgwMzMgNTYuMDIyMzE0MSw2OC45NzE4MDMzIEM1MC41NjI1NDAxLDY4Ljk3MTgwMzMgNDYuMTM2NTE4Nyw2NC41NDg1NzIzIDQ2LjEzNjUxODcsNTkuMDkyMjQwNCBMNDYuMTM2NTE4Nyw0MS45MzM0NDI3IEM0Ni4xMzY1MTg3LDM2LjQ4MDMyNzkgNTAuNTY1NzU5MywzMi4wNjIyOTUxIDU2LjAyMjMxNDEsMzIuMDYyMjk1MSBMNTYuMDIyMzE0MSwzMi4wNjIyOTUxIFogTTEwMi4xNTA0MTIsMzIuMDYyMjk1MSBDMTA3LjYxNTM4OCwzMi4wNjIyOTUxIDExMi4wMzYyMDgsMzYuNDgwMzI3OSAxMTIuMDM2MjA4LDQxLjkzMzQ0MjcgTDExMi4wMzYyMDgsNTkuMDkyMjQwNCBDMTEyLjE0MTI4Myw2Mi42ODkxMDM5IDExMC4yODExODMsNjYuMDU4NjA4IDEwNy4xODA1NzcsNjcuODg4MDM4MyBDMTA0LjA3OTk3MSw2OS43MTc0Njg1IDEwMC4yMjkyNzUsNjkuNzE3NDY4NSA5Ny4xMjg2Njg2LDY3Ljg4ODAzODMgQzk0LjAyODA2MjYsNjYuMDU4NjA4IDkyLjE2Nzk2Miw2Mi42ODkxMDM5IDkyLjI3MzAzNzYsNTkuMDkyMjQwNCBMOTIuMjczMDM3Niw0MS45MzM0NDI3IEM5Mi4yNzMwMzc2LDM2LjQ4MDMyNzkgOTYuNjkzODU3NCwzMi4wNjIyOTUxIDEwMi4xNTA0MTIsMzIuMDYyMjk1MSBMMTAyLjE1MDQxMiwzMi4wNjIyOTUxIFoiIGlkPSLlvaLnirYiIGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgogICAgICAgICAgICA8cGF0aCBkPSJNNTguNzkyNjk0NiwxMzQuNjQ0ODA5IEM0OC4xNjQ3NzA3LDEzNC42NDAxNjMgMzkuNTUxNjAyMiwxMjYuMDI4NjU2IDM5LjU1MTYwMjIsMTE1LjQwNzQzMiBMMTE4LjYyOTU0NSwxMTUuNDA3NDMyIEMxMTguNjI5NTQ1LDEyMC41MDk1MDEgMTE2LjYwMTQ3NywxMjUuNDAyNjAzIDExMi45OTE0OTMsMTI5LjAxMDMxMSBDMTA5LjM4MTUwOSwxMzIuNjE4MDE5IDEwNC40ODUzMiwxMzQuNjQ0ODA5IDk5LjM4MDAzMTgsMTM0LjY0NDgwOSBMNTguNzkyNjk0NiwxMzQuNjQ0ODA5IFoiIGlkPSLot6/lvoQiIGZpbGwtcnVsZT0ibm9uemVybyI+PC9wYXRoPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+");
  background-position:center;
  background-size:contain;
  background-repeat:no-repeat;
  border:0;
  border-radius:50%;
  box-shadow:none;
  font-size:0;
}
.ai-center > .ai-side,
.ai-center > .ai-main,
.ai-center > .ai-rail {
  height:100%;
  min-height:0;
}
.ai-compose {
  bottom:0;
  background:#fff;
}
.ai-center::before {
  content:"";
  position:absolute;
  z-index:0;
  inset:0;
  background:#fff;
  pointer-events:none;
}
.ai-center > * {
  position:relative;
  z-index:1;
}
.ai-center > .ai-fold {
  position:absolute;
  z-index:2;
}
.main:has(#ai-center)::after {
  content:"";
  position:fixed;
  left:var(--sidebar);
  right:0;
  bottom:0;
  height:96px;
  background:#fff;
  pointer-events:none;
  z-index:0;
}
#main-content:has(#ai-center) > .calc-breadcrumb {
  display:none;
}
.calc-center-list-card {
  padding:0 18px 18px;
}
.calc-center-metric-row .metric-label {
  display:flex;
  align-items:center;
  min-height:16px;
  gap:8px;
}
.calc-center-metric-row .calc-metric-marker {
  width:4px;
  height:16px;
  flex:0 0 4px;
  border-radius:1px;
  background:var(--brand);
}
.calc-center-metric-row .metric-card:nth-child(2) .calc-metric-marker {
  background:var(--energy);
}
.calc-center-metric-row .metric-card:nth-child(3) .calc-metric-marker {
  background:var(--warning);
}
.calc-center-metric-row .metric-card:nth-child(4) .calc-metric-marker {
  background:var(--danger);
}
.calc-center-tabs {
  display:flex;
  align-items:flex-end;
  gap:24px;
  min-height:46px;
  margin-bottom:16px;
  border-bottom:1px solid var(--divider);
}
.calc-center-table-action-buttons { display:flex; align-items:center; gap:8px; margin-left:auto; align-self:center; }
.calc-center-tab {
  position:relative;
  height:46px;
  padding:12px 0;
  border:0;
  background:transparent;
  color:var(--text-2);
  font-size:12px;
  font-weight:400;
  cursor:pointer;
}
.calc-center-tab.is-active {
  color:var(--brand-strong);
  font-weight:600;
}
.calc-center-tab.is-active::after {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-1px;
  height:3px;
  border-radius:0;
  background:var(--brand);
}
.calc-center-tab:focus-visible {
  outline:2px solid var(--brand-soft);
  outline-offset:2px;
}
.calc-center-tab-panel[hidden] {
  display:none;
}
.calc-center-tab-panel .section-title {
  padding:0;
  margin-bottom:12px;
}
.calc-center-tab-panel .section-title > div > p {
  margin:0;
}
.calc-center-tab-panel .section-title h2 {
  font-size:15px;
}
@media (max-width:640px) {
  .calc-center-list-card { padding:0 10px 12px; }
  .calc-center-tabs { gap:20px; }
}
.ai-context-actions {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:8px;
}
.ai-context-actions .btn {
  width:100%;
  min-width:0;
  font-weight:400;
}
.ai-answer > .ai-chart,
.ai-answer > .ai-table,
.ai-answer > .ai-risks,
.ai-answer > .ai-conclusion,
.ai-answer > .ai-calc {
  width:100%;
}
.ai-table .table-wrap {
  border:0;
}
.ai-rail-title {
  padding-left:0;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  border-bottom:0;
}
.ai-rail-title::before {
  content:"";
  position:static;
  display:block;
  flex:0 0 3px;
  width:3px;
  height:16px;
  border-radius:2px;
  background:var(--brand);
}
.ai-keys dt { color:#666; }
.ai-center > .ai-side,
.ai-center > .ai-main,
.ai-center > .ai-rail {
  background:transparent;
}
.ai-center > .ai-compose {
  position:fixed;
  z-index:3;
}
.ai-history-item {
  border-radius:var(--r-card);
}
.ai-new {
  border:0;
  border-radius:var(--r-card);
}
.ai-scene span {
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border:0;
  border-radius:var(--r-panel);
  background:var(--brand-soft);
  color:var(--brand);
  font-family:Arial, sans-serif;
  font-size:0;
  font-weight:600;
  line-height:1;
}
.ai-history-more,
.ai-history-more:hover,
.ai-history-more:focus-visible {
  border:0;
  outline:0;
  box-shadow:none;
}
.ai-scene span::before {
  content:none !important;
}
.ai-scene .ai-scene-icon img {
  display:block;
  width:22px;
  height:22px;
  object-fit:contain;
  filter:brightness(0) saturate(100%) invert(42%) sepia(99%) saturate(2207%) hue-rotate(210deg) brightness(101%) contrast(98%);
}
#ai-send[data-mode="send"] {
  width:34px;
  min-width:34px;
  height:34px;
  border:0;
  box-shadow:none;
}
#ai-send[data-mode="send"]:focus-visible { box-shadow:none; }
#ai-send[data-mode="send"]::after {
  width:17px;
  height:17px;
}
/* 分析内容：保持图表紧凑，并让单项内容充分利用可用宽度。 */
.ai-kpi {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:flex-start;
  vertical-align:top;
}
.ai-chart:nth-of-type(1) .ai-plot rect {
  transform:scaleX(.68);
  transform-box:fill-box;
  transform-origin:center;
}
.ai-chart:nth-of-type(1) .ai-plot rect {
  width:28px;
  transform:none;
}
.ai-chart:nth-of-type(3) .ai-plot {
  max-height:160px;
}
.ai-chart:has(.ai-pie) {
  display:grid;
  grid-template-columns:minmax(0,1fr) 148px;
  grid-template-areas:
    "caption caption"
    "plot legend"
    "help help";
  align-items:center;
  column-gap:12px;
}
.ai-chart:has(.ai-pie) figcaption { grid-area:caption; }
.ai-chart:has(.ai-pie) .ai-pie {
  grid-area:plot;
  justify-self:center;
}
.ai-chart:has(.ai-pie) .ai-legend {
  grid-area:legend;
  display:grid;
  gap:5px;
  margin:0;
}
.ai-chart:has(.ai-pie) .help { grid-area:help; }
.ai-table-head > strong { font-size:13px; font-weight:600; }
.ai-table-head > span { display:flex; gap:4px; }
.ai-table-head > span .btn {
  min-height:24px;
  padding:0 6px;
  font-size:10px;
  font-weight:400;
}
.ai-risk-grid:has(.ai-risk:only-child) { grid-template-columns:1fr; }
.ai-risk:only-child {
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  padding:8px 10px;
}
.ai-risk:only-child > button {
  grid-column:2;
  grid-row:1 / span 2;
  align-self:center;
}
.calc-result-hero {
  border:0 !important;
}
.calc-workspace-section .section-title h2 {
  position:relative;
  padding-left:11px;
}
.calc-workspace-section > .section-title h2::before,
.calc-workspace-section > .section-title > div > h2::before {
  content:"";
  position:absolute;
  left:0;
  top:50%;
  width:3px;
  height:16px;
  border-radius:2px;
  background:var(--brand);
  transform:translateY(-50%);
}
.calc-workspace-grid {
  align-items:stretch;
}
.calc-workspace-grid > .calc-workspace-section {
  height:100%;
  min-height:100%;
}
.calc-ai-report {
  border:0 !important;
  box-shadow:none;
}
@media (max-width:600px) {
  .ai-compose { bottom:72px; }
}

/* AI 对话工作台：高度跟随视口，仅消息内容区滚动。 */
body:has(#ai-center) { overflow:hidden; }
.main:has(#ai-center) {
  height:100dvh;
  min-height:0;
  padding-bottom:16px;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.main:has(#ai-center)::after { display:none; }
.calc-center-page-head {
  flex:0 0 auto;
  min-height:52px;
  margin-bottom:16px;
  align-items:center;
}
.ai-center {
  flex:1 1 auto;
  height:auto !important;
  min-height:0 !important;
  overflow:hidden !important;
}
.ai-side,
.ai-rail,
.ai-main {
  height:100% !important;
  min-height:0;
  max-height:none;
}
.ai-side,
.ai-rail {
  overflow-x:hidden !important;
  overflow-y:auto !important;
  overscroll-behavior:contain;
}
.ai-main {
  display:flex;
  flex-direction:column;
  overflow:hidden !important;
  background:#fff;
}
.ai-thread {
  flex:1 1 auto;
  height:auto !important;
  min-height:0;
  max-height:none;
  padding-bottom:24px;
  overflow-x:hidden !important;
  overflow-y:auto !important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  background:#fff;
}
.ai-center > .ai-main > .ai-compose {
  position:relative !important;
  flex:0 0 auto;
  left:auto !important;
  right:auto !important;
  bottom:auto !important;
  z-index:5 !important;
  width:100%;
  min-height:116px;
  margin:0;
  overflow:visible;
  padding:14px 18px 18px;
  border-top:0;
  background:#fff;
  box-shadow:none;
}
.ai-center > .ai-main > .ai-compose::before {
  content:"";
  display:block;
  position:absolute;
  z-index:0;
  left:0;
  right:0;
  top:-32px;
  height:32px;
  background:linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,.84) 68%, #fff);
  pointer-events:none;
}
.ai-center > .ai-main > .ai-compose > * {
  position:relative;
  z-index:1;
}
.ai-center > .ai-main > .ai-compose .ai-composer {
  width:min(920px, 100%);
  margin:0 auto;
  border-color:#dfe5ed;
  border-radius:20px;
  box-shadow:0 5px 18px rgba(15,23,42,.08);
}

@media (max-width:600px) {
  .main:has(#ai-center) { padding-bottom:8px; }
  .ai-center > .ai-main > .ai-compose {
    min-height:104px;
    padding:10px 12px 12px;
  }
}

/* 三栏工作台：为会话和上下文保留足够的可读宽度，并强化分隔线。 */
.ai-center {
  --ai-side-width:280px;
  --ai-rail-width:300px;
  gap:0;
  border:0;
  border-radius:var(--r-panel);
  background:transparent;
}
.ai-side {
  width:var(--ai-side-width) !important;
  min-width:var(--ai-side-width);
  flex:0 0 var(--ai-side-width) !important;
  border-right:1px solid #dfe5ed !important;
  border-radius:var(--r-panel) 0 0 var(--r-panel);
}
.ai-rail {
  width:var(--ai-rail-width) !important;
  min-width:var(--ai-rail-width);
  flex:0 0 var(--ai-rail-width) !important;
  border-radius:0 var(--r-panel) var(--r-panel) 0;
}
.ai-main {
  position:relative;
  min-width:560px !important;
  border-right:1px solid #dfe5ed !important;
}
.ai-main::before,
.ai-main::after {
  content:"";
  position:absolute;
  top:0;
  bottom:0;
  width:1px;
  background:#dfe5ed;
  pointer-events:none;
  z-index:4;
}
.ai-main::before { left:-1px; }
.ai-main::after { right:-1px; }
@media (max-width:1280px) {
  .ai-center {
    --ai-side-width:208px;
    --ai-rail-width:240px;
  }
  .ai-main { min-width:460px !important; }
}

@media (max-width:1023px) {
  .ai-main { min-width:0 !important; }
}

/* 经营看板：复用现有后台色板，仅补充局部布局与 SVG 图表样式。 */
.board-page { width:100%; min-width:0; }
.board-updated { color:var(--text-3); font-size:11px; line-height:28px; }
.board-demo-note { margin-right:8px; color:#b7c0cb; font-size:10px; line-height:28px; }
.board-section { margin:0 0 12px; padding:14px 16px; background:var(--surface); border-radius:var(--r-panel); }
.board-section-head { display:flex; justify-content:space-between; gap:16px; margin:0 0 10px; }
.board-section-head h2 { margin:0; font-size:16px; line-height:22px; }
.board-section-head p { margin:3px 0 0; color:var(--text-3); font-size:11px; line-height:16px; }
.board-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:12px; }
.board-metric { min-width:0; padding:11px 12px; background:var(--surface); border:1px solid rgba(51,52,68,.08); border-radius:var(--r-card); }
.board-metric-label { display:flex; align-items:center; gap:6px; color:var(--text-2); font-size:12px; }
.board-metric-label i { display:grid; flex:0 0 18px; place-items:center; width:18px; height:18px; color:var(--brand); font-style:normal; }
.board-metric-label i:nth-child(1) { color:#4b8df8; }
.board-metric-label i.is-operating-vehicle { color:#40cfa0; }
.board-metric-label i.is-vehicle-metric { color:#40cfa0; }
.board-metric-label i.is-stage-metric { color:#4E6390; }
.board-metric-label i.is-project-metric { color:#3079fc; }
.board-metric-label i.is-percent-metric { color:var(--warning); }
.board-metric-label i.is-payment-metric { color:#40cfa0; }
.board-metric-label i.is-rent-metric { color:var(--brand); }
.board-metric-label .icon { display:block; width:16px; height:16px; stroke:currentColor; }
.board-metric-label i.is-project-metric .icon,
.board-metric-label i.is-stage-metric .icon,
.board-metric-label i.is-payment-metric .icon { width:15px; height:15px; }
.board-metric-label i.is-vehicle-metric .icon { width:18px; height:14px; }
.board-metric-label i.is-percent-metric .icon { width:14px; height:14px; }
.board-metric-label i.is-rent-metric .icon { width:17px; height:17px; }
.board-metric strong { display:block; margin-top:4px; color:var(--text); font-size:22px; line-height:27px; font-variant-numeric:tabular-nums; }
.board-metric strong small { margin-left:4px; color:var(--text-2); font-size:12px; font-weight:400; }
.board-metric em { display:block; margin-top:3px; color:var(--text-3); font-size:10px; font-style:normal; line-height:14px; }
.board-grid { display:grid; gap:12px; }
.board-grid-overview { grid-template-columns:repeat(3,minmax(0,1fr)); align-items:stretch; grid-auto-rows:220px; }
.board-grid-overview .board-card { height:220px; box-sizing:border-box; overflow:hidden; }
.board-grid-overview .board-card:last-child .board-ranking { max-height:174px; overflow-y:auto; padding-right:3px; }
.board-grid-overview .board-card:nth-child(2) .board-chart > svg { height:132px; }
.board-grid-two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.board-grid-two + .board-card { margin-top:12px; }
.board-asset-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.board-asset-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; margin-bottom:12px; }
.board-asset-metrics .board-metric { padding:8px 12px; border:0; border-radius:0; }
.board-asset-metrics .board-metric:not(:last-child) { border-right:1px solid rgba(51,52,68,.08); }
.board-asset-metrics .board-metric-label i.is-block { width:10px; height:10px; border-radius:2px; background:#4b8df8; }
.board-asset-metrics .board-metric:nth-child(2) .board-metric-label i.is-block { background:#1dce7c; }
.board-asset-metrics .board-metric:nth-child(3) .board-metric-label i.is-block { background:#ff9126; }
.board-asset-metrics .board-metric strong { font-size:18px; line-height:23px; }
.board-card { min-width:0; padding:11px 12px; background:var(--surface); border:1px solid rgba(51,52,68,.08); border-radius:var(--r-card); }
.board-card-head { display:flex; justify-content:space-between; align-items:baseline; gap:10px; min-height:18px; margin-bottom:7px; }
.board-card-head h3 { margin:0; font-size:13px; font-weight:600; }
.board-card-head span { color:var(--text-3); font-size:10px; white-space:nowrap; }
.board-card-head .board-hint-primary { color:#4c96ff; }
.board-card-head .board-hint-warning { color:var(--warning); }
.board-card-head .board-hint-primary em,
.board-card-head .board-hint-warning em { color:var(--text-3); font-style:normal; }
.board-card-head .board-hint-primary strong,
.board-card-head .board-hint-warning strong { font-weight:inherit; }
.board-chart { min-width:0; }
.board-funnel .conversion-funnel { min-height:0; }
.board-funnel .funnel-row { min-height:0; height:29px; margin-bottom:0; }
.board-funnel .funnel-segment { height:22px; }
.board-chart svg { display:block; width:100%; height:auto; overflow:visible; }
.board-chart text { fill:var(--text-3); font-family:inherit; font-size:12px; }
.board-chart .board-grid { fill:none; stroke:#e7ecf2; stroke-width:1; }
.board-chart-legend { display:flex; flex-wrap:wrap; gap:10px; margin:0 0 4px; color:var(--text-3); font-size:12px; }
.board-chart-legend span { display:inline-flex; align-items:center; gap:5px; }
.board-chart-legend i { width:7px; height:7px; border-radius:50%; }
.board-line-axis { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); margin:1px 0 0; color:var(--text-3); font-size:11px; line-height:16px; text-align:center; }
.board-ranking { display:grid; gap:2px; }
.board-ranking-head,.board-ranking-row { display:grid; grid-template-columns:28px minmax(0,1fr) auto; align-items:center; gap:8px; min-height:25px; }
.board-ranking-head { grid-template-columns:28px minmax(0,1fr) auto; color:var(--text-3); font-size:12px; }
.board-ranking-head span:first-child { grid-column:2; }
.board-ranking-row { font-size:12px; }
.board-ranking-row b { display:grid; place-items:center; width:20px; height:20px; border-radius:3px; background:#edf1f5; color:var(--text-3); font-size:12px; font-weight:500; }
.board-ranking-row b.is-top { background:var(--brand-soft); color:var(--brand); }
.board-ranking-row > span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.board-ranking-row strong { color:var(--text-2); font-size:12px; font-weight:500; font-variant-numeric:tabular-nums; }
.board-diverging-chart svg { max-height:248px; }
.board-diverging-zero { stroke:#cfd8e4; stroke-width:1; stroke-dasharray:2 3; }
.board-profit-positive { fill:#40cfa0 !important; }
.board-profit-negative { fill:#d73735 !important; }
.board-diverging-legend { display:flex; gap:12px; margin:0 0 6px; color:var(--text-3); font-size:12px; }
.board-diverging-legend span { display:inline-flex; align-items:center; gap:5px; }
.board-diverging-legend i { width:7px; height:7px; border-radius:2px; }
.board-diverging-legend i.positive { background:#40cfa0; }
.board-diverging-legend i.negative { background:#e93c3a; }
.board-table-wrap { overflow:auto; }
.board-table { width:100%; min-width:620px; border-collapse:collapse; font-variant-numeric:tabular-nums; }
.board-table th,.board-table td { height:28px; box-sizing:border-box; padding:4px 8px; border-bottom:1px solid var(--table-divider); text-align:left; white-space:nowrap; }
.board-table th { color:var(--text-3); font-size:11px; font-weight:500; }
.board-table .num { text-align:right; }
.board-table tfoot td { border-bottom:0; color:var(--text); font-weight:600; }
.board-page .board-section:nth-of-type(3) .board-metrics { margin-bottom:12px; }

/* 数据大屏第一阶段：独立全屏壳，不复用普通平台头部与侧边栏。 */
.screen-page { --screen-bg:#07111f; --screen-panel:rgba(13,31,52,.78); --screen-line:rgba(100,178,255,.22); --screen-blue:#4d9bff; --screen-cyan:#22d3ee; --screen-green:#42d392; --screen-orange:#ff9126; --screen-red:#ff6172; --screen-purple:#ad99f5; position:fixed; inset:0; z-index:100; display:flex; flex-direction:column; min-width:1024px; min-height:100dvh; overflow:hidden; padding:18px 24px 14px; color:#dceaff; background:#07111f; }
.screen-page::before { content:""; position:absolute; inset:0; pointer-events:none; opacity:.26; background-image:linear-gradient(rgba(102,183,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(102,183,255,.07) 1px,transparent 1px); background-size:36px 36px; }
.screen-topbar,.screen-hud,.screen-layout,.screen-footer { position:relative; z-index:1; }
.screen-topbar { z-index:10; flex:none; display:flex; align-items:center; justify-content:space-between; gap:20px; padding-bottom:14px; border-bottom:1px solid var(--screen-line); box-shadow:0 1px 0 rgba(34,211,238,.04); }
.screen-kicker { color:#72b7ff; font-size:11px; letter-spacing:.08em; }
.screen-topbar h1 { display:flex; align-items:center; gap:6px; margin:3px 0 0; color:#fff; font-size:24px; letter-spacing:.08em; }.screen-title-icon { width:18px; height:18px; flex:none; fill:var(--screen-cyan); filter:drop-shadow(0 0 4px rgba(34,211,238,.38)); }
.screen-controls { display:flex; align-items:center; gap:10px; }
.screen-toggle { display:flex; box-sizing:border-box; height:36px; padding:2px; border:1px solid var(--screen-line); border-radius:4px; background:rgba(4,15,28,.5); box-shadow:inset 0 0 0 1px rgba(118,191,255,.035); }
.screen-glyph { width:14px; height:14px; flex:0 0 auto; }
.screen-toggle button,.screen-button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:30px; border:0; border-radius:3px; padding:0 11px; color:#b5ccdf; background:transparent; font-size:12px; }
.screen-toggle button.is-active { color:#fff; background:linear-gradient(135deg,#287df1,#1755ae); box-shadow:0 0 14px rgba(54,139,255,.34),inset 0 1px 0 rgba(209,235,255,.25); }.screen-toggle button.is-active .screen-glyph { color:#d5efff; }
.screen-button { box-sizing:border-box; min-height:36px; border:1px solid var(--screen-line); }.screen-button .screen-glyph { color:var(--screen-cyan); }
.screen-button:hover { border-color:#5ca9ff; color:#fff; box-shadow:0 0 12px rgba(56,143,255,.16); }
.screen-return { color:#d8ecff; }
#screen-clock { display:inline-flex; align-items:center; min-width:70px; height:36px; color:#fff; font-size:14px; font-variant-numeric:tabular-nums; }
.screen-hud { position:absolute; z-index:6; top:88px; left:38px; right:38px; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; padding:0; pointer-events:none; }
.screen-hud > div { min-width:0; padding:10px 12px; border:1px solid rgba(100,178,255,.3); border-radius:6px; background:linear-gradient(115deg,rgba(12,34,58,.82),rgba(7,22,39,.68)); box-shadow:inset 0 1px 0 rgba(180,222,255,.07),0 4px 16px rgba(0,10,25,.18),0 0 18px rgba(36,126,238,.045); backdrop-filter:blur(8px); pointer-events:auto; }
.screen-hud span { display:flex; align-items:center; gap:8px; color:#91aec5; font-size:11px; }.screen-hud .screen-hud-icon-wrap { display:grid; place-items:center; width:30px; height:30px; border-radius:9px; background:rgba(76,150,255,.15); color:var(--screen-blue); }.screen-hud .is-blue .screen-hud-icon-wrap { background:rgba(0,155,255,.15); color:#009BFF; }.screen-hud .screen-hud-icon { width:16px; height:16px; color:currentColor; }.screen-hud .screen-hud-icon-upload { fill:currentColor; }.screen-hud .is-green .screen-hud-icon-wrap { background:rgba(64,207,160,.14); color:var(--screen-green); }.screen-hud .is-orange .screen-hud-icon-wrap { background:rgba(255,145,38,.14); color:var(--screen-orange); }.screen-hud .is-cyan .screen-hud-icon-wrap { background:rgba(57,213,224,.14); color:var(--screen-cyan); }
.screen-hud strong { display:inline-block; margin-top:4px; color:#fff; font-size:23px; font-variant-numeric:tabular-nums; }
.screen-hud small { margin-left:4px; color:#91aec5; font-size:11px; }
.screen-layout { position:absolute; z-index:1; top:76px; right:24px; bottom:14px; left:24px; display:block; min-height:0; }
.screen-map-shell { position:absolute; inset:0; min-height:0; overflow:hidden; background:#0a1827; box-shadow:inset 0 0 58px rgba(25,105,204,.05); }.screen-map-shell::after { position:absolute; z-index:1; inset:0; background:linear-gradient(180deg,rgba(3,13,26,.16),transparent 20%,transparent 78%,rgba(3,13,26,.13)); pointer-events:none; content:""; }
.screen-map-canvas { position:absolute; inset:0; background:#0a1827; filter:brightness(.9) saturate(.86) contrast(1.04); }.screen-map-canvas .amap-labels { opacity:.82; }
.screen-map-loading { position:absolute; z-index:2; top:50%; left:50%; max-width:360px; transform:translate(-50%,-50%); padding:10px 14px; color:#b9d7f2; border:1px solid rgba(100,178,255,.32); background:#0c1d30; text-align:center; font-size:12px; line-height:18px; }
.screen-map-note { position:absolute; z-index:2; left:16px; bottom:16px; padding:8px 10px; color:#b9d7f2; border-left:2px solid #3686f5; background:#0b1b2d; font-size:11px; }
.screen-map-filters { position:absolute; z-index:6; top:112px; left:14px; display:grid; gap:7px; padding:9px 10px; border:1px solid rgba(100,178,255,.3); border-radius:6px; background:rgba(8,26,45,.76); box-shadow:inset 0 1px 0 rgba(180,222,255,.06),0 5px 16px rgba(0,10,25,.2); backdrop-filter:blur(8px); }
.screen-geo-breadcrumb { position:absolute; z-index:6; top:112px; left:206px; display:flex; align-items:center; max-width:300px; min-height:24px; gap:5px; padding:5px 8px; border:1px solid rgba(100,178,255,.24); border-radius:5px; color:#9ab7d1; background:rgba(8,26,45,.68); box-shadow:0 4px 14px rgba(0,10,25,.16); backdrop-filter:blur(8px); font-size:10px; line-height:14px; }
.screen-geo-breadcrumb button { min-width:0; overflow:hidden; border:0; padding:0; color:#a8c9e5; background:transparent; font:inherit; text-overflow:ellipsis; white-space:nowrap; cursor:pointer; }.screen-geo-breadcrumb button:hover { color:#fff; }.screen-geo-breadcrumb i { color:#5d7c99; font-style:normal; }.screen-geo-breadcrumb span { overflow:hidden; color:#fff; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.screen-map-note[hidden],.screen-map-filters[hidden],.screen-map-loading[hidden] { display:none; }
.screen-map-filters div { display:flex; align-items:center; gap:4px; }.screen-map-filters span { width:28px; color:#91aec5; font-size:10px; }.screen-map-filters button { min-height:24px; border:1px solid transparent; padding:0 7px; color:#a8c1d5; background:transparent; font-size:10px; }.screen-map-filters button.is-active { border-color:rgba(92,169,255,.42); border-radius:4px; color:#fff; background:#1c5cae; }
.screen-map-info { min-width:214px; padding:12px 13px; border:1px solid rgba(82,157,255,.5); border-radius:7px; color:#dcecff; background:linear-gradient(145deg,#102d49,#091727); box-shadow:0 10px 24px rgba(0,0,0,.34),0 0 18px rgba(55,142,255,.08); font-size:12px; line-height:18px; }.screen-map-info > strong { display:flex; align-items:center; gap:6px; color:#f4f9ff; font-size:13px; }.screen-map-info > strong .screen-glyph { color:var(--screen-blue); }.screen-map-info > span { display:flex; align-items:center; gap:4px; margin-top:3px; color:#9db8d2; font-size:11px; }.screen-map-info > span .screen-glyph { width:12px; height:12px; color:var(--screen-cyan); }.screen-map-info dl { display:grid; grid-template-columns:1fr 1fr; gap:7px 14px; margin:10px 0 0; padding-top:8px; border-top:1px solid rgba(128,190,245,.13); }.screen-map-info dl div { min-width:0; }.screen-map-info .screen-map-info-wide { grid-column:span 2; }.screen-map-info dt { display:flex; align-items:center; gap:4px; color:#7897b7; font-size:10px; }.screen-map-info dt .screen-glyph { width:11px; height:11px; color:#72b7ff; }.screen-map-info dd { margin:1px 0 0; overflow:hidden; color:#e6f2ff; font-weight:600; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; }.screen-map-info dd.screen-value-empty { color:#6f879d; font-weight:400; }
.screen-amap-bubble { position:relative; display:grid; place-items:center; width:var(--bubble-size); height:var(--bubble-size); box-sizing:border-box; border:1.5px solid #d8edff; border-radius:50%; background:radial-gradient(circle at 33% 30%,#a6d5ff 0 5%,var(--bubble-color) 42%,color-mix(in srgb,var(--bubble-color) 70%,#062450) 100%); box-shadow:0 0 calc(var(--bubble-size) * .68) color-mix(in srgb,var(--bubble-color) 76%,transparent),inset 0 0 0 1px rgba(255,255,255,.18); opacity:.94; transition:transform .16s ease,box-shadow .16s ease,filter .16s ease; }.screen-amap-bubble:hover { transform:scale(1.1); filter:brightness(1.12); }.screen-project-node-icon { width:42%; height:42%; fill:rgba(255,255,255,.92); filter:drop-shadow(0 1px 2px rgba(0,20,60,.42)); }.screen-amap-bubble.is-active { transform:scale(1.2); border-color:#fff; box-shadow:0 0 calc(var(--bubble-size) * .98) color-mix(in srgb,var(--bubble-color) 92%,transparent),0 0 0 3px rgba(126,201,255,.15); opacity:1; }
.screen-vehicle-cluster { display:grid; width:var(--cluster-size); height:var(--cluster-size); box-sizing:border-box; place-items:center; border:1px solid rgba(226,244,255,.86); border-radius:50%; color:#fff; background:radial-gradient(circle at 32% 28%,#8bc5ff,#277cf0 64%,#1753a6); box-shadow:0 0 calc(var(--cluster-size) * .7) rgba(50,141,255,.65),inset 0 0 0 1px rgba(255,255,255,.15); font:600 11px/1 inherit; cursor:pointer; transition:transform .15s ease,filter .15s ease; }.screen-vehicle-cluster:hover,.screen-vehicle-cluster:focus-visible,.screen-vehicle-cluster.is-city-hover { transform:scale(1.09); filter:brightness(1.1); outline:0; }.screen-vehicle-cluster.is-city-selected { transform:scale(1.12); filter:brightness(1.14); outline:0; }.screen-vehicle-cluster strong { font-size:11px; font-variant-numeric:tabular-nums; }.screen-vehicle-cluster.trailer { background:radial-gradient(circle at 32% 28%,#ffc278,#ff9126 62%,#b64c0b); box-shadow:0 0 calc(var(--cluster-size) * .7) rgba(255,145,38,.56),inset 0 0 0 1px rgba(255,255,255,.14); }.screen-vehicle-cluster.mixed { background:radial-gradient(circle at 32% 28%,#8cf0fa,#16bdd4 62%,#087f9c); box-shadow:0 0 calc(var(--cluster-size) * .7) rgba(22,189,212,.58),inset 0 0 0 1px rgba(255,255,255,.16); }
.screen-asset-marker { position:relative; z-index:1; width:20px; height:20px; border:0; padding:0; background:transparent; cursor:pointer; }.screen-asset-marker > i { position:absolute; top:50%; left:50%; width:11px; height:11px; box-sizing:border-box; transform:translate(-50%,-50%); border:1.5px solid #d9edff; clip-path:polygon(25% 7%,75% 7%,100% 50%,75% 93%,25% 93%,0 50%); background:#2d82ff; box-shadow:0 0 6px rgba(47,132,255,.76); transition:transform .14s ease,filter .14s ease,box-shadow .14s ease; }.screen-asset-marker.is-deployed > i { filter:brightness(1.13) saturate(1.08); }.screen-asset-marker:hover,.screen-asset-marker:focus-visible,.screen-asset-marker.is-city-hover { z-index:4; outline:0; }.screen-asset-marker:hover > i,.screen-asset-marker:focus-visible > i,.screen-asset-marker.is-city-hover > i { transform:translate(-50%,-50%) scale(1.26); filter:brightness(1.2); }.screen-asset-marker.is-active,.screen-asset-marker.is-city-selected { z-index:5; }.screen-asset-marker.is-active > i,.screen-asset-marker.is-city-selected > i { transform:translate(-50%,-50%) scale(1.34); border-color:#fff; box-shadow:0 0 11px rgba(90,178,255,.96),0 0 0 2px rgba(109,193,255,.22); }.screen-asset-marker.trailer > i { width:11px; height:11px; clip-path:polygon(20% 5%,80% 5%,100% 26%,100% 74%,80% 95%,20% 95%,0 74%,0 26%); border-color:#ffe2c4; background:#ff9126; box-shadow:0 0 6px rgba(255,145,38,.62); }.screen-asset-marker.trailer.is-active > i,.screen-asset-marker.trailer.is-city-selected > i { box-shadow:0 0 11px rgba(255,174,94,.92),0 0 0 2px rgba(255,202,150,.2); }.screen-asset-marker.is-stock > i { border-width:2px; border-color:#b9d3e6; background:rgba(8,24,39,.24); box-shadow:0 0 5px rgba(157,192,223,.3); }.screen-asset-marker.trailer.is-stock > i { border-color:#ffd0a0; background:rgba(46,29,16,.22); }
.screen-side { position:absolute; z-index:6; top:112px; right:14px; display:grid; width:312px; max-height:calc(100% - 160px); align-content:start; gap:12px; min-width:0; }
.screen-side section { padding:14px; border:1px solid rgba(100,178,255,.3); border-radius:6px; background:linear-gradient(145deg,rgba(12,34,58,.84),rgba(7,22,39,.72)); box-shadow:inset 0 1px 0 rgba(180,222,255,.07),0 5px 18px rgba(0,10,25,.2),0 0 18px rgba(36,126,238,.04); backdrop-filter:blur(9px); }
.screen-side section:first-child { max-height:min(390px,calc(100dvh - 430px)); overflow:auto; }
.screen-side h2 { display:flex; align-items:center; gap:7px; margin:0 0 11px; color:#dceaff; font-size:13px; }.screen-side h2::before { width:6px; height:15px; flex:none; border-radius:1px; background:#2d82ff; box-shadow:0 0 6px rgba(45,130,255,.42); content:""; }.screen-panel-icon { display:none; }
.screen-rank { display:grid; width:100%; grid-template-columns:28px minmax(0,1fr) auto; align-items:center; gap:7px; min-height:33px; border:0; border-bottom:1px solid rgba(139,191,240,.1); padding:0; color:inherit; background:transparent; text-align:left; font:inherit; font-size:11px; cursor:default; transition:background .14s ease; }.screen-rank[data-screen-project-rank],.screen-rank[data-screen-city-rank] { cursor:pointer; }.screen-rank[data-screen-project-rank]:hover,.screen-rank.is-active,.screen-rank.is-city-selected { background:linear-gradient(90deg,rgba(48,121,252,.19),transparent); }.screen-rank.is-city-hover { background:linear-gradient(90deg,rgba(48,121,252,.11),transparent); }.screen-rank:last-child { border-bottom:0; }.screen-rank b { display:grid; width:20px; height:20px; place-items:center; border:1px solid rgba(102,179,255,.14); border-radius:4px; color:#68adf8; background:rgba(47,121,252,.07); font-weight:600; font-variant-numeric:tabular-nums; }.screen-rank:nth-child(-n+3) b { border-color:rgba(99,180,255,.34); color:#c6e5ff; background:rgba(48,125,241,.16); box-shadow:0 0 7px rgba(55,139,255,.11); }.screen-rank span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#b8cee1; }.screen-rank strong { color:#fff; font-size:11px; font-weight:600; font-variant-numeric:tabular-nums; }
.screen-rank[data-screen-city-rank]:not(.is-city-hover):not(.is-city-selected) { background:transparent; }
.screen-legend { display:grid; grid-template-columns:1fr; gap:10px; color:#a8c1d5; font-size:11px; }.screen-legend-group { display:grid; gap:5px; }.screen-legend-group > b { color:#6f8ba5; font-size:9px; font-weight:600; letter-spacing:.12em; }.screen-legend span { display:flex; align-items:center; gap:7px; min-height:15px; }.screen-legend i { display:inline-grid; width:8px; height:8px; flex:0 0 auto; place-items:center; border-radius:50%; color:#fff; background:var(--screen-blue); box-shadow:0 0 6px rgba(77,155,255,.4); font:600 7px/1 inherit; font-style:normal; font-variant-numeric:tabular-nums; }.screen-legend i.project-scale { width:13px; height:13px; border:2px solid #91c8ff; background:#1f70d9; box-shadow:0 0 9px rgba(66,142,255,.72); }.screen-legend i.project-size { width:11px; height:11px; background:#2d7df0; box-shadow:0 0 8px rgba(66,142,255,.58); }.screen-legend i.project-emphasis { width:7px; height:7px; background:#1c5eb6; }.screen-legend i.tractor { width:11px; height:11px; border-radius:0; clip-path:polygon(25% 7%,75% 7%,100% 50%,75% 93%,25% 93%,0 50%); background:var(--screen-blue); box-shadow:0 0 7px rgba(77,155,255,.54); }.screen-legend i.trailer { width:11px; height:11px; border-radius:0; clip-path:polygon(20% 5%,80% 5%,100% 26%,100% 74%,80% 95%,20% 95%,0 74%,0 26%); background:var(--screen-orange); box-shadow:0 0 7px rgba(255,145,38,.5); }.screen-legend i.mixed { width:11px; height:11px; background:var(--screen-cyan); box-shadow:0 0 8px rgba(34,211,238,.52); }.screen-legend i.operating { background:var(--screen-green); box-shadow:0 0 7px rgba(66,211,146,.44); }.screen-legend i.stock { border:1px solid #a7c5dc; background:transparent; box-shadow:none; }.screen-legend i.cluster-count { width:18px; height:18px; background:var(--screen-cyan); box-shadow:0 0 8px rgba(34,211,238,.5); }
.screen-legend i.tractor,.screen-legend i.trailer,.screen-legend i.mixed { width:8px; height:8px; border-radius:50%; clip-path:none; }
.screen-footer { position:absolute; z-index:6; right:350px; bottom:19px; left:38px; display:flex; justify-content:space-between; gap:16px; padding:0; color:rgba(139,169,195,.82); font-size:10px; pointer-events:none; }

@media (max-width:1100px) {
  .board-grid-overview { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .board-grid-overview > :last-child { grid-column:span 2; }
}
@media (max-width:760px) {
  .board-section { padding:14px; }.board-metrics,.board-grid-two,.board-grid-overview,.board-asset-grid { grid-template-columns:1fr; }.board-grid-overview > :last-child { grid-column:auto; }.board-asset-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }.board-section-head { display:block; }.board-section-head p { margin-top:3px; }
}

/* 组织配置与项目责任关系：沿用现有表单、标签与分隔线，避免在候选人很多时形成长列表。 */
.organization-staff-modal { width:min(720px,calc(100vw - 32px)); }
.org-staff-market,.org-staff-role-block { padding:14px 0; border-bottom:1px solid var(--border); }
.org-staff-role-block:last-child { border-bottom:0; }
.org-staff-market .section-title,.org-staff-role-block .section-title { margin-bottom:8px; }
.org-staff-market .section-title h2,.org-staff-role-block .section-title h2 { margin:0; font-size:14px; }
.org-staff-market .section-title p,.org-staff-role-block .section-title p { margin:3px 0 0; color:var(--text-3); font-size:12px; }
.org-staff-tags { display:flex; flex-wrap:wrap; gap:8px; align-items:center; min-height:28px; }
.org-staff-tags .tag { display:inline-flex; align-items:center; gap:5px; }
.org-staff-tags .tag button { width:14px; height:14px; border:0; padding:0; color:var(--text-3); background:transparent; font:inherit; font-size:15px; line-height:14px; cursor:pointer; }
.org-staff-tags .tag button:hover { color:var(--brand); }
.org-staff-picker { margin-top:10px; }
.org-staff-picker summary { width:max-content; color:var(--brand); cursor:pointer; font-size:13px; }
.org-staff-picker[open] summary { margin-bottom:10px; }
.org-staff-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); max-height:176px; overflow:auto; margin-top:8px; border:1px solid var(--border); border-radius:var(--r-control); padding:6px 10px; }
.org-staff-options label { display:flex; align-items:center; gap:6px; min-height:32px; color:var(--text); font-size:13px; }
.org-staff-options label[hidden] { display:none; }

.project-object-header .facts.organization-project-facts { grid-template-columns:repeat(4,minmax(0,1fr)); gap:17px 26px; }
.organization-project-facts .organization-muted-fact .fact-label { color:var(--text-3); }
.project-object-header .facts.organization-project-facts .fact-label { color:var(--text-3); }
.organization-project-empty { min-height:1px; }
.organization-project-members,.organization-project-background { grid-column:1 / -1; border-top:1px solid var(--border); padding-top:14px; }
.organization-project-members h2,.organization-project-background h2 { margin:0 0 10px; font-size:14px; }
.organization-project-member-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px 20px; }
.organization-project-member-grid div { min-width:0; }
.organization-project-member-grid span { display:block; color:var(--text-3); font-size:12px; }
.organization-project-member-grid strong { display:block; margin-top:4px; overflow:hidden; color:var(--text); font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.organization-project-background p { margin:0; color:var(--text-2); line-height:22px; }
@media (max-width:900px) {
  .project-object-header .facts.organization-project-facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .organization-project-member-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .organization-project-empty { display:none; }
}
@media (max-width:640px) {
  .org-staff-options { grid-template-columns:1fr; }
  .project-object-header .facts.organization-project-facts,.organization-project-member-grid { grid-template-columns:1fr; }
}

/* 项目详情顶部摘要：简介与成员作为基本信息的整行字段，避免再次拆成独立区块。 */
.project-object-header .facts.organization-project-facts .project-background-fact,
.project-object-header .facts.organization-project-facts .project-team-fact { grid-column:1 / -1; align-items:start; }
.project-object-header .facts.organization-project-facts .project-team-fact .fact-value { min-width:0; }
.project-object-header .facts.organization-project-facts .project-team-values { display:flex; flex-wrap:wrap; gap:8px 20px; align-items:center; }
.project-object-header .facts.organization-project-facts .project-team-role { display:inline-flex; align-items:center; white-space:nowrap; }
.project-object-header .facts.organization-project-facts .project-team-role-label { color:var(--text-2); }
.value-placeholder { color:#999999; }
@media (max-width:640px) {
  .project-object-header .facts.organization-project-facts .project-background-fact,
  .project-object-header .facts.organization-project-facts .project-team-fact { grid-column:1 / -1; }
  .project-object-header .facts.organization-project-facts .project-team-values { gap:8px 16px; }
}
