/* ProofLabs shared chart layer styles. Pairs with /assets/pl-charts.js.
 * Tokens: pages pass brand tokens through ProofLabsCharts input.brand, which sets
 * the --plc-* custom properties on the host. Defaults below fall back to the
 * page's existing --accent / --text / --muted / --surface / --border variables so
 * every client's configured palette flows through without a per-client stylesheet.
 */
.plc{
  --plc-accent:var(--accent,#9a7730);
  --plc-plan:#4a6a7a;
  --plc-secondary:#17808f;
  --plc-tertiary:#7049c7;
  --plc-quaternary:#8c7b6a;
  --plc-ink:var(--text,#2c2218);
  --plc-muted:var(--muted,#8c7b6a);
  --plc-surface:var(--surface,#ffffff);
  --plc-border:var(--border,#e6dfd5);
  --plc-grid:rgba(44,34,24,0.08);
  --plc-pos:#2E7D32;--plc-pos-bg:#eaf5ea;
  --plc-warn:#c77d12;--plc-warn-bg:#fff5e6;
  --plc-neg:#c0392b;--plc-neg-bg:#fdecea;
  --plc-seg-primary:var(--plc-accent);--plc-seg-secondary:var(--plc-secondary);--plc-seg-tertiary:var(--plc-tertiary);--plc-seg-quaternary:#8c7b6a;
  --plc-font:var(--f-body,var(--font-body,'DM Sans',system-ui,sans-serif));
  --plc-display:var(--f-display,var(--font-display,'Fraunces',Georgia,serif));
  --plc-height:220px;
  position:relative;font-family:var(--plc-font);color:var(--plc-ink);font-size:13px;line-height:1.45;min-width:0;
}
.plc[data-theme="dark"]{--plc-plan:#8fa3b1;--plc-secondary:#3fc1cf;--plc-tertiary:#b39cff;--plc-grid:rgba(255,255,255,0.10);--plc-pos:#4ade80;--plc-pos-bg:rgba(74,222,128,0.12);--plc-warn:#fbbf24;--plc-warn-bg:rgba(251,191,36,0.12);--plc-neg:#f87171;--plc-neg-bg:rgba(248,113,113,0.12);}
.plc *,.plc *::before,.plc *::after{box-sizing:border-box}
.plc-head{margin:0 0 6px}
.plc-title{font-family:var(--plc-display);font-size:1.05rem;font-weight:600;margin:0;color:var(--plc-ink);letter-spacing:-0.01em}
.plc-def{margin:2px 0 0;font-size:max(12px, 0.78rem);color:var(--plc-muted)}
.plc-legend{display:flex;flex-wrap:wrap;gap:4px 16px;margin:4px 0 8px;font-size:max(12px, 0.75rem);color:var(--plc-muted)}
.plc-legend[hidden],.plc-notes[hidden],.plc-tip[hidden]{display:none}
.plc-legend-item{display:inline-flex;align-items:center;gap:6px}
.plc-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;background:var(--swatch,var(--plc-accent));flex-shrink:0}
.plc-swatch-line{height:3px;border-radius:2px;width:16px}
.plc-swatch-dash{height:0;width:16px;border-top:2px dashed var(--swatch,var(--plc-accent));background:none;border-radius:0}
.plc-swatch-outline{background:transparent;border:2px dashed var(--swatch,var(--plc-plan));opacity:.9}
.plc-swatch-tick{width:2px;height:14px;border-radius:1px;background:var(--swatch,var(--plc-ink))}
.plc-swatch-hatch{background:repeating-linear-gradient(45deg,var(--swatch,var(--plc-muted)) 0 2px,transparent 2px 5px);border:1px solid var(--swatch,var(--plc-muted))}
.plc-body{position:relative;min-width:0}
.plc-figure{margin:0;min-width:0}
.plc-svg{display:block;width:100%;height:auto;overflow:visible;font-family:var(--plc-font)}
.plc-grid{stroke:var(--plc-grid);stroke-width:1}
.plc-baseline{stroke:var(--plc-muted);stroke-opacity:.6;stroke-width:1}
.plc-axis{font-size:12px;fill:var(--plc-muted);font-variant-numeric:tabular-nums}
.plc-label{font-size:12px;font-weight:600;fill:var(--plc-ink);font-variant-numeric:tabular-nums;pointer-events:none}
.plc-mark{transition:opacity .18s ease,filter .18s ease;outline:none;cursor:default}
.plc-mark[data-tip]{cursor:pointer}
.plc-mark:focus-visible{outline:2px solid var(--plc-ink);outline-offset:2px}
svg .plc-mark:focus-visible{outline:none;stroke:var(--plc-ink);stroke-width:2px;paint-order:stroke}
.plc-dim{opacity:.32}
.plc-muted{opacity:.38}
.plc-mark.is-active{filter:brightness(.92) saturate(1.1)}
.plc-mark.is-selected{stroke:var(--plc-ink);stroke-width:1.5}
.plc-bar{fill:var(--plc-accent)}
.plc-bar.plc-role-secondary{fill:var(--plc-secondary)}
.plc-bar.plc-role-tertiary,.plc-bar.plc-role-tertiary.plc-mark{fill:var(--plc-tertiary)}
.plc-bar-plan{fill:transparent;stroke:var(--plc-plan);stroke-width:1.5;stroke-dasharray:4 3}
.plc-bar-plan.plc-future{stroke-opacity:.55}
.plc-bar-compare{fill:var(--plc-muted);fill-opacity:.14;stroke:var(--plc-muted);stroke-opacity:.5;stroke-width:1}
.plc-bar.plc-partial{fill:url(#plc-hatch)}
.plc-hatch-line{stroke:var(--plc-accent)}
.plc-zero{fill:var(--plc-ink);fill-opacity:.55}
.plc-gap{fill:var(--plc-muted);fill-opacity:.45}
.plc-line{stroke:var(--plc-accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}
.plc-line.plc-role-secondary{stroke:var(--plc-secondary)}
.plc-line.plc-role-tertiary{stroke:var(--plc-tertiary)}
.plc-line.plc-role-quaternary{stroke:var(--plc-quaternary)}
.plc-line.plc-dash{stroke-dasharray:6 5}
.plc-bar.plc-role-quaternary,.plc-bar.plc-role-quaternary.plc-mark{fill:var(--plc-quaternary)}
.plc-dot{fill:var(--plc-accent);stroke:var(--plc-surface);stroke-width:2}
.plc-dot.plc-role-secondary{fill:var(--plc-secondary)}
.plc-dot.plc-role-tertiary{fill:var(--plc-tertiary)}
.plc-dot.plc-role-quaternary{fill:var(--plc-quaternary)}
.plc-ref{stroke:var(--plc-accent);stroke-dasharray:5 4;stroke-width:1.5}
.plc-tip{position:absolute;z-index:4;transform:translate(-50%,-100%);background:var(--plc-ink);color:var(--plc-surface);padding:6px 9px;border-radius:6px;font-size:max(12px, 0.75rem);line-height:1.35;max-width:260px;pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.18);white-space:normal}
.plc[data-theme="dark"] .plc-tip{background:#f5efe6;color:#1b1b1b}
.plc-notes{margin:8px 0 0;font-size:max(12px, 0.75rem);color:var(--plc-muted)}
.plc-state{padding:18px 16px;border:1px dashed var(--plc-border);border-radius:10px;color:var(--plc-muted);font-size:max(12px, 0.85rem);background:transparent}
.plc-state[data-state="denied"]{border-style:solid}
/* data tables */
.plc-table{margin-top:8px;font-size:max(12px, 0.78rem)}
.plc-table summary{cursor:pointer;color:var(--plc-muted);font-weight:600;font-size:max(12px, 0.75rem);letter-spacing:.01em;text-transform:none}
.plc-table-wrap{overflow:auto;margin-top:6px}
.plc-table table,.plc-matrix{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
.plc-table th,.plc-table td,.plc-matrix th,.plc-matrix td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--plc-border);white-space:nowrap}
.plc-table th{color:var(--plc-muted);font-weight:600}
.plc-num{text-align:right!important}
.plc-cell-missing{color:var(--plc-muted);font-style:italic}
.plc-table tr.is-active td,.plc-table tr.is-active th{background:rgba(127,127,127,.10)}
/* cohort heat matrix */
.plc-matrix-wrap{overflow:auto}
.plc-matrix th{color:var(--plc-muted);font-weight:600;font-size:max(12px, 0.75rem)}
.plc-matrix td{border-bottom:none;padding:3px}
.plc-matrix tbody th{font-weight:500}
.plc-heat{text-align:right;border-radius:6px;padding:9px 10px!important;color:var(--plc-ink);background:color-mix(in srgb,var(--plc-secondary) calc(var(--heat,0) * 82%),var(--plc-surface));outline:none;transition:transform .15s ease,box-shadow .15s ease}
.plc-heat-value{box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}
.plc-heat[data-strong]{color:#fff}
.plc-heat-suppressed,.plc-heat-immature{background:repeating-linear-gradient(45deg,transparent 0 4px,rgba(127,127,127,.12) 4px 6px);color:var(--plc-muted)}
.plc-heat:focus-visible,.plc-heat:hover{box-shadow:0 0 0 2px var(--plc-ink);position:relative;z-index:1}
.plc-matrix tr.is-selected th{color:var(--plc-accent)}
.plc-row-select{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.plc-row-select[aria-pressed="true"]{color:var(--plc-accent);font-weight:700;text-decoration-style:solid}
.plc-scale{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:max(12px, 0.75rem);color:var(--plc-muted)}
.plc-scale-bar{flex:0 0 120px;height:8px;border-radius:4px;background:linear-gradient(90deg,var(--plc-surface),var(--plc-secondary))}
/* row charts (bullets, comparison bars, segments) */
.plc-rows{display:flex;flex-direction:column;gap:8px}
.plc-row{display:grid;grid-template-columns:minmax(120px,1fr) 2.2fr minmax(88px,auto);gap:12px;align-items:center;padding:6px 0;border-bottom:1px solid var(--plc-border)}
.plc-row:last-child{border-bottom:none}
.plc-row-compact{grid-template-columns:auto 1fr auto;padding:3px 0;border-bottom:none}
.plc-row-label{display:flex;flex-direction:column;min-width:0}
.plc-row-label strong{font-weight:600;font-size:max(12px, 0.84rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plc-row-label small{color:var(--plc-muted);font-size:max(12px, 0.75rem)}
.plc-row-value{display:flex;flex-direction:column;align-items:flex-end;text-align:right}
.plc-row-value strong{font-size:0.95rem;font-weight:700}
.plc-tone-label{font-size:max(12px, 0.75rem);color:var(--plc-muted);text-transform:uppercase;letter-spacing:.05em}
.plc-track{position:relative;height:14px;border-radius:7px;background:rgba(127,127,127,.12);overflow:visible}
.plc-fill{height:100%;border-radius:7px;background:var(--plc-accent);transition:width .22s cubic-bezier(.2,.7,.2,1)}
.plc-fill.plc-role-secondary{background:var(--plc-secondary)}
.plc-fill-missing{background:transparent;border:1px dashed var(--plc-muted)}
.plc-bullet-track{height:18px;border-radius:5px;background:transparent}
.plc-bullet-plan{position:absolute;inset:0 auto 0 0;border:1.5px dashed var(--plc-plan);border-radius:5px;background:rgba(127,127,127,.06)}
.plc-bullet-actual{position:absolute;top:4px;bottom:4px;left:0;height:auto;border-radius:4px}
.plc-tone-above .plc-bullet-actual{background:var(--plc-neg)}
.plc-tone-near .plc-bullet-actual{background:var(--plc-pos)}
.plc-tone-below .plc-bullet-actual{background:var(--plc-accent)}
.plc-tone-unknown .plc-bullet-actual,.plc-tone-none .plc-bullet-actual{background:var(--plc-muted)}
.plc-tone-unplanned .plc-bullet-actual{background:var(--plc-neg)}
.plc-tone-unplanned .plc-tone-label{color:var(--plc-neg)}
.plc-tone-above .plc-tone-label{color:var(--plc-neg)}
.plc-tone-near .plc-tone-label{color:var(--plc-pos)}
.plc-hatch{background:repeating-linear-gradient(45deg,var(--plc-muted) 0 3px,transparent 3px 7px)!important;border:1px solid var(--plc-muted)}
.plc-pace-tick{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--plc-ink);border-radius:1px;opacity:.8}
.plc-stack{display:flex;height:22px;border-radius:6px;overflow:hidden;gap:2px;background:rgba(127,127,127,.10);margin-bottom:10px}
.plc-stack-seg{display:flex;align-items:center;justify-content:center;font-size:max(12px, 0.75rem);font-weight:700;color:#fff;min-width:2px;transition:width .22s cubic-bezier(.2,.7,.2,1)}
.plc-seg-primary{background:var(--plc-seg-primary)}.plc-seg-secondary{background:var(--plc-seg-secondary)}.plc-seg-tertiary{background:var(--plc-seg-tertiary)}.plc-seg-quaternary{background:var(--plc-seg-quaternary)}
/* compact variant for hub cards */
.plc-compact .plc-head{display:none}
.plc-compact .plc-legend{margin:0 0 4px;font-size:max(12px, 0.75rem)}
.plc-compact .plc-notes{font-size:max(12px, 0.75rem)}
.plc-compact .plc-table summary{font-size:max(12px, 0.75rem)}
.plc-compact .plc-row{grid-template-columns:minmax(80px,1fr) 2fr auto;gap:8px;padding:4px 0}
.plc-compact .plc-row-label strong{font-size:max(12px, 0.78rem)}
@media (max-width:600px){
  .plc-row{grid-template-columns:1fr auto;grid-template-areas:"label value" "track track"}
  .plc-row-label{grid-area:label}.plc-track{grid-area:track}.plc-row-value{grid-area:value}
  /* narrow screens: a row label wraps instead of truncating ("Unmapped act…") */
  .plc-row-label strong{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
  /* compact rows (segment shares) keep their three columns; the named areas above must not
     carry over or the label and value land in the same cell and overlap */
  .plc-row-compact{grid-template-columns:auto 1fr auto;grid-template-areas:none}
  .plc-row-compact .plc-swatch,.plc-row-compact .plc-row-label,.plc-row-compact .plc-row-value{grid-area:auto}
  .plc-legend{gap:4px 10px}
}
@media (prefers-reduced-motion:reduce){
  .plc *,.plc *::before,.plc *::after{transition:none!important;animation:none!important}
}
.plc-funnel-stage.plc-seg-primary,.plc-donut-slice.plc-seg-primary{fill:var(--plc-seg-primary)}
.plc-funnel-stage.plc-seg-secondary,.plc-donut-slice.plc-seg-secondary{fill:var(--plc-seg-secondary)}
.plc-funnel-stage.plc-seg-tertiary,.plc-donut-slice.plc-seg-tertiary{fill:var(--plc-seg-tertiary)}
.plc-funnel-stage.plc-seg-quaternary,.plc-donut-slice.plc-seg-quaternary{fill:var(--plc-seg-quaternary)}
.plc-funnel-label{font-size:13px;font-weight:600;fill:var(--plc-ink)}
.plc-funnel-value{font-size:13px;font-weight:700;fill:var(--plc-ink);font-variant-numeric:tabular-nums}
.plc-donut-layout{display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:center}
.plc-donut{width:220px;height:auto}
.plc-donut-center{font-family:var(--plc-display);font-size:22px;font-weight:600;fill:var(--plc-ink)}
.plc-donut-caption{font-size:12px;fill:var(--plc-muted)}
.plc-pairs{display:flex;flex-direction:column;gap:14px}
.plc-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(72px,1.3fr) minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 2px;border-bottom:1px solid var(--plc-border)}
.plc-pair:last-child{border-bottom:none}
.plc-pair:focus-visible{outline:2px solid var(--plc-ink);outline-offset:3px;border-radius:8px}
.plc-pair-name{font-size:14px;line-height:1.3}
.plc-pair-also{text-align:right}
.plc-pair-link{height:8px;border-radius:99px;background:rgba(127,127,127,.14);overflow:hidden}
.plc-pair-link i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--plc-accent),var(--plc-secondary))}
.plc-pair-stat{font-style:normal;font-weight:700;font-variant-numeric:tabular-nums;color:var(--plc-ink)}
@media(max-width:720px){
  .plc-donut-layout{grid-template-columns:1fr;justify-items:center}
  .plc-pair{grid-template-columns:1fr auto;grid-template-areas:"left stat" "link link" "right right"}
  .plc-pair-name{grid-area:left}.plc-pair-also{grid-area:right;text-align:left}.plc-pair-link{grid-area:link}.plc-pair-stat{grid-area:stat}
}
@media print{.plc-tip{display:none!important}}

/* nested budget rows: group = unduplicated subtotal, child = the rows that carry the money */
.plc-bullet.plc-group .plc-row-label strong{font-weight:700}
.plc-bullet.plc-group{border-top:1px solid var(--plc-border,#ded6cb);padding-top:8px;margin-top:6px}
.plc-bullet.plc-child{padding-left:18px}
.plc-bullet.plc-child .plc-row-label strong{font-weight:500}
.plc-bullet.plc-child .plc-row-label strong::before{content:'\2514 ';color:var(--plc-muted,#766957)}
