/* =============================================================================
   ATYNSE Dashboard — Aecon IDD  ·  design system (standalone, lintable)
   ============================================================================= */
:root{
  --r:#d60c30; --r-dark:#b00a28; --r-tint:#fdeef1; --navy:#002959; --ink:#12263f; --ink2:#3a4d64;
  --muted:#697a8d; --muted2:#9aa8b8; --line:#e8edf3; --line2:#f2f5f9;
  --blue:#0172c6; --blue-tint:#e9f2fb; --teal:#0e9aa7; --teal-tint:#e2f5f6; --green:#1f9d55; --green-tint:#e9f7ef;
  --amber:#e08a00; --amber-tint:#fdf1dd; --bad:#c01530; --bad-tint:#fce8eb; --purple:#6b4fc7; --purple-tint:#eeeafb;
  --bg:#f4f7fb; --card:#fff; --r16:16px; --r12:12px; --r10:10px;
  --sh:0 1px 2px rgba(16,38,63,.04),0 6px 20px rgba(16,38,63,.05); --sh-lg:0 24px 60px rgba(16,38,63,.14);
  --mono:'SF Mono',Consolas,Menlo,monospace; --f:'Segoe UI',Inter,system-ui,-apple-system,Arial,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
h1,h2,h3{margin:0}
/* GLOBAL GUARD: inline SVGs never balloon unless explicitly sized */
svg{max-width:100%;max-height:100%}
.t-h1{font-size:21px;font-weight:800;letter-spacing:-.02em;line-height:1.25}
.t-h2{font-size:14px;font-weight:750;letter-spacing:-.01em}
.t-lbl{font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.t-sub{font-size:12px;color:var(--muted);line-height:1.5}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(900px 480px at 12% -12%,#0172c614,transparent),radial-gradient(820px 460px at 100% -6%,#d60c3010,transparent),var(--bg)}
.loginCard{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--sh-lg);padding:38px 40px;max-width:540px;width:100%}
.loginCard h1{margin:14px 0 10px;font-size:22px;font-weight:800}.loginCard p{color:var(--muted);margin:0 0 15px}
.brand{font-weight:800;font-size:16px;letter-spacing:.06em;color:var(--navy);display:inline-flex;align-items:center;gap:10px;line-height:1;text-transform:none}
.brand::before{content:"";flex:0 0 auto;width:30px;height:30px;border-radius:9px;background:linear-gradient(150deg,#e11a3c,#b00a28);background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23ffffff%27%20stroke-width%3D%271.7%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%203l7.5%204.2v8.6L12%2020.4%204.5%2015.8V7.2z%27%2F%3E%3Cpath%20d%3D%27M12%203v8.7%27%2F%3E%3Cpath%20d%3D%27M12%2011.7l7.5-4.4%27%2F%3E%3Cpath%20d%3D%27M12%2011.7L4.5%207.3%27%2F%3E%3C%2Fsvg%3E"),linear-gradient(150deg,#e11a3c,#b00a28);background-repeat:no-repeat;background-position:center;background-size:18px,cover;box-shadow:0 3px 8px rgba(214,12,48,.28),inset 0 1px 0 rgba(255,255,255,.25)}
.brand span{color:var(--r);font-weight:900;margin:0 3px}
.proj b{font-weight:800;letter-spacing:-.01em}

/* shell / sidebar */
.shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh}
.side{background:var(--card);border-right:1px solid var(--line);padding:18px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}
.side .head{padding:2px 6px 0}
.proj{margin:15px 6px 16px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#fff,#f7fafd)}
.proj b{font-size:13px;color:var(--navy);font-weight:750}.proj small{display:block;color:var(--muted);margin-top:3px;font-size:11px}
.nav{display:flex;flex-direction:column;gap:2px;overflow:auto}
.nav .grp{font-size:9.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);margin:13px 12px 5px}
.nav button{border:0;background:transparent;color:var(--ink2);text-align:left;padding:9px 12px;border-radius:10px;font-weight:600;font-size:13px;cursor:pointer;display:flex;align-items:center;gap:11px;width:100%;transition:background .14s,color .14s;font-family:var(--f)}
.nav button svg{width:17px;height:17px;flex:0 0 auto;color:var(--muted2)}
.nav button:hover{background:var(--line2);color:var(--navy)}
.nav button.active{background:var(--r-tint);color:var(--r);font-weight:700}.nav button.active svg{color:var(--r)}
.nav button .badge{margin-left:auto;background:var(--line2);color:var(--muted);border-radius:99px;font-size:10.5px;font-weight:800;padding:1px 7px}
.nav button.active .badge{background:#fff;color:var(--r)}
.side .foot{margin-top:auto;padding:14px 6px 2px;border-top:1px solid var(--line)}
.side .foot a.primary{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--r);color:#fff;border-radius:11px;padding:11px;font-weight:750;font-size:13px}
.side .foot a.primary:hover{background:var(--r-dark)}.side .foot a.primary svg{width:16px;height:16px}
.side .foot .row{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding:0 4px}
.side .foot .built{font-size:10px;color:var(--muted2)}.side .foot .logout{font-size:11.5px;color:var(--muted);font-weight:600}.side .foot .logout:hover{color:var(--r)}

/* main / topbar */
.main{padding:22px 26px 40px;max-width:1600px}
.pagehead{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.pagehead .ttl{min-width:0}.pagehead .t-sub{margin-top:4px;max-width:680px}
.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.search{background:var(--card);border:1px solid var(--line);border-radius:999px;box-shadow:var(--sh);padding:0 15px;display:flex;align-items:center;gap:9px;min-width:230px}
.search svg{width:15px;height:15px;color:var(--muted2);flex:0 0 auto}
.search input{border:0;outline:0;width:100%;font-size:13px;padding:9px 0;background:transparent;font-family:var(--f)}
select.ctl{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:9px 12px;font-weight:650;font-size:12.5px;box-shadow:var(--sh);color:var(--ink);font-family:var(--f)}
.seg{display:inline-flex;align-items:center;background:#eaeff5;border:1px solid var(--line);border-radius:999px;padding:3px;box-shadow:var(--sh);gap:2px}
.seg .l{font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.03em;padding:0 9px}
.seg button{border:0;background:transparent;color:var(--muted);padding:6px 14px;border-radius:999px;font-weight:800;font-size:11.5px;cursor:pointer;letter-spacing:.03em;font-family:var(--f)}
.seg button.on{background:#fff;color:var(--r);box-shadow:0 1px 4px rgba(16,38,63,.14)}
.seg .cap{font-size:10.5px;color:var(--muted);font-weight:750;padding:0 10px 0 6px;border-left:1px solid #d7dfe9;margin-left:2px}

/* pages / panels */
.page{display:none;animation:fade .24s ease}.page.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r16);box-shadow:var(--sh);padding:16px 18px;margin-bottom:16px;min-width:0}
.panel .ph{display:flex;align-items:center;gap:9px;margin-bottom:13px;flex-wrap:wrap}
.panel .ph .ic{color:var(--r);background:var(--r-tint);border-radius:9px;padding:5px;display:inline-flex}
.panel .ph .ic svg{width:15px;height:15px}
.panel .ph .r{margin-left:auto;display:flex;align-items:center;gap:8px}
.grid{display:grid;gap:16px}.g-2{grid-template-columns:1fr 1fr}.g-3{grid-template-columns:repeat(3,1fr)}
.split{display:grid;grid-template-columns:1.55fr 1fr;gap:16px}

/* KPI cards */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:16px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r12);padding:14px 16px;box-shadow:var(--sh);min-width:0;overflow:hidden}
.kpi .top{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.kpi .chip{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto}.kpi .chip svg{width:17px;height:17px}
.c-red{background:var(--r-tint);color:var(--r)}.c-blue{background:var(--blue-tint);color:var(--blue)}.c-green{background:var(--green-tint);color:var(--green)}
.c-amber{background:var(--amber-tint);color:var(--amber)}.c-teal{background:var(--teal-tint);color:var(--teal)}.c-navy{background:#e7edf5;color:var(--navy)}.c-purple{background:var(--purple-tint);color:var(--purple)}
.kpi .v{font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .v small{font-size:12px;color:var(--muted);font-weight:700}
.kpi .sub{font-size:11.5px;color:var(--muted);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .sub b{color:var(--ink);font-weight:750}

/* donut — FIX: center text constrained so % never bleeds outside the ring */
.gauge{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.gauge .ring{position:relative;width:140px;height:140px;flex:0 0 auto}
.gauge .ring svg{display:block}
.gauge .ring .ctr{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:1px}
.gauge .ring .ctr b{font-size:23px;font-weight:800;letter-spacing:-.03em;line-height:1}
.gauge .ring .ctr span{font-size:9px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.08em;line-height:1}
.gauge .lg{display:grid;gap:8px;flex:1;min-width:140px}.gauge .lg .row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink2)}
.gauge .lg .dot{width:9px;height:9px;border-radius:3px;flex:0 0 auto}.gauge .lg b{font-weight:750}

/* horizontal bars — FIX: constrain the label icon so it never balloons */
.hbars{display:flex;flex-direction:column;gap:2px}
.hbar{display:grid;grid-template-columns:150px 1fr 90px;gap:12px;align-items:center;padding:6px 0}
.hbar .hl{font-size:12.5px;font-weight:600;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:7px;min-width:0}
.hbar .hl svg{width:15px;height:15px;flex:0 0 auto;color:var(--muted)}
.hbar .hl small{color:var(--muted);font-weight:500}
.hbar .ht{height:9px;border-radius:99px;background:var(--line2);overflow:hidden}
.hbar .hf{height:100%;border-radius:99px}
.hbar .hv{font-size:12.5px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}

/* buttons / pills / actions */
.btn{cursor:pointer;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 12px;font-weight:700;font-size:12.5px;color:var(--ink);font-family:var(--f)}
.btn:hover{border-color:var(--blue)}.btn.sm{padding:6px 10px;font-size:12px}
.btn.primary{background:var(--r);border-color:var(--r);color:#fff}.btn.primary:hover{background:var(--r-dark)}
.pill{border-radius:999px;padding:3px 9px;font-size:11px;font-weight:750;display:inline-block;white-space:nowrap}
.pill.datepill{padding:3px 8px;font-size:10.5px;font-variant-numeric:tabular-nums;letter-spacing:.01em;line-height:1.35}
.p-ok{background:var(--green-tint);color:var(--green)}.p-warn{background:var(--amber-tint);color:var(--amber)}.p-bad{background:var(--bad-tint);color:var(--bad)}
.act{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:5px 9px;font-size:11.5px;font-weight:650;color:var(--ink2)}
.act:hover{border-color:var(--blue);color:var(--blue);background:var(--blue-tint)}.act svg{width:12px;height:12px;flex:0 0 auto}
.chiptog{display:inline-flex;gap:2px;background:#eef2f7;border:1px solid var(--line);border-radius:9px;padding:3px;flex-wrap:wrap}
.chiptog button{border:0;background:transparent;color:var(--muted);font-weight:700;font-size:11.5px;padding:5px 10px;border-radius:7px;cursor:pointer;font-family:var(--f)}
.chiptog button.on{background:#fff;color:var(--navy);box-shadow:var(--sh)}

/* filter bar */
/* responsive grid: fields stretch to fill each row evenly — no ragged empty space */
.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 12px;align-items:end;margin-bottom:14px}
.filters .fg{display:flex;flex-direction:column;gap:5px;min-width:0}
.filters label{font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.filters select,.filters input{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-size:12.5px;background:#fff;width:100%;font-family:var(--f)}
.filters .reset{align-self:end;justify-self:start;border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 14px;font-weight:700;font-size:12px;cursor:pointer;white-space:nowrap}
.filters .reset:hover{border-color:var(--blue);color:var(--blue)}

/* tables + infinite scroll — one consistent style for every table on the site */
.tablewrap{overflow:auto;border:1px solid var(--line);border-radius:var(--r12);max-height:620px}
.main table,.vright table{width:100%;border-collapse:collapse;background:#fff;font-size:12.5px;table-layout:auto}
.main th,.vright th{position:sticky;top:0;background:#fbfcfe;color:var(--muted);z-index:1;font-size:10.5px;letter-spacing:.03em;font-weight:800;text-transform:uppercase;cursor:pointer;white-space:nowrap;padding:10px 13px;text-align:center;border-bottom:1px solid var(--line)}
/* FIX: numeric headers AND cells both right-align so numbers sit under their header */
.main th.num,.vright th.num,.main td.num,.vright td.num{text-align:center;font-variant-numeric:tabular-nums}
.main th:hover{color:var(--navy)}
.main td,.vright td{padding:9px 13px;text-align:center;border-bottom:1px solid var(--line2);vertical-align:middle}
.main td.wrapname,.vright td.wrapname{text-align:left}
.main td .cov,.main td .flagcell{justify-content:center}
.main tbody tr:hover td{background:#f7fafd}
.code{font-family:var(--mono);font-weight:750;color:var(--navy);font-size:12px}
.wrapname{max-width:280px;white-space:normal;line-height:1.35;word-break:break-word}
.loadmore{padding:11px;text-align:center;color:var(--muted);font-size:11.5px}
/* coverage bar — inline-block so width/height apply */
.cov{display:inline-flex;align-items:center;gap:8px;justify-content:flex-end}
.cov .track{display:inline-block;width:78px;height:7px;border-radius:99px;background:var(--line2);overflow:hidden;vertical-align:middle}
.cov .fill{display:block;height:100%;border-radius:99px;background:var(--blue)}
.cov .fill.ok{background:var(--green)}.cov .fill.warn{background:var(--amber)}.cov .fill.bad{background:var(--r)}
.cov .pv{min-width:44px;text-align:right;font-weight:700}
.lvlpill{display:inline-block;border-radius:7px;padding:2px 7px;font-size:11px;font-weight:800;font-family:var(--mono);background:var(--line2);color:var(--ink2)}

/* CBS tree table */
.cbs{border:1px solid var(--line);border-radius:var(--r12);overflow:hidden}
.cbs .hd,.cbs .rw{display:grid;grid-template-columns:minmax(220px,1.5fr) 82px 62px 76px 118px 118px 56px;gap:10px;align-items:center;padding:9px 14px}
.cbs .rw.uncoded{background:#fff7ef}.cbs .rw.uncoded .code{color:var(--amber);font-weight:800}
.cbs .cpill{display:inline-block;border-radius:99px;padding:2px 7px;font-size:10.5px;font-weight:800;font-variant-numeric:tabular-nums}
.cbs .cpill.ok{background:var(--green-tint);color:var(--green)}.cbs .cpill.warn{background:var(--amber-tint);color:var(--amber)}.cbs .cpill.bad{background:var(--bad-tint);color:var(--bad)}
.cbs .hd{background:#fbfcfe;color:var(--muted);font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1}
.cbs .rw{border-bottom:1px solid var(--line2)}.cbs .rw:hover{background:#f7fafd}
.cbs .nm{display:flex;align-items:center;gap:8px;min-width:0}
.cbs .tw{cursor:pointer;width:15px;color:var(--blue);flex:0 0 auto;font-size:11px}
.cbs .code{flex:0 0 auto}.cbs .dsc{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cbs .rw.lvl1{background:#fbfcff}.cbs .rw.lvl1 .code{color:var(--navy);font-size:12.5px}
.cbs .num{text-align:right;font-variant-numeric:tabular-nums}
.cbs .minibar{height:6px;border-radius:99px;background:var(--line2);overflow:hidden;margin-top:3px}
.cbs .minibar i{display:block;height:100%;background:var(--blue);border-radius:99px}

/* states */
.empty{padding:28px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--r12);background:#fbfdff}
.skeleton{height:14px;border-radius:6px;background:linear-gradient(90deg,#eef3f8,#f6f9fc,#eef3f8);background-size:200% 100%;animation:sk 1.1s infinite}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* note / glossary */
.note{display:flex;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r12);background:#fbfdff;margin-bottom:10px}
.note .ic{color:var(--blue);flex:0 0 auto}.note .ic svg{width:18px;height:18px}
.gloss{display:flex;flex-direction:column;gap:10px}
.gcard{border:1px solid var(--line);border-radius:var(--r12);padding:13px 15px}
.gcard .gt{display:flex;align-items:center;gap:9px;margin-bottom:5px;flex-wrap:wrap}
.gcard .gt b{font-size:13px}.gcard .gt .cnt{margin-left:auto;font-weight:800;font-variant-numeric:tabular-nums}
.gcard .gm{font-size:12px;color:var(--ink2);line-height:1.5}
.gcard .gx{margin-top:6px;font-family:var(--mono);font-size:11px;color:var(--muted);background:var(--line2);border-radius:7px;padding:6px 8px;word-break:break-word}

/* viewer */
.vtop{position:fixed;top:0;left:0;right:0;z-index:5;background:#fff;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center;padding:8px 14px;flex-wrap:wrap;box-shadow:var(--sh)}
.vtop .back{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-weight:700;font-size:12.5px;color:var(--ink)}
.vtop .back:hover{border-color:var(--blue);color:var(--blue)}.vtop .back svg{width:15px;height:15px}
.vtop .sp{flex:1}
.vtop select,.vtop .vbtn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 11px;font-weight:650;font-size:12px;cursor:pointer;font-family:var(--f);color:var(--ink)}
.vtop .vbtn:hover{border-color:var(--blue)}
.vtop .vbtn.on{background:var(--r-tint);border-color:var(--r);color:var(--r)}
.vshell{display:grid;grid-template-columns:264px 1fr 320px;height:100vh;padding-top:53px}
.vside,.vright{background:#fff;overflow:auto}.vside{border-right:1px solid var(--line)}.vright{border-left:1px solid var(--line)}
#forge{position:relative;background:#eef1f5}
.msg{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);padding:24px;text-align:center}
/* Viewer canvas messages: an empty or error state should read like guidance,
   not like a stack trace. Card sits centred on the grey canvas.
   Default accent is red (a real failure); .msg-info and .msg-busy soften it. */
.msg .msgBox{max-width:440px;background:var(--card,#fff);border:1px solid var(--line,#e3e6ea);
  border-left:3px solid #d92d20;border-radius:12px;padding:22px 26px;
  box-shadow:0 6px 24px rgba(16,24,40,.10);text-align:left}
.msg .msgTitle{font-size:15px;font-weight:650;color:var(--ink,#1d2939);margin-bottom:8px;line-height:1.35}
.msg .msgText{font-size:13px;line-height:1.55;color:var(--muted,#667085)}
.msg .msgText b{color:var(--ink,#1d2939);font-weight:600}
.msg-info .msgBox{border-left-color:var(--brand,#0d5c3d)}
.msg-busy .msgBox{border-left-color:var(--line,#cbd2d9)}
.vsearch{padding:10px 12px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:1}
.vsearch input{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-size:12px;font-family:var(--f)}
.vsort{display:flex;gap:4px;margin-top:7px}
.vsort button{flex:1;border:1px solid var(--line);background:#fff;border-radius:7px;padding:5px 0;font-size:11px;font-weight:800;color:var(--muted);cursor:pointer;font-family:var(--f);letter-spacing:.02em;display:inline-flex;align-items:center;justify-content:center;gap:3px}
.vsort button:hover{border-color:var(--blue);color:var(--blue)}
.vsort button.on{background:var(--r-tint);border-color:var(--r);color:var(--r)}
.vsort button .ar{font-size:9px;line-height:1}
/* FIX: model row name fits ONE line + prominent coverage pill */
.modelRow{padding:9px 12px;border-bottom:1px solid var(--line2);cursor:pointer;display:flex;align-items:center;gap:8px}
.modelRow:hover,.modelRow.active{background:var(--blue-tint)}.modelRow.active{box-shadow:inset 3px 0 0 var(--r)}
.modelRow .mtxt{min-width:0;flex:1}
.modelRow .mn{font-weight:650;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.modelRow .mc{color:var(--muted);font-size:10.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.modelRow .mp{flex:0 0 auto;font-size:10.5px;font-weight:800;border-radius:99px;padding:2px 7px}
.vp{padding:12px 14px;border-bottom:1px solid var(--line)}
.vp h3{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:10px;font-weight:800;margin-bottom:9px}
.vkpis{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.vkpi{border:1px solid var(--line);border-radius:10px;padding:9px 10px}
.vkpi .l{font-size:9.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.vkpi .v{font-size:17px;font-weight:800;margin-top:2px}
.legendItem{display:flex;gap:9px;padding:6px 7px;border-radius:9px;cursor:pointer;align-items:flex-start}
.legendItem:hover{background:#f2f7fc}.sw{width:13px;height:13px;border-radius:4px;border:1px solid #0002;flex:0 0 auto;margin-top:2px}
.legendItem .lt{min-width:0}.legendItem .lt .code{font-size:11.5px}.legendItem .lt small{color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#props table{width:100%;border-collapse:collapse}#props td{padding:5px 4px;border-bottom:1px solid var(--line2);vertical-align:top;font-size:12px}
#props td.k{color:var(--muted);white-space:nowrap;width:38%}
/* section heading inside the click panel (PROPERTY_PANEL "head" rows) */
#props td.panel-head{color:var(--txt);font-weight:600;font-size:11px;letter-spacing:.04em;
  text-transform:uppercase;padding-top:12px;border-bottom:1px solid var(--line);width:auto}
#props tr:first-child td.panel-head{padding-top:2px}

@media(max-width:1160px){.shell{grid-template-columns:1fr}.side{position:relative;height:auto}.g-2,.g-3,.split{grid-template-columns:1fr}.vshell{grid-template-columns:1fr;height:auto}#forge{height:70vh}}

/* ---------- ANALYTICS: heatmap / treemap / pareto / distribution ---------- */
.metricbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.metricbar .lbl{font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.hmwrap{overflow:auto;border:1px solid var(--line);border-radius:var(--r12);max-height:640px}
.hm{border-collapse:separate;border-spacing:0;width:100%;font-size:11.5px}
.hm th{position:sticky;top:0;z-index:2;background:#fbfcfe;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:8px 8px;text-align:center;border-bottom:1px solid var(--line);white-space:nowrap}
/* FIX: row-header column fits the longest label (no wasted fixed width) */
.hm th.rh{left:0;z-index:3;text-align:left;width:1%;white-space:nowrap}
.hm td.rh{position:sticky;left:0;z-index:1;background:#fff;font-weight:700;color:var(--ink2);padding:7px 12px 7px 10px;border-bottom:1px solid var(--line2);white-space:nowrap;box-shadow:1px 0 0 var(--line);width:1%}
.hm td{padding:0;text-align:center;border-bottom:1px solid #fff;border-right:1px solid #fff;min-width:64px}
.hm .cell{display:block;padding:9px 6px;font-weight:750;font-variant-numeric:tabular-nums;line-height:1.15;position:relative}
.hm .cell .p{display:block;font-size:9.5px;font-weight:700;opacity:.85}
.hm tr.tot td{border-top:2px solid var(--line)}
.hm td.tot{border-left:2px solid var(--line)}
.hmleg{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);margin-top:8px;flex-wrap:wrap}
.hmleg .scale{display:flex;height:10px;border-radius:99px;overflow:hidden;width:180px}
.hmleg .scale i{flex:1}

.treemap{position:relative;width:100%;height:420px;border:1px solid var(--line);border-radius:var(--r12);overflow:hidden;background:#fbfcfe}
.tm-node{position:absolute;overflow:hidden;border:2px solid #fff;border-radius:6px;padding:7px 8px;cursor:pointer;transition:filter .12s}
.tm-node:hover{filter:brightness(1.06)}
.tm-node .tl{font-size:11.5px;font-weight:800;color:#fff;line-height:1.15;text-shadow:0 1px 2px rgba(0,0,0,.25);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tm-node .tv{font-size:10.5px;color:#fff;opacity:.92;margin-top:2px;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.tm-node.sm .tv{display:none}.tm-node.xs .tl{font-size:10px}.tm-node.xs .tv{display:none}

.pareto{display:flex;flex-direction:column;gap:0}
.prow{display:grid;grid-template-columns:180px 1fr 76px 58px;gap:10px;align-items:center;padding:5px 0}
.prow .pl{font-size:12px;font-weight:600;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow .pbar{position:relative;height:16px;border-radius:6px;background:var(--line2);overflow:hidden}
.prow .pbar i{display:block;height:100%;border-radius:6px;background:var(--amber)}
.prow .pbar.crit i{background:var(--r)}
.prow .pv{font-size:12px;font-weight:750;text-align:right;font-variant-numeric:tabular-nums}
.prow .pc{font-size:11px;font-weight:800;text-align:right;color:var(--muted)}
.prow.hl{background:#fff7ee;border-radius:8px}
.paretohead{display:grid;grid-template-columns:180px 1fr 76px 58px;gap:10px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:0 0 6px}
.paretohead .r{text-align:right}
.paretonote{font-size:11.5px;color:var(--muted);margin-top:8px}.paretonote b{color:var(--r)}

/* confidence distribution — explicit axes + cumulative overlay */
.dist{position:relative}
.distgrid{display:grid;grid-template-columns:36px 1fr;gap:6px}
.distyax{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;font-size:9.5px;color:var(--muted2);font-weight:700;padding-bottom:22px}
.distplot{position:relative}
.distchart{display:flex;align-items:flex-end;gap:3px;height:210px;padding:0 2px;border-bottom:2px solid var(--line);border-left:1px solid var(--line);position:relative}
.dbar{flex:1;border-radius:4px 4px 0 0;min-height:2px;position:relative;transition:opacity .12s}
.dbar:hover{opacity:.82}
.dbar .dt{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;font-size:10.5px;font-weight:700;padding:4px 7px;border-radius:6px;white-space:nowrap;opacity:0;pointer-events:none;margin-bottom:4px;transition:opacity .1s;z-index:3}
.dbar:hover .dt{opacity:1}
.distline{position:absolute;inset:0;pointer-events:none}
.distthr{position:absolute;top:0;bottom:0;width:2px;background:var(--r);opacity:.75}
.distthr .lb{position:absolute;top:2px;left:5px;font-size:10px;font-weight:800;color:var(--r);white-space:nowrap;background:#fff;padding:1px 4px;border-radius:5px;box-shadow:var(--sh)}
.distxax{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:6px;font-weight:700}
.distxlbl{text-align:center;font-size:10px;color:var(--muted2);font-weight:800;text-transform:uppercase;letter-spacing:.05em;margin-top:4px}
.distlegend{display:flex;gap:14px;margin-bottom:12px;flex-wrap:wrap}
.distlegend .it{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;cursor:pointer;color:var(--muted);border:1px solid var(--line);border-radius:99px;padding:4px 10px}
.distlegend .it.on{color:var(--ink);background:#fff;box-shadow:var(--sh)}
.distlegend .it .sw{width:11px;height:11px;border-radius:3px}
.distkpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:14px}
.distkpi .k{border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.distkpi .k .kl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.distkpi .k b{color:var(--ink);font-size:18px;font-weight:800;display:block;margin-top:3px}
.bandrow{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line2)}
.bandrow .bl{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:650;min-width:180px}
.bandrow .bl .sw{width:11px;height:11px;border-radius:3px}
.bandrow .bt{flex:1;height:9px;border-radius:99px;background:var(--line2);overflow:hidden}
.bandrow .bt i{display:block;height:100%;border-radius:99px}
.bandrow .bv{font-size:12px;font-weight:750;font-variant-numeric:tabular-nums;min-width:120px;text-align:right}

/* ---------- Feature A: model flags ---------- */
.flagcell{display:inline-flex;gap:4px;flex-wrap:wrap;align-items:center}
.flagchip{display:inline-block;border-radius:6px;padding:2px 7px;font-size:10px;font-weight:800;letter-spacing:.02em;white-space:nowrap;cursor:default}
.flagchip.sev-high{background:var(--bad-tint);color:var(--bad)}
.flagchip.sev-med{background:var(--amber-tint);color:var(--amber)}
.flagchip.sev-low{background:var(--line2);color:var(--muted)}
.flagchip.sev-more{background:#e7edf5;color:var(--navy)}
/* AECON-DEFECT-TIERS-V1 */
/* cause tiers: upstream is the only true red on this page */
.flagchip.tier-1{background:var(--bad-tint);color:var(--bad);box-shadow:inset 0 0 0 1px var(--bad)}
.flagchip.tier-2{background:var(--amber-tint);color:var(--amber)}
.flagchip.tier-3{background:var(--line2);color:var(--muted)}
.defcell{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.defword{display:inline-block;border-radius:6px;padding:3px 8px;font-size:10px;font-weight:800;letter-spacing:.02em;border-left:3px solid transparent}
.defword.w-t1{background:var(--bad-tint);color:var(--bad);border-left-color:var(--bad)}
.defword.w-t2{background:var(--amber-tint);color:var(--amber);border-left-color:var(--amber)}
.defword.w-t3{background:var(--line2);color:var(--muted);border-left-color:var(--muted)}
.defword.w-ok{background:var(--ok-tint,#e8f6ee);color:var(--ok,#1a7f45);border-left-color:var(--ok,#1a7f45)}
.dots{display:inline-flex;gap:3px}
.ddot{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:9px;font-weight:800;cursor:default}
.ddot.d-t1{background:var(--bad);color:#fff}
.ddot.d-t2{background:var(--amber);color:#fff}
.ddot.d-t3{background:var(--muted);color:#fff}
.ddot.d-z{background:transparent;box-shadow:inset 0 0 0 1px var(--line2)}
.blcell{display:inline-flex;align-items:center;gap:6px;justify-content:flex-end;width:100%}
.blbar{position:relative;width:52px;height:6px;border-radius:3px;background:var(--line2);overflow:hidden;flex:none}
.blbar i{position:absolute;left:0;top:0;bottom:0;border-radius:3px}
.blbar i.b-bad{background:var(--bad)}
.blbar i.b-warn{background:var(--amber)}
.blbar i.b-ok{background:var(--line2)}
.blnum{font-variant-numeric:tabular-nums;font-size:11px}
.reset.expbtn{font-weight:700}
/* ---- models table layout -------------------------------------------
   Was: 12 auto-width columns, everything centred, model names broken
   mid-token across 8 lines, horizontal scrollbar. Now: fixed widths,
   text left / numbers right, one-line name + subtext, colour rail. */
#mTbl table{table-layout:fixed;width:100%;min-width:940px}
#mTbl th,#mTbl td{text-align:left;padding:10px 16px}
#mTbl th.num,#mTbl td.num{text-align:right}
#mTbl td.num{font-variant-numeric:tabular-nums;font-family:var(--mono);font-size:12px}
#mTbl td .flagcell{justify-content:flex-start}
#mTbl td .cov{justify-content:flex-end}
#mTbl td:last-child{text-align:right}
#mTbl tbody td{height:56px}
#mTbl.dense tbody td{height:40px;padding:5px 16px}
#mTbl.dense .mmeta{display:none}
/* row identity: one line, ellipsis, tooltip - never wrapped */
#mTbl td.midcell{padding-left:19px}
.mident{display:block;min-width:0}
.mname{display:block;font-family:var(--mono);font-size:12.5px;font-weight:750;color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mmeta{display:block;margin-top:3px;font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}
.mmeta .msep{color:#c6d1e0;font-style:normal;margin:0 1px}
.mmeta .msrc{font-weight:800;color:var(--ink2)}
.mmeta .mstale{color:var(--amber);font-weight:800}
/* colour rail: the class is also a word, so colour is never the only cue */
#mTbl tbody tr td:first-child{box-shadow:inset 3px 0 0 transparent}
#mTbl tbody tr.dt-1 td:first-child{box-shadow:inset 3px 0 0 var(--bad)}
#mTbl tbody tr.dt-2 td:first-child{box-shadow:inset 3px 0 0 var(--amber)}
#mTbl tbody tr.dt-3 td:first-child{box-shadow:inset 3px 0 0 var(--line)}
#mTbl tbody tr.dt-1 td{background:#fffafb}
#mTbl tbody tr.dt-1:hover td{background:#fff2f4}
/* flags flow across the cell instead of stacking one per line */
#mTbl td.flagtd .flagcell{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
#mTbl td.flagtd .flagchip{margin:0;font-size:9.5px;padding:2px 6px;letter-spacing:.01em}
#mTbl .defcell{flex-wrap:wrap;white-space:normal;gap:5px}
#mTbl .blcell{justify-content:flex-end}
@media (max-width:1360px){#mTbl .mmeta{font-size:10px}
#mTbl .cov .track{width:52px}#mTbl .cov .pv{min-width:38px}
#mTbl th,#mTbl td{padding-left:12px;padding-right:12px}}


/* ---------- Feature B: property explorer distribution ---------- */
.distwrap{min-width:190px}
.dbar2{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--line2);border:1px solid var(--line)}
.dseg{height:100%;display:block}
.dseg:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}
.dseg:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}
.dkeys{display:flex;gap:10px;flex-wrap:wrap;margin-top:5px}
.dkey{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--ink2);white-space:nowrap}
.dkey i{width:9px;height:9px;border-radius:3px;flex:0 0 auto}
.dkey b{font-weight:800}

/* composition tree reuses .cbs; widen for 6 columns */
#compTree.cbs .hd,#compTree.cbs .rw{grid-template-columns:minmax(240px,1.8fr) 96px 74px 110px 110px 96px}

/* ---------- explorer: distribution + View-3D link in one cell ---------- */
.distcell{display:flex;align-items:center;gap:10px;justify-content:space-between}
.distcell .distwrap{flex:1;min-width:0}
.act.v3d{flex:0 0 auto;white-space:nowrap}
/* ---------- sortable headers (all tables) ---------- */
.main th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
.main th.sortable:hover{color:var(--navy)}
.main th .sarr{color:var(--r);font-size:10px;margin-left:2px}
/* ---------- explorer expand/collapse toolbar ---------- */
.pxtools{display:inline-flex;align-items:center;gap:6px;margin-left:auto;flex-wrap:wrap}
.pxtools .btn.sm{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;font-size:11.5px}
.pxtools .btn.sm svg{width:13px;height:13px}
.metricbar{align-items:center}
/* ---------- Feature B2: nested property explorer rows ---------- */
.main .tw{cursor:pointer;color:var(--blue);font-size:11px;display:inline-block;width:16px;user-select:none}
.main tr.pxm td{background:#fbfcff;border-top:1px solid var(--line)}
.main tr.pxm td b{color:var(--navy)}
.main tr.pxsub td{background:#fff;font-size:12px}
.main tr.pxsub td .code{font-size:11.5px}
.main tr.pxsub:hover td{background:#f7fafd}
.main tr.pxm:hover td{background:#f2f7ff}

/* Autodesk viewer UI reset */
.adsk-viewing-viewer,.adsk-viewing-viewer *{box-sizing:content-box}
.adsk-viewing-viewer svg{max-width:none;max-height:none}
.adsk-viewing-viewer table,.adsk-viewing-viewer thead,.adsk-viewing-viewer tbody,.adsk-viewing-viewer tr,.adsk-viewing-viewer th,.adsk-viewing-viewer td{width:auto;border-collapse:separate;border-spacing:0;border:0;padding:0;margin:0;background:transparent;color:inherit;font-size:inherit;font-weight:inherit;text-align:left;position:static;top:auto;z-index:auto}
.adsk-viewing-viewer button,.adsk-viewing-viewer input,.adsk-viewing-viewer select,.adsk-viewing-viewer textarea{font:inherit;color:inherit;background:initial;border:initial;border-radius:initial;padding:initial;margin:initial;box-shadow:none;text-transform:none;letter-spacing:normal}
.adsk-viewing-viewer .docking-panel,.adsk-viewing-viewer .docking-panel *{font-family:Arial,Helvetica,sans-serif}

/* ========================================================================
   CUSTOM COST BREAKDOWN  — mode switch, chip stack, dimension tags
   ======================================================================== */
.bd-mode{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.bd-mode .ctl{cursor:pointer}
.bd-mode .ctl.on{background:var(--navy,#284563);color:#fff;border-color:var(--navy,#284563)}
.bd-hint{color:var(--muted,#6b7a8c);font-size:12px;margin-left:4px}

/* ---- foldable "Customize breakdown" disclosure -------------------------- */
.bd-panel{margin-bottom:12px;border:1px solid var(--line,#dfe5ec);border-radius:8px;
          background:var(--card2,#f6f8fa);overflow:hidden}
.bd-sum{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;
        list-style:none;user-select:none;font-size:13px;
        transition:background .12s ease}
.bd-sum::-webkit-details-marker{display:none}   /* kill the native triangle */
.bd-sum:hover{background:var(--card3,#eef2f7)}
.bd-sum:focus-visible{outline:2px solid var(--navy,#284563);outline-offset:-2px}
.bd-sum-t{font-weight:600;color:var(--ink,#1b2a3a);white-space:nowrap}
.bd-sum-n{font-size:11px;padding:1px 7px;border-radius:9px;white-space:nowrap;
          background:var(--navy,#284563);color:#fff}
.bd-sum-c{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;
          white-space:nowrap;font-size:12px;color:var(--muted,#6b7a8c)}
.bd-sum-c b{color:var(--ink,#1b2a3a);font-weight:600}
.bd-sum-c i{font-style:normal;opacity:.8}
/* the affordance: a chevron pinned to the right edge that flips when open */
.bd-chev{margin-left:auto;flex:none;font-size:13px;line-height:1;
         color:var(--muted,#6b7a8c);transition:transform .18s ease}
.bd-panel[open] .bd-chev{transform:rotate(180deg)}
.bd-panel[open] .bd-sum{border-bottom:1px solid var(--line,#dfe5ec)}
/* inside the fold the builder is flush - the panel already draws the frame */
.bd-body .bd-build{margin-bottom:0;border:0;border-radius:0;background:transparent}

/* ---- vertical outline builder (replaces the horizontal chip strip) ------- */
.bd-build{padding:14px;margin-bottom:12px;background:var(--card2,#f6f8fa);
          border:1px solid var(--line,#dfe5ec);border-radius:8px}
.bd-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.bd-head b{font-size:13px;letter-spacing:.02em}
.bd-levels{list-style:none;margin:0 0 10px;padding:0;display:flex;
           flex-direction:column;gap:6px}
.bd-row{display:flex;align-items:center;gap:8px;padding:6px 8px;background:#fff;
        border:1px solid var(--line,#dfe5ec);border-radius:7px}
.bd-row .bd-num{display:inline-flex;align-items:center;justify-content:center;
        width:20px;height:20px;flex:0 0 20px;border-radius:50%;
        background:var(--navy,#284563);color:#fff;font-size:11px;font-weight:700}
.bd-pick{min-width:190px}
.bd-range{display:inline-flex;align-items:center;gap:4px;font-size:12px;
          color:var(--muted,#6b7a8c)}
.bd-dash{font-size:11px}
.bd-sp{flex:1 1 auto}
.bd-b{border:0;background:transparent;cursor:pointer;padding:2px 4px;font-size:11px;
      color:var(--muted,#6b7a8c);line-height:1;border-radius:4px}
.bd-b:hover:not([disabled]){color:var(--navy,#284563);background:var(--card2,#f6f8fa)}
.bd-b[disabled]{opacity:.25;cursor:default}
.bd-b.bd-x{font-size:15px}
.bd-quick{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px;
          padding-top:10px;border-top:1px dashed var(--line,#dfe5ec)}
.bd-qlab{font-size:11px;font-weight:700;text-transform:uppercase;
         letter-spacing:.04em;color:var(--muted,#6b7a8c);margin-right:2px}
.bd-q{font-size:11px;padding:3px 8px}
.bd-crumbs{margin-top:10px;font-size:12px;color:var(--muted,#6b7a8c)}
.bd-crumbs b{color:var(--ink,#1b2a3a);font-weight:600}
.bd-crumbs i{font-style:normal;opacity:.8}
.bd-arr{opacity:.5;margin:0 2px}

/* ---- loading / error / empty states ------------------------------------- */
.bd-state{min-height:120px}
.bd-load b{color:var(--ink,#1b2a3a)}
.bd-msg{padding:26px 18px;text-align:center;background:#fff;
        border:1px solid var(--line,#dfe5ec);border-radius:8px}
.bd-msg b{display:block;font-size:13px;margin-bottom:4px}
.bd-msg .bd-sub{font-size:12px;color:var(--muted,#6b7a8c);max-width:620px;
                margin:0 auto 10px}
.bd-err b{color:var(--red,#c0392b)}
.bd-spin{display:inline-block;width:16px;height:16px;margin-bottom:8px;
         border:2px solid var(--line,#dfe5ec);border-top-color:var(--navy,#284563);
         border-radius:50%;animation:bdspin .8s linear infinite}
@keyframes bdspin{to{transform:rotate(360deg)}}
.bd-empty{color:var(--muted,#6b7a8c);padding:14px 4px}

.bd-bar{display:flex;flex-direction:column;gap:10px;padding:12px;margin-bottom:12px;
        background:var(--card2,#f6f8fa);border:1px solid var(--line,#dfe5ec);border-radius:8px}
.bd-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:32px}
.bd-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

.bd-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border-radius:6px;
         font-size:12px;line-height:1;background:#fff;border:1px solid var(--line,#dfe5ec)}
.bd-chip.is-acct{border-color:#b9d4ea;background:#f2f8fd}
.bd-chip.is-dim{border-color:#cbe7d5;background:#f3fbf6}
.bd-chip b{font-weight:600}
.bd-chip .bd-i{display:inline-flex;align-items:center;justify-content:center;
               width:16px;height:16px;border-radius:50%;background:var(--navy,#284563);
               color:#fff;font-size:10px;font-weight:700}
.bd-chip button{border:0;background:transparent;cursor:pointer;padding:0 2px;
                font-size:11px;color:var(--muted,#6b7a8c);line-height:1}
.bd-chip button:hover:not([disabled]){color:var(--navy,#284563)}
.bd-chip button[disabled]{opacity:.25;cursor:default}
.bd-lvl{display:inline-flex;align-items:center;gap:2px;color:var(--muted,#6b7a8c)}
.bd-n{width:34px;padding:2px 4px;font-size:11px;text-align:center;
      border:1px solid var(--line,#dfe5ec);border-radius:4px;background:#fff}

.bd-add{min-width:190px}
.bd-uni{display:inline-flex;gap:0;margin-left:auto}
.bd-uni .ctl{border-radius:0}
.bd-uni .ctl:first-child{border-radius:6px 0 0 6px}
.bd-uni .ctl:last-child{border-radius:0 6px 6px 0;border-left:0}
.bd-uni .ctl.on{background:var(--navy,#284563);color:#fff;border-color:var(--navy,#284563)}

/* the little grey pill naming which field a grouping row came from */
.bd-tag{display:inline-block;padding:1px 6px;margin-right:8px;border-radius:4px;
        background:#eef2f6;color:var(--navy,#284563);font-size:10px;font-weight:700;
        text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}

/* the custom table reuses .cbs, but its column count differs from the
   standard CBS (5 instead of 7), so it needs its own grid template */
.bd-tbl.cbs .hd,.bd-tbl.cbs .rw{grid-template-columns:minmax(260px,1fr) 120px 90px 160px 60px}
