.ec-module-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:12px; }
.ec-tabs { display:inline-flex; gap:3px; padding:3px; border:1px solid var(--border); border-radius:9px; background:#eef3f8; }
.ec-tabs button { min-width:88px; height:32px; padding:0 15px; border:0; border-radius:6px; background:transparent; color:var(--text-2); font:inherit; font-size:12.5px; font-weight:650; cursor:pointer; }
.ec-tabs button.active { background:#fff; color:var(--primary); box-shadow:0 1px 4px rgba(21,59,101,.09); }
.ec-loading { padding:54px 20px; color:var(--text-3); text-align:center; }

.ec-filter-shell { margin-bottom:10px; padding:11px 12px; }
.ec-primary-filters { display:grid; grid-template-columns:minmax(340px,2.3fr) repeat(2,minmax(150px,1fr)) auto; gap:9px; align-items:end; }
.ec-filter,.ec-search { display:grid; min-width:0; gap:3px; }
.ec-filter > span,.ec-search > span { padding-left:2px; color:var(--text-3); font-size:10px; }
.ec-filter select,.ec-search input { width:100%; height:35px; }
.ec-more-button { display:flex; align-items:center; gap:7px; height:35px; padding:0 12px; border:1px solid #cfdbe7; border-radius:7px; background:#fff; color:var(--text-2); font:inherit; font-size:12.5px; font-weight:620; cursor:pointer; white-space:nowrap; }
.ec-more-button:hover,.ec-more-button.active { border-color:#b9ccdf; background:var(--primary-50); color:var(--primary); }
.ec-more-button b { display:grid; place-items:center; min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:var(--primary); color:#fff; font-size:9.5px; }
.ec-more-filters { display:none; grid-template-columns:1fr 1fr auto; gap:10px; align-items:end; margin-top:10px; padding-top:10px; border-top:1px solid var(--border-soft); }
.ec-more-filters.open { display:grid; }
.ec-check { display:flex; align-items:center; gap:7px; min-height:35px; padding:0 10px; border:1px solid var(--border); border-radius:7px; color:var(--text-2); font-size:12px; cursor:pointer; }
.ec-check input { accent-color:var(--primary); }

.ec-list-head { display:flex; align-items:center; justify-content:space-between; padding:4px 3px 10px; color:var(--text-3); font-size:11px; }
.ec-list-head > div { display:flex; align-items:baseline; gap:8px; }
.ec-list-head strong { color:var(--text); font-size:14px; }
.ec-list-caption { display:grid; grid-template-columns:minmax(250px,1.65fr) minmax(190px,1.1fr) minmax(210px,1.25fr) minmax(185px,1fr); gap:20px; padding:0 36px 6px 16px; color:var(--text-3); font-size:10px; }
.ec-customer-list { overflow:hidden; }
.ec-customer-row { position:relative; display:grid; grid-template-columns:minmax(250px,1.65fr) minmax(190px,1.1fr) minmax(210px,1.25fr) minmax(185px,1fr); gap:20px; align-items:center; min-height:82px; padding:12px 36px 12px 16px; border-bottom:1px solid var(--border-soft); cursor:pointer; transition:background .14s ease,box-shadow .14s ease; }
.ec-customer-row:last-child { border-bottom:0; }
.ec-customer-row:hover,.ec-customer-row:focus-visible { outline:none; background:#f7faff; box-shadow:inset 3px 0 var(--accent); }
.ec-customer-name { display:flex; align-items:center; flex-wrap:wrap; gap:6px; color:var(--primary); font-size:14px; font-weight:720; }
.ec-address { margin-top:3px; color:var(--text-3); font-size:11.5px; line-height:1.45; }
.ec-pending,.ec-neutral-flag { padding:1px 6px; border-radius:5px; background:var(--warn-bg); color:var(--warn); font-size:9px; font-weight:680; }
.ec-neutral-flag { background:#edf1f6; color:#667085; }
.ec-pending.large { font-size:10px; }
.ec-row-label { display:block; margin-bottom:3px; color:var(--text-3); font-size:9.5px; }
.ec-row-main { color:var(--text); font-size:12.5px; font-weight:630; line-height:1.45; }
.ec-row-sub { margin-top:2px; color:var(--text-3); font-size:10.5px; }
.ec-use-line { display:grid; grid-template-columns:34px 1fr; gap:7px; margin:2px 0; line-height:1.35; }
.ec-use-line span { color:var(--text-3); font-size:9.5px; }
.ec-use-line strong { overflow:hidden; color:var(--text-2); font-size:10.5px; font-weight:640; text-overflow:ellipsis; white-space:nowrap; }
.ec-use-more,.ec-empty-inline { color:var(--text-3); font-size:10px; }
.ec-row-arrow { position:absolute; right:15px; color:#9aa9b9; font-size:20px; }
.ec-empty { display:grid; gap:5px; justify-items:center; padding:48px 20px; color:var(--text-3); text-align:center; }
.ec-empty strong { color:var(--text-2); }
.ec-pagination { display:flex; justify-content:flex-end; gap:8px; margin-top:10px; }

.ec-detail-toolbar { display:flex; align-items:center; justify-content:space-between; margin-bottom:9px; }
.ec-detail-toolbar > div { display:flex; gap:8px; }
.ec-file { display:grid; gap:11px; }
.ec-file-header { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:13px 16px; border:1px solid var(--border); border-radius:10px; background:#fff; box-shadow:var(--shadow-sm); }
.ec-file-name { display:flex; align-items:center; flex-wrap:wrap; gap:8px; color:var(--text); font-size:21px; font-weight:760; letter-spacing:-.2px; }
.ec-file-address { margin-top:3px; color:var(--text-3); font-size:11.5px; }
.ec-map-link { flex:none; min-height:31px; padding:5px 10px; border:1px solid #cad8e6; border-radius:7px; background:#fff; color:var(--primary); font:inherit; font-size:11.5px; font-weight:650; cursor:pointer; }
.ec-map-link:hover { background:var(--primary-50); }
.ec-overview { display:grid; grid-template-columns:.9fr 1fr 1.22fr; gap:11px; align-items:stretch; }
.ec-section { min-width:0; padding:14px 15px; border:1px solid var(--border); border-radius:10px; background:#fff; box-shadow:var(--shadow-sm); }
.ec-section-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:11px; }
.ec-section-head h2 { margin:0; color:var(--text); font-size:13px; font-weight:720; }
.ec-section-head span { color:var(--text-3); font-size:10px; }
.ec-info-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px 12px; }
.ec-info.wide { grid-column:1 / -1; }
.ec-info span { display:block; margin-bottom:2px; color:var(--text-3); font-size:9.5px; }
.ec-info strong { display:block; color:var(--text-2); font-size:11.5px; font-weight:620; white-space:pre-wrap; }
.ec-info strong.is-empty { color:#a0adba; font-weight:500; }
.ec-factory-lead { display:grid; grid-template-columns:.8fr 1fr; gap:9px; margin-bottom:11px; padding-bottom:10px; border-bottom:1px solid var(--border-soft); }
.ec-factory-lead div { display:grid; gap:2px; }
.ec-factory-lead span { color:var(--text-3); font-size:9.5px; }
.ec-factory-lead strong { color:var(--primary); font-size:15px; }
.ec-intelligence { border-color:#cbdbea; background:linear-gradient(135deg,#fff 0%,#f8fbff 100%); }
.ec-intelligence-copy { max-height:196px; overflow:auto; padding:0 3px 0 9px; border-left:2px solid #6d91b5; color:#2f4359; font-family:"Songti SC","STSong",serif; font-size:13.5px; line-height:1.8; text-align:justify; white-space:pre-wrap; }
.ec-light-empty { display:grid; min-height:110px; place-items:center; border:1px dashed var(--border-soft); border-radius:7px; background:rgba(248,250,253,.7); color:var(--text-3); font-size:11px; }
.ec-light-empty.compact { min-height:56px; }
.ec-matrix-wrap { overflow:auto; border:1px solid var(--border); border-radius:8px; }
.ec-matrix { width:100%; border-collapse:collapse; font-size:12px; }
.ec-matrix th,.ec-matrix td { padding:10px 13px; border-bottom:1px solid var(--border-soft); text-align:left; }
.ec-matrix thead th { background:#f2f6fb; color:var(--text-2); font-size:10px; letter-spacing:.3px; }
.ec-matrix tbody th { width:11%; color:var(--primary); font-weight:720; }
.ec-matrix tbody td:nth-child(2) { width:35%; font-weight:630; }
.ec-matrix tbody tr:last-child > * { border-bottom:0; }
.ec-business-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.ec-related-sites { padding-top:12px; padding-bottom:12px; }
.ec-related-list { display:grid; gap:0; border-top:1px solid var(--border-soft); }
.ec-related-row { display:flex; width:100%; align-items:center; justify-content:space-between; gap:18px; padding:9px 2px; border:0; border-bottom:1px solid var(--border-soft); background:transparent; color:inherit; font:inherit; text-align:left; }
button.ec-related-row { cursor:pointer; }
button.ec-related-row:hover { background:#f7faff; }
.ec-related-row > div { display:grid; gap:2px; }
.ec-related-row strong { color:var(--primary); font-size:12px; }
.ec-related-row span { color:var(--text-3); font-size:10.5px; }
.ec-related-row small,.ec-related-row b { flex:none; color:var(--text-3); font-size:10px; font-weight:600; }
.ec-related-row.current strong { color:var(--text); }

.ec-direct-sales { display:grid; gap:11px; }
.ec-direct-empty { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:10px 12px; border:1px solid var(--border-soft); border-radius:7px; background:#fafbfd; }
.ec-direct-empty > div:first-child { display:grid; gap:3px; }
.ec-direct-empty strong { color:var(--text-2); font-size:12px; }
.ec-direct-empty span { color:var(--text-3); font-size:10px; }
.ec-direct-identity { display:grid; grid-template-columns:minmax(220px,1fr) 150px auto; gap:16px; align-items:end; }
.ec-direct-identity > div:not(.ec-direct-actions) { display:grid; gap:3px; }
.ec-direct-identity span { color:var(--text-3); font-size:9.5px; }
.ec-direct-identity strong { color:var(--text); font-size:13px; }
.ec-direct-identity small { color:var(--text-3); font-size:9.5px; }
.ec-direct-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:6px; }
.ec-direct-records { overflow:hidden; border:1px solid var(--border-soft); border-radius:7px; }
.ec-direct-record-head,.ec-direct-record { display:grid; grid-template-columns:130px minmax(220px,1fr) 130px; gap:10px; align-items:center; padding:7px 11px; }
.ec-direct-record-head { background:#f7f9fb; color:var(--text-3); font-size:9px; }
.ec-direct-record { border-top:1px solid var(--border-soft); color:var(--text-2); font-size:10.5px; }
.ec-direct-record strong { color:var(--text); font-weight:620; }
.ec-customer-picker { width:min(700px,94vw); }
.ec-picker-body { display:grid; gap:10px; padding:15px 18px; }
.ec-picker-search { display:grid; gap:4px; }
.ec-picker-search span { color:var(--text-3); font-size:10px; }
.ec-picker-search input { width:100%; }
.ec-picker-results { display:grid; max-height:420px; overflow:auto; border:1px solid var(--border-soft); border-radius:7px; }
.ec-picker-row { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:10px 12px; border:0; border-bottom:1px solid var(--border-soft); background:#fff; color:var(--text); font:inherit; text-align:left; cursor:pointer; }
.ec-picker-row:last-child { border-bottom:0; }
.ec-picker-row:hover,.ec-picker-row.active { background:var(--primary-50); }
.ec-picker-row > div { display:grid; gap:2px; }
.ec-picker-row strong { font-size:12px; }
.ec-picker-row span,.ec-picker-row small { color:var(--text-3); font-size:9.5px; }
.ec-picker-row b { color:var(--primary); font-size:10px; }

.ec-region-layout { display:grid; grid-template-columns:315px 1fr; gap:12px; align-items:start; }
.ec-region-tree { max-height:calc(100vh - 205px); overflow-y:auto; padding:11px; }
.ec-region-tree section + section { margin-top:12px; padding-top:12px; border-top:1px solid var(--border); }
.ec-region-title,.ec-area-title { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.ec-region-title { padding:4px 5px 7px; }
.ec-region-title strong { color:var(--text); font-size:13px; }
.ec-region-title span,.ec-area-title span { color:var(--text-3); font-size:9.5px; }
.ec-region-title strong small,.ec-area-title > span:first-child small { display:block; margin-bottom:1px; color:var(--text-3); font-size:8.5px; font-weight:560; }
.ec-area-title > span:first-child { color:var(--text-2); font-size:11px; font-weight:650; }
.ec-area { margin:3px 0 8px; }
.ec-area-title { padding:5px; color:var(--text-2); font-size:11px; font-weight:650; }
.ec-location-button { display:flex; width:100%; align-items:center; justify-content:space-between; gap:8px; padding:7px 9px; border:0; border-radius:6px; background:transparent; color:var(--text-2); font:inherit; font-size:11px; text-align:left; cursor:pointer; }
.ec-location-button:hover,.ec-location-button.active { background:var(--primary-50); color:var(--primary); }
.ec-location-button b { font-size:9.5px; }
.ec-region-result { display:grid; gap:10px; min-width:0; }
.ec-region-summary { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:14px 17px; }
.ec-region-summary span { color:var(--text-3); font-size:9.5px; }
.ec-region-summary h2 { margin:2px 0; font-size:17px; }
.ec-region-summary p { margin:0; color:var(--text-2); font-size:11.5px; }
.ec-customer-row.compact { grid-template-columns:minmax(220px,1.4fr) 1fr 1.1fr; min-height:72px; padding-top:10px; padding-bottom:10px; }
.ec-customer-row.compact > div:nth-child(4) { display:none; }

.ec-map-note { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:10px; padding:8px 11px; border:1px solid var(--border); border-radius:8px; background:#fff; color:var(--text-3); font-size:10.5px; }
.ec-map-note strong { color:var(--text-2); font-size:11px; }
.ec-map-layout { display:grid; grid-template-columns:minmax(560px,1fr) 330px; gap:12px; }
.ec-map-canvas { position:relative; min-height:560px; overflow:hidden; background:#eef3f7; }
.ec-map-grid { position:absolute; inset:0; opacity:.45; background-image:linear-gradient(#d9e3ec 1px,transparent 1px),linear-gradient(90deg,#d9e3ec 1px,transparent 1px); background-size:54px 54px; }
.ec-map-point { position:absolute; z-index:2; display:grid; justify-items:center; gap:3px; transform:translate(-50%,-50%); border:0; background:transparent; color:var(--primary); font:inherit; cursor:pointer; }
.ec-map-point span { display:grid; min-width:30px; height:30px; place-items:center; padding:0 7px; border:3px solid #fff; border-radius:999px; background:#527da4; color:#fff; box-shadow:0 5px 13px rgba(21,59,101,.18); font-size:10.5px; font-weight:760; }
.ec-map-point b { max-width:130px; overflow:hidden; padding:2px 5px; border-radius:4px; background:rgba(255,255,255,.92); font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.ec-map-point.active span { background:var(--primary); transform:scale(1.1); }
.ec-map-axis { position:absolute; left:13px; bottom:12px; padding:5px 7px; border-radius:5px; background:rgba(255,255,255,.9); color:var(--text-3); font-size:9.5px; }
.ec-map-panel { align-self:start; overflow:hidden; }
.ec-map-panel > div:first-child { padding:15px 16px; border-bottom:1px solid var(--border); background:#f8fafd; }
.ec-map-panel span { color:var(--text-3); font-size:9.5px; }
.ec-map-panel h2 { margin:3px 0; font-size:17px; }
.ec-map-panel p { margin:0; color:var(--text-2); font-size:11px; }
.ec-map-customers { display:grid; max-height:460px; overflow:auto; }
.ec-map-customers button { display:grid; gap:4px; padding:10px 13px; border:0; border-bottom:1px solid var(--border-soft); background:#fff; font:inherit; text-align:left; cursor:pointer; }
.ec-map-customers button:hover { background:#f7faff; }
.ec-map-customers strong { color:var(--primary); font-size:12px; }
.ec-map-empty { display:grid; min-height:420px; place-items:center; align-content:center; gap:7px; color:var(--text-3); }
.ec-map-empty strong { color:var(--text-2); font-size:15px; }

.ec-modal-overlay { position:fixed; inset:0; z-index:800; display:grid; place-items:center; padding:24px; background:rgba(17,31,48,.42); }
.ec-modal { width:min(980px,96vw); max-height:92vh; overflow:hidden; border-radius:12px; background:#fff; box-shadow:0 24px 70px rgba(17,31,48,.25); }
.ec-modal form { display:flex; max-height:92vh; flex-direction:column; }
.ec-modal header,.ec-modal footer { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 18px; border-bottom:1px solid var(--border); }
.ec-modal header h2 { margin:0; font-size:17px; }
.ec-modal header p { margin:2px 0 0; color:var(--text-3); font-size:10.5px; }
.ec-modal footer { justify-content:flex-end; border-top:1px solid var(--border); border-bottom:0; }
.ec-modal-close { border:0; background:transparent; color:var(--text-3); font-size:25px; cursor:pointer; }
.ec-form-body { display:grid; gap:17px; overflow:auto; padding:16px 18px 22px; }
.ec-form-body section { display:grid; gap:9px; }
.ec-form-body h3 { margin:0; color:var(--text); font-size:12px; }
.ec-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px 12px; }
.ec-form-grid label { display:grid; gap:4px; }
.ec-form-grid label.wide { grid-column:1 / -1; }
.ec-form-grid label > span { color:var(--text-3); font-size:10px; }
.ec-form-grid input,.ec-form-grid select,.ec-form-grid textarea,.ec-product-form-row input { width:100%; }
.ec-form-grid textarea { resize:vertical; }
.ec-owner-group-form { display:grid; grid-template-columns:1fr 1fr; gap:10px 12px; }
.ec-owner-group-form label { display:grid; gap:4px; }
.ec-owner-group-form label > span { color:var(--text-3); font-size:10px; }
.ec-owner-group-form select,.ec-owner-group-form input { width:100%; }
.ec-new-owner-group.is-hidden { display:none; }
.ec-form-check { display:flex !important; grid-template-columns:auto 1fr; align-items:center; justify-content:start; }
.ec-form-check input { width:auto; accent-color:var(--primary); }
.ec-product-form-head,.ec-product-form-row { display:grid; grid-template-columns:82px 1.3fr .75fr 1fr; gap:8px; align-items:center; }
.ec-product-form-head { padding:0 2px; color:var(--text-3); font-size:9.5px; }
.ec-product-form-row strong { color:var(--primary); font-size:11px; }
.ec-form-hint { margin:0; color:var(--text-3); font-size:9.5px; }
.ec-form-error { min-height:18px; color:var(--bad); font-size:11px; }

@media (max-width:1180px) {
  .ec-customer-row,.ec-list-caption { grid-template-columns:1.5fr 1fr 1fr; }
  .ec-customer-row > div:nth-child(4) { grid-column:2 / 4; }
  .ec-list-caption span:nth-child(4) { display:none; }
  .ec-overview { grid-template-columns:1fr 1fr; }
  .ec-intelligence { grid-column:1 / -1; }
  .ec-intelligence-copy { max-height:none; }
  .ec-map-layout { grid-template-columns:1fr; }
}
@media (max-width:900px) {
  .ec-primary-filters { grid-template-columns:1fr 1fr; }
  .ec-more-filters.open { grid-template-columns:1fr 1fr; }
  .ec-region-layout { grid-template-columns:260px 1fr; }
  .ec-customer-row.compact { grid-template-columns:1fr; }
  .ec-customer-row.compact > div:nth-child(3) { display:none; }
}
@media (max-width:650px) {
  .ec-module-head { align-items:stretch; flex-direction:column; }
  .ec-tabs { display:grid; grid-template-columns:repeat(2,1fr); }
  .ec-primary-filters,.ec-more-filters.open,.ec-overview,.ec-region-layout,.ec-form-grid,.ec-owner-group-form { grid-template-columns:1fr; }
  .ec-form-grid label.wide { grid-column:auto; }
  .ec-list-caption { display:none; }
  .ec-customer-row { grid-template-columns:1fr; gap:8px; }
  .ec-customer-row > div:nth-child(4) { grid-column:auto; }
  .ec-region-tree { max-height:340px; }
  .ec-product-form-head { display:none; }
  .ec-product-form-row { grid-template-columns:1fr; padding:9px; border:1px solid var(--border); border-radius:7px; }
  .ec-matrix { min-width:620px; }
  .ec-direct-empty { align-items:stretch; flex-direction:column; }
  .ec-direct-identity { grid-template-columns:1fr; align-items:start; }
  .ec-direct-actions { justify-content:flex-start; }
  .ec-direct-record-head,.ec-direct-record { grid-template-columns:92px minmax(160px,1fr) 90px; }
}
