/* PV8 client interface — adapted from the 2026-08-12 Modernist design export.
   The application keeps its existing semantic classes so the assessment and
   mapping code remains independent from this presentation layer. */

/* In-module finance workbench: immutable baseline beside an editable scenario. */
.pv8-library [data-finmodel] .finmodel-basis-label { font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin:12px 0 8px; }
.pv8-library [data-finmodel] .finmodel-module-assumptions { border:1px solid var(--border);border-radius:12px;background:var(--surface-0);margin:14px 0 0;padding:16px; }
.pv8-library [data-finmodel] .finmodel-module-assumptions h3 { font-size:17px;margin:0 0 6px; }
.pv8-library [data-finmodel] .finmodel-module-assumptions p { max-width:900px;line-height:1.5;margin:0; }
.pv8-library [data-finmodel] .finmodel-assumption-grid { display:grid;gap:8px 18px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:13px; }
.pv8-library [data-finmodel] .finmodel-assumption-grid div { border-left:3px solid var(--series-1);font-size:13px;line-height:1.4;padding:5px 0 5px 10px; }
.pv8-library [data-finmodel] .finmodel-workbench { display:grid;grid-template-columns:minmax(260px,.9fr) minmax(0,1.1fr);gap:24px;align-items:start;margin-top:16px; }
.pv8-library [data-finmodel] .finmodel-workbench > * { min-width:0; }
.pv8-library [data-finmodel] .finmodel-workbench h3 { font-size:16px;margin:0 0 12px; }
.pv8-library [data-finmodel] .finmodel-input-group { border:1px solid var(--border);border-radius:12px;padding:14px;margin:0 0 16px; }
.pv8-library [data-finmodel] .finmodel-input-group legend { font-size:12px;font-weight:650;padding:0 6px; }
.pv8-library [data-finmodel] .rep-finance-input-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px; }
.pv8-library [data-finmodel] .rep-finance-input-grid label { min-width:0; }
.pv8-library [data-finmodel] .rep-finance-input-grid input { box-sizing:border-box;width:100%;min-width:0;max-width:100%; }
.pv8-library [data-finmodel] .rep-finance-input-grid label span { min-height:28px;display:block;font-size:12px;line-height:1.35;margin-bottom:5px; }
.pv8-library [data-finmodel] .finmodel-scenario-panel { border:1px solid var(--border);border-radius:12px;padding:18px;background:var(--surface-1);min-width:0; }
.pv8-library [data-finmodel] .finmodel-scenario-notice { border-left:3px solid var(--series-3);background:var(--surface-1);padding:12px 14px;margin:12px 0;font-size:13px;line-height:1.5; }
.pv8-library [data-finmodel] .finmodel-advanced { margin:12px 0;border:1px solid var(--border);border-radius:10px;padding:12px; }
.pv8-library [data-finmodel] .finmodel-advanced summary { cursor:pointer;font-size:13px;font-weight:650; }
.pv8-library [data-finmodel] .finmodel-advanced[open] > summary { margin-bottom:12px; }
.pv8-library [data-finmodel] .finmodel-kpis { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0; }
.pv8-library [data-finmodel] .finmodel-metric { border:1px solid var(--border);border-radius:10px;background:var(--surface-0);padding:12px;min-width:0; }
.pv8-library [data-finmodel] .finmodel-metric span { font-size:11px;display:block;margin-bottom:5px; }
.pv8-library [data-finmodel] .finmodel-metric b { font-size:clamp(16px,1.5vw,22px);overflow-wrap:anywhere; }
.pv8-library [data-finmodel] .finmodel-actions { display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;align-items:center; }
.pv8-library [data-finmodel] .finmodel-actions .libbtn { margin:0;font-size:12px; }
.pv8-library [data-finmodel] .finmodel-actions .finmodel-update { background:var(--series-3);color:#fff; }
.pv8-library [data-finmodel] .finmodel-title { flex:1 1 180px;max-width:100%;min-width:0; }
.pv8-library [data-finmodel] .finmodel-msg { flex-basis:100%;overflow-wrap:anywhere; }
.pv8-library [data-finmodel] .finmodel-state { font-size:12px;line-height:1.5;margin:10px 0 0; }
.pv8-library [data-finmodel].finmodel-dirty .finmodel-state { color:var(--warning); }
.pv8-library [data-finmodel][aria-busy="true"] .finmodel-scenario-panel { opacity:.7; }
.pv8-library [data-finmodel] .finmodel-cash-chart { background:var(--surface-0);border:1px solid var(--border);border-radius:12px;padding:14px;margin:16px 0; }
.pv8-library [data-finmodel] .finmodel-cash-chart figcaption { display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px;font-size:12px; }
.pv8-library [data-finmodel] .finmodel-cash-chart figcaption span { color:var(--text-secondary);font-size:11px; }
.pv8-library [data-finmodel] .finmodel-legend { display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:4px;background:#134c7a; }
.pv8-library [data-finmodel] .finmodel-legend.debt { background:#8d979e; }
.pv8-library [data-finmodel] .finmodel-cash-chart svg { display:block;width:100%;height:auto; }
.pv8-library [data-finmodel] .finmodel-chart-range { display:flex;justify-content:space-between;font-size:11px; }
.pv8-library [data-finmodel] .finmodel-cash-chart p { font-size:11px;margin:8px 0 0; }
@media (max-width:1000px) {
  .pv8-library [data-finmodel] .finmodel-workbench { grid-template-columns:minmax(0,1fr); }
}
@media (max-width:480px) {
  .pv8-library [data-finmodel] .rep-finance-input-grid { grid-template-columns:minmax(0,1fr); }
  .pv8-library [data-finmodel] .finmodel-scenario-panel { padding:12px; }
  .pv8-library [data-finmodel] .finmodel-assumption-grid { grid-template-columns:minmax(0,1fr); }
}

:root {
  color-scheme: light;
  --surface-0: #ffffff;
  --surface-1: #f6f5f4;
  --border: #aaa6a3;
  --text-primary: #201e1d;
  --text-secondary: #605d5d;
  --text-muted: #7d7979;
  --series-1: #ec3013;
  --series-2: #e15b47;
  --series-3: #ec3013;
  --series-4: #ae1800;
  --good: #177245;
  --warning: #a85d00;
  --serious: #ae1800;
  --grid: #d7d3d3;
  --pv8-accent-soft: #fff2ef;
  --pv8-ink-soft: #eae9e9;
  --pv8-divider: color-mix(in srgb, #201e1d 40%, transparent);
  --pv8-github-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
  --pv8-sans: var(--pv8-github-sans);
  /* Compact labels use the same type family as the rest of the interface.
     Keep the legacy tokens so older module markup inherits it consistently. */
  --pv8-caption: var(--pv8-sans);
  --pv8-mono: var(--pv8-sans);
  --evidence-evidenced: #177245;
  --evidence-indicative: #9b5c0b;
  --evidence-gap: #a93624;
  --pv8-radius-sm: 8px;
  --pv8-radius-md: 12px;
  --pv8-shadow-float: 0 18px 52px rgba(32,30,29,.16);
}

/* Professional comfort layer: one vocabulary for evidence, typography,
   motion and transient surfaces across every specialist module. */
.pv8-library {
  --pv8-step--1: clamp(.74rem,.72rem + .08vw,.8rem);
  --pv8-step-0: clamp(.86rem,.82rem + .12vw,.94rem);
  --pv8-step-1: clamp(1.05rem,.99rem + .2vw,1.18rem);
  --pv8-step-2: clamp(1.3rem,1.19rem + .36vw,1.55rem);
  --pv8-step-3: clamp(1.68rem,1.46rem + .65vw,2.08rem);
  font-size:var(--pv8-step-0);
  line-height:1.56;
}
.pv8-library h1 { font-size:var(--pv8-step-3); line-height:1.08; letter-spacing:-.035em; }
.pv8-library h2 { font-size:var(--pv8-step-2); line-height:1.2; letter-spacing:-.02em; }
.pv8-library h3 { font-size:var(--pv8-step-1); line-height:1.3; }
.pv8-library table,.pv8-library .metric,.pv8-library .summary-cell b,
.pv8-library input[type="number"],.pv8-library [data-number] {
  font-variant-numeric:tabular-nums lining-nums;
}
.evidence-state { align-items:center; display:inline-flex; gap:6px; font-size:11px;
  font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.evidence-state::before { border-radius:50%; content:""; height:7px; width:7px; }
.evidence-state.evidenced { color:var(--evidence-evidenced); }
.evidence-state.evidenced::before { background:var(--evidence-evidenced); }
.evidence-state.indicative { color:var(--evidence-indicative); }
.evidence-state.indicative::before { background:var(--evidence-indicative); }
.evidence-state.gap { color:var(--evidence-gap); }
.evidence-state.gap::before { background:var(--evidence-gap); }

.asset[role="button"]:focus-visible { border-color:var(--series-1);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--series-1) 18%,transparent); outline:0; }

.pv8-command-backdrop { align-items:flex-start; background:rgba(20,19,18,.28);
  display:flex; inset:0; justify-content:center; padding:9vh 18px 18px;
  position:fixed; z-index:1900; }
.pv8-command-palette { background:var(--surface-1); border:1px solid var(--border);
  border-radius:16px; box-shadow:var(--pv8-shadow-float); max-width:680px;
  overflow:hidden; width:100%; }
.pv8-command-search { align-items:center; border-bottom:1px solid var(--border);
  display:flex; gap:10px; padding:12px 15px; }
.pv8-command-search input { background:transparent; border:0; color:var(--text-primary);
  flex:1; font-size:16px; outline:0; padding:7px 0; }
.pv8-command-search kbd { background:var(--surface-0); border:1px solid var(--border);
  border-radius:6px; color:var(--text-muted); font-size:10px; padding:2px 6px; }
.pv8-command-results { max-height:min(58vh,520px); overflow:auto; padding:7px; }
.pv8-command-item { align-items:center; background:transparent; border:0; border-radius:9px;
  color:var(--text-primary); cursor:pointer; display:flex; gap:12px; padding:10px 11px;
  text-align:left; width:100%; }
.pv8-command-item:hover,.pv8-command-item.active { background:var(--pv8-accent-soft); }
/* Hint and empty-state text sit on the same surface as the item and must
   meet WCAG AA at 11 px; --text-muted is too pale on white (3.56:1). Use
   the darker secondary token, which the dark-mode override still keeps
   distinct from the primary label. */
.pv8-command-item span { color:var(--text-secondary); font-size:11px; margin-left:auto; }
.pv8-command-empty { color:var(--text-secondary); padding:20px; text-align:center; }
.pv8-command-close { align-items:center; background:transparent; border:1px solid var(--border);
  border-radius:8px; color:var(--text-secondary); cursor:pointer; display:inline-flex;
  flex:0 0 auto; justify-content:center; min-height:34px; padding:4px 9px; }
.pv8-shortcut-palette { max-width:540px; }
.pv8-shortcut-head { align-items:flex-start; border-bottom:1px solid var(--border);
  display:flex; gap:16px; justify-content:space-between; padding:16px 18px 13px; }
.pv8-shortcut-head h2 { color:var(--text-primary); font-size:17px; margin:0; }
.pv8-shortcut-head p { color:var(--text-muted); font-size:12px; margin:3px 0 0; max-width:430px; }
.pv8-shortcut-list { display:grid; padding:9px 18px 15px; }
.pv8-shortcut-list > div { align-items:center; border-top:1px solid var(--grid);
  display:flex; gap:20px; justify-content:space-between; padding:9px 0; }
.pv8-shortcut-list > div:first-child { border-top:0; }
.pv8-shortcut-list kbd { color:var(--text-primary); font:650 12px var(--pv8-mono,monospace); }
.pv8-shortcut-list span { color:var(--text-secondary); font-size:12px; text-align:right; }

.pv8-getting-started { background:color-mix(in srgb,var(--surface-1) 96%,transparent);
  border:1px solid var(--border); border-radius:14px; bottom:18px;
  box-shadow:0 12px 34px rgba(32,30,29,.12); max-width:340px; padding:12px 13px;
  position:fixed; right:18px; z-index:850; }
/* Collapsed it is a chip, not a panel: 340x315 px — 8.3 % of a 1440 viewport
   and 13.6 % of a 1024 one, on every authenticated screen — down to the head
   row at its own content width.  Density audit D1 went further: off the home
   the checklist is not mounted at all, so on an engine screen there is no
   fixed panel to collapse (see `gettingStartedBelongsHere` in library.html). */
.pv8-getting-started.collapsed {
  max-width:none;
  padding:7px 10px;
  width:max-content;
}
.pv8-getting-started.collapsed .pv8-checklist-body { display:none; }
.pv8-getting-started.collapsed .pv8-checklist-title { flex:0 0 auto; }
/* Docked into the workspace home's rail (F17): ordinary content in the third
   surface weight, occluding nothing, with the same shape as the sections
   beside it. */
.pv8-getting-started.docked {
  background:none;
  border:0;
  border-top:1px solid var(--pv8-divider);
  border-radius:0;
  bottom:auto;
  box-shadow:none;
  margin-top:22px;
  max-width:none;
  padding:10px 0 0;
  position:static;
  right:auto;
  width:auto;
  z-index:auto;
}
/* only the home docks it; every other section keeps the overlay */
.pv8-library:not(.workspace-home-mode) .pv8-getting-started.docked {
  position:fixed;
}
/* Docked it keeps its own collapsed state: an owner already under way sees
   one strip in the rail, not a reopened panel. */
.pv8-getting-started.docked .pv8-checklist-head { justify-content:flex-start; }
.pv8-checklist-head { align-items:center; display:flex; gap:9px; }
.pv8-checklist-head button { background:transparent; border:0; color:var(--text-muted);
  cursor:pointer; padding:3px 5px; }
.pv8-checklist-title { flex:1; font-size:12.5px; font-weight:700; }
.pv8-checklist-progress { color:var(--text-muted); font-size:11px; }
.pv8-checklist-body { border-top:1px solid var(--border); margin-top:9px; padding-top:9px; }
.pv8-checklist-body > p { color:var(--text-secondary); font-size:11.5px; margin:0 0 7px; }
.pv8-checklist-item { align-items:flex-start; color:var(--text-secondary); display:flex;
  font-size:12px; gap:8px; margin:7px 0; }
.pv8-checklist-item i { align-items:center; border:1px solid var(--border); border-radius:50%;
  display:flex; flex:0 0 17px; font-size:10px; font-style:normal; height:17px;
  justify-content:center; margin-top:1px; }
.pv8-checklist-item.done { color:var(--text-muted); text-decoration:line-through; }
.pv8-checklist-item.done i { background:var(--evidence-evidenced); border-color:var(--evidence-evidenced); color:#fff; }
/* -------------------------------------------------------------------------
   Render contract (pv8fmt) — the CSS half, per render-contract-spec.md.

   These are the classes the formatter emits. They are deliberately declared
   once, unscoped, so a status pill looks the same on the workspace, the
   portfolio and inside a result table — a token can never render as bare
   text beside a styled sibling (UI audit F3). The pill modifiers carry the
   full chrome themselves, so `class="pv8-pill--warn"` alone is enough.

   The four tones differ by TREATMENT, not only by hue, because the density
   audit found boundary uniformity flattening hierarchy elsewhere in the
   product (6 of 11 workspace-home surfaces sharing one identical spec).
   A blocker is a solid fill; a caution is a tint with a leading rule; a
   cleared state is a quiet tint; an unknown is an outline with no fill.
   They stay legible in greyscale and to a colour-blind reader.
   ------------------------------------------------------------------------- */
.pv8-num { font-variant-numeric:tabular-nums; }
/* A unit is a separate span and is never glued to its label or number (F14). */
.pv8-unit { color:var(--text-secondary); font-weight:400; white-space:nowrap; }
.pv8-label + .pv8-unit,
.pv8-num + .pv8-unit { margin-left:.35em; }
.pv8-pill,
.pv8-pill--good,
.pv8-pill--warn,
.pv8-pill--bad,
.pv8-pill--neutral {
  align-items:center;
  background:transparent;
  border:1px solid var(--border);
  border-radius:999px;
  color:var(--text-secondary);
  display:inline-flex;
  font:650 10.5px/1 var(--pv8-caption,inherit);
  letter-spacing:.04em;
  padding:5px 9px;
  text-transform:uppercase;
  white-space:nowrap;
}
/* cleared — quiet tint, no boundary: the state that needs no attention */
.pv8-pill--good {
  background:color-mix(in srgb,var(--evidence-evidenced) 11%,transparent);
  border-color:transparent;
  color:var(--evidence-evidenced);
}
/* caution — tint plus a leading rule, so it reads before the good one */
.pv8-pill--warn {
  background:color-mix(in srgb,var(--evidence-indicative) 13%,transparent);
  border-color:transparent;
  border-radius:3px 999px 999px 3px;
  box-shadow:inset 3px 0 var(--evidence-indicative);
  color:var(--evidence-indicative);
  padding-left:12px;
}
/* blocker — solid fill: the only pill that inverts, and the loudest thing
   on a result page after the verdict itself */
.pv8-pill--bad {
  background:var(--evidence-gap);
  border-color:var(--evidence-gap);
  color:#fff;
}
/* unknown — outline only, no fill: visibly not a finding */
.pv8-pill--neutral {
  background:transparent;
  border-color:var(--border);
  border-style:dashed;
  color:var(--text-muted);
}

/* The × closes for this visit; only this quiet link is permanent. */
.pv8-checklist-dismiss { background:transparent; border:0; color:var(--text-muted);
  cursor:pointer; display:block; font:inherit; font-size:11px; margin-top:2px;
  padding:4px 0; text-align:left; text-decoration:underline; text-underline-offset:2px; }
.pv8-checklist-dismiss:hover { color:var(--text-secondary); }

.pv8-context-coach { align-items:flex-start; background:color-mix(in srgb,var(--series-1) 5%,var(--surface-1));
  border:1px solid color-mix(in srgb,var(--series-1) 28%,var(--border)); border-radius:12px;
  display:flex; gap:12px; margin:0 0 12px; padding:12px 14px; }
.pv8-context-coach .coach-copy { flex:1; }
.pv8-context-coach b { display:block; font-size:13px; }
.pv8-context-coach p { color:var(--text-secondary); font-size:12px; margin:3px 0 0; }
.pv8-context-coach button { background:transparent; border:0; color:var(--text-muted); cursor:pointer; }
.pv8-role-card { background:var(--surface-1); border:1px solid var(--border); border-radius:14px;
  box-shadow:var(--pv8-shadow-float); inset:auto 18px 18px auto; max-width:520px;
  padding:18px; position:fixed; width:calc(100vw - 36px); z-index:1000; }
.pv8-role-options,.pv8-role-modules { display:flex; flex-wrap:wrap; gap:7px; margin:10px 0; }
.pv8-role-card label { background:var(--surface-0); border:1px solid var(--border);
  border-radius:999px; cursor:pointer; font-size:12px; padding:7px 10px; }
.pv8-role-card label:has(input:checked) { background:var(--pv8-accent-soft); border-color:var(--series-1); }
.pv8-role-card input { margin-right:5px; }

.pv8-ghost-preview { border:1px dashed color-mix(in srgb,var(--border) 84%,transparent);
  border-radius:14px; margin:14px 0; opacity:.8; padding:15px; }
.pv8-ghost-metrics { display:grid; gap:9px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.pv8-ghost-metrics span { background:var(--surface-0); border:1px solid var(--border); border-radius:9px;
  display:grid; gap:3px; min-height:62px; padding:12px; }
.pv8-ghost-metrics b { font-size:12px; }
.pv8-ghost-metrics small { color:var(--text-muted); font-size:11px; line-height:1.35; }

.pv8-progress-layout { align-items:center; display:grid; gap:14px;
  grid-template-columns:58px minmax(0,1fr) auto; width:100%; }
.pv8-progress-ring { --progress:8; align-items:center; background:
  conic-gradient(var(--series-1) calc(var(--progress) * 1%),var(--grid) 0);
  border-radius:50%; display:flex; height:52px; justify-content:center; position:relative; width:52px; }
.pv8-progress-ring::before { background:var(--surface-1); border-radius:50%; content:"";
  height:40px; position:absolute; width:40px; }
.pv8-progress-ring b { color:var(--text-primary); font-size:10px; position:relative; }
.pv8-progress-stage { color:var(--text-muted); font-size:11px; margin-top:2px; }
.pv8-progress-steps { display:flex; flex-wrap:wrap; gap:5px 12px; margin-top:6px; }
.pv8-progress-steps span { color:var(--text-muted); font-size:10.5px; }
.pv8-progress-steps span.active { color:var(--text-primary); font-weight:650; }
.pv8-progress-steps span.done { color:var(--evidence-evidenced); }

.pv8-run-experience { align-items:center; display:grid; gap:14px;
  grid-template-columns:58px minmax(0,1fr) auto; width:100%; }
.pv8-run-mark { --progress:0; align-items:center; color:var(--series-1); display:flex;
  height:54px; justify-content:center; position:relative; width:54px; }
.pv8-run-mark::before { animation:pv8-run-orbit 1.7s linear infinite; border:2px solid var(--grid);
  border-radius:50%; border-top-color:var(--series-1); content:""; inset:0; position:absolute; }
.pv8-run-mark.has-progress::before { animation:none; background:
  conic-gradient(var(--series-1) calc(var(--progress) * 1%),var(--grid) 0);
  border:0; mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 0); }
.pv8-run-mark svg { animation:pv8-run-breathe 1.8s ease-in-out infinite; height:38px; width:29px; }
.pv8-run-mark span { background:var(--surface-1); border:1px solid var(--border); border-radius:999px;
  bottom:-2px; color:var(--text-primary); font-size:9px; font-weight:750; line-height:1;
  padding:3px 4px; position:absolute; right:-5px; }
.pv8-run-copy { display:grid; gap:2px; min-width:0; }
.pv8-run-copy>b { color:var(--text-primary); font-size:12.5px; line-height:1.4; }
.pv8-run-copy>span { color:var(--text-muted); font-size:11px; line-height:1.4; }
.pv8-run-copy .pv8-run-phase { color:var(--text-secondary); font-weight:650; }
.pv8-run-copy .pv8-run-slow { color:var(--evidence-gap); margin-top:2px; }
@keyframes pv8-run-orbit { to { transform:rotate(360deg); } }
@keyframes pv8-run-breathe { 50% { opacity:.66; transform:scale(.94); } }
@media (prefers-reduced-motion:reduce) {
  .pv8-run-mark::before,.pv8-run-mark svg { animation:none; }
}
@media (max-width:640px) {
  .pv8-run-experience { grid-template-columns:48px minmax(0,1fr); }
  .pv8-run-experience>.journey-run-cancel { grid-column:2; justify-self:start; }
  .pv8-run-mark { height:44px; width:44px; }
  .pv8-run-mark svg { height:31px; width:24px; }
}

.pv8-skeleton { display:grid; gap:8px; padding:8px 0; }
.pv8-skeleton span { animation:pv8-skeleton-pulse 1.25s ease-in-out infinite alternate;
  background:linear-gradient(90deg,var(--surface-0),var(--grid),var(--surface-0));
  background-size:220% 100%; border-radius:7px; height:13px; }
.pv8-skeleton span:nth-child(2) { width:78%; }.pv8-skeleton span:nth-child(3) { width:58%; }
@keyframes pv8-skeleton-pulse { to { background-position:100% 0; opacity:.66; } }
.pv8-result-settling { opacity:0; transform:translateY(7px); }
.pv8-result-ready { opacity:1; transform:none; transition:opacity .32s ease,transform .32s ease; }

.pv8-confidence-header { align-items:flex-start; background:var(--surface-0);
  border:1px solid var(--border); border-radius:12px; display:flex; gap:12px;
  justify-content:space-between; margin:0 0 13px; padding:11px 13px; }
.pv8-confidence-header p { color:var(--text-secondary); font-size:11.5px; margin:2px 0 0; }
.pv8-confidence-badge { border:1px solid currentColor; border-radius:999px; font-size:10.5px;
  font-weight:750; letter-spacing:.05em; padding:5px 9px; text-transform:uppercase; white-space:nowrap; }
.pv8-confidence-badge.evidenced { color:var(--evidence-evidenced); }
.pv8-confidence-badge.indicative { color:var(--evidence-indicative); }
.pv8-confidence-badge.screening { color:var(--evidence-gap); }

[data-provenance-preview] { position:relative; }
[data-provenance-preview]:hover::after,[data-provenance-preview]:focus-within::after {
  background:#242220; border-radius:8px; bottom:calc(100% + 7px); color:#fff;
  content:attr(data-provenance-preview); font-size:11px; font-weight:400; left:12px;
  line-height:1.4; max-width:360px; padding:8px 10px; pointer-events:none;
  position:absolute; text-transform:none; white-space:normal; width:max-content; z-index:800; }
.pv8-save-state { align-items:center; background:color-mix(in srgb,var(--surface-1) 94%,transparent);
  border:1px solid var(--border); border-radius:999px; bottom:18px; color:var(--text-muted);
  display:flex; font-size:10.5px; gap:6px; left:18px; opacity:1; padding:6px 9px;
  position:fixed; transition:opacity .24s ease; z-index:780; }
/* `display:flex` above would defeat the UA `[hidden]` rule, and the pill is
   hidden once a save has settled so it stops covering body copy. */
.pv8-save-state[hidden] { display:none; }
/* Density audit D1: a confirmation, not a permanent 123x30 box.  It fades out
   1.5 s after a save settles; only an error keeps the corner. */
.pv8-save-state.leaving { opacity:0; }
.pv8-save-state::before { background:var(--evidence-evidenced); border-radius:50%; content:""; height:6px; width:6px; }
.pv8-save-state.saving::before { animation:pv8-save-pulse .8s ease-in-out infinite alternate; background:var(--evidence-indicative); }
.pv8-save-state.error::before { background:var(--evidence-gap); }
@keyframes pv8-save-pulse { to { opacity:.25; } }

@media (prefers-color-scheme:dark) {
  :root:not([data-theme="light"]) .pv8-library .external-identity-modal,
  :root:not([data-theme="light"]) .pv8-library #shareModal > div,
  :root:not([data-theme="light"]) .pv8-library #commentsModal > div,
  :root:not([data-theme="light"]) .pv8-library #pv8ChatPanel,
  :root:not([data-theme="light"]) .pv8-library .output-action-column,
  :root:not([data-theme="light"]) .pv8-library .connectivity-decision-card,
  :root:not([data-theme="light"]) .pv8-library details.connectivity-detail {
    background:var(--surface-1) !important; color:var(--text-primary) !important;
  }
  :root:not([data-theme="light"]) .pv8-library input,
  :root:not([data-theme="light"]) .pv8-library select,
  :root:not([data-theme="light"]) .pv8-library textarea {
    background:var(--surface-0) !important; color:var(--text-primary) !important;
  }
  :root:not([data-theme="light"]) .pv8-library .output-action-column > a,
  :root:not([data-theme="light"]) .pv8-library .output-action-column > button,
  :root:not([data-theme="light"]) .pv8-library .output-technical-file-list > a,
  :root:not([data-theme="light"]) .pv8-library .output-technical-file-list > button,
  :root:not([data-theme="light"]) .pv8-library .docs > a {
    background:var(--surface-0) !important; color:var(--text-primary) !important;
  }
}
:root[data-theme="dark"] .pv8-library .external-identity-modal,
:root[data-theme="dark"] .pv8-library #shareModal > div,
:root[data-theme="dark"] .pv8-library #commentsModal > div,
:root[data-theme="dark"] .pv8-library #pv8ChatPanel,
:root[data-theme="dark"] .pv8-library .output-action-column,
:root[data-theme="dark"] .pv8-library .connectivity-decision-card,
:root[data-theme="dark"] .pv8-library details.connectivity-detail {
  background:var(--surface-1) !important; color:var(--text-primary) !important;
}
:root[data-theme="dark"] .pv8-library input,
:root[data-theme="dark"] .pv8-library select,
:root[data-theme="dark"] .pv8-library textarea,
:root[data-theme="dark"] .pv8-library .output-action-column > a,
:root[data-theme="dark"] .pv8-library .output-action-column > button,
:root[data-theme="dark"] .pv8-library .output-technical-file-list > a,
:root[data-theme="dark"] .pv8-library .output-technical-file-list > button,
:root[data-theme="dark"] .pv8-library .docs > a {
  background:var(--surface-0) !important; color:var(--text-primary) !important;
}
@media (prefers-reduced-motion:reduce) {
  .pv8-skeleton span,.pv8-save-state.saving::before { animation:none !important; }
  .pv8-result-ready,.pv8-save-state { transition:none; }
}
@media (max-width:700px) {
  .pv8-getting-started { bottom:10px; left:10px; max-width:none; right:10px; }
  .pv8-progress-layout { grid-template-columns:48px minmax(0,1fr); }
  .pv8-progress-layout .journey-run-cancel { grid-column:1/-1; }
  .pv8-ghost-metrics { grid-template-columns:1fr; }
}

/* MDC fibre layer: decision first, evidence on demand. */
.pv8-library .connectivity-path {
  align-items:center; background:var(--surface-1); border-left:4px solid var(--series-3);
  display:flex; flex-wrap:wrap; gap:7px; margin:8px 0 12px; padding:10px 13px;
}
.pv8-library .connectivity-path span {
  color:var(--text-muted); font:650 10px/1.2 var(--pv8-mono); letter-spacing:.025em;
  text-transform:uppercase;
}
.pv8-library .connectivity-path span.current { color:var(--series-3); }
.pv8-library .connectivity-path i { color:var(--text-muted); font-style:normal; }
.pv8-library .connectivity-decision-grid {
  display:grid; gap:9px; grid-template-columns:repeat(auto-fit,minmax(205px,1fr));
  margin:8px 0 12px;
}
.pv8-library .connectivity-decision-card {
  background:#fff; border:1px solid var(--grid); border-radius:8px; min-height:128px;
  padding:12px 13px;
}
.pv8-library .connectivity-decision-card.primary { border-left:4px solid var(--series-3); }
.pv8-library .connectivity-decision-card .eyebrow {
  color:var(--text-muted); font:650 10px/1.2 var(--pv8-caption); letter-spacing:.035em;
  text-transform:uppercase;
}
.pv8-library .connectivity-decision-card .status {
  color:var(--series-3); display:block; font:700 10px/1.25 var(--pv8-mono);
  margin:6px 0 3px; overflow-wrap:anywhere; text-transform:uppercase;
}
.pv8-library .connectivity-decision-card b { display:block; font-size:15px; line-height:1.25; }
.pv8-library .connectivity-decision-card p {
  color:var(--text-secondary); font-size:11.5px; line-height:1.42; margin:6px 0 0;
}
.pv8-library .connectivity-next-action {
  align-items:center; background:#fffaf0; border:1px solid #ead9b2; display:flex;
  flex-wrap:wrap; gap:8px; justify-content:space-between; margin:10px 0; padding:10px 12px;
}
.pv8-library .connectivity-next-action p { font-size:12px; margin:0; }
.pv8-library details.connectivity-detail {
  background:#fff; border:1px solid var(--grid); border-radius:7px; margin:8px 0;
  padding:0;
}
.pv8-library details.connectivity-detail > summary {
  align-items:center; cursor:pointer; display:flex; gap:12px; justify-content:space-between;
  list-style:none; padding:11px 13px;
}
.pv8-library details.connectivity-detail > summary::-webkit-details-marker { display:none; }
.pv8-library details.connectivity-detail > summary::after { color:var(--series-3); content:"+"; font-size:18px; }
.pv8-library details.connectivity-detail[open] > summary::after { content:"−"; }
.pv8-library details.connectivity-detail > summary small {
  color:var(--text-muted); display:block; font-size:11px; font-weight:400; margin-top:2px;
}
.pv8-library .connectivity-detail-body { border-top:1px solid var(--grid); padding:11px 13px 13px; }
.pv8-library .connectivity-detail table { font-size:11.5px; margin:0; width:100%; }
.pv8-library .connectivity-detail th { font-size:9px; letter-spacing:.065em; text-transform:uppercase; }
.pv8-library .connectivity-source-status { font:650 9px/1.2 var(--pv8-mono); white-space:nowrap; }
.pv8-library .connectivity-source-status.active { color:var(--series-3); }
.pv8-library .connectivity-source-status.gated { color:var(--warning); }
@media (max-width:700px) {
  .pv8-library .connectivity-decision-grid { grid-template-columns:1fr; }
  .pv8-library .connectivity-next-action { align-items:flex-start; flex-direction:column; }
}

html { background: #fff; }
body { font-family: var(--pv8-sans); }
a { color: var(--series-1); text-underline-offset: 3px; }
a:hover { color: #ae1800; }
button, input, select, textarea { font: inherit; }
button:focus-visible, a:focus-visible, input:focus-visible,
select:focus-visible, summary:focus-visible {
  outline: 2px solid var(--series-1);
  outline-offset: 2px;
}

.pv8-brand { display:flex; align-items:baseline; gap:18px; }
.pv8-brand :is(h1,.pv8-wordmark) {
  font-size:21px;
  font-weight:800;
  letter-spacing:-.04em;
  white-space:nowrap;
}
.pv8-brand :is(h1,.pv8-wordmark) span { color:var(--series-1); }
.pv8-tagline {
  border-left:2px solid var(--pv8-divider);
  color:var(--text-secondary);
  font-size:10px;
  letter-spacing:.035em;
  padding-left:18px;
  text-transform:uppercase;
}
.pv8-nav { display:flex; align-items:center; gap:18px; margin-left:auto; }
.pv8-nav a { color:var(--text-primary); font-size:13px; text-decoration:none; }
.pv8-nav a[aria-current="page"] { color:var(--series-1); }

/* Assessment / asset-library workspace. */
.pv8-library { background:#fff; padding:0; min-width:320px; }
.pv8-library > header {
  align-items:center;
  border-bottom:2px solid var(--pv8-divider);
  display:flex;
  gap:24px;
  margin:0;
  min-height:64px;
  padding:12px 22px;
}
.sidebar-toggle {
  align-items:center;
  background:transparent;
  border:0;
  color:var(--text-secondary);
  cursor:pointer;
  display:inline-flex;
  flex:0 0 auto;
  height:24px;
  justify-content:center;
  padding:3px;
  width:24px;
}
.sidebar-toggle svg { fill:none; stroke:currentColor; stroke-width:1.7; }
.sidebar-toggle:hover { background:var(--pv8-accent-soft); color:var(--series-1); }
.sidebar-toggle.collapsed svg path { stroke:var(--series-1); }
.pv8-library .header-action { font-size:12px; text-decoration:none; white-space:nowrap; }
/* A header cell holding two triggers (Recent work / Saved outputs) is a block
   box with inline children, so a narrow column broke them onto two lines and
   the workspace header became two rows high. Czech labels are longer than the
   English ones, which is where it first showed. The dropdown is positioned
   absolutely, so it keeps normal wrapping. */
.workspace-header-nav .header-menu { white-space:nowrap; }
.workspace-header-nav .header-menu .header-dropdown { white-space:normal; }
.summary-action-row .libbtn { white-space:nowrap; }
.pv8-library .header-action.secondary { color:var(--text-secondary); }

.asset-summary {
  border-bottom:2px solid var(--pv8-divider);
  display:grid;
  /* auto-fit: empty tracks collapse, so the cells always fill the row —
     a fixed 6-track template once crammed 4 cells into the left two-thirds */
  grid-template-columns:minmax(210px,1.35fr) repeat(auto-fit,minmax(150px,1fr));
}
.summary-cell {
  background:#fff;
  border:0;
  border-left:1px solid var(--pv8-divider);
  color:var(--text-primary);
  min-width:0;
  padding:12px 18px;
  text-align:left;
}
.summary-cell:first-child { border-left:0; }
button.summary-cell { cursor:pointer; text-align:left; font:inherit; }
button.summary-cell:hover { background:var(--pv8-accent-soft); }
.summary-actions .summary-action-row { display:flex; gap:6px; margin-top:3px; }
.summary-actions .summary-action-row .libbtn { margin-left:0; padding:6px 11px; }
.summary-cell span {
  color:var(--text-secondary);
  display:block;
  font-size:9px;
  letter-spacing:.035em;
  margin-bottom:3px;
  text-transform:uppercase;
}
.summary-cell b {
  display:block;
  font-family:var(--pv8-mono);
  font-size:16px;
  font-weight:600;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.summary-cell:first-child b { font-family:var(--pv8-sans); }
/* header cells with explicit secondary actions (change asset / open profile /
   last runs / saved outputs) */
.summary-cell-links { display:flex; gap:12px; margin-top:4px; }
.summary-cell-links a {
  color:var(--series-1);
  font-size:11px;
  font-weight:600;
  text-decoration:none;
  white-space:nowrap;
}
.summary-cell-links a:hover { text-decoration:underline; }
#summaryRecentCell { position:relative; }
#recentMenu {
  background:#fff;
  border:1px solid var(--pv8-divider);
  border-radius:10px;
  box-shadow:0 10px 28px rgba(15,30,42,.16);
  left:10px;
  max-height:330px;
  min-width:290px;
  overflow-y:auto;
  padding:4px;
  position:absolute;
  top:calc(100% - 6px);
  z-index:320;
}
#recentMenu a {
  border-radius:8px;
  color:var(--text-primary);
  display:block;
  padding:8px 10px;
  text-decoration:none;
}
#recentMenu a:hover { background:var(--pv8-accent-soft); }
#recentMenu a b { display:block; font-size:12.5px; font-weight:600; }
#recentMenu a span { color:var(--text-muted); display:block; font-size:11px; margin-top:1px; }

.pv8-library .layout {
  display:grid;
  gap:0;
  grid-template-columns:278px minmax(0,1fr);
  min-height:calc(100vh - 124px);
}
.pv8-library .layout.assets-collapsed { grid-template-columns:42px minmax(0,1fr); }
.pv8-library .layout.assets-collapsed #assetPane {
  display:block;
}
.asset-pane-head { align-items:center; display:flex; justify-content:space-between; }
.asset-pane-head h2 { margin:0 !important; }
.pv8-library .layout.assets-collapsed #assetPane .card { padding:0; }
.pv8-library .layout.assets-collapsed #assetPane .card > :not(.asset-pane-head) { display:none !important; }
.pv8-library .layout.assets-collapsed .asset-pane-head h2 { display:none; }
.pv8-library .layout.assets-collapsed .asset-pane-head { justify-content:center; }
.pv8-library .layout > div:first-child {
  background:var(--surface-1);
  border-right:2px solid var(--pv8-divider);
}
.pv8-library .navigation-pane {
  display:flex;
  flex-direction:column;
  min-height:calc(100vh - 124px);
  padding:0 !important;
}
.pv8-library .navigation-pane .asset-pane-head { padding:17px 14px 15px 18px; }
.pv8-library .layout.assets-collapsed .navigation-pane .asset-pane-head {
  padding:18px 9px;
}
.pv8-library .nav-section { border-top:1px solid var(--pv8-divider); }
.pv8-library .nav-section-toggle {
  align-items:center;
  background:transparent;
  border:0;
  color:var(--text-secondary);
  cursor:pointer;
  display:flex;
  font-size:10px;
  font-weight:600;
  justify-content:space-between;
  letter-spacing:.035em;
  padding:11px 18px;
  text-align:left;
  text-transform:uppercase;
  width:100%;
}
.pv8-library .nav-section-toggle:hover { background:var(--pv8-accent-soft); color:var(--series-1); }
.pv8-library .nav-section-mark {
  color:var(--series-1);
  font-family:var(--pv8-mono);
  font-size:16px;
  font-weight:500;
  letter-spacing:0;
}
.pv8-library .nav-section-body[hidden] { display:none !important; }
.pv8-library .pane-primary-links { border-top:1px solid var(--pv8-divider); }
/* nav rows follow one quiet pattern: line icon + label, rounded pill on
   hover/active — numbers and per-row dividers retired */
.pv8-library .nav-ico {
  flex:0 0 19px;
  width:19px;
  height:19px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.7;
  stroke-linecap:round;
  stroke-linejoin:round;
  opacity:.8;
}
.pv8-library .asset-links {
  display:flex;
  flex-direction:column;
  padding:3px 0;
}
.pv8-library .asset-links a,
.pv8-library .pane-utility-links a {
  align-items:center;
  border-radius:10px;
  color:var(--text-primary);
  display:flex;
  font-size:13px;
  font-weight:500;
  gap:11px;
  margin:1px 8px;
  padding:8px 10px;
  text-decoration:none;
}
.pv8-library .asset-links a:hover,
.pv8-library .pane-utility-links a:hover { background:var(--pv8-accent-soft); color:var(--text-primary); }
.pv8-library .asset-links a[aria-current="page"],
.pv8-library .pane-utility-links a[aria-current="page"] {
  background:var(--pv8-accent-soft);
  color:var(--text-primary);
  font-weight:600;
}
.pv8-library .nav-subsection > .nav-section-toggle { padding-left:28px; }
.pv8-library .asset-select-heading {
  align-items:center;
  color:var(--text-secondary);
  display:flex;
  font-size:10px;
  font-weight:600;
  justify-content:space-between;
  letter-spacing:.1em;
  padding:12px 14px 4px;
  text-transform:uppercase;
}
.pv8-library .asset-select-heading .toggle { letter-spacing:0; text-transform:none; }
.pv8-library .decision-nav { display:flex; flex-direction:column; padding:3px 0; }
.pv8-library .decision-nav button,
.pv8-library .decision-nav a {
  align-items:center;
  background:transparent;
  border:0;
  border-radius:10px;
  color:var(--text-primary);
  cursor:pointer;
  display:flex;
  gap:11px;
  margin:1px 8px;
  padding:8px 10px;
  text-align:left;
  text-decoration:none;
}
.pv8-library .decision-nav button:hover,
.pv8-library .decision-nav a:hover { background:var(--pv8-accent-soft); color:var(--text-primary); }
.pv8-library .decision-nav button.active {
  background:var(--pv8-accent-soft);
  color:var(--text-primary);
}
.pv8-library .decision-nav button span,
.pv8-library .decision-nav a span { font-size:13px; font-weight:500; }
.pv8-library .decision-nav button.active span { font-weight:600; }
/* the one-line style keeps descriptions as hover titles, not sub-lines */
.pv8-library .decision-nav button small,
.pv8-library .decision-nav a small { display:none; }
.pv8-library .decision-journey {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  margin-top:16px;
}
.pv8-library .decision-step {
  border:1px solid var(--pv8-divider);
  border-left:0;
  display:flex;
  flex-direction:column;
  min-height:220px;
  padding:16px;
}
.pv8-library .decision-step:first-child { border-left:1px solid var(--pv8-divider); }
.pv8-library .decision-step.next { box-shadow:inset 0 3px 0 var(--series-1); }
.pv8-library .decision-step.complete { box-shadow:inset 0 3px 0 var(--series-3); }
.pv8-library .decision-step .step-number { color:var(--series-1); font:600 11px var(--pv8-mono); }
.pv8-library .decision-step h3 { font-size:16px; margin:10px 0 5px; }
.pv8-library .decision-step p { color:var(--text-secondary); font-size:12px; }
.pv8-library .decision-step .step-action { margin-top:auto; padding-top:14px; }
.pv8-library .decision-status {
  border:1px solid var(--pv8-divider);
  display:inline-block;
  font:600 9px var(--pv8-mono);
  letter-spacing:.08em;
  padding:3px 6px;
  text-transform:uppercase;
}
.pv8-library .decision-status.next { border-color:var(--series-1); color:var(--series-1); }
.pv8-library .decision-status.complete { border-color:var(--series-3); color:var(--series-3); }
.pv8-library .decision-product-head { border-bottom:1px solid var(--pv8-divider); margin-bottom:16px; padding-bottom:14px; }
.pv8-library .decision-product-head h1 { font-size:24px; margin:4px 0; }
.pv8-library .decision-form {
  border:1px solid var(--pv8-divider);
  display:grid;
  gap:12px;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  margin:14px 0;
  padding:14px;
}
.pv8-library .decision-form label { color:var(--text-secondary); font-size:11px; }
.pv8-library .decision-form input,
.pv8-library .decision-form select,
.pv8-library .decision-form textarea {
  background:var(--surface-0);
  border:1px solid var(--pv8-divider);
  color:var(--text-primary);
  display:block;
  margin-top:4px;
  padding:7px 8px;
  width:100%;
}
.pv8-library .decision-form-stacked {
  grid-template-columns:minmax(0,760px);
  row-gap:20px;
}
.pv8-library .decision-form-stacked label,
.pv8-library .decision-form-stacked label > span { display:block; }
.pv8-library .research-form select { max-width:520px; }
.pv8-library .research-form input[type="number"] { max-width:180px; }
.pv8-library .research-form textarea {
  min-height:96px;
  resize:vertical;
}
.pv8-library .research-form-action {
  min-height:38px;
  padding-left:16px;
  padding-right:16px;
}
.pv8-library .research-brief-grid {
  display:grid;
  gap:14px 20px;
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.pv8-library .research-brief-grid [hidden] { display:none; }
.pv8-library .research-funnel {
  display:grid;
  gap:0;
  grid-template-columns:repeat(5,minmax(0,1fr));
  margin:12px 0 0;
}
.pv8-library .research-funnel .metric {
  border:1px solid var(--pv8-divider);
  border-right:0;
  min-height:102px;
  padding:13px;
}
.pv8-library .research-funnel .metric:last-child { border-right:1px solid var(--pv8-divider); }
.pv8-library .research-funnel .metric span,
.pv8-library .research-funnel .metric small { color:var(--text-secondary); display:block; font-size:10px; }
.pv8-library .research-funnel .metric b { display:block; font-size:25px; line-height:1; margin:10px 0 7px; }
.pv8-library .research-rejections {
  align-items:center;
  border:1px solid var(--pv8-divider);
  border-top:0;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  padding:10px 12px;
}
.pv8-library .research-rejections > b { margin-right:4px; }
.pv8-library .research-rejections span { background:var(--surface-1); color:var(--text-secondary); font-size:10px; padding:5px 7px; }
.pv8-library .research-rejections small { color:var(--text-muted); font-size:9px; margin-left:auto; }
.pv8-library .research-section-head {
  align-items:end;
  display:flex;
  gap:16px;
  justify-content:space-between;
  margin:22px 0 10px;
}
.pv8-library .research-section-head h2 { margin:3px 0 0; }
.pv8-library .research-toolbar { align-items:end; display:flex; flex-wrap:wrap; gap:6px; justify-content:flex-end; }
.pv8-library .research-toolbar label { color:var(--text-secondary); font-size:10px; }
.pv8-library .research-toolbar input { border:1px solid var(--pv8-divider); display:block; margin-top:3px; padding:7px 8px; width:180px; }
.pv8-library .research-toolbar .libbtn { margin:0; min-height:34px; }
.pv8-library .research-map { border:1px solid var(--pv8-divider); height:390px; margin:10px 0 14px; }
.pv8-library .research-shortlist-wrap { overflow-x:auto; }
.pv8-library .research-shortlist { min-width:1080px; table-layout:fixed; }
.pv8-library .research-shortlist .research-pick { width:38px; }
.pv8-library .research-shortlist .research-rank { width:42px; }
.pv8-library .research-shortlist .research-candidate { width:17%; }
.pv8-library .research-shortlist .research-thesis { width:auto; }
.pv8-library .research-shortlist .research-demand { width:12%; }
.pv8-library .research-shortlist .research-route { width:10%; }
.pv8-library .research-shortlist .research-score { width:12%; }
.pv8-library .research-shortlist .research-actions { width:10%; }
.pv8-library .research-shortlist td { vertical-align:top; }
.pv8-library .research-shortlist input[type="checkbox"] { height:16px; width:16px; }
.pv8-library .research-score { color:var(--series-3); }
.pv8-library .heat-tag { color:#c2410c; font-size:10px; font-weight:600; }
.pv8-library .text-action { background:none; border:0; color:var(--series-1); cursor:pointer; display:block; font:600 10px var(--pv8-mono); margin:0 0 7px; padding:0; text-align:left; }
.pv8-library .research-purchase {
  align-items:center;
  background:var(--surface-1);
  border:1px solid var(--pv8-divider);
  display:flex;
  gap:18px;
  justify-content:space-between;
  margin:14px 0;
  padding:14px;
}
.pv8-library .research-purchase .libbtn { background:var(--series-3); border-color:var(--series-3); color:#fff; flex:0 0 auto; margin:0; }
.pv8-library .research-purchase .libbtn:disabled { cursor:not-allowed; opacity:.45; }
.pv8-library .research-executive { font-size:15px; line-height:1.55; max-width:900px; }
.pv8-library .research-dossier { border:1px solid var(--pv8-divider); margin:10px 0; }
.pv8-library .research-dossier summary { align-items:center; cursor:pointer; display:flex; gap:14px; justify-content:space-between; list-style:none; padding:13px 14px; }
.pv8-library .research-dossier summary::-webkit-details-marker { display:none; }
.pv8-library .research-dossier summary small { color:var(--text-secondary); display:block; margin-top:3px; }
.pv8-library .research-dossier[open] summary { border-bottom:1px solid var(--pv8-divider); }
.pv8-library .research-dossier > :not(summary) { margin-left:14px; margin-right:14px; }
.pv8-library .research-dossier-grid { display:grid; gap:0; grid-template-columns:repeat(2,minmax(0,1fr)); margin:14px !important; }
.pv8-library .research-dossier-grid > div { border:1px solid var(--pv8-divider); margin:-1px 0 0 -1px; padding:11px; }
.pv8-library .research-dossier-grid span { color:var(--text-secondary); font:600 9px var(--pv8-mono); letter-spacing:.06em; text-transform:uppercase; }
.pv8-library .research-dossier-grid p { margin:6px 0 0; }
@media (max-width:900px) {
  .pv8-library .research-brief-grid,
  .pv8-library .research-dossier-grid { grid-template-columns:1fr; }
  .pv8-library .research-funnel { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pv8-library .research-funnel .metric { border-right:1px solid var(--pv8-divider); }
  .pv8-library .research-section-head,
  .pv8-library .research-purchase { align-items:stretch; flex-direction:column; }
  .pv8-library .research-toolbar { justify-content:flex-start; }
}
.pv8-library .decision-output { border-top:1px solid var(--pv8-divider); margin-top:16px; padding-top:16px; }
.pv8-library .source-list a { overflow-wrap:anywhere; }
.pv8-library .objective-entry {
  border:1px solid var(--pv8-divider);
  margin-top:12px;
  padding:11px 12px;
}
.pv8-library .objective-entry label > b,
.pv8-library .objective-entry label > span { display:block; }
.pv8-library .objective-entry-row { align-items:stretch; display:flex; gap:8px; margin-top:7px; }
.pv8-library .objective-entry textarea {
  background:#fff;
  border:1px solid var(--pv8-divider);
  border-radius:0;
  color:var(--text-primary);
  flex:1;
  min-height:54px;
  padding:8px 9px;
  resize:vertical;
}
.pv8-library .objective-entry .libbtn {
  align-self:stretch;
  background:var(--series-1);
  border-color:var(--series-1);
  border-radius:0;
  color:#fff;
  margin:0;
  min-width:112px;
}
.pv8-library .objective-entry .libbtn:disabled { cursor:wait; opacity:.55; }
.pv8-library #clientObjectiveStatus { margin-top:7px; min-height:16px; }
.pv8-library .objective-shortcut-label {
  align-items:center;
  color:var(--text-muted);
  display:flex;
  font-size:9px;
  gap:8px;
  letter-spacing:.09em;
  margin-top:10px;
  text-transform:uppercase;
}
.pv8-library .objective-shortcut-label::after { background:var(--pv8-divider); content:""; height:1px; flex:1; }
.pv8-library .client-objective-quote {
  border-left:3px solid var(--series-1);
  color:var(--text-primary);
  margin:10px 0;
  max-width:850px;
  padding:7px 10px;
}
.pv8-library .client-objective-quote span {
  color:var(--text-muted);
  display:block;
  font-size:9px;
  letter-spacing:.1em;
  margin-bottom:2px;
  text-transform:uppercase;
}
.pv8-library .asset-view-switch { padding:12px 14px 4px; }
.pv8-library #assetList,
.pv8-library #assetMap { padding:8px 14px 6px; }
.pv8-library .pane-utility-links {
  border-top:1px solid var(--pv8-divider);
  display:flex;
  flex-direction:column;
  margin-top:auto;
}
.pv8-library .pane-utility-links a + a { border-top:1px solid var(--pv8-divider); }
.pv8-portfolio .portfolio-layout { min-height:calc(100vh - 64px); }
.pv8-portfolio .navigation-pane { min-height:calc(100vh - 64px); }
.pv8-portfolio .portfolio-main { min-width:0; }
.pv8-portfolio .portfolio-asset-selector { padding:8px 14px 10px; }
.pv8-portfolio .portfolio-asset-choice {
  background:#fff;
  border:1px solid var(--pv8-divider);
  color:var(--text-primary);
  cursor:pointer;
  display:block;
  margin-bottom:6px;
  padding:8px 9px;
  text-align:left;
  width:100%;
}
.pv8-portfolio .portfolio-asset-choice:hover,
.pv8-portfolio .portfolio-asset-choice.selected { border-color:var(--series-1); color:var(--series-1); }
.pv8-portfolio .portfolio-asset-choice b,
.pv8-portfolio .portfolio-asset-choice span { display:block; }
.pv8-portfolio .portfolio-asset-choice span { color:var(--text-muted); font-size:10px; margin-top:1px; }
.pv8-portfolio #portfolioAssetMap iframe { border:0; display:block; height:190px; margin-bottom:5px; width:100%; }
.pv8-library .card {
  background:transparent;
  border:0;
  border-radius:0;
  padding:18px;
}
.pv8-library .layout > .card { padding:0; min-width:0; }
.pv8-library .card h2,
.pv8-library #result > h2,
.pv8-library #h2FoundationResults > h2 {
  color:var(--text-secondary);
  font-size:10px;
  font-weight:600;
  letter-spacing:.035em;
  margin-bottom:9px;
  text-transform:uppercase;
}
.pv8-library .workspace-head {
  align-items:center;
  display:flex;
  gap:16px;
}
.pv8-library #selName {
  color:var(--text-primary);
  font-size:16px;
  letter-spacing:-.01em;
  margin:0;
  overflow:hidden;
  text-overflow:ellipsis;
  text-transform:none;
  white-space:nowrap;
}
.pv8-library #dataroom { margin:0 0 0 auto !important; text-align:right; }

.pv8-library .module-workspace {
  min-height:calc(100vh - 194px);
  min-width:0;
  padding:20px 22px 36px;
}
.pv8-library .workspace-help-frame {
  background:#fff;
  border:0;
  display:block;
  height:max(640px,calc(100vh - 240px));
  width:100%;
}
.pv8-portfolio #portfolioHelp[hidden] { display:none; }
.pv8-portfolio .workspace-help-frame { height:max(640px,calc(100vh - 64px)); }
.pv8-library #kindBtns {
  display:flex;
  flex-direction:column;
  gap:0;
  margin:0;
  padding:3px 0;
}
.pv8-library #kindBtns button {
  align-items:center;
  background:transparent;
  border:0;
  border-radius:10px;
  color:var(--text-primary);
  display:flex;
  font-size:13px;
  font-weight:500;
  gap:11px;
  margin:1px 8px;
  min-height:0;
  padding:8px 10px;
  position:relative;
  text-align:left;
  width:calc(100% - 16px);
}
/* numbers retired: each module carries its own line icon (nav-icons.js);
   the one-line description moves to the hover title */
.pv8-library #kindBtns button::before { content:none; }
.pv8-library #kindBtns button::after { content:none; }
.pv8-library #kindBtns button:hover { background:var(--pv8-accent-soft); }
.pv8-library #kindBtns button.active {
  background:var(--pv8-accent-soft);
  box-shadow:none;
  color:var(--text-primary) !important;
  font-weight:600;
}
.pv8-library #kindBtns > button.has-submenu::after {
  color:var(--text-secondary);
  content:"⌄";
  font-size:13px;
  margin-left:auto;
  position:static;
}
.pv8-library #kindBtns > button.has-submenu[aria-expanded="true"]::after {
  content:"⌃";
}
.module-submenu {
  background:#fff;
  border-bottom:1px solid var(--pv8-divider);
  display:flex;
  flex-direction:column;
}
.module-submenu[hidden] { display:none !important; }
.pv8-library #kindBtns .module-submenu button {
  border-bottom:0;
  font-size:12px;
  font-weight:500;
  min-height:38px;
  padding:8px 14px 8px 48px;
}
.pv8-library #kindBtns .module-submenu button::before,
.pv8-library #kindBtns .module-submenu button::after { content:none; }
.pv8-library #kindBtns .module-submenu button.active {
  background:var(--pv8-accent-soft);
  box-shadow:inset 4px 0 0 var(--series-1);
  color:var(--series-1) !important;
}
.rec-radius {
  align-items:center;
  border:0;
  display:flex;
  gap:14px;
  margin:0;
  padding:0;
}
.rec-radius legend {
  color:var(--text-secondary);
  float:left;
  font-size:11px;
  margin-right:12px;
  padding:3px 0 0;
}
.rec-radius label { margin:0; white-space:nowrap; }
.derived-input {
  border-left:4px solid var(--series-1);
  display:grid;
  gap:3px;
  margin:10px 0;
  padding:9px 12px;
}
.derived-input > b { font-size:14px; }

.pv8-library .asset {
  background:#fff;
  border:1px solid var(--pv8-divider);
  border-radius:0;
  margin-bottom:8px;
  padding:10px 12px;
}
.pv8-library .asset:hover { background:var(--pv8-accent-soft); border-color:var(--series-1); }
.pv8-library .asset.sel {
  background:var(--pv8-accent-soft);
  border-color:var(--series-1);
  box-shadow:inset 3px 0 0 var(--series-1);
}
.pv8-library .asset b { font-size:13px; font-weight:600; }
.pv8-library .asset span { display:block; line-height:1.4; margin-top:3px; }

.pv8-library .toggle,
.pv8-library .btns button,
.pv8-library .libbtn,
.pv8-library form button,
.pv8-library button,
.pv8-library input,
.pv8-library select,
.pv8-library fieldset,
.pv8-library details,
.pv8-library .opts,
.pv8-library .gate,
.pv8-library .metric,
.pv8-library #gmapCanvas,
.pv8-library #cmpMapA,
.pv8-library #cmpMapB,
.pv8-library #recMapBox { border-radius:0 !important; }
.pv8-library .toggle { border-color:var(--pv8-divider); }
.pv8-library .toggle button.active,
.pv8-library .cmpv.active {
  background:var(--series-1);
  border-color:var(--series-1);
  color:#fff !important;
}
.pv8-library .libbtn,
.pv8-library button:not([hidden]) {
  transition:background-color 120ms ease, border-color 120ms ease, color 120ms ease;
}
.pv8-library .libbtn {
  color:var(--series-1);
  font-weight:500;
}
.pv8-library .opts,
.pv8-library #repOpts,
.pv8-library #libPanel {
  background:var(--surface-1);
  border:1px solid var(--pv8-divider) !important;
  padding:14px !important;
}
.pv8-library input,
.pv8-library select {
  background:#fff;
  border:1px solid var(--pv8-divider);
  color:var(--text-primary);
  min-height:31px;
}
.pv8-library table {
  font-family:var(--pv8-sans);
  table-layout:auto;
}
.pv8-library table th:first-child,
.pv8-library table td:first-child { width:auto; min-width:12ch; }
/* Content, not a global 1% track, determines the label width. Short ranks
   and years must not inherit the shell's 150px first-column minimum either.
   Explicit colgroups below retain control over specialist tables. */
.pv8-library table :is(th,td) { overflow-wrap:anywhere; min-width:12ch; }
.pv8-library .key-value-table { table-layout:fixed; }
.pv8-library .key-value-table td:first-child { width:42%; white-space:normal; }
.pv8-library .mdc-energy-balance td:first-child {
  min-width:240px;
  width:clamp(240px,28vw,420px);
}
.pv8-library .mdc-energy-balance td:last-child { width:auto; }
/* EV ledgers start with a year, not a 220px descriptive label. Key/value
   tables already reserve their label track above. */
.pv8-library .mdc-energy-dashboard { display:grid; gap:18px; }
.pv8-library .mdc-dashboard-head {
  align-items:flex-end;
  border-bottom:2px solid var(--pv8-divider);
  display:flex;
  gap:20px;
  justify-content:space-between;
  padding-bottom:12px;
}
.pv8-library .mdc-dashboard-head h2 { margin-bottom:3px; }
.pv8-library .mdc-dashboard-head p {
  color:var(--text-secondary);
  font-size:12px;
  max-width:720px;
}
.pv8-library .mdc-view-controls,
.pv8-library .mdc-share-presets {
  align-items:center;
  display:flex;
  gap:0;
}
.pv8-library .mdc-view-controls > span {
  color:var(--text-secondary);
  font-size:10px;
  letter-spacing:.08em;
  margin-right:8px;
  text-transform:uppercase;
  white-space:nowrap;
}
.pv8-library .mdc-view-toggle,
.pv8-library .mdc-share-preset {
  background:var(--surface-1);
  border:1px solid var(--pv8-divider);
  color:var(--text-secondary);
  cursor:pointer;
  font:500 11px var(--pv8-sans);
  min-height:30px;
  padding:5px 10px;
}
.pv8-library .mdc-view-toggle + .mdc-view-toggle,
.pv8-library .mdc-share-preset + .mdc-share-preset { border-left:0; }
.pv8-library .mdc-view-toggle[aria-pressed="true"],
.pv8-library .mdc-share-preset[aria-pressed="true"] {
  background:var(--series-1);
  border-color:var(--series-1);
  color:#fff;
}
.pv8-library .mdc-energy-controls {
  background:var(--surface-1);
  border:1px solid var(--pv8-divider);
  display:grid;
  gap:24px;
  grid-template-columns:minmax(300px,1.6fr) minmax(230px,1fr);
  padding:16px;
}
.pv8-library .mdc-pv-control > label {
  align-items:baseline;
  display:flex;
  font-weight:600;
  justify-content:space-between;
}
.pv8-library #mdcPvShareOutput {
  color:var(--series-1);
  font:600 20px var(--pv8-mono);
}
.pv8-library .mdc-range-row {
  align-items:center;
  display:grid;
  gap:8px;
  grid-template-columns:minmax(160px,1fr) 64px auto;
  margin:8px 0 10px;
}
.pv8-library .mdc-range-row input[type="range"] {
  accent-color:var(--series-1);
  min-height:auto;
  width:100%;
}
.pv8-library .mdc-range-row input[type="number"] {
  font-family:var(--pv8-mono);
  margin:0;
  text-align:right;
  width:64px;
}
.pv8-library .mdc-share-presets { align-items:stretch; }
.pv8-library .mdc-share-preset { flex:1; }
.pv8-library .mdc-cost-controls {
  border-left:1px solid var(--pv8-divider);
  display:grid;
  gap:10px;
  padding-left:24px;
}
.pv8-library .mdc-cost-controls label {
  align-items:center;
  display:flex;
  justify-content:space-between;
}
.pv8-library .mdc-cost-controls label > span { white-space:nowrap; }
.pv8-library .mdc-cost-controls input {
  font-family:var(--pv8-mono);
  margin:0 4px 0 0;
  text-align:right;
  width:76px;
}
.pv8-library .mdc-energy-kpis {
  border:1px solid var(--pv8-divider);
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.pv8-library .mdc-energy-kpis article {
  border-left:1px solid var(--pv8-divider);
  min-height:96px;
  padding:13px 14px;
}
.pv8-library .mdc-energy-kpis article:first-child { border-left:0; }
.pv8-library .mdc-energy-kpis span,
.pv8-library .mdc-average-deficit > span {
  color:var(--text-secondary);
  display:block;
  font-size:9px;
  letter-spacing:.09em;
  text-transform:uppercase;
}
.pv8-library .mdc-energy-kpis b {
  display:block;
  font:600 18px var(--pv8-mono);
  margin:7px 0 2px;
}
.pv8-library .mdc-energy-kpis small,
.pv8-library .mdc-average-deficit small,
.pv8-library .mdc-download-recommendation > small {
  color:var(--text-muted);
  display:block;
  font-size:11px;
}
.pv8-library .mdc-energy-visuals {
  display:grid;
  gap:26px;
  grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);
}
.pv8-library .mdc-energy-figure {
  border-top:2px solid var(--pv8-divider);
  margin:0;
  min-width:0;
  padding-top:11px;
}
.pv8-library .mdc-energy-figure figcaption {
  font-size:12px;
  font-weight:600;
  margin-bottom:18px;
  text-transform:uppercase;
}
.pv8-library .mdc-supply-bar {
  background:var(--surface-0);
  border:1px solid var(--pv8-divider);
  display:flex;
  height:42px;
  overflow:hidden;
  width:100%;
}
.pv8-library .mdc-supply-bar span { display:block; transition:width 180ms ease; }
.pv8-library .mdc-supply-pv { background:var(--good); }
.pv8-library .mdc-supply-grid { background:var(--series-1); }
.pv8-library .mdc-supply-legend {
  display:flex;
  flex-wrap:wrap;
  gap:8px 24px;
  margin-top:10px;
}
.pv8-library .mdc-supply-legend span { align-items:center; display:flex; gap:7px; }
.pv8-library .mdc-supply-legend i { display:block; height:10px; width:10px; }
.pv8-library .mdc-supply-legend i.pv { background:var(--good); }
.pv8-library .mdc-supply-legend i.grid { background:var(--series-1); }
.pv8-library .mdc-supply-legend b { font-family:var(--pv8-mono); }
.pv8-library .mdc-visual-note {
  color:var(--text-muted);
  font-size:11px;
  margin-top:9px;
}
.pv8-library .crypto-energy-controls { margin:8px 0 18px; }
.pv8-library .crypto-energy-controls .mdc-supply-grid,
.pv8-library .crypto-energy-controls .mdc-supply-legend i.grid {
  background:var(--pv8-solar);
}
.pv8-library .crypto-supply-figure {
  align-self:stretch;
  border-top:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  margin:0;
  padding:0;
}
.pv8-library .crypto-grid-residual {
  align-items:baseline;
  border-top:1px solid var(--pv8-divider);
  color:var(--text-secondary);
  display:flex;
  font-size:11px;
  justify-content:space-between;
  margin-top:12px;
  padding-top:9px;
}
.pv8-library .crypto-grid-residual output {
  color:var(--warning);
  font:600 18px var(--pv8-mono);
}
.pv8-library .crypto-heat-map-legend {
  margin:6px 0 8px;
  color:var(--text-secondary);
  font-size:11.5px;
  line-height:1.5;
}
.pv8-library .crypto-legend-pv,
.pv8-library .crypto-legend-hub,
.pv8-library .crypto-legend-heat,
.pv8-library .crypto-heat-marker-key {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:24px;
  min-height:20px;
  padding:1px 5px;
  border-radius:999px;
  color:#fff;
  font-size:10px;
  font-weight:750;
  white-space:nowrap;
}
.pv8-library .crypto-legend-pv { background:#1d4ed8; }
.pv8-library .crypto-legend-hub { background:#f59e0b; }
.pv8-library .crypto-legend-heat,
.pv8-library .crypto-heat-marker-key { background:#c2410c; }
.pv8-library .crypto-heat-table-wrap {
  width:100%;
  max-height:390px;
  overflow:auto;
  border:1px solid var(--border);
  border-radius:8px;
}
.pv8-library .crypto-heat-table { margin:0; font-size:12px; }
.pv8-library .crypto-heat-table th { position:sticky; top:0; z-index:1; background:var(--surface-0,#f4f4f2); }
.pv8-library .crypto-heat-row.is-active td { background:#fff4ed; }
.pv8-library .crypto-heat-actions { white-space:nowrap; }
.pv8-library .crypto-heat-actions > * { margin-right:8px; }
.pv8-library .mdc-capacity-track {
  background:var(--surface-0);
  border:1px solid var(--pv8-divider);
  height:24px;
  position:relative;
}
.pv8-library .mdc-capacity-requirement {
  background:color-mix(in srgb,var(--series-1) 65%,transparent);
  display:block;
  height:100%;
  transition:width 180ms ease;
}
.pv8-library .mdc-capacity-existing-marker {
  background:var(--text-primary);
  height:34px;
  position:absolute;
  top:-6px;
  transform:translateX(-1px);
  width:2px;
}
.pv8-library .mdc-capacity-existing-marker::before {
  border-left:4px solid transparent;
  border-right:4px solid transparent;
  border-top:5px solid var(--text-primary);
  content:"";
  left:-3px;
  position:absolute;
  top:-1px;
}
.pv8-library .mdc-capacity-axis > span,
.pv8-library .mdc-capacity-labels {
  color:var(--text-muted);
  font:500 10px var(--pv8-mono);
}
.pv8-library .mdc-capacity-axis > span:first-of-type { float:left; }
.pv8-library .mdc-capacity-axis > span:last-of-type { float:right; }
.pv8-library .mdc-capacity-labels {
  clear:both;
  display:flex;
  gap:12px;
  justify-content:space-between;
  padding-top:9px;
}
.pv8-library .mdc-capacity-labels span:first-child { color:var(--series-1); }
.pv8-library .mdc-average-deficit {
  border-top:1px solid var(--pv8-divider);
  margin-top:15px;
  padding-top:10px;
}
.pv8-library .mdc-average-deficit b {
  display:block;
  font:600 19px var(--pv8-mono);
  margin:3px 0 1px;
}
.pv8-library .mdc-download-recommendation {
  background:color-mix(in srgb,var(--series-1) 5%,var(--surface-1));
  border-left:4px solid var(--series-1);
  padding:16px 18px;
}
.pv8-library .mdc-download-recommendation h3 { font-size:18px; margin:4px 0 5px; }
.pv8-library .mdc-download-recommendation p { color:var(--text-secondary); max-width:900px; }
.pv8-library .mdc-download-status {
  border-top:1px solid var(--pv8-divider);
  font-weight:600;
  margin-top:12px;
  padding-top:10px;
}
.pv8-library .mdc-download-status.shortfall { color:var(--serious); }
.pv8-library .mdc-download-status.sufficient { color:var(--good); }
.pv8-library .mdc-download-recommendation dl {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin:12px 0;
}
.pv8-library .mdc-download-recommendation dl > div {
  border-left:1px solid var(--pv8-divider);
  padding:4px 12px;
}
.pv8-library .mdc-download-recommendation dl > div:first-child {
  border-left:0;
  padding-left:0;
}
.pv8-library .mdc-download-recommendation dt {
  color:var(--text-secondary);
  font-size:9px;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.pv8-library .mdc-download-recommendation dd {
  font:600 17px var(--pv8-mono);
  margin-top:2px;
}
.pv8-library .mdc-energy-detail { border-top:1px solid var(--pv8-divider); padding-top:10px; }
.pv8-library .mdc-energy-detail summary { cursor:pointer; font-weight:600; }
.pv8-library .mdc-energy-detail[open] summary { margin-bottom:8px; }
/* One-layer financial inputs: nothing hidden. Category labels carry useful
   structure, so they use the interface face rather than a decorative mono. */
.pv8-library .fin-band {
  border-left:3px solid var(--pv8-divider);
  margin:16px 0;
  padding:2px 0 2px 14px;
}
.pv8-library .fin-kicker {
  color:var(--pv8-accent, #11426b);
  font:650 11px/1.4 var(--pv8-sans);
  letter-spacing:.01em;
  margin-bottom:8px;
  text-transform:uppercase;
}
.pv8-library .fin-kicker .muted {
  font:400 11px/1.4 var(--pv8-github-sans),system-ui,sans-serif;
  letter-spacing:0;
  text-transform:none;
}
.pv8-library .fin-grid {
  display:grid;
  gap:7px 18px;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
}
.pv8-library .fin-grid label {
  align-items:center;
  display:flex;
  justify-content:space-between;
  margin:0;
}
.pv8-library .ev-energy-inputs { margin:12px 0 4px; }
.pv8-library .ev-energy-input-grid {
  display:grid;
  gap:9px 16px;
  grid-template-columns:repeat(3,minmax(180px,1fr));
}
.pv8-library .ev-energy-input-grid label {
  align-items:center;
  display:flex;
  justify-content:space-between;
}
.pv8-library .ev-energy-input-grid input { margin-left:8px; width:92px; }
/* the CAPEX category sits flat inside the one-layer fin-table — no box */
.pv8-library .ev-capex-inputs { margin:0; }
.pv8-library .fin-table {
  border-top:2px solid var(--pv8-divider);
  margin:14px 0 4px;
}
.pv8-library .fin-cat {
  border-bottom:1px solid var(--pv8-divider);
  padding:12px 0 14px;
}
.pv8-library .fin-cat .fin-grid { margin-top:2px; }
.pv8-library .ev-capex-mode-label {
  align-items:center;
  display:flex !important;
  font-weight:600;
  gap:12px;
  margin:14px 0 10px !important;
}
.pv8-library .ev-capex-mode-label select { min-width:300px; }
.pv8-library .ev-capex-total {
  align-items:center;
  background:color-mix(in srgb,var(--series-1) 7%,transparent);
  border-left:3px solid var(--series-1);
  display:flex;
  flex-wrap:wrap;
  gap:8px 18px;
  margin:10px 0;
  padding:10px 12px;
}
.pv8-library .ev-capex-total[hidden] { display:none; }
.pv8-library .ev-capex-total label { font-weight:600; margin:0; }
.pv8-library .ev-capex-total input { margin-left:8px; width:150px; }
.pv8-library .ev-capex-lines {
  border-top:1px solid var(--pv8-divider);
  margin-top:12px;
  padding-top:10px;
}
.pv8-library .ev-capex-lines summary { cursor:pointer; }
.pv8-library .ev-capex-lines.is-muted { opacity:.62; }
.pv8-library .ev-capex-line-grid {
  display:grid;
  gap:8px 20px;
  grid-template-columns:repeat(2,minmax(260px,1fr));
  margin-top:12px;
}
.pv8-library .ev-capex-line-grid label,
.pv8-library .ev-capex-provenance label {
  align-items:center;
  display:flex;
  justify-content:space-between;
}
.pv8-library .ev-capex-line-grid input { margin-left:12px; width:150px; }
.pv8-library .ev-capex-provenance {
  display:grid;
  gap:8px 20px;
  grid-template-columns:minmax(220px,.8fr) minmax(300px,1.2fr);
  margin:14px 0 10px;
}
.pv8-library .ev-capex-provenance input,
.pv8-library .ev-capex-provenance select { margin-left:12px; min-width:170px; }
.pv8-library .ev-capex-result {
  border-top:2px solid var(--series-1);
  margin-top:18px;
  padding-top:14px;
}
.pv8-library .ev-capex-result h3 { font-size:20px; margin:3px 0 10px; }
.pv8-library .ev-energy-dashboard { padding-bottom:4px; }
.pv8-library .ev-energy-controls {
  background:var(--surface-1);
  border:1px solid var(--pv8-divider);
  display:grid;
  gap:24px;
  grid-template-columns:minmax(300px,1.05fr) minmax(380px,1.45fr);
  padding:16px;
}
.pv8-library .ev-mix-controls h3,
.pv8-library .ev-cost-controls h3 { font-size:14px; margin-bottom:12px; }
.pv8-library .ev-mix-controls > label {
  align-items:baseline;
  display:flex;
  font-weight:600;
  justify-content:space-between;
}
.pv8-library .ev-mix-controls output {
  color:var(--series-1);
  font:600 18px var(--pv8-mono);
}
.pv8-library .ev-grid-residual {
  align-items:center;
  border-top:1px solid var(--pv8-divider);
  display:flex;
  justify-content:space-between;
  margin:5px 0 12px;
  padding-top:9px;
}
.pv8-library .ev-grid-residual b { font:600 18px var(--pv8-mono); }
.pv8-library .ev-cost-controls {
  border-left:1px solid var(--pv8-divider);
  display:grid;
  gap:8px 22px;
  grid-template-columns:repeat(2,minmax(170px,1fr));
  padding-left:24px;
}
.pv8-library .ev-cost-controls h3 { grid-column:1/-1; }
.pv8-library .ev-cost-controls label {
  align-items:center;
  display:flex;
  justify-content:space-between;
}
.pv8-library .ev-cost-controls label > span { white-space:nowrap; }
.pv8-library .ev-cost-controls input {
  font-family:var(--pv8-mono);
  margin:0 3px 0 8px;
  text-align:right;
  width:82px;
}
.pv8-library .ev-finance-kpis { grid-template-columns:repeat(5,minmax(0,1fr)); }
.pv8-library .ev-energy-visuals,
.pv8-library .ev-reconciliation-grid {
  display:grid;
  gap:26px;
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.pv8-library .ev-supply-bess { background:var(--series-2,#c47d15); }
.pv8-library .mdc-supply-legend i.bess { background:var(--series-2,#c47d15); }
.pv8-library .ev-bess-charge-summary {
  font:600 12px var(--pv8-mono);
  margin-bottom:10px;
  min-height:34px;
}
.pv8-library .ev-charge-bar { height:26px; }
.pv8-library .ev-finance-outcome {
  border-left:4px solid var(--pv8-divider);
  padding:14px 17px;
}
.pv8-library .ev-finance-outcome.positive {
  background:color-mix(in srgb,var(--good) 6%,var(--surface-1));
  border-left-color:var(--good);
}
.pv8-library .ev-finance-outcome.negative {
  background:color-mix(in srgb,var(--serious) 5%,var(--surface-1));
  border-left-color:var(--serious);
}
.pv8-library .ev-finance-outcome h3 { font-size:18px; margin:4px 0; }
.pv8-library .ev-finance-outcome p { color:var(--text-secondary); max-width:960px; }
.pv8-library .ev-reconciliation-grid .mdc-energy-detail {
  border:1px solid var(--pv8-divider);
  padding:12px;
}
.pv8-library .ev-model-boundary {
  background:var(--surface-0);
  border-top:1px solid var(--pv8-divider);
  color:var(--text-secondary);
  font-size:11px;
  padding:10px 12px;
}
.pv8-library .mdc-energy-balance td:last-child { text-align:right; white-space:nowrap; }
.pv8-library .mdc-price-history h3 { margin-bottom:8px; }
.pv8-library .mdc-price-bars {
  align-items:end;
  border-bottom:1px solid var(--pv8-divider);
  display:flex;
  gap:18px;
  height:190px;
  margin-bottom:10px;
  padding:12px 12px 0;
}
.pv8-library .mdc-price-year {
  align-items:center;
  display:grid;
  flex:1;
  grid-template-rows:auto 1fr auto auto;
  height:100%;
  max-width:180px;
  text-align:center;
}
.pv8-library .mdc-price-value { font:600 12px var(--pv8-mono); margin-bottom:5px; }
.pv8-library .mdc-price-track {
  align-items:end;
  display:flex;
  height:112px;
  justify-content:center;
  min-height:112px;
}
.pv8-library .mdc-price-track span { background:var(--series-1); display:block; max-width:70px; width:65%; }
.pv8-library .mdc-price-year b { font-family:var(--pv8-mono); margin-top:5px; }
.pv8-library .mdc-price-year small { color:var(--text-muted); font-size:10px; min-height:30px; }
.pv8-library th {
  border-bottom:2px solid var(--pv8-divider);
  color:var(--text-secondary);
  font-size:9px;
  font-weight:600;
  letter-spacing:.08em;
  padding:7px 8px;
  text-align:left;
  text-transform:uppercase;
}
.pv8-library td { padding:7px 8px; }
.pv8-library .advisor-table-wrap { overflow-x:auto; width:100%; }
.pv8-library .advisor-table { table-layout:auto; min-width:760px; }
.pv8-library .advisor-table col.advisor-rank { width:38px; }
.pv8-library .advisor-table col.advisor-option { width:31%; }
.pv8-library .advisor-table col.advisor-screen { width:42%; }
.pv8-library .advisor-table col.advisor-value { width:140px; }
.pv8-library .advisor-table col.advisor-readiness { width:115px; }
.pv8-library .advisor-table col.advisor-action { width:100px; }
.pv8-library .advisor-table th:first-child,
.pv8-library .advisor-table td:first-child {
  max-width:38px;
  min-width:0;
  white-space:nowrap;
  width:38px !important;
}
.pv8-library .advisor-table th:nth-child(4),
.pv8-library .advisor-table td:nth-child(4),
.pv8-library .advisor-table th:nth-child(5),
.pv8-library .advisor-table td:nth-child(5),
.pv8-library .advisor-table th:nth-child(6),
.pv8-library .advisor-table td:nth-child(6) { white-space:nowrap; }
.pv8-library .advisor-table td:nth-child(2),
.pv8-library .advisor-table td:nth-child(3) { overflow-wrap:anywhere; }
.pv8-library .metric-grid { gap:0; border:2px solid var(--pv8-divider); }
.pv8-library .metric {
  background:#fff;
  border:0;
  border-left:1px solid var(--pv8-divider);
  min-height:72px;
  padding:11px 13px;
}
.pv8-library .metric:first-child { border-left:0; }
.pv8-library .metric b { font-family:var(--pv8-mono); font-size:17px; }
.pv8-library .rec { font-size:22px; letter-spacing:-.02em; }
.pv8-library .chip { border-radius:0; }
.pv8-library .docs {
  border-bottom:1px solid var(--pv8-divider);
  border-top:1px solid var(--pv8-divider);
  margin:12px 0;
  padding:10px 0;
}
.pv8-library .docs.module-output-menu {
  align-items:stretch;
  display:flex;
  flex-direction:column;
  flex-wrap:nowrap;
  gap:8px;
  max-width:560px;
  width:100%;
}
.pv8-library .docs.module-output-menu > a {
  box-sizing:border-box;
  width:100%;
}
.pv8-library .module-output-menu > .save-share-row {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  width:100%;
}
.pv8-library .module-output-menu > .save-share-row > .libbtn {
  margin-left:0;
}
.pv8-library .module-output-menu > .save-share-row > .save-status {
  flex-basis:100%;
}
.pv8-library .dw-table-toolbar {
  align-items:center;
  border-bottom:1px solid var(--pv8-divider);
  box-sizing:border-box;
  display:flex;
  flex-direction:row;
  flex-wrap:nowrap;
  gap:14px;
  margin:6px 0 0;
  max-width:none;
  min-width:0;
  overflow:visible;
  padding:8px 0;
  white-space:nowrap;
  width:100%;
}
.pv8-library .dw-table-toolbar > a { flex:0 0 auto; }
.pv8-library .dw-table-size,
.pv8-library .dw-table-pagination {
  align-items:center;
  display:inline-flex;
  flex:0 0 auto;
  gap:7px;
}
.pv8-library .dw-table-size select {
  margin:0;
  min-width:118px;
  width:auto;
}
.pv8-library .dw-table-pagination .libbtn { margin:0; }
.pv8-library .dw-candidate-table-wrap {
  overflow-x:auto;
  width:100%;
}
.pv8-library .dw-candidate-table {
  min-width:760px;
  table-layout:fixed;
  width:100%;
}
.pv8-library .dw-candidate-table col.rank { width:42px; }
.pv8-library .dw-candidate-table col.candidate { width:25%; }
.pv8-library .dw-candidate-table col.distance { width:10%; }
.pv8-library .dw-candidate-table col.profile-fit { width:auto; }
.pv8-library .dw-candidate-table col.tools { width:206px; }
.pv8-library .dw-candidate-table td { vertical-align:top; }
.pv8-library .dw-candidate-table td:last-child { white-space:normal; }
.pv8-library .dw-candidate-table tr.dw-outreach-row-selected > td,
.pv8-library .dw-planned-table tr.dw-outreach-row-selected > td {
  background:color-mix(in srgb, var(--pv8-green) 8%, #fff);
  box-shadow:inset 0 1px color-mix(in srgb,var(--pv8-green) 22%,transparent),
             inset 0 -1px color-mix(in srgb,var(--pv8-green) 22%,transparent);
}
.pv8-library .dw-candidate-table tr.dw-outreach-row-selected > td:first-child,
.pv8-library .dw-planned-table tr.dw-outreach-row-selected > td:first-child {
  box-shadow:inset 4px 0 var(--pv8-green),
             inset 0 1px color-mix(in srgb,var(--pv8-green) 22%,transparent),
             inset 0 -1px color-mix(in srgb,var(--pv8-green) 22%,transparent);
}
.pv8-library .dw-candidate-actions {
  display:flex;
  flex-wrap:wrap;
  gap:5px;
}
.pv8-library .dw-candidate-actions .libbtn { margin:0; }
.pv8-library .dw-candidate-actions .dw-outreach-select {
  flex:1 0 100%;
  justify-content:center;
}
.pv8-library .libbtn.selected {
  background:#e7f4ef;
  border-color:color-mix(in srgb,var(--pv8-green) 55%,#fff);
  color:var(--pv8-green);
}
.pv8-library .dw-outreach-selection {
  align-items:center;
  background:color-mix(in srgb,var(--pv8-green) 3%,#fff);
  border:1px solid var(--grid);
  border-left:4px solid color-mix(in srgb,var(--pv8-green) 28%,#fff);
  border-radius:8px;
  display:flex;
  gap:18px;
  justify-content:space-between;
  margin:0 0 14px;
  min-height:64px;
  padding:11px 13px;
}
.pv8-library .dw-outreach-selection:focus { outline:3px solid color-mix(in srgb,var(--pv8-green) 18%,transparent); }
.pv8-library .dw-outreach-selection > div:first-child b,
.pv8-library .dw-outreach-selection > div:first-child span { display:block; }
.pv8-library .dw-outreach-selection > div:first-child b { font-size:13px; }
.pv8-library .dw-outreach-selection > div:first-child span { color:var(--text-muted); font-size:11.5px; margin-top:2px; }
.pv8-library .dw-outreach-selection.selected { border-left-color:var(--pv8-green); }
.pv8-library .dw-outreach-selection.needs-choice { background:#fff8f6; border-color:#dc9e91; border-left-color:#b94132; }
.pv8-library .dw-outreach-selection-state { color:var(--text-muted); flex:0 0 auto; font-size:11.5px; }
.pv8-library .dw-outreach-selection-actions { display:flex; flex:0 0 auto; gap:7px; }
.pv8-library .dw-outreach-selection-actions .libbtn { margin:0; }
@media(max-width:760px) {
  .pv8-library .dw-outreach-selection { align-items:stretch; flex-direction:column; gap:9px; }
  .pv8-library .dw-outreach-selection-actions { width:100%; }
  .pv8-library .dw-outreach-selection-actions .libbtn { flex:1; }
  .pv8-library .dw-candidate-table col.tools { width:172px; }
}
.pv8-library .dw-planned-demand {
  background:color-mix(in srgb, var(--pv8-green) 3%, #fff);
  border:1px solid var(--pv8-divider);
  border-left:4px solid color-mix(in srgb, var(--pv8-green) 56%, #fff);
  border-radius:8px;
  margin-top:22px;
  padding:16px;
}
.pv8-library .dw-planned-heading {
  align-items:flex-start;
  display:flex;
  gap:18px;
  justify-content:space-between;
}
.pv8-library .dw-planned-heading h4 {
  font-size:20px;
  margin:3px 0 4px;
}
.pv8-library .dw-planned-heading p {
  color:var(--pv8-muted);
  margin:0;
  max-width:880px;
}
.pv8-library .dw-planned-table-wrap {
  margin-top:14px;
  overflow-x:auto;
  width:100%;
}
.pv8-library .dw-planned-table {
  background:#fff;
  min-width:1100px;
  table-layout:fixed;
}
.pv8-library .dw-planned-table th:nth-child(1) { width:18%; }
.pv8-library .dw-planned-table th:nth-child(2) { width:16%; }
.pv8-library .dw-planned-table th:nth-child(3) { width:13%; }
.pv8-library .dw-planned-table th:nth-child(4) { width:8%; }
.pv8-library .dw-planned-table th:nth-child(5) { width:12%; }
.pv8-library .dw-planned-table th:nth-child(6) { width:20%; }
.pv8-library .dw-planned-table th:nth-child(7) { width:13%; }
.pv8-library .dw-planned-table td { vertical-align:top; }
.pv8-library .dw-planned-actions .libbtn {
  margin:0 4px 5px 0;
}
.pv8-library .dw-planned-footnote {
  font-size:11.5px;
  line-height:1.5;
  margin:10px 0 0;
}
.pv8-library .dw-planned-coverage {
  color:var(--pv8-muted);
  font-size:11.5px;
  margin-top:10px;
}
.pv8-library .dw-planned-coverage summary {
  color:var(--pv8-green);
  cursor:pointer;
  font-weight:700;
}
.pv8-library .dw-planned-coverage > div { margin-top:5px; }
.pv8-library .dw-planned-technical {
  font-size:11px;
  margin-top:8px;
}
.pv8-library .dw-sort-summary { flex:0 0 auto; }
.pv8-library .dw-sort-header {
  align-items:center;
  display:flex;
  gap:5px;
}
.pv8-library .dw-sort-button {
  align-items:center;
  appearance:none;
  background:transparent;
  border:0;
  color:inherit;
  cursor:pointer;
  display:inline-flex;
  font:inherit;
  font-weight:inherit;
  gap:6px;
  justify-content:flex-start;
  letter-spacing:inherit;
  margin:0;
  padding:2px 0;
  text-align:left;
  text-transform:inherit;
  flex:1 1 auto;
  min-width:0;
  width:auto;
}
.pv8-library .dw-sort-header .dw-header-help { flex:0 0 15px; margin-left:0; }
.pv8-library .dw-sort-button:hover,
.pv8-library .dw-sort-button:focus-visible { color:var(--series-1); }
.pv8-library .dw-sort-button:focus-visible { outline:2px solid var(--series-1); outline-offset:3px; }
.pv8-library .dw-sort-indicator { color:var(--text-muted); font-size:13px; }
.pv8-library .dw-sort-button.active .dw-sort-indicator { color:var(--series-1); }
.pv8-library .direct-wire-result-upload {
  border:1px solid var(--pv8-divider);
  max-width:760px;
  padding:20px;
}
.pv8-library .direct-wire-result-upload h2 { margin:5px 0 8px; }
.pv8-library .direct-wire-result-file {
  align-items:center;
  border-bottom:1px solid var(--grid);
  border-top:1px solid var(--grid);
  display:grid;
  gap:10px;
  grid-template-columns:minmax(150px, .35fr) minmax(260px, 1fr);
  margin:18px 0 8px;
  padding:14px 0;
}
.pv8-library .direct-wire-result-file input { margin:0; width:100%; }
.pv8-library .direct-wire-result-upload-actions {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:16px;
}
.pv8-library .direct-wire-result-upload-actions .libbtn {
  background:var(--series-1);
  color:#fff;
  margin:0;
}
@media (max-width: 640px) {
  .pv8-library .direct-wire-result-file { grid-template-columns:1fr; }
}
.solution-card {
  background:#fff;
  border:1px solid var(--pv8-divider);
  margin:10px 0;
  padding:14px;
}
.solution-card > summary {
  align-items:center;
  cursor:pointer;
  display:flex;
  justify-content:space-between;
  list-style:none;
  margin:-4px 0 8px;
  padding:4px 0;
}
.solution-card > summary::-webkit-details-marker { display:none; }
.solution-card > summary::after {
  color:var(--text-secondary);
  content:"−";
  font-family:var(--pv8-mono);
  font-size:16px;
}
.solution-card:not([open]) > summary { margin-bottom:-4px; }
.solution-card:not([open]) > summary::after { content:"+"; }
.solution-card > summary b {
  display:block;
  font-size:17px;
  letter-spacing:-.015em;
  margin-top:2px;
}
.land-source {
  border:0;
  display:flex;
  gap:18px;
  margin:10px 0 6px;
  padding:0;
}
.land-source legend { font-weight:700; margin-bottom:4px; }
.land-objective-step { margin-bottom:12px; }
.land-objective-grid {
  display:grid;
  gap:10px;
  grid-template-columns:repeat(2,minmax(0,1fr));
  margin-top:10px;
}
.land-objective-grid > label {
  background:var(--surface-0);
  border:1px solid var(--pv8-divider);
  color:var(--text-primary);
  cursor:pointer;
  display:block;
  min-height:112px;
  padding:15px 16px;
  text-align:left;
}
.land-objective-grid > label:hover { border-color:var(--series-1); }
.land-objective-grid > label.active {
  border-color:var(--series-1);
  box-shadow:inset 4px 0 0 var(--series-1);
}
.land-objective-grid input { position:absolute; opacity:0; pointer-events:none; }
.land-objective-grid b { display:block; font-size:17px; margin-bottom:5px; }
.land-objective-grid span { color:var(--text-secondary); display:block; line-height:1.4; }
.pv8-library .module-objective-step { margin-bottom:12px; }
.pv8-library .module-objective-grid {
  display:grid;
  gap:10px;
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin:10px 0 7px;
}
.pv8-library .module-objective-grid > label {
  background:var(--surface-0);
  border:1px solid var(--pv8-divider);
  cursor:pointer;
  display:block;
  min-height:116px;
  padding:15px 16px;
}
.pv8-library .module-objective-grid > label:hover { border-color:var(--series-1); }
.pv8-library .module-objective-grid > label.active {
  border-color:var(--series-1);
  box-shadow:inset 4px 0 0 var(--series-1);
}
.pv8-library .module-objective-grid input { opacity:0; pointer-events:none; position:absolute; }
.pv8-library .module-objective-grid b { display:block; font-size:17px; margin-bottom:5px; }
.pv8-library .module-objective-grid span { color:var(--text-secondary); display:block; line-height:1.4; }
.pv8-library .module-objective-grid.stacked-objective-grid {
  grid-template-columns:1fr;
  max-width:980px;
}
.pv8-library .module-objective-grid.stacked-objective-grid > label {
  min-height:0;
  padding:13px 16px;
}
.pv8-library .rep-coupled-choice {
  align-items:flex-start;
  background:var(--surface-0);
  border:1px solid var(--pv8-divider);
  display:flex;
  gap:9px;
  margin:10px 0 6px;
  max-width:620px;
  padding:12px 14px;
}
.pv8-library .rep-coupled-choice input { margin-top:3px; min-height:0; }
.pv8-library .rep-coupled-choice b { display:block; margin-bottom:2px; }
.pv8-library .rep-coupled-choice span { color:var(--text-secondary); line-height:1.35; }
.pv8-library .unified-module-stage { margin:0; padding:0; }
@media(max-width:900px){.pv8-library .module-objective-grid{grid-template-columns:1fr}}
@media(max-width:720px){.land-objective-grid{grid-template-columns:1fr}}
.land-plot-choices {
  align-items:center;
  background:var(--surface-0);
  border:1px solid var(--pv8-divider);
  display:flex;
  flex-wrap:wrap;
  gap:10px 18px;
  margin:7px 0;
  padding:9px;
}
.land-polygon-tools { margin:7px 0; }
.land-impact-empty,
.land-impact-summary {
  border-left:3px solid var(--pv8-divider);
  margin-top:10px;
  padding:8px 10px;
}
.land-impact-summary { border-color:var(--series-3); }
.pv8-library .land-valuation-dashboard {
  border-top:2px solid var(--text-primary);
  display:grid;
  gap:18px;
  margin-top:24px;
  padding-top:20px;
}
.pv8-library .land-dashboard-head {
  align-items:flex-start;
  display:flex;
  gap:24px;
  justify-content:space-between;
}
.pv8-library .land-dashboard-head h2 { margin:3px 0 6px; }
.pv8-library .land-dashboard-head p { margin:0; max-width:830px; }
.pv8-library .land-value-view {
  display:flex;
  flex:0 0 auto;
}
.pv8-library .land-value-view button {
  background:var(--surface-0);
  border:1px solid var(--pv8-divider);
  color:var(--text-primary);
  cursor:pointer;
  min-height:40px;
  padding:8px 13px;
}
.pv8-library .land-value-view button + button { border-left:0; }
.pv8-library .land-value-view button.active {
  background:var(--series-1);
  color:#fff !important;
}
.pv8-library .land-dashboard-controls {
  border:1px solid var(--pv8-divider);
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.pv8-library .land-dashboard-controls label {
  border-left:1px solid var(--pv8-divider);
  display:grid;
  gap:11px;
  min-width:0;
  padding:16px;
}
.pv8-library .land-dashboard-controls label:first-child { border-left:0; }
.pv8-library .land-dashboard-controls label > span {
  display:grid;
  font-weight:650;
  gap:3px;
}
.pv8-library .land-dashboard-controls output {
  color:var(--series-1);
  font-family:var(--pv8-mono);
  font-size:18px;
}
.pv8-library .land-dashboard-controls input[type="range"] {
  accent-color:var(--series-1);
  cursor:pointer;
  margin:1px 0;
  width:100%;
}
.pv8-library .land-dashboard-controls small {
  color:var(--text-secondary);
  line-height:1.35;
}
.pv8-library .land-valuation-kpis {
  border:1px solid var(--pv8-divider);
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.pv8-library .land-valuation-kpis > div {
  border-left:1px solid var(--pv8-divider);
  display:grid;
  gap:4px;
  padding:15px 16px;
}
.pv8-library .land-valuation-kpis > div:first-child {
  background:color-mix(in srgb,var(--series-3) 7%,#fff);
  border-left:0;
}
.pv8-library .land-valuation-kpis span,
.pv8-library .land-valuation-kpis small { color:var(--text-secondary); }
.pv8-library .land-valuation-kpis b {
  font-family:var(--pv8-mono);
  font-size:23px;
  letter-spacing:-.03em;
}
.pv8-library .land-valuation-grid {
  display:grid;
  gap:28px;
  grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);
}
.pv8-library .land-valuation-grid h3 { margin:0 0 4px; }
.pv8-library .land-valuation-grid p { margin:0 0 12px; }
.pv8-library .land-yield-chart { display:grid; gap:6px; }
.pv8-library .land-yield-chart button {
  align-items:center;
  background:transparent;
  border:0;
  color:var(--text-primary);
  cursor:pointer;
  display:grid;
  gap:10px;
  grid-template-columns:42px minmax(80px,1fr) 104px;
  padding:5px 7px;
  text-align:left;
}
.pv8-library .land-yield-chart button:hover,
.pv8-library .land-yield-chart button.selected {
  background:color-mix(in srgb,var(--series-1) 7%,#fff);
}
.pv8-library .land-yield-chart i {
  background:var(--surface-2);
  display:block;
  height:10px;
  overflow:hidden;
}
.pv8-library .land-yield-chart i b {
  background:var(--series-3);
  display:block;
  height:100%;
}
.pv8-library .land-yield-chart button.selected i b { background:var(--series-1); }
.pv8-library .land-yield-chart strong {
  font-family:var(--pv8-mono);
  text-align:right;
}
.pv8-library .land-selected-case {
  border:1px solid var(--pv8-divider);
  padding:15px;
}
.pv8-library .land-selected-primary {
  border-bottom:1px solid var(--pv8-divider);
  display:grid;
  gap:4px;
  margin-bottom:11px;
  padding-bottom:12px;
}
.pv8-library .land-selected-primary span,
.pv8-library .land-selected-primary small { color:var(--text-secondary); }
.pv8-library .land-selected-primary b {
  font-family:var(--pv8-mono);
  font-size:28px;
  letter-spacing:-.04em;
}
.pv8-library .land-selected-case dl {
  display:grid;
  gap:7px 14px;
  grid-template-columns:1fr auto;
  margin:0;
}
.pv8-library .land-selected-case dt { color:var(--text-secondary); }
.pv8-library .land-selected-case dd {
  font-family:var(--pv8-mono);
  font-weight:650;
  margin:0;
}
.pv8-library .land-selected-case p { font-size:12px; margin:13px 0 0; }
@media(max-width:1000px){
  .pv8-library .land-dashboard-controls,
  .pv8-library .land-valuation-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pv8-library .land-dashboard-controls label:nth-child(3),
  .pv8-library .land-valuation-kpis > div:nth-child(3) { border-left:0; border-top:1px solid var(--pv8-divider); }
  .pv8-library .land-dashboard-controls label:nth-child(4),
  .pv8-library .land-valuation-kpis > div:nth-child(4) { border-top:1px solid var(--pv8-divider); }
}
@media(max-width:720px){
  .pv8-library .land-dashboard-head { display:grid; }
  .pv8-library .land-valuation-grid { grid-template-columns:1fr; }
}
@media(max-width:560px){
  .pv8-library .land-dashboard-controls,
  .pv8-library .land-valuation-kpis { grid-template-columns:1fr; }
  .pv8-library .land-dashboard-controls label,
  .pv8-library .land-valuation-kpis > div { border-left:0; border-top:1px solid var(--pv8-divider); }
  .pv8-library .land-dashboard-controls label:first-child,
  .pv8-library .land-valuation-kpis > div:first-child { border-top:0; }
}
.solution-card h3 {
  font-size:17px;
  letter-spacing:-.015em;
  margin:2px 0 7px;
}

/* Agrivoltaics: owner decision journey and value dashboard. */
.pv8-library .agri-owner-step { max-width:1040px; }
.pv8-library .agri-owner-step > h3 {
  font-size:20px;
  letter-spacing:-.02em;
  margin:0 0 14px;
}
.pv8-library .agri-choice-grid {
  display:grid;
  gap:8px;
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.pv8-library .agri-choice-grid.compact { grid-template-columns:repeat(2,minmax(0,1fr)); }
.pv8-library .agri-choice {
  align-items:flex-start;
  border:1px solid var(--pv8-divider);
  cursor:pointer;
  display:flex;
  gap:10px;
  min-height:88px;
  padding:14px;
}
.pv8-library .agri-choice:has(input:checked) {
  background:color-mix(in srgb,var(--series-3) 7%,#fff);
  border-color:var(--series-3);
  box-shadow:inset 4px 0 0 var(--series-3);
}
.pv8-library .agri-choice input { margin-top:3px; width:auto; }
.pv8-library .agri-choice b,
.pv8-library .agri-choice small { display:block; }
.pv8-library .agri-choice b { font-size:14px; line-height:1.25; }
.pv8-library .agri-choice small { color:var(--text-secondary); font-size:12px; line-height:1.4; margin-top:5px; }
.pv8-library .ev-sizing-choice {
  display:grid;
  gap:10px;
  grid-template-columns:repeat(2,minmax(0,1fr));
  max-width:920px;
}
.pv8-library .ev-sizing-choice label {
  align-items:flex-start;
  border:1px solid var(--pv8-divider);
  cursor:pointer;
  display:flex;
  gap:10px;
  margin:0;
  min-height:96px;
  padding:16px;
}
.pv8-library .ev-sizing-choice label:has(input:checked) {
  background:color-mix(in srgb,var(--series-3) 7%,#fff);
  border-color:var(--series-3);
  box-shadow:inset 4px 0 0 var(--series-3);
}
.pv8-library .ev-sizing-choice input { margin-top:3px; min-height:0; width:auto; }
.pv8-library .ev-sizing-choice b,
.pv8-library .ev-sizing-choice small { display:block; }
.pv8-library .ev-sizing-choice b { font-size:16px; line-height:1.25; }
.pv8-library .ev-sizing-choice small {
  color:var(--text-secondary);
  font-size:13px;
  line-height:1.45;
  margin-top:6px;
}
.pv8-library .agri-inline-input {
  align-items:center;
  display:flex;
  gap:8px;
  margin-top:14px;
  max-width:520px;
}
.pv8-library .agri-inline-input input { margin-left:auto; width:92px; }
.pv8-library .agri-form-grid {
  display:grid;
  gap:14px 18px;
  grid-template-columns:repeat(2,minmax(230px,1fr));
  max-width:920px;
}
.pv8-library .agri-form-grid label { display:flex; flex-direction:column; gap:6px; }
.pv8-library .agri-form-grid input,
.pv8-library .agri-form-grid select { margin:0; width:100%; }
.pv8-library .agri-form-grid small { color:var(--text-muted); font-size:11px; line-height:1.35; }
.pv8-library .agri-decision-head {
  align-items:flex-start;
  border-left:6px solid var(--series-3);
  display:flex;
  gap:22px;
  justify-content:space-between;
  margin:0 0 14px;
  padding:8px 14px;
}
.pv8-library .agri-decision-head .eyebrow {
  color:var(--series-3);
  display:block;
  font-size:11px;
  font-weight:800;
  font-family:var(--pv8-sans);
  letter-spacing:.01em;
  text-transform:uppercase;
}
.pv8-library .agri-decision-head h2 { font-size:28px; margin:3px 0 5px; }
.pv8-library .agri-decision-head p { color:var(--text-secondary); margin:0; max-width:850px; }
.pv8-library .agri-route-table-wrap { overflow-x:auto; }
.pv8-library .agri-route-table { table-layout:fixed; min-width:1100px; }
.pv8-library .agri-route-table .agri-rank { width:48px; }
.pv8-library .agri-route-table .agri-route { width:27%; }
.pv8-library .agri-route-table .agri-value { width:16%; }
.pv8-library .agri-route-table .agri-pv { width:13%; }
.pv8-library .agri-route-table .agri-capex { width:16%; }
.pv8-library .agri-route-table .agri-next { width:auto; }
.pv8-library .agri-route-table td { vertical-align:top; }
.pv8-library .agri-priority { background:#e5e7eb; height:5px; margin:8px 0; width:100%; }
.pv8-library .agri-priority i { background:var(--series-3); display:block; height:100%; }
.pv8-library .agri-gate-note { color:#9f2d1b; font-size:11px; margin-top:5px; }
.pv8-library .agri-decision-grid {
  display:grid;
  gap:18px;
  grid-template-columns:repeat(2,minmax(0,1fr));
  margin:18px 0;
}
.pv8-library .agri-decision-grid > section { border-top:3px solid var(--pv8-divider); padding-top:10px; }
.pv8-library .agri-shortlist-row { align-items:center; border-bottom:1px solid var(--pv8-divider); display:flex; justify-content:space-between; padding:9px 0; }
.pv8-library .agri-shortlist-row span { color:var(--text-secondary); font-size:12px; }
.pv8-library .agri-action-grid {
  display:grid;
  gap:8px;
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.pv8-library .agri-action-grid details { border:1px solid var(--pv8-divider); padding:12px 14px; }
.pv8-library .agri-action-grid summary { cursor:pointer; font-weight:750; }
.pv8-library .agri-action-grid li { margin-bottom:5px; }

@media (max-width:900px) {
  .pv8-library .agri-choice-grid,
  .pv8-library .agri-choice-grid.compact,
  .pv8-library .agri-form-grid,
  .pv8-library .agri-decision-grid,
  .pv8-library .agri-action-grid { grid-template-columns:1fr; }
  .pv8-library .agri-decision-head { flex-direction:column; }
}
.solution-kicker {
  color:var(--series-1);
  font-family:var(--pv8-caption);
  font-size:10px;
  font-weight:650;
  letter-spacing:.01em;
  text-transform:uppercase;
}
.module-journey-nav {
  border-bottom:1px solid var(--pv8-divider);
  border-top:1px solid var(--pv8-divider);
  margin:12px 0 18px;
  padding:12px 0;
}
.module-draft-status {
  align-items:center;
  box-sizing:border-box;
  display:flex;
  gap:8px;
  min-height:36px;
}
.module-journey-progress {
  display:grid;
  gap:0;
  grid-template-columns:repeat(var(--journey-count,4),minmax(110px,1fr));
  overflow-x:auto;
}
.module-journey-progress button {
  background:#fff;
  border:1px solid var(--pv8-divider);
  border-left:0;
  color:var(--text-secondary);
  cursor:pointer;
  min-height:58px;
  padding:8px 10px;
  text-align:left;
}
.module-journey-progress button:first-child { border-left:1px solid var(--pv8-divider); }
.module-journey-progress button:disabled { cursor:default; opacity:.52; }
.module-journey-progress button[data-state="current"] {
  background:var(--pv8-accent-soft);
  box-shadow:inset 0 -3px 0 var(--series-1);
  color:var(--text-primary);
  opacity:1;
}
.module-journey-progress button[data-state="complete"],
.module-journey-progress button[data-state="skipped"] { opacity:1; }
.module-journey-progress button[data-state="blocked"] {
  background:#fff6f2;
  border-color:#d9a998;
  opacity:1;
}
.module-journey-progress button[data-readiness="blocked"] .journey-state {
  color:var(--serious);
}
.module-journey-progress b { display:block; font-size:12px; line-height:1.25; }
.module-journey-progress .journey-state {
  display:block;
  font:650 10px/1.2 var(--pv8-caption);
  letter-spacing:.035em;
  margin-bottom:3px;
  text-transform:uppercase;
}
.module-journey-step-head { margin:0 0 14px; max-width:820px; }
.module-journey-step-head h3 { font-size:20px; letter-spacing:-.02em; margin:0 0 4px; }
.module-journey-step-head p { color:var(--text-secondary); font-size:13px; }
.module-journey-readiness-overview {
  box-sizing:border-box;
  margin-top:9px;
  min-height:40px;
  overflow:hidden;
}
.journey-readiness-banner {
  align-items:baseline;
  border-left:4px solid var(--pv8-divider);
  display:flex;
  flex-wrap:wrap;
  gap:5px 12px;
  padding:6px 10px;
}
.journey-readiness-banner b { font-size:12px; }
.journey-readiness-banner span { color:var(--text-secondary); font-size:11px; }
.journey-readiness-banner.blocked { background:#fff6f2; border-color:var(--serious); }
.journey-readiness-banner.blocked b { color:var(--serious); }
.journey-readiness-banner.upcoming { background:#f7f9fa; border-color:var(--series-1); }
.journey-readiness-banner.upcoming b { color:var(--series-1); }
.journey-readiness-banner.ready { background:#f2faf5; border-color:var(--good); }
.journey-readiness-banner.ready b { color:var(--good); }
.journey-readiness-banner button {
  background:#fff;
  border:1px solid var(--pv8-divider);
  color:var(--series-1);
  cursor:pointer;
  font-size:10px;
  margin-left:auto;
  padding:3px 7px;
}
.journey-step-readiness {
  border:1px solid var(--pv8-divider);
  margin-top:10px;
  padding:9px 10px;
}
.journey-step-readiness.blocked { background:#fff6f2; border-color:#d9a998; }
.journey-step-readiness.ready { background:#f7fbf8; border-color:#a9cfb5; }
.journey-step-readiness.neutral { background:#fafafa; color:var(--text-secondary); }
.journey-step-readiness > b,.journey-step-readiness > span { display:block; font-size:11px; }
.journey-step-readiness ul,.journey-review-readiness ul,.journey-review-improvements ul {
  list-style:none;
  margin:7px 0 0;
  padding:0;
}
.journey-step-readiness li,.journey-review-readiness li,.journey-review-improvements li {
  align-items:start;
  display:grid;
  gap:4px 8px;
  grid-template-columns:18px minmax(0,1fr) auto;
  margin:5px 0;
}
.journey-step-readiness li > span,.journey-review-readiness li > span,.journey-review-improvements li > span {
  font:700 11px var(--pv8-mono);
}
.journey-step-readiness li.met > span,.journey-review-readiness li.met > span { color:var(--good); }
.journey-step-readiness li.required > span,.journey-review-readiness li.required > span { color:var(--serious); }
.journey-step-readiness li.recommended > span,.journey-review-readiness li.recommended > span,
.journey-review-improvements li.recommended > span { color:var(--warning); }
.journey-step-readiness li b,.journey-review-readiness li b,.journey-review-improvements li b { font-size:11px; }
.journey-step-readiness li small,.journey-review-readiness li small,.journey-review-improvements li small {
  color:var(--text-secondary);
  display:block;
  font-size:11px;
  font-weight:400;
  margin-top:2px;
}
.journey-step-readiness li button,.journey-review-readiness li button,.journey-review-improvements li button {
  background:#fff;
  border:1px solid var(--pv8-divider);
  color:var(--series-1);
  cursor:pointer;
  font-size:10px;
  padding:3px 6px;
}
.module-journey-actions {
  border-top:1px solid var(--pv8-divider);
  display:block;
  margin-top:18px;
  padding-top:14px;
}
.module-journey-button-row {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  gap:10px clamp(18px,3vw,44px);
  justify-content:space-between;
}
.module-journey-actions .journey-back { margin-right:0; }
.module-journey-button-row > button {
  align-self:stretch;
  min-height:44px;
}
.module-journey-actions .journey-rerun-note {
  display:block;
  font-size:11px;
  margin:7px 0 0;
}
.module-journey-actions .journey-submit-status,
.grid-capacity-loading .journey-submit-status,
.module-run-standalone-status {
  align-items:center;
  background:#fff6f2;
  border-left:4px solid var(--serious);
  box-sizing:border-box;
  color:var(--text-primary);
  display:grid;
  font-size:12px;
  gap:12px;
  grid-template-columns:28px minmax(0,1fr) auto;
  line-height:1.4;
  margin-top:12px;
  min-height:64px;
  padding:10px 12px;
  width:100%;
}
.module-journey-actions .journey-submit-status[hidden] { display:none; }
.journey-submit-status .journey-run-copy {
  display:grid;
  gap:2px;
  min-width:0;
}
.journey-submit-status > .pv8-progress-layout {
  grid-column:1 / -1;
  min-width:0;
}
.journey-submit-status .journey-run-copy b { font-size:12px; }
.journey-submit-status .journey-run-copy span { color:var(--text-secondary); }
.journey-submit-status .spin8 {
  color:var(--series-1);
  font-size:24px;
  line-height:1;
  margin:0;
}
.journey-submit-status .journey-run-cancel {
  margin:0!important;
  white-space:nowrap;
}
.journey-submit-status:not(.running) { grid-template-columns:minmax(0,1fr); }
.module-journey-actions .journey-submit-status.running,
.grid-capacity-loading .journey-submit-status.running,
.module-run-standalone-status.running {
  background:color-mix(in srgb, var(--series-1) 7%, #fff);
  border-left:4px solid var(--series-1);
}
.grid-capacity-loading .journey-submit-status {
  max-width:620px;
}
.journey-submit-status[hidden],
.module-run-standalone-status[hidden],
.grid-capacity-loading .journey-submit-status[hidden] { display:none; }
.module-journey-actions .journey-primary {
  background:var(--series-3);
  border-color:var(--series-3);
  color:#fff;
  font-weight:700;
  min-height:38px;
  padding:7px 16px;
}
.module-journey-actions .journey-primary:disabled {
  background:#ddd7d3;
  border-color:#ccc4bf;
  color:#6d6865;
  cursor:not-allowed;
}
.module-run-control-running,
.module-journey-actions .journey-primary.module-run-control-running:disabled {
  background:var(--series-1)!important;
  border-color:var(--series-1)!important;
  color:#fff!important;
  cursor:progress!important;
  opacity:1!important;
}
@media(max-width:560px) {
  .module-journey-actions .journey-submit-status,
  .grid-capacity-loading .journey-submit-status,
  .module-run-standalone-status {
    gap:8px;
    grid-template-columns:24px minmax(0,1fr);
  }
  .journey-submit-status:not(.running) { grid-template-columns:minmax(0,1fr); }
  .journey-submit-status .journey-run-cancel { grid-column:2; justify-self:start; }
}
.module-journey-review {
  background:#fff;
  border:1px solid var(--pv8-divider);
  padding:14px;
}
.module-journey-review h3 { font-size:20px; margin-bottom:4px; }
.module-journey-review > p { color:var(--text-secondary); margin-bottom:12px; }
.journey-review-readiness { border-left:4px solid var(--good); margin-bottom:10px; padding:9px 11px; }
.journey-review-readiness.blocked { background:#fff6f2; border-color:var(--serious); }
.journey-review-readiness.ready { background:#f2faf5; }
.journey-review-readiness h4 { font-size:13px; margin:0; }
.journey-review-readiness p { color:var(--text-secondary); font-size:12px; margin:5px 0 0; }
.journey-review-improvements { border:1px solid var(--pv8-divider); margin-bottom:12px; padding:8px 10px; }
.journey-review-improvements summary { cursor:pointer; font-size:12px; font-weight:700; }
.journey-review-section { border-top:1px solid var(--pv8-divider); padding:10px 0; }
.journey-review-section:first-of-type { border-top:0; }
.journey-review-section h4 { font-size:13px; margin-bottom:6px; }
.journey-review-section dl {
  display:grid;
  gap:5px 18px;
  grid-template-columns:minmax(170px,260px) minmax(0,1fr);
}
.journey-review-section dt { color:var(--text-secondary); font-size:12px; }
.journey-review-section dd { font:500 12px var(--pv8-mono); margin:0; overflow-wrap:anywhere; }
.journey-review-empty { color:var(--text-muted); font-size:12px; }
.guided-journey-active .journey-native-nav,
.guided-journey-active .journey-native-action { display:none !important; }
.module-journey-draft-note { color:var(--text-muted); font-size:11px; margin-right:auto; }
.pv8-library .recycling-edit-inputs { margin-left:auto; }
.pv8-library .recycling-layer-intro {
  border-left:4px solid var(--series-1);
  margin:14px 0;
  max-width:980px;
  padding:2px 0 2px 14px;
}
.pv8-library .recycling-layer-intro h2 { margin:3px 0 4px; }
.pv8-library .recycling-layer-intro p { color:var(--text-secondary); margin:0; }
.pv8-library #recyclingRouteSummary .metric small,
.pv8-library #recyclingEvidenceResults .metric small {
  color:var(--text-secondary);
  display:block;
  font-size:11px;
  margin-top:4px;
}
.pv8-library #recyclingEvidenceResults h3 { font-size:16px; margin:18px 0 7px; }
.pv8-library .recycling-evidence-table td:nth-child(2) {
  font-family:var(--pv8-mono);
  white-space:nowrap;
  width:1%;
}
.pv8-library .recycling-next-actions { margin:0 0 14px 20px; }
.pv8-library .recycling-next-actions li { margin:5px 0; }
.pv8-library .recycling-assumptions {
  border-bottom:1px solid var(--pv8-divider);
  border-top:1px solid var(--pv8-divider);
  margin:16px 0;
  padding:10px 0;
}
.pv8-library .recycling-assumptions summary { cursor:pointer; font-weight:700; }
.pv8-library .recycling-assumptions ul { color:var(--text-secondary); margin:10px 0 0 18px; }
.pv8-library .module-assumptions {
  background:#fafafa;
  border:1px solid var(--pv8-divider);
  margin:16px 0;
}
.pv8-library .module-assumptions > summary {
  align-items:center;
  cursor:pointer;
  display:grid;
  gap:8px 12px;
  grid-template-columns:minmax(0,1fr) auto auto;
  list-style:none;
  padding:11px 13px;
}
.pv8-library .module-assumptions > summary::-webkit-details-marker { display:none; }
.pv8-library .module-assumptions > summary span { min-width:0; }
.pv8-library .module-assumptions > summary b { display:block; font-size:13px; }
.pv8-library .module-assumptions > summary small {
  color:var(--text-muted);
  display:block;
  font-size:10px;
  font-weight:400;
  margin-top:1px;
}
.pv8-library .module-assumptions > summary em {
  background:#eceae6;
  border-radius:999px;
  color:var(--text-secondary);
  font:600 10px var(--pv8-mono);
  min-width:24px;
  padding:3px 7px;
  text-align:center;
}
.pv8-library .module-assumptions > summary::after {
  color:var(--series-1);
  content:"Show assumptions +";
  font:600 10px var(--pv8-mono);
  white-space:nowrap;
}
.pv8-library .module-assumptions[open] > summary::after { content:"Hide assumptions −"; }
.pv8-library .module-assumptions[open] > summary {
  border-bottom:1px solid var(--pv8-divider);
}
.pv8-library .module-assumptions-body { padding:10px 14px 12px; }
.pv8-library .wind-wtg-parcel {
  margin-top:7px;
  padding-top:6px;
  border-top:1px solid var(--pv8-divider);
  min-width:150px;
  line-height:1.35;
}
.pv8-library .module-assumptions-body ul {
  color:var(--text-secondary);
  margin:0 0 0 18px;
}
.pv8-library .module-assumptions-body li { margin:5px 0; }
@media (max-width:640px) {
  .pv8-library .module-assumptions > summary { grid-template-columns:minmax(0,1fr) auto; }
  .pv8-library .module-assumptions > summary::after { grid-column:1/-1; }
}
.pv8-library .direct-wire-known-grid {
  display:grid;
  gap:10px 14px;
  grid-template-columns:repeat(3,minmax(170px,1fr));
  margin-bottom:8px;
  max-width:980px;
}
.pv8-library .direct-wire-known-grid label { display:flex; flex-direction:column; gap:4px; }
.pv8-library .direct-wire-known-grid input { width:100%; }
.pv8-library .direct-wire-result-tabs {
  align-items:center;
  border-bottom:1px solid var(--pv8-divider);
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin:10px 0;
  padding-bottom:8px;
}
.pv8-library .direct-wire-result-tabs > span { flex:1; }
.solution-tabs { display:flex; border:1px solid var(--pv8-divider); }
.solution-tabs button {
  background:#fff;
  border:0;
  border-left:1px solid var(--pv8-divider);
  color:var(--text-primary);
  cursor:pointer;
  flex:1;
  font-weight:600;
  padding:10px 12px;
}
.solution-tabs button:first-child { border-left:0; }
.solution-tabs button.active { background:var(--series-1); color:#fff !important; }

@media(max-width:760px) {
  .module-journey-progress { grid-template-columns:repeat(var(--journey-count,4),minmax(145px,1fr)); }
  .journey-review-section dl { grid-template-columns:1fr; gap:2px; }
  .journey-review-section dd { margin-bottom:6px; }
  .module-journey-actions { align-items:stretch; gap:8px 10px; }
  .module-journey-actions > button { flex:1 1 145px; }
  .module-journey-actions .journey-back { margin-right:0; }
  .pv8-library .recycling-edit-inputs { margin-left:0; }
  .pv8-library .direct-wire-known-grid { grid-template-columns:1fr; }
  .pv8-library .direct-wire-result-tabs > span { display:none; }
}
.customer-candidate { border-top:1px solid var(--pv8-divider); padding-top:12px; }
.candidate-source-choice { display:flex; flex-wrap:wrap; gap:18px; margin:10px 0 14px; }
.candidate-source-choice label { align-items:center; display:inline-flex !important; gap:6px; margin:0 !important; }
.candidate-source-choice input { min-height:0; }
[hidden] { display:none !important; }
.customer-upload-row,
.customer-fields { align-items:end; display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.customer-upload-row label,
.customer-fields label { display:flex; flex-direction:column; gap:3px; }
.layer-bar { display:flex; flex-wrap:wrap; gap:12px; padding:8px 0; }
.layer-bar label { align-items:center; display:inline-flex !important; gap:5px; margin:0 !important; }
.libbtn.primary { background:var(--series-1); border-color:var(--series-1); color:#fff; }
.pv8-library #result > .muted:first-child {
  border:1px dashed var(--pv8-divider);
  display:block;
  padding:18px;
}

/* The create and data-room pages use the same typography, colour and geometry. */
.pv8-form-page,
.pv8-profile {
  background:#fff;
  color:var(--text-primary);
  font-family:var(--pv8-sans);
}
.pv8-form-page,
.pv8-profile { margin:0; max-width:none; padding:0; }
.pv8-form-page > form,
.pv8-profile > section,
.pv8-profile > .card,
.pv8-profile > .profile-nav {
  margin-left:auto;
  margin-right:auto;
  max-width:980px;
}
.pv8-form-page > form,
.pv8-profile > section,
.pv8-profile > .card { padding-left:20px; padding-right:20px; }
.pv8-form-page > header,
.pv8-profile > header {
  align-items:center;
  border-bottom:2px solid var(--pv8-divider);
  display:flex;
  gap:24px;
  margin-bottom:18px;
  min-height:64px;
  padding:12px 22px;
}
.pv8-form-page .card,
.pv8-profile .card {
  background:var(--surface-1);
  border:1px solid var(--pv8-divider);
  border-radius:0;
}
.pv8-form-page input,
.pv8-form-page select,
.pv8-profile input,
.pv8-profile select {
  background:#fff;
  border-color:var(--pv8-divider);
  border-radius:0;
}
.pv8-form-page button,
.pv8-profile button { background:var(--series-1); border-radius:0; }
.pv8-profile #drop { border-radius:0; }
.pv8-profile .bar,
.pv8-profile .pill { border-radius:0; }
.pv8-profile .profile-nav {
  border-bottom:1px solid var(--pv8-divider);
  display:flex;
  gap:0;
  margin-bottom:16px;
  position:sticky;
  top:0;
  z-index:10;
}
.pv8-profile .profile-nav a {
  background:#fff;
  border:1px solid var(--pv8-divider);
  border-bottom:0;
  color:var(--text-primary);
  padding:8px 12px;
  text-decoration:none;
}
.pv8-profile .profile-nav a + a { border-left:0; }
.pv8-profile .profile-nav a:hover { background:var(--pv8-accent-soft); }
.document-actions { display:flex; gap:8px; justify-content:flex-end; }
.document-actions a { font-size:11px; }
.profile-title-row {
  align-items:center;
  display:flex;
  justify-content:space-between;
  margin-bottom:14px;
  padding:2px 0;
}
.profile-title-row h1 { font-size:22px; margin-top:3px; }
.pv8-profile .danger-action {
  background:#fff;
  border:1px solid var(--serious);
  color:var(--serious);
  margin:0;
}
.pv8-profile .danger-action:hover { background:var(--pv8-accent-soft); }
.profile-metrics {
  border:1px solid var(--pv8-divider);
  display:grid;
  grid-template-columns:repeat(3,1fr);
  margin-bottom:16px;
}
.profile-metric { border-left:1px solid var(--pv8-divider); padding:12px; }
.profile-metric:nth-child(3n+1) { border-left:0; }
.profile-metric:nth-child(n+4) { border-top:1px solid var(--pv8-divider); }
.profile-metric span {
  color:var(--text-secondary);
  display:block;
  font-size:9px;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.profile-metric b { font-family:var(--pv8-mono); font-size:18px; }
.pv8-profile section[id] { scroll-margin-top:52px; }

@media (max-width:1100px) {
  .asset-summary { grid-template-columns:repeat(3,1fr); }
  .summary-cell:nth-child(4) { border-left:0; border-top:1px solid var(--pv8-divider); }
  .summary-cell:nth-child(n+4) { border-top:1px solid var(--pv8-divider); }
  .pv8-library .layout { grid-template-columns:240px minmax(0,1fr); }
  .pv8-library .layout.assets-collapsed { grid-template-columns:42px minmax(0,1fr); }
  .pv8-library .decision-journey { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pv8-library .decision-step:nth-child(3) { border-left:1px solid var(--pv8-divider); }
}

@media (max-width:760px) {
  .pv8-library > header { align-items:flex-start; flex-wrap:wrap; gap:10px 16px; }
  .pv8-tagline { display:none; }
  .pv8-nav { margin-left:0; order:3; width:100%; }
  .pv8-library .layout { grid-template-columns:1fr; }
  .pv8-library .layout.assets-collapsed { grid-template-columns:42px minmax(0,1fr); }
  .pv8-library .layout > div:first-child { border-bottom:2px solid var(--pv8-divider); border-right:0; }
  .pv8-library .workspace-head { align-items:flex-start; flex-direction:column; }
  .pv8-library #dataroom { margin-left:0 !important; text-align:left; }
  .pv8-library .module-workspace { padding:16px 14px 30px; }
  .pv8-library .decision-journey { grid-template-columns:1fr; }
  .pv8-library .decision-step { border-left:1px solid var(--pv8-divider); min-height:180px; }
  .profile-metrics { grid-template-columns:repeat(2,1fr); }
  .profile-metric:nth-child(3n+1) { border-left:1px solid var(--pv8-divider); }
  .profile-metric:nth-child(2n+1) { border-left:0; }
  .profile-metric:nth-child(n+3) { border-top:1px solid var(--pv8-divider); }
  .pv8-library .mdc-dashboard-head { align-items:flex-start; flex-direction:column; }
  .pv8-library .mdc-energy-controls,
  .pv8-library .mdc-energy-visuals,
  .pv8-library .ev-energy-controls,
  .pv8-library .ev-energy-visuals,
  .pv8-library .ev-reconciliation-grid,
  .pv8-library .ev-capex-line-grid,
  .pv8-library .ev-capex-provenance { grid-template-columns:1fr; }
  .pv8-library .mdc-cost-controls {
    border-left:0;
    border-top:1px solid var(--pv8-divider);
    padding-left:0;
    padding-top:14px;
  }
  .pv8-library .mdc-energy-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pv8-library .ev-cost-controls {
    border-left:0;
    border-top:1px solid var(--pv8-divider);
    padding-left:0;
    padding-top:14px;
  }
  .pv8-library .ev-energy-input-grid { grid-template-columns:repeat(2,minmax(180px,1fr)); }
  .pv8-library .ev-finance-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pv8-library .mdc-energy-kpis article:nth-child(3) {
    border-left:0;
  }
  .pv8-library .mdc-energy-kpis article:nth-child(n+3) {
    border-top:1px solid var(--pv8-divider);
  }
}

@media (max-width:520px) {
  .asset-summary { grid-template-columns:repeat(2,1fr); }
  .summary-cell:nth-child(3),
  .summary-cell:nth-child(5) { border-left:0; }
  .summary-cell:nth-child(n+3) { border-top:1px solid var(--pv8-divider); }
  .pv8-library .header-action { font-size:11px; }
  .pv8-library .objective-entry-row { flex-direction:column; }
  .pv8-library .objective-entry .libbtn { min-height:42px; }
  .pv8-library .mdc-energy-balance td:first-child {
    min-width:0;
    width:58%;
  }
  .pv8-library .mdc-energy-kpis { grid-template-columns:1fr; }
  .pv8-library .ev-energy-input-grid,
  .pv8-library .ev-cost-controls,
  .pv8-library .ev-finance-kpis { grid-template-columns:1fr; }
  .pv8-library .ev-capex-mode-label,
  .pv8-library .ev-capex-line-grid label,
  .pv8-library .ev-capex-provenance label { align-items:stretch; flex-direction:column; }
  .pv8-library .ev-capex-mode-label select,
  .pv8-library .ev-capex-line-grid input,
  .pv8-library .ev-capex-provenance input,
  .pv8-library .ev-capex-provenance select { margin-left:0; min-width:0; width:100%; }
  .pv8-library .ev-cost-controls h3 { grid-column:auto; }
  .pv8-library .mdc-energy-kpis article,
  .pv8-library .mdc-energy-kpis article:nth-child(3) {
    border-left:0;
    border-top:1px solid var(--pv8-divider);
  }
  .pv8-library .mdc-energy-kpis article:first-child { border-top:0; }
  .pv8-library .mdc-download-recommendation dl { grid-template-columns:1fr; }
  .pv8-library .mdc-download-recommendation dl > div,
  .pv8-library .mdc-download-recommendation dl > div:first-child {
    border-left:0;
    border-top:1px solid var(--pv8-divider);
    padding:8px 0;
  }
  .pv8-library .mdc-download-recommendation dl > div:first-child { border-top:0; }
  .pv8-library .mdc-price-bars { gap:6px; padding-left:0; padding-right:0; }
  .pv8-library .mdc-price-year small { font-size:9px; }
}

@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; transition:none !important; }
}

/* -------------------------------------------------------------------------
   PV8 premium product system — 2026-08-22

   A calmer, decision-grade layer over the existing application semantics.
   The interface deliberately uses one quiet surface language and reserves
   colour for actions, evidence state and financial meaning.

   ==== PV8 DESIGN TOKENS — the runtime source of colour ====================
   The :root block below is the one place a product colour is defined.  The
   contract is written down in tests/fixtures/design_tokens.py and enforced
   by tests/test_design_tokens.py, which fails when a stylesheet grows a new
   hex literal or spells out a value a token already carries.  The density
   audit of 2026-09-19 counted 349 distinct literals against 72 custom
   properties across these three stylesheets; the lint ratchets that number
   down and can never let it rise.  Add a token here; do not add a literal.
   ========================================================================= */
:root {
  --surface-0:#f3f5f6;
  --surface-1:#ffffff;
  --border:#d7dcdf;
  --grid:#e7eaec;
  --text-primary:#141c23;
  --text-secondary:#535c63;
  --text-muted:#697178;
  /* One primary. Every "do the thing" control in the product — landing,
     header, engine run buttons, add-asset — resolves to this token; there is
     no second near-but-not-equal blue and no gold competing with it. */
  --pv8-primary:#11426b;
  --series-1:var(--pv8-primary);
  --series-2:#2d618b;
  --series-3:var(--pv8-primary);
  --series-4:#082e4f;
  --good:#0b4673;
  --warning:#a66d16;
  --serious:#b33a3a;
  --pv8-accent-soft:#eaf0f4;
  --pv8-ink-soft:#edf0f1;
  --pv8-divider:#d7dcdf;
  --pv8-navy:#101e2a;
  --pv8-navy-2:#172a3a;
  --pv8-solar:#d8a035;
  --pv8-overlay-ink:var(--text-primary);
  --pv8-shadow-sm:0 1px 2px rgba(15,30,42,.05),0 5px 16px rgba(15,30,42,.04);
  --pv8-shadow-md:0 2px 4px rgba(15,30,42,.05),0 14px 34px rgba(15,30,42,.08);
  --pv8-radius-sm:6px;
  --pv8-radius:10px;
  --pv8-radius-lg:14px;
}

html { background:var(--surface-0); }
body {
  background:var(--surface-0);
  color:var(--text-primary);
  font-family:var(--pv8-sans);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a { color:var(--series-1); }
a:hover { color:var(--series-4); }
::selection { background:#cddbe5; color:var(--pv8-navy); }

.pv8-brand { align-items:center; gap:16px; }
.pv8-brand :is(h1,.pv8-wordmark) {
  color:var(--pv8-navy);
  font-size:22px;
  font-weight:800;
  letter-spacing:-.045em;
}
.pv8-brand :is(h1,.pv8-wordmark) span { color:var(--series-1); }
.pv8-tagline {
  border-left:1px solid var(--border);
  color:var(--text-muted);
  font-family:var(--pv8-mono);
  font-size:9px;
  font-weight:500;
  letter-spacing:.035em;
}

.pv8-library > header,
.pv8-profile > header,
.pv8-form-page > header,
.pv8-faq > header,
.pv8-terms > header {
  align-items:center;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(18px) saturate(1.15);
  border-bottom:1px solid var(--border);
  box-shadow:0 1px 0 rgba(15,30,42,.02);
  display:flex;
  gap:24px;
  margin:0;
  min-height:68px;
  padding:12px 28px;
  position:relative;
  z-index:40;
}
.pv8-nav { gap:6px; }
.pv8-nav a {
  border-radius:6px;
  color:var(--text-secondary);
  font-size:12px;
  font-weight:600;
  padding:7px 9px;
}
.pv8-nav a:hover { background:var(--pv8-accent-soft); color:var(--series-4); }
.pv8-nav a[aria-current="page"] { background:var(--pv8-accent-soft); color:var(--series-1); }
.header-action.secondary { color:var(--text-muted) !important; }

/* Paid-product actions: one primary action, quiet secondary actions. */
.pv8-button {
  align-items:center;
  border:1px solid transparent;
  border-radius:7px;
  display:inline-flex;
  font-size:12px;
  font-weight:700;
  justify-content:center;
  min-height:38px;
  padding:9px 14px;
  text-decoration:none;
  transition:background .16s ease,border-color .16s ease,transform .16s ease;
}
.pv8-button:hover { transform:translateY(-1px); }
.pv8-button.primary { background:var(--series-1); color:#fff; box-shadow:0 5px 14px rgba(17,66,107,.16); }
.pv8-button.primary:hover { background:var(--series-4); color:#fff; }
.pv8-button.secondary { background:#fff; border-color:var(--border); color:var(--text-primary); }
.pv8-button.secondary:hover { background:var(--surface-0); border-color:#b7c0c5; color:var(--text-primary); }
.pv8-button.text { background:transparent; border-color:transparent; color:var(--series-1); }
.pv8-button.text:hover { background:var(--pv8-accent-soft); color:var(--series-4); }

/* First visit: lead with the owner's outcome, then keep orientation optional. */
.first-visit-welcome {
  background:#f4f6f7;
  border-radius:var(--pv8-radius-lg);
  box-shadow:var(--pv8-shadow-md);
  display:grid;
  grid-template-columns:minmax(0,1.45fr) minmax(270px,.8fr);
  min-height:390px;
  overflow:hidden;
}
.first-visit-copy {
  background:var(--pv8-navy);
  color:#fff;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:clamp(30px,3.5vw,46px);
}
.first-visit-copy .eyebrow { color:#8db4d1; }
.pv8-library .first-visit-copy h2 {
  color:#fff !important;
  font-size:clamp(29px,3.25vw,42px) !important;
  font-weight:650 !important;
  letter-spacing:-.045em !important;
  line-height:1.04;
  margin:13px 0 16px;
  max-width:680px;
  text-transform:none !important;
}
.first-visit-copy > p { color:#d4dbe0; font-size:14px; line-height:1.58; max-width:660px; }
.first-visit-actions { align-items:center; display:flex; flex-wrap:wrap; gap:9px; margin-top:20px; }
.first-visit-copy .pv8-button.secondary { background:transparent; border-color:#6e808d; color:#fff; }
.first-visit-copy .pv8-button.secondary:hover { background:rgba(255,255,255,.1); border-color:#aab7c0; }
.first-visit-copy .pv8-button.text { color:#a9c3d6; }
.first-visit-copy .pv8-button.text:hover { background:rgba(255,255,255,.08); color:#fff; }
.first-visit-resume-note { border-left:2px solid #8db4d1; font-size:12px !important; margin-top:18px; padding-left:11px; }
.first-visit-prep { align-self:center; padding:clamp(28px,4vw,48px); }
.first-visit-prep ul { list-style:none; margin:13px 0 22px; }
.first-visit-prep li { border-bottom:1px solid #dce1e4; display:grid; gap:3px; padding:13px 0; }
.first-visit-prep li b { color:var(--pv8-navy); font-size:13px; }
.first-visit-prep li span { color:var(--text-muted); font-size:12px; }
.first-visit-prep > p { color:var(--text-secondary); font-size:12px; line-height:1.55; }

.first-visit-nudge {
  background:#fff;
  border:1px solid #d5dbdf;
  border-radius:var(--pv8-radius);
  bottom:84px;
  box-shadow:var(--pv8-shadow-md);
  display:grid;
  gap:7px;
  max-width:330px;
  padding:18px 19px;
  position:fixed;
  right:20px;
  z-index:1050;
}
.first-visit-nudge > b { color:var(--pv8-navy); font-size:14px; padding-right:18px; }
.first-visit-nudge > span:not(.eyebrow) { color:var(--text-muted); font-size:12px; }
.first-visit-nudge > div { display:flex; gap:6px; margin-top:5px; }
.first-visit-nudge-close,
.first-visit-tour-close {
  background:transparent !important;
  border:0 !important;
  color:var(--text-muted) !important;
  cursor:pointer;
  font-size:20px !important;
  line-height:1;
  padding:4px !important;
  position:absolute;
  right:10px;
  top:8px;
}
.pv8-spotlight-tour { inset:0; pointer-events:none; position:fixed; z-index:2100; }
.pv8-spotlight-shade {
  backdrop-filter:blur(2px) saturate(.55);
  -webkit-backdrop-filter:blur(2px) saturate(.55);
  background:rgba(20,26,31,.58);
  pointer-events:none;
  position:fixed;
}
.pv8-spotlight-ring {
  border:3px solid #3291d3;
  border-radius:12px;
  box-shadow:0 0 0 2px rgba(255,255,255,.9),0 9px 36px rgba(0,0,0,.3);
  pointer-events:none;
  position:fixed;
  transition:left .18s ease,top .18s ease,width .18s ease,height .18s ease;
}
.pv8-spotlight-card {
  background:var(--surface-1,#fff);
  border:1px solid color-mix(in srgb,var(--series-1) 44%,var(--border));
  border-radius:14px;
  box-shadow:0 22px 68px rgba(8,20,30,.32);
  color:var(--text-primary);
  max-width:calc(100vw - 24px);
  padding:20px 21px 17px;
  pointer-events:auto;
  position:fixed;
}
.pv8-spotlight-progress { color:var(--series-1); font:700 10px/1.2 var(--pv8-caption); letter-spacing:.07em; }
.pv8-library .pv8-spotlight-card h2 { color:var(--pv8-navy); font-size:21px; letter-spacing:-.025em; margin:8px 25px 7px 0; }
.pv8-spotlight-card > p { color:var(--text-secondary); font-size:13px; line-height:1.52; margin:0; }
.pv8-spotlight-close { background:transparent; border:0; color:var(--text-muted); cursor:pointer; font-size:22px; line-height:1; padding:6px; position:absolute; right:9px; top:8px; }
.pv8-spotlight-actions { align-items:center; display:flex; gap:12px; justify-content:space-between; margin-top:17px; }
.pv8-spotlight-actions > span { display:flex; gap:7px; }
.pv8-tour-active .pv8-getting-started,.pv8-tour-active .pv8-save-state { visibility:hidden; }
@media (prefers-reduced-motion:reduce) { .pv8-spotlight-ring { transition:none; } }
@media (max-width:520px) {
  .pv8-spotlight-card { padding:17px 16px 14px; }
  .pv8-library .pv8-spotlight-card h2 { font-size:18px; }
  .pv8-spotlight-actions { align-items:stretch; flex-direction:column-reverse; }
  .pv8-spotlight-actions > span { display:grid; grid-template-columns:1fr 1fr; }
}
.creation-handoff-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:15px; }
.creation-handoff-note { background:#f1f4f6; border-left:3px solid var(--series-1); color:var(--text-secondary); font-size:12px; margin-top:14px; padding:10px 12px; }

.expert-access-bar {
  align-items:center;
  background:#f2f5f7;
  border-bottom:1px solid #d5dce1;
  color:var(--text-secondary);
  display:flex;
  font-size:12px;
  gap:24px;
  justify-content:space-between;
  min-height:44px;
  padding:8px 22px;
}
.expert-access-bar > div { align-items:baseline; display:flex; gap:10px; }
.expert-access-bar > div b { color:var(--pv8-navy); font-size:13px; white-space:nowrap; }
.expert-access-bar nav { align-items:center; display:flex; flex-wrap:wrap; gap:6px; }
.expert-access-bar nav a {
  border:1px solid #c7d0d6;
  border-radius:6px;
  color:var(--series-1);
  font-weight:650;
  padding:5px 9px;
  text-decoration:none;
  white-space:nowrap;
}
.expert-access-bar nav a:hover { background:#fff; border-color:#9eb1bd; }
.expert-access-bar nav a span { color:var(--text-muted); font-weight:500; }
.expert-first-visit { margin-bottom:24px; }
.reviewer-brief-card {
  background:#fff;
  border-top:4px solid var(--series-1);
  border-radius:var(--pv8-radius);
  box-shadow:var(--pv8-shadow-sm);
  margin:0 auto;
  max-width:820px;
  padding:24px 26px;
}
.expert-first-visit + .reviewer-brief-card { margin-top:24px; }
.reviewer-brief-card:focus { outline:3px solid rgba(17,66,107,.22); outline-offset:3px; }
.pv8-library .reviewer-brief-card h2 {
  color:var(--pv8-navy) !important;
  font-size:24px !important;
  letter-spacing:-.03em !important;
  margin:7px 0 4px !important;
  text-transform:none !important;
}

@media(max-width:800px){
  .first-visit-welcome { grid-template-columns:1fr; }
  .first-visit-copy { padding:34px 26px; }
  .first-visit-prep { padding:28px 26px; }
  .first-visit-nudge { bottom:78px; left:14px; max-width:none; right:14px; }
  .expert-access-bar { align-items:flex-start; flex-direction:column; gap:7px; padding:9px 14px; }
  .expert-access-bar > div { align-items:flex-start; flex-direction:column; gap:2px; }
  .expert-access-bar nav { width:100%; }
  .reviewer-brief-card { padding:20px 18px; }
}

/* Product workspace shell. */
.pv8-library { background:var(--surface-0); }
.pv8-library .layout { grid-template-columns:292px minmax(0,1fr); min-height:calc(100vh - 68px); }
.pv8-library .layout.assets-collapsed { grid-template-columns:52px minmax(0,1fr); }
.pv8-library .layout > div:first-child {
  background:#f8f9fa;
  border-right:1px solid var(--border);
}
.pv8-library .navigation-pane {
  background:#f8f9fa;
  min-height:calc(100vh - 68px);
}
.pv8-library .navigation-pane .asset-pane-head { min-height:54px; padding:16px 16px 14px 20px; }
.pv8-library .navigation-pane .asset-pane-head h2 {
  color:var(--text-muted);
  font:600 9px/1.2 var(--pv8-mono);
  letter-spacing:.035em;
}
.sidebar-toggle { border-radius:6px !important; height:30px; width:30px; }
.sidebar-toggle:hover { background:var(--pv8-accent-soft); }
.pv8-library .nav-section { border-top:1px solid var(--grid); }
.pv8-library .nav-section-toggle {
  color:var(--text-muted);
  font:600 9px/1.2 var(--pv8-mono);
  letter-spacing:.035em;
  padding:14px 20px 10px;
}
.pv8-library .nav-section-toggle:hover { background:transparent; color:var(--series-1); }
.pv8-library .nav-section-mark { color:var(--text-muted); font-size:13px; }
.pv8-library .asset-links,
.pv8-library .pane-primary-links { border-color:var(--grid); }
.pv8-library .asset-links a,
.pv8-library .pane-utility-links a,
.pv8-library .decision-nav a,
.pv8-library .decision-nav button {
  align-items:center;
  border:0 !important;
  border-radius:10px;
  color:var(--text-secondary);
  display:flex;
  gap:11px;
  margin:2px 10px;
  padding:8px 10px;
}
.pv8-library .asset-links a:hover,
.pv8-library .pane-utility-links a:hover,
.pv8-library .decision-nav a:hover,
.pv8-library .decision-nav button:hover { background:var(--pv8-accent-soft); color:var(--series-4); }
.pv8-library .asset-links a[aria-current="page"],
.pv8-library .pane-utility-links a[aria-current="page"],
.pv8-library .decision-nav a[aria-current="page"],
.pv8-library .decision-nav button.active {
  background:#dfe8ee;
  box-shadow:none;
  color:var(--series-4);
}
.pv8-library .decision-nav a span,
.pv8-library .decision-nav button span { font-size:13px; font-weight:500; }
.pv8-library .decision-nav button.active span { font-weight:600; }
.pv8-library .decision-nav a small,
.pv8-library .decision-nav button small { display:none; }
.pv8-library .asset-select-heading { color:var(--text-muted); font:600 9px/1.2 var(--pv8-mono); padding:13px 20px 7px; }
.pv8-library .asset-view-switch { padding-left:20px; padding-right:20px; }
.pv8-library #assetList,
.pv8-library #assetMap { padding-left:12px; padding-right:12px; }
.pv8-library .pane-utility-links { border-top:1px solid var(--grid); margin-top:auto; padding:8px 0 10px; }
.pv8-library .asset {
  background:#fff;
  border:1px solid var(--border);
  border-radius:8px !important;
  margin-bottom:7px;
  padding:10px 11px;
}
.pv8-library .asset:hover { background:#fff; border-color:#abbdc8; box-shadow:var(--pv8-shadow-sm); }
.pv8-library .asset.sel {
  background:var(--pv8-accent-soft);
  border-color:#8fa8b8;
  box-shadow:inset 3px 0 0 var(--series-1);
}

.pv8-portfolio .portfolio-asset-selector { padding:6px 12px 12px; }
.pv8-portfolio .portfolio-asset-choice {
  background:transparent;
  border:1px solid transparent;
  border-radius:8px !important;
  color:var(--text-secondary);
  margin:3px 0;
  padding:10px 11px;
}
.pv8-portfolio .portfolio-asset-choice:hover { background:#fff; border-color:var(--border); color:var(--text-primary); }
.pv8-portfolio .portfolio-asset-choice.selected {
  background:#fff;
  border-color:#b9c8d2;
  box-shadow:var(--pv8-shadow-sm),inset 3px 0 0 var(--series-1);
  color:var(--pv8-navy);
}
.pv8-portfolio .portfolio-asset-choice b { font-size:12px; }
.pv8-portfolio .portfolio-asset-choice span { margin-top:3px; }
.pv8-library .toggle { background:#e9ecee; border:0; border-radius:6px !important; gap:2px; padding:2px; }
.pv8-library .toggle button { border-radius:4px !important; color:var(--text-muted); padding:5px 9px; }
.pv8-library .toggle button.active { background:#fff; box-shadow:0 1px 4px rgba(15,30,42,.12); color:var(--text-primary) !important; }

/* Portfolio overview. */
.pv8-portfolio .portfolio-main { background:var(--surface-0); }
.pv8-portfolio .hero.portfolio-hero {
  align-items:flex-end;
  background:var(--pv8-navy);
  border:0;
  color:#fff;
  display:flex;
  gap:40px;
  justify-content:space-between;
  padding:42px clamp(26px,4vw,64px) 36px;
}
.pv8-portfolio .portfolio-hero-copy { max-width:820px; }
.pv8-portfolio .hero .eyebrow { color:#8db4d1; }
.pv8-portfolio .hero h1 {
  color:#fff;
  font-size:clamp(30px,3.25vw,48px);
  font-weight:650;
  letter-spacing:-.045em;
  line-height:1.04;
  margin:11px 0 13px;
  max-width:850px;
}
.pv8-portfolio .hero p { color:#b8c3cb; font-size:14px; line-height:1.6; max-width:760px; }
.pv8-portfolio .portfolio-hero-actions { display:flex; flex:0 0 auto; gap:8px; }
.pv8-portfolio .portfolio-hero .pv8-button.secondary { background:transparent; border-color:#445765; color:#eaeff3; }
.pv8-portfolio .portfolio-hero .pv8-button.secondary:hover { background:#1b2e3d; border-color:#677885; }
.pv8-portfolio .portfolio-hero .pv8-button.primary { background:#f2b847; box-shadow:none; color:#1d242a; }
.pv8-portfolio .portfolio-hero .pv8-button.primary:hover { background:#ffd06f; color:#1d242a; }
.pv8-portfolio main { margin:0; max-width:none; padding:26px clamp(22px,3.4vw,52px) 72px; }
.portfolio-pulse {
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--pv8-radius-lg);
  box-shadow:var(--pv8-shadow-sm);
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  margin-bottom:24px;
  overflow:hidden;
}
.portfolio-pulse article { min-width:0; padding:18px 20px 17px; }
.portfolio-pulse article + article { border-left:1px solid var(--grid); }
.portfolio-pulse span,
.portfolio-pulse small { color:var(--text-muted); display:block; }
.portfolio-pulse span { font:600 9px/1.2 var(--pv8-mono); letter-spacing:.1em; text-transform:uppercase; }
.portfolio-pulse b { color:var(--pv8-navy); display:block; font-size:23px; font-weight:650; letter-spacing:-.035em; margin:7px 0 2px; }
.portfolio-pulse small { font-size:10px; }
/* A tile with nothing to report recedes so the tiles carrying a finding are
   the ones the eye lands on; the figure stays legible and is never hidden. */
.portfolio-pulse article.is-quiet b { color:var(--text-muted); font-weight:500; }

.pv8-portfolio #watchFeed,
.pv8-portfolio #opportunityMatrix {
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--pv8-radius);
  box-shadow:var(--pv8-shadow-sm);
  margin-bottom:18px;
  overflow:hidden;
  padding:18px 20px 20px;
}
.pv8-portfolio #watchFeed h2,
.pv8-portfolio #opportunityMatrix h2 { color:var(--pv8-navy); font-size:15px; letter-spacing:-.015em; margin:0 0 5px !important; }
.pv8-portfolio #opportunityMatrix > div:last-child { margin:13px -20px -20px; padding:0 20px 10px; }
.pv8-portfolio #opportunityMatrix table { min-width:900px; }
.pv8-portfolio #opportunityMatrix th { background:#f7f8f9; height:38px; }
.pv8-portfolio #opportunityMatrix td { height:43px; }

.pv8-portfolio #assets { display:grid; gap:12px; }
.pv8-portfolio .asset {
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--pv8-radius);
  box-shadow:var(--pv8-shadow-sm);
  margin:0;
  overflow:hidden;
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.pv8-portfolio .asset:hover { border-color:#b6c1c8; box-shadow:var(--pv8-shadow-md); transform:translateY(-1px); }
.pv8-portfolio .asset-head { gap:18px; min-height:96px; padding:18px 20px; }
.pv8-portfolio .asset-head:hover { background:#fbfcfc; }
.pv8-portfolio .asset-head .name { color:var(--pv8-navy); font-size:16px; font-weight:650; letter-spacing:-.015em; }
.pv8-portfolio .asset-head .name small { color:var(--text-muted); margin-top:4px; }
.pv8-portfolio .cell b { color:var(--pv8-navy); font-size:15px; font-weight:650; }
.pv8-portfolio .cell span:not(.chip) { font:500 9px/1.25 var(--pv8-mono); letter-spacing:.08em; }
.pv8-portfolio .bar { background:#e4e8eb; border-radius:4px; height:5px; overflow:hidden; }
.pv8-portfolio .bar > i { background:var(--series-1); border-radius:4px; }
.pv8-portfolio .chip { border-radius:999px; padding:5px 9px; }
.pv8-portfolio .chip.scr { background:#eef1f2; border:0; color:var(--text-secondary); }
.pv8-portfolio .caret { align-items:center; background:var(--pv8-accent-soft); border-radius:50%; display:flex; height:28px; justify-content:center; width:28px; }
.pv8-portfolio .asset-detail { background:#fbfcfc; border-top:1px solid var(--grid); padding:18px 20px 22px; }
.pv8-portfolio table { font-size:12px; }
.pv8-portfolio th { color:var(--text-muted); font:600 9px/1.2 var(--pv8-mono); padding:9px 10px; }
.pv8-portfolio td { border-color:var(--grid); padding:10px; }
.pv8-portfolio .next { background:#f1f4f6; border:0; border-left:3px solid var(--series-1); border-radius:0 7px 7px 0; padding:12px 14px; }
.pv8-portfolio .links a { font-weight:600; text-decoration:none; }
.pv8-portfolio .foot-note { color:var(--text-muted); padding:6px 2px; }

/* Assessment surfaces and dense decision tools. */
.asset-summary {
  background:#fff;
  border-bottom:1px solid var(--border);
  box-shadow:0 2px 9px rgba(15,30,42,.025);
}
.summary-cell { border-color:var(--grid); padding:13px 18px; }
.summary-cell span { color:var(--text-muted); font:600 9px/1.2 var(--pv8-mono); }
.summary-cell b { color:var(--pv8-navy); font-size:15px; }
button.summary-cell:hover { background:#f5f8fa; }
.pv8-library .module-workspace { padding:28px clamp(20px,3vw,44px) 72px; }
/* The asset bar was 77 px of a second copy of the header's own asset context,
   68 px below it, on every authenticated section (density audit D2). What is
   left is the engine caption; the row collapses to nothing when empty. */
.pv8-library .workspace-head {
  background:none;
  border:0;
  border-radius:0;
  box-shadow:none;
  justify-content:flex-end;
  margin-bottom:0;
  min-height:0;
  padding:0;
}
.solution-kicker,
.eyebrow { color:var(--series-1); font:650 10px/1.2 var(--pv8-caption); letter-spacing:.035em; }
.pv8-library #selName { color:var(--pv8-navy); font-size:clamp(22px,2.5vw,32px); font-weight:650; letter-spacing:-.035em; }
.pv8-library .card { background:#fff; border:1px solid var(--border); border-radius:var(--pv8-radius) !important; box-shadow:var(--pv8-shadow-sm); }
.pv8-library .layout > .card { border:0; border-radius:0 !important; box-shadow:none; }
.pv8-library .card h2,
.pv8-library #result > h2,
.pv8-library #h2FoundationResults > h2 { color:var(--pv8-navy); font-size:15px; font-weight:650; letter-spacing:-.01em; }
.pv8-library .libbtn,
.pv8-library form button,
.pv8-library button:not(.summary-cell):not(.nav-section-toggle):not(.sidebar-toggle) {
  border-radius:7px !important;
}
.pv8-library .libbtn {
  background:#fff;
  border-color:var(--border);
  color:var(--series-1);
  font-weight:600;
  min-height:34px;
  padding:7px 11px;
}
.pv8-library .libbtn:hover { background:var(--pv8-accent-soft); border-color:#b8c6d0; }
.pv8-library input,
.pv8-library select,
.pv8-library textarea {
  background:#fff;
  border:1px solid #cbd2d6;
  border-radius:6px !important;
  min-height:36px;
}
.pv8-library input:focus,
.pv8-library select:focus,
.pv8-library textarea:focus {
  border-color:var(--series-1);
  box-shadow:0 0 0 3px rgba(17,66,107,.1);
  outline:0;
}
.pv8-library table th { background:#f7f8f9; color:var(--text-muted); }
.pv8-library .decision-journey { gap:12px; }
.pv8-library .decision-step {
  background:#fff;
  border:1px solid var(--border) !important;
  border-radius:var(--pv8-radius) !important;
  box-shadow:var(--pv8-shadow-sm);
  min-height:220px;
  padding:17px;
}
.pv8-library .decision-step.next { border-color:#8fa8b8 !important; box-shadow:inset 0 3px 0 var(--series-1),var(--pv8-shadow-sm); }
.pv8-library .decision-step.complete { box-shadow:inset 0 3px 0 var(--good),var(--pv8-shadow-sm); }
.pv8-library .decision-step h3 { color:var(--pv8-navy); font-size:16px; font-weight:650; letter-spacing:-.015em; }

/* The assistant remains available without reading as a generic chat widget. */
#pv8ChatFab {
  background:var(--pv8-navy) !important;
  border:1px solid #283c4c !important;
  border-radius:9px !important;
  bottom:18px !important;
  box-shadow:0 9px 24px rgba(15,30,42,.2) !important;
  color:#fff !important;
  font-size:0 !important;
  height:42px !important;
  padding:0 14px !important;
  right:18px !important;
  width:auto !important;
}
#pv8ChatFab::before { content:"Ask PV8"; font:650 11px/1 var(--pv8-sans); letter-spacing:.01em; }
#pv8ChatFab:hover { background:var(--series-1) !important; }
#pv8ChatPanel { border-color:var(--border) !important; border-radius:var(--pv8-radius) !important; box-shadow:var(--pv8-shadow-md) !important; }

/* Asset creation and profile: quieter forms, stronger hierarchy. */
.pv8-form-page,
.pv8-profile { background:var(--surface-0); margin:0; max-width:none; padding:0; }
.pv8-form-page > form { margin:0 auto; max-width:900px; padding:42px 24px 80px; }
.pv8-form-page .card,
.pv8-profile .card {
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--pv8-radius) !important;
  box-shadow:var(--pv8-shadow-sm);
  margin-bottom:14px;
  padding:20px;
}
.pv8-form-page .card h2,
.pv8-profile .card h2 { color:var(--pv8-navy); font-size:15px; font-weight:650; letter-spacing:-.01em; text-transform:none; }
.pv8-form-page label,
.pv8-profile label { color:var(--text-secondary); font-size:11px; font-weight:600; }
.pv8-form-page input,
.pv8-form-page select,
.pv8-profile input,
.pv8-profile select,
.pv8-profile textarea {
  background:#fff;
  border:1px solid #cbd2d6;
  border-radius:6px !important;
  min-height:38px;
  padding:8px 10px;
}
.pv8-form-page input:focus,
.pv8-form-page select:focus,
.pv8-profile input:focus,
.pv8-profile select:focus,
.pv8-profile textarea:focus { border-color:var(--series-1); box-shadow:0 0 0 3px rgba(17,66,107,.1); outline:0; }
.pv8-form-page button,
.pv8-profile button {
  background:var(--series-1);
  border-radius:7px !important;
  color:#fff !important;
  font-weight:650;
}
.pv8-form-page button:hover,
.pv8-profile button:hover { background:var(--series-4); color:#fff !important; }
.pv8-form-page #drop,
.pv8-profile #drop { background:#f7f9fa; border:1.5px dashed #9dadb7; border-radius:10px !important; }
.pv8-form-page #drop:hover,
.pv8-profile #drop:hover { background:var(--pv8-accent-soft); border-color:var(--series-1); }
.pv8-profile > section,
.pv8-profile > .profile-nav { margin-left:auto; margin-right:auto; max-width:1120px; }
.pv8-profile > section { padding-left:24px; padding-right:24px; }
.pv8-profile .profile-nav {
  background:rgba(243,245,246,.94);
  backdrop-filter:blur(12px);
  border:0;
  gap:6px;
  padding:12px 24px;
  top:0;
}
.pv8-profile .profile-nav a {
  background:transparent;
  border:0;
  border-radius:6px;
  color:var(--text-secondary);
  font-size:12px;
  font-weight:600;
  padding:8px 11px;
}
.pv8-profile .profile-nav a:hover { background:#fff; color:var(--series-1); }
.profile-title-row { margin-bottom:18px; padding-top:16px; }
.profile-title-row h1 { color:var(--pv8-navy); font-size:32px; font-weight:650; letter-spacing:-.04em; }
.profile-metrics {
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--pv8-radius);
  box-shadow:var(--pv8-shadow-sm);
  overflow:hidden;
}
.profile-metric { border-color:var(--grid); padding:15px 16px; }
.profile-metric span { color:var(--text-muted); font:600 9px/1.2 var(--pv8-mono); }
.profile-metric b { color:var(--pv8-navy); font-size:19px; font-weight:600; }
.pv8-profile .readiness-banner { background:#fff; border:1px solid var(--border); border-left:4px solid var(--warning); border-radius:var(--pv8-radius); box-shadow:var(--pv8-shadow-sm); }
.pv8-profile .danger-action { background:#fff; border:1px solid #ddb8b8; color:var(--serious) !important; }
.pv8-profile .danger-action:hover { background:#fff3f3; color:var(--serious) !important; }

@media (max-width:1080px) {
  .pv8-library .layout { grid-template-columns:250px minmax(0,1fr); }
  .pv8-portfolio .hero.portfolio-hero { align-items:flex-start; flex-direction:column; gap:22px; }
  .pv8-portfolio .asset-head { grid-template-columns:minmax(180px,1.4fr) repeat(2,minmax(100px,1fr)) 28px; }
  .pv8-portfolio .asset-head .cell:nth-of-type(4),
  .pv8-portfolio .asset-head .cell:nth-of-type(5) { display:none; }
}

@media (max-width:760px) {
  .pv8-library > header,
  .pv8-profile > header,
  .pv8-form-page > header,
  .pv8-faq > header,
  .pv8-terms > header { padding:11px 16px; }
  .pv8-library .layout,
  .pv8-library .layout.assets-collapsed { display:block; }
  .pv8-library .layout > div:first-child { border-bottom:1px solid var(--border); border-right:0; }
  .pv8-library .navigation-pane { min-height:0; }
  .pv8-library .layout.assets-collapsed #assetPane { display:none; }
  .pv8-portfolio .hero.portfolio-hero { padding:32px 22px 30px; }
  .pv8-portfolio .portfolio-hero-actions { width:100%; }
  .pv8-portfolio .portfolio-hero-actions .pv8-button { flex:1; }
  .portfolio-pulse { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .portfolio-pulse article:nth-child(3) { border-left:0; }
  .portfolio-pulse article:nth-child(n+3) { border-top:1px solid var(--grid); }
  .pv8-portfolio .asset-head { grid-template-columns:minmax(0,1.5fr) minmax(92px,1fr) 28px; }
  .pv8-portfolio .asset-head .cell:nth-of-type(n+2) { display:none; }
  .pv8-profile > section { padding-left:16px; padding-right:16px; }
}

@media (max-width:480px) {
  .pv8-brand :is(h1,.pv8-wordmark) { font-size:20px; }
  .pv8-nav { flex-wrap:wrap; }
  .pv8-portfolio main { padding-left:14px; padding-right:14px; }
  .portfolio-pulse { grid-template-columns:1fr; }
  .portfolio-pulse article + article { border-left:0; border-top:1px solid var(--grid); }
  .pv8-portfolio .portfolio-hero-actions { flex-direction:column; }
  .pv8-form-page > form { padding-left:14px; padding-right:14px; }
}

/* -------------------------------------------------------------------------
   PV8 quiet hierarchy refinement — 2026-08-22

   Selection carries the contrast. Everything else recedes into spacing,
   typography and soft surface changes rather than permanent rules.
   ------------------------------------------------------------------------- */
:root {
  --border:#e3e7e9;
  --grid:#edf0f1;
  --pv8-divider:#e3e7e9;
  --pv8-sans:var(--pv8-github-sans);
  --pv8-module-blue:#2b607f;
  --pv8-module-blue-soft:#c6dbe6;
  --pv8-module-blue-selection:#cfe1ea;
  --pv8-selected-ink:#101e2a;
  --pv8-shadow-sm:0 5px 18px rgba(15,30,42,.045);
  --pv8-shadow-md:0 12px 34px rgba(15,30,42,.075);
}

body { font-family:var(--pv8-sans); }
.pv8-brand :is(h1,.pv8-wordmark) { font-weight:700; }
.pv8-library > header,
.pv8-profile > header,
.pv8-form-page > header,
.pv8-faq > header,
.pv8-terms > header { border-bottom:0; box-shadow:0 1px 10px rgba(15,30,42,.045); }

/* Navigation: unselected destinations are plain; the current context is clear. */
.pv8-library .layout > div:first-child { border-right:0; box-shadow:8px 0 24px rgba(15,30,42,.035); z-index:2; }
.pv8-library .nav-section,
.pv8-library .asset-links,
.pv8-library .pane-primary-links,
.pv8-library .pane-utility-links { border-color:transparent; }
.pv8-library .nav-section + .nav-section { margin-top:5px; }
.pv8-library .asset-links a,
.pv8-library .pane-utility-links a,
.pv8-library .decision-nav a,
.pv8-library .decision-nav button { color:#656d73; }
.pv8-library .asset-links a:hover,
.pv8-library .pane-utility-links a:hover,
.pv8-library .decision-nav a:hover,
.pv8-library .decision-nav button:hover { background:#eef2f4; color:var(--pv8-navy); }
.pv8-library .asset-links a[aria-current="page"],
.pv8-library .pane-utility-links a[aria-current="page"],
.pv8-library .decision-nav a[aria-current="page"],
.pv8-library .decision-nav button.active {
  background:var(--pv8-module-blue-selection);
  box-shadow:none;
  color:var(--pv8-selected-ink);
}
.pv8-library .asset-links a[aria-current="page"] small,
.pv8-library .pane-utility-links a[aria-current="page"] small,
.pv8-library .decision-nav a[aria-current="page"] small,
.pv8-library .decision-nav button.active small { color:#365d6c; }

.pv8-library .asset,
.pv8-portfolio .portfolio-asset-choice {
  background:transparent;
  border-color:transparent;
  box-shadow:none;
}
.pv8-library .asset:hover,
.pv8-portfolio .portfolio-asset-choice:hover { background:#eef2f4; border-color:transparent; box-shadow:none; }
.pv8-library .asset.sel,
.pv8-portfolio .portfolio-asset-choice.selected {
  background:var(--pv8-module-blue-selection);
  border-color:var(--pv8-module-blue);
  box-shadow:0 7px 18px rgba(43,96,127,.12),inset 3px 0 0 var(--pv8-module-blue);
  color:var(--pv8-selected-ink);
}
.pv8-library .asset.sel b,
.pv8-library .asset.sel span,
.pv8-portfolio .portfolio-asset-choice.selected b,
.pv8-portfolio .portfolio-asset-choice.selected span { color:var(--pv8-selected-ink); }
.pv8-library .asset.sel span,
.pv8-portfolio .portfolio-asset-choice.selected span { opacity:.68; }

/* Selected controls use dark ink; the blue surface supplies the state cue. */
.pv8-library .mdcTabBtn.active,
.pv8-library .toggle button.active,
.pv8-library .cmpv.active,
.pv8-library button.libbtn.windtab.active,
.pv8-library button.libbtn.agritab.active,
.pv8-library button.libbtn.h2tab.active,
.pv8-library .land-value-view button.active,
.pv8-library .solution-tabs button.active,
.pv8-library .mdc-view-toggle[aria-pressed="true"],
.pv8-library .mdc-share-preset[aria-pressed="true"] {
  background:var(--pv8-module-blue-selection) !important;
  border-color:var(--pv8-module-blue) !important;
  box-shadow:inset 0 -3px 0 var(--pv8-module-blue);
  color:var(--pv8-selected-ink) !important;
}

/* Action hierarchy: modelling is primary; reopening inputs is a special edit. */
.pv8-library button[onclick="run(true)"],
.pv8-library button[onclick*="moduleJourneySubmit("],
.pv8-library #landRunSale {
  background:var(--pv8-primary) !important;
  border-color:var(--pv8-primary) !important;
  box-shadow:0 5px 14px rgba(17,66,107,.2);
  color:#fff !important;
  font-weight:700;
}
.pv8-library button[onclick="run(true)"]:hover,
.pv8-library button[onclick*="moduleJourneySubmit("]:hover,
.pv8-library #landRunSale:hover {
  background:var(--series-4) !important;
  border-color:var(--series-4) !important;
  box-shadow:0 7px 18px rgba(17,66,107,.27);
  color:#fff !important;
  transform:translateY(-1px);
}
.pv8-library button[onclick="run(true)"]:disabled,
.pv8-library button[onclick*="moduleJourneySubmit("]:disabled,
.pv8-library #landRunSale:disabled {
  background:#c8d3dc !important;
  border-color:#b6c3ce !important;
  box-shadow:none;
  color:#5d6a74 !important;
  transform:none;
}

.pv8-library .module-inputs-toggle,
.pv8-library .generic-inputs-toggle,
.pv8-library .recycling-inputs-toggle,
.pv8-library .direct-wire-inputs-toggle,
.pv8-library .water-inputs-toggle {
  background:#e2ebf1 !important;
  border-color:#9bb5c8 !important;
  box-shadow:0 2px 8px rgba(17,66,107,.09);
  color:#17344b !important;
  font-weight:650;
}
.pv8-library .module-inputs-toggle:hover,
.pv8-library .generic-inputs-toggle:hover,
.pv8-library .recycling-inputs-toggle:hover,
.pv8-library .direct-wire-inputs-toggle:hover,
.pv8-library .water-inputs-toggle:hover {
  background:#cfdde7 !important;
  border-color:#7292aa !important;
  color:#10293d !important;
}

/* Summary strips and KPI groups use whitespace instead of boxed grids. */
.asset-summary { border:0; box-shadow:0 5px 18px rgba(15,30,42,.035); gap:0; padding:5px 8px; }
.summary-cell { border:0 !important; border-radius:7px; padding:10px 18px; }
button.summary-cell:hover { background:var(--pv8-accent-soft); }
/* header speaks the left pane's language, one size up: sans values over the
   small-caps mono labels, with explicit dividers between cell groups */
.summary-cell + .summary-cell { border-left:1px solid var(--grid) !important; border-radius:0; }
.summary-cell:last-child { border-radius:0 7px 7px 0; }
.summary-cell b { font-family:var(--pv8-sans); font-size:17px; font-weight:650; }
.summary-cell-links { gap:14px; margin-top:6px; }
.summary-cell-links a { font-size:12.5px; font-weight:600; }
#recentMenu { font-family:var(--pv8-sans); }
#recentMenu a b { font-family:var(--pv8-sans); font-size:12.5px; font-weight:600; }
#recentMenu a span { color:var(--text-muted); font:500 11px/1.4 var(--pv8-sans); letter-spacing:0; text-transform:none; }
.portfolio-pulse {
  background:transparent;
  border:0;
  box-shadow:none;
  gap:10px;
  overflow:visible;
}
.portfolio-pulse article {
  background:#fff;
  border:0 !important;
  border-radius:var(--pv8-radius);
  box-shadow:var(--pv8-shadow-sm);
}

/* Cards remain legible without a perimeter on every object. */
.pv8-portfolio #watchFeed,
.pv8-portfolio #opportunityMatrix,
.pv8-portfolio .asset,
.pv8-library .card,
.pv8-form-page .card,
.pv8-profile .card,
.profile-metrics,
.pv8-profile .readiness-banner {
  border-color:transparent;
  box-shadow:var(--pv8-shadow-sm);
}
.pv8-portfolio .asset:hover { border-color:transparent; box-shadow:var(--pv8-shadow-md); }
.pv8-portfolio .asset.open { box-shadow:0 0 0 2px rgba(17,66,107,.3),var(--pv8-shadow-md); }
.pv8-portfolio .asset-detail { border-top:0; }
.pv8-portfolio #opportunityMatrix th { background:#f8f9fa; border:0; }
.pv8-portfolio #opportunityMatrix td { border:0; }
.pv8-portfolio #opportunityMatrix tr + tr td { border-top:1px solid var(--grid); }
.pv8-portfolio .asset-head { border:0; }
.pv8-portfolio .next { background:#f3f6f7; }

.pv8-library .decision-journey { gap:14px; }
.pv8-library .decision-step {
  border-color:transparent !important;
  box-shadow:var(--pv8-shadow-sm);
}
.pv8-library .decision-step.next {
  background:#eaf0f4;
  border-color:transparent !important;
  box-shadow:inset 4px 0 0 var(--series-1),var(--pv8-shadow-sm);
}
.pv8-library .decision-step.complete { border-color:transparent !important; }
.pv8-library table th { border:0; }
.pv8-library table td { border-color:var(--grid); }

/* Profile metrics read as six facts, not a spreadsheet. */
.profile-metrics {
  background:transparent;
  border:0;
  box-shadow:none;
  gap:10px;
  overflow:visible;
}
.profile-metric {
  background:#fff;
  border:0 !important;
  border-radius:8px;
  box-shadow:var(--pv8-shadow-sm);
}
.pv8-profile .profile-nav { border:0; }
.pv8-profile .profile-nav a { color:#646d73; }
.pv8-profile .profile-nav a:hover { color:var(--pv8-navy); }
.pv8-profile .profile-nav a:focus,
.pv8-profile .profile-nav a:active { background:var(--pv8-navy); color:#fff; }
.pv8-profile .minimum-grid,
.pv8-profile .evidence-level { border-color:var(--grid); }
.pv8-profile .minimum-item,
.pv8-profile .evidence-level article,
.pv8-profile .evidence-domain { border-color:var(--grid); }

/* Controls keep a border because it communicates affordance; containers do not. */
.pv8-library input,
.pv8-library select,
.pv8-library textarea,
.pv8-form-page input,
.pv8-form-page select,
.pv8-profile input,
.pv8-profile select,
.pv8-profile textarea { border-color:#d4dadd; }

/* Owner-first managed expert matching. The modal reads as a controlled
   engagement workflow, never a marketplace catalogue. */
.expert-match-modal {
  align-items:flex-start;
  background:rgba(10,20,27,.68);
  display:flex;
  inset:0;
  justify-content:center;
  overflow:auto;
  padding:28px;
  position:fixed;
  z-index:520;
}
.expert-match-shell {
  background:#f7f8f8;
  border-radius:14px;
  box-shadow:0 28px 80px rgba(6,16,24,.28);
  max-width:980px;
  overflow:hidden;
  width:100%;
}
.expert-match-title {
  align-items:flex-start;
  background:var(--pv8-navy);
  color:#fff;
  display:flex;
  gap:24px;
  justify-content:space-between;
  margin:0;
  padding:24px 28px 22px;
}
.expert-match-title h2 { color:#fff; font-size:25px; margin:4px 0 6px; text-transform:none; }
.expert-match-title p { color:#cbd3d9; font-size:13px; margin:0; max-width:720px; }
.expert-match-title .eyebrow { color:#9fb7c8; }
.expert-match-title .modal-close {
  background:transparent; border:0; color:#fff; cursor:pointer; font-size:28px; line-height:1;
}
.owner-first-strip {
  align-items:center; background:#e2ebf1; color:#17344b; display:flex; gap:16px;
  padding:11px 28px;
}
.owner-first-strip b { white-space:nowrap; }
.owner-first-strip span { font-size:12.5px; }
.expert-match-create,.expert-match-existing { padding:24px 28px; }
.expert-match-existing { border-top:1px solid #dfe4e6; }
.expert-match-create-head,.expert-match-existing-head,.expert-match-head {
  align-items:flex-start; display:flex; gap:18px; justify-content:space-between;
}
.expert-match-create-head h3,.expert-match-existing-head h3,.expert-match-head h3 {
  font-size:18px; margin:2px 0 0;
}
.expert-match-create-head>span,.expert-match-head>span { color:var(--text-muted); font-size:12px; }
.expert-stepper { display:grid; gap:1px; grid-template-columns:repeat(3,1fr); margin:18px 0; }
.expert-stepper button {
  align-items:center; background:#e8ebec; border:0; color:#656d73; cursor:pointer;
  display:flex; font:600 12px var(--pv8-sans); gap:8px; justify-content:center; padding:10px;
}
.expert-stepper button:first-child { border-radius:8px 0 0 8px; }
.expert-stepper button:last-child { border-radius:0 8px 8px 0; }
.expert-stepper button b {
  align-items:center; background:#fff; border-radius:50%; display:inline-flex; height:21px;
  justify-content:center; width:21px;
}
.expert-stepper button.active { background:var(--pv8-navy); color:#fff; }
.expert-stepper button.active b { color:var(--pv8-navy); }
.expert-match-step { background:#fff; border-radius:10px; box-shadow:var(--pv8-shadow-sm); padding:20px; }
.expert-match-step[hidden] { display:none; }
.expert-match-step>label,.expert-form-grid label {
  color:var(--pv8-navy); display:grid; font-size:12.5px; font-weight:650; gap:5px; margin-bottom:14px;
}
.expert-match-step label>span { color:var(--text-muted); font-weight:500; }
.expert-match-step label small { color:var(--text-muted); font-weight:500; }
.expert-match-step input,.expert-match-step select,.expert-match-step textarea {
  background:#fbfcfc; border:1px solid #ced5d9; border-radius:7px; color:var(--text-primary);
  font:500 13px/1.45 var(--pv8-sans); margin:0; padding:9px 10px; width:100%;
}
.expert-reference-picker {
  border:0; display:grid; gap:9px; grid-template-columns:repeat(2,minmax(0,1fr));
  margin:0 0 14px; padding:0;
}
.expert-reference-picker legend {
  color:var(--pv8-navy); font-size:12.5px; font-weight:700; margin-bottom:7px;
}
.expert-reference-picker label {
  align-items:flex-start; background:#f6f7f8; border:1px solid #d8dee1;
  border-radius:9px; cursor:pointer; display:flex; gap:9px; padding:12px;
}
.expert-reference-picker label:has(input:checked) {
  background:#e7eef2; border-color:#728fa4; box-shadow:inset 0 0 0 1px #728fa4;
}
.expert-reference-picker label:has(input:disabled) { cursor:not-allowed; opacity:.65; }
.expert-reference-picker input { margin:3px 0 0; width:auto; }
.expert-reference-picker span { display:grid; gap:2px; }
.expert-reference-picker span b { color:var(--pv8-navy); }
.expert-reference-picker span small { line-height:1.35; }
.expert-reference-fields { display:grid; gap:0 14px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.expert-reference-fields>label {
  color:var(--pv8-navy); display:grid; font-size:12.5px; font-weight:650;
  gap:5px; margin-bottom:14px;
}
.expert-reference-fields>label:first-child { grid-column:1/-1; }
.expert-reference-fields>label[hidden] { display:none; }
.expert-reference-summary {
  background:#f0f3f5; border-left:3px solid #47677f; border-radius:0 7px 7px 0;
  display:grid; gap:2px; margin:0 0 14px; padding:10px 12px;
}
.expert-reference-summary b { color:var(--pv8-navy); font-size:13.5px; }
.expert-reference-summary small { color:var(--text-muted); }
.expert-form-grid { display:grid; gap:0 14px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.expert-check { align-items:flex-start; display:flex !important; gap:9px !important; }
.expert-check input { margin-top:3px; width:auto; }
.expert-check span { display:grid; gap:2px; }
.expert-check span b { color:var(--pv8-navy); }
.expert-step-actions { align-items:center; display:flex; gap:10px; justify-content:flex-end; margin-top:10px; }
.expert-step-actions>span { color:var(--serious); font-size:12px; margin-right:auto; }
.expert-privacy-grid { display:grid; gap:18px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.expert-privacy-grid>div { background:#f6f7f8; border-radius:8px; padding:14px; }
.expert-privacy-grid p { font-size:13px; margin:5px 0 10px; }
.expert-privacy-grid dl { display:grid; gap:6px; }
.expert-privacy-grid dl div { display:grid; gap:2px; }
.expert-privacy-grid dt { color:var(--text-muted); font-size:10px; font-weight:700; text-transform:uppercase; }
.expert-privacy-grid dd { font-size:12px; margin:0; }
.expert-document-picker { border:0; border-top:1px solid var(--grid); margin:18px 0 0; padding:16px 0 0; }
.expert-document-picker legend { color:var(--pv8-navy); font-size:12.5px; font-weight:700; padding-right:8px; }
.expert-document-picker>input { margin:5px 0 8px; max-width:420px; }
.expert-document-options { max-height:210px; overflow:auto; padding-right:6px; }
.expert-document-option { align-items:flex-start; display:flex !important; gap:8px !important; margin:8px 0 !important; }
.expert-document-option input { margin-top:3px; width:auto; }
.expert-document-option span { display:grid; gap:1px; }
.expert-document-option span b { color:var(--text-primary); }
.expert-owner-confirm { background:#fff8df; border-left:3px solid #d2a83b; font-size:12.5px; padding:9px 11px; }
.expert-match-card {
  background:#fff; border-left:4px solid #8a9aa6; border-radius:10px;
  box-shadow:var(--pv8-shadow-sm); margin-top:14px; padding:18px;
}
.expert-match-card[data-status="ACCEPTED"],.expert-match-card[data-status="IN_REVIEW"],
.expert-match-card[data-status="REVIEW_SUBMITTED"] { border-left-color:var(--series-3); }
.expert-match-card>p { margin:8px 0; }
.expert-match-scope { display:grid; gap:2px; margin:10px 0; }
.expert-match-scope span { color:var(--text-muted); font-size:12px; }
.owner-control-note { background:#f1f4f5; border-radius:7px; display:grid; font-size:12.5px; gap:2px; margin:10px 0; padding:10px 12px; }
.owner-control-note.ready { background:#e4f2ed; color:#17344b; }
.expert-shortlist-intro { display:grid; gap:2px; margin:18px 0 8px; }
.expert-shortlist-intro span { color:var(--text-muted); font-size:12px; }
.expert-candidate-card { border:1px solid #dce1e4; border-radius:9px; margin:9px 0; padding:14px; }
.expert-candidate-card.selected { border-color:#7995aa; box-shadow:inset 3px 0 0 #7995aa; }
.expert-candidate-card header { align-items:flex-start; display:flex; gap:12px; justify-content:space-between; margin:0 0 10px; }
.expert-candidate-card header>div { display:grid; gap:1px; }
.expert-candidate-card header span { color:var(--text-muted); font-size:11px; }
.expert-candidate-card .match-status { background:#eef1f3; border-radius:10px; color:#4e5c65; padding:3px 8px; text-transform:lowercase; }
.expert-fit-grid { display:grid; gap:12px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.expert-fit-grid>div { background:#f7f8f9; border-radius:7px; padding:9px 11px; }
.expert-fit-grid>div>span { color:var(--text-muted); font-size:10px; font-weight:700; text-transform:uppercase; }
.expert-fit-grid ul { margin:5px 0 0 17px; }
.expert-fit-grid p { font-size:12px; margin:5px 0 0; }
.expert-candidate-facts { display:grid; gap:5px; grid-template-columns:repeat(2,minmax(0,1fr)); margin:10px 0; }
.expert-candidate-facts div { display:grid; gap:1px; }
.expert-candidate-facts dt { color:var(--text-muted); font-size:10px; font-weight:700; text-transform:uppercase; }
.expert-candidate-facts dd { font-size:12px; margin:0; }
.expert-response-note { background:#fff8df; border-radius:6px; font-size:12px; padding:8px 10px; }
.expert-grant-row { align-items:flex-end; display:flex; gap:10px; margin-top:10px; }
.expert-grant-row label { display:grid; font-size:11px; gap:3px; }
.expert-grant-row select { border:1px solid #ced5d9; border-radius:6px; padding:7px 8px; }
.expert-redacted-brief { border-top:1px solid var(--grid); margin-top:14px; padding-top:10px; }
.expert-redacted-brief summary { color:var(--series-1); cursor:pointer; font-size:12px; font-weight:650; }
.expert-redacted-brief pre { background:#f5f6f7; border-radius:7px; font-size:11px; overflow:auto; padding:10px; white-space:pre-wrap; }
.expert-access-created { background:#e4f2ed; border-left:4px solid var(--series-3); margin:18px 28px 0; padding:13px 15px; }
.expert-access-created>div { align-items:center; display:flex; flex-wrap:wrap; gap:7px; }
.expert-access-created code { background:#fff; border-radius:5px; padding:6px 8px; }
.managed-review-assignment { background:#f3f6f7; border-left:3px solid var(--series-3); margin:12px 0; padding:12px 14px; }
.managed-review-assignment h3 { font-size:16px; margin:2px 0 0; }
.managed-review-assignment>p { margin:7px 0; }
.managed-review-assignment dl { display:grid; gap:6px; grid-template-columns:repeat(3,minmax(0,1fr)); margin:9px 0; }
.managed-review-assignment dl div { display:grid; gap:2px; }
.managed-review-assignment dt { color:var(--text-muted); font-size:10px; font-weight:700; text-transform:uppercase; }
.managed-review-assignment dd { font-size:12px; margin:0; }

/* Connection Optionality — evidence first, owner controlled, never ranked. */
.connection-optionality-modal {
  align-items:center; background:rgba(11,21,29,.68); display:flex; inset:0;
  justify-content:center; padding:22px; position:fixed; z-index:515;
}
.connection-shell {
  background:#f5f6f7; border-radius:14px; box-shadow:0 24px 70px rgba(5,16,25,.3);
  max-height:92vh; max-width:1120px; overflow:auto; width:100%;
}
.connection-title {
  align-items:flex-start; background:var(--pv8-navy); color:#fff; display:flex;
  gap:28px; justify-content:space-between; padding:25px 30px 23px;
}
.connection-title h2 { color:#fff; font-size:25px; margin:4px 0 6px; text-transform:none; }
.connection-title p { color:#cad2d8; font-size:13px; margin:0; max-width:790px; }
.connection-title .eyebrow { color:#9fb7c8; }
.connection-title .modal-close {
  background:transparent; border:0; color:#fff; cursor:pointer; font-size:30px; line-height:1;
}
.connection-honesty-strip {
  align-items:center; background:#dfe9f0; color:#17344b; display:flex; gap:18px;
  padding:11px 30px;
}
.connection-honesty-strip b { white-space:nowrap; }
.connection-honesty-strip span { font-size:12.5px; }
.connection-shell main { display:grid; gap:18px; padding:24px 30px 30px; }
.connection-shell main>section {
  background:#fff; border:1px solid #dfe4e6; border-radius:11px;
  box-shadow:var(--pv8-shadow-sm); padding:21px;
}
.connection-section-head {
  align-items:flex-start; display:flex; gap:16px; justify-content:space-between; margin-bottom:14px;
}
.connection-section-head h3,.connection-evidence-section h3,.connection-share-panel h3 {
  color:var(--pv8-navy); font-size:18px; margin:2px 0 0;
}
.connection-section-head>span { color:var(--text-muted); font-size:11.5px; }
.connection-section-head>div:last-child { align-items:center; display:flex; flex-wrap:wrap; gap:7px; }
.connection-evidence {
  background:var(--pv8-ink-soft); border-radius:12px; color:#535e65; display:inline-flex;
  font-size:9.5px; font-weight:750; letter-spacing:.02em; padding:4px 8px; text-transform:uppercase;
}
.connection-evidence.recorded { background:#e3f0eb; color:#24614f; }
.connection-evidence.confirmed { background:#d6eee4; color:#155541; }
.connection-evidence.unknown { background:#f2eee6; color:#806c46; }
.connection-listed {
  background:#dfe9f0; border-radius:12px; color:#165a45; font-size:10px;
  font-weight:750; padding:4px 8px; text-transform:uppercase;
}
.connection-capacity-grid { display:grid; gap:11px; grid-template-columns:repeat(4,minmax(0,1fr)); }
.connection-capacity-card {
  border:1px solid #d7dde0; border-top:3px solid #47677f; border-radius:8px;
  display:grid; gap:7px; min-height:130px; padding:13px;
}
.connection-capacity-card.is-unknown { border-top-color:#b6a679; }
.connection-capacity-card>span { color:var(--text-muted); font-size:10px; font-weight:750; text-transform:uppercase; }
.connection-capacity-card>b { color:var(--pv8-navy); font-size:18px; }
.connection-capacity-card .connection-unknown { color:#806c46; font-size:15px; }
.connection-capacity-card small { color:var(--text-muted); font-size:10.5px; line-height:1.35; }
.connection-passport-facts {
  display:grid; gap:9px; grid-template-columns:repeat(6,minmax(0,1fr)); margin:13px 0 0;
}
.connection-passport-facts div { border-left:2px solid #d7dde0; display:grid; gap:2px; padding-left:9px; }
.connection-passport-facts dt { color:var(--text-muted); font-size:9px; font-weight:700; text-transform:uppercase; }
.connection-passport-facts dd { color:var(--pv8-navy); font-size:11px; margin:0; }
.connection-passport-facts dd b { font-size:11px; }
.connection-boundary {
  border-left:3px solid #8b9daa; color:var(--text-muted); font-size:12px;
  margin:13px 0 0; padding:7px 10px;
}
.connection-passport-editor { border-top:1px solid var(--grid); margin-top:14px; padding-top:13px; }
.connection-passport-editor summary { color:var(--series-1); cursor:pointer; font-size:12.5px; font-weight:700; }
.connection-passport-row {
  align-items:end; display:grid; gap:10px; grid-template-columns:1fr 170px 1.4fr;
  margin-top:12px;
}
.connection-passport-row label,.connection-meta-grid label,.connection-time-row label {
  color:var(--pv8-navy); display:grid; font-size:11px; font-weight:650; gap:4px;
}
.connection-passport-row input,.connection-passport-row select,.connection-meta-grid input,
.connection-time-row input {
  background:#fbfcfc; border:1px solid #ced5d9; border-radius:6px; color:var(--text-primary);
  font:500 12px var(--pv8-sans); margin:0; padding:8px; width:100%;
}
.connection-time-row {
  align-items:end; background:#f4f6f7; border-radius:7px; display:grid; gap:10px;
  grid-template-columns:1fr repeat(3,100px); margin:7px 0 13px; padding:10px 12px;
}
.connection-time-row>b { color:var(--text-muted); font-size:11px; }
.connection-meta-grid { display:grid; gap:12px; grid-template-columns:repeat(4,minmax(0,1fr)); margin-top:15px; }
.connection-meta-grid .connection-check { align-content:center; display:flex; gap:8px; }
.connection-meta-grid .connection-check input { margin:1px 0 0; width:auto; }
.connection-editor-actions { align-items:center; display:flex; gap:10px; justify-content:flex-end; margin-top:14px; }
.connection-editor-actions span,#exchMsg { color:var(--serious); font-size:12px; }
.connection-metric-grid { display:grid; gap:10px; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
.connection-metric-grid article { background:#f4f6f7; border-radius:8px; display:grid; gap:4px; padding:13px; }
.connection-metric-grid span { color:var(--text-muted); font-size:10px; font-weight:700; text-transform:uppercase; }
.connection-metric-grid b { color:var(--pv8-navy); font-size:17px; }
.connection-candidate-grid { display:grid; gap:11px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.connection-candidate-card { border:1px solid #dce1e4; border-radius:9px; padding:13px; }
.connection-candidate-card header { align-items:flex-start; display:flex; gap:10px; justify-content:space-between; }
.connection-candidate-card header>div { display:grid; gap:2px; }
.connection-candidate-card header small { color:var(--text-muted); font-size:10.5px; }
.connection-candidate-card header label { align-items:center; display:flex; font-size:9.5px; gap:4px; }
.connection-candidate-card dl { display:grid; gap:7px; grid-template-columns:repeat(2,minmax(0,1fr)); margin:12px 0 8px; }
.connection-candidate-card dl div { background:#f5f6f7; border-radius:5px; padding:7px; }
.connection-candidate-card dt { color:var(--text-muted); font-size:9px; font-weight:700; text-transform:uppercase; }
.connection-candidate-card dd { font-size:10.5px; margin:2px 0 0; }
.connection-candidate-card p { color:var(--text-muted); font-size:11px; line-height:1.4; margin:8px 0 0; }
.connection-evidence-section { display:grid; gap:18px; grid-template-columns:1.7fr 1fr; }
.connection-evidence-section>div>p,.connection-evidence-section aside>p { color:var(--text-muted); font-size:11.5px; }
.connection-evidence-section aside { background:#f3f6f7; border-radius:8px; padding:15px; }
.connection-evidence-section aside ul { list-style:none; margin:12px 0; padding:0; }
.connection-evidence-section aside li { font-size:11.5px; margin:5px 0; }
.connection-evidence-section aside li.complete { color:#24725a; }
.connection-evidence-section aside li.missing { color:#8b6732; }
.connection-source-list { display:grid; gap:8px; }
.connection-public-signal { background:#f4f6f7; border-radius:7px; display:grid; gap:2px; margin:10px 0; padding:10px 12px; }
.connection-public-signal b { color:var(--pv8-navy); font-size:11px; text-transform:capitalize; }
.connection-public-signal span { font-size:11.5px; }
.connection-public-signal small { color:var(--text-muted); font-size:10px; }
.grid-context-section { border-top:3px solid #2f5571 !important; }
.grid-context-intro { color:var(--text-secondary); font-size:12.5px; margin:-5px 0 15px; max-width:850px; }
.grid-context-refresh-state { align-items:center; display:flex; gap:9px; }
.grid-context-refresh-state>span { color:var(--text-muted); font-size:10.5px; }
.grid-context-grid { display:grid; gap:10px; grid-template-columns:repeat(4,minmax(0,1fr)); }
.grid-context-card { background:#f8f9fa; border:1px solid #dce2e5; border-top:3px solid #6b7f8d; border-radius:8px; display:grid; gap:8px; min-height:205px; padding:13px; }
.grid-context-card.curtailment { border-top-color:#986044; }
.grid-context-card.capacity { border-top-color:#365973; }
.grid-context-card.load { border-top-color:#4e6f8b; }
.grid-context-card.stress { border-top-color:#8a7240; }
.grid-context-card header { align-items:center; display:flex; gap:7px; justify-content:space-between; }
.grid-context-card header>span { color:var(--text-muted); font-size:9.5px; font-weight:750; letter-spacing:.04em; text-transform:uppercase; }
.grid-context-card header>small { color:var(--text-muted); font-size:8.5px; max-width:125px; text-align:right; text-transform:capitalize; }
.grid-context-card>b { color:var(--pv8-navy); font-size:16px; line-height:1.2; }
.grid-context-card>p { color:var(--text-muted); font-size:10.5px; line-height:1.45; margin:0; }
.grid-context-card dl { align-self:end; display:grid; gap:6px; grid-template-columns:repeat(2,minmax(0,1fr)); margin:0; }
.grid-context-card dl>div { border-left:2px solid #d4dbdf; display:grid; gap:2px; padding-left:7px; }
.grid-context-card dt { color:var(--text-muted); font-size:8px; font-weight:700; text-transform:uppercase; }
.grid-context-card dd { color:var(--pv8-navy); font-size:10px; margin:0; }
.grid-context-lower { display:grid; gap:16px; grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr); margin-top:15px; }
.grid-context-lower>aside { background:#f4f6f7; border-radius:8px; padding:13px; }
.grid-context-actions { display:grid; gap:7px; list-style:none; margin:9px 0 0; padding:0; }
.grid-context-actions li { align-items:flex-start; border-top:1px solid #dce1e4; display:grid; gap:7px; grid-template-columns:90px 1fr auto; padding-top:7px; }
.grid-context-actions li:first-child { border-top:0; padding-top:0; }
.grid-context-actions li>span { color:#805f31; font-size:8px; font-weight:750; text-transform:uppercase; }
.grid-context-actions li>div { display:grid; gap:2px; }
.grid-context-actions b { color:var(--pv8-navy); font-size:10.5px; }
.grid-context-actions small { color:var(--text-muted); font-size:9.5px; line-height:1.35; }
.grid-context-sources { border:1px solid #dce1e4; border-radius:8px; padding:12px 13px; }
.grid-context-sources summary { color:var(--pv8-navy); cursor:pointer; font-size:11.5px; font-weight:700; }
.grid-context-sources>p { color:var(--text-muted); font-size:10.5px; line-height:1.4; }
.grid-context-source-list { display:grid; gap:8px; grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:9px; }
.grid-context-source { border:1px solid #dce1e4; border-radius:7px; display:grid; gap:6px; padding:10px; }
.grid-context-source header,.grid-context-source footer { align-items:flex-start; display:flex; gap:8px; justify-content:space-between; }
.grid-context-source header>div { display:grid; gap:2px; }
.grid-context-source header>div>span,.grid-context-source header>span { color:var(--text-muted); font-size:8px; text-transform:uppercase; }
.grid-context-source header b { color:var(--pv8-navy); font-size:10.5px; }
.grid-context-source p { color:var(--text-muted); font-size:9.5px; line-height:1.35; margin:0; }
.grid-context-source-classes { display:flex; flex-wrap:wrap; gap:3px; }
.grid-context-source-classes span { background:#e7ecef; border-radius:9px; color:#3c5365; font-size:7.5px; padding:3px 5px; }
.grid-context-source footer a { color:var(--series-1); font-size:9.5px; font-weight:650; }
.grid-context-source footer small { color:var(--text-muted); font-size:8px; text-align:right; }
#gridContextMsg { color:var(--serious); display:block; font-size:11px; margin-top:9px; }
.connection-resume-note { border-left:1px solid #9bb3c3; font-weight:650; margin-left:auto; padding-left:14px; }
.connection-source-list article { border-left:3px solid #889aa6; display:grid; gap:3px; padding:7px 10px; }
.connection-source-list article>div { display:flex; gap:9px; justify-content:space-between; }
.connection-source-list article>div span,.connection-source-list small { color:var(--text-muted); font-size:10px; }
.connection-source-list a { color:var(--series-1); font-size:12px; font-weight:650; }
.grid-connector-list { display:grid; gap:10px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.grid-connector-card { border:1px solid #d7dde0; border-radius:9px; display:grid; gap:7px; padding:13px; }
.grid-connector-card.owner-data { background:#f2f6f8; border-color:#baccd7; }
.grid-connector-card header { align-items:flex-start; display:flex; gap:12px; justify-content:space-between; }
.grid-connector-card header>div { display:grid; gap:3px; }
.grid-connector-card header>div>span { color:var(--text-muted); font-size:9px; font-weight:750; text-transform:uppercase; }
.grid-connector-card header b { color:var(--pv8-navy); font-size:12.5px; }
.grid-connector-card p,.grid-connector-card small { color:var(--text-muted); font-size:10.5px; margin:0; }
.grid-connector-card>a { color:var(--series-1); font-size:11px; font-weight:650; width:max-content; }
.grid-connector-status { background:#eee9df; border-radius:11px; color:#785f32; flex:none; font-size:8.5px; font-weight:750; padding:4px 7px; text-transform:uppercase; }
.grid-connector-status.ready { background:#d8eee5; color:#165a45; }
.grid-connector-consent { border-top:1px solid #d1dbe2; display:grid; gap:8px; margin-top:3px; padding-top:9px; }
.grid-connector-consent label { align-items:flex-start; display:flex; font-size:10.5px; gap:7px; line-height:1.35; }
.grid-connector-consent input { margin-top:2px; }
.grid-connector-actions { align-items:center; border-top:1px solid #d1dbe2; display:flex; gap:10px; justify-content:space-between; margin-top:3px; padding-top:9px; }
.connection-text-action { background:none; border:0; color:var(--serious); cursor:pointer; font-size:10.5px; padding:5px; }
#gridConnectorMsg { color:var(--serious); display:block; font-size:11.5px; margin-top:9px; }
.connection-share-panel { align-items:center; display:grid; gap:18px; grid-template-columns:1.25fr 1fr; }
.connection-share-panel p { color:var(--text-muted); font-size:12px; margin:6px 0 0; }
.connection-consent { display:grid; gap:10px; }
.connection-consent label { align-items:flex-start; display:flex; font-size:11.5px; gap:8px; line-height:1.4; }
.connection-consent input { margin-top:2px; }
.connection-next-actions { align-items:center; display:flex; gap:12px; justify-content:flex-end; }
.connection-next-actions span { color:var(--text-muted); font-size:11px; }
.connection-market-section { margin-top:2px; }
.connection-brief-grid { display:grid; gap:11px; grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:14px; }
.connection-brief-card { border:1px solid #dbe0e3; border-radius:9px; display:grid; gap:11px; padding:14px; }
.connection-brief-card header,.connection-brief-card footer { align-items:center; display:flex; gap:10px; justify-content:space-between; }
.connection-brief-card header>div { display:grid; gap:1px; }
.connection-brief-card header span,.connection-brief-card footer small { color:var(--text-muted); font-size:10.5px; }
.connection-brief-capacity { display:grid; gap:5px; grid-template-columns:repeat(2,minmax(0,1fr)); list-style:none; margin:0; padding:0; }
.connection-brief-capacity li { background:#f4f6f7; border-radius:6px; display:grid; gap:1px; padding:7px; }
.connection-brief-capacity span,.connection-brief-capacity small { color:var(--text-muted); font-size:9px; text-transform:uppercase; }
.connection-brief-capacity b { color:var(--pv8-navy); font-size:12px; }
.connection-brief-uses { display:flex; flex-wrap:wrap; gap:5px; }
.connection-brief-uses span { background:#e8eef1; border-radius:10px; color:#364d5f; font-size:9.5px; padding:4px 7px; }
.connection-brief-card>p { color:var(--text-muted); font-size:10.5px; margin:0; }
.connection-market-empty { color:var(--text-muted); display:grid; font-size:12px; gap:3px; padding:14px 0; }
.connection-empty { text-align:center; }

/* Engine 11 — Grid value & connection strategy. It shares the evidence language
   of Connection Exchange but is a normal workspace, not a modal. */
.grid-capacity-module { display:grid; gap:14px; max-width:1160px; padding:4px 0 34px; }
.grid-capacity-module>section,.grid-capacity-module>footer { background:#fff; border:1px solid var(--border); border-radius:11px; padding:18px; }
.grid-capacity-hero { align-items:flex-start; display:flex; gap:20px; justify-content:space-between; padding:10px 2px 4px; }
.grid-capacity-hero h1 { color:var(--pv8-navy); font-size:clamp(25px,3vw,39px); letter-spacing:-.035em; margin:6px 0 7px; }
.grid-capacity-hero p { color:var(--text-muted); font-size:13.5px; margin:0; max-width:780px; }
.grid-capacity-hero>.chip { flex:none; margin-top:22px; max-width:260px; padding:7px 10px; text-align:center; }
.grid-capacity-test { align-items:end; display:grid; gap:14px; grid-template-columns:minmax(280px,1fr) 190px auto; }
.grid-capacity-test h2,.grid-capacity-provenance h2,.grid-connectors-section h2,.grid-context-section h2 { color:var(--pv8-navy); font-size:18px; margin:4px 0; }
.grid-capacity-test p { color:var(--text-muted); font-size:11.5px; margin:0; }
.grid-capacity-test label { color:var(--text-muted); display:grid; font-size:10px; font-weight:700; gap:5px; text-transform:uppercase; }
.grid-capacity-test input { border:1px solid var(--border); border-radius:7px; color:var(--pv8-navy); font:inherit; font-size:13px; padding:10px; }
.grid-capacity-truth-grid { display:grid; gap:10px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.grid-capacity-truth { background:#fff; border:1px solid var(--border); border-radius:10px; display:grid; gap:5px; padding:16px; }
.grid-capacity-truth:before { background:#9aa2a7; border-radius:2px; content:""; height:3px; width:32px; }
.grid-capacity-truth.confirmed:before { background:var(--series-1); }
.grid-capacity-truth.public:before { background:var(--pv8-module-blue,#2b607f); }
.grid-capacity-truth.fit:before { background:var(--pv8-solar,#d8a035); }
.grid-capacity-truth>span { color:var(--text-muted); font-size:10px; font-weight:700; text-transform:uppercase; }
.grid-capacity-truth>b { color:var(--pv8-navy); font-size:20px; }
.grid-capacity-truth>small { color:var(--text-muted); font-size:10.5px; }
.grid-capacity-provenance { display:grid; gap:14px; }
.grid-capacity-source-columns { display:grid; gap:14px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.grid-capacity-source-columns>div { background:#f7f8f9; border:1px solid var(--border); border-radius:9px; padding:14px; }
.grid-capacity-source-columns h3 { color:var(--pv8-navy); font-size:14px; margin:0 0 4px; }
.grid-capacity-source-columns>div>p { color:var(--text-muted); font-size:10.5px; margin:0 0 10px; }
.grid-capacity-source-grid { display:grid; gap:8px; }
.grid-capacity-source-card { background:#fff; border:1px solid var(--border); border-radius:7px; display:grid; gap:7px; padding:10px; }
.grid-capacity-source-card header { display:grid; gap:2px; }
.grid-capacity-source-card header>span { color:var(--series-1); font-size:8.5px; font-weight:750; letter-spacing:.06em; text-transform:uppercase; }
.grid-capacity-source-card header>b { color:var(--pv8-navy); font-size:11.5px; }
.grid-capacity-source-card p { color:var(--text-muted); font-size:10px; margin:0; }
.grid-capacity-source-card footer { align-items:center; display:flex; gap:10px; justify-content:space-between; }
.grid-capacity-source-card footer a { color:var(--series-1); font-size:10.5px; font-weight:650; }
.grid-capacity-source-card footer small { color:var(--text-muted); font-size:9px; text-align:right; }
.grid-capacity-boundaries { background:#f8f9fa !important; }
.grid-capacity-boundaries ul { color:var(--text-muted); display:grid; font-size:11px; gap:5px; margin:9px 0 0; padding-left:19px; }
.grid-capacity-actions { align-items:center; display:flex; flex-wrap:wrap; gap:9px; }
.grid-capacity-loading { color:var(--text-muted); padding:28px 4px; }
.grid-capacity-loading h2 { color:var(--pv8-navy); margin:7px 0; }
.grid-strategy-module { max-width:1240px; }
.grid-strategy-nav { background:#edf1f3; border:1px solid #d8dfe3; border-radius:12px; display:grid; gap:4px; grid-template-columns:repeat(4,minmax(0,1fr)); padding:5px; position:sticky; top:8px; z-index:12; }
.grid-strategy-nav button { background:transparent; border:0; border-radius:8px; color:#525c64; cursor:pointer; font:inherit; font-size:12px; font-weight:700; min-height:46px; padding:10px 12px; text-align:left; }
.grid-strategy-nav button:hover { color:var(--series-1); }
.grid-strategy-nav button.active { background:#fff; box-shadow:0 2px 9px rgba(15,30,42,.09); color:var(--pv8-navy); }
.grid-strategy-layer { display:grid; gap:14px; }
.grid-strategy-layer[hidden] { display:none !important; }
.grid-strategy-layer>section,.grid-strategy-layer>details,.grid-strategy-layer>footer { background:#fff; border:1px solid var(--border); border-radius:11px; padding:18px; }
.grid-decision-summary { display:grid; gap:0; grid-template-columns:repeat(3,minmax(0,1fr)); padding:0 !important; overflow:hidden; }
.grid-decision-summary article { border-right:1px solid var(--border); display:grid; gap:7px; min-height:118px; padding:18px; }
.grid-decision-summary article:last-child { border-right:0; }
.grid-decision-summary span,.grid-value-hero span,.grid-action-summary>div>span { color:#6e7880; font-size:10px; font-weight:700; text-transform:uppercase; }
.grid-decision-summary p { color:var(--pv8-navy); font-size:14px; font-weight:650; line-height:1.45; margin:0; }
.grid-capacity-map-section #gridCapMapWrap { border:1px solid var(--border); border-radius:10px; overflow:hidden; }
.grid-capacity-map-section #gridCapCoverage { margin-top:8px; }
.grid-value-hero { align-items:center; background:var(--pv8-navy) !important; color:#fff; display:grid; gap:24px; grid-template-columns:minmax(240px,.75fr) minmax(320px,1.25fr); }
.grid-value-hero>div { display:grid; gap:4px; }
.grid-value-hero span,.grid-value-hero small { color:#bec9d0; }
.grid-value-hero b { font-size:clamp(25px,3vw,38px); letter-spacing:-.035em; }
.grid-value-hero p { color:#e5eaee; font-size:15px; line-height:1.55; margin:0; }
.grid-option-grid { background:transparent !important; border:0 !important; display:grid; gap:12px; grid-template-columns:repeat(3,minmax(0,1fr)); padding:0 !important; }
.grid-option-card { background:#fff; border:1px solid var(--border); border-radius:11px; display:grid; gap:13px; padding:17px; }
.grid-option-card.positive { border-top:4px solid var(--series-1); }
.grid-option-card.negative { border-top:4px solid #b33d3d; }
.grid-option-card.incomplete { border-top:4px solid #c5a04b; }
.grid-option-card header { display:grid; gap:11px; }
.grid-option-card header span { color:#6e7880; font-size:9px; font-weight:750; text-transform:uppercase; }
.grid-option-card h3 { color:var(--pv8-navy); font-size:16px; margin:2px 0 0; }
.grid-option-card header>b { color:var(--pv8-navy); font-size:20px; }
.grid-option-card p,.grid-option-card>small { color:var(--text-muted); font-size:11px; line-height:1.45; margin:0; }
.grid-option-card dl { display:grid; gap:7px; margin:0; }
.grid-option-card dl div { align-items:center; border-top:1px solid var(--border); display:flex; justify-content:space-between; padding-top:7px; }
.grid-option-card dt { color:var(--text-muted); font-size:10px; }
.grid-option-card dd { color:var(--pv8-navy); font-size:11px; font-weight:700; margin:0; }
.grid-value-inputs { display:grid; gap:15px; }
.grid-value-inputs>header,.grid-monitor-config>header { align-items:flex-start; display:flex; gap:20px; justify-content:space-between; }
.grid-value-inputs h2,.grid-monitor-config h2,.grid-action-summary h2,.grid-service-layers h2,.grid-capacity-boundaries h2 { color:var(--pv8-navy); font-size:18px; margin:0 0 4px; }
.grid-value-inputs header p,.grid-monitor-config header p { color:var(--text-muted); font-size:11.5px; margin:0; }
.grid-assumption-grid { display:grid; gap:10px; grid-template-columns:repeat(4,minmax(0,1fr)); }
.grid-assumption-grid label { background:#f7f8f9; border:1px solid var(--border); border-radius:8px; display:grid; gap:5px; padding:10px; }
.grid-assumption-grid label>span { color:#4f5a61; font-size:10.5px; font-weight:700; }
.grid-assumption-grid label small { color:var(--text-muted); font-weight:500; }
.grid-assumption-grid input { background:#fff; border:1px solid #cfd6da; border-radius:6px; color:var(--pv8-navy); font:inherit; font-size:13px; padding:8px; width:100%; }
.grid-assumption-grid em { color:#858d93; font-size:8.5px; font-style:normal; text-transform:uppercase; }
.grid-monitor-config { display:grid; gap:13px; }
.grid-monitor-config>header>span { background:#e9eef1; border-radius:12px; color:var(--series-1); font-size:10px; font-weight:750; padding:5px 9px; }
.grid-monitor-subjects { display:flex; flex-wrap:wrap; gap:7px; }
.grid-monitor-subjects label { background:#f4f6f7; border:1px solid var(--border); border-radius:18px; color:#424d55; font-size:11px; padding:7px 10px; }
.grid-monitor-toggle { align-items:center; color:var(--pv8-navy); display:flex; font-size:12px; gap:8px; }
.grid-capacity-provenance>summary { color:var(--pv8-navy); cursor:pointer; font-size:14px; font-weight:700; }
.grid-capacity-provenance[open]>summary { margin-bottom:16px; }
.grid-action-summary { display:grid; gap:24px; grid-template-columns:minmax(260px,.75fr) minmax(420px,1.25fr); }
.grid-action-summary>div>p { color:var(--text-muted); font-size:12px; line-height:1.5; }
.grid-execution-grid { background:transparent !important; border:0 !important; display:grid; gap:11px; grid-template-columns:repeat(2,minmax(0,1fr)); padding:0 !important; }
.grid-execution-grid article { background:#fff; border:1px solid var(--border); border-radius:11px; display:grid; gap:7px; min-height:178px; padding:17px; }
.grid-execution-grid article>span { color:#6d777f; font-size:9px; font-weight:750; text-transform:uppercase; }
.grid-execution-grid h3 { color:var(--pv8-navy); font-size:16px; margin:0; }
.grid-execution-grid p { color:var(--text-muted); font-size:11px; line-height:1.5; margin:0 0 auto; }
.grid-execution-grid button { justify-self:start; }
.grid-service-layers ul { display:grid; gap:0; list-style:none; margin:12px 0; padding:0; }
.grid-service-layers li { align-items:center; border-top:1px solid var(--border); display:flex; gap:18px; justify-content:space-between; padding:11px 0; }
.grid-service-layers li b { color:var(--pv8-navy); font-size:12px; }
.grid-service-layers li span,.grid-service-layers>p { color:var(--text-muted); font-size:11px; }
.connection-module-handoff { align-items:center; background:#f0f4f6; border-color:#cfd9e0 !important; display:flex; gap:20px; justify-content:space-between; }
.connection-module-handoff h3 { color:var(--pv8-navy); margin:4px 0; }
.connection-module-handoff p { color:var(--text-muted); font-size:11.5px; margin:0; max-width:720px; }

.module-choice { max-width:1040px; padding:18px 4px 28px; }
.module-choice h1 { color:var(--pv8-navy); font-size:clamp(25px,3vw,40px); letter-spacing:-.035em; margin:7px 0 8px; }
.module-choice>p { color:var(--text-muted); font-size:13.5px; max-width:760px; }
.module-choice-grid { display:grid; gap:10px; grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:20px; }
.module-choice-card { background:#fff; border:1px solid var(--border); border-radius:10px; color:var(--text-primary); cursor:pointer; display:grid; gap:5px 12px; grid-template-columns:38px minmax(0,1fr) auto; padding:16px; text-align:left; transition:border-color .15s,transform .15s,box-shadow .15s; }
.module-choice-card:hover,.module-choice-card:focus-visible { border-color:var(--series-1); box-shadow:0 7px 22px rgba(15,30,42,.08); outline:none; transform:translateY(-1px); }
.module-choice-card-mark { align-items:center; align-self:start; background:#e5ecf1; border-radius:9px; color:var(--series-1); display:flex; grid-row:1/3; height:36px; justify-content:center; position:relative; width:36px; }
.module-choice-card-icon { fill:none; height:19px; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; width:19px; }
.module-choice-card-mark i { align-items:center; background:var(--good,#0b7355); border:2px solid #fff; border-radius:50%; bottom:-5px; color:#fff; display:flex; font-size:8px; font-style:normal; font-weight:750; height:15px; justify-content:center; position:absolute; right:-5px; width:15px; }
.module-choice-card>b { align-self:start; color:var(--pv8-navy); font-size:14px; grid-column:2; grid-row:1; min-width:0; }
.module-choice-card>small { color:var(--text-muted); font-size:11px; grid-column:2; grid-row:2; line-height:1.4; min-width:0; }
.module-choice-card-status { align-self:start; color:var(--good,#0b7355); font-size:9px; font-weight:650; grid-column:3; grid-row:1; letter-spacing:.02em; white-space:nowrap; }

/* Connection-pooling chronology: time is never discarded in the primary
   view. The engineering duration curve remains an API output only. */
.pool-chart-shell { background:color-mix(in srgb,var(--surface-card,#fff) 94%,var(--series-1,#134a75)); border:1px solid var(--border); border-radius:12px; margin:12px 0 6px; padding:12px 14px 10px; }
.pool-chart-toolbar { align-items:center; display:flex; flex-wrap:wrap; gap:10px 18px; justify-content:space-between; margin-bottom:4px; }
.pool-range-group { align-items:center; display:flex; flex-wrap:wrap; gap:4px; }
.pool-range-group>span,.pool-chart-toolbar>label { color:var(--text-muted); font-size:11px; font-weight:650; }
.pool-range-group button { background:transparent; border:1px solid transparent; border-radius:999px; color:var(--text-muted); cursor:pointer; font:650 11px/1.2 var(--pv8-sans); padding:6px 10px; }
.pool-range-group button:hover,.pool-range-group button:focus-visible { border-color:var(--border-strong); color:var(--text-primary); outline:none; }
.pool-range-group button.active { background:var(--series-1); color:#fff; }
.pool-chart-toolbar select { border:1px solid var(--border-strong); border-radius:8px; font-size:12px; margin-left:6px; min-width:112px; padding:5px 8px; }
.pool-chart-svg { display:block; height:auto; max-height:290px; overflow:visible; width:100%; }
.pool-grid { stroke:var(--border); stroke-dasharray:3 5; stroke-width:1; }
.pool-axis { stroke:var(--border-strong); stroke-width:1; }
.pool-axis-label { fill:var(--text-muted); font:500 10px/1 var(--pv8-sans); }
.pool-before { fill:none; stroke:var(--text-primary); }
.pool-after { fill:none; stroke:var(--series-1); }
.pool-hover { fill:transparent; pointer-events:all; stroke:none; }
.pool-chart-legend { display:flex; gap:18px; justify-content:flex-end; margin:0 8px 2px; }
.pool-chart-legend span { color:var(--text-muted); font-size:10px; }
.pool-chart-legend span::before { border-top:3px solid var(--text-primary); content:""; display:inline-block; margin:0 6px 3px 0; width:18px; }
.pool-chart-legend .after::before { border-color:var(--series-1); }
.pool-chart-summary { color:var(--text-secondary); font-size:11px; line-height:1.45; margin-top:4px; }
.pool-interval-note { font-size:10px; margin-top:3px; }
.demo-data-banner { align-items:center; background:#fff8df; border:1px solid #e7c879; border-radius:8px; color:#765315; display:flex; gap:14px; margin-bottom:13px; padding:10px 13px; }
.demo-data-banner b { font-size:11px; letter-spacing:.08em; white-space:nowrap; }
.demo-data-banner span { font-size:11.5px; }

.libbtn.primary { background:var(--series-3); border-color:var(--series-3); color:#fff; }
.libbtn.primary:disabled { cursor:not-allowed; opacity:.45; }

/* -------------------------------------------------------------------------
   Specialist inputs — one quiet surface, following the Crypto workspace.

   The journey remains functional (autosave, validation, review), but its
   chrome no longer competes with the fields. Module-specific maps, warnings
   and evidence states keep their own stronger treatment where it carries
   meaning.
   ------------------------------------------------------------------------- */
.pv8-library .module-input-pane {
  background:var(--surface-1) !important;
  border:1px solid var(--border) !important;
  border-radius:10px !important;
  box-shadow:none !important;
  color:var(--text-primary) !important;
  margin:10px 0 18px !important;
  padding:14px 16px !important;
}
.pv8-library .module-input-pane > p.muted:first-of-type,
.pv8-library .module-input-pane > div.muted:first-of-type {
  color:var(--text-secondary);
  line-height:1.5;
  max-width:1040px;
}
.pv8-library .module-input-pane label {
  color:var(--text-secondary);
  font-size:12px;
  font-weight:450;
  line-height:1.3;
}
.pv8-library .module-input-pane input:not([type="radio"]):not([type="checkbox"]),
.pv8-library .module-input-pane select,
.pv8-library .module-input-pane textarea {
  margin-top:4px;
}
.pv8-library .module-input-pane input[type="radio"],
.pv8-library .module-input-pane input[type="checkbox"] {
  height:15px;
  min-height:0;
  width:15px;
}
.pv8-library .module-input-pane .rec-input-grid {
  align-items:end;
  gap:12px 16px;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
}
.pv8-library .module-input-pane .rec-input-grid > h3,
.pv8-library .module-input-pane .rec-input-grid > details,
.pv8-library .module-input-pane .rec-input-grid > .gate,
.pv8-library .module-input-pane .rec-input-grid > .muted,
.pv8-library .module-input-pane #recEvidenceStep {
  grid-column:1/-1;
}
.pv8-library .module-input-pane .rec-input-grid > label:has(> input[type="checkbox"]) {
  align-items:center;
  align-self:end;
  display:flex;
  gap:7px;
  min-height:36px;
}
.pv8-library .module-input-pane .module-journey-nav {
  align-items:baseline;
  border:0;
  border-bottom:1px solid var(--grid);
  display:grid;
  gap:6px 0;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:42px auto 50px;
  margin:10px 0 16px;
  padding:0 0 12px;
}
.pv8-library .module-input-pane .module-draft-status {
  align-items:center;
  grid-column:1;
  height:42px;
  font-size:11px;
  max-height:42px;
  min-height:42px;
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-width:none;
  white-space:nowrap;
}
.pv8-library .module-input-pane .module-draft-status::-webkit-scrollbar { display:none; }
.pv8-library .module-input-pane .module-journey-progress {
  gap:6px;
  grid-column:1/-1;
  margin-top:0;
}
.pv8-library .module-input-pane .module-journey-progress button,
.pv8-library .module-input-pane .module-journey-progress button:first-child {
  background:transparent;
  border:0;
  border-bottom:2px solid #e6eaec;
  box-sizing:border-box;
  height:58px;
  max-height:58px;
  min-height:58px;
  overflow:hidden;
  padding:6px 8px;
}
.pv8-library .module-input-pane .module-journey-progress button:disabled {
  opacity:.62;
}
.pv8-library .module-input-pane .module-journey-progress button[data-state="current"] {
  background:#f3f6f8;
  border-bottom-color:var(--series-1);
  box-shadow:none;
}
.pv8-library .module-input-pane .module-journey-progress button[data-state="blocked"] {
  background:#fff9f6;
  border-bottom-color:#d9a998;
}
.pv8-library .module-input-pane .module-journey-progress b {
  font-size:11.5px;
}
.pv8-library .module-input-pane .module-journey-readiness-overview {
  align-items:center;
  display:flex;
  grid-column:1/-1;
  height:50px;
  margin-top:0;
  max-height:50px;
  min-height:50px;
  overflow:hidden;
}
.pv8-library .module-input-pane .journey-readiness-banner {
  background:transparent;
  border-left-width:3px;
  box-sizing:border-box;
  max-height:44px;
  min-height:44px;
  overflow:hidden;
  padding:3px 0 3px 9px;
  width:100%;
}
.pv8-library .module-input-pane .journey-readiness-banner.blocked {
  background:#fff9f6;
}
.pv8-library .module-input-pane .module-journey-step-head {
  margin:0 0 14px;
}
.pv8-library .module-input-pane .module-journey-step-head h3 {
  font-size:18px;
  font-weight:650;
}
.pv8-library .module-input-pane .module-journey-step-head p {
  /* #717a80 was 4.14:1 on white — one notch below AA at 12 px. Use the
     shared secondary token so both palettes pass. */
  color:var(--text-secondary);
  font-size:12px;
}
.pv8-library .module-input-pane .module-input-section-active,
.pv8-library .module-input-pane .module-input-section-active.solution-card,
.pv8-library .module-input-pane.guided-journey-active > .solution-card,
.pv8-library .module-input-pane.guided-journey-active > section.solution-card {
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  margin:0 !important;
  padding:0 !important;
}
/* The module entry stack: the links row, the guidance it opens and the primer
   it unfolds. Owner, 2026-09-21: "make the upper row 'first run, new to wind,
   video, run with screening' a separate block with same semi-transparent
   oval". The row used to be four loose baselines floating over the first
   input while the two blocks under it already drew a soft tinted frame, so it
   joins the family rather than inventing a treatment: one rule, one surface,
   three blocks. It replaces three inline copies of the same declarations in
   showModuleDemo(), which also keeps them from drifting apart — and every
   byte of the shell is charged against the initial-parse ceiling. */
.pv8-library #moduleTutorialRow,
.pv8-library #moduleIntroBody,
.pv8-library #moduleTutorialUnfold {
  border:1px solid var(--border);
  border-radius:8px;
}
.pv8-library #moduleTutorialRow,
.pv8-library #moduleIntroBody {
  background:color-mix(in srgb,var(--series-1) 4%,transparent);
  padding:9px 12px;
}
.pv8-library #moduleIntroBody,
.pv8-library #moduleTutorialUnfold { margin-top:6px; }
/* The links sit on the block's centre, not on a shared text baseline: the
   screening-run control is a filled button among four 12.5 px links. */
.pv8-library #moduleTutorialRow {
  align-items:center;
  display:flex;
  flex-wrap:wrap;
  font-size:12.5px;
  gap:18px;
}
.pv8-library #moduleTutorialRow > a,
.pv8-library #moduleTutorialRow > button {
  min-width:0;
  max-width:100%;
  white-space:normal;
  overflow-wrap:anywhere;
}
/* The action is part of the shared strip even before primer enhancement. */
.pv8-library #tutQuickRunLink.pv8-button {
  min-height:0;
  padding:4px 10px;
  font-size:12px;
  line-height:1.3;
  border-radius:6px;
  box-shadow:none;
}
.pv8-library #moduleTutorialUnfold { overflow:hidden; }
.pv8-library .module-input-pane .module-objective-grid,
.pv8-library .module-input-pane .ev-sizing-choice,
.pv8-library .module-input-pane .agri-choice-grid,
.pv8-library .module-input-pane .land-objective-grid {
  gap:8px;
}
.pv8-library .module-input-pane .module-objective-grid > label,
.pv8-library .module-input-pane .ev-sizing-choice > label,
.pv8-library .module-input-pane .agri-choice,
.pv8-library .module-input-pane .land-objective-grid > label {
  background:#fafbfc;
  border-color:#e1e5e8;
  border-radius:7px !important;
  min-height:0;
  padding:11px 12px;
}
.pv8-library .module-input-pane .module-objective-grid > label.active,
.pv8-library .module-input-pane .ev-sizing-choice > label:has(input:checked),
.pv8-library .module-input-pane .agri-choice:has(input:checked),
.pv8-library .module-input-pane .land-objective-grid > label.active {
  background:#f0f4f7;
  border-color:#91a9b9;
  box-shadow:inset 3px 0 0 var(--series-1);
}
.pv8-library .module-input-pane .module-objective-grid b,
.pv8-library .module-input-pane .ev-sizing-choice b,
.pv8-library .module-input-pane .land-objective-grid b {
  font-size:14px;
  margin-bottom:3px;
}
.pv8-library .module-input-pane .module-objective-grid span,
.pv8-library .module-input-pane .ev-sizing-choice small,
.pv8-library .module-input-pane .agri-choice small,
.pv8-library .module-input-pane .land-objective-grid span {
  font-size:11.5px;
  line-height:1.4;
  margin-top:3px;
}
.pv8-library .module-input-pane .module-journey-actions {
  border-top:1px solid var(--grid);
  margin-top:16px;
  padding-top:12px;
}
.pv8-library .module-input-pane .module-journey-review {
  background:transparent;
  border:0;
  padding:0;
}
.pv8-library .module-input-pane .module-journey-review h3 {
  font-size:18px;
}
.pv8-library .module-input-pane .journey-review-section {
  border-color:var(--grid);
}

@media (max-width:760px) {
  .pv8-library .module-input-pane { padding:12px !important; }
  .pv8-library .module-input-pane .module-journey-nav {
    grid-template-columns:1fr;
    grid-template-rows:72px auto 72px;
  }
  .pv8-library .module-input-pane .module-draft-status {
    align-content:center;
    flex-wrap:wrap;
    height:72px;
    margin-top:0;
    max-height:72px;
    min-height:72px;
    overflow:hidden;
    white-space:normal;
  }
  .pv8-library .module-input-pane .module-journey-readiness-overview {
    height:72px;
    max-height:72px;
    min-height:72px;
  }
  .pv8-library .module-input-pane .journey-readiness-banner {
    max-height:66px;
    min-height:66px;
  }
}

@media (max-width:760px) {
  .module-choice-grid { grid-template-columns:1fr; }
  .module-choice-card { grid-template-columns:38px minmax(0,1fr); }
  .module-choice-card-status { display:none; }
  .demo-data-banner { align-items:flex-start; flex-direction:column; gap:3px; }
  .pv8-library .layout > div:first-child { box-shadow:0 8px 18px rgba(15,30,42,.035); }
  .portfolio-pulse { gap:8px; }
  .expert-match-modal { padding:0; }
  .expert-match-shell { border-radius:0; min-height:100%; }
  .expert-match-title,.expert-match-create,.expert-match-existing { padding-left:18px; padding-right:18px; }
  .owner-first-strip { align-items:flex-start; flex-direction:column; gap:3px; padding-left:18px; padding-right:18px; }
  .expert-form-grid,.expert-privacy-grid,.expert-fit-grid,.expert-candidate-facts,
  .expert-reference-picker,.expert-reference-fields { grid-template-columns:1fr; }
  .managed-review-assignment dl { grid-template-columns:1fr; }
  .expert-stepper button { font-size:10px; }
  .expert-grant-row { align-items:stretch; flex-direction:column; }
  .connection-optionality-modal { align-items:stretch; padding:0; }
  .connection-shell { border-radius:0; max-height:100vh; }
  .connection-title,.connection-shell main { padding-left:18px; padding-right:18px; }
  .connection-honesty-strip { align-items:flex-start; flex-direction:column; gap:3px; padding-left:18px; padding-right:18px; }
  .connection-capacity-grid,.connection-metric-grid,.connection-candidate-grid,
  .connection-evidence-section,.connection-share-panel,.connection-brief-grid,
  .grid-connector-list,.grid-context-grid,.grid-context-lower,
  .grid-context-source-list { grid-template-columns:1fr; }
  .connection-passport-row { grid-template-columns:1fr 125px; }
  .connection-passport-row .connection-source-field { grid-column:1/-1; }
  .connection-time-row { grid-template-columns:1fr 1fr 1fr; }
  .connection-time-row>b { grid-column:1/-1; }
  .connection-meta-grid { grid-template-columns:1fr 1fr; }
  .connection-passport-facts { grid-template-columns:1fr 1fr; }
  .connection-next-actions { align-items:stretch; flex-direction:column; }
  .grid-capacity-hero,.connection-module-handoff { align-items:stretch; flex-direction:column; }
  .grid-capacity-hero>.chip { margin-top:0; }
  .grid-capacity-test,.grid-capacity-truth-grid,.grid-capacity-source-columns { grid-template-columns:1fr; }
  .grid-strategy-nav { grid-template-columns:1fr 1fr; position:static; }
  .grid-decision-summary,.grid-value-hero,.grid-option-grid,.grid-action-summary,
  .grid-execution-grid { grid-template-columns:1fr; }
  .grid-decision-summary article { border-bottom:1px solid var(--border); border-right:0; }
  .grid-assumption-grid { grid-template-columns:1fr 1fr; }
  .grid-value-inputs>header,.grid-monitor-config>header { align-items:stretch; flex-direction:column; }
  .grid-context-actions li { grid-template-columns:78px 1fr; }
  .grid-context-actions li>button { grid-column:2; justify-self:start; }
  .grid-context-refresh-state { align-items:flex-end; flex-direction:column; }
}

/* behavioral-comfort layer (2026-08-26) */
.pv8-library .qi-pin {
  background:var(--soft, #f2f8fb);
  border-left:3px solid var(--pv8-accent, #11426b);
  border-radius:0 6px 6px 0;
  color:var(--text-secondary, #535c63);
  display:block;
  font-size:12px;
  font-weight:400;
  line-height:1.45;
  margin:6px 0 2px;
  max-width:520px;
  padding:7px 10px;
}

/* Help is supporting UI, not a primary action.  Keep every module's question
   mark legible while preventing dense input and results screens from turning
   into a field of dark accent dots. */
.pv8-library .qi {
  background:color-mix(in srgb, var(--series-1) 10%, #fff);
  border:1px solid color-mix(in srgb, var(--series-1) 20%, #fff);
  color:color-mix(in srgb, var(--series-1) 58%, #fff);
  font-weight:650;
}
.pv8-library .qi:hover,
.pv8-library .qi:focus {
  background:color-mix(in srgb, var(--series-1) 16%, #fff);
  border-color:color-mix(in srgb, var(--series-1) 32%, #fff);
  color:color-mix(in srgb, var(--series-1) 78%, #fff);
}
.pv8-library .qi:focus-visible {
  outline-color:color-mix(in srgb, var(--series-1) 55%, #fff);
}
.pv8-library .closure-strip { margin-top:12px; }
.pv8-library .journey-rerun-note { opacity:.85; }

/* The workspace boots from small portfolio summaries.  Opening one asset is
   a short, contained transition rather than a page-level loading state. */
.pv8-library .asset-opening {
  align-items:center;
  background:var(--surface-1, #f5f7f8);
  border-left:3px solid var(--series-1, #11426b);
  display:grid;
  gap:2px 10px;
  grid-template-columns:auto minmax(0,1fr);
  margin:10px 0;
  padding:12px 14px;
}
.pv8-library .asset-opening .spin8 { grid-row:1 / span 2; }
.pv8-library .asset-opening span:last-child {
  color:var(--text-muted);
  font-size:11.5px;
}
.pv8-library .asset-list-more {
  justify-content:center;
  margin:9px 0 2px;
  width:100%;
}
.pv8-library #assetList.asset-list-attention {
  animation:asset-list-acknowledgement 1.6s ease-out;
  border-radius:8px;
}
@keyframes asset-list-acknowledgement {
  0%,18% { background:color-mix(in srgb,var(--series-1) 14%,#fff); box-shadow:inset 4px 0 0 var(--series-1); }
  100% { background:transparent; box-shadow:inset 4px 0 0 transparent; }
}
@media (prefers-reduced-motion:reduce) {
  .pv8-library #assetList.asset-list-attention {
    animation:none;
    background:color-mix(in srgb,var(--series-1) 10%,#fff);
    box-shadow:inset 4px 0 0 var(--series-1);
  }
}

/* Irrigation's action layer leads with client delivery.  The recommendation,
   economics and evidence trail remain available without repeating an entire
   results page above Share and discuss / Go to market. */
.pv8-library .water-output-actions { margin-top:0; max-width:none; }
.pv8-library .water-output-support {
  border:1px solid var(--grid);
  border-radius:9px;
  margin-top:18px;
  max-width:920px;
}
.pv8-library .water-output-support > summary {
  align-items:center;
  color:var(--text-secondary);
  cursor:pointer;
  display:flex;
  justify-content:space-between;
  list-style:none;
  padding:12px 14px;
}
.pv8-library .water-output-support > summary::-webkit-details-marker { display:none; }
.pv8-library .water-output-support > summary b,
.pv8-library .water-output-support > summary small { display:block; }
.pv8-library .water-output-support > summary small { color:var(--text-muted); font-size:11px; margin-top:2px; }
.pv8-library .water-output-support[open] > summary > span:last-child { transform:rotate(45deg); }
.pv8-library .water-output-support-body { border-top:1px solid var(--grid); padding:14px; }

/* Owner-controlled recipient discovery. Candidate groups explain fit and
   provenance without marketplace ranks, sponsored order or bulk outreach. */
.rfi-shell {
  background:#fff; border-radius:10px; max-height:90vh; max-width:1040px;
  overflow:auto; padding:18px 20px; width:100%;
}
.rfi-owner-boundary {
  align-items:flex-start; background:#f0f4f7; border-left:4px solid var(--series-1);
  display:flex; gap:12px; margin:12px 0 8px; padding:10px 12px;
}
.rfi-owner-boundary b { flex:0 0 auto; }
.rfi-owner-boundary span { color:var(--text-secondary); font-size:12.5px; }
.rfi-locked-selection {
  align-items:flex-start; background:#f8fafb; border:1px solid color-mix(in srgb,var(--series-1) 28%,#fff);
  border-radius:7px; display:flex; gap:12px; margin:8px 0 12px; padding:9px 11px;
}
.rfi-locked-selection b { color:var(--series-1); flex:0 0 auto; font-size:12px; }
.rfi-locked-selection span { color:var(--text-secondary); font-size:11.5px; }
.rfi-recipient-brief { border:1px solid var(--grid); border-radius:8px; margin:12px 0; padding:0; }
.rfi-recipient-brief > summary { cursor:pointer; font-weight:700; padding:11px 13px; }
.rfi-recipient-brief > dl {
  border-top:1px solid var(--grid); display:grid;
  grid-template-columns:120px minmax(0,1fr); margin:0; padding:10px 13px 2px;
}
.rfi-recipient-brief dt { color:var(--text-muted); font-size:11px; }
.rfi-recipient-brief dd { font-size:12px; margin:0 0 7px; }
.rfi-brief-columns { display:grid; gap:18px; grid-template-columns:repeat(2,minmax(0,1fr)); padding:2px 13px 12px; }
.rfi-brief-columns b { font-size:12px; }
.rfi-brief-columns ul { margin:5px 0 0 17px; }
.rfi-brief-columns li { color:var(--text-secondary); font-size:11.5px; }
.rfi-recipient-discovery { margin:15px 0; }
.rfi-section-heading { align-items:flex-end; display:flex; gap:16px; justify-content:space-between; margin-bottom:8px; }
.rfi-section-heading h3 { margin:0; }
.rfi-section-heading p { color:var(--text-muted); font-size:12px; margin:2px 0 0; }
.rfi-section-heading details { color:var(--text-secondary); font-size:10.5px; text-align:right; }
.rfi-section-heading summary { color:var(--series-1); cursor:pointer; font-weight:650; }
.rfi-recipient-groups { display:grid; gap:10px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.rfi-recipient-group { border:1px solid var(--grid); border-radius:8px; min-width:0; padding:10px; }
.rfi-recipient-group > header { align-items:flex-start; display:flex; gap:8px; justify-content:space-between; }
.rfi-recipient-group > header b { display:block; font-size:13px; }
.rfi-recipient-group > header small { color:var(--text-muted); display:block; font-size:10.5px; line-height:1.35; margin-top:2px; }
.rfi-recipient-group > header > span { background:var(--surface-1); border-radius:10px; color:var(--text-secondary); font:650 10px var(--pv8-mono); padding:2px 7px; }
.rfi-recipient-card { border-top:1px solid var(--grid); margin-top:9px; padding-top:9px; }
.rfi-recipient-card-head { align-items:flex-start; display:flex; gap:7px; justify-content:space-between; }
.rfi-recipient-card-head b { display:block; font-size:12.5px; }
.rfi-recipient-card-head small { color:var(--text-muted); display:block; font-size:10.5px; overflow-wrap:anywhere; }
.rfi-recipient-card-head .libbtn { flex:0 0 auto; font-size:10px; min-height:0; padding:5px 7px; }
.rfi-recipient-card p { color:var(--text-secondary); font-size:10.5px; line-height:1.4; margin:6px 0; }
.rfi-recipient-card p b { color:var(--text-primary); }
.rfi-recipient-card .rfi-recipient-gap { background:#fff9ed; padding:5px 6px; }
.rfi-recipient-provenance { color:var(--text-muted); font-size:10px; line-height:1.4; }
.rfi-recipient-provenance a { font-weight:600; }
.rfi-recipient-provenance small { color:var(--text-muted); }
.rfi-selected-heading { border-top:1px solid var(--grid); margin:17px 0 5px; padding-top:14px; }
.rfi-selected-recipient { background:var(--surface-1); margin-bottom:9px; min-height:38px; padding:8px 10px; }
.rfi-selected-recipient b { color:var(--text-primary); }
.rfi-recipient-fields { display:grid; gap:12px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.rfi-recipient-fields input { border:1px solid var(--border); border-radius:6px; box-sizing:border-box; padding:8px; width:100%; }
.rfi-run-link-choice {
  align-items:flex-start; background:#f0f4f7; border:1px solid #cfdae1;
  display:flex; gap:8px; margin-top:10px; padding:10px 11px;
}
.rfi-run-link-choice input { margin-top:2px; }
.rfi-run-link-choice b,.rfi-run-link-choice small { display:block; }
.rfi-run-link-choice small { color:var(--text-secondary); font-size:10.5px; line-height:1.45; margin-top:2px; }
.rfi-run-link-choice.disabled { background:var(--surface-1); border-color:var(--grid); }
.rfi-run-link-choice.disabled b,.rfi-run-link-choice.disabled small { color:var(--text-muted); }
.rfi-disclosure-approval { align-items:flex-start; background:#fff9ed; border:1px solid #ead9b2; display:flex; gap:8px; margin-top:10px; padding:9px 11px; }
.rfi-disclosure-approval input { margin-top:2px; }
.rfi-disclosure-approval b,.rfi-disclosure-approval small { display:block; }
.rfi-disclosure-approval small { color:var(--text-secondary); font-size:10.5px; margin-top:2px; }
@media(max-width:760px) {
  .rfi-shell { border-radius:0; max-height:100vh; padding:14px; }
  .rfi-owner-boundary { flex-direction:column; gap:3px; }
  .rfi-locked-selection { flex-direction:column; gap:3px; }
  .rfi-brief-columns,.rfi-recipient-groups,.rfi-recipient-fields { grid-template-columns:1fr; }
  .rfi-section-heading { align-items:flex-start; flex-direction:column; }
  .rfi-section-heading details { text-align:left; }
}

/* Workspace home (command center): one compact screen — a slim resume bar,
   a dense asset list and an activity rail (needs-you, used, never-used
   value routes) — instead of a tall hero above a wall of image cards. */
/* Workspace home — UI audit F6 and the home half of F17, with the density
   audit's D2/D4/D8/D9.

   The home drew six of its eleven large surfaces with one identical spec
   (1px solid #E3E7E9, radius 14, #fff) — including the wrapper the panels sit
   inside, so a container and its contents were drawn the same way and nothing
   on the screen used weight to say what mattered.  Three weights replace it:

     lead     — a brand-tinted fill, no border            (the resume bar)
     ordinary — a title over a hairline rule, no box      (every section)
     inset    — one filled, bordered list per section     (the rows)

   Collapsing the two top-level :root blocks would repoint --border product
   wide, so this works within it: the home simply stops asking for a border it
   was only inheriting out of habit. */
.pv8-library.workspace-home-mode > .asset-summary,
.pv8-library.workspace-home-mode .workspace-head { display:none; }
.pv8-library.workspace-home-mode .module-workspace { min-height:calc(100vh - 68px); }
/* the container is not drawn like its contents */
.pv8-library.workspace-home-mode .layout > .card {
  background:transparent;
  border:0;
  box-shadow:none;
}
.workspace-home { display:grid; gap:22px; }
/* (a) lead: the one surface with a fill, and the only one without a rule */
.workspace-home-resume {
  align-items:center;
  background:color-mix(in srgb,var(--series-3) 10%,var(--surface-1));
  border:0;
  border-radius:14px;
  display:flex;
  gap:18px;
  justify-content:space-between;
  padding:16px 20px;
}
.wh-resume-lead { flex:1 1 auto; min-width:0; }
.wh-eyebrow { color:var(--series-3); font:650 10px/1.2 var(--pv8-caption); letter-spacing:.06em; text-transform:uppercase; }
.pv8-library .workspace-home-resume h1 { color:var(--pv8-navy); font-size:clamp(19px,2.4vw,26px); font-weight:650; letter-spacing:-.02em; line-height:1.1; margin:5px 0 3px; }
.workspace-home-resume h1 b { font-weight:800; }
.wh-resume-sub { color:var(--text-secondary); font-size:12.5px; line-height:1.5; }
.workspace-home-hero-actions { display:flex; flex:0 0 auto; flex-wrap:wrap; gap:9px; justify-content:flex-end; }
/* D9: one filled control per region, and it is the one the copy asks for.
   The fill was on "+ Add asset" while START HERE pointed at the outlined
   "Open <asset>" beside it. */
.workspace-home-resume .pv8-button.primary { background:var(--pv8-primary); border-color:var(--pv8-primary); color:#fff; max-width:300px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.workspace-home-resume .pv8-button.primary:hover { background:var(--series-4); border-color:var(--series-4); color:#fff; }
.workspace-home-resume .pv8-button.secondary { background:transparent; border-color:var(--border); color:var(--series-3); }
.workspace-home-resume .pv8-button.secondary:hover { border-color:var(--series-3); }
/* two-column body: assets and what is coming on the left, the book's
   activity on the right */
.workspace-home-grid { align-items:start; display:grid; gap:20px 24px; grid-template-columns:minmax(0,1.55fr) minmax(0,1fr); }
.workspace-home-col { display:grid; gap:20px; min-width:0; }
/* (b) ordinary: a hairline rule, no border, no radius, no fill */
.workspace-home-section { border-top:1px solid var(--pv8-divider); min-width:0; padding-top:10px; }
.workspace-home-section-head { align-items:flex-end; display:flex; gap:20px; justify-content:space-between; margin-bottom:9px; }
.workspace-home-section-head > div:last-child { align-items:center; display:flex; flex-wrap:wrap; gap:7px; }
/* The shell all-capses .card h2. An uppercase run reads as an eyebrow, and
   the density audit counts it as chrome; these are section titles. */
.pv8-library .workspace-home-section h2 { color:var(--pv8-navy); font-size:15px; font-weight:650; letter-spacing:-.01em; margin:0 0 1px; text-transform:none; }
.workspace-home-section-head p { color:var(--text-muted); font-size:11.5px; margin:0; }
/* D9 again: four invitation treatments competed on this screen. A section's
   own secondary routes are text, so the filled control in the lead stays the
   only thing asking to be pressed. */
.workspace-home-section-head .libbtn {
  align-items:center;
  background:none;
  border:0;
  color:var(--series-1);
  display:inline-flex;
  font-size:12px;
  font-weight:650;
  margin:0;
  min-height:0;
  padding:2px 0;
  text-decoration:none;
}
.workspace-home-section-head .libbtn:hover { text-decoration:underline; }
/* (c) inset: one filled list per section */
.workspace-home-list { background:var(--surface-1); border:1px solid var(--border); border-radius:12px; display:grid; overflow:hidden; }
/* The owner's brief: Your assets scrolls, four rows high, the same way the
   left pane's asset browser does; Coming up and What changed follow it. */
.wh-scroll {
  max-height:calc(var(--wh-row,57px) * 4);
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-color:color-mix(in srgb,var(--series-1) 68%,transparent) var(--surface-2);
  scrollbar-gutter:stable;
  scrollbar-width:thin;
}
.wh-scroll-changed { --wh-row:58px; }
.wh-scroll::-webkit-scrollbar { width:8px; }
.wh-scroll::-webkit-scrollbar-track { background:var(--surface-2); }
.wh-scroll::-webkit-scrollbar-thumb { background:color-mix(in srgb,var(--series-1) 68%,transparent); border:2px solid var(--surface-2); border-radius:999px; }
.wh-scroll::-webkit-scrollbar-thumb:hover { background:color-mix(in srgb,var(--series-1) 88%,var(--surface-2)); }
/* one row shape, used by all three lists */
.wh-arow { align-items:center; border-top:1px solid var(--border); color:inherit; cursor:pointer; display:grid; gap:12px; grid-template-columns:38px minmax(0,1fr) auto; padding:10px 14px; text-decoration:none; }
.wh-arow:first-child { border-top:0; }
.wh-arow:hover,.wh-arow:focus-visible { background:var(--surface-0); outline:0; }
.wh-arow:focus-visible { box-shadow:inset 0 0 0 3px #9c7d47; }
.wh-chip { align-items:center; background:color-mix(in srgb,var(--series-3) 15%,var(--surface-0)); border-radius:8px; color:var(--series-3); display:flex; font:800 10.5px/1 var(--pv8-caption); height:30px; justify-content:center; width:38px; }
.wh-chip.due-high { background:color-mix(in srgb,var(--evidence-gap) 15%,var(--surface-0)); color:var(--evidence-gap); }
.wh-chip.due-med { background:color-mix(in srgb,var(--warning) 18%,var(--surface-0)); color:var(--warning); }
.wh-chip.due-low { background:color-mix(in srgb,var(--good) 14%,var(--surface-0)); color:var(--good); }
.wh-chip.wh-chip-date { background:var(--surface-0); color:var(--text-muted); font-weight:650; }
.wh-amain { display:grid; min-width:0; }
.wh-aname { align-items:center; color:var(--pv8-navy); display:flex; font-size:13.5px; font-weight:650; gap:8px; line-height:1.25; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wh-resumepill { background:color-mix(in srgb,var(--series-3) 14%,transparent); border-radius:20px; color:var(--series-3); font:700 9px/1 var(--pv8-caption); letter-spacing:.05em; padding:3px 7px; text-transform:uppercase; }
/* The capacity and the screened count are two facts in two segments, so the
   copy catalogue can translate each one without reassembling the line's
   figures; the separator is drawn, not written. */
.wh-ameta { color:var(--text-muted); font-size:11.5px; margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wh-ameta-more::before { content:"\00b7"; margin:0 .34em; }
.wh-ameta-wrap { line-height:1.35; overflow:hidden; white-space:normal;
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.wh-aright { align-items:flex-end; display:flex; flex:0 0 auto; flex-direction:column; gap:4px; text-align:right; }
/* D8: one mark per fact.  A row carries exactly one state chip; the meta line
   never restates it. */
.wh-verd { border-radius:20px; font:800 10.5px/1.3 var(--pv8-caption); padding:2px 8px; white-space:nowrap; }
.wh-verd.v-strong { background:color-mix(in srgb,var(--good) 14%,transparent); color:var(--good); }
.wh-verd.v-prom { background:color-mix(in srgb,var(--series-1) 14%,transparent); color:var(--series-1); }
.wh-verd.v-marg { background:color-mix(in srgb,var(--warning) 16%,transparent); color:var(--warning); }
.wh-verd.v-start { background:color-mix(in srgb,var(--text-muted) 14%,transparent); color:var(--text-muted); }
.wh-badge { background:color-mix(in srgb,var(--warning) 16%,transparent); border-radius:20px; color:var(--warning); font:800 10.5px/1.3 var(--pv8-caption); padding:2px 8px; }
.wh-arrow { color:var(--text-muted); font-weight:650; }
.wh-allclear { color:var(--text-muted); font-size:12px; line-height:1.5; padding:2px 0 4px; }
.workspace-home-more { background:transparent; border:0; color:var(--series-1); cursor:pointer; font-size:12px; font-weight:650; margin-top:8px; padding:4px 0; }
/* activity rail */
.workspace-home-rail { display:flex; flex-direction:column; gap:20px; min-width:0; }
/* engine chips (used + never-used value routes) */
.workspace-home-modules { display:flex; flex-wrap:wrap; gap:7px; }
.wh-mchip { align-items:center; background:var(--surface-0); border:1px solid var(--border); border-radius:20px; color:var(--text-primary); cursor:pointer; display:inline-flex; font:650 12px/1 var(--pv8-caption); gap:6px; padding:6px 11px; }
.wh-mchip:hover { border-color:var(--series-3); }
.wh-mchip.new { background:color-mix(in srgb,var(--series-3) 8%,var(--surface-0)); border-color:color-mix(in srgb,var(--series-3) 30%,var(--border)); color:var(--series-3); }
.wh-empty { color:var(--text-muted); font-size:11.5px; line-height:1.5; }
/* Raised from 980 px: between there and here the two columns squeezed the
   asset row until its capacity line truncated, and 1024x768 is the projector
   size the density audit measured. */
@media(max-width:1100px){
  .workspace-home-grid { grid-template-columns:1fr; }
}
@media(max-width:680px){
  .workspace-home { gap:16px; }
  .workspace-home-resume { align-items:flex-start; border-radius:13px; flex-direction:column; gap:12px; }
  .workspace-home-hero-actions,.workspace-home-resume .pv8-button { width:100%; }
  .workspace-home-resume .pv8-button.primary { max-width:none; }
  .workspace-home-section-head { align-items:flex-start; flex-direction:column; gap:11px; }
  .workspace-home-section-head > div:last-child { width:100%; }
  /* The state chip names an engine and a decision level, so on a phone it
     takes its own line under the meta rather than squeezing the asset's
     name out of the row. */
  .wh-arow { grid-template-columns:34px minmax(0,1fr); row-gap:6px; }
  .wh-aright { align-items:flex-start; grid-column:2; text-align:left; }
  .wh-verd { white-space:normal; }
  .wh-scroll { max-height:calc(var(--wh-row,57px) * 5.2); }
}
/* A long portfolio stays inside a compact asset browser instead of pushing
   the specialist-module navigation below the fold. */
.pv8-library .asset-browser {
  background:var(--surface-1);
  border:1px solid var(--border);
  border-radius:12px;
  margin:7px 10px 12px;
  overflow:hidden;
}
.pv8-library .asset-browser .asset-select-heading {
  border-bottom:1px solid var(--grid);
  padding:8px 9px;
}
.pv8-library .asset-select-copy { display:grid; gap:2px; }
.pv8-library .asset-select-copy small {
  color:var(--text-muted);
  font:500 9px/1.2 var(--pv8-sans);
  letter-spacing:0;
  text-transform:none;
}
.pv8-library .asset-browser #assetList {
  max-height:clamp(230px,36vh,410px);
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:6px;
  scrollbar-color:color-mix(in srgb,var(--series-1) 68%,transparent) var(--surface-2);
  scrollbar-gutter:stable;
  scrollbar-width:thin;
}
.pv8-library .asset-browser #assetList::-webkit-scrollbar { width:8px; }
.pv8-library .asset-browser #assetList::-webkit-scrollbar-track {
  background:var(--surface-2);
  border-radius:999px;
}
.pv8-library .asset-browser #assetList::-webkit-scrollbar-thumb {
  background:color-mix(in srgb,var(--series-1) 68%,transparent);
  border:2px solid var(--surface-2);
  border-radius:999px;
}
.pv8-library .asset-browser #assetList::-webkit-scrollbar-thumb:hover {
  background:color-mix(in srgb,var(--series-1) 88%,var(--surface-2));
}
.pv8-library .asset-browser #assetList .asset {
  margin-bottom:3px;
  min-height:0;
  padding:8px 9px;
}
.pv8-library .asset-browser #assetList .asset:last-child { margin-bottom:0; }
.pv8-library .asset-browser #assetList .asset > b {
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.pv8-library .asset-browser #assetList .asset > span {
  font-size:10.5px;
  line-height:1.25;
  margin-top:2px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.pv8-library .asset-browser #assetList .asset.sel {
  position:sticky;
  top:0;
  z-index:1;
}
.pv8-library .asset-browser #assetMap { padding:7px; }

/* Keep the Portfolio overview's copy of the asset picker on the same compact
   scrolling contract as the Library sidebar. */
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList {
  max-height:clamp(230px,36vh,410px);
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:6px;
  scrollbar-color:color-mix(in srgb,var(--series-1) 68%,transparent) var(--surface-2);
  scrollbar-gutter:stable;
  scrollbar-width:thin;
}
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList::-webkit-scrollbar { width:8px; }
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList::-webkit-scrollbar-track {
  background:var(--surface-2);
  border-radius:999px;
}
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList::-webkit-scrollbar-thumb {
  background:color-mix(in srgb,var(--series-1) 68%,transparent);
  border:2px solid var(--surface-2);
  border-radius:999px;
}
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList::-webkit-scrollbar-thumb:hover {
  background:color-mix(in srgb,var(--series-1) 88%,var(--surface-2));
}
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList .portfolio-asset-choice {
  margin-bottom:3px;
  min-height:0;
  padding:8px 9px;
}
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList .portfolio-asset-choice:last-child { margin-bottom:0; }
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList .portfolio-asset-choice > b,
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList .portfolio-asset-choice > span {
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.pv8-portfolio .portfolio-asset-browser #portfolioAssetList .portfolio-asset-choice.selected {
  position:sticky;
  top:0;
  z-index:1;
}
.pv8-portfolio .portfolio-asset-browser #portfolioAssetMap { padding:7px; }
@media(max-width:680px){
  .pv8-library .asset-browser #assetList,
  .pv8-portfolio .portfolio-asset-browser #portfolioAssetList { max-height:min(48vh,390px); }
}

/* Universal interaction and motion baseline. This final shared rule prevents
   keyboard and motion behaviour from drifting between specialist modules. */
:where(a,button,input,select,textarea,[tabindex]:not([tabindex="-1"])):focus-visible {
  outline:3px solid #e2ad31;
  outline-offset:3px;
}
/* Card-grid arrows move focus without silently changing the selected asset.
   These explicit rules beat older component-specific outline resets. */
.pv8-library [data-pv8-card]:focus-visible {
  outline:3px solid var(--series-1);
  outline-offset:3px;
}
.pv8-library .workspace-home-list [data-pv8-card]:focus-visible {
  outline-offset:-3px;
}
:where(button,.pv8-button,.libbtn,[role="button"]) { min-height:42px; }
.pv8-skip-link {
  background:#fff;
  border:2px solid #17466d;
  color:#101e2a;
  left:12px;
  padding:10px 14px;
  position:fixed;
  top:12px;
  transform:translateY(-160%);
  z-index:100000;
}
.pv8-skip-link:focus { transform:translateY(0); }
.pv8-sr-only {
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  height:1px;
  overflow:hidden;
  position:absolute;
  white-space:nowrap;
  width:1px;
}
@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after {
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    scroll-behavior:auto !important;
    transition-duration:.01ms !important;
  }
}
@media (forced-colors: active) {
  :where(button,.pv8-button,.libbtn,[role="button"]) { border:1px solid ButtonText; }
}

/* The 2026-08-31 editorial experiment is retained below for reference but is
   deliberately inactive. Product screens use the original PV8 modernist
   palette and sans-serif type system; public acquisition styling now lives in
   pv8-landing.css and cannot leak into authenticated workspaces. */
@media not all {
/* -------------------------------------------------------------------------
   PV8 premium editorial skin · 2026-08-31

   This is deliberately a presentation-only layer. The existing cards, IDs,
   data attributes and journey states remain untouched so assessment logic and
   saved-output behaviour continue to work exactly as before. The visual system
   takes its cues from premium health and product interfaces: warm paper,
   editorial display type, calm surfaces, precise hairlines and restrained
   motion. It is PV8's own palette and component language, not a brand clone.
   ------------------------------------------------------------------------- */
:root {
  --surface-0:#f3f0e9;
  --surface-1:#fbfaf7;
  --surface-2:#ebe6dd;
  --border:#d8d2c8;
  --grid:#e7e2da;
  --text-primary:#25251f;
  --text-secondary:#625f57;
  --text-muted:#817d73;
  --series-1:#1c364b;
  --series-2:#455e6f;
  --series-3:#1c364b;
  --series-4:#10273a;
  --good:#217154;
  --warning:#956b2f;
  --serious:#9d4338;
  --pv8-accent-soft:#e5e9eb;
  --pv8-ink-soft:#e9e5dc;
  --pv8-divider:#d8d2c8;
  --pv8-navy:#1f2930;
  --pv8-selected:#1c364b;
  --pv8-selected-ink:#fffdf8;
  --pv8-display:var(--pv8-github-sans);
  --pv8-shadow-sm:0 1px 1px rgba(39,36,30,.03),0 10px 30px rgba(39,36,30,.045);
  --pv8-shadow-md:0 2px 3px rgba(39,36,30,.035),0 20px 54px rgba(39,36,30,.085);
  --pv8-shadow-lg:0 28px 80px rgba(31,28,23,.12);
  --pv8-radius:20px;
  --pv8-radius-sm:14px;
}

html { background:var(--surface-0); scroll-behavior:smooth; }
body {
  background:
    radial-gradient(circle at 88% -10%,rgba(198,188,169,.22),transparent 32rem),
    var(--surface-0);
  color:var(--text-primary);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection { background:#d5dcdf; color:#172936; }
a { color:var(--series-1); text-decoration-color:rgba(28,54,75,.38); }
a:hover { color:var(--series-4); }

/* Quiet, persistent product chrome. */
.pv8-library > header,
.pv8-profile > header,
.pv8-form-page > header,
.pv8-welcome > header {
  background:rgba(251,250,247,.9);
  border-bottom:1px solid rgba(87,80,69,.16);
  box-shadow:none;
  min-height:76px;
  padding:15px clamp(20px,3vw,48px);
  -webkit-backdrop-filter:blur(18px) saturate(130%);
  backdrop-filter:blur(18px) saturate(130%);
}
.pv8-brand { align-items:center; gap:20px; }
.pv8-brand :is(h1,.pv8-wordmark) {
  color:#1e272d;
  font-size:23px;
  font-weight:650;
  letter-spacing:-.055em;
}
.pv8-brand :is(h1,.pv8-wordmark) span { color:#7f6c4c; }
.pv8-tagline {
  border-left:1px solid rgba(72,67,58,.22);
  color:#777168;
  font-size:9px;
  font-weight:600;
  letter-spacing:.11em;
  line-height:1.35;
  padding-left:20px;
}
.pv8-nav { gap:7px; }
.pv8-nav a,
.pv8-library .header-action {
  border-radius:999px;
  color:#5b5a53;
  font-size:12px;
  font-weight:550;
  padding:9px 12px;
  transition:background .18s ease,color .18s ease;
}
.pv8-nav a:hover,
.pv8-nav a[aria-current="page"],
.pv8-library .header-action:hover { background:#e9e5dc; color:#1d3140; }

/* Display hierarchy: serif is reserved for decisive page-level moments. */
.pv8-welcome .hero h1,
.workspace-home-hero h1,
.pv8-portfolio .hero h1,
.profile-title-row h1,
.module-choice h1,
.as-editorial-title {
  font-family:var(--pv8-display);
  font-weight:400;
  letter-spacing:-.045em;
  text-wrap:balance;
}
.eyebrow,
.pv8-library .eyebrow,
.workspace-home-card-label {
  color:#796642;
  font-size:9px;
  font-weight:700;
  letter-spacing:.13em;
  text-transform:uppercase;
}

/* Buttons feel tactile without looking software-heavy. */
.pv8-button,
.libbtn,
.pv8-form-page button,
.pv8-profile button,
.pv8-welcome .cta {
  border-radius:999px;
  box-shadow:none;
  font-weight:600;
  letter-spacing:-.01em;
  min-height:44px;
  padding:10px 18px;
  transition:background .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.pv8-button.primary,
.libbtn.primary,
.pv8-form-page button:not(.secondary),
.pv8-profile button:not(.secondary),
.pv8-welcome .cta:not(.ghost) {
  background:#1e303e;
  border-color:#1e303e;
  color:#fffdf8;
}
.pv8-button.primary:hover,
.libbtn.primary:hover,
.pv8-form-page button:not(.secondary):hover,
.pv8-profile button:not(.secondary):hover,
.pv8-welcome .cta:not(.ghost):hover {
  background:#10212f;
  border-color:#10212f;
  box-shadow:0 11px 28px rgba(27,43,55,.16);
  color:#fff;
  transform:translateY(-1px);
}
.pv8-button.secondary,
.libbtn:not(.primary),
.pv8-welcome .cta.ghost {
  background:rgba(251,250,247,.78);
  border-color:#cfc9be;
  color:#2e3233;
}
.pv8-button.secondary:hover,
.libbtn:not(.primary):hover,
.pv8-welcome .cta.ghost:hover {
  background:#fffdf9;
  border-color:#9e978b;
  color:#1e303e;
}
:where(a,button,input,select,textarea,[tabindex]:not([tabindex="-1"])):focus-visible {
  outline:2px solid #9c7d47;
  outline-offset:3px;
}

/* Shared premium card shell. Card semantics and click targets are unchanged. */
.pv8-library .card,
.pv8-portfolio #watchFeed,
.pv8-portfolio #opportunityMatrix,
.pv8-portfolio .asset,
.pv8-form-page .card,
.pv8-profile .card,
.profile-metrics,
.pv8-profile .readiness-banner,
.workspace-home-asset,
.pv8-library .workspace-home-module,
.module-choice-card,
.decision-step,
.solution-card,
.gate,
.run-record,
.opportunity-card {
  background:rgba(251,250,247,.94);
  border:1px solid rgba(111,103,90,.16);
  border-radius:var(--pv8-radius) !important;
  box-shadow:var(--pv8-shadow-sm);
}
.workspace-home-asset,
.pv8-library .workspace-home-module,
.module-choice-card,
.pv8-portfolio .asset {
  transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;
}
.workspace-home-asset:hover,
.workspace-home-asset:focus-visible,
.pv8-library .workspace-home-module:hover,
.module-choice-card:hover,
.module-choice-card:focus-visible,
.pv8-portfolio .asset:hover {
  border-color:rgba(72,89,99,.32);
  box-shadow:var(--pv8-shadow-md);
  transform:translateY(-3px);
}

/* Assessment workspace: warm navigation rail and calmer data canvas. */
.pv8-library { background:var(--surface-0); }
.asset-summary {
  background:#e9e5dc;
  border-bottom:1px solid rgba(91,84,72,.16);
  gap:1px;
}
.summary-cell {
  background:#f8f6f1;
  border-left:0;
  padding:15px clamp(15px,2vw,24px);
}
.summary-cell span { color:#817a6d; font-size:8.5px; letter-spacing:.1em; }
.summary-cell b { color:#262c30; font-size:15px; }
button.summary-cell:hover { background:#fffdf8; }
.pv8-library .layout > div:first-child {
  background:#ebe7df;
  border-right:1px solid rgba(91,84,72,.15);
}
.pv8-library .navigation-pane { background:transparent; box-shadow:none; }
.pv8-library .navigation-pane .asset-pane-head { padding-top:24px; }
.pv8-library .navigation-pane h2,
.pv8-library .workspace-home-section h2 { color:#262e33; }
.asset-links a,
.decision-nav a,
.pane-utility-links a,
.nav-section-toggle {
  border-radius:10px;
  color:#666158;
}
.asset-links a:hover,
.decision-nav a:hover,
.pane-utility-links a:hover,
.asset-links a.active,
.asset-links a[aria-current="page"] { background:rgba(255,253,248,.76); color:#172d3f; }
.pv8-library main,
.pv8-library .content-pane { background:transparent; }
.pv8-library .content-pane > .card { margin:18px; }

/* Opportunity Workspace home: composed, image-led, and deliberately spacious. */
.workspace-home { gap:40px; padding:clamp(22px,3.5vw,54px); }
.workspace-home-hero {
  background:
    radial-gradient(circle at 82% 18%,rgba(196,176,128,.18),transparent 22rem),
    linear-gradient(128deg,#182a38 0%,#273c4b 60%,#364b5a 100%);
  border:1px solid rgba(255,255,255,.08);
  border-radius:30px;
  box-shadow:var(--pv8-shadow-lg);
  min-height:290px;
  padding:clamp(34px,5vw,68px);
}
.workspace-home-hero::after { opacity:.32; }
.workspace-home-hero h1 {
  font-size:clamp(44px,5.3vw,72px);
  letter-spacing:-.055em;
  line-height:.94;
  max-width:850px;
}
.workspace-home-hero p { color:#d9dee0; font-size:15px; max-width:720px; }
.workspace-home-hero .pv8-button.primary { background:#eee3cb; border-color:#eee3cb; color:#232f37; }
.workspace-home-hero .pv8-button.primary:hover { background:#fff7e6; border-color:#fff7e6; color:#17232b; }
.workspace-home-hero .pv8-button.secondary { border-color:rgba(255,255,255,.35); }
.workspace-home-section-head { margin-bottom:19px; }
.workspace-home-asset { overflow:hidden; }
.workspace-home-asset-visual { height:124px; }
.workspace-home-asset-copy { padding:21px 22px 20px; }
.workspace-home-asset h3 { font-size:20px; font-weight:580; }
.workspace-home-card-actions { margin-top:16px; padding-top:14px; }
.pv8-library .workspace-home-module {
  border-radius:18px !important;
  min-height:112px;
  padding:19px;
}
.workspace-home-module-mark { background:#e5e8df; border-radius:50%; height:46px; width:46px; }

/* Portfolio: premium dashboard, still card-led and information dense. */
.pv8-portfolio .portfolio-main { background:var(--surface-0); }
.pv8-portfolio .hero.portfolio-hero {
  background:
    radial-gradient(circle at 88% 6%,rgba(202,180,129,.16),transparent 21rem),
    #192a37;
  border:0;
  border-radius:0 0 32px 32px;
  box-shadow:var(--pv8-shadow-md);
  min-height:310px;
  padding:clamp(42px,5vw,76px) clamp(28px,5vw,78px);
}
.pv8-portfolio .hero h1 {
  font-size:clamp(44px,5vw,70px);
  line-height:.96;
  max-width:900px;
}
.pv8-portfolio .hero p { color:#d1d7db; font-size:15px; }
.pv8-portfolio .hero .eyebrow { color:#d7c292; }
.pv8-portfolio .portfolio-hero .pv8-button.primary { background:#eee3cb; border-color:#eee3cb; color:#263036; }
.pv8-portfolio main { padding-top:36px; }
.portfolio-pulse {
  background:rgba(251,250,247,.94);
  border:1px solid rgba(111,103,90,.16);
  border-radius:22px;
  box-shadow:var(--pv8-shadow-sm);
  overflow:hidden;
}
.portfolio-pulse article { padding:24px 26px; }
.portfolio-pulse article + article { border-left-color:var(--grid); }
.portfolio-pulse b { font-family:var(--pv8-display); font-size:31px; font-weight:400; }
.pv8-portfolio .asset-head { min-height:108px; padding:21px 24px; }
.pv8-portfolio .asset-detail { background:#f7f4ee; border-radius:0 0 20px 20px; }
.pv8-portfolio .caret { background:#e9e5dc; }

/* Module journeys remain step-and-card driven; framing becomes more editorial. */
.module-journey-nav,
.module-journey-readiness-overview,
.module-journey-review { border-radius:18px; }
.module-journey-progress {
  background:#e8e4dc;
  border:0;
  border-radius:14px;
  gap:1px;
  overflow:hidden;
}
.module-journey-progress button { background:#f7f5ef; border:0; min-height:66px; }
.module-journey-progress button[data-state="current"] { background:#1e303e; color:#fff; }
.module-journey-step-head h3,
.module-journey-review h3 { color:#252e33; font-size:23px; font-weight:560; }
.pv8-library input,
.pv8-library select,
.pv8-library textarea,
.pv8-form-page input,
.pv8-form-page select,
.pv8-profile input,
.pv8-profile select,
.pv8-profile textarea {
  background:#fffdf9;
  border:1px solid #cfc9be;
  border-radius:12px;
  min-height:44px;
}
.pv8-library input:focus,
.pv8-library select:focus,
.pv8-library textarea:focus,
.pv8-form-page input:focus,
.pv8-form-page select:focus,
.pv8-profile input:focus,
.pv8-profile select:focus,
.pv8-profile textarea:focus {
  border-color:#63727c;
  box-shadow:0 0 0 4px rgba(52,75,91,.09);
  outline:0;
}

/* Public page: calm editorial first impression, no change to account flow. */
.pv8-welcome { background:var(--surface-0); }
.pv8-welcome .hero {
  background:
    radial-gradient(circle at 82% 10%,rgba(198,180,139,.22),transparent 27rem),
    linear-gradient(145deg,#f6f2ea 0%,#e7e9e2 100%);
  border-bottom:0;
  padding-bottom:clamp(64px,8vw,112px);
  padding-top:clamp(58px,7vw,102px);
}
.pv8-welcome .hero-grid { gap:clamp(42px,7vw,92px); }
.pv8-welcome .hero h1 {
  color:#212d35;
  font-size:clamp(54px,6.5vw,92px);
  line-height:.92;
  margin-bottom:30px;
  max-width:780px;
}
.pv8-welcome .hero p.hero-lede { color:#5e625d; font-size:19px; line-height:1.62; }
.pv8-welcome .hero-value-card {
  background:rgba(255,253,248,.58);
  border:1px solid rgba(102,95,83,.14);
  border-radius:18px;
  padding:17px 18px;
}
.pv8-welcome .teaser-embed,
.pv8-welcome .demo-video video { border-radius:24px; box-shadow:var(--pv8-shadow-lg); }
.pv8-welcome .modules,
.pv8-welcome .demo-video,
.pv8-welcome #accountPanel { border-bottom:0; padding-bottom:72px; padding-top:72px; }
.pv8-welcome .modules h2,
.pv8-welcome .demo-video h2,
.pv8-welcome .panel-cols h3 {
  color:#263036;
  font-family:var(--pv8-display);
  font-size:clamp(30px,4vw,48px);
  font-weight:400;
}
.pv8-welcome .mod,
.pv8-welcome .price-card {
  background:rgba(251,250,247,.92);
  border:1px solid rgba(111,103,90,.16);
  border-radius:20px;
  box-shadow:var(--pv8-shadow-sm);
  padding:20px;
}
.pv8-welcome .mod { min-height:150px; }
.pv8-welcome .mod .mod-ico { margin-bottom:15px; }

/* Profile and form pages become paper-like, approachable work surfaces. */
.pv8-form-page,
.pv8-profile { background:var(--surface-0); }
.pv8-form-page > form { max-width:980px; padding-top:58px; }
.pv8-form-page .card,
.pv8-profile .card { padding:26px; }
.pv8-form-page .card h2,
.pv8-profile .card h2 { color:#283136; font-size:17px; }
.pv8-profile .profile-nav {
  background:rgba(243,240,233,.88);
  border-radius:999px;
  padding:8px;
  top:10px;
}
.pv8-profile .profile-nav a { border-radius:999px; padding:10px 14px; }
.profile-title-row { padding-top:30px; }
.profile-title-row h1 { font-size:clamp(38px,4.6vw,60px); }
.profile-metrics { overflow:hidden; }
.profile-metric { padding:20px; }
.profile-metric b { font-family:var(--pv8-display); font-size:27px; font-weight:400; }

@media (max-width:900px) {
  .pv8-library > header,
  .pv8-profile > header,
  .pv8-form-page > header,
  .pv8-welcome > header { padding-left:18px; padding-right:18px; }
  .pv8-tagline { display:none; }
  .workspace-home { padding:22px 18px 42px; }
  .workspace-home-hero { border-radius:23px; padding:34px 24px; }
  .pv8-portfolio .hero.portfolio-hero { border-radius:0 0 24px 24px; }
}
@media (max-width:680px) {
  .pv8-brand :is(h1,.pv8-wordmark) { font-size:21px; }
  .pv8-library > header,
  .pv8-profile > header,
  .pv8-form-page > header,
  .pv8-welcome > header { min-height:66px; }
  .workspace-home-hero h1,
  .pv8-portfolio .hero h1 { font-size:42px; }
  .workspace-home-asset-visual { height:102px; }
  .pv8-library .content-pane > .card { margin:10px; }
  .pv8-welcome .hero { padding-left:20px; padding-right:20px; }
  .pv8-welcome .hero h1 { font-size:50px; }
  .pv8-welcome .modules,
  .pv8-welcome .demo-video { padding-left:20px; padding-right:20px; }
  .pv8-profile .profile-nav { border-radius:18px; margin-left:14px; margin-right:14px; }
  .pool-chart-shell { padding:10px 8px 8px; }
  .pool-chart-toolbar { align-items:flex-start; flex-direction:column; }
  .pool-range-group { width:100%; }
  .pool-range-group button { flex:1; padding-left:6px; padding-right:6px; }
  .pool-chart-svg { min-height:180px; }
}

} /* end intentionally inactive legacy premium-theme experiment */

/* Asset Profile density ---------------------------------------------------
   A portfolio may contain hundreds of plants. The profile must lead with the
   selected plant, not reproduce the whole portfolio as a wall of cards. The
   full workspace already owns asset switching; the standalone profile keeps
   the same capability in one compact control. */
.profile-asset-switcher {
  align-items:end;
  background:var(--surface-1);
  border:1px solid var(--border);
  border-radius:14px;
  display:grid;
  gap:14px;
  grid-template-columns:minmax(260px,1fr) max-content max-content;
  margin:0 auto 14px;
  max-width:1120px;
  padding:12px 16px;
}
.pv8-profile #assetPane.profile-asset-pane-compact {
  left:auto;
  margin:14px auto;
  max-width:1120px;
  position:static;
  top:auto;
  width:auto;
}
.profile-asset-switcher label { margin:0; }
.profile-asset-switcher label > span {
  color:var(--text-muted);
  display:block;
  font:600 9px/1.2 var(--pv8-mono);
  letter-spacing:.08em;
  margin-bottom:5px;
  text-transform:uppercase;
}
.profile-asset-switcher select { margin:0; max-width:none; width:100%; }
.profile-asset-switcher-meta { display:grid; gap:1px; min-width:130px; }
.profile-asset-switcher-meta b { color:var(--text-primary); font-size:12px; }
.profile-asset-switcher-meta span { color:var(--text-muted); font-size:11px; white-space:nowrap; }
.profile-asset-switcher > a { align-self:center; font-size:12px; font-weight:650; white-space:nowrap; }

/* In the embedded profile the surrounding workspace already supplies the
   asset, recent-work and watch controls. Remove the duplicate title block and
   tighten the remaining strip so the asset record starts in the first view. */
body.profile-workspace-mode .workspace-head { display:none; }
body.profile-workspace-mode .module-workspace { padding-top:10px; }
body.create-workspace-mode .asset-summary { display:none; }
body.create-workspace-mode .module-workspace { padding-top:10px; }
body.profile-workspace-mode .asset-summary { grid-template-columns:minmax(230px,1.4fr) minmax(190px,1fr) minmax(140px,.65fr); }
body.profile-workspace-mode .summary-cell { padding-bottom:9px; padding-top:9px; }
body.profile-workspace-mode .summary-cell span { margin-bottom:1px; }
body.profile-workspace-mode .summary-cell-links { margin-top:3px; }
.pv8-embed .profile-nav { margin-bottom:10px; margin-top:0; top:0; }
.pv8-embed .profile-title-row { margin-bottom:12px; padding-top:14px; }
.pv8-embed .profile-title-row h1 { font-size:clamp(28px,3vw,38px); }
.pv8-embed .profile-metrics { grid-template-columns:repeat(6,minmax(0,1fr)); }
.pv8-embed .profile-metric,
.pv8-embed .profile-metric:nth-child(3n+1),
.pv8-embed .profile-metric:nth-child(n+4) {
  border-left:1px solid var(--grid);
  border-top:0;
  padding:13px 14px;
}
.pv8-embed .profile-metric:first-child { border-left:0; }
.pv8-embed .profile-metric b { font-size:20px; }

@media(max-width:900px){
  .profile-asset-switcher { align-items:stretch; grid-template-columns:1fr auto; }
  .profile-asset-switcher-meta { display:none; }
  .pv8-embed .profile-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .pv8-embed .profile-metric:nth-child(4) { border-left:0; }
  .pv8-embed .profile-metric:nth-child(n+4) { border-top:1px solid var(--grid); }
}
@media(max-width:600px){
  .profile-asset-switcher { grid-template-columns:1fr; }
  .profile-asset-switcher > a { justify-self:start; }
  body.profile-workspace-mode .asset-summary { grid-template-columns:1fr; }
  .pv8-embed .profile-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pv8-embed .profile-metric:nth-child(3),
  .pv8-embed .profile-metric:nth-child(5) { border-left:0; }
  .pv8-embed .profile-metric:nth-child(n+3) { border-top:1px solid var(--grid); }
}

/* A module title is asset data, so it cannot be assumed to fit on one line.
   The workspace heading is now read, not shown (the header context bar names
   the asset once), so it can no longer expand the document; the constraint is
   kept for the assistive-technology text itself. */
@media(max-width:760px){
  .pv8-library .workspace-head { max-width:100%; min-width:0; }
  .pv8-library #selName { max-width:100%; overflow-wrap:anywhere; white-space:normal; }
}

@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
}

/* Keep the workspace's global controls available while long module and
   embedded-profile surfaces move underneath them. In particular, a section
   scroll inside the Asset Profile iframe must never strand the user below the
   service/shortcut header. */
.pv8-library > header {
  position:sticky;
  top:0;
  z-index:80;
}

/* One compact workspace bar replaces the former full-width asset/activity
   summary. Each destination is available without spending a second row. */
.workspace-header-nav {
  align-items:center;
  display:flex;
  gap:2px;
  min-width:0;
}
.pv8-brand-link { text-decoration:none; white-space:nowrap; }
.header-menu { position:relative; }
.header-menu-trigger {
  align-items:center;
  background:transparent;
  border:0;
  border-radius:8px;
  color:var(--text-primary);
  cursor:pointer;
  display:inline-flex;
  font-size:12px;
  font-weight:650;
  gap:7px;
  min-height:34px;
  padding:7px 10px;
  white-space:nowrap;
}
.header-menu-trigger:hover,.header-menu-trigger[aria-expanded="true"] {
  background:var(--pv8-accent-soft);
  color:var(--series-1);
  font-weight:750;
  text-decoration:underline;
  text-decoration-thickness:2px;
  text-underline-offset:4px;
}
.header-menu-trigger:focus-visible {
  outline:3px solid color-mix(in srgb,var(--series-1) 42%,transparent);
  outline-offset:2px;
}
.header-menu-trigger:disabled { cursor:not-allowed; opacity:.45; }
.asset-menu-trigger { max-width:min(260px,25vw); }
.asset-menu-trigger b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* The two pieces of working context — which asset, which engine — are labelled
   two-line blocks instead of unlabelled items in the row of navigation actions.
   The label sits above its trigger and names it through aria-labelledby; the
   rest of the navigation stays one line, centred against the taller block. */
.header-context {
  align-items:flex-start;
  display:flex;
  flex-direction:column;
  gap:2px;
  margin-right:10px;
  max-width:min(260px,25vw);
  min-width:0;
}
.header-context-label {
  color:var(--text-muted);
  font-size:10.5px;
  font-weight:600;
  letter-spacing:.045em;
  line-height:1.3;
  max-width:100%;
  overflow:hidden;
  padding:0 10px;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.header-context-trigger {
  font-size:13px;
  font-weight:750;
  max-width:100%;
  min-height:0;
  padding:1px 10px 3px;
}
.header-context-trigger:focus-visible { outline-offset:1px; }
.header-context-trigger b {
  display:block;
  font-weight:inherit;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.header-context .header-dropdown { top:calc(100% + 2px); }
#summaryAnalysisCell.header-context { max-width:min(300px,28vw); }
.header-asset-mark {
  background:var(--pv8-accent-soft);
  border-radius:50%;
  color:var(--series-1);
  display:grid;
  flex:0 0 auto;
  font-size:10px;
  font-weight:750;
  height:22px;
  place-items:center;
  width:22px;
}
.header-chevron { color:var(--text-muted); font-size:14px; }
.command-trigger kbd { color:var(--text-muted); font-size:10px; font-weight:500; }
.header-dropdown {
  background:var(--surface-0,#fff);
  border:1px solid var(--border);
  border-radius:10px;
  box-shadow:0 10px 28px rgba(15,30,42,.16);
  left:0;
  max-height:min(520px,72vh);
  min-width:290px;
  overflow-y:auto;
  padding:5px;
  position:absolute;
  top:100%;
  z-index:320;
}
.header-dropdown[hidden] { display:none; }
.header-dropdown button,.header-dropdown a {
  background:transparent;
  border:0;
  border-radius:7px;
  box-sizing:border-box;
  color:var(--text-primary);
  cursor:pointer;
  display:block;
  padding:8px 10px;
  text-align:left;
  text-decoration:none;
  width:100%;
}
.header-dropdown button:hover,.header-dropdown a:hover { background:var(--pv8-accent-soft); }
.header-dropdown :is(button,a):focus-visible { outline:3px solid color-mix(in srgb,var(--series-1) 42%,transparent); outline-offset:-2px; }
.header-dropdown :is(button,a) b { display:block; font-size:12.5px; }
.header-dropdown :is(button,a) span { color:var(--text-muted); display:block; font-size:11px; margin-top:2px; }
#recentMenu {
  left:auto;
  right:0;
  top:100%;
  width:min(560px,calc(100vw - 24px));
}
.analysis-header-menu {
  min-width:min(440px,calc(100vw - 24px));
  width:min(680px,calc(100vw - 24px));
}
.analysis-header-menu button {
  align-items:center; display:grid; gap:9px; grid-template-columns:22px 1fr;
}
.analysis-header-menu .nav-ico {
  fill:none; height:18px; stroke:currentColor; stroke-linecap:round;
  stroke-linejoin:round; stroke-width:1.7; width:18px;
}
.analysis-header-menu button b { margin:0; }
.collaboration-header-menu {
  min-width:min(520px,calc(100vw - 24px));
  overscroll-behavior:contain;
  width:min(620px,calc(100vw - 24px));
}
.collaboration-menu-group { display:grid; gap:2px; padding:5px 0; }
.collaboration-menu-group + .collaboration-menu-group { border-top:1px solid var(--border); margin-top:4px; padding-top:9px; }
.collaboration-menu-group > span { color:var(--text-muted); font-size:10px; font-weight:700; letter-spacing:.08em; padding:2px 10px 4px; text-transform:uppercase; }
.collaboration-menu-group > .collaboration-menu-subheading { border-top:1px solid var(--border); margin:4px 5px 2px; padding:8px 5px 3px; }
.collaboration-menu-group button { align-items:start; display:grid; gap:2px 9px; grid-template-columns:22px 1fr; }
.collaboration-menu-group button .nav-ico { grid-row:1 / span 2; height:18px; margin-top:1px; width:18px; }
.collaboration-menu-group button b,.collaboration-menu-group button small { grid-column:2; }
.collaboration-menu-group button small { color:var(--text-muted); font-size:11px; line-height:1.35; }
.shortcuts-nav-section { border-bottom:1px solid var(--border); padding:14px 0; }
/* First scenario is ordinary page content, never an overlay over the work. */
.pv8-first-scenario { margin:0 0 20px;padding:18px;border:1px solid var(--border);border-radius:12px;background:var(--surface-0);min-width:0; }
.first-scenario-heading,.first-scenario-actions { display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap; }
.first-scenario-heading>div,.first-scenario-actions,.first-scenario-body { display:flex;gap:8px;flex-wrap:wrap; }
.first-scenario-steps { display:flex;gap:6px;overflow-x:auto;margin:14px 0;max-width:100%; }
.first-scenario-steps button { flex:0 0 auto;min-height:44px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-1);color:var(--text-primary); }
.first-scenario-steps [aria-current="step"] { background:var(--pv8-module-blue-selection);border-color:var(--pv8-primary); }
.first-scenario-body p,.first-scenario-notice { flex-basis:100%;margin:4px 0 8px; }
.pv8-first-scenario small { display:block;margin-top:12px;color:var(--text-muted); }
.pv8-first-scenario button,.first-scenario-welcome button { min-height:44px;white-space:normal; }
.pv8-first-scenario button:focus-visible,.first-scenario-welcome button:focus-visible { outline:2px solid var(--pv8-primary);outline-offset:2px; }
.pv8-first-scenario iframe { display:block;width:100%;height:960px;border:0;margin-top:12px; }
.module-workspace.pv8-sample-guided>:not(#pv8FirstScenario) { display:none!important; }
.first-scenario-welcome { grid-template-columns:1fr;min-height:0; }
.first-scenario-welcome .first-visit-copy { padding:24px;background:var(--surface-1); }
.pv8-library .first-scenario-welcome h2 { color:var(--text-primary)!important;font-size:28px!important;margin-bottom:12px; }
.first-scenario-welcome .first-visit-copy>p { color:var(--text-secondary);max-width:85ch; }
.first-scenario-welcome [data-first-action="sample"] { background:var(--pv8-primary);color:var(--surface-1); }
.first-scenario-welcome [data-first-action="create"],.first-scenario-welcome [data-first-action="draft"] { width:auto;align-self:flex-start; }
.pv8-first-scenario { scroll-margin-top:110px; }
.first-scenario-welcome .first-visit-actions { margin:18px 0; }
@media(max-width:640px) {
  .pv8-first-scenario { padding:12px; }
  .pv8-first-scenario iframe { height:1350px; }
  .first-scenario-heading>div { margin-left:auto; }
}
.nav-section-heading { color:var(--text-muted); font-size:10px; font-weight:700; letter-spacing:.08em; margin:0 0 7px; text-transform:uppercase; }
.shortcuts-nav-section .pv8-shortcuts { width:100%; }
.shortcuts-nav-section .pv8-shortcuts-inline { min-width:0; }
.shortcuts-nav-section .pv8-shortcuts .pv8-pins { gap:2px; }
.shortcuts-nav-section .pv8-shortcuts .pv8-pin {
  box-sizing:border-box;display:flex;width:100%;min-width:0;min-height:44px;
  border:0;border-radius:6px;padding:8px;gap:8px;box-shadow:none;
  background:transparent;color:var(--text-primary);white-space:normal;
}
.shortcuts-nav-section .pv8-shortcuts .pv8-pin b {
  min-width:0;font-size:13px;line-height:1.4;overflow-wrap:anywhere;
}
.shortcuts-nav-section .pv8-shortcuts .pv8-pin .g { flex:0 0 20px; }
.shortcuts-nav-section .pv8-shortcuts .pv8-pin:hover {
  background:var(--surface-0);color:var(--pv8-primary);
}
.shortcuts-nav-section .pv8-shortcuts .pv8-pin:focus-visible,
.shortcuts-nav-section .pv8-shortcuts .pv8-sc-btn:focus-visible {
  outline:2px solid var(--pv8-primary);outline-offset:2px;
}
.shortcuts-nav-section .pv8-shortcuts .pv8-sc-empty {
  display:block;white-space:normal;line-height:1.45;color:var(--text-muted);
}
.pv8-shortcuts-actions { display:flex;flex-wrap:wrap;gap:6px; }
.shortcuts-nav-section .pv8-shortcuts .pv8-sc-btn {
  min-height:44px;max-width:100%;white-space:normal;line-height:1.35;
  color:var(--text-secondary);border-color:var(--border);
}
#recentMenu a {
  border:1px solid transparent !important;
  display:grid !important;
  gap:5px;
  padding:11px 12px !important;
}
#recentMenu a:hover,#recentMenu a:focus-visible {
  border-color:var(--border) !important;
}
#recentMenu a > b {
  font-size:13px !important;
  line-height:1.35;
}
#recentMenu a > span {
  align-items:center;
  color:var(--text-muted) !important;
  display:flex !important;
  flex-wrap:wrap;
  font:500 11px/1.35 var(--pv8-sans) !important;
  gap:3px 0;
  margin:0 !important;
}
#recentMenu a > span span { white-space:nowrap; }
#recentMenu a > span span + span::before { content:"·"; margin:0 6px; }
.account-settings-link { margin-left:2px; }
#planChip[hidden] + .account-settings-link { margin-left:auto; }
.pv8-language-select {
  background:transparent; border:1px solid var(--border); border-radius:8px;
  color:var(--text-primary); cursor:pointer; font:650 11.5px/1 var(--pv8-github-sans),system-ui,sans-serif;
  min-height:34px; padding:7px 28px 7px 9px;
}

/* Decision problems and their resolution stay in the same scan line.
   These two tables opt into table-layout:fixed, which changes what the
   surrounding rules mean:
   - the former global first-column `width:1%` was an
     auto-layout shrink-wrap idiom; under fixed layout `1%` is taken
     literally and the first column collapses to 13px at 1440.  Fixed
     layout reads its tracks from the FIRST ROW only, so `tbody th` can
     never correct it — the tracks are declared on `tr > *` below, at a
     specificity that beats the global idiom.
   - `min-width` on a cell is ignored under fixed layout, so the table
     carries the min-width itself and the wrap scrolls instead of the page. */
.pv8-library .customer-resolution-table-wrap {
  margin:8px 0 4px;
  max-width:100%;
  overflow-x:auto;
}
.pv8-library .customer-resolution-table {
  min-width:640px;
  table-layout:fixed;
  width:100%;
}
.pv8-library .customer-resolution-table th,
.pv8-library .customer-resolution-table td {
  overflow-wrap:break-word;
  padding:9px 10px;
  text-align:left;
  vertical-align:top;
}
.pv8-library .customer-resolution-table thead th {
  color:var(--text-secondary);
  font-size:10px;
  letter-spacing:.06em;
  text-transform:uppercase;
}
/* `<th scope="row">` is a row label, not a column header: the global
   `.pv8-library th` chrome (9px, tracked, ALL CAPS) must not reach it. */
.pv8-library .customer-resolution-table tbody th {
  font-size:13px;
  font-weight:500;
  letter-spacing:0;
  line-height:1.38;
  text-transform:none;
}
.pv8-library .customer-resolution-table tbody th small {
  color:var(--text-secondary);
  display:block;
  font-size:12px;
  font-weight:400;
  margin-top:3px;
}
/* Column tracks. Three columns on the evidence table (gap · what resolves
   it · link), two on the blocker table (problem · link). */
.pv8-library .customer-resolution-table tr > :first-child:nth-last-child(3) {
  width:32%;
}
.pv8-library .customer-resolution-table tr > :first-child:nth-last-child(2) {
  width:auto;
}
.pv8-library .customer-resolution-table tr > :last-child {
  width:200px;
}
.pv8-library .customer-resolution-table .customer-fix-link {
  display:inline-flex;
  margin-left:0;
  white-space:normal;
}

@media(max-width:1050px) {
  .pv8-library > header { gap:10px; overflow-x:auto; }
  .pv8-tagline { display:none; }
  .workspace-header-nav { flex:0 0 auto; }
  .asset-menu-trigger { max-width:210px; }
  .header-context { margin-right:6px; max-width:200px; }
  #summaryAnalysisCell.header-context { max-width:210px; }
}
/* Projector-sized desktops need both context names, not two ellipses. Give
   the controls their own row before the asset/engine blocks are squeezed by
   the brand, plan and account controls; at 1280px the two names have their
   full natural width. The asset profile and FAQ carry the same shared
   navigation, so they take the same row (before, their header did not wrap
   and a long asset name stood five lines tall at 1280px).
   2026-10-06 (browser-compat, owner: Edge "always" broke the top nav): the
   row is never a scroll box. It had overflow-x:auto, which CSS pairs with
   overflow-y:auto, so every menu dropping from the row was clipped to the
   row's 40-60px and opening one scrolled the row itself out of sight; on
   hover it opened and closed in a loop. Windows laptops at 125-150 % display
   scaling (1229-1366 CSS px) sit in this band; Macs at 1440px+ did not.
   Controls that do not fit wrap onto a second line instead, and the two
   context blocks keep a readable width before they do. */
@media (min-width:761px) and (max-width:1360px) {
  /* unconditional for the workspace; the profile/FAQ rule needs :has() */
  .pv8-library > header { flex-wrap:wrap; gap:4px 14px; min-height:0; padding:8px 20px; }
  :is(.pv8-profile,.pv8-faq) > header:has(.workspace-header-nav) { flex-wrap:wrap; gap:4px 14px; min-height:0; padding-top:8px; padding-bottom:8px; }
  :is(.pv8-library,.pv8-profile,.pv8-faq) > header .pv8-brand { flex:1 1 auto; }
  .workspace-header-nav { order:3; flex:1 1 100%; width:100%; gap:4px 6px; flex-wrap:wrap; overflow:visible; }
  .workspace-header-nav .header-context,
  #summaryAnalysisCell.header-context { flex:1 1 0; max-width:none; margin-right:0; min-width:min(11rem,100%); }
  .workspace-header-nav .header-context-trigger { width:100%; }
  .workspace-header-nav .asset-menu-trigger { max-width:none; }
  .workspace-header-nav .header-context-trigger,
  .workspace-header-nav .header-context-trigger b {
    white-space:normal; text-align:left; overflow-wrap:anywhere;
  }
  .workspace-header-nav .header-context-trigger b {
    overflow:visible; text-overflow:clip;
  }
  .workspace-header-nav #summaryRecentCell,
  .workspace-header-nav .command-trigger { flex:0 0 auto; }
}
/* Above 1100px the client pages' inline header style (flex:1, gap:5px)
   would keep the shared navigation beside the brand; in this band it takes
   its own row, laid out exactly as the roomy row below lays it out. */
@media (min-width:1101px) and (max-width:1360px) {
  :is(.pv8-library,.pv8-profile,.pv8-faq) > header > .workspace-header-nav { flex:1 1 100%; column-gap:6px; }
  .workspace-header-nav .header-context > details { width:100%; max-width:none; }
}
/* Above 1360px a context name that would be cut moves the navigation onto
   its own row too (client-workspace-nav chunk, header.pv8-header-roomy). That
   chunk's injected style also made the row overflow-x:auto; overridden here
   (higher specificity) for the reason above. */
@media (min-width:761px) {
  body > header.pv8-header-roomy .workspace-header-nav { flex-wrap:wrap; overflow:visible; row-gap:4px; }
  body > header.pv8-header-roomy .workspace-header-nav .header-context { min-width:min(11rem,100%); }
}
/* Narrow desktop (761-1100px): the engine menu (up to 680px wide) hung from
   the left of the right-hand context block and ran off the page. It hangs
   from the block's right edge instead, still directly under its trigger,
   and narrows so it ends inside the viewport (the block ends ~100px before
   the edge: the row's padding and Ask PV8). Not fixed under the header: that
   left an 8-19px strip of header between trigger and menu, and the block's
   mouseleave closed the menu as the pointer crossed it (review of #902). */
@media (min-width:761px) and (max-width:1100px) {
  .pv8-library #summaryAnalysisCell .header-dropdown { left:auto; right:0; width:min(680px,calc(100vw - 160px)); min-width:min(440px,calc(100vw - 160px)); }
}
/* A pointer moving from the asset or engine trigger down into its menu never
   crosses a gap: the 2px between the block and its menu belong to the block
   (whose mouseleave closes the menu). Invisible, inside the header's own
   bottom padding, and opens nothing by itself. */
@media (min-width:761px) {
  .pv8-library .workspace-header-nav .header-context::after { content:""; position:absolute; left:0; right:0; top:100%; height:6px; }
}
@media(max-width:640px) {
  .pv8-library > header { padding:8px 10px; }
  .pv8-brand :is(h1,.pv8-wordmark) { font-size:19px; }
  .header-menu-trigger { font-size:11px; padding:6px 8px; }
  .header-context-trigger { font-size:12px; padding:1px 8px 3px; }
  .header-context-label { font-size:10px; padding:0 8px; }
  .asset-menu-trigger { max-width:170px; }
  .header-context, #summaryAnalysisCell.header-context { max-width:170px; }
  .command-trigger kbd { display:none; }
  .collaboration-header-menu { min-width:min(320px,calc(100vw - 24px)); }
}

/* -------------------------------------------------------------------------
   PV8 shared dark/light surface contract — 2026-09-08 (epic #74 tranche)

   Light surface/text/border tokens come from the later product :root block
   in this file. library.html's higher-specificity explicit and OS-dark
   selectors supply their dark counterparts. This block only repairs the
   modal, command-palette and module-form copy exercised by the companion
   browser test. It deliberately does not change global focus styling,
   third-party map controls or untested component families.
   ------------------------------------------------------------------------- */

/* Browser placeholder defaults vary by engine. Scope the readable token to
   the four verified component surfaces instead of every library input, so
   map/geocoder and unrelated forms retain their existing cascade. */
.pv8-library .external-identity-modal input::placeholder,
.pv8-library #commentsModal input::placeholder,
.pv8-library .pv8-command-palette input::placeholder,
.pv8-library .module-input-pane input::placeholder,
.pv8-library .module-input-pane textarea::placeholder {
  color:var(--text-secondary);
  opacity:1;
}

/* Sentence copy in the three modal shells and module form must meet body-text
   contrast. Keep the global muted token unchanged for timestamps, chart axes
   and other microcopy that is outside this tranche. */
.pv8-library .external-identity-modal .muted,
.pv8-library #shareModal .muted,
.pv8-library #commentsModal .muted,
.pv8-library .module-input-pane .muted {
  color:var(--text-secondary);
}

/* The tested module-objective cards hardcode light fills in their base rules.
   Replace only that verified family in dark mode. */
:root[data-theme="dark"] .pv8-library .module-input-pane .module-objective-grid > label {
  background:var(--surface-0);
  border-color:var(--border);
  color:var(--text-primary);
}
:root[data-theme="dark"] .pv8-library .module-input-pane .module-objective-grid > label.active {
  background:color-mix(in srgb,var(--series-1) 22%,var(--surface-1));
  border-color:color-mix(in srgb,var(--series-1) 55%,var(--border));
}
@media (prefers-color-scheme:dark) {
  :root:not([data-theme="light"]) .pv8-library .module-input-pane .module-objective-grid > label {
    background:var(--surface-0);
    border-color:var(--border);
    color:var(--text-primary);
  }
  :root:not([data-theme="light"]) .pv8-library .module-input-pane .module-objective-grid > label.active {
    background:color-mix(in srgb,var(--series-1) 22%,var(--surface-1));
    border-color:color-mix(in srgb,var(--series-1) 55%,var(--border));
  }
/* PV8 Watch — the forward view. Dated obligations read as a calendar line,
   not another alert card: the distance is the first thing scanned, the basis
   (recorded vs screening) the last. Theme-aware via tokens. */
.pv8-library .watch-deadlines { display:grid; gap:8px; margin:10px 0 16px; }
.pv8-library .watch-deadline {
  align-items:center; background:var(--surface-1); border:1px solid var(--border);
  border-radius:12px; display:grid; gap:12px; padding:11px 13px;
  grid-template-columns:auto minmax(0,1fr) auto;
}
.pv8-library .watch-deadline .wd-body { display:grid; gap:2px; min-width:0; }
.pv8-library .watch-deadline .wd-body small { line-height:1.4; }
.pv8-library .watch-deadline .wd-meta {
  align-items:center; display:flex; gap:8px; white-space:nowrap;
  font-variant-numeric:tabular-nums; font-size:12px; color:var(--text-muted);
}
@media (max-width:640px) {
  .pv8-library .watch-deadline { grid-template-columns:auto minmax(0,1fr); }
  .pv8-library .watch-deadline .wd-meta { grid-column:1 / -1; }
}

/* Closes the prefers-color-scheme:dark block opened above (it was never
   closed; the Watch-deadline and "Coming up" rules between it and here keep
   the scope they shipped with — see PR notes). Rules below are unconditional. */
}

/* End of the epic #74 tranche. The guard in dark-surface-contrast.spec.js
   bounds the contrast contract between its heading above and this line. The
   block had no end, so it ran to the foot of the file and quietly annexed
   every section appended after it; sections below set their own styling and
   are outside the contract. */

/* -------------------------------------------------------------------------
   Portfolio view optimisation — 2026-09-19 (dashboard.html only; scoped to
   .pv8-portfolio so the assessment workspace keeps its own chrome).

   Measured before this block at 1280×860: 145 text elements below WCAG AA,
   154 below 12px, the summary strip 350px down behind a 256px hero, the run
   builder ahead of the attention panels, and the opportunity-matrix headers
   overlapping. Rules below fix tokens, type scale, order and state encoding
   without touching the data model or any element id / data-* hook. */

/* Tokens: the muted text token on the portfolio column clears 5.1:1 on every
   surface it sits on (white, #f3f5f6, #fbfcfc, #f7f8f9, #f1f4f6, #fdf9f0). */
.pv8-portfolio .portfolio-main { --text-muted:#5b6369; --warning:#875711; }

/* Hero: a signed-in page opens with its summary, not a marketing headline. */
.pv8-portfolio .hero.portfolio-hero { align-items:center; gap:28px; padding:22px clamp(22px,3.4vw,52px) 22px; }
.pv8-portfolio .hero h1 { font-size:clamp(20px,1.9vw,26px); letter-spacing:-.025em; line-height:1.15; margin:0 0 6px; max-width:none; }
.pv8-portfolio .hero p { font-size:13.5px; line-height:1.5; max-width:680px; }
.pv8-portfolio main { padding-top:20px; }

/* Summary strip: six tiles in two even rows of three; no ragged second row. */
.portfolio-pulse { grid-template-columns:repeat(3,minmax(0,1fr)); margin-bottom:16px; }
.portfolio-pulse article { padding:14px 18px 13px; }
.portfolio-pulse article:nth-child(n+4) { border-top:1px solid var(--grid); }
.portfolio-pulse article:nth-child(4) { border-left:0; }
.portfolio-pulse span { font-size:11px; letter-spacing:.08em; }
.portfolio-pulse b { font-size:24px; margin:5px 0 3px; }
.portfolio-pulse small { font-size:12px; line-height:1.4; }
.portfolio-pulse article.is-warning b { color:var(--warning); }
.portfolio-pulse article.is-warning b::before {
  background:var(--warning); border-radius:50%; content:""; display:inline-block;
  height:9px; margin:0 7px 2px 0; width:9px;
}

/* Panels: one card grammar for every roll-up section (tariff clock, watch
   feed, matrix, radar, runs, billing, proposals) instead of four ad-hoc looks. */
.pv8-portfolio .portfolio-panel {
  background:#fff;
  border:1px solid var(--border);
  border-radius:var(--pv8-radius);
  box-shadow:var(--pv8-shadow-sm);
  margin:0 0 14px;
  overflow:hidden;
  padding:16px 20px 18px;
}
.pv8-portfolio .portfolio-panel h2 { color:var(--pv8-navy); font-size:16px; letter-spacing:-.015em; line-height:1.3; margin:0 0 4px !important; }
.pv8-portfolio .portfolio-panel > .muted,
.pv8-portfolio .portfolio-panel > p.muted { font-size:13px; line-height:1.5; margin-bottom:8px; }
.pv8-portfolio .portfolio-panel-inline { padding:10px 16px; }
.pv8-portfolio .portfolio-panel-attention { background:#fdf9f0; border-color:#e8d9b8; border-left:4px solid var(--warning); }
.pv8-portfolio .portfolio-panel-attention a { display:inline-block; padding:4px 0; }
/* A failed renewal, stated on the dashboard rather than only at the moment a
   run is refused: the customer can still act, and usually just needs to
   update a card. Built from approved tokens — --serious for the rule, the
   neutral surface behind it — rather than a one-off red pair invented for a
   single component, which is what the literal ratchet exists to prevent. */
.pv8-portfolio .portfolio-billing-notice { margin-top:10px; padding:10px 12px; border-left:3px solid var(--serious); background:var(--surface-0); font-size:12.5px; line-height:1.45; }
.pv8-portfolio #watchFeed, .pv8-portfolio #opportunityMatrix { margin-bottom:14px; padding:16px 20px 18px; }
.pv8-portfolio #watchFeed h2, .pv8-portfolio #opportunityMatrix h2 { font-size:16px; }
.pv8-portfolio #watchFeed li { font-size:13px !important; }
.pv8-portfolio #tariffClock table, .pv8-portfolio #opportunityMatrix table { font-size:13px !important; }
.pv8-portfolio #tariffClock th, .pv8-portfolio #tariffClock td { padding:8px 10px !important; }
.pv8-portfolio #tariffClock tr[onclick]:hover td { background:var(--pv8-accent-soft); }
.pv8-portfolio #tariffClock .muted, .pv8-portfolio #fleetRadar > .muted { font-size:13px !important; }
.pv8-portfolio #opportunityMatrix > div:last-child { margin:10px -20px -18px; }
.pv8-portfolio #opportunityMatrix table { min-width:0; }
.pv8-portfolio #opportunityMatrix th.matrix-module {
  font:600 11.5px/1.3 var(--pv8-sans); letter-spacing:0; max-width:none; min-width:96px;
  overflow-wrap:anywhere; padding:8px 6px; text-align:center; text-transform:none;
  vertical-align:bottom; white-space:normal;
}
.pv8-portfolio #opportunityMatrix th { height:auto; }
.pv8-portfolio #opportunityMatrix td { height:44px; }
.pv8-portfolio #opportunityMatrix td[onclick]:hover { background:var(--pv8-accent-soft); }
.pv8-portfolio #opportunityMatrix td .muted { font-size:14px; }
.pv8-portfolio #fleetRadar { margin-top:14px; }
.pv8-portfolio .fleet-radar-open { font-size:12px; padding:4px 0; }
.pv8-portfolio .fleet-axis-key > p, .pv8-portfolio .fleet-axis-key dt { font-size:13px; }
.pv8-portfolio .fleet-axis-key dd, .pv8-portfolio .fleet-axis-rule { font-size:12px; }
.pv8-portfolio #portfolioRunWorkspace h2 { margin:0 0 2px !important; }
.pv8-portfolio #portfolioRunWorkspace form { margin-top:14px; border-top:1px solid var(--grid); }
.pv8-portfolio #portfolioRuns summary { cursor:pointer; font-size:13px; font-weight:600; min-height:32px; padding:6px 0; }
.pv8-portfolio #portfolioRuns .run-output-link { display:inline-block; padding:5px 0; }
.pv8-portfolio #portfolioRuns small.muted { font-size:12.5px; }

/* Per-asset row: scannable state. Chips carry stale / blocked / waiting before
   the numbers do; the readiness bar shows the 60% decision-ready norm. */
.pv8-portfolio .asset-head { gap:16px; min-height:88px; padding:16px 20px; }
.pv8-portfolio .asset-head .name small { font-size:12px; }
.pv8-portfolio .asset-head .asset-flags { display:flex; flex-wrap:wrap; gap:5px; line-height:1; margin-top:8px; }
.pv8-portfolio .asset-head .flag {
  border:1px solid; border-radius:999px; display:inline-block; font-size:11px;
  font-weight:650; letter-spacing:.02em; line-height:1; margin:0; padding:4px 8px; white-space:nowrap;
}
.pv8-portfolio .flag.warn { background:#fdf6e7; border-color:#e5c98f; color:var(--warning); }
.pv8-portfolio .flag.serious { background:#fbeeee; border-color:#e6b4b4; color:var(--serious); }
.pv8-portfolio .asset[data-attention="yes"] { border-left:4px solid var(--warning); }
.pv8-portfolio .cell b { font-size:16px; }
.pv8-portfolio .cell span:not(.chip) { font-size:11px; letter-spacing:.06em; }
.pv8-portfolio .cell b + span, .pv8-portfolio .cell .chip + span { margin-top:3px; }
.pv8-portfolio .bar { height:6px; max-width:132px; overflow:visible; position:relative; }
.pv8-portfolio .bar::after {
  background:var(--pv8-navy); content:""; height:12px; left:60%; position:absolute;
  top:-3px; width:2px;
}
.pv8-portfolio .bar.low > i { background:var(--warning); }
.pv8-portfolio .bar.ready > i { background:var(--good); }
.pv8-portfolio .chip { font-size:11px; letter-spacing:.03em; padding:5px 8px; }
.pv8-portfolio .chip.pre { border-color:var(--warning); color:var(--warning); }
.pv8-portfolio .asset-detail .empty { font-size:13px; }
.pv8-portfolio table { font-size:13px; }
.pv8-portfolio th { font-size:11px; letter-spacing:.06em; }
.pv8-portfolio .next { font-size:13px; }
.pv8-portfolio .next .muted { font-size:12.5px; }
.pv8-portfolio .links { gap:18px; }
.pv8-portfolio .links a { display:inline-block; padding:5px 0; }
.pv8-portfolio .foot-note { font-size:13px; }
.pv8-portfolio .portfolio-asset-choice span { color:#5b6369; font-size:12px; }
.pv8-portfolio .portfolio-asset-choice.selected span { color:inherit; }

/* Tablet: the name div is the first grid child, so the shipped nth-of-type
   rules hid readiness and stage (the state cells) and kept the counts. Keep
   name, capacity, readiness and stage; hide the option count and NPV. */
@media (max-width:1080px) {
  .pv8-portfolio .hero.portfolio-hero { align-items:flex-start; gap:14px; padding:20px 22px; }
  .pv8-portfolio .asset-head { grid-template-columns:minmax(150px,1.4fr) repeat(3,minmax(96px,1fr)) 28px; }
  .pv8-portfolio .asset-head .cell:nth-of-type(4) { display:block; }
  .pv8-portfolio .asset-head .cell:nth-of-type(5),
  .pv8-portfolio .asset-head .cell:nth-of-type(6) { display:none; }
  .portfolio-pulse { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .portfolio-pulse article:nth-child(n+3) { border-top:1px solid var(--grid); }
  .portfolio-pulse article:nth-child(3), .portfolio-pulse article:nth-child(5) { border-left:0; }
  .portfolio-pulse article:nth-child(4) { border-left:1px solid var(--grid); }
}

/* Phones: the summary must not sit two screens below the navigation pane.
   The main column leads; the navigation pane follows it. */
@media (max-width:760px) {
  .pv8-library.pv8-portfolio .portfolio-layout,
  .pv8-library.pv8-portfolio .portfolio-layout.assets-collapsed { display:flex; flex-direction:column; }
  .pv8-library.pv8-portfolio:not(.pv8-unified-navigation) .portfolio-layout > #assetPane { border-bottom:0; border-top:1px solid var(--border); order:2; }
  .pv8-library.pv8-portfolio .portfolio-layout > .portfolio-main { order:1; }
  .pv8-portfolio .hero.portfolio-hero { padding:18px 16px; }
  .pv8-portfolio .hero p { display:none; }
  .pv8-portfolio main { padding:16px 14px 40px; }
  .portfolio-pulse article { padding:12px 14px 11px; }
  .portfolio-pulse b { font-size:22px; }
  .pv8-portfolio .portfolio-panel { padding:14px 16px 16px; }
  .pv8-portfolio #watchFeed, .pv8-portfolio #opportunityMatrix { padding:14px 16px 16px; }
  /* Phones: name + state chips + readiness (with the 60% norm); the shipped
     rule hid every metric cell because the name div counts as the first. */
  .pv8-portfolio .asset-head { gap:10px 14px; grid-template-columns:minmax(0,1fr) minmax(96px,auto) 28px; min-height:0; padding:14px 16px; }
  .pv8-portfolio .asset-head .cell,
  .pv8-portfolio .asset-head .cell:nth-of-type(4) { display:none; }
  .pv8-portfolio .asset-head .cell:nth-of-type(3) { display:block; }
  .pv8-portfolio .asset-head .caret { display:flex; }
}
@media (max-width:480px) {
  .portfolio-pulse { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .portfolio-pulse article + article { border-left:1px solid var(--grid); border-top:0; }
  .portfolio-pulse article:nth-child(n+3) { border-top:1px solid var(--grid); }
  .portfolio-pulse article:nth-child(3), .portfolio-pulse article:nth-child(5) { border-left:0; }
  .portfolio-pulse span { font-size:10.5px; letter-spacing:.06em; }
}

/* Workspace navigation as a drawer (UI audit, 2026-09-16)
   -------------------------------------------------------
   The navigation used to hold a permanent 278 px column beside every module,
   so the working canvas was never full width and the rail's own headings
   competed with the module's. It is now summoned from the header, the way a
   repository menu is, and the whole area under the top bar belongs to the
   work. The open/closed state still lives in one class on .layout, so every
   existing caller of toggleAssetPane keeps working.
   Scope: the workspace only. The portfolio dashboard shares the .pv8-library
   body class, .layout grid and #assetPane id but keeps its own rail toggle,
   so the drawer rules must not reach it. */
.pv8-library:not(.pv8-portfolio) .layout,
.pv8-library:not(.pv8-portfolio) .layout.assets-collapsed { grid-template-columns:minmax(0,1fr); }
.pv8-library:not(.pv8-portfolio) #assetPane {
  position:fixed; top:var(--pv8-header-h,68px); bottom:0; left:0; z-index:60;
  width:min(320px,86vw); overflow:auto; overscroll-behavior:contain;
  background:var(--surface-1,#fff); border-right:1px solid var(--border,#e3e2de);
  box-shadow:0 18px 48px rgba(16,25,32,.18);
  transform:translateX(0); transition:transform .18s ease;
}
.pv8-library:not(.pv8-portfolio) .layout.assets-collapsed #assetPane {
  display:block; transform:translateX(-101%); box-shadow:none;
  visibility:hidden; transition:transform .18s ease, visibility 0s linear .18s;
}
/* the collapsed rail is gone: never show a stub of the drawer */
.pv8-library:not(.pv8-portfolio) .layout.assets-collapsed #assetPane .card { padding:14px; }
.pv8-library:not(.pv8-portfolio) .layout.assets-collapsed #assetPane .card > :not(.asset-pane-head) { display:revert !important; }
.pv8-library:not(.pv8-portfolio) .layout.assets-collapsed .asset-pane-head h2 { display:block; }
.pv8-library:not(.pv8-portfolio) .layout.assets-collapsed .asset-pane-head { justify-content:space-between; }
#paneScrim {
  position:fixed; inset:var(--pv8-header-h,68px) 0 0 0; z-index:59;
  background:rgba(16,25,32,.34); opacity:1; transition:opacity .18s ease;
}
.pv8-library:not(.pv8-portfolio) .layout.assets-collapsed #paneScrim { opacity:0; pointer-events:none; }
/* the page behind does not scroll while the drawer is over it */
body.pv8-library:not(.pv8-portfolio):has(.layout:not(.assets-collapsed)) { overflow:hidden; }
/* the hamburger sits with the wordmark and is a real 40 px target */
.pv8-library:not(.pv8-portfolio) .pv8-brand { gap:10px; }
.pv8-library:not(.pv8-portfolio) .sidebar-toggle {
  align-items:center; background:none; border:1px solid var(--border,#e3e2de);
  border-radius:8px; color:var(--text,#141c23); cursor:pointer; display:inline-flex;
  height:34px; justify-content:center; padding:0; width:38px;
}
.pv8-library:not(.pv8-portfolio) .sidebar-toggle:hover { background:var(--pv8-accent-soft,#eef1f3); }
/* The open analysis names itself here, so the page heading no longer repeats
   asset and module in a 22 px caption above every module. */
.pv8-library:not(.pv8-portfolio) .header-menu-trigger.has-open-module { color:var(--text,#141c23); font-weight:650; }
/* was clamp(22px,2.5vw,32px) carrying "asset — module"; the asset alone no
   longer needs a display size, and an id selector is required to win here */
.pv8-library:not(.pv8-portfolio) #selName { font-size:17px; letter-spacing:-.01em; margin:0; }
.pv8-library:not(.pv8-portfolio) .workspace-head { align-items:center; gap:10px; }
@media (prefers-reduced-motion:reduce) {
  .pv8-library:not(.pv8-portfolio) #assetPane, #paneScrim { transition:none; }
}
@media (max-width:760px) {
  .pv8-library:not(.pv8-portfolio) #assetPane { width:min(320px,92vw); }
}

/* ---------------------------------------------------------------------------
   Shared module surface — the landing's card treatment, reused by the product
   -------------------------------------------------------------------------
   The acquisition page draws its opportunity cards as a fading slice of a
   poly-crystalline module: the cell grid over the module blue, bottom-anchored
   and masked away before it reaches the text. The signed-in workspace now
   draws its cards from the same rule set instead of a per-component copy, so
   the product reads as one surface with the page that sold it.

   Contrast: the wash is capped at .05. Blended over white that is #f3f5f7, on
   which the lightest text role (--text-muted #697178) still measures 4.54:1 —
   above the 4.5 body minimum. The mask means only the very bottom edge of a
   card ever reaches that full strength. Nothing here animates.

   To opt a new block in, add .pv8-module-surface — do not re-declare the
   gradients locally.
   ------------------------------------------------------------------------ */
:root {
  --pv8-cell-grid:
    repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 1px,transparent 1px 18px),
    repeating-linear-gradient(0deg,rgba(255,255,255,.28) 0 1px,transparent 1px 13px);
  --pv8-polysi:linear-gradient(145deg,#195b91 0%,#0d477a 58%,#0a365f 100%);
  --pv8-module-mask:linear-gradient(0deg,#000 0%,rgba(0,0,0,.65) 30%,transparent 85%);
  --pv8-module-wash:.05;
  --pv8-edge-fade-width:clamp(28px,6%,64px);
}

/* isolation:isolate makes each card its own stacking context, so the z-index:-1
   wash paints above the card's own background but still behind every child.
   No child needs a z-index and no container needs overflow:hidden. */
.pv8-module-surface,
.pv8-library .module-choice-card,
.pv8-portfolio .portfolio-panel {
  isolation:isolate;
  position:relative;
}
.pv8-module-surface::after,
.pv8-library .module-choice-card::after,
.pv8-portfolio .portfolio-panel::after {
  background:var(--pv8-cell-grid),var(--pv8-polysi);
  border-radius:inherit;
  bottom:0;
  content:"";
  height:70%;
  left:0;
  -webkit-mask-image:var(--pv8-module-mask);
  mask-image:var(--pv8-module-mask);
  opacity:var(--pv8-module-wash);
  pointer-events:none;
  position:absolute;
  right:0;
  z-index:-1;
}

/* The landing's .mbf-viewport edge fades, generalised: a horizontal rail should
   dissolve at its edges rather than stop at a hard crop. Surface-coloured, so a
   rail reads as continuing under the page rather than being cut off. */
.pv8-edge-fade,
.pv8-library .module-journey-progress { position:relative; }
.pv8-edge-fade::before,
.pv8-edge-fade::after,
.pv8-library .module-journey-progress::before,
.pv8-library .module-journey-progress::after {
  bottom:0;
  content:"";
  pointer-events:none;
  position:absolute;
  top:0;
  width:var(--pv8-edge-fade-width);
  z-index:2;
}
.pv8-edge-fade::before,
.pv8-library .module-journey-progress::before {
  background:linear-gradient(90deg,var(--surface-0),rgba(255,255,255,0));
  left:0;
}
.pv8-edge-fade::after,
.pv8-library .module-journey-progress::after {
  background:linear-gradient(270deg,var(--surface-0),rgba(255,255,255,0));
  right:0;
}

@media (prefers-reduced-transparency:reduce) {
  :root { --pv8-module-wash:0; }
}
.concierge-entry{border-bottom:1px solid var(--border);padding-bottom:7px;margin-bottom:7px}
.pv8-mobile-nav,.pv8-mobile-more,.pv8-mobile-section-picker{display:none}
.pv8-mobile-section-picker[hidden]{display:none!important}
.concierge-engine-choice{padding:20px;overflow:auto;display:flex;align-content:start;align-items:start;flex-wrap:wrap;gap:12px}
.concierge-engine-choice h2,.concierge-engine-choice p{flex-basis:100%;margin:0 0 8px}
.concierge-engine-choice .libbtn{min-height:44px;padding:10px 14px}
.pv8-responsive-table{max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain}
.pv8-responsive-table:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}
/* The scroll region owns overflow. Turning its table into display:block on
   phones discards fixed colgroup tracks and creates a second scroll area. */
.pv8-library #result :is(.pv8-responsive-table,.research-shortlist-wrap,.agri-route-table-wrap,.customer-resolution-table-wrap,.dw-candidate-table-wrap,.dw-planned-table-wrap,.advisor-table-wrap,.fw-ledger,.gw-table)>table {
  display:table;overflow:visible;max-width:none;
}
.pv8-profile table#fields { display:table; }
.pv8-connection-status{position:fixed;left:12px;right:12px;bottom:12px;z-index:4100;padding:12px 16px;border:1px solid var(--border);background:var(--surface-1);color:var(--text-primary);box-shadow:0 4px 20px color-mix(in srgb,var(--pv8-overlay-ink) 13.333333%,transparent)}
.pv8-connection-status[hidden]{display:none}
.pv8-touch-help{max-width:min(460px,calc(100vw - 24px));max-height:80dvh;overflow:auto;margin:auto;border:1px solid var(--border);border-radius:12px;padding:20px;background:var(--surface-1);color:var(--text-primary)}
.pv8-touch-help::backdrop{background:color-mix(in srgb,var(--pv8-overlay-ink) 46.666667%,transparent)}
.pv8-touch-help p{margin:16px 0;white-space:normal}
.pv8-touch-help button{min-width:88px;min-height:44px}
/* One adaptive contract across engines. Width-only and coarse-pointer rules
   cover split-screen tablets as well as phones; desktop is unchanged. */
@media(max-width:1100px){
  .pv8-library > header{flex-wrap:wrap;overflow:visible;min-height:0}
  .pv8-library .workspace-header-nav{flex:1 1 100%;min-width:0;width:100%;display:flex;gap:8px;overflow:visible}
  .pv8-library .workspace-header-nav .header-context{flex:1 1 0;min-width:0;max-width:none!important;margin:0}
  .pv8-library .workspace-header-nav .header-context-trigger{min-height:44px;width:100%;max-width:none;white-space:normal;text-align:left}
  .pv8-library .workspace-header-nav .header-context-trigger b{white-space:normal;overflow-wrap:anywhere}
  .pv8-library .workspace-header-nav #summaryRecentCell,.pv8-library .workspace-header-nav .command-trigger,
  .pv8-library .workspace-header-nav .collaboration-header-menu-trigger{display:none}
  .pv8-library .workspace-header-nav > .header-menu:not(.header-context){display:none}
  /* Drawer links still open these real menus after their desktop triggers
     disappear. Keep the menu reachable without restoring the crowded row. */
  .pv8-library .workspace-header-nav > .header-menu:not(.header-context):has(.header-dropdown:not([hidden])){display:block;position:static;flex:0 0 0;width:0}
  .pv8-library .workspace-header-nav > .header-menu:not(.header-context):has(.header-dropdown:not([hidden]))>.header-menu-trigger{display:none}
  .pv8-library .workspace-header-nav > .header-menu:not(.header-context) .header-dropdown{position:fixed;left:12px;right:12px;top:var(--pv8-header-height,120px);width:auto}
  .pv8-library #pv8ConciergeButton{flex:0 0 auto;min-height:44px}
  .pv8-library .fw-sticky{top:var(--pv8-header-height,120px)}
  .pv8-library .header-dropdown{max-width:calc(100vw - 24px);max-height:65dvh;overflow-y:auto;overscroll-behavior:contain}
  .pv8-library .header-dropdown a,.pv8-library .header-dropdown button{min-height:44px;white-space:normal}
  .pv8-library .concierge-sidecar{width:min(460px,100vw)}
  .pv8-library .module-input-pane,.pv8-library #result,.pv8-library .layout>*,.pv8-library main{min-width:0;max-width:100%}
  .pv8-library .module-input-pane fieldset{min-width:0}
  .pv8-library .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pv8-library .metric-grid>*,.pv8-library .metric-grid :is(b,strong){min-width:0;overflow-wrap:anywhere;white-space:normal}
}
@media(pointer:coarse){
  .pv8-library .header-context-trigger,.pv8-library .header-menu-trigger{min-height:44px}
  :is(.pv8-library,.pv8-profile,.pv8-form-page) select{-webkit-appearance:none;appearance:none;min-height:44px;font-size:16px;padding-right:32px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 17px) center,calc(100% - 12px) center;background-size:5px 5px;background-repeat:no-repeat}
  button,.libbtn,summary,input:not([type=checkbox]):not([type=radio]):not([type=range]),select{min-height:44px}
  input[type=range]{min-height:44px;touch-action:pan-y}
  .qi{min-width:32px;min-height:32px;display:inline-flex;align-items:center;justify-content:center}
  .qi:hover::after,.qi:focus::after{display:none}
}
@media(max-width:760px){
  :root{--pv8-mobile-nav-height:calc(60px + env(safe-area-inset-bottom,0px))}
  html{scroll-padding-top:calc(var(--pv8-header-height,110px) + 12px);scroll-padding-bottom:var(--pv8-mobile-nav-height)}
  .pv8-library{font-size:16px}
  .pv8-library.pv8-adaptive-workspace{padding-bottom:calc(var(--pv8-mobile-nav-height) + 16px)}
  .pv8-library > header{padding:8px max(12px,env(safe-area-inset-left))!important;gap:4px 8px;align-items:center}
  .pv8-library > header .pv8-brand{flex:1 1 auto;min-width:0}
  .pv8-library .workspace-header-nav{order:3;flex-basis:100%;width:100%;gap:8px}
  .pv8-library .workspace-header-nav #pv8ConciergeButton{display:none}
  .pv8-library .workspace-header-nav .header-context-label{font-size:11px;padding:0 4px}
  .pv8-library .workspace-header-nav .header-context-trigger{padding:4px;font-size:14px;line-height:1.3}
  .pv8-library .header-context-trigger b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .pv8-library .sidebar-toggle{width:44px;height:44px;min-width:44px}
  .pv8-mobile-more{display:block;position:relative;order:2;flex:0 0 auto}
  .pv8-mobile-more>summary{display:flex;align-items:center;justify-content:center;min-width:60px;min-height:44px;cursor:pointer;border:1px solid var(--border);border-radius:8px;list-style:none}
  .pv8-mobile-more-body{position:absolute;right:0;top:100%;z-index:4100;width:240px;max-width:calc(100vw - 24px);background:var(--surface-1);box-shadow:0 8px 24px color-mix(in srgb,var(--pv8-overlay-ink) 20%,transparent);border:1px solid var(--border);padding:12px;display:grid;gap:10px}
  .pv8-mobile-more-body>*{width:100%;margin:0!important;min-height:44px}
  .pv8-mobile-nav{position:fixed;z-index:1500;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:6px max(8px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom));background:var(--surface-1);border-top:1px solid var(--border);box-shadow:0 -3px 14px color-mix(in srgb,var(--pv8-overlay-ink) 6.666667%,transparent)}
  .pv8-mobile-nav button{min-width:0;min-height:48px;padding:6px 3px;margin:0;border:0;border-radius:8px;font-size:13px;font-weight:650;background:transparent;color:var(--text-primary);overflow-wrap:anywhere}
  .pv8-mobile-nav button:focus-visible,.pv8-mobile-nav button:hover{background:var(--surface-0);outline:2px solid var(--series-1)}
  .pv8-keyboard-open .pv8-mobile-nav,.concierge-sidecar-open .pv8-mobile-nav{display:none}
  .pv8-connection-status{bottom:calc(var(--pv8-mobile-nav-height) + 8px);font-size:14px}
  .pv8-library #assetPane{top:var(--pv8-header-height,110px);bottom:var(--pv8-mobile-nav-height);height:auto;max-height:calc(100dvh - var(--pv8-header-height,110px) - var(--pv8-mobile-nav-height));width:min(360px,calc(100vw - 32px));overflow:auto}
  .pv8-library #assetPane a,.pv8-library #assetPane button{min-height:44px}
  .pv8-library .header-dropdown{position:fixed;top:var(--pv8-header-height,110px);left:12px!important;right:12px!important;width:auto;min-width:0;max-width:none;max-height:calc(100dvh - var(--pv8-header-height,110px) - var(--pv8-mobile-nav-height) - 12px)}
  .pv8-library button,.pv8-library .libbtn,.pv8-library summary{min-height:44px;max-width:100%;white-space:normal}
  .pv8-library input:not([type=checkbox]):not([type=radio]),.pv8-library select,.pv8-library textarea{font-size:16px!important;max-width:100%;min-width:0!important;box-sizing:border-box}
  .pv8-library select,.pv8-library input:not([type=checkbox]):not([type=radio]):not([type=range]){min-height:44px}
  .pv8-library .module-input-pane label,.pv8-library .module-input-pane fieldset{min-width:0;max-width:100%;overflow-wrap:anywhere}
  .pv8-library .module-input-pane .module-journey-nav{grid-template-rows:none;grid-auto-rows:auto}
  .pv8-library .module-input-pane .module-draft-status,.pv8-library .module-input-pane .module-journey-readiness-overview{height:auto;min-height:0;max-height:none;overflow:visible}
  .pv8-library .module-input-pane .journey-readiness-banner{height:auto;min-height:0;max-height:none;overflow:visible}
  .pv8-library .module-input-pane [style*="grid-template-columns"],.pv8-library #result [style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr)!important}
  .pv8-library .module-input-pane [style*="min-width"],.pv8-library #result [style*="min-width"]{min-width:0!important}
  .pv8-library .module-input-pane [style*="display:flex"],.pv8-library #result [style*="display:flex"]{flex-wrap:wrap}
  .pv8-library .module-input-pane [style*="display:flex"]>*{max-width:100%}
  .pv8-library #result svg:not(.gm-style svg){max-width:100%;height:auto}
  .pv8-library #result canvas{max-width:100%}
  .pv8-library .module-journey-actions{position:sticky;bottom:var(--pv8-mobile-nav-height);z-index:20;gap:8px;padding:10px 0;background:var(--surface-1);border-top:1px solid var(--border)}
  .pv8-library .module-journey-actions .journey-primary{flex:1 1 100%;min-height:48px;font-size:16px}
  .pv8-library .module-journey-actions>button{min-height:44px;flex:1 1 120px}
  .pv8-keyboard-open .module-journey-actions{position:static}
  .pv8-mobile-section-picker{display:grid;gap:4px;margin:10px 0;font-size:13px;color:var(--text-secondary)}
  .pv8-mobile-section-picker select{width:100%;min-height:44px;background:var(--surface-1);color:var(--text-primary);border:1px solid var(--border);padding:8px;border-radius:8px}
  .pv8-library .journey-native-nav,.pv8-library .direct-wire-result-tabs{flex-wrap:nowrap!important;max-width:100%;overflow-x:auto;gap:6px!important;padding-bottom:6px;overscroll-behavior-x:contain}
  .pv8-library .journey-native-nav>button,.pv8-library .direct-wire-result-tabs>button{flex:0 0 auto;max-width:240px}
  .pv8-library .module-journey-progress{max-width:100%;overflow-x:auto}
  .pv8-library .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pv8-library .metric-grid>*{min-width:0;overflow-wrap:anywhere}
  .pv8-library .concierge-sidecar{width:100vw;height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
  .pv8-library .concierge-sidecar-head button{min-height:44px;min-width:64px}
  .pv8-library :is(.workspace-dialog,.collab-dialog,.account-preferences-dialog){width:calc(100vw - 24px)!important;max-width:calc(100vw - 24px);max-height:calc(100dvh - 32px);overflow:auto;padding:16px}
  .pv8-library :is(.workspace-dialog-backdrop,.account-preferences-backdrop){padding:12px;align-items:flex-start}
  .pv8-library :is(.cat,.slot,.evidence-form,.workspace-explainer){grid-template-columns:minmax(0,1fr)!important}
  .pv8-library :is(.cat,.slot)>*,.pv8-library .saved-output-topline>*{min-width:0;overflow-wrap:anywhere}
  .pv8-library .saved-output-topline{grid-template-columns:1fr}
  .pv8-library .saved-output-date{text-align:left}
  .pv8-library .client-workspace-nav{flex-wrap:wrap;max-width:100%;gap:8px}
  .pv8-library .client-workspace-nav .header-context{max-width:100%}
  .pv8-library .getting-started-widget,.pv8-library #gettingStartedChecklist{bottom:calc(var(--pv8-mobile-nav-height) + 8px)}
  .pv8-library .pv8-role-card{bottom:calc(var(--pv8-mobile-nav-height) + 12px);max-height:calc(100dvh - var(--pv8-mobile-nav-height) - 36px);overflow:auto}
  .pv8-library .pv8-role-card label{min-height:44px;display:inline-flex;align-items:center}
}
@media(max-width:760px){
  .pv8-profile{padding:12px!important;font-size:16px;max-width:100%;overflow-wrap:anywhere}
  .pv8-profile header{flex-wrap:wrap;gap:8px}
  .pv8-profile .client-workspace-nav{flex-wrap:wrap;min-width:0;max-width:100%}
  .pv8-profile button,.pv8-profile .libbtn,.pv8-profile summary,.pv8-profile .saved-output-actions a{min-height:44px;white-space:normal}
  .pv8-profile input,.pv8-profile select,.pv8-profile textarea{font-size:16px!important;min-height:44px;min-width:0;max-width:100%}
  .pv8-profile :is(.cat,.slot,.evidence-form,.workspace-explainer,.saved-output-topline){grid-template-columns:minmax(0,1fr)!important}
  .pv8-profile :is(.cat,.slot)>*,.pv8-profile .saved-output-topline>*{min-width:0;overflow-wrap:anywhere}
  .pv8-profile .saved-output-date{text-align:left}
  /* The evidence register already owns horizontal scrolling around its table. */
  .pv8-profile table:not(:where(#evidenceRegister table)){display:block;overflow:auto;max-width:100%}
  .pv8-profile #evidenceRegister table{min-width:660px}
  .pv8-profile #fields td:first-child{white-space:normal;min-width:110px}
  .pv8-profile :is(.workspace-dialog,.saved-output-dialog){max-width:100%;max-height:85dvh;overflow:auto;padding:16px}
  .pv8-profile :is(.workspace-dialog-backdrop,.saved-output-backdrop){padding:12px}
  .pv8-profile .header-dropdown{max-width:calc(100vw - 24px);min-width:0;max-height:65dvh;overflow:auto}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}}
@media(max-width:760px){
  .pv8-form-page{padding:12px;font-size:16px}
  .pv8-form-page :is(input,select,textarea){font-size:16px;min-width:0;max-width:100%;min-height:44px}
  .pv8-form-page :is(button,.libbtn,summary){min-height:44px;white-space:normal}
  .pv8-form-page .file-row{grid-template-columns:minmax(0,1fr);gap:8px}
  .pv8-form-page .file-row>*{min-width:0;max-width:100%;overflow-wrap:anywhere}
  .pv8-form-page .cloud-row{flex-wrap:wrap}
  .pv8-form-page .cloud-row input{min-width:0;flex-basis:100%}
  .pv8-form-page .create-progress{grid-template-columns:repeat(3,minmax(0,1fr));overflow-wrap:anywhere}
  .pv8-portfolio .asset-head{grid-template-columns:repeat(2,minmax(0,1fr));padding:12px;gap:12px}
  .pv8-portfolio .asset-head>*{min-width:0;overflow-wrap:anywhere}
  .pv8-portfolio table{display:block;overflow-x:auto;max-width:100%}
  .pv8-portfolio main{min-width:0;padding:12px}
}
.concierge-entry button:first-child{background:var(--text-primary);color:var(--surface-1)}
.concierge-entry button:first-child small{color:inherit;opacity:.76}
.concierge-workflows{padding:0 8px}.concierge-workflows>summary{cursor:pointer;color:var(--text-secondary);font-size:11.5px;font-weight:650;padding:7px 2px}.concierge-workflows .concierge-nav{padding:0}
.concierge-sidecar[hidden]{display:none!important}.concierge-sidecar{position:fixed;z-index:4000;inset:0 0 0 auto;width:min(420px,100vw);height:100dvh;background:var(--surface-1,#fff);border-left:1px solid var(--border,#e3e2de);box-shadow:-16px 0 40px rgba(16,25,32,.16);display:grid;grid-template-rows:auto minmax(0,1fr)}.concierge-sidecar-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border,#e3e2de);background:var(--surface-0,#fff)}.concierge-sidecar-head button{min-height:36px;padding:6px 10px;border:1px solid var(--border,#e3e2de);border-radius:7px;background:var(--surface-0,#fff);color:inherit;cursor:pointer}.concierge-sidecar iframe{width:100%;height:100%;border:0;background:var(--surface-0,#fff)}
@media(max-width:620px){.concierge-sidecar{width:100vw;border-left:0}.concierge-sidecar-open{overflow:hidden}}

/* The header asset menu searches the portfolio in place, so a reader with two
   hundred assets never has to open the pane's long list (owner request,
   2026-09-20).  The field pins to the top of the menu while the rows below it
   scroll. */
.header-dropdown .header-dropdown-search {
  position:sticky; top:0; z-index:1; padding:7px 8px 6px;
  background:var(--surface-0); border-bottom:1px solid var(--border);
}
.header-dropdown .header-dropdown-search input {
  width:100%; box-sizing:border-box; padding:6px 9px; font-size:12.5px;
  border:1px solid var(--border); border-radius:6px;
  background:#fff; color:inherit;
}
.header-dropdown .header-dropdown-search input:focus-visible {
  outline:2px solid var(--series-1); outline-offset:1px; border-color:var(--series-1);
}
.header-dropdown #assetHeaderMenuList { max-height:60vh; overflow-y:auto; }

/* Shared account navigation: the same drawer on portfolio and engine pages.
   Token-only styling; content remains readable at zoom and on touch screens. */
.pv8-library.pv8-unified-navigation .layout,
.pv8-library.pv8-unified-navigation .layout.assets-collapsed {display:block;grid-template-columns:minmax(0,1fr)}
.pv8-library.pv8-unified-navigation #assetPane {
  position:fixed;top:var(--pv8-sidebar-top,68px);bottom:0;left:0;z-index:1601;
  width:min(340px,calc(100vw - 32px));height:auto;max-height:none;overflow:auto;
  overscroll-behavior:contain;background:var(--surface-1);border:0;border-right:1px solid var(--border);
  box-shadow:8px 0 30px color-mix(in srgb,var(--pv8-overlay-ink) 15%,transparent);
  transform:translateX(0);visibility:visible;transition:transform .18s ease;
}
.pv8-library.pv8-unified-navigation .layout.assets-collapsed #assetPane {
  display:block;transform:translateX(-101%);visibility:hidden;pointer-events:none;box-shadow:none;
}
.pv8-library.pv8-unified-navigation #assetPane .navigation-pane {
  padding:0 18px 28px!important;border:0;border-radius:0;background:transparent;
  font-family:var(--pv8-github-sans),system-ui,sans-serif;
}
.pv8-library.pv8-unified-navigation #paneScrim {
  position:fixed;inset:var(--pv8-sidebar-top,68px) 0 0;z-index:1600;
  background:color-mix(in srgb,var(--pv8-overlay-ink) 30%,transparent);opacity:1;
}
.pv8-library.pv8-unified-navigation .layout.assets-collapsed #paneScrim {opacity:0;pointer-events:none;visibility:hidden}
body.pv8-library.pv8-unified-navigation:has(.layout:not(.assets-collapsed)) {overflow:hidden}
.pv8-unified-navigation:has(.layout:not(.assets-collapsed)) .pv8-mobile-nav {visibility:hidden;pointer-events:none}
.pv8-unified-navigation header .sidebar-toggle {display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
.pv8-unified-navigation .pv8-sidebar-close {margin-left:auto;min-height:44px;font-size:12px;border:0;background:transparent;color:var(--text-secondary)}
.pv8-unified-navigation .pv8-sidebar-group {padding:8px 0;border-top:1px solid var(--border)}
.pv8-unified-navigation #assetPane .nav-section-heading {margin:0;color:var(--text-muted);font:650 11px/1.35 var(--pv8-github-sans),system-ui,sans-serif;letter-spacing:.045em;text-transform:uppercase}
.pv8-unified-navigation #assetPane .pv8-sidebar-group-toggle {
  align-items:center;background:transparent;border:0;color:inherit;cursor:pointer;display:flex;
  font:inherit;justify-content:space-between;min-height:42px;padding:8px 10px;text-align:left;width:100%;
}
.pv8-unified-navigation #assetPane .pv8-sidebar-group-toggle:hover {color:var(--series-1)}
.pv8-unified-navigation #assetPane .pv8-sidebar-group-mark {font-size:15px;font-weight:500;line-height:1;text-transform:none}
.pv8-unified-navigation #assetPane .pv8-sidebar-group-body[hidden] {display:none!important}
.pv8-unified-navigation #assetPane .asset-links {display:grid;gap:3px;padding:0}
.pv8-unified-navigation #assetPane [data-sidebar-key] {display:flex;gap:10px;align-items:center;min-height:44px;padding:9px 10px;margin:0;border-radius:8px;color:var(--text-primary);font:500 13.5px/1.4 var(--pv8-github-sans),system-ui,sans-serif;text-decoration:none;white-space:normal;overflow-wrap:anywhere}
.pv8-unified-navigation #assetPane [data-sidebar-key]>span:first-child {flex:1;min-width:0}
.pv8-unified-navigation #assetPane .nav-ico {flex:0 0 20px;fill:none;height:20px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:20px}
.pv8-unified-navigation #assetPane [data-sidebar-key]:hover,
.pv8-unified-navigation #assetPane [aria-current="page"] {background:var(--pv8-accent-soft);color:var(--series-1)}
.pv8-unified-navigation #assetPane [aria-current="page"] {font-weight:700;box-shadow:inset 3px 0 var(--series-1)}
.pv8-unified-navigation #assetPane [aria-disabled="true"] {color:var(--text-muted);cursor:default}
.pv8-unified-navigation #assetPane .pv8-sidebar-ask {background:var(--series-1);color:var(--surface-0);font-weight:700;margin-top:5px}
.pv8-unified-navigation #assetPane a:focus-visible,
.pv8-unified-navigation #assetPane button:focus-visible,
.pv8-unified-navigation #assetPane summary:focus-visible {outline:2px solid var(--series-1);outline-offset:2px}
.pv8-unified-navigation .pv8-sidebar-asset-name {margin:0;padding:4px 10px 10px;font:650 14px/1.4 var(--pv8-github-sans),system-ui,sans-serif;overflow-wrap:anywhere}
.pv8-unified-navigation #assetPane .pv8-sidebar-fixed {border-top:1px solid var(--border);padding:12px 0}
.pv8-unified-navigation #assetPane .pv8-sidebar-assets {border-top:0;padding-top:4px}
.pv8-unified-navigation #assetPane .pv8-sidebar-assets .asset-browser,
.pv8-unified-navigation #assetPane .pv8-sidebar-assets .portfolio-asset-browser {border:0;margin:0;padding:0;background:transparent}
.pv8-unified-navigation #assetPane .pv8-sidebar-assets .asset-select-heading {align-items:center;display:flex;font:650 12px/1.4 var(--pv8-github-sans),system-ui,sans-serif;gap:8px;justify-content:space-between;padding:8px 10px}
.pv8-unified-navigation #assetPane .pv8-sidebar-assets .asset-select-heading>span:not(.nav-ico) {flex:1;min-width:0}
.pv8-unified-navigation #assetPane .pv8-sidebar-assets :is(#assetList,#portfolioAssetList) {max-height:240px;overflow:auto;overscroll-behavior:contain;padding:2px}
.pv8-unified-navigation #assetPane .pv8-sidebar-assets :is(.asset,.portfolio-asset-choice) {font-family:var(--pv8-github-sans),system-ui,sans-serif;font-size:12.5px;line-height:1.35}
.pv8-unified-navigation #assetPane .pv8-sidebar-assets :is(.asset,.portfolio-asset-choice)>.nav-ico {float:left;margin:2px 8px 0 0}
.pv8-unified-navigation #assetPane .shortcuts-nav-section {
  border-top:1px solid var(--border);border-bottom:0;padding:8px 0;
}
.pv8-unified-navigation #assetPane .shortcuts-nav-section .nav-section-heading {
  align-items:center;color:var(--text-muted);display:flex;min-height:42px;margin:0;
  padding:8px 10px;font:650 11px/1.35 var(--pv8-github-sans),system-ui,sans-serif;
  letter-spacing:.045em;text-transform:uppercase;
}
.pv8-unified-navigation #assetPane #pv8ShortcutsSlot {padding:0!important}
.pv8-unified-navigation #assetPane .shortcuts-nav-section .pv8-shortcuts .pv8-pins {gap:3px;padding:0}
.pv8-unified-navigation #assetPane .shortcuts-nav-section .pv8-shortcuts .pv8-pin {
  gap:10px;min-height:44px;margin:0;padding:9px 10px;border-radius:8px;
  font:500 13.5px/1.4 var(--pv8-github-sans),system-ui,sans-serif;
}
.pv8-unified-navigation #assetPane .shortcuts-nav-section .pv8-shortcuts .pv8-pin b {
  font:inherit;
}
.pv8-unified-navigation #assetPane :is(button,a,summary,input,select) {font-family:var(--pv8-github-sans),system-ui,sans-serif}
.pv8-unified-navigation #assetPane [data-sidebar-badge] {flex:0 0 auto;padding:3px 7px;border-radius:10px;background:var(--pv8-accent-soft);color:var(--series-1);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.pv8-unified-navigation #assetPane [data-sidebar-badge][hidden] {display:none}
.pv8-unified-navigation #pv8ConciergeSidecar>.concierge-workflows {flex:0 0 auto;max-height:45vh;overflow:auto;margin:8px 16px;border-top:1px solid var(--border);padding:10px 0}
.pv8-unified-navigation #pv8ConciergeSidecar>.concierge-workflows summary {cursor:pointer;min-height:44px;padding:10px 0}
@media(prefers-reduced-motion:reduce){.pv8-library.pv8-unified-navigation #assetPane{transition:none}}

/* Approved rounded ribbon wordmark. Keep existing text as the accessible name. */
.pv8-brand :is(.pv8-wordmark,h1) {
  display:inline-block;flex:0 0 auto;width:70px;height:30px;margin:0;
  background:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20120%22%20role%3D%22img%22%20aria-labelledby%3D%22title%22%3E%20%3Ctitle%20id%3D%22title%22%3EPV8%3C%2Ftitle%3E%20%3Cdefs%3E%20%3Cmask%20id%3D%22ribbon-crossing%22%20maskUnits%3D%22userSpaceOnUse%22%20x%3D%22-3%22%20y%3D%22-1%22%20width%3D%2274%22%20height%3D%2298%22%3E%20%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M-3-1H71V97H-3Z%22%2F%3E%20%3Cpath%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224.5%22%20d%3D%22M10%2045L36%2059M32%2034L57%2048%22%2F%3E%20%3C%2Fmask%3E%20%3C%2Fdefs%3E%20%3Cg%20transform%3D%22translate(12%2012)%22%20fill%3D%22%23101e2a%22%3E%20%3Cpath%20fill-rule%3D%22evenodd%22%20d%3D%22M0%200H44C65%200%2076%2012%2076%2032S65%2064%2044%2064H20V96H0ZM20%2018V46H43C52%2046%2056%2041%2056%2032S52%2018%2043%2018Z%22%2F%3E%20%3Cpath%20d%3D%22M85%200H107L130%2070L153%200H175L141%2096H119Z%22%2F%3E%20%3Cpath%20transform%3D%22translate(192%200)%22%20fill%3D%22%2311426b%22%20mask%3D%22url(%23ribbon-crossing)%22%20fill-rule%3D%22evenodd%22%20d%3D%22M34%200C54%200%2066%2010%2066%2025C66%2035%2061%2042%2052%2046C63%2050%2070%2058%2070%2070C70%2087%2056%2096%2034%2096C12%2096-2%2087-2%2070C-2%2058%205%2050%2016%2046C7%2042%202%2035%202%2025C2%2010%2014%200%2034%200ZM34%2016C25%2016%2020%2020%2020%2027C20%2034%2025%2038%2034%2038C43%2038%2048%2034%2048%2027C48%2020%2043%2016%2034%2016ZM34%2055C23%2055%2017%2060%2017%2068C17%2076%2023%2081%2034%2081C45%2081%2051%2076%2051%2068C51%2060%2045%2055%2034%2055Z%22%2F%3E%20%3C%2Fg%3E%20%3C%2Fsvg%3E") left center/contain no-repeat;
  font-size:0!important;line-height:0!important;letter-spacing:0;
}
.pv8-brand :is(.pv8-wordmark,h1) span {font-size:0!important}
@media (max-width:680px) {
  .pv8-brand :is(.pv8-wordmark,h1) {width:60px;height:25px}
}
@media (forced-colors:active) {
  .pv8-brand :is(.pv8-wordmark,h1) {background:none;font-size:26px!important;line-height:30px!important;color:LinkText!important}
  .pv8-brand :is(.pv8-wordmark,h1) span {font-size:inherit!important;color:inherit!important}
}
