/* Vuli web UI - styles of the coverage card, the application map, the per-unit bars, the API routes
   table and the stack depth (phase 2 of the mockup-parity plan). Loaded after style.css; uses only
   its tokens (light theme), no inline style anywhere. Bars are SVG rects drawn from attributes;
   every colour pair used for text is the page text colour on a light surface (contrast >= 4.5:1). */

.cv-head{display:flex;align-items:baseline;gap:10px;margin:0 0 6px}
.cv-num{font-size:34px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--heading);line-height:1.1}
.cv-bar{display:block;width:100%;height:10px;margin:6px 0 12px}
.cv-track{fill:var(--bar-bg)}
.cv-fill{fill:var(--accent)}

/* application map (ribbons) */
.ribbon-card{padding-bottom:12px}
.rb-head p{margin:2px 0 8px}
.rb-scroll{overflow-x:auto;border-radius:8px;padding:2px}
.rb-scroll:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.rb{display:block;width:100%;min-width:900px;height:auto}
.rb .lk{fill:var(--cve-node);opacity:.38;transition:opacity .12s}
.rb .lk-1{fill:var(--slice-node)}
.rb .guide{stroke:var(--grid-line);stroke-width:1}
.rb .nd-r{stroke:none}
.rb .nd-c0{fill:var(--app-node)} .rb .nd-c1{fill:var(--cve-node)} .rb .nd-c2{fill:var(--risky)}
.rb .lbl{font-size:11.5px;fill:var(--text)}
.rb .lbl.halo{paint-order:stroke;stroke:var(--halo);stroke-width:4px;stroke-linejoin:round}
.rb .sub{font-size:10.5px;fill:var(--muted)}
.rb .colh{font-size:10.5px;font-weight:700;letter-spacing:.08em;fill:var(--muted)}
.rb.rb-dim .lk{opacity:.07}
.rb.rb-dim .lk.on{opacity:.8}
.rb.rb-dim .nd{opacity:.35}
.rb.rb-dim .nd.on{opacity:1}
.rb-now{min-height:1.5em;margin:8px 2px;font-size:13.5px;color:var(--muted)}
.rb-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:6px 2px;font-size:12.5px;color:var(--muted)}
.rb-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.lg-c0{background:var(--app-node)} .lg-c1{background:var(--cve-node)} .lg-c2{background:var(--risky)}
.rb-table{margin:10px 2px 0}
.rb-table summary{cursor:pointer;font-weight:650;color:var(--accent)}

/* per-unit coverage bars */
.ucov{margin:0 0 18px}
.ucov-h{display:flex;justify-content:space-between;gap:10px;margin:0 0 2px}
.ucov-l{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12.5px;color:var(--muted)}
.ucov-l i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
.u-rt{fill:var(--safe);background:var(--safe)}
.u-st{fill:var(--human-fill);background:var(--human-fill)}
.u-bl{fill:var(--pending);background:var(--pending)}
.u-ni{fill:var(--border-hi);background:var(--border-hi)}
.ucov-l .u-rt,.ucov-l .u-st,.ucov-l .u-bl,.ucov-l .u-ni{fill:none}

/* API routes table */
.http-m{font-weight:700;font-size:12.5px}
.cv-tag{display:inline-block;font-size:12px;font-weight:650;border:1px solid var(--border-hi);border-radius:6px;padding:0 8px;white-space:nowrap}
.cv-answered{color:var(--safe);background:var(--safe-bg)}
.cv-errors_only{color:var(--human);background:var(--human-bg);border-color:var(--human-bd)}
.cv-not_reached{color:var(--muted);background:var(--surface-2);border-style:dashed}

/* stack depth: dependency totals and packages */
.dep-totals{display:flex;flex-wrap:wrap;gap:6px 22px;padding:4px 18px 10px;font-size:14px}
.dep-totals b{font-variant-numeric:tabular-nums}
.stk-pk{margin:0 0 18px}
.stk-sources{margin:14px 2px 0}
