/* /Components/ArtifactLoadStateView.razor.rz.scp.css */
.status-block[b-51opswc13f] {
    display: grid;
    min-height: 420px;
    place-items: center;
}

/* Viewer loading: skeleton rows that reserve the height of a figure and a table. */
.viewer-skeleton[b-51opswc13f] {
    min-height: 420px;
    padding-top: 12px;
}

.viewer-skeleton .skeleton-axis[b-51opswc13f],
.viewer-skeleton .skeleton-row[b-51opswc13f] {
    background: var(--header);
}

.viewer-skeleton .skeleton-axis[b-51opswc13f] {
    height: 240px;
    margin-bottom: 16px;
    border-bottom: 1px solid var(--ink);
}

.viewer-skeleton .skeleton-row[b-51opswc13f] {
    height: 14px;
    margin-bottom: 8px;
}

.viewer-skeleton .skeleton-row:nth-child(odd)[b-51opswc13f] {
    width: 70%;
}

/* Viewer failure and empty states: 2px red top rule, triangle, the request, then recovery links. */
.viewer-status[b-51opswc13f] {
    margin: 12px 0;
    padding: 10px 0;
    border-top: 2px solid var(--missed);
}

.viewer-status.is-empty[b-51opswc13f] {
    border-top-color: var(--missed);
}

.viewer-status h2[b-51opswc13f] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 6px;
}

.viewer-status svg[b-51opswc13f] {
    flex: none;
}

.viewer-status .status-request[b-51opswc13f] {
    margin: 0 0 8px;
    color: var(--muted);
    font: 11.5px/1.5 var(--font-mono);
    overflow-wrap: anywhere;
}

.viewer-status .status-links[b-51opswc13f] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 16px;
}

.viewer-status .status-links a[b-51opswc13f] {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
}
/* /Components/BackToOverview.razor.rz.scp.css */
/* The recovery link on Not found. Its own rule, because the page's scoped styles stop at this
   component's edge. */
.recovery-links[b-0unkfbe7w1] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 16px;
    margin-top: 12px;
}

.recovery-links a[b-0unkfbe7w1] {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    font-size: 13px;
}
/* /Components/BrandMark.razor.rz.scp.css */
.brand[b-34h0pvpqdg] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    line-height: 1;
}

.brand-mark[b-34h0pvpqdg] {
    flex: 0 0 auto;
    /* The mark's own origin node sits low in its box, so it optically rides high beside a cap
       height. A hair of translation seats it on the wordmark's baseline. */
    transform: translateY(1px);
}

.brand-name[b-34h0pvpqdg] {
    font-family: var(--font-display);
    font-size: 1.2rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    white-space: nowrap;
}

.brand-name span[b-34h0pvpqdg] {
    font-weight: 400;
    color: var(--brand-accent, currentColor);
}

/* The depth fade reads as detail at 44px and as dirt at 26px, where a 0.5-opacity wedge is two
   pixels of half-tone. The small lockup is flat instead. */
.brand-mark.is-small[b-34h0pvpqdg]  .wedge-back {
    opacity: 1;
}

/* Viewer: the wordmark is the only Source Serif 4 on the screen, 600, NEM in on-ink and Sweep in amber. */
.viewer-shell .brand-name[b-34h0pvpqdg] {
    font-family: 'Source Serif 4', Georgia, serif;
    font-size: 19px;
    font-weight: 600;
    letter-spacing: 0;
    color: var(--on-ink);
}

.viewer-shell .brand-name span[b-34h0pvpqdg] {
    font-weight: 600;
    color: var(--brand-marker);
}

.viewer-shell .brand-mark[b-34h0pvpqdg] {
    transform: none;
    color: var(--on-ink);
}
/* /Components/Breadcrumb.razor.rz.scp.css */
.breadcrumb[b-l4e0smv1r4] {
    margin: 0 0 0.75rem;
    font-size: 0.85rem;
}

.breadcrumb ol[b-l4e0smv1r4] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* The separator is drawn, not typed, so it is never read out and never copied with the text. It
   follows each crumb, so a trail that wraps starts each line with a crumb rather than a separator. */
.breadcrumb li:not(:last-child)[b-l4e0smv1r4]::after {
    content: "";
    display: inline-block;
    width: 0.4rem;
    height: 0.4rem;
    margin: 0 0.6rem 0.1rem 0.5rem;
    border-top: 1.5px solid var(--color-muted);
    border-right: 1.5px solid var(--color-muted);
    transform: rotate(45deg);
}

.breadcrumb a[b-l4e0smv1r4],
.breadcrumb span[b-l4e0smv1r4] {
    display: inline-block;
    padding: 0.2rem 0;
    min-height: 24px;
    line-height: 1.4;
}

.breadcrumb a[b-l4e0smv1r4] {
    color: var(--selection);
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

.breadcrumb span[aria-current="page"][b-l4e0smv1r4] {
    color: var(--color-ink);
    font-weight: 600;
}
/* /Components/CaseStudyCite.razor.rz.scp.css */
.case-cite[b-ft8ma55wj2] {
    color: inherit;
    text-decoration-color: var(--color-border-control);
    text-decoration-thickness: 1px;
    text-underline-offset: 0.2em;
}

.case-cite:hover[b-ft8ma55wj2] {
    color: var(--color-brand-accent);
}
/* /Components/CaseStudyFirmingMatrix.razor.rz.scp.css */
.case-firming[b-4xtlsotrbt] {
    margin: 2rem 0 1rem;
}

.case-firming h3[b-4xtlsotrbt] {
    margin: 0 0 0.4rem;
    font-family: var(--font-display);
    font-size: clamp(1.2rem, 2.6vw, 1.5rem);
    font-weight: 600;
}

.case-firming figcaption p[b-4xtlsotrbt] {
    max-width: none;
    margin: 0 0 1rem;
    color: var(--color-muted);
    font-size: 0.88rem;
    line-height: 1.5;
}

.firming-scroll[b-4xtlsotrbt] {
    position: relative;
    overflow-x: auto;
}

.firming-table[b-4xtlsotrbt] {
    width: 100%;
    border-collapse: collapse;
    font-variant-numeric: tabular-nums;
}

.firming-table th[b-4xtlsotrbt],
.firming-table td[b-4xtlsotrbt] {
    padding: 0.6rem 0.75rem;
    border-bottom: 1px solid var(--color-border);
    text-align: right;
    white-space: nowrap;
}

.firming-table thead th[b-4xtlsotrbt] {
    border-bottom: 2px solid var(--color-ink);
    color: var(--color-muted);
    font-size: 0.8rem;
}

.firming-table th[scope="row"][b-4xtlsotrbt],
.firming-table thead th[rowspan][b-4xtlsotrbt] {
    text-align: left;
    vertical-align: bottom;
}

/* The group label over the value columns, so the column heads read as load added, not dates or
   scenarios. */
.firming-table .firming-group th[scope="colgroup"][b-4xtlsotrbt] {
    padding-bottom: 0.35rem;
    border-bottom: 1px solid var(--color-border-control);
    color: var(--color-ink);
    font-weight: 700;
    text-align: center;
}

.firming-table td.is-grown[b-4xtlsotrbt] {
    background: var(--color-brand-accent-soft);
    color: var(--color-brand-accent);
    font-weight: 700;
}

@media print {
    .case-firming[b-4xtlsotrbt] {
        break-inside: avoid;
    }
}

.cell-note[b-4xtlsotrbt] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}
/* /Components/CaseStudyIcon.razor.rz.scp.css */
.case-icon[b-ntkw83g87s] {
    display: block;
    flex: none;
}
/* /Components/CaseStudyLevers.razor.rz.scp.css */
.case-levers[b-x3dbodxeqj] {
    margin: 2rem 0;
    padding: clamp(1.25rem, 3vw, 1.75rem);
    border: 1px solid var(--color-border-strong);
    border-radius: var(--radius-lg);
    background: var(--color-surface-muted);
}

.case-levers h3[b-x3dbodxeqj] {
    max-width: none;
    margin: 0 0 1.25rem;
    font-family: var(--font-display);
    font-size: clamp(1.1rem, 2.4vw, 1.35rem);
    line-height: 1.3;
}

.lever-row[b-x3dbodxeqj] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.lever[b-x3dbodxeqj] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    padding: 1rem;
    border: 1px solid var(--color-border);
    border-top-width: 4px;
    border-radius: var(--radius-sm);
    background: var(--color-surface);
    color: var(--color-muted);
}

.lever strong[b-x3dbodxeqj] {
    color: var(--color-ink);
    font-size: 1rem;
}

.lever-role[b-x3dbodxeqj] {
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.lever-detail[b-x3dbodxeqj] {
    color: var(--color-home-copy);
    font-size: 0.86rem;
    line-height: 1.45;
}

.lever.is-varied[b-x3dbodxeqj] {
    border-top-color: var(--color-generation);
    color: var(--color-generation);
}

.lever.is-sized[b-x3dbodxeqj] {
    border-top-color: var(--color-brand-accent);
    color: var(--color-brand-accent);
}

.lever.is-fixed[b-x3dbodxeqj] {
    border-top-color: var(--color-border-control);
}

/* The sizing loop. Drawn as a diagram because the loop back to the first box is the point, and a
   list cannot show it; on a phone it scrolls sideways inside its own box rather than shrinking the
   text below reading size. */
.decision-heading[b-x3dbodxeqj] {
    margin-top: 1.75rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--color-border);
}

.decision-heading h4[b-x3dbodxeqj] {
    margin: 0 0 0.3rem;
    font-family: var(--font-display);
    font-size: 1.1rem;
}

.decision-heading p[b-x3dbodxeqj],
.decision-note[b-x3dbodxeqj] {
    max-width: none;
    margin: 0;
    color: var(--color-home-copy);
    font-size: 0.88rem;
    line-height: 1.5;
}

.decision-heading .decision-hint[b-x3dbodxeqj] {
    display: none;
    margin-top: 0.4rem;
    color: var(--color-muted);
    font-size: 0.8rem;
}

@media (max-width: 700px) {
    .decision-heading .decision-hint[b-x3dbodxeqj] {
        display: block;
    }
}

.decision-scroll[b-x3dbodxeqj] {
    margin: 1rem 0 0.75rem;
    overflow-x: auto;
}

.decision-flow[b-x3dbodxeqj] {
    display: block;
    width: 100%;
    min-width: 0;
    max-width: 820px;
    height: auto;
}

.decision-link[b-x3dbodxeqj] {
    fill: none;
    stroke: var(--color-muted);
    stroke-width: 1.6;
}

.decision-link.is-loop[b-x3dbodxeqj] {
    stroke: var(--color-brand-accent);
    stroke-dasharray: 5 4;
}

.decision-arrowhead[b-x3dbodxeqj] {
    fill: var(--color-muted);
}

.decision-step[b-x3dbodxeqj],
.decision-question[b-x3dbodxeqj],
.decision-end[b-x3dbodxeqj] {
    fill: var(--color-surface);
    stroke: var(--color-border-control);
    stroke-width: 1.4;
}

.decision-question[b-x3dbodxeqj] {
    fill: var(--color-surface-muted);
    stroke: var(--color-ink);
}

.decision-step.is-sized[b-x3dbodxeqj] {
    fill: var(--color-brand-accent-soft);
    stroke: var(--color-brand-accent);
}

.decision-end.is-met[b-x3dbodxeqj] {
    fill: var(--color-positive-soft);
    stroke: var(--color-positive);
}

.decision-end.is-missed[b-x3dbodxeqj] {
    fill: var(--color-negative-soft);
    stroke: var(--color-negative);
}

.decision-text[b-x3dbodxeqj] {
    fill: var(--color-ink);
    font-family: var(--font-body);
    font-size: 14px;
}

.decision-branch[b-x3dbodxeqj] {
    fill: var(--color-muted);
    font-family: var(--font-body);
    font-size: 12.5px;
    font-weight: 700;
}

.decision-branch.is-loop[b-x3dbodxeqj] {
    fill: var(--color-brand-accent);
}

@media (max-width: 760px) {
    .lever-row[b-x3dbodxeqj] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media print {
    .lever-row[b-x3dbodxeqj] {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .case-levers[b-x3dbodxeqj] {
        break-inside: avoid;
    }
}

/* Without the inputs above it, the loop needs no divider. */
.case-levers > .decision-heading:first-child[b-x3dbodxeqj] {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
}

/* Below this width the loop would shrink past reading size, so it keeps its width and scrolls. */
@media (max-width: 760px) {
    .decision-flow[b-x3dbodxeqj] {
        min-width: 600px;
    }
}
/* /Components/CaseStudyLimits.razor.rz.scp.css */
.case-limits[b-qgl5xjhmi0] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin: 1.75rem 0 1.25rem;
    padding: 0;
    list-style: none;
}

.case-limits li[b-qgl5xjhmi0] {
    padding: 1.1rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface-muted);
    color: var(--color-brand-accent);
}

.case-limits h3[b-qgl5xjhmi0] {
    margin: 0.5rem 0 0.4rem;
    color: var(--color-ink);
    font-family: var(--font-display);
    font-size: 1.05rem;
    line-height: 1.3;
}

.case-limits p[b-qgl5xjhmi0] {
    margin: 0;
    color: var(--color-home-copy);
    font-size: 0.88rem;
    line-height: 1.5;
}

@media (max-width: 900px) {
    .case-limits[b-qgl5xjhmi0] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 520px) {
    .case-limits[b-qgl5xjhmi0] {
        grid-template-columns: 1fr;
    }
}

@media print {
    .case-limits[b-qgl5xjhmi0] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .case-limits li[b-qgl5xjhmi0] {
        break-inside: avoid;
    }
}

/* Which way each simplification pushes the results. */
.case-limits p.limit-effect[b-qgl5xjhmi0] {
    margin-top: 0.75rem;
    padding-top: 0.6rem;
    border-top: 1px solid var(--color-border);
    font-size: 0.82rem;
    font-weight: 700;
}

.case-limits p.limit-effect.is-over[b-qgl5xjhmi0] {
    color: var(--color-negative);
}

.case-limits p.limit-effect.is-under[b-qgl5xjhmi0] {
    color: var(--color-demand);
}

.case-limits p.limit-effect.is-either[b-qgl5xjhmi0] {
    color: var(--color-muted);
}

.case-limits p.limit-effect.is-scope[b-qgl5xjhmi0] {
    color: var(--color-brand-accent);
}

.limit-fine-print[b-qgl5xjhmi0] {
    max-width: 74ch;
    margin: 0 0 1rem;
    color: var(--color-muted);
    font-size: 0.8125rem;
    line-height: 1.5;
}
/* /Components/CaseStudyNarrative.razor.rz.scp.css */
.case-narrative[b-u0j9rcbfq5] {
    --case-shell: 1180px;
    color: var(--color-ink);
}

.case-opening[b-u0j9rcbfq5],
.case-narrative > section[b-u0j9rcbfq5],
.case-page-nav[b-u0j9rcbfq5] {
    max-width: var(--case-shell);
    box-sizing: border-box;
    margin: 0 auto;
    padding-right: clamp(1.25rem, 4vw, 3rem);
    padding-left: clamp(1.25rem, 4vw, 3rem);
}

.case-opening[b-u0j9rcbfq5] {
    padding-top: clamp(3.5rem, 7vw, 6rem);
    padding-bottom: clamp(2rem, 4vw, 3rem);
}

.case-narrative > section[b-u0j9rcbfq5] {
    padding-top: clamp(2.5rem, 5vw, 4rem);
    padding-bottom: clamp(2.5rem, 5vw, 4rem);
    border-top: 1px solid var(--color-border);
    scroll-margin-top: 4.25rem;
}

.case-label[b-u0j9rcbfq5] {
    margin: 0 0 0.5rem;
    color: var(--color-brand-accent);
    font-size: var(--type-eyebrow);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.case-opening h1[b-u0j9rcbfq5] {
    max-width: none;
    text-wrap: pretty;
    margin: 0;
    font-family: var(--font-display);
    font-size: clamp(2.2rem, 5.2vw, 3.9rem);
    line-height: 1.05;
}

/* The title asks; this line answers it, before the byline and the finding. */
.case-answer-line[b-u0j9rcbfq5] {
    max-width: none;
    margin: 0.85rem 0 0;
    color: var(--color-brand-accent);
    font-family: var(--font-display);
    font-size: clamp(1.4rem, 3vw, 2rem);
    font-weight: 600;
    line-height: 1.2;
}

/* Newspaper-style byline: name, role, date. */
.case-byline[b-u0j9rcbfq5] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    align-items: baseline;
    margin: 1.25rem 0 0;
    padding: 0.75rem 0;
    border-top: 1px solid var(--color-border);
    border-bottom: 1px solid var(--color-border);
    color: var(--color-muted);
    font-size: 0.875rem;
}

.case-byline .byline-name[b-u0j9rcbfq5] {
    color: var(--color-ink);
    font-weight: 700;
}

.case-byline a[b-u0j9rcbfq5] {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-underline-offset: 0.16em;
}

.case-standfirst[b-u0j9rcbfq5],
.case-narrative section > p[b-u0j9rcbfq5] {
    max-width: 74ch;
    color: var(--color-home-copy);
    font-size: 1rem;
    line-height: 1.72;
}

/* The framework resets paragraph margins, so running text in a section needs its own gap or
   consecutive paragraphs read as one block. */
.case-narrative section > p[b-u0j9rcbfq5] {
    margin: 0 0 1.1rem;
}

.case-narrative section > p:last-child[b-u0j9rcbfq5] {
    margin-bottom: 0;
}

.case-narrative section > h2 + p[b-u0j9rcbfq5] {
    max-width: none;
}

.case-standfirst[b-u0j9rcbfq5] {
    max-width: none;
    margin: 1.25rem 0 0;
    font-size: 1.06rem;
}

/* The snapshot a reader of a printed case study looks for first: what grid, what changed, what
   stayed put, and what the model was allowed to do about it. */
.case-snapshot[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    margin: 2rem 0 0;
    border-top: 2px solid var(--color-ink);
}

.case-snapshot div[b-u0j9rcbfq5] {
    padding: 0.9rem 1.25rem 0.9rem 0;
    border-bottom: 1px solid var(--color-border);
}

.case-snapshot dt[b-u0j9rcbfq5] {
    margin-bottom: 0.25rem;
    color: var(--color-muted);
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.case-snapshot dd[b-u0j9rcbfq5] {
    margin: 0;
    font-size: 0.94rem;
    line-height: 1.45;
}

.case-currency[b-u0j9rcbfq5] {
    margin: 0.75rem 0 0;
    color: var(--color-muted);
    font-size: 0.84rem;
}

.case-narrative h2[b-u0j9rcbfq5] {
    max-width: none;
    text-wrap: pretty;
    margin: 0 0 1.25rem;
    font-family: var(--font-display);
    font-size: clamp(1.7rem, 3.6vw, 2.4rem);
    font-weight: 600;
    line-height: 1.14;
}

.case-narrative h3[b-u0j9rcbfq5] {
    font-family: var(--font-display);
    text-wrap: pretty;
}

.case-page-nav[b-u0j9rcbfq5] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem 1rem;
    align-items: center;
    padding-top: 1rem;
    padding-bottom: 1rem;
    border-top: 1px solid var(--color-border);
}

.case-page-nav span[b-u0j9rcbfq5] {
    margin-right: 0.25rem;
    font-size: 0.82rem;
    font-weight: 700;
}

.case-page-nav a[b-u0j9rcbfq5],
.case-text-link[b-u0j9rcbfq5],
.case-note a[b-u0j9rcbfq5] {
    color: var(--color-brand);
    font-weight: 600;
    text-decoration-thickness: 1px;
    text-underline-offset: 0.2em;
}

.case-page-nav a[b-u0j9rcbfq5] {
    font-size: 0.9rem;
}

.case-page-nav a:hover[b-u0j9rcbfq5],
.case-text-link:hover[b-u0j9rcbfq5] {
    color: var(--color-brand-accent);
}

.case-page-nav a:focus-visible[b-u0j9rcbfq5],
.case-text-link:focus-visible[b-u0j9rcbfq5],
.case-primary:focus-visible[b-u0j9rcbfq5],
.case-secondary:focus-visible[b-u0j9rcbfq5] {
    outline: 3px solid var(--color-brand-accent);
    outline-offset: 3px;
}

/* Highlights: the one band on the page set on the dark surface, because it is the part a
   reader who stops here should leave with. */
.case-answer[b-u0j9rcbfq5] {
    border-top: none !important;
    background: var(--color-ink-surface);
    /* Full-bleed band while the content keeps the shell's alignment. */
    box-shadow: 0 0 0 100vmax var(--color-ink-surface);
    clip-path: inset(0 -100vmax);
    color: var(--color-on-ink);
}

.case-answer h2[b-u0j9rcbfq5] {
    max-width: none;
    color: var(--color-on-ink);
}

.case-answer .answer-lead[b-u0j9rcbfq5] {
    max-width: none;
    margin: 0 0 1.75rem;
    color: var(--color-on-ink);
    font-size: 1.12rem;
    line-height: 1.6;
}

/* One scale for the whole sweep, coloured by stage and drawn to scale. */
.stage-band[b-u0j9rcbfq5] {
    position: relative;
    height: 28px;
    margin: 2.5rem 0 2.25rem;
}

.stage-track[b-u0j9rcbfq5] {
    position: absolute;
    inset: 0;
    overflow: hidden;
    border-radius: 3px;
    background: var(--color-ink-surface-raised);
}

.stage-segment[b-u0j9rcbfq5] {
    position: absolute;
    top: 0;
    bottom: 0;
}

.stage-segment.is-copes[b-u0j9rcbfq5] {
    background: #6fb8a5;
}

.stage-segment.is-costly[b-u0j9rcbfq5] {
    background: var(--color-on-ink-accent);
}

.stage-segment.is-breach[b-u0j9rcbfq5] {
    background: #e2735c;
}

.stage-segment.is-gap[b-u0j9rcbfq5] {
    background: repeating-linear-gradient(45deg, var(--color-ink-surface-raised) 0 4px, var(--color-on-ink-muted) 4px 6px);
}

.stage-mark[b-u0j9rcbfq5] {
    position: absolute;
    color: var(--color-on-ink-muted);
    font-size: 0.78rem;
    white-space: nowrap;
    transform: translateX(-50%);
}

.stage-mark.is-above[b-u0j9rcbfq5] {
    bottom: calc(100% + 4px);
}

.stage-mark.is-below[b-u0j9rcbfq5] {
    top: calc(100% + 4px);
}

.stage-mark.is-before[b-u0j9rcbfq5] {
    padding-right: 2px;
    transform: translateX(-100%);
}

.stage-mark.is-after[b-u0j9rcbfq5] {
    padding-left: 2px;
    transform: none;
}

.stage-mark.is-start[b-u0j9rcbfq5] {
    transform: none;
}

.stage-mark.is-end[b-u0j9rcbfq5] {
    transform: translateX(-100%);
}

.case-answer .stage-note[b-u0j9rcbfq5] {
    margin: 0 0 1.5rem;
    color: var(--color-on-ink-muted);
    font-size: 0.85rem;
}

.stage-legend[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.stage-legend li[b-u0j9rcbfq5] {
    min-width: 0;
}

.stage-legend h3[b-u0j9rcbfq5] {
    display: flex;
    gap: 0.5rem;
    align-items: baseline;
    margin: 0 0 0.4rem;
    color: var(--color-on-ink);
    font-family: var(--font-body);
    font-size: 0.98rem;
    font-weight: 700;
}

.stage-legend h3[b-u0j9rcbfq5]::before {
    flex: none;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 2px;
    content: "";
}

.stage-legend .is-copes h3[b-u0j9rcbfq5]::before {
    background: #6fb8a5;
}

.stage-legend .is-costly h3[b-u0j9rcbfq5]::before {
    background: var(--color-on-ink-accent);
}

.stage-legend .is-breach h3[b-u0j9rcbfq5]::before {
    background: #e2735c;
}

.case-answer .case-section-label[b-u0j9rcbfq5] {
    margin: 0 0 0.5rem;
    color: var(--color-on-ink-accent);
    font-size: var(--type-eyebrow);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.stage-legend p[b-u0j9rcbfq5],
.case-answer .answer-aside[b-u0j9rcbfq5] {
    margin: 0;
    color: var(--color-on-ink-muted);
    line-height: 1.6;
}

.case-answer .answer-aside[b-u0j9rcbfq5] {
    margin-top: 1.75rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-ink-surface-raised);
}

/* Published outlooks placed on the range, so a reader can see which part of it is near. */
.answer-forecasts[b-u0j9rcbfq5] {
    margin-top: 2rem;
    padding: 1.25rem 1.4rem;
    border-radius: var(--radius-md);
    background: var(--color-ink-surface-raised);
}

.answer-forecasts h3[b-u0j9rcbfq5] {
    margin: 0 0 0.75rem;
    color: var(--color-on-ink);
    font-size: 1.1rem;
}

.answer-forecasts ul[b-u0j9rcbfq5] {
    display: grid;
    gap: 0.6rem;
    margin: 0 0 0.9rem;
    padding-left: 1.1rem;
    color: var(--color-on-ink-muted);
    line-height: 1.55;
}

.answer-forecasts strong[b-u0j9rcbfq5] {
    color: var(--color-on-ink);
    font-weight: 600;
}

.answer-forecasts p[b-u0j9rcbfq5] {
    margin: 0 0 0.9rem;
    color: var(--color-on-ink-muted);
    line-height: 1.55;
}

.answer-forecasts .forecast-note[b-u0j9rcbfq5] {
    margin: 0.9rem 0 0;
    font-size: 0.84rem;
}

/* Each method step on its own row, beside the file or rule that backs it. */
.method-steps[b-u0j9rcbfq5] {
    margin: 2rem 0;
    padding: 0;
    list-style: none;
    counter-reset: step;
}

.method-steps > li[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
    gap: clamp(1.25rem, 3vw, 2.5rem);
    align-items: start;
    padding: 1.5rem 0;
    border-top: 1px solid var(--color-border);
    counter-increment: step;
}

.method-steps > li > *[b-u0j9rcbfq5] {
    min-width: 0;
}

.method-steps[b-u0j9rcbfq5]  .case-levers {
    min-width: 0;
    margin: 0;
}

.method-steps h3[b-u0j9rcbfq5] {
    margin: 0 0 0.5rem;
    font-size: 1.2rem;
}

.method-steps h3[b-u0j9rcbfq5]::before {
    margin-right: 0.45rem;
    color: var(--color-brand-accent);
    content: counter(step) ".";
}

.method-step p[b-u0j9rcbfq5] {
    margin: 0 0 0.75rem;
    color: var(--color-home-copy);
    line-height: 1.65;
}

.method-step a[b-u0j9rcbfq5] {
    color: var(--color-ink);
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-underline-offset: 0.16em;
}

.method-step .visually-hidden[b-u0j9rcbfq5] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.method-snippet[b-u0j9rcbfq5] {
    margin: 0;
}

/* The method's terms, defined once so later sections can lean on them. */
.case-definitions[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
    margin: 2rem 0 0;
    padding-top: 1.25rem;
    border-top: 1px solid var(--color-border);
}

.case-definitions div[b-u0j9rcbfq5] {
    min-width: 0;
}

.case-definitions dt[b-u0j9rcbfq5] {
    color: var(--color-muted);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.case-definitions dd[b-u0j9rcbfq5] {
    margin: 0.3rem 0 0;
    color: var(--color-home-copy);
    font-size: 0.92rem;
    line-height: 1.6;
}

@media (max-width: 760px) {
    .method-steps > li[b-u0j9rcbfq5],
    .case-definitions[b-u0j9rcbfq5] {
        grid-template-columns: 1fr;
    }
}

.method-snippet figcaption[b-u0j9rcbfq5] {
    max-width: none;
    margin-bottom: 0.5rem;
    color: var(--color-muted);
    font-size: 0.84rem;
    line-height: 1.5;
}

.method-snippet figcaption strong[b-u0j9rcbfq5] {
    color: var(--color-ink);
}

.method-snippet figcaption code[b-u0j9rcbfq5] {
    background: none;
    color: var(--color-ink);
    font-size: 0.8rem;
    overflow-wrap: anywhere;
}

.method-snippet pre[b-u0j9rcbfq5] {
    margin: 0;
    padding: 0.9rem 1.1rem;
    overflow-x: auto;
    border-radius: var(--radius-sm);
    background: var(--color-ink-surface);
    font-size: 0.78rem;
    line-height: 1.55;
}

.method-snippet code[b-u0j9rcbfq5] {
    background: none;
    color: var(--color-on-ink);
}

.case-terms[b-u0j9rcbfq5],
.case-note[b-u0j9rcbfq5] {
    color: var(--color-muted) !important;
    font-size: 0.88rem !important;
}

.case-quote[b-u0j9rcbfq5] {
    max-width: 60ch;
    margin: 0 0 2rem;
    padding-left: 1.25rem;
    border-left: 4px solid var(--color-brand-accent);
    font-family: var(--font-display);
    font-size: clamp(1.2rem, 2.4vw, 1.5rem);
    line-height: 1.4;
}

.reader-changes[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 2rem;
    border-top: 1px solid var(--color-border);
}

.reader-changes h3[b-u0j9rcbfq5] {
    margin: 1rem 0 0.5rem;
    font-size: 1.1rem;
}

.reader-changes ul[b-u0j9rcbfq5] {
    margin: 0;
    padding-left: 1.1rem;
    color: var(--color-home-copy);
    line-height: 1.6;
}

.reader-changes li + li[b-u0j9rcbfq5] {
    margin-top: 0.4rem;
}

.reader-changes p[b-u0j9rcbfq5] {
    margin: 0;
    color: var(--color-home-copy);
    line-height: 1.6;
}

.case-figure[b-u0j9rcbfq5],
.case-exhibit[b-u0j9rcbfq5] {
    margin: 2rem 0;
}

.case-figure figcaption h3[b-u0j9rcbfq5] {
    max-width: none;
    margin: 0 0 1rem;
    font-size: clamp(1.2rem, 2.6vw, 1.5rem);
    font-weight: 600;
    line-height: 1.22;
}

.case-narrative .next-group[b-u0j9rcbfq5] {
    margin: 1.75rem 0 0.5rem;
    color: var(--color-muted);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.next-sweeps[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin: 0 0 1rem;
    padding: 0;
    list-style: none;
}

.next-sweeps li[b-u0j9rcbfq5] {
    padding: 1.1rem 1.2rem;
    border: 1px solid var(--color-border-strong);
    border-radius: var(--radius-md);
    background: var(--color-surface);
}

.next-sweeps h3[b-u0j9rcbfq5] {
    margin: 0 0 0.5rem;
    text-wrap: pretty;
    font-size: 1.05rem;
    line-height: 1.3;
}

.next-sweeps code[b-u0j9rcbfq5] {
    display: block;
    margin-top: 0.6rem;
    color: var(--color-brand-accent);
    background: none;
    font-size: 0.78rem;
    overflow-wrap: anywhere;
}

.next-sweeps p[b-u0j9rcbfq5] {
    margin: 0;
    color: var(--color-home-copy);
    font-size: 0.9rem;
    line-height: 1.55;
}

.your-question[b-u0j9rcbfq5] {
    margin-top: 2.5rem;
    padding: clamp(1.25rem, 3vw, 2rem);
    border-radius: var(--radius-lg);
    background: var(--color-brand-accent-soft);
}

.your-question h3[b-u0j9rcbfq5] {
    margin: 0 0 0.6rem;
    font-size: 1.4rem;
}

.your-question > p[b-u0j9rcbfq5] {
    max-width: 70ch;
    margin: 0;
    color: var(--color-home-copy);
    line-height: 1.65;
}

.case-actions[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin: 1.5rem 0 1rem;
}

.case-primary[b-u0j9rcbfq5],
.case-secondary[b-u0j9rcbfq5] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    padding: 1rem 1.15rem;
    border: 1px solid var(--color-brand);
    border-radius: var(--radius-sm);
    font-weight: 700;
    text-decoration: none;
}

.case-primary[b-u0j9rcbfq5] {
    background: var(--color-brand);
    color: #fff;
}

.case-secondary[b-u0j9rcbfq5] {
    background: var(--color-surface);
    color: var(--color-brand);
}

.case-primary:hover[b-u0j9rcbfq5],
.case-secondary:hover[b-u0j9rcbfq5] {
    border-color: var(--color-brand-hover);
    background: var(--color-brand-hover);
    color: #fff;
}

.case-actions small[b-u0j9rcbfq5] {
    font-size: 0.84rem;
    font-weight: 400;
    line-height: 1.4;
}

@media (max-width: 900px) {
    .case-snapshot[b-u0j9rcbfq5],
    .next-sweeps[b-u0j9rcbfq5],
    .answer-list[b-u0j9rcbfq5],
    .method-steps[b-u0j9rcbfq5],
    .case-actions[b-u0j9rcbfq5] {
        grid-template-columns: 1fr;
    }

    .reader-changes[b-u0j9rcbfq5] {
        grid-template-columns: 1fr;
        gap: 0;
    }
}

@media print {
    .case-page-nav[b-u0j9rcbfq5] {
        display: none;
    }

    .case-opening[b-u0j9rcbfq5] {
        padding-top: 0;
    }

    .case-opening h1[b-u0j9rcbfq5] {
        font-size: 2.3rem;
    }

    .case-snapshot[b-u0j9rcbfq5],
    .method-steps[b-u0j9rcbfq5],
    .answer-list[b-u0j9rcbfq5],
    .case-actions[b-u0j9rcbfq5] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .next-sweeps[b-u0j9rcbfq5],
    .reader-changes[b-u0j9rcbfq5] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .reader-changes[b-u0j9rcbfq5] {
        gap: 2rem;
    }

    .case-standfirst[b-u0j9rcbfq5],
    .case-narrative section > p[b-u0j9rcbfq5] {
        font-size: 0.92rem;
        line-height: 1.6;
    }

    .case-answer[b-u0j9rcbfq5] {
        background: none;
        box-shadow: none;
        clip-path: none;
        color: var(--color-ink);
    }

    .case-answer h2[b-u0j9rcbfq5],
    .answer-list h3[b-u0j9rcbfq5] {
        color: var(--color-ink);
    }

    .answer-list p[b-u0j9rcbfq5],
    .case-answer .answer-aside[b-u0j9rcbfq5] {
        color: var(--color-home-copy);
    }

    .case-answer .answer-lead[b-u0j9rcbfq5] {
        color: var(--color-ink);
    }

    .answer-forecasts[b-u0j9rcbfq5] {
        border: 1px solid var(--color-border);
        background: none;
        break-inside: avoid;
    }

    .answer-forecasts h3[b-u0j9rcbfq5],
    .answer-forecasts strong[b-u0j9rcbfq5] {
        color: var(--color-ink);
    }

    .answer-forecasts ul[b-u0j9rcbfq5],
    .answer-forecasts p[b-u0j9rcbfq5] {
        color: var(--color-home-copy);
    }

    .answer-list li[b-u0j9rcbfq5]::before {
        color: var(--color-brand-accent);
    }

    .case-narrative > section[b-u0j9rcbfq5] {
        padding-top: 1.5rem;
        padding-bottom: 1.5rem;
    }

    .method-steps li[b-u0j9rcbfq5],
    .next-sweeps li[b-u0j9rcbfq5],
    .answer-list li[b-u0j9rcbfq5],
    .reader-changes article[b-u0j9rcbfq5],
    .your-question[b-u0j9rcbfq5] {
        break-inside: avoid;
    }

    .case-primary[b-u0j9rcbfq5] {
        background: none;
        color: var(--color-brand);
    }
}

.case-byline .visually-hidden[b-u0j9rcbfq5] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

@media (max-width: 760px) {
    .stage-legend[b-u0j9rcbfq5] {
        grid-template-columns: 1fr;
    }
}

/* Why ask this question: the context beside AEMO's forecasts, drawn as bars to scale. */
.why-grid[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
    gap: clamp(1.5rem, 4vw, 3rem);
    align-items: start;
}

.why-text[b-u0j9rcbfq5] {
    min-width: 0;
}

.case-narrative .why-text p[b-u0j9rcbfq5] {
    max-width: 68ch;
    margin: 0 0 1rem;
    color: var(--color-home-copy);
    font-size: 1rem;
    line-height: 1.72;
}

.case-narrative .why-text .why-who[b-u0j9rcbfq5] {
    color: var(--color-ink);
    font-weight: 600;
}

.why-forecasts[b-u0j9rcbfq5] {
    min-width: 0;
    margin: 0;
    padding: 1.25rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface-muted);
}

.why-forecasts figcaption[b-u0j9rcbfq5] {
    margin: 0 0 0.75rem;
    color: var(--color-ink);
    font-family: var(--font-display);
    font-size: 1.1rem;
    font-weight: 600;
    line-height: 1.3;
}

.why-forecasts ul[b-u0j9rcbfq5] {
    margin: 0;
    padding: 0;
    list-style: none;
}

.why-forecasts li[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: 4.5rem minmax(0, 1fr) 4.5rem;
    gap: 0.75rem;
    align-items: center;
    margin: 0.5rem 0;
}

.forecast-year[b-u0j9rcbfq5] {
    color: var(--color-muted);
    font-size: 0.85rem;
}

.forecast-bar[b-u0j9rcbfq5] {
    display: block;
    height: 18px;
}

.forecast-bar span[b-u0j9rcbfq5] {
    display: block;
    height: 100%;
    border-radius: 2px;
    background: var(--color-on-ink-accent);
}

.why-forecasts strong[b-u0j9rcbfq5] {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.why-forecasts p[b-u0j9rcbfq5] {
    margin: 0.75rem 0 0;
    color: var(--color-home-copy);
    font-size: 0.9rem;
    line-height: 1.55;
}

.why-forecasts .forecast-note[b-u0j9rcbfq5] {
    color: var(--color-muted);
    font-size: 0.8rem;
}

@media (max-width: 760px) {
    .why-grid[b-u0j9rcbfq5] {
        grid-template-columns: 1fr;
    }
}

/* The regional table beside the sentence that reads it. */
.firming-pair[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr);
    gap: clamp(1.25rem, 3vw, 2.5rem);
    align-items: start;
    margin: 1.5rem 0 2rem;
}

.firming-pair > *[b-u0j9rcbfq5] {
    min-width: 0;
}

.firming-pair[b-u0j9rcbfq5]  .case-firming {
    min-width: 0;
    margin: 0;
}

.case-narrative .firming-pair > p[b-u0j9rcbfq5] {
    margin: 0;
    padding-top: 2.5rem;
    color: var(--color-home-copy);
    font-size: 1rem;
    line-height: 1.72;
}

@media (max-width: 900px) {
    .firming-pair[b-u0j9rcbfq5] {
        grid-template-columns: 1fr;
    }

    .case-narrative .firming-pair > p[b-u0j9rcbfq5] {
        padding-top: 0;
    }
}

/* Emissions: the text beside where the extra energy came from. */
.emissions-pair[b-u0j9rcbfq5] {
    display: grid;
    grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
    gap: clamp(1.25rem, 3vw, 2.5rem);
    align-items: start;
    margin-bottom: 1.5rem;
}

.emissions-pair > *[b-u0j9rcbfq5] {
    min-width: 0;
}

.case-narrative .emissions-text p[b-u0j9rcbfq5] {
    max-width: 68ch;
    margin: 0 0 1rem;
    color: var(--color-home-copy);
    font-size: 1rem;
    line-height: 1.72;
}

.supply-mix[b-u0j9rcbfq5] {
    margin: 0;
    padding: 1.25rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface-muted);
}

.supply-mix figcaption[b-u0j9rcbfq5] {
    margin: 0 0 0.75rem;
    color: var(--color-ink);
    font-family: var(--font-display);
    font-size: 1.1rem;
    font-weight: 600;
    line-height: 1.3;
}

.supply-bar[b-u0j9rcbfq5] {
    display: flex;
    height: 22px;
    overflow: hidden;
    border-radius: 3px;
}

.supply-mix ul[b-u0j9rcbfq5] {
    display: grid;
    gap: 0.35rem;
    margin: 0.75rem 0 0;
    padding: 0;
    list-style: none;
    color: var(--color-home-copy);
    font-size: 0.92rem;
}

.supply-key[b-u0j9rcbfq5] {
    display: inline-block;
    width: 0.75rem;
    height: 0.75rem;
    margin-right: 0.4rem;
    border-radius: 2px;
    vertical-align: -1px;
}

.supply-mix p[b-u0j9rcbfq5] {
    margin: 0.75rem 0 0;
    color: var(--color-home-copy);
    font-size: 0.9rem;
    line-height: 1.55;
}

@media (max-width: 760px) {
    .emissions-pair[b-u0j9rcbfq5] {
        grid-template-columns: 1fr;
    }
}

.why-text a[b-u0j9rcbfq5] {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-underline-offset: 0.16em;
}

.why-text .visually-hidden[b-u0j9rcbfq5] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

@media (prefers-reduced-motion: no-preference) {
    .case-narrative[b-u0j9rcbfq5] {
        animation: case-fade-in-b-u0j9rcbfq5 0.6s ease-out both;
    }

    @keyframes case-fade-in-b-u0j9rcbfq5 {
        from {
            opacity: 0;
            transform: translateY(0.5rem);
        }

        to {
            opacity: 1;
            transform: none;
        }
    }
}
/* /Components/CaseStudyRunTable.razor.rz.scp.css */
.case-runs[b-sng54w6iu4] {
    max-width: 1180px;
    box-sizing: border-box;
    margin: 0 auto;
    padding: clamp(2.5rem, 5vw, 4rem) clamp(1.25rem, 4vw, 3rem);
    border-top: 1px solid var(--color-border);
    scroll-margin-top: 4.25rem;
}

.case-runs h2[b-sng54w6iu4] {
    margin: 0 0 0.75rem;
    font-family: var(--font-display);
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 600;
}

.case-runs > p[b-sng54w6iu4] {
    max-width: 74ch;
    color: var(--color-home-copy);
    line-height: 1.6;
}

.case-runs-scroll[b-sng54w6iu4] {
    overflow-x: auto;
}

.case-runs-table[b-sng54w6iu4] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.86rem;
    font-variant-numeric: tabular-nums;
}

.case-runs-table th[b-sng54w6iu4],
.case-runs-table td[b-sng54w6iu4] {
    padding: 0.4rem 0.7rem;
    border-bottom: 1px solid var(--color-border);
    text-align: right;
    white-space: nowrap;
}

.case-runs-table thead th[b-sng54w6iu4] {
    border-bottom: 2px solid var(--color-ink);
    vertical-align: bottom;
    font-size: 0.8rem;
}

.case-runs-table thead small[b-sng54w6iu4] {
    display: block;
    color: var(--color-muted);
    font-weight: 400;
}

.case-runs-table tbody th a[b-sng54w6iu4] {
    color: var(--color-brand);
    font-weight: 700;
}

/* The whole row opens the scenario: the link in the first cell is stretched over the row, so the
   hover tooltip and the click target cover the same area. */
.case-runs-table tbody tr[b-sng54w6iu4] {
    position: relative;
    cursor: pointer;
}

.case-runs-table tbody th a[b-sng54w6iu4]::after {
    content: "";
    position: absolute;
    inset: 0;
}

.case-runs-table tbody tr:hover th[b-sng54w6iu4],
.case-runs-table tbody tr:hover td[b-sng54w6iu4],
.case-runs-table tbody tr:focus-within th[b-sng54w6iu4],
.case-runs-table tbody tr:focus-within td[b-sng54w6iu4] {
    background: var(--color-surface-muted);
}

.case-runs-table tr.is-missed td[b-sng54w6iu4] {
    color: var(--color-muted);
}

.case-runs-table tr.is-missed td:last-child[b-sng54w6iu4],
.case-runs-table tr.is-first-breach td:last-child[b-sng54w6iu4] {
    color: var(--color-negative);
    font-weight: 700;
}

.case-runs-table tr.is-first-breach th[b-sng54w6iu4],
.case-runs-table tr.is-first-breach td[b-sng54w6iu4] {
    border-top: 2px solid var(--color-negative);
}

.case-runs-basis[b-sng54w6iu4] {
    margin: 1rem 0 0;
    color: var(--color-muted) !important;
    font-size: 0.82rem;
    line-height: 1.55;
}

.case-runs-basis code[b-sng54w6iu4] {
    overflow-wrap: anywhere;
}

@media print {
    .case-runs[b-sng54w6iu4] {
        break-before: page;
        padding-top: 0;
    }

    .case-runs-table[b-sng54w6iu4] {
        font-size: 0.72rem;
    }

    .case-runs-table th[b-sng54w6iu4],
    .case-runs-table td[b-sng54w6iu4] {
        padding: 0.18rem 0.5rem;
    }
}

/* Captions and basis lines run the width of the table they describe. */
.case-runs > p.case-caption[b-sng54w6iu4],
.case-runs > p.case-runs-basis[b-sng54w6iu4] {
    max-width: none;
}
/* /Components/CaseStudySourceList.razor.rz.scp.css */
.case-sources[b-vjz59argwl] {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
}

.case-sources h3[b-vjz59argwl] {
    margin: 0 0 0.5rem;
    font-size: 0.9rem;
}

.case-sources ol[b-vjz59argwl] {
    display: grid;
    gap: 0.4rem;
    margin: 0;
    padding-left: 1.2rem;
    color: var(--color-muted);
    font-size: 0.8rem;
    line-height: 1.5;
}

.case-sources a[b-vjz59argwl] {
    color: var(--color-brand);
    overflow-wrap: anywhere;
}
/* /Components/ChartFrame.razor.rz.scp.css */
.chart-section[b-pgh85q5k5i] {
    min-width: 0;
    max-width: 100%;
    padding-top: var(--chart-frame-padding-top, 12px);
}

/* Title on the left, unit and scale on the right of the same row. */
.chart-heading[b-pgh85q5k5i] {
    display: flex;
    align-items: var(--chart-frame-heading-align, baseline);
    flex-direction: var(--chart-frame-heading-direction, row);
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 8px;
    padding-bottom: var(--chart-frame-heading-padding-bottom, 0);
    border-bottom: var(--chart-frame-heading-border, 0);
}

.chart-heading h2[b-pgh85q5k5i] {
    margin: 0;
    font-size: 12.5px;
}

.chart-heading p:not(.section-index)[b-pgh85q5k5i] {
    margin: var(--chart-frame-description-margin, 2px 0 0);
    color: var(--muted);
    font: 11.5px/1.5 var(--font-mono);
}

.section-index[b-pgh85q5k5i] {
    margin: 0 0 2px;
    color: var(--muted);
    font: 500 11px var(--font-mono);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* The unit is plain mono text, not a pill. */
/* An input figure's own caption: same mono caption look as the basis caption, without its meaning. */
.figure-caption[b-pgh85q5k5i] {
    margin: 10px 0 0;
    padding-top: 8px;
    border-top: 1px solid var(--rule);
    color: var(--muted);
    font: 11.5px/1.5 var(--font-mono);
}

.unit-badge[b-pgh85q5k5i] {
    color: var(--muted);
    font: 11px var(--font-mono);
    white-space: nowrap;
}

@media (max-width: 760px) {
    .chart-heading.stack-on-mobile[b-pgh85q5k5i] {
        align-items: flex-start;
        flex-direction: column;
    }
}
/* /Components/CopyLinkButton.razor.rz.scp.css */
.copy-link[b-3mu2kpimmk] {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 8px;
}

/* Square native button. In the dark brand bar it takes the on-ink colours. */
.copy-link-button[b-3mu2kpimmk] {
    min-height: 28px;
    padding: 2px 10px;
    border: 1px solid var(--control-border);
    border-radius: 0;
    background: var(--raised);
    color: var(--ink);
    font: 500 12px var(--font-body);
    cursor: pointer;
}

/* In the brand bar it is a plain text action, like Docs beside it. */
.shell-bar .copy-link-button[b-3mu2kpimmk] {
    padding: 2px 0;
    border-color: transparent;
    background: transparent;
    color: var(--on-ink-muted);
    font: 13px var(--font-body);
}

.shell-bar .copy-link-button:hover:not(:disabled)[b-3mu2kpimmk] {
    color: var(--on-ink);
}

.copy-link-status[b-3mu2kpimmk] {
    color: var(--muted);
    font: 11.5px var(--font-mono);
}

.shell-bar .copy-link-status[b-3mu2kpimmk] {
    color: var(--on-ink-muted);
}

.copy-link-status:empty[b-3mu2kpimmk] {
    display: none;
}

.copy-link-fallback[b-3mu2kpimmk] {
    display: inline-flex;
    flex-direction: column;
    gap: 2px;
    flex: 1 1 100%;
    font-size: 11px;
    color: var(--muted);
}

.shell-bar .copy-link-fallback[b-3mu2kpimmk] {
    color: var(--on-ink-muted);
}

.copy-link-fallback input[b-3mu2kpimmk] {
    min-height: 28px;
    padding: 2px 8px;
    font: 11.5px var(--font-mono);
}
/* /Components/CostByFleet.razor.rz.scp.css */
/* Cost above, the energy it bought below, so the eye compares the two distributions directly
   rather than reading two figures and subtracting. */
.cost-mix-pair[b-m11vh46rj3] {
    display: grid;
    gap: 1.1rem;
}

.reconcile-alert[b-m11vh46rj3] {
    margin-top: 1.2rem;
}
/* /Components/CsvDownload.razor.rz.scp.css */
/* A square text button in the figure or table's trailing slot. */
.csv-download[b-4pghzp23ox] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    min-height: 24px;
    padding: 2px 10px;
    border: 1px solid var(--control-border);
    background: var(--raised);
    color: var(--ink);
    font: 500 12px var(--font-body);
    text-decoration: none;
    white-space: nowrap;
}

.csv-download:hover[b-4pghzp23ox] {
    background: var(--header);
}
/* /Components/FindingCards.razor.rz.scp.css */
.findings[b-2u1ssj8uxk] {
    margin: 1.75rem 0;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border-strong);
}

.findings-heading .section-label[b-2u1ssj8uxk] {
    margin: 0 0 0.25rem;
    color: var(--accent);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.findings-heading h2[b-2u1ssj8uxk] {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.65rem;
    font-weight: 600;
}

.findings-heading p:not(.section-label)[b-2u1ssj8uxk] {
    max-width: 720px;
    margin: 0.35rem 0 0;
    color: var(--color-muted);
}

.finding-cards[b-2u1ssj8uxk] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(288px, 100%), 1fr));
    gap: 1px;
    margin-top: 1.25rem;
    /* One-pixel gaps over a border colour give hairline rules between cards without each card
       drawing its own box, which at this density reads as a grid rather than as clutter. */
    background: var(--color-border);
    border: 1px solid var(--color-border);
}

.finding[b-2u1ssj8uxk] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.15rem 1.25rem 1.25rem;
    background: var(--color-surface);
    border-top: 3px solid var(--finding-tone, var(--color-muted));
}

.finding-tone[b-2u1ssj8uxk] {
    margin: 0;
    color: var(--finding-tone, var(--color-muted));
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.finding h3[b-2u1ssj8uxk] {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.1rem;
    font-weight: 600;
    line-height: 1.32;
}

.finding-metric[b-2u1ssj8uxk] {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    margin: 0.15rem 0 0;
}

.finding-metric strong[b-2u1ssj8uxk] {
    color: var(--finding-tone, var(--color-ink));
    font-family: var(--font-display);
    font-size: 1.85rem;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    line-height: 1;
}

.finding-metric small[b-2u1ssj8uxk] {
    color: var(--color-muted);
    font-size: 0.76rem;
}

.finding-detail[b-2u1ssj8uxk] {
    margin: 0;
    color: var(--color-home-copy);
    font-size: 0.86rem;
    line-height: 1.55;
}

.finding a[b-2u1ssj8uxk] {
    margin-top: auto;
    padding-top: 0.35rem;
    color: var(--accent);
    font-size: 0.8rem;
    font-weight: 700;
    text-decoration: none;
}

.finding a:hover[b-2u1ssj8uxk] {
    text-decoration: underline;
}

.tone-neutral[b-2u1ssj8uxk] {
    --finding-tone: var(--color-track-fill);
}

.tone-favourable[b-2u1ssj8uxk] {
    --finding-tone: var(--color-positive);
}

.tone-caution[b-2u1ssj8uxk] {
    --finding-tone: var(--color-notice);
}

.tone-constraint[b-2u1ssj8uxk] {
    --finding-tone: var(--color-negative);
}

/* A finding as a disclosure: its headline and its number are the line a reader scans, and the
   sentence that names the runs opens beneath it. */
.finding-list[b-2u1ssj8uxk] {
    grid-template-columns: minmax(0, 1fr);
}

.finding-collapsible[b-2u1ssj8uxk] {
    display: block;
    padding: 0;
}

.finding-collapsible > summary[b-2u1ssj8uxk] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 1rem;
    row-gap: 0.15rem;
    align-items: baseline;
    min-height: 24px;
    padding: 0.8rem 1.1rem;
    cursor: pointer;
}

.finding-collapsible > summary .finding-tone[b-2u1ssj8uxk] {
    grid-column: 1 / -1;
}

.finding-headline[b-2u1ssj8uxk] {
    font-family: var(--font-display);
    font-size: 1.02rem;
    font-weight: 600;
    line-height: 1.32;
}

.finding-collapsible .finding-metric[b-2u1ssj8uxk] {
    margin: 0;
}

.finding-collapsible .finding-metric strong[b-2u1ssj8uxk] {
    font-size: 1.35rem;
}

.finding-collapsible .finding-detail[b-2u1ssj8uxk],
.finding-collapsible > a[b-2u1ssj8uxk] {
    display: block;
    max-width: 75ch;
    margin: 0 1.1rem 0.9rem;
}

@media (max-width: 560px) {
    .finding-collapsible > summary[b-2u1ssj8uxk] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Components/LandingPublishedProof.razor.rz.scp.css */
.landing-proof[b-4sjbb650qk] {
    min-width: 0;
}

.proof-omitted[b-4sjbb650qk] {
    margin: 0 0 1rem;
    color: var(--color-muted);
    font-size: 0.875rem;
}

/* The chart on the left, its three figures stacked on the right. */
.proof-body[b-4sjbb650qk] {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
    gap: clamp(1.5rem, 4vw, 3.5rem);
    align-items: start;
}

.proof-chart[b-4sjbb650qk] {
    min-width: 0;
    margin: 0;
}

.proof-chart figcaption[b-4sjbb650qk] {
    margin-top: 0.6rem;
    color: var(--color-muted);
    font-size: 0.875rem;
    line-height: 1.5;
}

.proof-figures[b-4sjbb650qk] {
    display: grid;
    gap: 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.proof-figures li[b-4sjbb650qk] {
    display: grid;
    gap: 0.25rem;
    padding-top: 0.75rem;
    border-top: 3px solid var(--color-demand);
}

.proof-figures li.is-miss[b-4sjbb650qk] {
    border-top-color: var(--color-negative);
}

.proof-figures strong[b-4sjbb650qk] {
    color: var(--color-ink);
    font-family: var(--font-display);
    font-size: clamp(1.8rem, 3.4vw, 2.4rem);
    font-weight: 700;
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
}

.proof-figures span[b-4sjbb650qk] {
    color: var(--color-home-copy);
    font-size: 0.95rem;
    line-height: 1.5;
}

.proof-condition[b-4sjbb650qk] {
    margin: 1.5rem 0 0;
    color: var(--color-muted);
    font-size: 0.875rem;
    line-height: 1.6;
}

@media (max-width: 760px) {
    .proof-body[b-4sjbb650qk] {
        grid-template-columns: 1fr;
    }
}
/* /Components/MarketingAssumptions.razor.rz.scp.css */
/* Each trade-off reads as what the simplification buys (ink), then what it leaves to a detailed study (muted). */
.tradeoffs[b-otrjskcupa] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2rem clamp(2rem, 5vw, 4rem);
    margin: 0;
    padding: 0;
    list-style: none;
}

.tradeoffs li[b-otrjskcupa] {
    max-width: 60ch;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border-strong);
}

.tradeoffs h3[b-otrjskcupa] {
    margin: 0 0 0.5rem;
    color: var(--color-ink);
    font-family: var(--font-display);
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.3;
}

.tradeoffs p[b-otrjskcupa] {
    margin: 0;
    font-size: 1.0625rem;
    line-height: 1.6;
}

.tradeoff-gain[b-otrjskcupa] {
    color: var(--color-ink);
}

.tradeoff-limit[b-otrjskcupa] {
    color: var(--color-muted);
}

.tradeoffs-link[b-otrjskcupa] {
    margin: 2rem 0 0;
}

.tradeoffs-link a[b-otrjskcupa] {
    color: var(--color-ink);
    font-weight: 600;
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-decoration-thickness: 2px;
    text-underline-offset: 0.18em;
}

@media (max-width: 760px) {
    .tradeoffs[b-otrjskcupa] {
        grid-template-columns: 1fr;
    }
}

@media print {
    .tradeoffs li[b-otrjskcupa] {
        break-inside: avoid;
    }
}
/* /Components/MetricStrip.razor.rz.scp.css */
/* Stat strip: opens with a 1px ink rule, labels 11px uppercase, values 17px mono (15px on a phone).
   It collapses on its own width, not the viewport's. */
.metric-strip[b-a754255t7f] {
    container: metric-strip / inline-size;
    margin-top: 12px;
    border-top: 1px solid var(--ink);
    border-bottom: 1px solid var(--rule);
}

/* Dividers sit on the leading and top edges of every tile; the first row and column are pulled 1px
   outside the clipped grid, so the rules hold for any column count and a short last row. */
.metric-grid[b-a754255t7f] {
    display: grid;
    grid-template-columns: repeat(var(--metric-columns), minmax(0, 1fr));
    overflow: hidden;
}

.metric[b-a754255t7f] {
    min-width: 0;
    margin: -1px 0 0 -1px;
    padding: 10px 14px;
    border-top: 1px solid var(--rule);
    border-left: 1px solid var(--rule);
}

.metric span[b-a754255t7f] {
    display: block;
    color: var(--muted);
    font-size: 11px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.metric small[b-a754255t7f] {
    color: var(--muted);
    font: 12px var(--font-body);
}

.metric strong[b-a754255t7f] {
    display: inline-block;
    max-width: 100%;
    margin: 4px 4px 0 0;
    color: var(--ink);
    font: 500 17px/1.3 var(--font-mono);
    font-variant-numeric: tabular-nums lining-nums;
    overflow-wrap: anywhere;
}

@container metric-strip (max-width: 44rem) {
    .metric-grid[b-a754255t7f] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@container metric-strip (max-width: 56rem) {
    .metric-strip-ranges .metric-grid[b-a754255t7f] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .metric strong[b-a754255t7f] {
        font-size: 15px;
    }
}
/* /Components/PageHeader.razor.rz.scp.css */
.page-header[b-kdbowsc0r8] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    padding-bottom: var(--page-header-padding-bottom, 10px);
    border-bottom: 1px solid var(--page-header-border, var(--rule));
}

.page-header > div[b-kdbowsc0r8] {
    min-width: 0;
}

/* The eyebrow is a mono meta line, not a coloured kicker. */
.eyebrow[b-kdbowsc0r8] {
    margin: 0 0 4px;
    color: var(--muted);
    font: 500 11.5px var(--font-mono);
    letter-spacing: 0.03em;
}

h1[b-kdbowsc0r8] {
    margin: 0;
    font-size: var(--page-header-title-size, 22px);
    font-weight: 600;
    line-height: 1.3;
}

@media (max-width: 760px) {
    .page-header[b-kdbowsc0r8] {
        align-items: stretch;
        flex-direction: column;
        gap: 10px;
    }
}

@media (max-width: 640px) {
    h1[b-kdbowsc0r8] {
        font-size: 18px;
    }
}

.title-mobile[b-kdbowsc0r8] {
    display: none;
}

@media (max-width: 640px) {
    .title-desktop[b-kdbowsc0r8] {
        display: none;
    }

    .title-mobile[b-kdbowsc0r8] {
        display: inline;
    }
}

.title-note[b-kdbowsc0r8] {
    color: var(--muted);
    font-weight: 400;
}
/* /Components/RegionCompareGrid.razor.rz.scp.css */
.region-compare[b-ey865ajf4i] {
    margin-top: 20px;
    padding-top: 10px;
    border-top: 1px solid var(--ink);
}

.section-label[b-ey865ajf4i] {
    margin: 0 0 2px;
    color: var(--muted);
    font: 500 11px var(--font-mono);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.section-heading h3[b-ey865ajf4i] {
    margin: 0;
    font-size: 13px;
    font-weight: 600;
}

.section-heading p:not(.section-label)[b-ey865ajf4i] {
    max-width: 720px;
    margin: 4px 0 0;
    color: var(--muted);
}

.compare-export[b-ey865ajf4i] {
    display: flex;
    justify-content: flex-end;
    margin-top: 10px;
}

.region-compare[b-ey865ajf4i]  .compare-metrics {
    margin-top: 6px;
    overflow-x: auto;
}

.data-table[b-ey865ajf4i] {
    width: 100%;
    min-width: 720px;
    border-collapse: collapse;
    border-top: 1px solid var(--ink);
}

.data-table th[b-ey865ajf4i],
.data-table td[b-ey865ajf4i] {
    padding: 6px 8px;
    border-bottom: 1px solid var(--row-rule);
    font: 12.5px var(--font-mono);
    text-align: right;
    white-space: nowrap;
}

.data-table thead th[b-ey865ajf4i] {
    font: 600 11px var(--font-body);
}

.data-table th:first-child[b-ey865ajf4i],
.data-table td:first-child[b-ey865ajf4i] {
    font-family: var(--font-body);
    text-align: left;
}

.data-table tbody tr:last-child th[b-ey865ajf4i],
.data-table tbody tr:last-child td[b-ey865ajf4i] {
    border-bottom: 0;
}

/* A shortfall is red and bold; the table's header names the measure, so the cue is not colour alone. */
.cell-shortfall[b-ey865ajf4i] {
    color: var(--missed);
    font-weight: 600;
}

.compare-scope-note[b-ey865ajf4i],
.compare-axis-note[b-ey865ajf4i] {
    margin: 6px 0 0;
    color: var(--muted);
    font: 11.5px var(--font-mono);
}

/* One column per region while they fit, so the panels are read side by side. */
.compare-panels[b-ey865ajf4i] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
    gap: 20px;
    margin-top: 16px;
}

.compare-legend[b-ey865ajf4i] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 16px;
    padding: 10px 0 0;
    color: var(--muted);
    font: 11px var(--font-mono);
}

.compare-legend span[b-ey865ajf4i] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.compare-legend i[b-ey865ajf4i] {
    display: inline-block;
    width: 14px;
    height: 8px;
}

.compare-legend .demand-key[b-ey865ajf4i] {
    height: 2px;
    background: var(--ink);
}

.compare-trade[b-ey865ajf4i] {
    margin-top: 20px;
    padding-top: 10px;
    border-top: 1px solid var(--ink);
}

.compare-trade h3[b-ey865ajf4i] {
    margin: 0 0 8px;
    font-size: 13px;
    font-weight: 600;
}

.compare-trade ul[b-ey865ajf4i] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    margin: 0;
    padding: 0;
    list-style: none;
    border-top: 1px solid var(--rule);
}

.compare-trade li[b-ey865ajf4i] {
    padding: 8px 12px 8px 0;
    border-bottom: 1px solid var(--row-rule);
}

.compare-trade li.is-idle[b-ey865ajf4i] {
    color: var(--muted);
}

.compare-trade strong[b-ey865ajf4i],
.compare-trade span[b-ey865ajf4i],
.compare-trade small[b-ey865ajf4i] {
    display: block;
}

.compare-trade strong[b-ey865ajf4i] {
    font-size: 11px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.compare-trade span[b-ey865ajf4i] {
    margin: 2px 0;
    color: var(--ink);
    font: 500 17px var(--font-mono);
}

.compare-trade li.is-idle span[b-ey865ajf4i] {
    color: var(--muted);
}

.compare-trade small[b-ey865ajf4i] {
    color: var(--muted);
    font-size: 11.5px;
    line-height: 1.45;
}

@media (max-width: 640px) {
    .compare-panels[b-ey865ajf4i] {
        grid-template-columns: minmax(0, 1fr);
    }

    .compare-trade span[b-ey865ajf4i] {
        font-size: 15px;
    }
}
/* /Components/Run/ChartSkeleton.razor.rz.scp.css */
.chart-skeleton[b-vovxxhdlac] {
    display: grid;
    align-content: start;
    gap: 16px;
}

.chart-skeleton-wait[b-vovxxhdlac] {
    margin: 0;
    font-size: 13px;
}

.chart-skeleton-progress[b-vovxxhdlac] {
    border-top: 2px solid var(--brand-marker);
}

.chart-skeleton-source[b-vovxxhdlac] {
    margin: 0;
    color: var(--muted);
    font: 11px/1.4 var(--font-mono);
    overflow-wrap: anywhere;
}

.chart-skeleton-panel[b-vovxxhdlac] {
    margin: 0;
}

.chart-skeleton-head[b-vovxxhdlac] {
    display: flex;
    justify-content: space-between;
    font-family: var(--font-mono, "IBM Plex Mono", monospace);
    font-size: 11px;
    color: var(--muted, #5b6470);
}

.chart-skeleton-panel svg[b-vovxxhdlac] {
    display: block;
    width: 100%;
    height: 120px;
}

.chart-skeleton-panel line[b-vovxxhdlac] {
    stroke: var(--muted, #5b6470);
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}
/* /Components/Run/HourlyPlot.razor.rz.scp.css */
/* The hourly chart's drawing. The click columns are an invisible surface, never a fill: left to the
   SVG default they paint black over every trace. */
.hourly-column[b-224yqfanpc] {
    fill: transparent;
    stroke: none;
    cursor: pointer;
}

.hourly-col:hover .hourly-column[b-224yqfanpc],
.hourly-col.is-current .hourly-column[b-224yqfanpc] {
    fill: rgba(20, 24, 31, 0.06);
}

.hourly-hit:focus[b-224yqfanpc] {
    outline: none;
}

.hourly-hit:focus-visible[b-224yqfanpc] {
    outline: 2px solid var(--selection, #e0a100);
    outline-offset: 2px;
}

.hourly-area[b-224yqfanpc] {
    fill-opacity: 1;
    /* A hairline ink edge: the exact Solar hue is under 3:1 against the page, so the band needs an edge. */
    stroke: var(--ink, #14181f);
    stroke-width: 0.6;
    vector-effect: non-scaling-stroke;
}

.hourly-line[b-224yqfanpc] {
    fill: none;
    stroke-width: 1.5;
    stroke-linejoin: round;
}

.hourly-line.is-dashed[b-224yqfanpc] {
    stroke-dasharray: 3 2;
}

/* Title on the left, unit on the right, one row; any description wraps beneath. */
.viewer-shell .hourly-plot-heading[b-224yqfanpc] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 4px 12px;
}

.viewer-shell .hourly-plot-heading > p[b-224yqfanpc] {
    flex-basis: 100%;
    margin: 0;
}

/* Keep the colour key visible even when bands also have direct labels. */
.viewer-shell .hourly-legend[b-224yqfanpc] {
    border: 0;
    background: none;
    padding: 0;
    box-shadow: none;
}

.hourly-reference[b-224yqfanpc] {
    stroke: var(--ink, #14181f);
    stroke-width: 1;
    stroke-dasharray: 4 3;
}

.hourly-rule[b-224yqfanpc] {
    stroke: var(--selection, #e0a100);
    stroke-width: 1.5;
}

.hourly-plot[b-224yqfanpc]  .hourly-reference-label,
.hourly-plot[b-224yqfanpc]  .hourly-rule-label,
.hourly-plot[b-224yqfanpc]  .hourly-end-label,
.hourly-plot[b-224yqfanpc]  .hourly-area-label {
    fill: var(--ink, #14181f);
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: 11px;
}

.viewer-shell .hourly-plot[b-224yqfanpc]  .plot-tick {
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: 11px;
}
/* /Components/ScopeLine.razor.rz.scp.css */
.scope-line[b-2205fr4kjp] {
    margin: 0.4rem 0 0;
    color: var(--color-muted);
}

.scope-segment[b-2205fr4kjp] {
    white-space: nowrap;
}
/* /Components/ShellTabs.razor.rz.scp.css */
/* Top tabs, set inside the dark brand bar: one 44px row on desktop, a second dark 44px row on a phone.
   The current tab carries an amber rule, bold weight and aria-current, so colour is never the only cue. */
.shell-tabs[b-9no1534fh2] {
    flex: 0 1 auto;
    min-width: 0;
}

.shell-tabs ul[b-9no1534fh2] {
    display: flex;
    flex-wrap: nowrap;
    gap: 0 2px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.shell-tabs a[b-9no1534fh2] {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0 12px;
    border-bottom: 3px solid transparent;
    color: var(--on-ink-muted);
    font-size: 13px;
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
}

.shell-tabs a:hover[b-9no1534fh2] {
    background: var(--brand-bar-hover, #26314c);
    color: var(--on-ink);
}

.shell-tabs a[aria-current="page"][b-9no1534fh2] {
    border-bottom-color: var(--brand-marker);
    color: var(--on-ink);
    font-weight: 600;
}

.shell-tabs a:focus-visible[b-9no1534fh2] {
    outline-color: var(--brand-marker);
}

@media (max-width: 700px) {
    .shell-tabs[b-9no1534fh2] {
        flex: 1 1 100%;
    }

    .shell-tabs ul[b-9no1534fh2] {
        overflow-x: auto;
        justify-content: space-between;
        margin: 0 -8px;
    }

    /* Five tabs share a phone's row, so each is tighter; the row still scrolls if a label grows. */
    .shell-tabs a[b-9no1534fh2] {
        padding: 0 8px;
    }
}

/* The run's label rides on the Run tab; on a phone the row has no room for it, so it is the word alone. */
.shell-tab-run[b-9no1534fh2] {
    font-weight: 400;
}

/* The tab is a flex box, which would drop the space a span starts with; pre keeps it. */
.shell-tab-run[b-9no1534fh2],
.shell-tab-long[b-9no1534fh2] {
    white-space: pre;
}

@media (max-width: 640px) {
    .shell-tab-run[b-9no1534fh2],
    .shell-tab-long[b-9no1534fh2] {
        display: none;
    }
}
/* /Components/SizingTrajectory.razor.rz.scp.css */
.sizing-trajectory[b-gfb2v0nquf] {
    margin-top: 2.5rem;
}

.section-heading[b-gfb2v0nquf] {
    max-width: 70ch;
    margin-bottom: 1.4rem;
}

.section-heading h2[b-gfb2v0nquf] {
    margin: 0 0 0.6rem;
    font-size: 1.35rem;
}

.sizing-story[b-gfb2v0nquf] {
    margin: 0;
    color: var(--color-ink);
    font-size: 0.95rem;
    line-height: 1.6;
}

.sizing-reconcile[b-gfb2v0nquf] {
    margin: 0.5rem 0 0;
    color: var(--color-muted);
    font-size: 0.83rem;
    line-height: 1.55;
}

.sizing-note[b-gfb2v0nquf] {
    max-width: 80ch;
    margin: 1rem 0 0;
    color: var(--color-muted);
    font-size: 0.85rem;
    line-height: 1.6;
}

.sizing-passes[b-gfb2v0nquf] {
    margin-top: 1rem;
}

.sizing-passes summary[b-gfb2v0nquf] {
    min-height: 24px;
    color: var(--color-ink);
    font-size: 0.9rem;
    font-weight: 700;
    cursor: pointer;
}
/* /Components/SweepChart.razor.rz.scp.css */
.sweep-chart-picker[b-2sijwxvecn] {
    display: none;
    gap: 6px;
    margin: 8px 0;
    font-size: 12px;
}

.sweep-chart-picker select[b-2sijwxvecn] {
    min-height: 44px;
    width: 100%;
}

@media (max-width: 699px) {
    .sweep-chart-picker[b-2sijwxvecn] {
        display: grid;
    }
}

.sweep-chart-axis[b-2sijwxvecn] {
    margin: 0.5rem 0;
    color: var(--color-muted);
    font-size: 0.8rem;
}

.sweep-chart-note[b-2sijwxvecn] {
    margin: 0.25rem 0 0;
    color: var(--color-muted);
    font-size: 0.75rem;
}

.sweep-omissions[b-2sijwxvecn] {
    margin-top: 1rem;
    padding: 0.85rem 1rem;
    border-left: 3px solid var(--color-notice);
    background: var(--color-surface-muted);
}

.sweep-omissions h3[b-2sijwxvecn] {
    margin: 0;
    font-size: 0.9rem;
}

.sweep-omissions ul[b-2sijwxvecn] {
    display: grid;
    gap: 0.4rem;
    margin: 0.7rem 0 0;
    padding: 0;
    list-style: none;
}

.sweep-omissions li[b-2sijwxvecn] {
    display: grid;
    gap: 0.15rem;
}

.sweep-omissions span[b-2sijwxvecn] {
    color: var(--color-muted);
}

.sweep-chart-empty[b-2sijwxvecn] {
    margin: 0;
    color: var(--color-muted);
}

.sweep-chart-caption[b-2sijwxvecn] {
    color: var(--color-muted);
    font-size: 0.82rem;
    line-height: 1.5;
}

/* The reliability set: three panels on one shared run axis. Stacked (one column, full width) up to
   899 px, which includes a 390 px phone; side by side in three equal columns from 900 px. */
.sweep-chart-set[b-2sijwxvecn] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 16px;
}

.sweep-chart-set[b-2sijwxvecn]  .line-plot {
    min-width: 0;
    margin: 0;
}

.sweep-chart-set > .sweep-chart-caption[b-2sijwxvecn] {
    grid-column: 1 / -1;
    margin: 0;
}

@media (min-width: 700px) and (max-width: 899px) {
    /* Drawn from a 440 unit viewBox: capped so the 11 px text is not stretched to 1.5 times. */
    .sweep-chart-set[b-2sijwxvecn]  .line-plot {
        max-width: 440px;
    }
}

@media (min-width: 900px) {
    .sweep-chart-set[b-2sijwxvecn] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* The measure choice sits on the chart's title row, right-aligned, as a compact labelled select. */
.sweep-chart-measure[b-2sijwxvecn] {
    display: flex;
    align-items: center;
    flex: 0 1 auto;
    gap: 8px;
    min-width: 0;
    max-width: 100%;
    margin: 0;
    color: var(--muted);
    font-size: 13px;
    font-weight: 400;
}

.sweep-chart-measure select[b-2sijwxvecn] {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    max-width: 26rem;
    min-height: 28px;
    padding: 2px 8px;
    border: 1px solid var(--control-border);
    border-radius: 0;
    background: var(--raised);
    color: var(--ink);
    font: 13px var(--font-body);
}

@media (max-width: 760px) {
    /* The select says what it chooses; the word is kept for a screen reader, so the title keeps its line. */
    .sweep-chart-measure > span[b-2sijwxvecn] {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
    }

    .sweep-chart-measure[b-2sijwxvecn] {
        display: flex;
        align-items: center;
        gap: 0.5rem;
    }

    .sweep-chart-measure select[b-2sijwxvecn] {
        flex: 1;
        min-width: 0;
    }
}
/* /Components/SweepOutcomeSummary.razor.rz.scp.css */
/* Headline strip (six figures) plus the details fold. Six across on desktop, three then two on narrower widths. */
.outcome-strip-part[b-55094kl8d4]  .metric-strip.outcome-strip .metric-grid {
    grid-template-columns: repeat(6, minmax(0, 1fr));
}

.outcome-strip-part[b-55094kl8d4]  .metric-strip.outcome-strip .metric strong span {
    display: inline-block;
    white-space: nowrap;
}

@media (max-width: 1100px) {
    .outcome-strip-part[b-55094kl8d4]  .metric-strip.outcome-strip .metric-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .outcome-strip-part[b-55094kl8d4]  .metric-strip.outcome-strip .metric-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .outcome-strip-part[b-55094kl8d4]  .metric-strip.outcome-strip .metric {
        padding: 8px 10px;
    }
}

.outcome-headline[b-55094kl8d4],
.outcome-target[b-55094kl8d4],
.outcome-no-miss[b-55094kl8d4],
.outcome-summary[b-55094kl8d4]  .outcome-caveat {
    max-width: 70ch;
    margin: 8px 0 0;
    color: var(--secondary);
    overflow-wrap: anywhere;
}

.outcome-target[b-55094kl8d4] {
    color: var(--muted);
}

.outcome-more[b-55094kl8d4] {
    margin-top: 16px;
}

.outcome-more > summary[b-55094kl8d4] {
    min-height: 24px;
    font-weight: 600;
}

.outcome-more h3[b-55094kl8d4] {
    margin: 14px 0 6px;
}

.outcome-summary[b-55094kl8d4]  .outcome-region-scroll,
.outcome-more[b-55094kl8d4]  .outcome-region-scroll {
    margin-top: 8px;
    overflow-x: auto;
}

.outcome-regions caption[b-55094kl8d4] {
    padding: 0 0 6px;
    color: var(--muted);
    font: 11.5px var(--font-mono);
    text-align: left;
}

.outcome-sizing[b-55094kl8d4] {
    display: grid;
    gap: 4px;
    margin: 0;
    padding-left: 16px;
}

/* A failed run group: a red-free top rule in ink, with the code in mono. No tinted card. */
.outcome-failures[b-55094kl8d4] {
    margin-top: 16px;
    padding-top: 8px;
    border-top: 1px solid var(--ink);
}

.outcome-failures ul[b-55094kl8d4] {
    display: grid;
    gap: 10px;
    margin: 8px 0 0;
    padding: 0;
    list-style: none;
}

.outcome-failures li[b-55094kl8d4] {
    display: grid;
    gap: 2px;
}

.outcome-failures li > div[b-55094kl8d4] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 8px;
}

.outcome-failures code[b-55094kl8d4] {
    color: var(--muted);
    font: 11.5px var(--font-mono);
}

.outcome-failures span[b-55094kl8d4] {
    color: var(--muted);
}

.outcome-failure-points[b-55094kl8d4] {
    font: 500 12px var(--font-mono);
}
/* /Components/SweepRunList.razor.rz.scp.css */
.run-list[b-qlpsn02hfl] {
    margin-top: 22px;
}

/* A section title (13px) with its tools on the same row, as every table heading in the viewer. */
.run-list-heading[b-qlpsn02hfl] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 8px 20px;
    margin-bottom: 8px;
}

.run-list-heading h2[b-qlpsn02hfl] {
    margin: 0;
    font: 600 13px/1.4 var(--font-body);
}

.run-list-tools[b-qlpsn02hfl] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 16px;
}

.run-list-filter[b-qlpsn02hfl] {
    display: flex;
    align-items: center;
    min-width: 0;
    max-width: 100%;
    gap: 8px;
    color: var(--color-muted);
    font-size: 13px;
    font-weight: 400;
}

.run-list-filter select[b-qlpsn02hfl] {
    width: auto;
    max-width: 100%;
    min-height: 28px;
    padding: 2px 8px;
    border: 1px solid var(--color-border-control);
    border-radius: 0;
    background: var(--color-surface);
    color: var(--color-ink);
    font: inherit;
    font-weight: 400;
}

.run-list-count:empty[b-qlpsn02hfl] {
    display: none;
}

.run-list-count[b-qlpsn02hfl] {
    margin: 0 0 8px;
    color: var(--color-muted);
    font-size: 0.85rem;
}

/* Same scroll-shadow technique as the shared .table-wrap (see app.css); this table needs its own
   sticky-column handling, but the same wide-table-on-mobile problem applies. */
.run-list[b-qlpsn02hfl]  .run-table-scroll {
    position: relative;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
}

.run-table[b-qlpsn02hfl] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    border: 1px solid var(--color-border);
}

.run-table caption[b-qlpsn02hfl] {
    padding: 0.4rem 0.85rem;
    color: var(--color-muted);
    font-size: 0.8rem;
    text-align: left;
}

.run-table th[b-qlpsn02hfl],
.run-table td[b-qlpsn02hfl] {
    padding: 0.4rem 0.85rem;
    border-bottom: 1px solid var(--color-border);
    text-align: left;
    white-space: nowrap;
}

.run-table thead th[b-qlpsn02hfl] {
    background: var(--color-surface-table);
    color: var(--color-muted);
    font-size: 0.72rem;
    font-weight: 700;
    vertical-align: bottom;
}

.run-table thead th small[b-qlpsn02hfl] {
    display: block;
    color: var(--color-muted);
    font-size: 0.68rem;
    font-weight: 400;
}

/* A heading is a button, so it can be sorted by keyboard. The arrow is drawn, not written, so the
   heading's text stays the heading. */
.sort-button[b-qlpsn02hfl] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    min-height: 24px;
    padding: 0.15rem 0;
    border: 0;
    background: none;
    color: inherit;
    cursor: pointer;
    font: inherit;
    font-weight: 700;
    text-align: left;
}

.sort-button[b-qlpsn02hfl]::after {
    content: "\2195";
    opacity: 0.55;
}

.run-table th[aria-sort="ascending"] .sort-button[b-qlpsn02hfl]::after {
    content: "\2191";
    opacity: 1;
}

.run-table th[aria-sort="descending"] .sort-button[b-qlpsn02hfl]::after {
    content: "\2193";
    opacity: 1;
}

.run-table th[aria-sort="ascending"][b-qlpsn02hfl],
.run-table th[aria-sort="descending"][b-qlpsn02hfl] {
    color: var(--color-ink);
}

/* The run name stays visible while the reader scrolls across a wide row of figures. */
.run-table .sticky-column[b-qlpsn02hfl] {
    position: sticky;
    left: 0;
    z-index: 1;
    border-right: 1px solid var(--color-border);
    background: var(--color-surface);
}

.run-table thead .sticky-column[b-qlpsn02hfl] {
    z-index: 2;
    background: var(--color-surface-table);
}

.run-table tbody th[b-qlpsn02hfl] {
    font-size: 0.85rem;
    font-weight: 700;
}

.run-select[b-qlpsn02hfl] {
    min-height: 24px;
    padding: 0.15rem 0.35rem;
    border: 1px solid transparent;
    border-radius: 0;
    background: none;
    color: var(--accent);
    cursor: pointer;
    font: inherit;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 0.18em;
}

.run-select[aria-pressed="true"][b-qlpsn02hfl] {
    border-color: var(--color-ink);
    color: var(--color-ink);
}

.run-table td[b-qlpsn02hfl] {
    font-size: 0.85rem;
    font-variant-numeric: tabular-nums;
}

.run-table .cell-number[b-qlpsn02hfl] {
    text-align: right;
}

.run-table tbody tr:last-child th[b-qlpsn02hfl],
.run-table tbody tr:last-child td[b-qlpsn02hfl] {
    border-bottom: 0;
}

.run-table tbody tr:hover td[b-qlpsn02hfl],
.run-table tbody tr:hover .sticky-column[b-qlpsn02hfl] {
    background: var(--accent-soft);
}

/* The selected run is tinted rather than outlined, so it survives horizontal scrolling of a wide
   table where a border on one edge would scroll out of view. */
.run-table tr.is-selected td[b-qlpsn02hfl],
.run-table tr.is-selected th[b-qlpsn02hfl] {
    background: var(--color-notice-soft);
}

.run-table a[b-qlpsn02hfl] {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    color: var(--accent);
    font-weight: 700;
}

.run-constrained[b-qlpsn02hfl] {
    color: var(--color-notice);
    font-weight: 700;
}

.within-target[b-qlpsn02hfl] {
    color: var(--accent);
    font-weight: 700;
}

.outside-target[b-qlpsn02hfl] {
    color: var(--color-notice);
    font-weight: 700;
}

.run-failure[b-qlpsn02hfl] {
    display: inline-block;
    max-width: 28ch;
    overflow: hidden;
    color: var(--color-muted);
    text-overflow: ellipsis;
}

.visually-hidden[b-qlpsn02hfl] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
}

/* On a phone the battery and sizing columns give way to what the page is about: the run, its place
   on the axis, whether it met the target, its unmet demand and cost. They stay in the download. */
@media (max-width: 760px) {
    .run-table .run-col-battery[b-qlpsn02hfl],
    .run-table .run-col-sizing[b-qlpsn02hfl] {
        display: none;
    }

    .run-list-heading[b-qlpsn02hfl] {
        align-items: stretch;
        flex-direction: column;
    }

    .run-table th[b-qlpsn02hfl],
    .run-table td[b-qlpsn02hfl] {
        padding: 0.3rem 0.5rem;
    }
}

/* On paper the table cannot scroll, so it takes its own landscape pages instead (see @page wide
   in app.css) and drops the scroll shadows. */
@media print {
    .run-list[b-qlpsn02hfl]  .run-table-scroll {
        page: wide;
        overflow: visible;
        background-image: none;
        font-size: 0.8rem;
    }
}

.run-list-note[b-qlpsn02hfl] {
    max-width: 70ch;
    margin: 0.25rem 0 0.5rem;
    color: var(--color-muted);
    font-size: 0.82rem;
    line-height: 1.5;
}
/* /Components/SweepRunReadout.razor.rz.scp.css */
/* The selected-run readout: a stat strip of columns under an ink rule, not cards. */
.run-readout[b-f7d4naf2d1] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 0 20px;
    margin-top: 12px;
    border-top: 1px solid var(--ink);
}

.run-readout-card[b-f7d4naf2d1] {
    padding: 8px 0 10px;
}

.run-readout-card.is-selected[b-f7d4naf2d1] {
    background: var(--selected);
    padding-left: 8px;
    padding-right: 8px;
}

.run-readout-caption[b-f7d4naf2d1] {
    margin: 0;
    color: var(--muted);
    font: 500 11px var(--font-body);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.run-readout-card h3[b-f7d4naf2d1] {
    margin: 2px 0 6px;
    font: 500 17px var(--font-mono);
}

.run-readout-card h3 small[b-f7d4naf2d1] {
    margin-left: 6px;
    color: var(--muted);
    font: 12px var(--font-body);
}

.run-readout-card dl[b-f7d4naf2d1] {
    margin: 0;
}

.run-readout-card dl div[b-f7d4naf2d1] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    padding: 4px 0;
    border-top: 1px solid var(--row-rule);
}

.run-readout-card dt[b-f7d4naf2d1] {
    color: var(--muted);
    font-size: 12px;
}

.run-readout-card dd[b-f7d4naf2d1] {
    margin: 0;
    font: 12.5px var(--font-mono);
    text-align: right;
}

.run-readout-links[b-f7d4naf2d1] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 16px;
    margin: 10px 0 0;
}

.run-readout-links a[b-f7d4naf2d1] {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
}

.within-target[b-f7d4naf2d1] {
    color: var(--ink);
}

.outside-target[b-f7d4naf2d1],
.run-constrained[b-f7d4naf2d1] {
    color: var(--missed);
    font-weight: 600;
}

@media (max-width: 760px) {
    .run-readout[b-f7d4naf2d1] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .run-readout-card dl div[b-f7d4naf2d1] {
        flex-direction: column;
        gap: 0;
    }

    .run-readout-card dd[b-f7d4naf2d1] {
        text-align: left;
    }
}

/* Every figure the index holds for the selected run, in compact groups. */
.run-readout-all[b-f7d4naf2d1] {
    margin-top: 10px;
}

.run-readout-all h4[b-f7d4naf2d1] {
    margin: 12px 0 2px;
    color: var(--muted);
    font-size: 11px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.run-readout-card dl.run-readout-scalars[b-f7d4naf2d1] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(15rem, 100%), 1fr));
    column-gap: 20px;
}

.run-readout-scalars dt small[b-f7d4naf2d1] {
    font-size: 11px;
}

@media (max-width: 760px) {
    .run-readout-card dl.run-readout-scalars div[b-f7d4naf2d1] {
        flex-direction: row;
        justify-content: space-between;
        gap: 8px;
    }

    .run-readout-card dl.run-readout-scalars dd[b-f7d4naf2d1] {
        text-align: right;
    }
}

.run-readout-scalars .is-measure dt[b-f7d4naf2d1] {
    color: var(--ink);
    font-weight: 600;
}
/* /Components/SweepScalarGrid.razor.rz.scp.css */
.scalar-grid[b-b8nsnz5z4c] {
    margin-top: 2rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--color-border);
}

.scalar-grid-heading h2[b-b8nsnz5z4c] {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.35rem;
    font-weight: 600;
}

.scalar-grid-heading p[b-b8nsnz5z4c] {
    max-width: 70ch;
    margin: 0.25rem 0 1rem;
    color: var(--color-muted);
    font-size: 0.85rem;
}

.scalar-tiles[b-b8nsnz5z4c] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    border-top: 1px solid var(--color-border);
    border-left: 1px solid var(--color-border);
}

.scalar-tile[b-b8nsnz5z4c] {
    display: grid;
    gap: 0.2rem;
    min-width: 0;
    min-height: 24px;
    padding: 0.85rem 0.9rem;
    border: 0;
    border-right: 1px solid var(--color-border);
    border-bottom: 1px solid var(--color-border);
    background: var(--color-surface);
    color: var(--accent);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.scalar-tile:hover:not(:disabled)[b-b8nsnz5z4c],
.scalar-tile.selected[b-b8nsnz5z4c] {
    background: var(--accent-soft);
}

.scalar-tile.selected[b-b8nsnz5z4c] {
    box-shadow: inset 3px 0 0 var(--accent);
}

.scalar-tile:disabled[b-b8nsnz5z4c] {
    color: var(--color-muted);
    cursor: default;
}

.scalar-tile-label[b-b8nsnz5z4c] {
    color: var(--color-ink);
    font-size: 0.85rem;
    font-weight: 700;
    overflow-wrap: anywhere;
}

.scalar-tile-note[b-b8nsnz5z4c] {
    color: var(--color-muted);
    font-size: 0.7rem;
    line-height: 1.35;
}

.scalar-tile-unit[b-b8nsnz5z4c],
.scalar-tile-range[b-b8nsnz5z4c],
.scalar-tile-absent[b-b8nsnz5z4c] {
    color: var(--color-muted);
    font-size: 0.72rem;
}

.scalar-tile-range[b-b8nsnz5z4c] {
    font-variant-numeric: tabular-nums;
}

.scalar-spark-wrap[b-b8nsnz5z4c] {
    position: relative;
    display: block;
    margin: 0.35rem 0 0.15rem;
}

.scalar-spark[b-b8nsnz5z4c] {
    display: block;
    width: 100%;
    height: 34px;
}

/* The selected run on each line. A ringed dot, so it is not told apart by colour alone. */
.scalar-spark-dot[b-b8nsnz5z4c] {
    position: absolute;
    width: 9px;
    height: 9px;
    border: 2px solid var(--color-ink);
    border-radius: 50%;
    background: var(--color-surface);
    transform: translate(-50%, -50%);
    pointer-events: none;
}

/* On a phone a tile is its name and its two ends; the line, the unit and the note are in the chart. */
@media (max-width: 520px) {
    .scalar-tiles[b-b8nsnz5z4c] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .scalar-tile[b-b8nsnz5z4c] {
        padding: 0.6rem 0.6rem;
    }

    .scalar-spark-wrap[b-b8nsnz5z4c],
    .scalar-tile-unit[b-b8nsnz5z4c],
    .scalar-tile-note[b-b8nsnz5z4c] {
        display: none;
    }
}
/* /Components/SweepTradeoffExplorer.razor.rz.scp.css */
.tradeoff[b-pde241hhs8] {
    margin-top: 2rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border-strong);
}

.tradeoff-heading[b-pde241hhs8] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1.5rem;
    margin-bottom: 1.35rem;
}

.tradeoff-heading h2[b-pde241hhs8] {
    margin: 0;
    font-family: var(--font-display);
    font-size: 1.35rem;
    font-weight: 600;
}

.tradeoff-heading p[b-pde241hhs8] {
    max-width: 620px;
    margin: 0.35rem 0 0;
    color: var(--color-muted);
    line-height: 1.55;
}

.tradeoff-controls[b-pde241hhs8] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.tradeoff-select[b-pde241hhs8] {
    display: grid;
    gap: 0.25rem;
    width: 250px;
    min-width: 0;
    color: var(--color-muted);
    font-size: 0.78rem;
    font-weight: 700;
}

.tradeoff-select select[b-pde241hhs8] {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    min-height: 36px;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--color-border-control);
    border-radius: 4px;
    background: var(--color-surface);
    color: var(--color-ink);
    font: inherit;
    font-weight: 400;
}

.tradeoff-empty[b-pde241hhs8] {
    margin-top: 1rem;
    color: var(--color-muted);
}

.tradeoff-relationship[b-pde241hhs8] {
    color: var(--color-ink);
    font-weight: 700;
}

@media (max-width: 860px) {
    .tradeoff-heading[b-pde241hhs8] {
        align-items: flex-start;
    }

    .tradeoff-controls[b-pde241hhs8] {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
        width: 100%;
    }

    .tradeoff-select[b-pde241hhs8] {
        width: auto;
    }
}
/* /Components/Viz/BasisCaption.razor.rz.scp.css */
.plot-basis-caption[b-kyxi8nn4gx] {
    margin: 6px 0 0;
    color: var(--muted, #59616c);
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: 11.5px;
    line-height: 1.5;
}

.plot-basis-caption a[b-kyxi8nn4gx] {
    color: var(--selection, #8a520f);
}
/* /Components/Viz/LinePlot.razor.rz.scp.css */
.plot-range[b-ta6ondhdat] {
    fill: var(--gridline, #d5d9de);
    fill-opacity: 0.55;
    stroke: none;
    pointer-events: none;
}

/* A plot never widens its column: the tooltip is clamped inside the drawing, and the figure may shrink. */
.viewer-shell .line-plot[b-ta6ondhdat] {
    min-width: 0;
    max-width: 100%;
}

.plot-head[b-ta6ondhdat] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    margin: 0 0 4px;
}

.plot-head-title[b-ta6ondhdat] {
    color: var(--ink, #14181f);
    font-family: var(--font-body, "IBM Plex Sans", sans-serif);
    font-size: 13px;
    font-weight: 600;
}

.plot-head-unit[b-ta6ondhdat] {
    color: var(--muted, #59616c);
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: 11.5px;
    text-align: right;
}

.plot-band[b-ta6ondhdat] {
    fill: var(--boundary, #e9ecf0);
}

.plot-band-label[b-ta6ondhdat] {
    fill: var(--muted, #59616c);
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: 10.5px;
}

.plot-target-rule[b-ta6ondhdat] {
    stroke: var(--ink, #14181f);
    stroke-width: 1;
    stroke-dasharray: 4 3;
    vector-effect: non-scaling-stroke;
}

.plot-target-label[b-ta6ondhdat] {
    fill: var(--ink, #14181f);
    font-size: 11.5px;
}

.plot-marker-missed[b-ta6ondhdat] {
    fill: var(--missed, #b3261e);
    stroke: var(--ink, #14181f);
    stroke-width: 1;
}

.plot-selected-ring[b-ta6ondhdat] {
    fill: none;
    stroke: var(--selection, #e0a100);
    stroke-width: 2;
    pointer-events: none;
}

.plot-selected-marker[b-ta6ondhdat] {
    fill: var(--ink, #14181f);
    stroke: #fff;
    stroke-width: 1;
    pointer-events: none;
}

.plot-hover-ring[b-ta6ondhdat] {
    display: none;
    fill: none;
    stroke: var(--ink, #14181f);
    stroke-width: 1.5;
    pointer-events: none;
}

.plot-hit:focus[b-ta6ondhdat] {
    outline: none;
}

.plot-marker-zero[b-ta6ondhdat] {
    fill: #fff;
    stroke: var(--ink, #14181f);
    stroke-width: 1.5;
}

/* Thin ink under-stroke so a light hue (Solar) keeps a 3:1 edge against the page. */
.plot-line-edged[b-ta6ondhdat] {
    stroke: var(--ink, #14181f);
    stroke-width: 4;
    fill: none;
    pointer-events: none;
}

.plot-hit:hover .plot-hover-ring[b-ta6ondhdat],
.plot-hit:focus .plot-hover-ring[b-ta6ondhdat] {
    display: block;
}

/* Axis text in the viewer is 11 px mono, drawn at that size: the viewBox is the element's width. */
.viewer-shell .line-plot[b-ta6ondhdat]  .plot-tick {
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: 11px;
}
/* /Components/Viz/MixBar.razor.rz.scp.css */
.mix-bar[b-soue07fi76] {
    min-width: 0;
}

.mix-bar-heading[b-soue07fi76] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.4rem;
}

/* A detail with no label beside it sits where the label would have been, rather than pushed to
   the far edge of an otherwise empty row. */
.mix-bar-heading small:only-child[b-soue07fi76] {
    margin-right: auto;
}

.mix-bar-heading span[b-soue07fi76] {
    font-size: 0.85rem;
    font-weight: 700;
}

.mix-bar-heading small[b-soue07fi76] {
    color: var(--color-muted);
    font-size: 0.76rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.mix-bar-track[b-soue07fi76] {
    display: flex;
    overflow: hidden;
    height: 14px;
    border-radius: 2px;
    background: var(--color-track);
}

.mix-bar-track i[b-soue07fi76] {
    display: block;
    height: 100%;
}

.mix-bar-legend[b-soue07fi76] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 1rem;
    margin: 0.55rem 0 0;
    padding: 0;
    list-style: none;
    color: var(--color-muted);
    font-size: 0.76rem;
}

.mix-bar-legend li[b-soue07fi76] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.mix-bar-legend i[b-soue07fi76] {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 2px;
}

.mix-bar-legend strong[b-soue07fi76] {
    color: var(--color-ink);
    font-variant-numeric: tabular-nums;
}

/* In the viewer a segment is edged in ink and the corners are square. The hues (Solar is 2.97:1,
   below 3:1 as a graphic) are not relied on to separate neighbours or to meet the track; the
   legend names each technology and its share in words. */
.viewer-shell .mix-bar-track[b-soue07fi76] {
    border: 1px solid var(--ink, #14181f);
    border-radius: 0;
}

.viewer-shell .mix-bar-track i + i[b-soue07fi76] {
    border-left: 1px solid var(--ink, #14181f);
}

.viewer-shell .mix-bar-legend i[b-soue07fi76] {
    border: 1px solid var(--ink, #14181f);
    border-radius: 0;
}

.viewer-shell .mix-bar-legend strong[b-soue07fi76] {
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
}
/* /Components/Viz/NetworkMap.razor.rz.scp.css */
/* The viewer's schematic: circle nodes, ink directed links, an amber selected link, a triangle for a
   region that missed the reliability target. Scoped to the viewer so the marketing maps keep theirs. */
.viewer-shell .network-map .network-scroll svg[b-x5nbnisfex] {
    min-width: 0;
    width: 100%;
    height: auto;
}

.viewer-shell .network-link[b-x5nbnisfex] {
    stroke: var(--ink, #14181f);
}

.viewer-shell .network-edge.is-idle .network-link[b-x5nbnisfex] {
    stroke: var(--muted, #59616c);
    stroke-dasharray: 4 4;
}

.viewer-shell .network-arrow[b-x5nbnisfex],
.viewer-shell .network-edge.is-limit .network-arrow[b-x5nbnisfex] {
    fill: var(--ink, #14181f);
}

.viewer-shell .network-edge:hover .network-link[b-x5nbnisfex],
.viewer-shell .network-edge:focus-visible .network-link[b-x5nbnisfex],
.viewer-shell .network-edge.is-selected .network-link[b-x5nbnisfex] {
    stroke: var(--selection, #e0a100);
}

.viewer-shell .network-edge:hover .network-arrow[b-x5nbnisfex],
.viewer-shell .network-edge:focus-visible .network-arrow[b-x5nbnisfex],
.viewer-shell .network-edge.is-selected .network-arrow[b-x5nbnisfex] {
    fill: var(--selection, #e0a100);
}

.viewer-shell .network-node path[b-x5nbnisfex],
.viewer-shell .network-node.is-importer path[b-x5nbnisfex],
.viewer-shell .network-node.is-exporter path[b-x5nbnisfex] {
    fill: #fff;
    stroke: var(--ink, #14181f);
    stroke-width: 1.5;
}

.viewer-shell .network-node.is-current path[b-x5nbnisfex] {
    stroke-width: 3;
}

.viewer-shell .network-glyph.is-missed[b-x5nbnisfex] {
    fill: var(--missed, #b3261e);
    stroke: var(--ink, #14181f);
    stroke-width: 1;
}

.viewer-shell .network-node-id[b-x5nbnisfex],
.viewer-shell .network-node-detail[b-x5nbnisfex],
.viewer-shell .network-node-status[b-x5nbnisfex] {
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
}

.viewer-shell .network-node-id[b-x5nbnisfex] {
    font-size: 12px;
}

/* Each direction's figure beside its line, mono like every number, amber when its link is chosen. */
.viewer-shell .network-edge-figure[b-x5nbnisfex] {
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: 11px;
    fill: var(--secondary, #3b424b);
    pointer-events: none;
}

.viewer-shell .network-edge-figure.is-selected[b-x5nbnisfex] {
    fill: var(--selection, #8a520f);
    font-weight: 600;
}
/* /Components/Viz/PlotTooltip.razor.rz.scp.css */
/* Hidden until the plot's hit group is hovered or holds keyboard focus. Square, white, 1 px ink border, mono. */
.plot-tip[b-58dclj4gij] {
    display: none;
    pointer-events: none;
}

.plot-tip-box[b-58dclj4gij] {
    fill: #fff;
    stroke: var(--ink, #14181f);
    stroke-width: 1;
}

.plot-tip[b-58dclj4gij]  .plot-tip-head,
.plot-tip[b-58dclj4gij]  .plot-tip-line {
    fill: var(--ink, #14181f);
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: var(--tooltip-font-size);
    font-variant-numeric: tabular-nums;
}

.plot-tip[b-58dclj4gij]  .plot-tip-head {
    font-weight: 600;
}

.plot-hit:hover .plot-tip[b-58dclj4gij],
.plot-hit:focus .plot-tip[b-58dclj4gij],
.plot-hit:focus-within .plot-tip[b-58dclj4gij],
.plot-hit:focus-visible .plot-tip[b-58dclj4gij],
.scatter-marker:hover .plot-tip[b-58dclj4gij],
.scatter-marker:focus-within .plot-tip[b-58dclj4gij],
.stack-hit:hover .plot-tip[b-58dclj4gij],
.stack-hit:focus .plot-tip[b-58dclj4gij],
.hourly-hit:focus:not(:hover) .hourly-col.is-current .plot-tip[b-58dclj4gij] {
    display: block;
}

/* One tooltip at a time: while the pointer is over the plot, only the hovered point's shows. */
svg:hover .plot-hit:not(:hover) .plot-tip[b-58dclj4gij] {
    display: none;
}
/* /Components/Viz/ScatterPlot.razor.rz.scp.css */
.plot-head[b-7bjvjjx52y] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: baseline;
    gap: 4px 12px;
    margin: 0 0 4px;
}

.plot-head-title[b-7bjvjjx52y] {
    color: var(--ink, #14181f);
    font-size: 13px;
    font-weight: 600;
}

.plot-head-unit[b-7bjvjjx52y] {
    color: var(--muted, #59616c);
    font-family: var(--font-mono, "IBM Plex Mono", ui-monospace, monospace);
    font-size: 11.5px;
}

.scatter-missed[b-7bjvjjx52y] {
    fill: var(--missed, #b3261e);
    stroke: var(--ink, #14181f);
    stroke-width: 1;
}
/* /Components/WeatherBasisNote.razor.rz.scp.css */
/* The weather basis as one plain mono line with a top rule: a fact, not a callout. */
.weather-basis[b-ddzyrflji8] {
    margin-top: 10px;
    padding-top: 6px;
    border-top: 1px solid var(--rule);
}

.weather-basis p[b-ddzyrflji8] {
    margin: 0;
}

.weather-basis-label[b-ddzyrflji8] {
    color: var(--muted);
    font-size: 11px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.weather-basis-location[b-ddzyrflji8] {
    margin-top: 2px !important;
    font-weight: 600;
}

.weather-basis-description[b-ddzyrflji8],
.weather-basis-source[b-ddzyrflji8] {
    max-width: 80ch;
    margin-top: 4px !important;
    color: var(--muted);
    font: 11.5px/1.5 var(--font-mono);
}

.weather-basis-location[b-ddzyrflji8],
.weather-basis-description[b-ddzyrflji8],
.weather-basis-source[b-ddzyrflji8] {
    overflow-wrap: anywhere;
}
/* /Components/WorkedExample.razor.rz.scp.css */
/* Two figures on one basis. The title states the result, the standfirst says what the result is
   standing on, and the basis sits under the chart where a reader checking the claim will look for
   it. Nothing here is a card: the figures are set on the page like plates in a report. */

.worked-example[b-mf0aw1aqrj] {
    display: grid;
    gap: 3rem;
}

/* The shortfall figure belongs to the cost figure above it: same runs, same x-axis, and the pair
   is the point. Pulled up so it reads as the second half of one exhibit rather than as a fifth
   unrelated chart. */
.worked-figure-paired[b-mf0aw1aqrj] {
    margin-top: -1.75rem;
}

.worked-figure[b-mf0aw1aqrj] {
    margin: 0;
    min-width: 0;
}

.worked-title[b-mf0aw1aqrj] {
    margin-bottom: 1.25rem;
}

.worked-title h3[b-mf0aw1aqrj] {
    max-width: none;
    margin: 0 0 0.6rem;
    font-family: var(--font-display);
    font-size: clamp(1.2rem, 2.6vw, 1.5rem);
    font-weight: 600;
    letter-spacing: -0.01em;
    line-height: 1.22;
}

.worked-title p[b-mf0aw1aqrj] {
    max-width: 72ch;
    margin: 0;
    color: var(--color-home-copy);
    font-size: 0.95rem;
    line-height: 1.65;
}

/* The basis line. Without it the statement above is unfalsifiable, so it is set as text a reader
   can actually read rather than as fine print. */

.worked-basis[b-mf0aw1aqrj] {
    max-width: 78ch;
    margin: 1rem 0 0;
    padding-top: 0.85rem;
    border-top: 1px solid var(--color-border);
    color: var(--color-muted);
    font-size: 0.84rem;
    line-height: 1.6;
}

/* On paper the figures are laid out as blocks: a grid is kept whole where a page can, so one
   figure that does not fit would drag the others after it onto the next page. */
@media print {
    .worked-example[b-mf0aw1aqrj] {
        display: block;
    }

    .worked-figure + .worked-figure[b-mf0aw1aqrj] {
        margin-top: 2rem;
    }

    .worked-figure-paired[b-mf0aw1aqrj] {
        margin-top: 1.25rem;
    }
}
/* /Layout/MainLayout.razor.rz.scp.css */
/* The viewer shell (Instrument): a compact dark brand bar, a white row of tabs, then the page.
   Gutters are 40px on desktop and 16px on a phone. No sidebar, footer, radius or shadow. */
.viewer-shell[b-1n0o1cfvgo] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    color: var(--ink);
}

.shell-bar[b-1n0o1cfvgo] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 20px;
    padding: 8px 16px;
    background: var(--brand-bar);
    color: var(--on-ink);
}

.shell-brand[b-1n0o1cfvgo] {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    min-height: 32px;
    color: var(--on-ink);
    text-decoration: none;
}

.shell-brand > span[b-1n0o1cfvgo] {
    color: var(--on-ink-muted);
    font-size: 12px;
    white-space: nowrap;
}

.shell-sweep[b-1n0o1cfvgo] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 12px;
    min-width: 0;
    flex: 1 1 auto;
}

.shell-sweep-name[b-1n0o1cfvgo] {
    min-width: 0;
    color: var(--on-ink-muted);
    font: 13px/1.3 var(--font-body);
    overflow-wrap: anywhere;
}

.shell-sweep-switch[b-1n0o1cfvgo] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--on-ink-muted);
    font-size: 12px;
}

.shell-sweep-switch select[b-1n0o1cfvgo] {
    min-height: 28px;
    max-width: 100%;
    padding: 2px 8px;
    border: 1px solid var(--on-ink-muted);
    background: var(--brand-bar);
    color: var(--on-ink);
    font: 12px var(--font-body);
}

.shell-actions[b-1n0o1cfvgo] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 16px;
    margin-left: auto;
}

.shell-actions > a[b-1n0o1cfvgo] {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    color: var(--on-ink-muted);
    font-size: 13px;
    text-decoration: none;
}

.shell-actions > a:hover[b-1n0o1cfvgo] {
    color: var(--on-ink);
}

.shell-bar :is(a, button, select):focus-visible[b-1n0o1cfvgo] {
    outline-color: var(--brand-marker);
}

main[b-1n0o1cfvgo] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.content[b-1n0o1cfvgo] {
    min-width: 0;
    flex: 1;
}

/* The bar: brand, tabs, sweep name and utilities in one 44px dark row. On a phone it is the brand and
   Copy link and Menu, then the dark tabs; the long sweep name is dropped and the links sit in Menu. */
.shell-bar[b-1n0o1cfvgo] { padding: 0 16px; gap: 0 20px; }
.shell-brand[b-1n0o1cfvgo] { min-height: 44px; }
.shell-bar[b-1n0o1cfvgo]  .brand-mark { display: none; }
.shell-menu[b-1n0o1cfvgo] { display: none; }
.shell-menu > summary[b-1n0o1cfvgo] { display: inline-flex; align-items: center; min-height: 44px; padding: 0 10px; color: var(--on-ink); font-size: 12px; cursor: pointer; }
.shell-menu > div[b-1n0o1cfvgo] { position: absolute; right: 16px; z-index: 5; display: flex; flex-direction: column; background: var(--brand-bar); border: 1px solid var(--on-ink-muted); }
.shell-menu > div a[b-1n0o1cfvgo] { display: flex; align-items: center; min-height: 44px; padding: 0 14px; color: var(--on-ink); }

@media (max-width: 700px) {
    .shell-bar[b-1n0o1cfvgo] {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto auto;
        align-items: center;
        gap: 0 8px;
        position: relative;
    }

    .shell-brand[b-1n0o1cfvgo] { grid-column: 1; grid-row: 1; }
    .shell-sweep[b-1n0o1cfvgo] { display: none; }
    .shell-actions[b-1n0o1cfvgo] { display: contents; }
    .shell-actions > a[b-1n0o1cfvgo] { display: none; }
    .shell-actions[b-1n0o1cfvgo]  .copy-link { grid-column: 2; grid-row: 1; }
    .shell-menu[b-1n0o1cfvgo] { display: block; grid-column: 3; grid-row: 1; }
    .shell-bar[b-1n0o1cfvgo]  .shell-tabs { grid-column: 1 / -1; grid-row: 2; }
}

@media (min-width: 701px) {
    .shell-bar[b-1n0o1cfvgo] { flex-wrap: nowrap; }
    .shell-sweep[b-1n0o1cfvgo] { flex-wrap: nowrap; overflow: hidden; }
    .shell-sweep-name[b-1n0o1cfvgo] { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}

@media (min-width: 900px) {
    .shell-bar[b-1n0o1cfvgo] { padding: 0 40px; }
}

/* Viewer pages: the shell owns the gutter (40px desktop, 16px phone), the page header is the 22px
   label-style heading, and no page root may centre itself in a narrower measure. */
.viewer-shell .content[b-1n0o1cfvgo]  > * { max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
.viewer-shell[b-1n0o1cfvgo]  .page-header h1 { font-size: 22px !important; line-height: 1.3; }
@media (max-width: 640px) {
    .viewer-shell[b-1n0o1cfvgo]  .page-header h1 { font-size: 18px !important; }
}
.viewer-shell[b-1n0o1cfvgo]  :is(select, input, textarea, button) { border-radius: 0 !important; }

/* ------------------------------------------------------------------------------------------------
   Instrument patterns for the viewer's shared components. The old viewer tail is gone from app.css,
   so the layouts of the run, results, assumptions and inputs components live here. ::deep reaches
   every component rendered inside the shell, and nothing outside it, so marketing is unaffected.
   ------------------------------------------------------------------------------------------------ */

/* Controls: square, native, 28px tall (44px at 390 comes from app.css). */
.viewer-shell[b-1n0o1cfvgo]  :is(.run-control, .results-controls .control, .series-control, .assumption-controls label, .input-region) {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.run-control, .series-control) label {
    color: var(--muted);
    font-size: 11px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.viewer-shell[b-1n0o1cfvgo]  :is(select, button, input:not([type="checkbox"]):not([type="radio"])) {
    min-height: 28px;
}

/* Segmented controls: joined square buttons, the pressed one in ink with a word-for-word label. */
.viewer-shell[b-1n0o1cfvgo]  :is(.window-buttons, .window-steps, .map-mode, .run-stepper) {
    display: inline-flex;
    align-items: stretch;
    flex-wrap: wrap;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.window-buttons, .window-steps, .map-mode) > :is(button, a) + :is(button, a) {
    margin-left: -1px;
}

/* The map's two modes are native radios, each label one line with its button: no segment box on a desktop. */
.viewer-shell[b-1n0o1cfvgo]  .map-mode {
    align-items: center;
    gap: 6px 18px;
    margin: 0;
    padding: 0;
    border: 0;
}

.viewer-shell[b-1n0o1cfvgo]  .map-mode legend {
    flex-basis: 100%;
    margin-bottom: 4px;
    padding: 0;
}

.viewer-shell[b-1n0o1cfvgo]  .map-mode label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 24px;
}

.viewer-shell[b-1n0o1cfvgo]  .window-buttons button[aria-pressed="true"],
.viewer-shell[b-1n0o1cfvgo]  .map-mode [aria-pressed="true"],
.viewer-shell[b-1n0o1cfvgo]  .map-mode [aria-current="true"] {
    border-color: var(--ink);
    background: var(--ink);
    color: var(--raised);
}

.viewer-shell[b-1n0o1cfvgo]  .run-stepper > * + * {
    margin-left: -1px;
}

.viewer-shell[b-1n0o1cfvgo]  .run-stepper button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
    padding: 0 8px;
}

.viewer-shell[b-1n0o1cfvgo]  .run-stepper select {
    min-width: 0;
    max-width: 240px;
}

.viewer-shell[b-1n0o1cfvgo]  .comparison-select {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
}

.viewer-shell[b-1n0o1cfvgo]  .comparison-select span {
    color: var(--muted);
    font-size: 11px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

/* Page furniture of the run view. */
.viewer-shell[b-1n0o1cfvgo]  :is(.run-controls, .window-controls, .results-controls, .assumption-controls, .assumption-toggles) {
    margin: 10px 0;
}

.viewer-shell[b-1n0o1cfvgo]  .run-navigation {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 16px;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.run-navigation, .region-links, .comparison-actions, .comparison-links, .assumption-links, .trust-actions, .table-actions) a {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.region-links, .comparison-actions) ul {
    display: flex;
    flex-wrap: wrap;
    gap: 0 12px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.viewer-shell[b-1n0o1cfvgo]  .region-links a[aria-current="true"] {
    color: var(--ink);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 2px solid var(--brand-marker);
}

.viewer-shell[b-1n0o1cfvgo]  .run-axis,
.viewer-shell[b-1n0o1cfvgo]  :is(.comparison-run, .comparison-basis, .comparison-count, .table-notes, .column-notes, .assumption-basis, .assumption-filter-note, .cost-fleet-note, .regional-cost-note, .zero-cost-note, .hourly-caption, .comparison-caption, .input-caption, .input-unrecorded, .caveat, .setting-description, .setting-help) {
    color: var(--muted);
    font: 11.5px/1.5 var(--font-mono);
    margin: 4px 0 8px;
}

.viewer-shell[b-1n0o1cfvgo]  .reliability-line {
    margin: 10px 0 0;
    font-size: 13px;
}

.viewer-shell[b-1n0o1cfvgo]  .target-mark {
    display: inline-block;
    margin-right: 4px;
    vertical-align: -1px;
}

.viewer-shell[b-1n0o1cfvgo]  .target-mark.is-missed,
.viewer-shell[b-1n0o1cfvgo]  .outside-target {
    color: var(--missed);
}

.viewer-shell[b-1n0o1cfvgo]  .target-mark.is-met {
    color: var(--ink);
}

.viewer-shell[b-1n0o1cfvgo]  .peak-hour {
    margin-left: 6px;
    font-family: var(--font-mono);
}

.viewer-shell[b-1n0o1cfvgo]  .show-hour,
.viewer-shell[b-1n0o1cfvgo]  .toggle-link,
.viewer-shell[b-1n0o1cfvgo]  .clear-hour {
    min-height: 24px;
    padding: 0 8px;
    font-size: 12px;
}

/* Errors and pending states inside a section: red top rule, never a coloured box. */
.viewer-shell[b-1n0o1cfvgo]  .run-problem,
.viewer-shell[b-1n0o1cfvgo]  .comparison-alert {
    margin: 10px 0;
    padding: 8px 0 0;
    border-top: 2px solid var(--missed);
    color: var(--ink);
}

.viewer-shell[b-1n0o1cfvgo]  .run-pending {
    margin: 10px 0;
    padding: 8px 0 0;
    border-top: 1px solid var(--rule);
    color: var(--muted);
    font: 11.5px var(--font-mono);
}

/* Hourly: charts then a readout column. */
.viewer-shell[b-1n0o1cfvgo]  .hourly-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 20px;
    align-items: start;
    margin-top: 12px;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.hourly-main, .hourly-charts) {
    min-width: 0;
}

/* Separate whole figures, including their captions and wrapping colour keys. */
.viewer-shell[b-1n0o1cfvgo]  .hourly-charts > .hourly-plot + .hourly-plot {
    margin-top: 24px;
}

.viewer-shell[b-1n0o1cfvgo]  .comparison-legend,
.viewer-shell[b-1n0o1cfvgo]  .hourly-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 16px;
    margin: 0;
    padding: 0;
    list-style: none;
    font: 11px var(--font-mono);
    color: var(--muted);
}

.viewer-shell[b-1n0o1cfvgo]  .legend-dashed {
    border-top: 1px dashed var(--ink);
}

/* Tables: ink top rule from app.css, numerals mono 12.5, local horizontal scroll. */
.viewer-shell[b-1n0o1cfvgo]  :is(.table-wrap, .readout-wrap, .notable-table-wrap, .link-table-wrap, .sizing-table-wrap, .difference-table-wrap, .assumption-table-wrap, .table-scroll) {
    max-width: 100%;
    overflow-x: auto;
}

.viewer-shell[b-1n0o1cfvgo]  :is(td.numeric, td.number, .difference-unit) {
    font: 12.5px var(--font-mono);
}

.viewer-shell[b-1n0o1cfvgo]  :is(.cell-text, .field-name, .field-name-row) {
    font-family: var(--font-body);
}

.viewer-shell[b-1n0o1cfvgo]  .cell-none,
.viewer-shell[b-1n0o1cfvgo]  .config-absent,
.viewer-shell[b-1n0o1cfvgo]  .cell-absent {
    color: var(--muted);
}

.viewer-shell[b-1n0o1cfvgo]  .config-changed,
.viewer-shell[b-1n0o1cfvgo]  .row-net {
    font-weight: 600;
}

.viewer-shell[b-1n0o1cfvgo]  .group-row th {
    background: var(--boundary);
    color: var(--secondary);
}

.viewer-shell[b-1n0o1cfvgo]  .table-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 6px 12px;
    margin: 6px 0;
}

/* A capped or at-limit value: a square outlined tag in text, never a pill. */
.viewer-shell[b-1n0o1cfvgo]  .cap-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 0 4px;
    border: 1px solid var(--selection);
    color: var(--selection);
    font: 500 10.5px var(--font-mono);
    letter-spacing: 0.03em;
    text-transform: uppercase;
    white-space: nowrap;
}

.viewer-shell[b-1n0o1cfvgo]  .engine-code,
.viewer-shell[b-1n0o1cfvgo]  .engine-codes,
.viewer-shell[b-1n0o1cfvgo]  .hash,
.viewer-shell[b-1n0o1cfvgo]  .trust-address,
.viewer-shell[b-1n0o1cfvgo]  .trust-commit,
.viewer-shell[b-1n0o1cfvgo]  .trust-raw,
.viewer-shell[b-1n0o1cfvgo]  :is(.input-use, .trust-citation-text) {
    font-family: var(--font-mono);
    font-size: 12px;
    overflow-wrap: anywhere;
}

/* Cost section. */
.viewer-shell[b-1n0o1cfvgo]  .cost-layout {
    display: grid;
    grid-template-columns: minmax(190px, 0.75fr) minmax(260px, 1.35fr) minmax(250px, 1fr);
    gap: 20px;
    margin-top: 12px;
}

.viewer-shell[b-1n0o1cfvgo]  .cost-ledger {
    margin: 0;
}

.viewer-shell[b-1n0o1cfvgo]  .cost-ledger div {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 4px 0;
    border-bottom: 1px solid var(--row-rule);
}

.viewer-shell[b-1n0o1cfvgo]  .cost-ledger dd {
    margin: 0;
    font-family: var(--font-mono);
}

.viewer-shell[b-1n0o1cfvgo]  .cost-track {
    height: 6px;
    margin-top: 4px;
    background: var(--boundary);
}

.viewer-shell[b-1n0o1cfvgo]  .cost-track i {
    display: block;
    height: 100%;
    background: var(--ink);
}

.viewer-shell[b-1n0o1cfvgo]  :is(.cost-total, .cost-primary) {
    font: 500 17px var(--font-mono);
}

/* Disclosure folds. */
.viewer-shell[b-1n0o1cfvgo]  .run-detail-fold > summary,
.viewer-shell[b-1n0o1cfvgo]  .outcome-more > summary,
.viewer-shell[b-1n0o1cfvgo]  details > summary {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 24px;
    list-style: none;
    font-weight: 600;
}

.viewer-shell[b-1n0o1cfvgo]  details > summary::-webkit-details-marker {
    display: none;
}

/* The chevron is drawn, not typed: the fonts have no triangle glyphs. */
.viewer-shell[b-1n0o1cfvgo]  details > summary::before {
    content: "";
    flex: none;
    width: 7px;
    height: 7px;
    border-right: 1.6px solid currentColor;
    border-bottom: 1.6px solid currentColor;
    transform: rotate(-45deg);
}

.viewer-shell[b-1n0o1cfvgo]  details[open] > summary::before {
    transform: rotate(45deg);
}

/* Results table. */
.viewer-shell[b-1n0o1cfvgo]  .results-table thead tr:first-child th.results-band {
    text-align: center;
    border-left: 1px solid var(--rule);
    /* A band can be one column wide, so its label wraps inside its own columns rather than running on. */
    white-space: normal;
    overflow-wrap: normal;
    overflow: hidden;
}

/* A band reads as part of the heading row, on the same grey, with a rule marking where it starts. */
.viewer-shell[b-1n0o1cfvgo]  .results-table thead tr:first-child th.results-band {
    background: var(--header);
}

/* Headings sit on the side their values do: numbers right, over the digits; words left. */
.viewer-shell[b-1n0o1cfvgo]  .results-table th.head-number,
.viewer-shell[b-1n0o1cfvgo]  .results-table th.head-number .sort-button {
    text-align: right;
    justify-content: flex-end;
}

.viewer-shell[b-1n0o1cfvgo]  .results-table th.head-text,
.viewer-shell[b-1n0o1cfvgo]  .results-table th.head-text .sort-button {
    text-align: left;
    justify-content: flex-start;
}

/* Words in a cell are set in the text face, in a column wide enough to hold the longest of them on
   one line, so a value such as "Stopped: no further gain" never runs on under the next heading. */
.viewer-shell[b-1n0o1cfvgo]  .results-table td.cell-text {
    min-width: 11.5rem;
    white-space: nowrap;
    font-family: var(--font-body);
}

.viewer-shell[b-1n0o1cfvgo]  .results-table td.cell-text [data-src] {
    font-family: var(--font-body);
}

/* A heading that sorts nothing takes the same box as one that does, so the row's labels line up
   (on a phone the sorting ones are 44px targets with their text centred). */
.viewer-shell[b-1n0o1cfvgo]  .results-table .head-plain {
    display: inline-flex;
    align-items: center;
}

@media (max-width: 640px) {
    .viewer-shell[b-1n0o1cfvgo]  .results-table .head-plain {
        min-height: 44px;
    }
}

/* A note marker is a small raised number, spaced off the word it annotates. */
.viewer-shell[b-1n0o1cfvgo]  .results-table .note-ref {
    margin-left: 2px;
    color: var(--muted);
    font: 500 9px/1 var(--font-mono);
    vertical-align: super;
}

/* Every heading sits on the bottom row, whether it spans both rows or not. */
.viewer-shell[b-1n0o1cfvgo]  .results-table thead th {
    vertical-align: bottom;
}

/* The links of a row: one per line's end, never run together. */
.viewer-shell[b-1n0o1cfvgo]  .results-table td.cell-links {
    white-space: nowrap;
}

.viewer-shell[b-1n0o1cfvgo]  .results-table td.cell-links a + a {
    margin-left: 12px;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.results-clear, .results-count, .results-sort-summary, .results-columns) {
    font-size: 12px;
}

.viewer-shell[b-1n0o1cfvgo]  .results-count,
.viewer-shell[b-1n0o1cfvgo]  .results-sort-summary {
    color: var(--muted);
    font-family: var(--font-mono);
}

.viewer-shell[b-1n0o1cfvgo]  .results-pager {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px 12px;
    margin: 8px 0;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.series-index, .series-catalogue) {
    margin-top: 12px;
}

/* Assumptions. */
.viewer-shell[b-1n0o1cfvgo]  .assumption-group,
.viewer-shell[b-1n0o1cfvgo]  .region-assumptions h2 {
    margin: 22px 0 8px;
    padding-top: 10px;
    border-top: 1px solid var(--ink);
    font: 600 13px/1.4 var(--font-body);
}

.viewer-shell[b-1n0o1cfvgo]  .section-marker {
    color: var(--muted);
    font: 500 11px var(--font-mono);
}


.viewer-shell[b-1n0o1cfvgo]  .diff-statement,
.viewer-shell[b-1n0o1cfvgo]  .varies-statement,
.viewer-shell[b-1n0o1cfvgo]  .varies-check {
    color: var(--secondary);
}

/* Inputs. */
.viewer-shell[b-1n0o1cfvgo]  .input-nav ul {
    display: flex;
    flex-wrap: wrap;
    gap: 0 4px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.viewer-shell[b-1n0o1cfvgo]  .input-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
    padding: 0 10px;
    border-bottom: 2px solid transparent;
    color: var(--secondary);
    text-decoration: none;
}

.viewer-shell[b-1n0o1cfvgo]  .input-nav a[aria-current="page"] {
    border-bottom-color: var(--brand-marker);
    color: var(--ink);
    font-weight: 600;
}

.viewer-shell[b-1n0o1cfvgo]  .input-trace {
    margin: 12px 0;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.expand-toggle) {
    min-height: 24px;
}

.viewer-shell[b-1n0o1cfvgo]  .detail-row td {
    background: var(--page);
}

/* Trust panel. */
.viewer-shell[b-1n0o1cfvgo]  .trust-panel {
    max-width: none;
    margin: 28px 0 0;
    padding: 10px 0 0;
    border-top: 1px solid var(--ink);
}

.viewer-shell[b-1n0o1cfvgo]  .trust-facts {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: 6px 20px;
    margin: 0;
}

.viewer-shell[b-1n0o1cfvgo]  .trust-facts dt {
    color: var(--muted);
    font-size: 11px;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.viewer-shell[b-1n0o1cfvgo]  .trust-facts dd {
    margin: 0;
    font-family: var(--font-mono);
    font-size: 12px;
    overflow-wrap: anywhere;
}

@media (max-width: 900px) {
    .viewer-shell[b-1n0o1cfvgo]  .hourly-layout {
        grid-template-columns: minmax(0, 1fr);
    }

    .viewer-shell[b-1n0o1cfvgo]  .cost-layout {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .viewer-shell[b-1n0o1cfvgo]  .cost-layout {
        grid-template-columns: minmax(0, 1fr);
    }

    .viewer-shell[b-1n0o1cfvgo]  :is(td.numeric, td.number) {
        font-size: 12px;
    }

    .viewer-shell[b-1n0o1cfvgo]  .trust-facts {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* Phase C shared: results controls, table bands, assumptions grid, input captions */
.viewer-shell[b-1n0o1cfvgo]  .results-controls { display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px 20px; padding:10px 0; border-top:1px solid var(--ink); border-bottom:1px solid var(--ink); }
.viewer-shell[b-1n0o1cfvgo]  .results-table th.results-band { font-size:10.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); font-weight:600; border-bottom:1px solid var(--rule); text-align:left; background:transparent; }
.viewer-shell[b-1n0o1cfvgo]  .results-table thead tr + tr th { background:#eef0f2; }
.viewer-shell[b-1n0o1cfvgo]  .results-table thead tr:first-child th { border-top:1px solid var(--ink); }
.viewer-shell[b-1n0o1cfvgo]  .results-table td.cell-number, .viewer-shell[b-1n0o1cfvgo]  .results-table td.cell-not-modelled { text-align:right; font-family:var(--font-mono, "IBM Plex Mono", monospace); font-variant-numeric:tabular-nums; }
.viewer-shell[b-1n0o1cfvgo]  .sticky-outcome svg { vertical-align:-2px; margin-right:6px; }
.viewer-shell[b-1n0o1cfvgo]  .assumption-section > h2, .viewer-shell[b-1n0o1cfvgo]  .assumption-section > h3 { font-size:13px; font-weight:600; }
.viewer-shell[b-1n0o1cfvgo]  .figure-caption.input-caption, .viewer-shell[b-1n0o1cfvgo]  .input-caption { font-family:var(--font-mono, "IBM Plex Mono", monospace); font-size:11.5px; color:var(--muted); }
/* ---- D1 fixes: compact run header, section menu, touch targets, numerals, swatches ---- */
.viewer-shell[b-1n0o1cfvgo]  .breadcrumb, .viewer-shell[b-1n0o1cfvgo]  nav[aria-label="Breadcrumb"] { font-size: 11.5px; margin: 0 0 4px; }
.viewer-shell[b-1n0o1cfvgo]  .run-axis { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.viewer-shell[b-1n0o1cfvgo]  .reliability-line { margin: 6px 0 0; font: 12px/1.4 var(--font-mono); color: var(--muted); }
.viewer-shell[b-1n0o1cfvgo]  .region-links { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.viewer-shell[b-1n0o1cfvgo]  .region-links:focus-within { position: static; width: auto; height: auto; clip-path: none; overflow: visible; }
.viewer-shell[b-1n0o1cfvgo]  .run-navigation { display: flex; gap: 16px; margin: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-controls { margin-top: 8px; padding: 8px 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-metrics { margin-top: 8px; }

/* Section index: one closed inline menu at every width, never a tall list. */
.viewer-shell[b-1n0o1cfvgo]  .run-index { margin: 8px 0; position: relative; }
.viewer-shell[b-1n0o1cfvgo]  .run-index > details > summary { display: inline-flex; align-items: center; min-height: 28px; padding: 0 10px; border: 1px solid var(--ink); font: 500 12px var(--font-body); cursor: pointer; list-style: none; }
.viewer-shell[b-1n0o1cfvgo]  .run-index > details > ul { position: absolute; z-index: 4; left: 0; margin: 2px 0 0; padding: 4px 0; min-width: 240px; list-style: none; background: var(--raised); border: 1px solid var(--ink); }
.viewer-shell[b-1n0o1cfvgo]  .run-index > details > ul a { display: flex; align-items: center; min-height: 28px; padding: 0 12px; }

/* Tables and numerals. */
.viewer-shell[b-1n0o1cfvgo]  :is(.readout-table, .data-table, .assumption-table, .technology-table, .fleet-table) td:not(.cell-text):not([colspan]),
.viewer-shell[b-1n0o1cfvgo]  :is(.assumption-table) td:has(> .config-value) { text-align: right; font-family: var(--font-mono); font-variant-numeric: tabular-nums lining-nums; }
.viewer-shell[b-1n0o1cfvgo]  :is(.readout-table, .data-table, .assumption-table) th:not(.cell-text):not([scope="row"]) { text-align: right; }
.viewer-shell[b-1n0o1cfvgo]  :is(.data-table, .assumption-table, .results-table) thead th { padding: 6px 8px; line-height: 1.25; }
.viewer-shell[b-1n0o1cfvgo]  :is(.data-table, .assumption-table, .results-table) :is(td, th) { padding-top: 4px; padding-bottom: 4px; }
.viewer-shell[b-1n0o1cfvgo]  :is(.data-table, .results-table, .run-table) .sort-button { border: 0; background: transparent; padding: 0; min-height: 0; font: inherit; font-weight: 600; color: inherit; text-align: inherit; }
.viewer-shell[b-1n0o1cfvgo]  .results-table thead tr + tr th { height: auto; white-space: normal; vertical-align: bottom; }
.viewer-shell[b-1n0o1cfvgo]  .results-table tbody td { height: 30px; }

/* The overview's run list, in the same table grammar: an ink rule on top, plain uppercase headings
   (the sort arrow shows on the sorted column only), 13px rows, numbers in mono and the run name a
   quiet mono button rather than an underlined link. */
.viewer-shell[b-1n0o1cfvgo]  .run-table { border: 0; border-top: 1px solid var(--ink); }
/* The caption names the table for a screen reader; on screen the section title already does. */
.viewer-shell[b-1n0o1cfvgo]  .run-table caption { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
.viewer-shell[b-1n0o1cfvgo]  .run-table :is(th, td) { padding: 4px 8px; border-bottom: 1px solid var(--row-rule); font-size: 13px; line-height: 1.15; vertical-align: middle; }
.viewer-shell[b-1n0o1cfvgo]  .run-table thead th { color: var(--ink); font: 600 11px/1.3 var(--font-body); text-transform: uppercase; letter-spacing: .03em; }
.viewer-shell[b-1n0o1cfvgo]  .run-table .sort-button { text-transform: inherit; letter-spacing: inherit; }
.viewer-shell[b-1n0o1cfvgo]  .run-table th:not([aria-sort]) .sort-button::after { content: none; }
.viewer-shell[b-1n0o1cfvgo]  .run-table .sticky-column { border-right: 0; background: var(--page); }
.viewer-shell[b-1n0o1cfvgo]  .run-table thead .sticky-column { background: var(--header); }
.viewer-shell[b-1n0o1cfvgo]  .run-table .run-select { min-height: 0; padding: 0; border: 0; background: transparent; color: var(--ink); font: 400 13px var(--font-mono); text-decoration: none; }
.viewer-shell[b-1n0o1cfvgo]  .run-table .run-select:hover { text-decoration: underline; }
.viewer-shell[b-1n0o1cfvgo]  .run-table tbody th { font-weight: 400; }
.viewer-shell[b-1n0o1cfvgo]  .run-table td.cell-number { font-family: var(--font-mono); font-size: 12.5px; }
.viewer-shell[b-1n0o1cfvgo]  .run-table a { min-height: 0; font-weight: 400; }
.viewer-shell[b-1n0o1cfvgo]  .run-table td.run-col-sizing, .viewer-shell[b-1n0o1cfvgo]  .run-table td.run-col-sizing * { font-family: var(--font-body); }

/* Technology rows: palette swatch and a capacity-share bar, in addition to the number. */
.viewer-shell[b-1n0o1cfvgo]  .tech-swatch { display: inline-block; width: 10px; height: 10px; margin-right: 8px; border: 1px solid var(--ink); vertical-align: -1px; }
.viewer-shell[b-1n0o1cfvgo]  .technology-table .expand-toggle { border: 0; background: transparent; padding: 0; min-height: 0; font: inherit; font-weight: 500; text-decoration: underline; }
.viewer-shell[b-1n0o1cfvgo]  .technology-table td:last-child { position: relative; min-width: 120px; }
.viewer-shell[b-1n0o1cfvgo]  .share-bar { position: absolute; left: 8px; bottom: 3px; height: 3px; background: var(--ink); max-width: calc(100% - 16px); }

/* Inputs: the three-way switch is an ink segmented control. */
.viewer-shell[b-1n0o1cfvgo]  .input-nav { display: flex; width: max-content; max-width: 100%; border: 1px solid var(--ink); }
.viewer-shell[b-1n0o1cfvgo]  .input-nav a { flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; min-height: 28px; padding: 0 12px; border-bottom: 0; color: var(--ink); text-decoration: none; white-space: nowrap; }
.viewer-shell[b-1n0o1cfvgo]  .input-nav a[aria-current="page"] { background: var(--ink); color: #fff; font-weight: 500; }

/* Reserved height while a section reads: a scaffold of axis rules, not a blank block. */
.viewer-shell[b-1n0o1cfvgo]  .run-pending { min-height: 320px !important; background: repeating-linear-gradient(to bottom, transparent 0 39px, var(--rule) 39px 40px); border-bottom: 1px solid var(--ink); }

@media (max-width: 640px) {
    /* Every primary control is a 44px target; specificity beats the components' scoped 28px. */
    .viewer-shell[b-1n0o1cfvgo]  :is(button, select, summary, .copy-link-button, .segmented button, .run-stepper button, .show-hour, .expand-toggle, .sort-button),
    .viewer-shell .shell-bar[b-1n0o1cfvgo]  .copy-link-button { min-height: 44px !important; }
    .viewer-shell[b-1n0o1cfvgo]  :is(.input-nav a, .run-navigation a, .region-links a, .table-actions a, .assumption-links a, .toggle-link, .results-clear) { min-height: 44px; display: inline-flex; align-items: center; }
    .viewer-shell[b-1n0o1cfvgo]  label:has(> input[type="checkbox"]) { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; }
    .viewer-shell[b-1n0o1cfvgo]  input[type="checkbox"] { width: 20px; height: 20px; }
    .viewer-shell[b-1n0o1cfvgo]  .segmented { display: flex; width: 100%; }
    .viewer-shell[b-1n0o1cfvgo]  .segmented > button { flex: 1 1 0; padding: 0 4px; }
    .viewer-shell[b-1n0o1cfvgo]  .results-controls .run-control > select#results-outcome { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
    .viewer-shell[b-1n0o1cfvgo]  .results-controls .run-control:has(> #results-outcome) > label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .viewer-shell[b-1n0o1cfvgo]  .input-nav { width: 100%; }
    .viewer-shell[b-1n0o1cfvgo]  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
.viewer-shell[b-1n0o1cfvgo]  .results-controls .run-control:has(> #results-outcome) > select { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.viewer-shell[b-1n0o1cfvgo]  .results-controls .run-control:has(> #results-outcome) > label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.viewer-shell[b-1n0o1cfvgo]  .input-stats, .viewer-shell[b-1n0o1cfvgo]  .input-units { display: block; font: 11.5px/1.5 var(--font-mono); color: var(--muted); }
.viewer-shell[b-1n0o1cfvgo]  .input-stats b { color: var(--ink); font-weight: 600; }
.viewer-shell[b-1n0o1cfvgo]  .input-trace-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.viewer-shell[b-1n0o1cfvgo]  .input-trace-heading :is(h2, h3) { margin: 0; font-size: 12.5px; }
.viewer-shell[b-1n0o1cfvgo]  .input-trace-unit { color: var(--muted); font: 11px/1.4 var(--font-mono); text-align: right; }
.viewer-shell[b-1n0o1cfvgo]  .input-caption.is-compact { margin: 2px 0; font-size: 11px; line-height: 1.4; }
/* Under a plot in the grid the stats are a tight block of lines, not spaced like legend entries. */
.viewer-shell[b-1n0o1cfvgo]  .plot-legend:has(> .input-stats.is-compact) { row-gap: 4px; }
.viewer-shell[b-1n0o1cfvgo]  .plot-legend > .input-stats.is-compact { margin: 0; }

/* Programmatic focus on navigation lands on the h1; it is not an interactive target, so no outline. */
.viewer-shell[b-1n0o1cfvgo]  h1[tabindex="-1"]:focus, .viewer-shell[b-1n0o1cfvgo]  h1[tabindex="-1"]:focus-visible { outline: none !important; box-shadow: none !important; }

/* Run header: a viewport header. The long scope, axis, reliability prose and breadcrumb stay in the page
   as text for assistive tech and the source annotations, but are set out of the visual flow. */
.viewer-shell[b-1n0o1cfvgo]  .run-header :is(.eyebrow, .scope-line, .run-axis) {
    position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; margin: 0;
}
.viewer-shell[b-1n0o1cfvgo]  .run-header .page-header { position: relative; padding-bottom: 6px; border-bottom: 0; }
/* The context line (mock 3b): "Overview / Run +5,000 MW · 11 of 25 / NEM system / hour", in mono. */
.viewer-shell[b-1n0o1cfvgo]  .run-header nav.breadcrumb { margin: 0 0 6px; color: var(--muted); font: 12px/1.4 var(--font-mono); }
.viewer-shell[b-1n0o1cfvgo]  .run-header nav.breadcrumb a { color: var(--selection); }
.viewer-shell[b-1n0o1cfvgo]  .run-header h1 { font-size: 15px !important; font-weight: 600; }
.viewer-shell[b-1n0o1cfvgo]  .run-header .page-header { flex-direction: row; align-items: center; flex-wrap: wrap; gap: 8px 16px; }
.viewer-shell[b-1n0o1cfvgo]  .run-header .run-controls, .viewer-shell[b-1n0o1cfvgo]  .run-header .comparison-bar { display: flex; flex-wrap: wrap; gap: 8px 12px; border: 0; padding: 4px 0; margin: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-header .run-control { display: flex; align-items: center; gap: 8px; flex: 1 1 150px; min-width: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-header .run-control > label { font-size: 11px; text-transform: uppercase; color: var(--muted); }
.viewer-shell[b-1n0o1cfvgo]  .run-header .run-control > select { flex: 1 1 auto; min-width: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-header .run-stepper { flex: 1 1 100%; display: flex; }
.viewer-shell[b-1n0o1cfvgo]  .run-header .run-stepper select { flex: 1 1 auto; min-width: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-header-actions { display: flex; align-items: center; gap: 8px; }
.viewer-shell[b-1n0o1cfvgo]  .run-header-actions details { margin: 0; padding: 0; border: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-header-actions summary { display: flex; align-items: center; min-height: 44px; margin: 0; padding: 0 8px; box-sizing: border-box; }
.viewer-shell[b-1n0o1cfvgo]  .hourly-plot-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 4px 12px; margin: 0; padding: 0; border: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-header-actions .run-index { position: static; width: auto; margin: 0; padding: 0; border: 0; }
.viewer-shell[b-1n0o1cfvgo]  :is(.run-links, .assumption-run-links) > summary { display: flex; align-items: center; min-height: 44px; padding: 0 8px; cursor: pointer; }
.viewer-shell[b-1n0o1cfvgo]  .run-links[open] .run-navigation { position: absolute; z-index: 5; right: 16px; padding: 8px; border: 1px solid var(--ink); background: #fbfbfa; }
.viewer-shell[b-1n0o1cfvgo]  .run-toolbar { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) minmax(180px, 1fr); gap: 8px 16px; align-items: center; }
.viewer-shell[b-1n0o1cfvgo]  .run-toolbar .run-controls { display: contents; }
.viewer-shell[b-1n0o1cfvgo]  .run-toolbar .comparison-bar { margin: 0; padding: 0; min-width: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-toolbar .comparison-select { display: flex; align-items: center; gap: 8px; min-width: 0; }
.viewer-shell[b-1n0o1cfvgo]  .run-toolbar .comparison-select select { min-width: 0; width: 100%; }
.viewer-shell[b-1n0o1cfvgo]  .window-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.viewer-shell[b-1n0o1cfvgo]  :is(.window-buttons, .window-steps, .window-hour) { display: flex; align-items: center; gap: 0; }
.viewer-shell[b-1n0o1cfvgo]  .window-steps button { width: 44px; min-width: 44px; padding: 0; }
.viewer-shell[b-1n0o1cfvgo]  .window-hour { gap: 6px; min-width: 0; }
.viewer-shell[b-1n0o1cfvgo]  .window-hour input { min-width: 0; width: 21ch; }
.viewer-shell[b-1n0o1cfvgo]  .window-hour label { font-size: 11px; white-space: nowrap; }
.viewer-shell[b-1n0o1cfvgo]  .window-controls .default-hour-reason { flex-basis: 100%; margin: 0; font: 11px/1.4 var(--font-mono); }
.viewer-shell[b-1n0o1cfvgo]  .window-controls .peak-hour-date { flex-basis: 100%; margin: 0; color: var(--muted); font: 11px/1.4 var(--font-mono); }
/* Stat tiles: every note that carries a value or a run name stays visible, set compact. */
.viewer-shell[b-1n0o1cfvgo]  :is(.run-metrics, .outcome-strip) .metric > :not(span):not(strong):not(small) { display: block; font: 11.5px/1.35 var(--font-mono); color: var(--muted); }
.viewer-shell[b-1n0o1cfvgo]  .run-metrics .metric { padding: 8px 12px; }

/* Touch width: every primary control and table sort button is at least 44px wide as well as tall on a phone. */
@media (max-width: 640px) {
    .viewer-shell[b-1n0o1cfvgo]  :is(button, summary, .copy-link-button, .segmented button, .run-stepper button, .show-hour, .expand-toggle, .sort-button) { min-width: 44px !important; }
    .viewer-shell[b-1n0o1cfvgo]  .sort-button { min-height: 44px !important; padding: 0 6px !important; white-space: nowrap; }
    .viewer-shell[b-1n0o1cfvgo]  :is(.data-table, .results-table) thead th { white-space: nowrap; }
    .viewer-shell[b-1n0o1cfvgo]  .run-stepper button { width: 44px; }
}

/* The reliability status stays visible as a marker, the word and the unmet share; the full sentence is
   still read by assistive tech and its annotations are untouched. */
.viewer-shell[b-1n0o1cfvgo]  .run-header .reliability-line { font-size: 0; margin: 4px 0 0; color: var(--ink); }
.viewer-shell[b-1n0o1cfvgo]  .run-header .reliability-line .status-visible { font: 600 12px var(--font-mono); }
.viewer-shell[b-1n0o1cfvgo]  .run-header .reliability-line .status-unmet { margin-left: 8px; }
.viewer-shell[b-1n0o1cfvgo]  .run-header .reliability-line .status-unmet::after { content: " unmet"; font-weight: 400; color: var(--muted); }

/* Overview: the scope line is two lines at most (the full text stays in the page), and the headline strip
   shows label, value and unit like the run strip. */
.viewer-shell[b-1n0o1cfvgo]  .page-header .scope-line { font: 11.5px/1.4 var(--font-mono); color: var(--muted); margin: 2px 0 0; }
.viewer-shell[b-1n0o1cfvgo]  .outcome-strip .metric { padding: 8px 12px; }

/* V2: readout table fits its sidebar; results table stays on one line per cell; assumptions values are spaced. */
.viewer-shell[b-1n0o1cfvgo]  .readout-table { min-width: 0 !important; width: 100%; }
.viewer-shell[b-1n0o1cfvgo]  .readout-wrap { overflow-x: auto; }
.viewer-shell[b-1n0o1cfvgo]  .readout-table :is(th, td) { padding: 3px 6px; font-size: 12px; }
.viewer-shell[b-1n0o1cfvgo]  .readout-table td:last-child:not(:first-child) { white-space: nowrap; color: var(--muted); }
.viewer-shell[b-1n0o1cfvgo]  .results-table :is(td, th) { white-space: nowrap; }
.viewer-shell[b-1n0o1cfvgo]  .results-table td.sticky-outcome { white-space: nowrap; }
.viewer-shell[b-1n0o1cfvgo]  .results-table {
    --run-width: 88px;
    --outcome-width: 126px;
    --summary-width: 140px;
    --other-width: 160px;
    table-layout: fixed;
    width: calc(var(--run-width) + var(--outcome-width) + var(--key-count) * var(--summary-width) + var(--other-count) * var(--other-width));
}
.viewer-shell[b-1n0o1cfvgo]  .results-table col { width: var(--other-width); }
.viewer-shell[b-1n0o1cfvgo]  .results-table col.run-column { width: var(--run-width); }
.viewer-shell[b-1n0o1cfvgo]  .results-table col.outcome-column { width: var(--outcome-width); }
.viewer-shell[b-1n0o1cfvgo]  .results-table col.summary-column { width: var(--summary-width); }
.viewer-shell[b-1n0o1cfvgo]  .results-table .sort-button { white-space: normal !important; width: 100%; line-height: 1.25; }
.viewer-shell[b-1n0o1cfvgo]  .results-table .sort-button small { display: block; font: 11px/1.3 var(--font-mono); }
.viewer-shell[b-1n0o1cfvgo]  .results-table .heading-short { display: none; }
.viewer-shell[b-1n0o1cfvgo]  .results-controls { gap: 8px 16px; padding: 6px 0; }
.viewer-shell[b-1n0o1cfvgo]  .results-controls .run-control { display: flex; align-items: center; gap: 6px; }
.viewer-shell[b-1n0o1cfvgo]  .config-unit { margin-left: 0.25em; color: var(--muted); }
.viewer-shell[b-1n0o1cfvgo]  .technology-table .share-bar { background: var(--share-colour, var(--ink)); }

@media (max-width: 640px) {
    /* Map-mode labels are full 44px segments; every native field's height is set by the one rule below. */
    .viewer-shell[b-1n0o1cfvgo]  .map-mode { display: flex; width: 100%; border: 1px solid var(--ink); padding: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .map-mode label { flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; }
    .viewer-shell[b-1n0o1cfvgo]  .map-mode label:has(input:checked) { background: var(--ink); color: #fff; }
}

.viewer-shell[b-1n0o1cfvgo]  .basis-caption a { white-space: nowrap; margin-left: 0.25em; }

/* Phone bar: 48px brand row with 44px Copy and Menu controls, then a 44px tab row. */
@media (max-width: 700px) {
    .shell-bar[b-1n0o1cfvgo] { grid-template-rows: 48px auto; padding-top: 0; padding-bottom: 0; }
    .shell-brand[b-1n0o1cfvgo] { min-height: 48px; padding: 0; line-height: 1; }
    .shell-bar[b-1n0o1cfvgo]  .shell-tabs { min-height: 44px; }
}

/* Results controls: the column choices sit in a closed native disclosure; the outcome segments are one row. */
.viewer-shell[b-1n0o1cfvgo]  .results-columns-fold > summary { display: inline-flex; align-items: center; min-height: 36px; cursor: pointer; font-size: 13px; padding: 0 4px; }
.viewer-shell[b-1n0o1cfvgo]  .results-columns-fold > fieldset { margin: 4px 0 0; padding: 4px 0; border: 0; display: flex; flex-wrap: wrap; gap: 0 16px; }
@media (max-width: 640px) {
    .viewer-shell[b-1n0o1cfvgo]  .results-columns-fold > summary { min-height: 44px; }
    .viewer-shell[b-1n0o1cfvgo]  .results-controls .segmented { display: flex; width: 100%; }
    .viewer-shell[b-1n0o1cfvgo]  .results-controls .segmented button { flex: 1 1 0; padding: 0 4px; font-size: 12px; }
    .viewer-shell[b-1n0o1cfvgo]  .results-controls .run-control:has(#results-scope), .viewer-shell[b-1n0o1cfvgo]  .results-controls .run-control:has(#results-find) { flex: 1 1 calc(50% - 8px); min-width: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .results-controls .run-control > :is(select, input) { width: 100%; min-width: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .results-columns label { display: flex; align-items: center; gap: 8px; min-height: 44px; }
}

/* One rule for every native field on a phone: 44px tall, whatever its type (checkbox, radio, hidden and range keep their own sizes). */
@media (max-width: 640px) {
    .viewer-shell[b-1n0o1cfvgo]  input:not([type="checkbox"], [type="radio"], [type="hidden"], [type="range"], [type="file"]),
    .viewer-shell[b-1n0o1cfvgo]  select,
    .viewer-shell[b-1n0o1cfvgo]  summary,
    .viewer-shell[b-1n0o1cfvgo]  button { min-height: 44px; box-sizing: border-box; }
    .viewer-shell[b-1n0o1cfvgo]  input:not([type="checkbox"], [type="radio"], [type="hidden"], [type="range"], [type="file"]) { min-width: 44px; }
}

/* ---- D1 v3: compact run header and strip, bounded Results summaries, Assumptions rows, share bars ---- */
.viewer-shell[b-1n0o1cfvgo]  td:has(> .share-bar) { position: relative; }
.viewer-shell[b-1n0o1cfvgo]  .not-found-page { padding-inline: 0; }
.viewer-shell[b-1n0o1cfvgo]  .results-table .outcome-text { white-space: nowrap; }
.viewer-shell[b-1n0o1cfvgo]  .varies-table :is(td, th) { white-space: nowrap; }
.viewer-shell[b-1n0o1cfvgo]  .assumptions-header .assumption-toggles label,
.viewer-shell[b-1n0o1cfvgo]  .assumptions-header label:has(> input[type="checkbox"]) { display: flex; align-items: center; gap: 8px; }

@media (max-width: 640px) {
    /* Run header: the run navigation links, stepper, scope and compare share compact rows. */
    .viewer-shell[b-1n0o1cfvgo]  .run-header .run-navigation { display: flex; flex-wrap: wrap; gap: 0 14px; margin: 0 0 6px; font-size: 12px; }
    .viewer-shell[b-1n0o1cfvgo]  .run-header .run-stepper { margin: 0 0 6px; }
    .viewer-shell[b-1n0o1cfvgo]  .run-header .run-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 8px; }
    .viewer-shell[b-1n0o1cfvgo]  .run-header .run-toolbar .run-stepper { grid-column: 1 / -1; margin: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .run-header .run-toolbar .run-controls { display: contents; }
    .viewer-shell[b-1n0o1cfvgo]  .run-header .comparison-select { flex-direction: column; align-items: stretch; gap: 2px; }
    .viewer-shell[b-1n0o1cfvgo]  .window-controls { display: grid; grid-template-columns: minmax(176px, 1fr) 88px 72px; gap: 4px; }
    .viewer-shell[b-1n0o1cfvgo]  .window-controls .window-buttons { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .viewer-shell[b-1n0o1cfvgo]  .window-controls .window-buttons button { padding-inline: 0; min-width: 44px; }
    .viewer-shell[b-1n0o1cfvgo]  .window-controls .window-steps button { min-width: 44px; }
    .viewer-shell[b-1n0o1cfvgo]  .window-controls > .show-hour { padding-inline: 2px; min-width: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .window-controls > :is(.window-hour, .peak-hour-date, .default-hour-reason) { grid-column: 1 / -1; }
    .viewer-shell[b-1n0o1cfvgo]  .window-hour { flex-basis: 100%; }
    .viewer-shell[b-1n0o1cfvgo]  .window-hour input { flex: 1 1 auto; width: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .run-header .run-control { display: flex; flex-direction: column; align-items: stretch; gap: 2px; min-width: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .run-header .run-control > :is(select, input) { width: 100%; min-width: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .run-header .run-control label { font-size: 10px; }

    /* Six headline statistics: three to a row, value and unit only. */
    .viewer-shell[b-1n0o1cfvgo]  .run-metrics .metric-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
    .viewer-shell[b-1n0o1cfvgo]  .run-metrics .metric { padding: 4px; }
    .viewer-shell[b-1n0o1cfvgo]  .run-metrics .metric strong { font-size: 15px; }
    .viewer-shell[b-1n0o1cfvgo]  .run-metrics .metric > span { font-size: 10px; letter-spacing: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .run-metrics .metric small { font-size: 10px; }

    /* Results: the outcome is a symbol (the words stay for screen readers); summary columns are bounded. */
    .viewer-shell[b-1n0o1cfvgo]  .results-table .outcome-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table .outcome-heading { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .viewer-shell[b-1n0o1cfvgo]  .results-table { --run-width: 76px; --outcome-width: 60px; --summary-width: 112px; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table :is(td, th) { padding-inline: 4px; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table .sort-button { padding-inline: 0 !important; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table .sort-button:has(.heading-short) .heading-full { display: none; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table .heading-short { display: inline; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table td.sticky-outcome, .viewer-shell[b-1n0o1cfvgo]  .results-table th.sticky-outcome { width: var(--outcome-width); min-width: var(--outcome-width); max-width: var(--outcome-width); text-align: center; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table th { white-space: normal; line-height: 1.2; vertical-align: bottom; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table thead tr:first-child th.results-band { white-space: normal; overflow-wrap: normal; letter-spacing: 0; }
    .viewer-shell[b-1n0o1cfvgo]  .results-table :is(td, th):not(.sticky-column) { min-width: 0; }

    /* Assumptions: the checkbox labels are real 44px rows. */
    .viewer-shell[b-1n0o1cfvgo]  .assumption-controls .assumption-toggles label { min-height: 44px; }

    /* Technology summary: the AC capacity and share columns need to be near the left edge. */
    .viewer-shell[b-1n0o1cfvgo]  .technology-table :is(th, td) { padding: 6px 8px; }
    /* Keep the swatch on the name's line and let the headings wrap, so capacity and share both
       fit the first screen and only units, sites, DC and storage are scrolled to. */
    .viewer-shell[b-1n0o1cfvgo]  .technology-table tbody th.cell-text { white-space: nowrap; }
    .viewer-shell[b-1n0o1cfvgo]  .technology-table thead th { white-space: normal; min-width: 0; vertical-align: bottom; }
    .viewer-shell[b-1n0o1cfvgo]  .technology-table td:last-child { min-width: 0; }
}

/* Switching runs, hours or views: the last charts stay, dimmed, under a thin amber bar, and the new
   ones fade in, so the page never drops to empty boxes and back. Anything on the page that is
   reading (aria-busy) also shows the bar under the brand bar, which covers a change of tab. */
.viewer-shell[b-1n0o1cfvgo]  .hourly-stale {
    position: relative;
}

.viewer-shell[b-1n0o1cfvgo]  .hourly-stale > .hourly-charts {
    opacity: 0.45;
    filter: saturate(0.6);
    transition: opacity 120ms ease-out;
}

.viewer-shell[b-1n0o1cfvgo]  .switch-progress,
.viewer-shell .shell-bar[b-1n0o1cfvgo]::after {
    position: absolute;
    left: 0;
    right: 0;
    height: 2px;
    overflow: hidden;
    pointer-events: none;
}

.viewer-shell[b-1n0o1cfvgo]  .switch-progress {
    top: 0;
    z-index: 2;
    background: var(--rule);
}

.viewer-shell[b-1n0o1cfvgo]  .switch-progress::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 30%;
    background: var(--selection);
    animation: viewer-switch-progress-b-1n0o1cfvgo 900ms ease-in-out infinite;
}

.viewer-shell .shell-bar[b-1n0o1cfvgo] {
    position: relative;
}

.viewer-shell:has([aria-busy="true"]) .shell-bar[b-1n0o1cfvgo]::after {
    content: "";
    bottom: 0;
    background: linear-gradient(90deg, transparent, var(--brand-marker), transparent) no-repeat;
    background-size: 30% 100%;
    animation: viewer-switch-sweep-b-1n0o1cfvgo 900ms ease-in-out infinite;
}

.viewer-shell[b-1n0o1cfvgo]  .hourly-charts {
    animation: viewer-fade-in-b-1n0o1cfvgo 160ms ease-out;
}

@keyframes viewer-switch-progress-b-1n0o1cfvgo {
    from { transform: translateX(-100%); }
    to { transform: translateX(340%); }
}

@keyframes viewer-switch-sweep-b-1n0o1cfvgo {
    from { background-position: -30% 0; }
    to { background-position: 130% 0; }
}

@keyframes viewer-fade-in-b-1n0o1cfvgo {
    from { opacity: 0.4; }
    to { opacity: 1; }
}

/* Every Explorer table shares one keyboard-accessible local scroll boundary. */
.viewer-shell[b-1n0o1cfvgo]  .viewer-scroll-region {
    min-width: 0;
    max-width: 100%;
    overflow-x: auto;
    position: relative;
}

.viewer-shell[b-1n0o1cfvgo]  table:not(.results-table) {
    table-layout: auto;
}

.viewer-shell[b-1n0o1cfvgo]  table:not(.results-table) thead th {
    white-space: nowrap;
    vertical-align: bottom;
}

.viewer-shell[b-1n0o1cfvgo]  table :is(td.numeric, td.number, td.cell-number, .difference-unit) {
    white-space: nowrap;
}

/* A unit is a separate line, not a flex sibling squeezed against the label. */
.viewer-shell[b-1n0o1cfvgo]  table .sort-button {
    display: block;
    box-sizing: border-box;
}

.viewer-shell[b-1n0o1cfvgo]  .results-table .sort-button {
    position: relative;
    padding-right: 12px !important;
}

.viewer-shell[b-1n0o1cfvgo]  .results-table .sort-button::after {
    position: absolute;
    right: 0;
    bottom: 0;
}

.viewer-shell[b-1n0o1cfvgo]  .results-table .sort-button small {
    white-space: normal;
    overflow-wrap: normal;
}

.viewer-shell[b-1n0o1cfvgo]  .results-table :is(td.cell-text, td.cell-not-modelled) {
    white-space: normal;
}

.viewer-shell[b-1n0o1cfvgo]  .results-table .cell-stored {
    display: block;
}

.viewer-shell[b-1n0o1cfvgo]  .results-table .sticky-column {
    position: sticky;
    left: 0;
    z-index: 2;
    background: var(--page);
}

.viewer-shell[b-1n0o1cfvgo]  .results-table .sticky-outcome {
    left: var(--run-width);
}

.viewer-shell[b-1n0o1cfvgo]  .results-table thead .sticky-column {
    z-index: 3;
    background: var(--header);
}

.viewer-shell[b-1n0o1cfvgo]  .hourly-legend {
    margin-top: 8px;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.hourly-legend li, .plot-legend > span:has(> i)) {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.viewer-shell[b-1n0o1cfvgo]  :is(.hourly-legend i, .plot-legend i) {
    display: inline-block;
    flex: none;
    width: 12px;
    height: 10px;
    border: 1px solid var(--ink);
}

.viewer-shell[b-1n0o1cfvgo]  .plot-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 16px;
    margin-top: 8px;
}

.viewer-shell[b-1n0o1cfvgo]  .hourly-legend i:is(.is-line, .is-rule),
.viewer-shell[b-1n0o1cfvgo]  .plot-legend i:is(.is-line, .stack-demand-key) {
    width: 24px;
    height: 0;
    border: 0;
    border-top: 2px solid currentColor;
    background: none !important;
}

.viewer-shell[b-1n0o1cfvgo]  .plot-legend .stack-demand-key {
    color: var(--ink);
}

.viewer-shell[b-1n0o1cfvgo]  .hourly-legend i:is(.is-dashed, .is-rule),
.viewer-shell[b-1n0o1cfvgo]  .plot-legend i.dashed {
    height: 0;
    border: 0;
    border-top: 2px dashed currentColor;
    background: none !important;
}

.viewer-shell[b-1n0o1cfvgo]  .hourly-legend i.is-rule:not(.is-compared) {
    color: var(--ink);
}

/* Anchor to the full header, not the small Sections control when its row wraps. */
.viewer-shell[b-1n0o1cfvgo]  .run-header .run-index > details > ul {
    top: 100%;
    left: auto;
    right: 0;
    box-sizing: border-box;
    min-width: min(240px, 100%);
    max-width: 100%;
}

.viewer-shell[b-1n0o1cfvgo]  .series-control,
.viewer-shell[b-1n0o1cfvgo]  .series-control select {
    min-width: 0;
    max-width: 100%;
}

.viewer-shell[b-1n0o1cfvgo]  .input-facts dd {
    min-width: 0;
    overflow-wrap: anywhere;
}

@media (max-width: 380px) {
    .viewer-shell[b-1n0o1cfvgo]  .window-controls {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .viewer-shell[b-1n0o1cfvgo]  .window-controls .window-buttons {
        grid-column: 1 / -1;
    }
}

@media (prefers-reduced-motion: reduce) {
    .viewer-shell[b-1n0o1cfvgo]  .switch-progress::after,
    .viewer-shell:has([aria-busy="true"]) .shell-bar[b-1n0o1cfvgo]::after,
    .viewer-shell[b-1n0o1cfvgo]  .hourly-charts {
        animation: none;
    }

    .viewer-shell[b-1n0o1cfvgo]  .switch-progress::after {
        width: 100%;
    }

    .viewer-shell:has([aria-busy="true"]) .shell-bar[b-1n0o1cfvgo]::after {
        background: var(--brand-marker);
    }
}
/* /Layout/MarketingLayout.razor.rz.scp.css */
.marketing[b-s8t6t4yehh] {
    --bar-height: 3.5rem;
    --shell: 1180px;
    --gutter: clamp(1.25rem, 4vw, 3rem);
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    color: var(--color-ink);
    background: var(--color-surface);
}

/* Header --------------------------------------------------------------------
   Clear rather than solid. The page is light, so a light bar lets the content
   pass under it instead of capping the page with a slab, and the two dark bands
   - the banner and the sweep - frost as they cross it rather than being covered.
   It stays ours through what sits on it - the serif wordmark, the ochre in it,
   and a filled ink action - rather than through the bar's own colour. */

.marketing-bar[b-s8t6t4yehh] {
    position: sticky;
    top: 0;
    z-index: 20;
    /* Clear: untinted white at low opacity, carried by the blur rather than by a fill. Content
       stays visible passing under it instead of being covered. */
    background: rgba(255, 255, 255, 0.6);
    backdrop-filter: blur(24px) saturate(180%);
    -webkit-backdrop-filter: blur(24px) saturate(180%);
    border-bottom: 1px solid var(--color-border);
}

/* Without backdrop-filter the bar would be translucent text over live content, so it goes opaque. */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    .marketing-bar[b-s8t6t4yehh] {
        background: var(--color-surface);
    }
}

.marketing-bar-inner[b-s8t6t4yehh] {
    display: flex;
    align-items: center;
    gap: 2.25rem;
    width: 100%;
    max-width: var(--shell);
    height: var(--bar-height);
    margin: 0 auto;
    padding: 0 var(--gutter);
    box-sizing: border-box;
}

.marketing-brand[b-s8t6t4yehh] {
    color: var(--color-ink);
    text-decoration: none;
    --brand-accent: var(--color-brand-accent);
}

.marketing-nav[b-s8t6t4yehh] {
    display: flex;
    gap: 1.5rem;
}

.marketing-menu[b-s8t6t4yehh] {
    display: none;
    position: relative;
}

.marketing-menu summary[b-s8t6t4yehh] {
    display: flex;
    align-items: center;
    min-width: 44px;
    min-height: 44px;
    color: var(--color-home-copy);
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
}

.marketing-menu nav[b-s8t6t4yehh] {
    position: absolute;
    top: 2.75rem;
    right: 0;
    display: grid;
    min-width: 14rem;
    padding: 0.6rem;
    border: 1px solid var(--color-border);
    background: var(--color-surface);
    box-shadow: var(--shadow-md);
}

.marketing-menu[b-s8t6t4yehh]  a {
    display: flex;
    align-items: center;
    min-height: 44px;
    box-sizing: border-box;
    padding: 0.55rem 0.65rem;
    color: var(--color-home-copy);
    font-size: 0.85rem;
    text-decoration: none;
}

.marketing-nav[b-s8t6t4yehh]  a {
    position: relative;
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0.15rem 0;
    color: var(--color-home-copy);
    font-size: 0.85rem;
    text-decoration: none;
}

.marketing-nav[b-s8t6t4yehh]  a:hover {
    color: var(--color-brand);
}

.marketing-nav[b-s8t6t4yehh]  a:hover::after {
    content: "";
    position: absolute;
    inset: auto 0 0.55rem 0;
    height: 1px;
    background: var(--color-brand-accent);
}

.marketing-actions[b-s8t6t4yehh] {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    margin-left: auto;
}

.marketing-cta[b-s8t6t4yehh] {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    box-sizing: border-box;
    gap: 0.35rem;
    padding: 0.45rem 0.95rem;
    border: 1px solid var(--color-brand);
    background: var(--color-brand);
    color: #fff;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}

.marketing-cta:hover[b-s8t6t4yehh] {
    background: var(--color-brand-hover);
    border-color: var(--color-brand-hover);
}

main[b-s8t6t4yehh] {
    flex: 1;
    min-width: 0;
}

/* Footer ------------------------------------------------------------------- */

.marketing-footer[b-s8t6t4yehh] {
    margin-top: 4rem;
    padding: 3rem 0 2rem;
    border-top: 3px solid var(--color-ink-surface);
    background: var(--color-surface-muted);
}

.marketing-footer-inner[b-s8t6t4yehh] {
    display: grid;
    grid-template-columns: minmax(240px, 1fr) 2fr;
    gap: 2.5rem;
    max-width: var(--shell);
    margin: 0 auto;
    padding: 0 var(--gutter);
    box-sizing: border-box;
}

.footer-brand[b-s8t6t4yehh] {
    --brand-accent: var(--color-brand-accent);
}

.footer-brand p[b-s8t6t4yehh] {
    max-width: 34ch;
    margin: 1rem 0 0;
    color: var(--color-home-copy);
    font-size: 0.88rem;
    line-height: 1.65;
}

.footer-links[b-s8t6t4yehh] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(150px, 100%), 1fr));
    gap: 1.75rem;
}

.footer-links h2[b-s8t6t4yehh] {
    margin: 0 0 0.75rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid var(--color-border);
    color: var(--color-muted);
    font-family: var(--font-body);
    font-size: 0.67rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.footer-links[b-s8t6t4yehh]  a {
    display: block;
    margin-bottom: 0.5rem;
    color: var(--color-home-copy);
    font-size: 0.87rem;
    text-decoration: none;
}

.footer-links[b-s8t6t4yehh]  a:hover {
    color: var(--color-brand-accent);
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

.footer-note[b-s8t6t4yehh] {
    max-width: var(--shell);
    margin: 2.5rem auto 0;
    padding: 1.5rem var(--gutter) 0;
    border-top: 1px solid var(--color-border);
    box-sizing: border-box;
    color: var(--color-muted);
    font-size: 0.8rem;
    line-height: 1.6;
}

.footer-note a[b-s8t6t4yehh] {
    color: var(--color-brand-accent);
}

@media (max-width: 900px) {
    .marketing-nav[b-s8t6t4yehh] {
        display: none;
    }

    .marketing-menu[b-s8t6t4yehh] {
        display: block;
    }
}

@media (max-width: 640px) {
    .marketing-menu[b-s8t6t4yehh] {
        margin-left: auto;
    }

    .marketing-actions[b-s8t6t4yehh] {
        margin-left: 0;
    }
}

/* At 320px the wordmark, the gutter and a full-width action do not fit together. The action is
   what the bar is for, so the arrow and some padding go rather than the label or the brand. */
@media (max-width: 420px) {
    .marketing-bar-inner[b-s8t6t4yehh] {
        gap: 0.75rem;
        padding: 0 0.85rem;
    }

    .marketing-cta[b-s8t6t4yehh] {
        padding: 0.4rem 0.65rem;
        font-size: 0.8rem;
    }

    .marketing-footer-inner[b-s8t6t4yehh] {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 350px) {
    .marketing-brand[b-s8t6t4yehh]  .brand-name {
        display: none;
    }
}
/* /Pages/Demand.razor.rz.scp.css */
/* Bar 2: the input tabs and the region and period controls, above the heading. */
.input-bar[b-j7zde8luk8] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 24px;
    margin: 0 0 16px;
    padding: 6px 0;
    border-bottom: 1px solid var(--rule);
}

.input-bar-controls[b-j7zde8luk8] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
}

/* Details folds for notes and provenance, closed until opened. */
.input-fold[b-j7zde8luk8],
.input-fold dd[b-j7zde8luk8],
.input-fold li[b-j7zde8luk8],
.input-fold summary[b-j7zde8luk8] {
    min-width: 0;
    overflow-wrap: anywhere;
}

.input-source-files[b-j7zde8luk8] {
    max-width: 100%;
    padding-left: 18px;
}
.input-fold > summary[b-j7zde8luk8] {
    min-height: 44px;
    display: flex;
    align-items: center;
    color: var(--muted);
    cursor: pointer;
}

@media (max-width: 640px) {
    .input-bar[b-j7zde8luk8],
    .input-bar-controls[b-j7zde8luk8] {
        flex-direction: column;
        align-items: stretch;
    }

    .input-bar-controls[b-j7zde8luk8] {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
    }

    .input-bar-controls > .input-bar-segments[b-j7zde8luk8] {
        grid-column: 1 / -1;
    }

    .input-bar-controls[b-j7zde8luk8]  :is(select, input) {
        width: 100%;
        min-width: 0;
        max-width: 100%;
    }

    .input-bar-controls[b-j7zde8luk8]  .run-control {
        flex-direction: column;
        align-items: stretch;
        min-width: 0;
    }
 the selectors and fill the width. */
    .input-bar-segments[b-j7zde8luk8] {
        order: -1;
    }

    .input-bar-segments .window-buttons[b-j7zde8luk8] {
        display: flex;
    }

    .input-bar-segments .window-buttons button[b-j7zde8luk8] {
        flex: 1 1 0;
    }
}

.window-buttons button[b-j7zde8luk8] {
    min-height: 44px;
}

/* Caption lines run left-aligned, one after another, not as justified columns. */
.input-caption[b-j7zde8luk8] {
    display: block;
    text-align: left;
}
/* /Pages/Generation.razor.rz.scp.css */
/* Bar 2: the input tabs and the fleet filters, above the heading. */
.input-bar[b-u8zmdtw68v] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 24px;
    margin: 0 0 16px;
    padding: 6px 0;
    border-bottom: 1px solid var(--rule);
}

.input-bar-controls[b-u8zmdtw68v] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
}

/* Details folds for the source note and provenance, closed until opened. */
.input-fold > summary[b-u8zmdtw68v] {
    min-height: 44px;
    display: flex;
    align-items: center;
    color: var(--muted);
    cursor: pointer;
}

@media (max-width: 640px) {
    .input-bar[b-u8zmdtw68v],
    .input-bar-controls[b-u8zmdtw68v] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Pages/Home.razor.rz.scp.css */
.home-page[b-lndnhndtxd] {
    --accent: var(--color-brand);
    --code-syntax: #c51b63;
    --shell: 1180px;
    --gutter: clamp(1.25rem, 4vw, 3rem);
    color: var(--color-ink);
}

.shell[b-lndnhndtxd] {
    width: 100%;
    max-width: var(--shell);
    margin: 0 auto;
    padding: 0 var(--gutter);
    box-sizing: border-box;
}

.section[b-lndnhndtxd] {
    padding: clamp(3.5rem, 7vw, 6rem) 0;
    border-top: 1px solid var(--color-border);
    scroll-margin-top: 4.25rem;
}

.eyebrow[b-lndnhndtxd] {
    margin: 0 0 0.6rem;
    color: var(--accent);
    font-size: var(--type-eyebrow);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.section-heading[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
    margin-bottom: clamp(2rem, 5vw, 3.5rem);
}

.section-heading .eyebrow[b-lndnhndtxd] {
    grid-column: 1 / -1;
    margin-bottom: 0;
}

.section-heading h2[b-lndnhndtxd] {
    max-width: none;
    text-wrap: pretty;
    margin: 0;
    font-family: var(--font-display);
    font-size: clamp(1.8rem, 4vw, 3rem);
    font-weight: 600;
    letter-spacing: -0.025em;
    line-height: 1.08;
}

.section-heading > p:not(.eyebrow)[b-lndnhndtxd] {
    max-width: none;
    margin: 0;
    padding-top: 0.25rem;
    color: var(--color-home-copy);
    font-size: 1.0625rem;
    line-height: 1.6;
}

.button-primary[b-lndnhndtxd],
.button-secondary[b-lndnhndtxd] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 0.78rem 1.1rem;
    border: 1px solid transparent;
    font-weight: 700;
    text-decoration: none;
}

.button-primary[b-lndnhndtxd] {
    border-color: var(--color-on-ink-accent);
    background: var(--color-on-ink-accent);
    color: var(--color-ink-surface);
}

.button-primary:hover[b-lndnhndtxd] {
    border-color: #f0b264;
    background: #f0b264;
}

.button-secondary[b-lndnhndtxd] {
    border-color: rgba(255, 255, 255, 0.72);
    color: #fff;
}

.button-secondary:hover[b-lndnhndtxd] {
    border-color: #fff;
    background: rgba(255, 255, 255, 0.12);
}

.hero[b-lndnhndtxd] {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(1.75rem, 7vw, 6rem) 0 clamp(2rem, 6vw, 5rem);
    background: var(--color-ink-surface);
    color: #fff;
}

.hero-banner[b-lndnhndtxd],
.hero-banner[b-lndnhndtxd]::after,
.hero[b-lndnhndtxd]::after {
    position: absolute;
    inset: 0;
}

.hero-banner[b-lndnhndtxd] {
    z-index: -2;
    background: #eec489;
    isolation: isolate;
}

.hero-banner img[b-lndnhndtxd] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 38%;
    transform: scaleX(-1);
    filter: grayscale(1) contrast(1.06);
    mix-blend-mode: multiply;
}

.hero-banner[b-lndnhndtxd]::after {
    content: "";
    background: var(--color-ink-surface);
    mix-blend-mode: lighten;
}

.hero[b-lndnhndtxd]::after {
    z-index: -1;
    content: "";
    background: linear-gradient(96deg, rgba(20, 27, 45, 0.94) 0%, rgba(20, 27, 45, 0.9) 50%, rgba(20, 27, 45, 0.55) 100%);
}

.hero .eyebrow[b-lndnhndtxd] {
    color: var(--color-on-ink-accent);
}

.hero h1[b-lndnhndtxd] {
    max-width: 22ch;
    margin: 0;
    font-family: var(--font-display);
    font-size: clamp(2rem, 6vw, 4.4rem);
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1.04;
    text-wrap: balance;
}

.lead[b-lndnhndtxd] {
    max-width: 60ch;
    margin: 1rem 0 0;
    color: #fff;
    font-size: 1.0625rem;
    line-height: 1.55;
}

.lead a[b-lndnhndtxd] {
    color: #fff;
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-decoration-thickness: 2px;
    text-underline-offset: 0.18em;
}

.lead a:hover[b-lndnhndtxd] {
    color: #f0b264;
}

.hero-audience[b-lndnhndtxd] {
    max-width: 60ch;
    margin: 0.9rem 0 0;
    color: rgba(255, 255, 255, 0.9);
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.55;
}

.visually-hidden[b-lndnhndtxd] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.hero-actions[b-lndnhndtxd] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.5rem;
}

.capability-points[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem clamp(2rem, 5vw, 4rem);
    margin: 0;
    padding: 0;
    list-style: none;
}

.capability-points li[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: 2.5rem minmax(0, 1fr);
    gap: 0 1rem;
    align-items: start;
    max-width: 60ch;
    color: var(--color-home-copy);
    font-size: 1rem;
    line-height: 1.6;
}

.capability-points[b-lndnhndtxd]  .capability-icon {
    box-sizing: border-box;
    width: 2.5rem;
    height: 2.5rem;
    padding: 0.5rem;
    border-radius: 0.5rem;
    background: var(--color-brand-accent-soft);
    color: var(--color-brand-accent);
}

.capability-points strong[b-lndnhndtxd] {
    display: block;
    color: var(--color-ink);
    font-family: var(--font-display);
    font-size: 1.125rem;
}

.capability-points a[b-lndnhndtxd] {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: var(--accent);
    text-underline-offset: 0.16em;
}

.capability-limit[b-lndnhndtxd] {
    max-width: none;
    margin: 2rem 0 0;
    color: var(--color-muted);
    font-size: 1rem;
    line-height: 1.6;
}

#run-times[b-lndnhndtxd] {
    scroll-margin-top: 5rem;
}

.fine-print[b-lndnhndtxd] {
    max-width: none;
    margin: 1rem 0 0;
    color: var(--color-muted);
    font-size: 0.8125rem;
    line-height: 1.5;
}

.why-now-section[b-lndnhndtxd] {
    background: var(--color-surface-muted);
}

.why-now-copy[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem clamp(2rem, 5vw, 4rem);
}

.why-now-copy p[b-lndnhndtxd] {
    margin: 0;
    color: var(--color-home-copy);
    font-size: 1.0625rem;
    line-height: 1.6;
}

.why-now-copy strong[b-lndnhndtxd] {
    color: var(--color-ink);
}

.why-now-copy .why-now-sources[b-lndnhndtxd] {
    grid-column: 1 / -1;
    margin: 0.5rem 0 0;
    color: var(--color-muted);
    font-size: 0.875rem;
    line-height: 1.6;
}

.why-now-sources a[b-lndnhndtxd] {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 0.16em;
}

.fit-rows[b-lndnhndtxd] {
    display: grid;
    gap: 1.25rem;
}

/* Each path is a lane; the steps sit on one rail, read left to right. */
.fit-row[b-lndnhndtxd] {
    padding: 1.5rem 1.75rem 1.75rem;
    border: 1px solid var(--color-border);
    border-radius: 0.75rem;
    background: var(--color-surface-muted);
}

.fit-row-with[b-lndnhndtxd] {
    border-color: var(--color-on-ink-accent);
    background: var(--color-surface);
    box-shadow: 0 10px 30px -18px rgba(20, 27, 45, 0.35);
}

.fit-row h3[b-lndnhndtxd] {
    margin: 0 0 1.25rem;
    color: var(--color-muted);
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.fit-row-with h3[b-lndnhndtxd] {
    color: var(--color-brand-accent);
}

.fit-chain[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.fit-chain li[b-lndnhndtxd] {
    position: relative;
    display: grid;
    justify-items: center;
    text-align: center;
    align-content: start;
    gap: 0.75rem;
    color: var(--color-ink);
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.4;
}

.fit-step-icon[b-lndnhndtxd] {
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    box-sizing: border-box;
    width: 2.75rem;
    height: 2.75rem;
    border: 2px solid var(--color-border-strong);
    border-radius: 50%;
    background: var(--color-surface);
    color: var(--color-muted);
}

.fit-row-with .fit-step-icon[b-lndnhndtxd] {
    border-color: var(--color-on-ink-accent);
    color: var(--color-brand-accent);
}

.fit-chain .fit-sweep .fit-step-icon[b-lndnhndtxd] {
    border-color: var(--color-on-ink-accent);
    background: var(--color-on-ink-accent);
    box-shadow: 0 0 0 5px var(--color-brand-accent-soft);
    color: var(--color-ink);
}

.fit-chain .fit-study .fit-step-icon[b-lndnhndtxd] {
    border-color: var(--color-brand);
    background: var(--color-brand);
    color: #fff;
}

.fit-row:not(.fit-row-with) .fit-step-label[b-lndnhndtxd] {
    color: var(--color-home-copy);
}

/* The rail: from the right of one step's icon to the next step's icon, with a chevron at the end. */
.fit-chain li:not(:last-child)[b-lndnhndtxd]::before {
    content: "";
    position: absolute;
    top: calc(1.375rem - 1px);
    left: calc(50% + 1.875rem);
    right: calc(-50% + 0.625rem);
    height: 2px;
    background: var(--color-border-strong);
}

.fit-chain li:not(:last-child)[b-lndnhndtxd]::after {
    content: "";
    position: absolute;
    top: calc(1.375rem - 0.3rem);
    right: calc(-50% + 0.625rem);
    width: 0.6rem;
    height: 0.6rem;
    border-top: 2px solid var(--color-border-strong);
    border-right: 2px solid var(--color-border-strong);
    transform: rotate(45deg);
}

.fit-row-with .fit-chain li:not(:last-child)[b-lndnhndtxd]::before {
    background: var(--color-on-ink-accent);
}

.fit-row-with .fit-chain li:not(:last-child)[b-lndnhndtxd]::after {
    border-color: var(--color-on-ink-accent);
}

.fit-note[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem clamp(2rem, 5vw, 4rem);
    align-items: start;
    margin-top: 2.5rem;
}

.fit-after[b-lndnhndtxd] {
    max-width: 62ch;
    margin: 0;
    color: var(--color-home-copy);
    font-size: 1.0625rem;
    line-height: 1.6;
}

.fit-source[b-lndnhndtxd] {
    max-width: 62ch;
    margin: 0;
    padding-top: 0.2rem;
    color: var(--color-muted);
    font-size: 0.875rem;
    line-height: 1.6;
}

.fit-source a[b-lndnhndtxd] {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 0.16em;
}

@media (max-width: 900px) {
    .fit-row[b-lndnhndtxd] {
        padding: 1.25rem 1.25rem 1.5rem;
    }

    .fit-chain[b-lndnhndtxd] {
        grid-template-columns: 1fr;
        gap: 1.75rem;
    }

    .fit-chain li[b-lndnhndtxd] {
        grid-template-columns: 2.75rem minmax(0, 1fr);
        justify-items: start;
        text-align: left;
        align-items: center;
        gap: 0 1rem;
    }

    .fit-chain li:not(:last-child)[b-lndnhndtxd]::before {
        top: 3rem;
        bottom: -1.5rem;
        left: calc(1.375rem - 1px);
        right: auto;
        width: 2px;
        height: auto;
    }

    .fit-chain li:not(:last-child)[b-lndnhndtxd]::after {
        top: auto;
        bottom: -1.5rem;
        left: calc(1.375rem - 0.3rem);
        right: auto;
        transform: rotate(135deg);
    }
}

.proof-section[b-lndnhndtxd] {
    border-top: 3px solid var(--color-brand);
}

.proof-action[b-lndnhndtxd] {
    margin: 2rem 0 0;
}

.onboarding-section[b-lndnhndtxd] {
    border-top: 1px solid var(--color-border);
}

.run-methods[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

.run-method-sr-only[b-lndnhndtxd],
.run-method-input[b-lndnhndtxd] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

.run-method-label[b-lndnhndtxd] {
    min-width: 0;
    padding: 1.1rem 1.4rem;
    border: 1px solid var(--color-border);
    border-bottom: 3px solid transparent;
    border-radius: 0.5rem 0 0 0;
    background: var(--color-surface-muted);
    color: var(--color-ink);
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
}

#run-dotnet + .run-method-label[b-lndnhndtxd] {
    border-left: 0;
    border-radius: 0 0.5rem 0 0;
}

.run-method-label span[b-lndnhndtxd] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    font-weight: 400;
}

.run-method-input:checked + .run-method-label[b-lndnhndtxd] {
    border-bottom-color: var(--color-on-ink-accent);
    background: var(--color-brand);
    color: #fff;
}

.run-method-input:focus-visible + .run-method-label[b-lndnhndtxd] {
    outline: 3px solid var(--color-brand-accent);
    outline-offset: -4px;
}

@media (forced-colors: active) {
    .run-method-input:checked + .run-method-label[b-lndnhndtxd] {
        border-bottom-color: Highlight;
        outline: 2px solid Highlight;
        outline-offset: -6px;
    }

    .run-method-input:focus-visible + .run-method-label[b-lndnhndtxd] {
        outline: 3px solid CanvasText;
        outline-offset: 2px;
    }
}

.run-method-panel[b-lndnhndtxd] {
    grid-column: 1 / -1;
    min-width: 0;
    padding: 1.75rem;
    border: 1px solid var(--color-border);
    border-top: 0;
    border-radius: 0 0 0.5rem 0.5rem;
}

#run-docker:checked ~ .run-dotnet-panel[b-lndnhndtxd],
#run-dotnet:checked ~ .run-docker-panel[b-lndnhndtxd] {
    display: none;
}

.run-requirement[b-lndnhndtxd] {
    margin: 0 0 1.75rem;
    color: var(--color-home-copy);
}

.run-method-note[b-lndnhndtxd] {
    margin: 1.75rem 0 0;
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border);
    color: var(--color-home-copy);
    font-size: 0.875rem;
    line-height: 1.7;
}

.run-steps[b-lndnhndtxd] {
    display: grid;
    gap: 1.75rem;
    max-width: none;
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: run-step;
}

.run-steps li[b-lndnhndtxd] {
    position: relative;
    min-width: 0;
    padding-left: 3rem;
    counter-increment: run-step;
}

.run-steps li[b-lndnhndtxd]::before {
    content: counter(run-step);
    position: absolute;
    top: 0;
    left: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border: 1.5px solid var(--color-ink);
    border-radius: 50%;
    color: var(--color-ink);
    font-weight: 700;
}

.run-steps h3[b-lndnhndtxd] {
    margin: 0.2rem 0 0.5rem;
    font-family: var(--font-display);
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.3;
}

.run-steps p[b-lndnhndtxd] {
    max-width: none;
    margin: 0 0 0.5rem;
    color: var(--color-home-copy);
    font-size: 1.0625rem;
    line-height: 1.6;
}

.run-steps p a[b-lndnhndtxd],
.run-requirement a[b-lndnhndtxd],
.run-method-note a[b-lndnhndtxd],
.run-note a[b-lndnhndtxd],
.contact-offer > p a[b-lndnhndtxd] {
    color: var(--color-ink);
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-underline-offset: 0.16em;
}

.run-steps pre[b-lndnhndtxd] {
    max-width: 100%;
    margin: 0.5rem 0 0;
    padding: 0.8rem 1rem;
    overflow-x: auto;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    border: 1px solid #c9bda9;
    background: #fffdf9;
    color: var(--color-ink);
    font-size: 0.9375rem;
    line-height: 1.6;
}

.run-steps pre code[b-lndnhndtxd] {
    color: var(--code-syntax);
}

.run-note[b-lndnhndtxd] {
    max-width: none;
    margin: 2rem 0 0;
    color: var(--color-home-copy);
    font-size: 1.0625rem;
    line-height: 1.6;
}

.run-links[b-lndnhndtxd] {
    display: flex;
    flex-wrap: wrap;
    gap: 0 2rem;
    margin: 1rem 0 0;
}

.run-links a[b-lndnhndtxd] {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    color: var(--color-ink);
    font-weight: 600;
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-decoration-thickness: 2px;
    text-underline-offset: 0.18em;
}

.contact-section[b-lndnhndtxd] {
    background: var(--color-surface-muted);
}

.contact-content h2[b-lndnhndtxd] {
    max-width: none;
    text-wrap: pretty;
    margin: 0;
    font-family: var(--font-display);
    font-size: clamp(1.8rem, 4vw, 3rem);
    font-weight: 600;
    letter-spacing: -0.025em;
    line-height: 1.08;
}

.contact-body[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2rem clamp(2rem, 5vw, 4rem);
    align-items: start;
    margin-top: 2rem;
}

.contact-offer > p[b-lndnhndtxd] {
    max-width: 62ch;
    margin: 0;
    color: var(--color-home-copy);
    font-size: 1.0625rem;
    line-height: 1.6;
}

.services[b-lndnhndtxd] {
    max-width: 62ch;
    margin: 0.75rem 0 0;
    padding-left: 1.25rem;
    color: var(--color-home-copy);
    font-size: 1.0625rem;
    line-height: 1.6;
}

.services li + li[b-lndnhndtxd] {
    margin-top: 0.35rem;
}

.contact-routes[b-lndnhndtxd] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem;
}

.contact-route[b-lndnhndtxd] {
    min-width: 0;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border-strong);
}

.contact-route-primary[b-lndnhndtxd] {
    border-top: 3px solid var(--color-on-ink-accent);
}

.contact-route h3[b-lndnhndtxd] {
    margin: 0;
    color: var(--color-ink);
    font-size: 1.0625rem;
    font-weight: 700;
    line-height: 1.4;
}

.contact-action[b-lndnhndtxd] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 48px;
    box-sizing: border-box;
    margin-top: 1rem;
    padding: 0.78rem 1.1rem;
    border: 1px solid var(--color-ink-surface);
    background: var(--color-ink-surface);
    color: #fff;
    font-weight: 700;
    text-decoration: none;
}

.contact-action:hover[b-lndnhndtxd] {
    border-color: var(--color-brand-hover);
    background: var(--color-brand-hover);
}

.contact-secondary[b-lndnhndtxd] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 44px;
    margin-top: 1rem;
    color: var(--color-ink);
    font-weight: 700;
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-decoration-thickness: 2px;
    text-underline-offset: 0.18em;
}

@supports not (mix-blend-mode: multiply) {
    .hero-banner img[b-lndnhndtxd] {
        opacity: 0.55;
    }
}

@media (max-width: 760px) {
    .run-method-label[b-lndnhndtxd] {
        padding: 0.9rem 0.75rem;
    }

    .run-method-panel[b-lndnhndtxd] {
        padding: 1.4rem 1rem;
    }

    .run-steps li[b-lndnhndtxd] {
        padding-left: 2.4rem;
    }

    .run-steps pre[b-lndnhndtxd] {
        padding: 0.75rem;
        font-size: 0.8125rem;
    }

    .why-now-copy[b-lndnhndtxd],
    .fit-note[b-lndnhndtxd],
    .contact-body[b-lndnhndtxd] {
        grid-template-columns: 1fr;
    }

    .section-heading[b-lndnhndtxd] {
        grid-template-columns: 1fr;
    }

    .section-heading[b-lndnhndtxd] {
        gap: 0.9rem;
    }

    .section-heading > p:not(.eyebrow)[b-lndnhndtxd] {
        padding-top: 0;
    }

    .capability-points[b-lndnhndtxd],
    .contact-routes[b-lndnhndtxd] {
        grid-template-columns: 1fr;
    }

    .hero[b-lndnhndtxd]::after {
        background: rgba(20, 27, 45, 0.9);
    }

    .contact-action[b-lndnhndtxd],
    .contact-secondary[b-lndnhndtxd] {
        width: 100%;
        box-sizing: border-box;
    }
}

@media (max-width: 420px) {
    .hero[b-lndnhndtxd] {
        padding-top: 1.25rem;
    }

    .hero-actions a[b-lndnhndtxd] {
        width: 100%;
        min-height: 3rem;
        box-sizing: border-box;
    }
}

/* Run it yourself: text runs the same width as the command boxes. */
#run .section-heading > p:not(.eyebrow)[b-lndnhndtxd] {
    max-width: none;
}

#run .section-heading a[b-lndnhndtxd] {
    color: var(--color-ink);
    text-decoration: underline;
    text-decoration-color: var(--color-on-ink-accent);
    text-underline-offset: 0.16em;
}

@media (prefers-reduced-motion: no-preference) {
    .home-page[b-lndnhndtxd] {
        animation: home-fade-in-b-lndnhndtxd 0.6s ease-out both;
    }

    @keyframes home-fade-in-b-lndnhndtxd {
        from {
            opacity: 0;
            transform: translateY(0.5rem);
        }

        to {
            opacity: 1;
            transform: translateY(0);
        }
    }
}
/* /Pages/NotFound.razor.rz.scp.css */
/* Marketing 404 keeps its own look; the viewer's 404 takes the Instrument error pattern. */
.not-found-page[b-puoo4qiyy4] {
    --accent: var(--color-ink);
    --page-header-title-size: 2rem;
    max-width: 960px;
    margin: 0 auto;
    padding: 1.5rem 1.25rem 3rem;
}

.not-found-page[b-puoo4qiyy4]  .page-header h1 {
    line-height: 1.2;
}

.not-found-page > p[b-puoo4qiyy4] {
    margin: 1.25rem 0;
    color: var(--color-muted);
}

.recovery-links[b-puoo4qiyy4],
.recovery-actions[b-puoo4qiyy4] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 1.25rem;
}

.recovery-links a[b-puoo4qiyy4],
.recovery-actions a[b-puoo4qiyy4] {
    color: var(--color-ink);
    font-size: 0.9rem;
}

.recovery-actions .free-action[b-puoo4qiyy4] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.55rem 0.85rem;
    border-radius: 4px;
    background: var(--color-ink);
    color: #fff;
    font-weight: 600;
    text-decoration: none;
}

.viewer-not-found[b-puoo4qiyy4] {
    margin: 0;
    padding: 10px 0;
    border-top: 2px solid var(--missed);
}

.viewer-not-found h2[b-puoo4qiyy4] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.viewer-not-found .status-request[b-puoo4qiyy4] {
    margin: 0 0 8px;
    color: var(--muted);
    font: 11.5px/1.5 var(--font-mono);
    overflow-wrap: anywhere;
}
/* /Pages/Sweep.razor.rz.scp.css */
.sweep-page[b-f0ugj82a15] {
    --accent: var(--color-ink);
    --accent-soft: var(--color-surface-muted);
    --page-header-title-size: 1.375rem;
    color: var(--color-ink);
}

.status-block[b-f0ugj82a15] {
    display: grid;
    min-height: 420px;
    place-items: center;
}

.sweep-results-control[b-f0ugj82a15] {
    flex: 0 0 auto;
    width: auto;
    min-width: 0;
    max-width: 100%;
}

.sweep-page[b-f0ugj82a15]  .region-select {
    width: 100%;
}

/* The title block keeps a readable measure and the results control drops below it when the two
   no longer fit side by side, rather than squeezing the title onto two lines and the scope text
   into a narrow column beside a floating select. */
.sweep-page[b-f0ugj82a15]  .page-header {
    flex-wrap: wrap;
    row-gap: 1rem;
}

.sweep-page[b-f0ugj82a15]  .page-header > div:first-child {
    flex: 1 1 30rem;
    min-width: 0;
}

.sweep-page[b-f0ugj82a15]  .page-header h1 {
    line-height: 1.2;
    overflow-wrap: anywhere;
}

@media (max-width: 760px) {
    .sweep-results-control[b-f0ugj82a15] {
        flex-basis: auto;
        width: 100%;
        gap: 0.5rem;
    }

    /* The header stacks into a column here, where a 30rem basis would become a 30rem height. */
    .sweep-page[b-f0ugj82a15]  .page-header > div:first-child {
        flex: 0 0 auto;
    }

    /* The question is long, so it is set smaller on a phone: the outcome and the chart should start
       on the first screen, not under four lines of title. */
    .sweep-page[b-f0ugj82a15] {
        --page-header-title-size: 1.125rem;
    }

    .sweep-page[b-f0ugj82a15]  .page-header {
        gap: 0.6rem;
        padding-bottom: 0.9rem;
    }
}

/* The scope select sits beside the title on a wide screen and under it on a narrow one. */
.sweep-results-control[b-f0ugj82a15] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.sweep-results-control label[b-f0ugj82a15] {
    color: var(--color-muted);
    font-size: 0.78rem;
    font-weight: 700;
}

.sweep-results-control select[b-f0ugj82a15] {
    flex: 1 1 auto;
    width: 12rem;
    min-width: 0;
    max-width: 100%;
    min-height: 36px;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--color-border-control);
    border-radius: 4px;
    background: var(--color-surface);
    color: var(--color-ink);
    font: inherit;
}

/* One mono meta line under the title, as wide as the header allows. */
.sweep-page[b-f0ugj82a15]  .sweep-scope {
    max-width: none;
}

/* The sections below the first screen hold their place until they are drawn, so nothing shifts. */
.below-fold[b-f0ugj82a15] {
    min-height: 60rem;
}

.sweep-page[b-f0ugj82a15]  .scroll-reveal-target {
    scroll-margin-top: 1rem;
}

/* The limit of what the sweep can say, one sentence between the strip and the figure. */
.sweep-limit-sentence[b-f0ugj82a15] {
    margin: 0.75rem 0 1rem;
    max-width: 46rem;
    font-size: 0.95rem;
    line-height: 1.5;
}

/* Lower sections: every measure and region stays, folded closed under quiet one-line summaries. */
.sweep-fold[b-f0ugj82a15] {
    border-top: 1px solid var(--rule, #dfe2e6);
    padding: 0.5rem 0;
}

.sweep-fold > summary[b-f0ugj82a15] {
    cursor: pointer;
    min-height: 24px;
    font-size: 0.9rem;
    font-weight: 600;
}

.sweep-page[b-f0ugj82a15]  select {
    border-radius: 0;
}

.sweep-derived[b-f0ugj82a15] {
    margin: 0.75rem 0 0;
    display: grid;
    gap: 0.35rem;
    font-size: 0.85rem;
}

.sweep-derived div[b-f0ugj82a15] {
    display: flex;
    gap: 0.75rem;
    justify-content: space-between;
}

.sweep-derived dt[b-f0ugj82a15] {
    color: var(--color-ink-muted, #59616c);
}

.sweep-derived dd[b-f0ugj82a15] {
    margin: 0;
    font-family: var(--font-mono, monospace);
}
/* /Pages/SweepAssumptions.razor.rz.scp.css */
/* Assumptions (mock 4b): a title with a mono source line and two actions at its right, one control
   row between an ink rule and a light one, then settings as compact tables in two columns. */
.assumptions-view[b-7dxhdy3ri8] {
    display: flex;
    flex-direction: column;
    gap: 18px;
    min-width: 0;
}

/* Title and source line on the left; raw JSON and the CSV at the right, on the title's baseline. */
.assumptions-view[b-7dxhdy3ri8]  .assumptions-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 8px 24px;
}

.assumptions-view[b-7dxhdy3ri8]  .assumptions-header .page-header {
    flex: 1 1 360px;
    min-width: 0;
    padding: 0;
    margin: 0;
    border: 0;
}

.assumptions-view[b-7dxhdy3ri8]  .assumptions-header .page-header h1 {
    margin: 0 0 4px;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-source {
    margin: 0;
    color: var(--muted);
    font: 12px/1.5 var(--font-mono);
    overflow-wrap: anywhere;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-downloads {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
    min-width: 0;
    max-width: 100%;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-links,
.assumptions-view[b-7dxhdy3ri8]  .assumption-downloads .table-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 14px;
    margin: 0;
    font-size: 13px;
}

/* The raw file is an action, so it is drawn as a button beside the CSV one. */
.assumptions-view[b-7dxhdy3ri8]  .assumption-raw {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 2px 10px;
    border: 1px solid var(--control-border);
    background: var(--raised);
    color: var(--ink);
    text-decoration: none;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-raw:hover {
    background: var(--header);
}

/* One control row: inline labels, the counts at its end in mono. */
.assumptions-view[b-7dxhdy3ri8]  .assumption-controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 20px;
    margin: 0;
    padding: 10px 0;
    border-top: 1px solid var(--ink);
    border-bottom: 1px solid var(--rule);
    font-size: 13px;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-controls .run-control {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-controls .run-control > label {
    color: var(--muted);
    font-size: 13px;
    letter-spacing: 0;
    text-transform: none;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-controls select {
    font-family: var(--font-mono);
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-find input {
    width: 200px;
    max-width: 100%;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-toggles {
    display: flex;
    flex-wrap: wrap;
    gap: 0 20px;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-toggles label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 24px;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-counts {
    margin: 0 0 0 auto;
    color: var(--muted);
    font: 13px/1.4 var(--font-mono);
    white-space: nowrap;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-counts strong {
    color: var(--ink);
    font-weight: 400;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-filter-note {
    flex-basis: 100%;
    margin: 0;
}

/* Settings: two columns of compact tables. Wide tables and the folds take the full width. */
.assumptions-view[b-7dxhdy3ri8]  .assumptions-body {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px 48px;
    align-items: start;
}

.assumptions-view[b-7dxhdy3ri8]  .assumptions-body > * {
    grid-column: 1 / -1;
    min-width: 0;
    margin-top: 0;
}

.assumptions-view[b-7dxhdy3ri8]  .assumptions-body > .assumption-section:has(> .setting-table),
.assumptions-view[b-7dxhdy3ri8]  .assumptions-body > #differences {
    grid-column: auto;
}

.assumptions-view[b-7dxhdy3ri8]  .assumptions-body > .run-section:not(.assumption-section) {
    order: 5;
}

/* The region folds: one heading over a tight list of closed folds, each a 13px summary row. */
.assumptions-view[b-7dxhdy3ri8]  .assumption-regions > .assumption-group {
    margin: 0 0 4px;
    padding-top: 0;
    border-top: 0;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-regions > .region-assumptions {
    padding: 6px 0;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-regions > .region-assumptions[open] {
    padding-bottom: 16px;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-section > :is(h2, h3) {
    margin: 0 0 6px;
}

/* A settings table: the same grammar as every table in the viewer (ink rule, grey heading row,
   13px rows, numbers right-aligned in mono), drawn on the list of terms and values. */
.assumptions-view[b-7dxhdy3ri8]  .setting-table {
    --setting-columns: minmax(0, 1fr) minmax(90px, 150px) minmax(70px, 110px);
    min-width: 0;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-table.is-compared {
    --setting-columns: minmax(0, 1fr) minmax(90px, 150px) minmax(90px, 150px) minmax(70px, 110px);
}

.assumptions-view[b-7dxhdy3ri8]  :is(.setting-head, .setting-row) {
    display: grid;
    grid-template-columns: var(--setting-columns);
    gap: 0 12px;
    align-items: baseline;
    padding: 3px 8px;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-head {
    padding-block: 5px;
    border-top: 1px solid var(--ink);
    background: var(--header);
    color: var(--secondary);
    font: 600 11px/1.3 var(--font-body);
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-head > span:nth-child(n + 2):not(:last-child) {
    text-align: right;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-list {
    margin: 0;
    padding: 0;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-row {
    border-bottom: 1px solid var(--row-rule);
    font-size: 12.5px;
    line-height: 1.35;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-row:hover {
    background: var(--row-hover);
}

.assumptions-view[b-7dxhdy3ri8]  .setting-row.is-changed {
    background: var(--selected);
}

.assumptions-view[b-7dxhdy3ri8]  .setting-row > dt {
    min-width: 0;
    color: var(--secondary);
    font-weight: 400;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-row > dd {
    min-width: 0;
    margin: 0;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-value {
    text-align: right;
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums lining-nums;
    overflow-wrap: anywhere;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-row.is-changed .setting-value.is-compared {
    font-weight: 600;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-unit {
    color: var(--muted);
    font: 11.5px/1.35 var(--font-mono);
}

/* The changed badge and the description are for a screen reader: on screen the row's tint and
   weight carry the difference, and the description is the row's tooltip. */
.assumptions-view[b-7dxhdy3ri8]  :is(.setting-row .config-changed, .setting-row > .setting-description) {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-field {
    grid-column: 1 / -1;
}

.assumptions-view[b-7dxhdy3ri8]  .setting-field code {
    color: var(--muted);
    font: 11px/1.4 var(--font-mono);
    overflow-wrap: anywhere;
}

.assumptions-view[b-7dxhdy3ri8]  .assumption-section .caveat {
    margin: 8px 0 0;
}

/* The section links are a quiet closed fold; the shared index inside it is the plain open list. */
.page-index[b-7dxhdy3ri8] {
    border-top: 1px solid var(--rule);
    padding-top: 12px;
}

.page-index > summary[b-7dxhdy3ri8] {
    min-height: 24px;
    cursor: pointer;
}

.page-index-count[b-7dxhdy3ri8] {
    color: var(--muted);
    font-family: var(--font-mono);
}

.assumption-none[b-7dxhdy3ri8] {
    margin: 0;
    padding: 10px 0;
    border-top: 1px solid var(--ink);
    border-bottom: 1px solid var(--rule);
}

@media (max-width: 900px) {
    .assumptions-view[b-7dxhdy3ri8]  .assumptions-body {
        grid-template-columns: minmax(0, 1fr);
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumptions-body > .assumption-section:has(> .setting-table),
    .assumptions-view[b-7dxhdy3ri8]  .assumptions-body > #differences {
        grid-column: 1 / -1;
    }
}

/* A phone (mock 4f): stacked controls at 44px, and each setting as two lines, the name over
   "p0 value · p10 value unit". */
@media (max-width: 640px) {
    .assumptions-view[b-7dxhdy3ri8]  .assumptions-header,
    .assumptions-view[b-7dxhdy3ri8]  .assumptions-header .page-header {
        flex: 0 0 auto;
        width: 100%;
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-downloads a {
        min-height: 44px;
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-controls {
        gap: 8px;
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-controls .run-control {
        flex: 1 1 calc(50% - 4px);
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-controls .run-control > label:not(.visually-hidden) {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-controls .run-control > :is(select, input) {
        width: 100%;
        min-width: 0;
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-find {
        flex-basis: 100%;
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-find input {
        width: 100%;
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-toggles label {
        min-height: 44px;
    }

    .assumptions-view[b-7dxhdy3ri8]  .assumption-counts {
        margin-left: auto;
        font-size: 12px;
    }

    .assumptions-view[b-7dxhdy3ri8]  .setting-head {
        display: none;
    }

    .assumptions-view[b-7dxhdy3ri8]  .setting-list {
        border-top: 1px solid var(--ink);
    }

    .assumptions-view[b-7dxhdy3ri8]  .setting-row {
        display: flex;
        flex-wrap: wrap;
        align-items: baseline;
        gap: 2px 6px;
        padding: 6px 0;
    }

    .assumptions-view[b-7dxhdy3ri8]  .setting-row > dt {
        flex-basis: 100%;
    }

    .assumptions-view[b-7dxhdy3ri8]  .setting-value {
        text-align: left;
        font-size: 12px;
    }

    .assumptions-view[b-7dxhdy3ri8]  .setting-table.is-compared .setting-value:not(.is-compared)::after {
        content: " ·";
        color: var(--muted);
    }
}

/* The differences table names its settings on the left, so its first heading sits there too. */
.assumptions-view[b-7dxhdy3ri8]  .diff-table thead th:first-child {
    text-align: left;
}
/* /Pages/SweepResults.razor.rz.scp.css */
/* Results page composition. Gutters, controls, table and action styling come from the viewer layout. */
.results-view[b-l03nyswuc4] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-width: 0;
}

/* One compact block: title, one-line scope and basis on the left, the CSV downloads on the right. */
.results-view[b-l03nyswuc4]  .page-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 8px 24px;
    padding: 0;
    margin: 0;
    border: 0;
}

.results-view[b-l03nyswuc4]  .page-header > div:first-child {
    flex: 1 1 360px;
    min-width: 0;
}

.results-view[b-l03nyswuc4]  .page-header > .table-actions {
    flex: 0 0 auto;
    margin: 0;
    flex-wrap: wrap;
}

.results-view[b-l03nyswuc4]  .page-header .eyebrow,
.results-view[b-l03nyswuc4]  .page-header h1,
.results-view[b-l03nyswuc4]  .page-header p {
    margin: 0;
}

.results-lead[b-l03nyswuc4],
.results-view[b-l03nyswuc4]  .page-header .sweep-scope,
.results-view[b-l03nyswuc4]  .page-header .weather-basis {
    font: 400 12px/1.5 var(--font-mono);
}

.results-view[b-l03nyswuc4]  .results-controls {
    margin: 0;
}

.results-none[b-l03nyswuc4] {
    margin: 0;
    padding: 10px 0;
    border-top: 1px solid #14181f;
    border-bottom: 1px solid #dfe2e6;
}

@media (max-width: 640px) {
    /* A column header's 360 px basis would become a 360 px height here, so it is reset. */
    .results-view[b-l03nyswuc4]  .page-header {
        flex-direction: column;
        align-items: stretch;
        gap: 8px;
    }

    .results-view[b-l03nyswuc4]  .page-header > div:first-child {
        flex: 0 0 auto;
    }

    .results-view[b-l03nyswuc4]  .page-header > .table-actions {
        flex: 0 0 auto;
        flex-direction: row;
        flex-wrap: wrap;
        align-self: stretch;
        width: 100%;
        gap: 8px;
    }

    .results-view[b-l03nyswuc4]  .page-header > .table-actions > * {
        flex: 1 1 0;
        min-width: 0;
        white-space: normal;
        justify-content: center;
        text-align: center;
    }

    @media (max-width: 640px) {
        .results-view[b-l03nyswuc4]  .results-sort-summary { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    }
}

.results-about > summary[b-l03nyswuc4] {
    min-height: 24px;
    cursor: pointer;
    font: 400 12px/1.5 var(--font-mono);
}
/* /Pages/Weather.razor.rz.scp.css */
/* Bar 2: the input tabs and the region and period controls, above the heading. */
.input-bar[b-5s8ftholfs] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px 24px;
    margin: 0 0 16px;
    padding: 6px 0;
    border-bottom: 1px solid var(--rule);
}

.input-bar-controls[b-5s8ftholfs] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 16px;
}

.window-buttons button[b-5s8ftholfs] {
    min-height: 44px;
}

/* Details folds for the basis, sites and provenance, closed until opened. */
.input-fold > summary[b-5s8ftholfs] {
    min-height: 44px;
    display: flex;
    align-items: center;
    color: var(--muted);
    cursor: pointer;
}

@media (max-width: 640px) {
    .input-bar[b-5s8ftholfs],
    .input-bar-controls[b-5s8ftholfs] {
        flex-direction: column;
        align-items: stretch;
    }

    .input-bar-segments[b-5s8ftholfs] {
        order: -1;
    }

    .input-bar-segments .window-buttons[b-5s8ftholfs] {
        display: flex;
    }

    .input-bar-segments .window-buttons button[b-5s8ftholfs] {
        flex: 1 1 0;
    }
}
/* The six weather charts sit three across on a wide screen, two on a tablet and one on a phone, as the target lays them out. */
.input-traces[b-5s8ftholfs] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px 32px;
    align-items: start;
}

.input-traces > *[b-5s8ftholfs] {
    min-width: 0;
}

@media (max-width: 1100px) {
    .input-traces[b-5s8ftholfs] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .input-traces[b-5s8ftholfs] {
        grid-template-columns: minmax(0, 1fr);
        gap: 12px;
    }
}
