/* Opportunity analytics dashboard (public/dashboard.js). Every class starts with dx- so it cannot clash with site.css or globals.css. */
:root{
  --dx-bar:#0F5D9B; --dx-bar-dim:#C9D8E3;
  --dx-c1:#0F5D9B; --dx-c2:#0092BC; --dx-c3:#7DB8D6; --dx-c4:#1C2B39; --dx-c5:#8CA3B5; --dx-c6:#C8B07A; --dx-c7:#4F8391; --dx-c8:#D3DCE2;
  --dx-st-open:#147A3E; --dx-st-closed:#5A6B79; --dx-st-proc:#C07414; --dx-st-done:#0F5D9B; --dx-st-cancel:#B42318;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --dx-bar:#4C9FDB; --dx-bar-dim:#2A4257;
  --dx-c1:#4C9FDB; --dx-c2:#33BCE2; --dx-c3:#9CCBE3; --dx-c4:#DCE6EC; --dx-c5:#6F8799; --dx-c6:#D2BC85; --dx-c7:#5E9AA8; --dx-c8:#3A4C5A;
  --dx-st-open:#6CC38A; --dx-st-closed:#9AABB8; --dx-st-proc:#E8A058; --dx-st-done:#4C9FDB; --dx-st-cancel:#E27C68}}
:root[data-theme="dark"]{
  --dx-bar:#4C9FDB; --dx-bar-dim:#2A4257;
  --dx-c1:#4C9FDB; --dx-c2:#33BCE2; --dx-c3:#9CCBE3; --dx-c4:#DCE6EC; --dx-c5:#6F8799; --dx-c6:#D2BC85; --dx-c7:#5E9AA8; --dx-c8:#3A4C5A;
  --dx-st-open:#6CC38A; --dx-st-closed:#9AABB8; --dx-st-proc:#E8A058; --dx-st-done:#4C9FDB; --dx-st-cancel:#E27C68}

.dx{font:400 15px/1.45 var(--font);color:var(--ink);position:relative}
.dx *{box-sizing:border-box}
.dx button{font-family:var(--font)}
.dx-loading{opacity:.55;transition:opacity .15s}
.dx-filters{background:var(--tint);border:1px solid var(--line);padding:14px;display:grid;grid-template-columns:repeat(var(--cols,5),minmax(0,1fr));gap:10px 12px}
.dx-filters>div{min-width:0}
.dx-lbl{display:block;font:600 11px var(--font);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 3px}
.dx select,.dx input[type=date],.dx input[type=search]{width:100%;font:400 14px var(--font);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:2px;padding:7px 8px;height:34px;margin:0}
.dx select:focus,.dx input:focus,.dx button:focus-visible{outline:2px solid var(--cyan);outline-offset:1px}
.dx-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0 0;min-height:30px}
.dx-chip{display:inline-flex;gap:6px;align-items:center;background:var(--sel);color:var(--accent);border:1px solid var(--accent);padding:3px 8px;font:600 13px var(--font);cursor:pointer;border-radius:2px}
.dx-chip:after{content:"×";font-weight:700}
.dx-chip em{font-style:normal;font-weight:400;color:var(--muted)}
.dx-link{background:none;border:0;color:var(--accent);font:600 13px var(--font);cursor:pointer;padding:3px 4px}
.dx-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));border:1px solid var(--line);margin:14px 0 18px}
.dx-kpi{padding:14px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:-1px}
.dx-kpi .l{font:600 11px var(--font);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.dx-kpi .v{font:700 28px/1.2 var(--font);letter-spacing:-.02em}
.dx-card{border:1px solid var(--line);background:var(--bg);padding:16px 18px;min-width:0;margin-top:16px}
.dx-kpis+.dx-card{margin-top:0}
.dx-card h3{font:700 16px/1.3 var(--font);margin:0;letter-spacing:0}
.dx-card .d{font-size:13px;color:var(--muted);margin:2px 0 10px}
.dx-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;align-items:flex-end;margin-bottom:6px}
.dx-ctrls div{min-width:150px}
.dx-seg{display:inline-flex;border:1px solid var(--line)}
.dx-seg button{border:0;background:var(--bg);color:var(--ink);font:500 13px var(--font);padding:7px 12px;cursor:pointer;border-right:1px solid var(--line)}
.dx-seg button:last-child{border-right:0}
.dx-seg button[aria-pressed=true]{background:var(--navy);color:#fff}
.dx svg{display:block;width:100%;height:auto;overflow:visible}
.dx svg text{font:400 12px var(--font);fill:var(--muted)}
.dx-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px;font-size:13px}
.dx-legend span{display:inline-flex;align-items:center;gap:6px}
.dx-legend i{width:10px;height:10px;display:inline-block}
.dx-brow{display:grid;grid-template-columns:minmax(0,42%) 1fr 40px;gap:8px;align-items:center;padding:2px 0;cursor:pointer;border:0;background:none;width:100%;text-align:left;font:inherit;color:inherit}
.dx-brow:hover .lab{text-decoration:underline}
.dx-brow .lab{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-brow .track{height:14px;background:var(--tint)}
.dx-brow .fill{display:block;height:100%;background:var(--dx-bar)}
.dx-brow.off .fill{background:var(--dx-bar-dim)}
.dx-brow.on .lab{font-weight:700;color:var(--accent)}
.dx-brow .num{text-align:right;font-variant-numeric:tabular-nums;font-size:13px}
.dx-note{font-size:12.5px;color:var(--muted);margin-top:8px}
.dx-mapwrap{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(300px,1.3fr);gap:24px;align-items:start}
.dx-maplist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px;align-content:start;max-height:480px;overflow-y:auto}
@media(max-width:900px){.dx-mapwrap{grid-template-columns:1fr}.dx-map{max-width:440px;margin:0 auto}}
@media(max-width:520px){.dx-maplist{grid-template-columns:1fr}}
.dx-map path{stroke:var(--bg);stroke-width:1;cursor:pointer;stroke-linejoin:round}
.dx-map path:hover{stroke:var(--ink);stroke-width:1.5}
.dx-map path.sel{stroke:var(--ink);stroke-width:2.5}
.dx-bwin{max-height:480px;overflow-y:auto;border-top:1px solid var(--navy)}
.dx-bro{display:grid;grid-template-columns:30px minmax(0,1fr) 250px 150px 56px;gap:0 14px;align-items:center;height:48px;padding:0 4px;border:0;border-bottom:1px solid var(--line);background:none;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer}
.dx-bro:hover{background:var(--sel)}
.dx-bro.on{background:var(--sel);box-shadow:inset 3px 0 0 var(--accent)}
.dx-bro .rk{color:var(--muted);font-size:12.5px;font-variant-numeric:tabular-nums}
.dx-bro .nm{min-width:0}
.dx-bro .nm b{display:block;font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-bro .nm small{display:block;color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-tag{justify-self:start;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;background:color-mix(in srgb,var(--tg) 16%,var(--bg));color:var(--ink);padding:3px 10px;font:500 12px var(--font);white-space:nowrap;border-radius:2px}
.dx-bro .bar{height:10px;background:var(--tint)}
.dx-bro .bar span{display:block;height:100%;background:var(--dx-bar)}
.dx-bro .ct{text-align:right;font:700 15px var(--font);font-variant-numeric:tabular-nums}
@media(max-width:640px){.dx-bro{grid-template-columns:24px minmax(0,1fr) 48px}.dx-bro .dx-tag,.dx-bro .bar{display:none}}
.dx-pies{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:16px}
.dx-pies .dx-card{margin-top:0}
@media(max-width:900px){.dx-pies{grid-template-columns:1fr}}
.dx-donut{max-width:210px;margin:4px auto 10px}
.dx-plegend{display:flex;flex-direction:column}
.dx-pl{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:8px;align-items:center;border:0;border-bottom:1px solid var(--line);background:none;font:inherit;font-size:13.5px;color:inherit;text-align:left;padding:5px 2px;cursor:pointer}
.dx-pl:last-child{border-bottom:0}
.dx-pl:hover:not([disabled]){background:var(--sel)}
.dx-pl[disabled]{cursor:default}
.dx-pl i{width:10px;height:10px;display:inline-block}
.dx-pl span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dx-pl em{font-style:normal;font-variant-numeric:tabular-nums}
.dx-pl em small{color:var(--muted);font-size:12px}
.dx-pl.off{opacity:.45}
.dx-pl.on span{font-weight:700;color:var(--accent)}
.dx-tip{position:fixed;pointer-events:none;background:var(--navy);color:#fff;padding:8px 10px;font-size:13px;line-height:1.4;z-index:20;display:none;max-width:280px;border:1px solid var(--navy-line)}
.dx-tip b{display:block}
.dx-tip i{display:inline-block;width:9px;height:9px;margin-right:6px}
.dx-ms{position:relative}
.dx-msb{width:100%;height:34px;text-align:left;font:400 14px var(--font);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:2px;padding:0 26px 0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;position:relative}
.dx-msb:after{content:"";position:absolute;right:10px;top:13px;border:4px solid transparent;border-top-color:var(--muted)}
.dx-msp{position:absolute;left:0;top:37px;min-width:100%;width:max-content;max-width:340px;background:var(--bg);border:1px solid var(--ink);z-index:8;padding:8px;box-shadow:0 8px 20px rgba(11,20,27,.2)}
.dx-msl{max-height:260px;overflow-y:auto;margin:6px 0}
.dx-mso{display:grid;grid-template-columns:18px 1fr auto;gap:8px;align-items:center;padding:4px 2px;margin:0;font:400 14px var(--font);text-transform:none;letter-spacing:0;color:var(--ink);cursor:pointer}
.dx-mso:hover{background:var(--sel)}
.dx-mso input{width:16px;height:16px;margin:0;accent-color:var(--accent)}
.dx-mso em{font-style:normal;color:var(--muted);font-size:12.5px;font-variant-numeric:tabular-nums}
.dx-tw{overflow-x:auto}
.dx table{width:100%;border-collapse:collapse;font-size:13.5px}
.dx th{text-align:left;font:600 11px var(--font);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--navy);padding:6px 8px;white-space:nowrap}
.dx th button{color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.05em;padding:0}
.dx td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.dx td a{color:var(--accent);text-decoration:none;font-weight:500}
.dx td a:hover{text-decoration:underline}
.dx td:nth-child(1),.dx td:nth-child(2){white-space:nowrap}
.dx td .dx-tag{font-size:12px}
.dx-tbl{position:relative}
.dx-fade{position:absolute;left:0;right:0;bottom:0;height:120px;background:linear-gradient(to bottom,transparent,var(--bg) 92%);pointer-events:none}
.dx-cta{text-align:center;padding:6px 0 10px}
.dx-cta p{margin:0 0 14px;font-weight:600}
.dx-cta .acts{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;align-items:center}
.dx-cta a.b{display:inline-block;background:var(--cta,var(--btn,#1470B8));color:#fff;text-decoration:none;font:600 15px var(--font);padding:11px 22px;border-radius:3px}
.dx-cta a.s{font:600 15px var(--font);color:var(--accent)}
.dx-pager{display:flex;gap:12px;align-items:center;margin-top:10px;font-size:13px;color:var(--muted)}
.dx-err{padding:16px;border:1px solid var(--warn);color:var(--warn)}
.dx-foot{color:var(--muted);font-size:13px;margin-top:16px}
#dx-mapcard .dx-head{align-items:center;margin-bottom:12px}
#dx-mapcard .dx-head .dx-lbl{display:inline-block;margin:0 8px 0 0;vertical-align:middle}
