:root{
  --bg:#f3f6f8;--panel:#fff;--ink:#17202a;--muted:#667789;--line:#dbe3ea;
  --primary:#0f6b5f;--primary-strong:#0a4f46;--soft:#eef5f4;
  --green:#178f5b;--orange:#c77900;--red:#bd2d2d;--shadow:0 14px 34px #1b2a3812;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--primary);text-decoration:none}
button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border:0;background:var(--primary);color:#fff;border-radius:7px;padding:.72rem 1rem;font-weight:750;cursor:pointer;min-height:42px}
button svg,.button svg,.sidebar svg{width:18px;height:18px;stroke-width:2}
button:hover,.button:hover{background:var(--primary-strong)}
.secondary,.ghost{background:#e8eef2;color:var(--ink)}.secondary:hover,.ghost:hover{background:#dce5eb}.danger-btn{background:var(--red)}.full{width:100%}.grid>.full{grid-column:1/-1}
.kpi-link,.panel-link{display:block;color:inherit}.kpi-link article:hover,.panel-link .panel:hover{border-color:var(--primary);box-shadow:var(--shadow)}
.sidebar{position:fixed;inset:0 auto 0 0;width:260px;background:#14202a;color:#fff;padding:22px;display:flex;flex-direction:column;gap:18px}
.brand{font-size:1.35rem;font-weight:850;line-height:1.1;letter-spacing:.01em}.brand span{font-size:.85rem;color:#aab7c4}
.sidebar nav{display:grid;gap:4px;overflow:auto;padding-right:2px}.nav-label{margin:14px 8px 5px;color:#8fa1b2;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800}
.sidebar a{display:flex;align-items:center;gap:.7rem;color:#dbe4ec;padding:10px 11px;border-radius:7px;font-weight:650}
.sidebar a:hover,.sidebar a.active{background:#233241;color:#fff}.sidebar a.active{box-shadow:inset 3px 0 0 var(--primary)}
.main{margin-left:260px;padding:26px;min-height:100vh}.topbar{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:20px}
.topbar h1{margin:0;font-size:1.65rem;letter-spacing:0}.topbar p{margin:.25rem 0 0;color:var(--muted)}
.role-badge{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:.45rem .7rem;background:#fff;color:var(--muted);font-weight:750;font-size:.84rem;white-space:nowrap}.role-badge.agent{background:#fff7e8;color:#8a5600}.role-badge.admin{background:#eaf7f3;color:#0f6b5f}
.auth-main{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:min(420px,100%);background:#fff;padding:32px;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.login-card h1{margin:0 0 4px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px;overflow:auto}.panel h2{margin:0 0 14px;font-size:1.05rem}
.grid{display:grid;gap:16px;margin-bottom:16px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.narrow{max-width:760px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:16px}.kpis article{height:100%;background:#fff;border:1px solid var(--line);border-radius:8px;padding:16px}.kpis span{display:block;color:var(--muted);font-size:.84rem}.kpis strong{font-size:1.35rem;line-height:1.15}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:16px}.toolbar{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px;box-shadow:0 6px 18px #1b2a3808}.filter-title{display:flex;align-items:center;gap:.5rem;font-weight:850;color:var(--primary);padding:.65rem .35rem;margin-right:4px}.filter-title svg{width:19px;height:19px}
.form{display:grid;gap:12px}.form label,.filters label{display:grid;gap:5px;color:var(--muted);font-size:.86rem;font-weight:700}.form.compact{margin-bottom:16px}.row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
input,select,textarea{width:100%;border:1px solid var(--line);border-radius:7px;padding:.68rem;background:#fff;color:var(--ink);font:inherit;min-height:42px}input:focus,select:focus,textarea:focus{outline:2px solid #0f6b5f22;border-color:var(--primary)}textarea{min-height:110px}
.panel-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.quick-search{max-width:280px;background:#f8fafb}
table{width:100%;border-collapse:separate;border-spacing:0}th,td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{position:sticky;top:0;background:#fff;z-index:1;font-size:.76rem;text-transform:uppercase;color:var(--muted);letter-spacing:.04em}tbody tr:hover{background:#f8fbfa}tr[data-href]{cursor:pointer}.num{text-align:right;white-space:nowrap}.actions{display:flex;gap:6px}
.sort-link{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font:inherit;font-weight:850;white-space:nowrap}.sort-link:hover,.sort-link.active{color:var(--primary)}.sort-link svg{width:14px;height:14px;stroke-width:2.4}.column-filters th{top:37px;padding:6px 8px;background:#f8fbfa;z-index:2}.column-filters select{min-width:125px;min-height:34px;padding:.38rem .5rem;font-size:.76rem;font-weight:650;text-transform:none;letter-spacing:0}.dimension-toolbar{justify-content:flex-end}
.region-list{display:-webkit-box;max-width:220px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;line-height:1.35}
.details{display:grid;grid-template-columns:140px 1fr;gap:8px 14px}.details dt{color:var(--muted);font-weight:750}.details dd{margin:0}.note{border-top:1px solid var(--line);padding:12px 0}.note p{white-space:pre-wrap}
.alert{padding:12px 14px;border-radius:8px;margin-bottom:14px}.danger{background:#f8dddd;color:#8d1919}.warn{background:#fff3d6;color:#714400}.success{background:#e7f7ef;color:#0b6942}
.status-chip,.soft-tag{display:inline-flex;align-items:center;border-radius:999px;padding:.28rem .55rem;font-size:.78rem;font-weight:850;background:#eef2f5;color:#4e5d6c;white-space:nowrap}.status-chip.growth{background:#e7f7ef;color:var(--green)}.status-chip.drop{background:#fff1d8;color:var(--orange)}.status-chip.absent{background:#fde8e8;color:var(--red)}
.growth td:first-child{color:var(--green);font-weight:850}.drop td:first-child{color:var(--orange);font-weight:850}.absent td:first-child{color:var(--red);font-weight:850}
@media (max-width:980px){.sidebar{position:static;width:auto}.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr))}.main{margin:0;padding:16px}.two,.three{grid-template-columns:1fr}.row{grid-template-columns:1fr}.filters{display:grid}.details{grid-template-columns:1fr}.topbar{display:grid}.panel-toolbar{display:grid}.quick-search{max-width:none}}

.upload-drop{display:grid;place-items:center;min-height:190px;border:2px dashed #9db7b2;border-radius:8px;background:#f7fbfa;padding:24px;text-align:center;transition:.18s}.upload-drop.is-dragging{border-color:var(--primary);background:#eaf7f3}.upload-drop input[type=file]{max-width:520px}.upload-drop strong{font-size:1.05rem}.upload-drop p,.muted{color:var(--muted)}
.progress-stack{display:grid;gap:12px}.progress-line{display:grid;grid-template-columns:150px 1fr 64px;align-items:center;gap:12px}.progress-track{height:10px;border-radius:5px;background:#e4ebef;overflow:hidden}.progress-fill{height:100%;width:0;background:var(--primary);transition:width .2s}.progress-fill.parse{background:#2878a8}.job-summary{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center}.metric-inline{font-variant-numeric:tabular-nums;font-weight:800}.empty-state{padding:32px;text-align:center;color:var(--muted)}
.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.pagination-links{display:flex;gap:6px}.pagination a,.pagination span{display:inline-flex;min-width:38px;min-height:38px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;background:#fff}.pagination .current{background:var(--primary);color:#fff;border-color:var(--primary)}
.table-scroll{overflow:auto}.identity{font-weight:800;color:var(--ink)}.subline{display:block;margin-top:3px;color:var(--muted);font-size:.82rem}.completeness{display:inline-flex;align-items:center;gap:6px}.dot{width:8px;height:8px;border-radius:50%;background:var(--orange)}.dot.good{background:var(--green)}.dot.low{background:var(--red)}
@media (max-width:640px){.sidebar{padding:14px}.sidebar nav{grid-template-columns:1fr 1fr}.sidebar a{padding:9px 8px;font-size:.86rem}.brand{font-size:1.12rem}.main{padding:12px}.topbar h1{font-size:1.35rem}.kpis{grid-template-columns:1fr 1fr}.kpis strong{font-size:1.05rem}.panel{padding:12px}.progress-line{grid-template-columns:1fr}.progress-line>strong{text-align:left}.role-badge{white-space:normal}.actions{flex-wrap:wrap}}

.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.import-shell{display:grid;gap:16px}.import-intro,.preview-head,.commit-bar{display:flex;justify-content:space-between;align-items:center;gap:20px}.import-intro h2,.preview-head h2{margin:.15rem 0 .35rem}.import-intro p,.preview-head p{margin:0;color:var(--muted)}.eyebrow{display:block;color:var(--muted);font-size:.75rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em}
.import-drop{display:grid;justify-items:center;gap:16px;padding:28px}.drop-target{width:100%;min-height:180px;border:2px dashed #9db7b2;border-radius:8px;background:#f7fbfa;display:grid;place-items:center;align-content:center;gap:8px;text-align:center;cursor:pointer;color:var(--primary)}.drop-target svg{width:38px;height:38px}.drop-target strong{font-size:1.08rem}.drop-target span{color:var(--muted)}.import-drop.dragging .drop-target{border-color:var(--primary);background:#eaf7f3}
.file-summary{width:min(620px,100%);display:flex;align-items:center;justify-content:space-between;padding:12px;border:1px solid var(--line);border-radius:8px}.file-summary>div{display:flex;align-items:center;gap:10px}.file-summary small{display:block;color:var(--muted)}.icon-button{width:42px;padding:0}
.segmented{display:inline-flex;border:1px solid var(--line);border-radius:8px;padding:3px;background:#eef2f5}.segmented label{cursor:pointer}.segmented input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;min-height:0;padding:0}.segmented span{display:block;padding:.65rem .9rem;border-radius:6px;font-weight:750;color:var(--muted)}.segmented input:checked+span{background:#fff;color:var(--primary);box-shadow:0 2px 8px #1b2a3818}
.period-presets{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}.period-presets .button{min-height:38px;padding:.55rem .8rem}.period-presets .button.active{background:var(--primary);border-color:var(--primary);color:#fff}
.progress-head,.progress-block>div,.progress-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.progress-block{display:grid;gap:7px;margin-top:16px}.progress-block progress{width:100%;height:12px;accent-color:var(--primary)}.progress-actions{margin-top:18px}.diagnostics summary{cursor:pointer;font-weight:800}.kpis article small{display:block;margin-top:5px;color:var(--muted);line-height:1.35}.kpis-compact{grid-template-columns:repeat(5,minmax(0,1fr))}.kpis-compact strong{display:block;overflow-wrap:anywhere}.commit-bar>div span{display:block;color:var(--muted);margin-top:4px}.commit-bar form{display:flex;gap:8px;flex-wrap:wrap}.page-actions{display:flex;gap:8px;margin-bottom:12px}.user-layout{grid-template-columns:minmax(280px,.7fr) minmax(0,1.3fr)}.actions form button{min-height:34px;padding:.45rem .6rem;font-size:.8rem}
@media (max-width:1100px){.kpis-compact{grid-template-columns:repeat(2,minmax(0,1fr))}.user-layout{grid-template-columns:1fr}}
@media (max-width:640px){.import-intro,.preview-head,.commit-bar{align-items:stretch;flex-direction:column}.drop-target{min-height:150px}.segmented{width:100%}.segmented label{flex:1;text-align:center}.kpis-compact{grid-template-columns:1fr}.commit-bar form{width:100%}.commit-bar form>*{flex:1}}

.period-filter{display:grid;gap:14px;margin-bottom:14px;background:#f8fbfa}.period-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.period-head>div:first-child{display:grid;gap:3px}.period-head strong{font-size:1.08rem}.period-head small{color:var(--muted)}.period-modes{flex-wrap:wrap}.period-controls{display:flex;align-items:end;gap:10px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--line)}.period-controls label{display:grid;gap:5px;font-size:.78rem;font-weight:800;color:var(--muted)}.period-controls select,.period-controls input{min-height:40px}.analytics-main{grid-template-columns:minmax(0,1.8fr) minmax(280px,.8fr)}.chart-panel canvas{height:330px!important}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px}.panel-heading h2{margin:2px 0}.ranking,.summary-list{display:grid}.ranking a,.summary-list a{display:grid;grid-template-columns:1fr auto;gap:3px 12px;padding:11px 0;border-bottom:1px solid var(--line)}.ranking small,.summary-list small{grid-column:1/-1;color:var(--muted)}.detail-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 20px;margin-bottom:14px;border-left:4px solid var(--primary);background:#fff;border-radius:6px}.detail-hero h2{margin:3px 0;font-size:1.45rem}.detail-hero p{margin:0;color:var(--muted)}.positive{color:var(--green)!important}.negative{color:var(--red)!important}.trend-tabs{display:flex;gap:6px;margin:0 0 12px;border-bottom:1px solid var(--line)}.trend-tabs a{padding:10px 14px;font-weight:800;color:var(--muted)}.trend-tabs a.active{color:var(--primary);border-bottom:3px solid var(--primary)}.icon-chip{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:6px;color:var(--primary)}.icon-chip svg{width:16px}.check{display:flex!important;align-items:center;gap:8px}.check input{min-height:0;width:auto}.page-actions form{display:inline-flex}.page-actions{align-items:center}
@media(max-width:1100px){.period-head{align-items:flex-start;flex-direction:column}.analytics-main{grid-template-columns:1fr}.chart-panel canvas{height:280px!important}}
@media(max-width:720px){.period-controls{display:grid;grid-template-columns:1fr 1fr}.period-controls>*{width:100%}.period-modes{display:grid;grid-template-columns:repeat(3,1fr);width:100%}.detail-hero{align-items:flex-start;flex-direction:column}}
@media(max-width:720px){.dimension-toolbar{justify-content:stretch}.column-filters th{top:35px}.column-filters select{min-width:112px}.sort-link{white-space:normal}}
.merge-panel{margin-top:16px;border-left:4px solid var(--orange)}.merge-panel>.panel-heading>svg{width:24px;color:var(--orange)}.merge-form{display:grid;grid-template-columns:minmax(260px,1fr) auto;align-items:end;gap:12px;margin-top:14px}.merge-form label{display:grid;gap:5px;color:var(--muted);font-size:.86rem;font-weight:700}.merge-panel h3{font-size:.95rem;margin:22px 0 8px}@media(max-width:720px){.merge-form{grid-template-columns:1fr}.merge-form button{width:100%}}
.tag-cloud{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}.source-record{padding:11px 0;border-top:1px solid var(--line)}.source-record:first-of-type{border-top:0}.source-record p{margin:5px 0;color:var(--ink);white-space:pre-wrap}.source-record .subline{overflow-wrap:anywhere}
