/* /Components/Pages/ApplicableRules.razor.rz.scp.css */
.lesson-counts[b-fr1yeces5i] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
}

.lesson-count[b-fr1yeces5i] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    background: var(--surface-2);
    border: 1px solid var(--border);
    border-radius: var(--radius);
}

.lesson-count__label[b-fr1yeces5i] {
    text-transform: capitalize;
}
/* /Components/Pages/Backlog.razor.rz.scp.css */
/* The kanban board: four columns side-by-side on wide screens, stacking on narrow ones. Scoped to Backlog.razor. */
.kanban-board[b-38wf4ftqdz] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
    align-items: start;
}

@media (max-width: 900px) {
    .kanban-board[b-38wf4ftqdz] {
        grid-template-columns: 1fr;
    }
}

.kanban-column[b-38wf4ftqdz] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    background: var(--surface-2, rgba(0, 0, 0, 0.03));
    border-radius: var(--radius);
    padding: 0.75rem;
    min-width: 0;
}

.kanban-column__header[b-38wf4ftqdz] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-weight: 600;
}

.kanban-empty[b-38wf4ftqdz],
.kanban-more[b-38wf4ftqdz] {
    margin: 0.25rem 0 0;
    font-size: 0.85rem;
}

.kanban-card[b-38wf4ftqdz] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.6rem 0.7rem;
    background: var(--surface-1, #fff);
    border: 1px solid var(--border, rgba(0, 0, 0, 0.12));
    border-radius: var(--radius-sm);
    text-decoration: none;
    color: inherit;
}

.kanban-card:hover[b-38wf4ftqdz],
.kanban-card:focus-visible[b-38wf4ftqdz] {
    border-color: var(--accent, #3b82f6);
    outline: none;
}

.kanban-card__title[b-38wf4ftqdz] {
    font-weight: 500;
    word-break: break-word;
}

.kanban-card__meta[b-38wf4ftqdz] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.85rem;
}

.kanban-card__owner[b-38wf4ftqdz] {
    font-size: 0.75rem;
    word-break: break-all;
}
/* /Components/Pages/BuildSessionDetail.razor.rz.scp.css */
/*
    A PR whose url did not parse falls back to showing the URL ITSELF as the link text, which is deliberate — a link
    this system could not read must stay visible and fixable rather than hide behind a placeholder. The cost is that
    the text is then an arbitrary-length unbroken token, and a long one pushed the card into horizontal overflow.

    Found by rendering the block against the real stylesheet and LOOKING at it; the bUnit tests were green
    throughout, because markup assertions cannot see a layout break.

    `anywhere` rather than `break-all`: it only breaks a token that would otherwise overflow, so `#412 on GitHub ·
    o/r` keeps wrapping at its spaces and reads normally.
*/
.produced-links[b-rbsl0tholj] {
    overflow-wrap: anywhere;
}
/* /Components/Pages/Connections.razor.rz.scp.css */
/* Layout only. Every tone comes from app.css's .pill family, so the two authentication paths, the four states and
   the three activity bands share the dashboard's one status vocabulary rather than growing a private one here. */
.connection__tags[b-uhp8jquogv] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-top: var(--space-2);
}
/* /Components/Pages/Flow.razor.rz.scp.css */
/* Window-summary tiles (mirrors Usage.razor.css) + inline-SVG chart styling. Scoped to Flow.razor. */
.stat-grid[b-xvn3xf3hqn] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 0.75rem;
}

.stat[b-xvn3xf3hqn] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0.75rem 0.85rem;
    background: var(--surface-2, rgba(0, 0, 0, 0.03));
    border: 1px solid var(--border, rgba(0, 0, 0, 0.12));
    border-radius: var(--radius);
    min-width: 0;
}

.stat__label[b-xvn3xf3hqn] {
    font-size: 0.8rem;
    color: var(--text-muted, #6b7280);
}

.stat__value[b-xvn3xf3hqn] {
    font-size: 1.25rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

/* Charts scroll horizontally on narrow viewports rather than forcing the page to. */
.chart[b-xvn3xf3hqn] {
    margin: 0;
    overflow-x: auto;
}

.chart svg[b-xvn3xf3hqn] {
    display: block;
    width: 100%;
    min-width: 320px;
    height: auto;
}

.chart__legend[b-xvn3xf3hqn] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    margin-top: 0.5rem;
    font-size: 0.8rem;
}

.key[b-xvn3xf3hqn] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: var(--text-muted, #6b7280);
}

.key[b-xvn3xf3hqn]::before {
    content: "";
    width: 0.75rem;
    height: 0.75rem;
    border-radius: var(--radius-xs);
    background: currentColor;
}

.key--arrived[b-xvn3xf3hqn] { color: var(--chart-arrived, #2563eb); }
.key--done[b-xvn3xf3hqn] { color: var(--chart-resolved, #16a34a); }
.key--wip[b-xvn3xf3hqn] { color: var(--chart-wip, #f59e0b); }
.key--median[b-xvn3xf3hqn] { color: var(--chart-resolved, #16a34a); }
.key--p85[b-xvn3xf3hqn] { color: var(--chart-p85, #dc2626); }

/* SVG marks — fills/strokes use theme variables with light-mode fallbacks. */
.axis[b-xvn3xf3hqn] { stroke: var(--border, rgba(0, 0, 0, 0.25)); stroke-width: 1; }
.tick[b-xvn3xf3hqn], .age-label[b-xvn3xf3hqn] { fill: var(--text-muted, #6b7280); font-size: 11px; }
.age-label[b-xvn3xf3hqn] { font-size: 12px; }

.cfd-wip[b-xvn3xf3hqn] { fill: var(--chart-wip, #f59e0b); fill-opacity: 0.28; }
.cfd-done[b-xvn3xf3hqn] { fill: var(--chart-resolved, #16a34a); fill-opacity: 0.30; }
.cfd-arrived-line[b-xvn3xf3hqn] { fill: none; stroke: var(--chart-arrived, #2563eb); stroke-width: 2; }
.cfd-resolved-line[b-xvn3xf3hqn] { fill: none; stroke: var(--chart-resolved, #16a34a); stroke-width: 2; }

.bar[b-xvn3xf3hqn] { fill: var(--chart-arrived, #2563eb); fill-opacity: 0.85; }
.bar--usage[b-xvn3xf3hqn] { fill: var(--chart-usage, #7c3aed); fill-opacity: 0.85; }

.age-bar[b-xvn3xf3hqn] { fill: var(--chart-wip, #f59e0b); fill-opacity: 0.55; }

.dot[b-xvn3xf3hqn] { fill: var(--chart-arrived, #2563eb); fill-opacity: 0.7; }

.ref-line[b-xvn3xf3hqn] { stroke-width: 1.5; stroke-dasharray: 5 4; }
.ref-line--median[b-xvn3xf3hqn] { stroke: var(--chart-resolved, #16a34a); }
.ref-line--p85[b-xvn3xf3hqn] { stroke: var(--chart-p85, #dc2626); }
/* /Components/Pages/Imports.razor.rz.scp.css */
.import-actions[b-w27morsp7j] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    align-items: center;
}

.import-file[b-w27morsp7j] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    align-items: center;
    margin-top: var(--space-2);
}

.import-subhead[b-w27morsp7j] {
    margin: var(--space-3) 0 var(--space-2);
    font-size: 1rem;
}

.import-titles[b-w27morsp7j],
.import-errors[b-w27morsp7j] {
    margin: 0;
    padding-left: var(--space-4);
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.import-errors[b-w27morsp7j] {
    color: var(--danger);
}

/* The supported-formats list (WP 2.6): one row per parser in the registry — the ledger it fills, its strategy id,
   and the convention it recognises. */
.import-formats__intro[b-w27morsp7j] {
    margin: 0 0 var(--space-3);
    color: var(--text-muted);
}

.import-formats[b-w27morsp7j] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--space-3);
}

.import-format[b-w27morsp7j] {
    display: grid;
    gap: var(--space-1);
    padding: var(--space-3);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--surface-2);
}

.import-format__head[b-w27morsp7j] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--space-2) var(--space-3);
}

.import-format__body[b-w27morsp7j] {
    margin: 0;
    font-size: var(--text-sm);
    color: var(--text-muted);
    overflow-wrap: anywhere;
}
/* /Components/Pages/LessonDetail.razor.rz.scp.css */
.tag-check[b-1na1vqo3qr] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

.observation[b-1na1vqo3qr] {
    padding: var(--space-3) 0;
    border-top: 1px solid var(--border);
}

.observation:first-of-type[b-1na1vqo3qr] {
    border-top: 0;
    padding-top: 0;
}

.observation__meta[b-1na1vqo3qr] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    margin-bottom: var(--space-1);
}

.btn-danger[b-1na1vqo3qr] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    font: inherit;
    font-weight: 600;
    padding: var(--space-2) var(--space-4);
    border-radius: var(--radius-sm);
    border: 1px solid var(--danger);
    background: var(--danger-surface);
    color: var(--danger);
    cursor: pointer;
}

.btn-danger:disabled[b-1na1vqo3qr] {
    opacity: 0.5;
    cursor: not-allowed;
}
/* /Components/Pages/Lessons.razor.rz.scp.css */
.tag-grid[b-f2mobla74x] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

.tag-check[b-f2mobla74x] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

.lesson-counts[b-f2mobla74x] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
}

.lesson-count[b-f2mobla74x] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
    background: var(--surface-2);
    border: 1px solid var(--border);
    border-radius: var(--radius);
}

.lesson-count__label[b-f2mobla74x] {
    text-transform: capitalize;
}
/* /Components/Pages/Plan.razor.rz.scp.css */
/* Plan-and-usage page (WP 4.2). Scoped to Plan.razor. Tokens only — no literal colours, so both themes follow. */

.plan-name[b-k6tt18zbyh] {
    font-size: 1.5rem;
    font-weight: 600;
    margin: 0;
}

/* The unmetered protocol surfaces. Deliberately a plain labelled list with a pill and NO bar, no percentage and no
   figure of any kind: the point of the card is that there is nothing to meter, and a bar would say the opposite. */
.unmetered[b-k6tt18zbyh] {
    list-style: none;
    margin: 0.5rem 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 0.4rem 0.75rem;
}

.unmetered__item[b-k6tt18zbyh] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.unmetered__label[b-k6tt18zbyh] {
    min-width: 0;
    word-break: break-word;
}

.allowances[b-k6tt18zbyh] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.allowance[b-k6tt18zbyh] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.85rem;
    background: var(--surface-2, rgba(0, 0, 0, 0.03));
    border: 1px solid var(--border, rgba(0, 0, 0, 0.12));
    border-radius: var(--radius);
    min-width: 0;
}

.allowance__head[b-k6tt18zbyh] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.allowance__label[b-k6tt18zbyh] {
    font-weight: 600;
}

.allowance__reading[b-k6tt18zbyh] {
    font-size: 1.25rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    margin: 0;
    word-break: break-word;
}

.allowance__note[b-k6tt18zbyh] {
    margin: 0;
    font-size: 0.85rem;
    color: var(--text-muted, #6b7280);
}

/* The meter renders ONLY for a bounded allowance (the markup omits it otherwise). The fill is a 0..1 fraction on a
   custom property rather than a width percentage, so the page never has to write a round number into markup that a
   plan allowance could one day collide with. */
.meter[b-k6tt18zbyh] {
    height: 0.5rem;
    border-radius: var(--radius);
    background: var(--surface-3, rgba(0, 0, 0, 0.08));
    overflow: hidden;
}

.meter__fill[b-k6tt18zbyh] {
    display: block;
    height: 100%;
    width: 100%;
    background: var(--accent, #4f46e5);
    transform: scaleX(var(--fill, 0));
    transform-origin: left center;
}

@media (prefers-reduced-motion: no-preference) {
    .meter__fill[b-k6tt18zbyh] {
        transition: transform 200ms ease-out;
    }
}
/* /Components/Pages/RuleDetail.razor.rz.scp.css */
.tag-check[b-ddaqi5bqfm] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

.btn-danger[b-ddaqi5bqfm] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    font: inherit;
    font-weight: 600;
    padding: var(--space-2) var(--space-4);
    border-radius: var(--radius-sm);
    border: 1px solid var(--danger);
    background: var(--danger-surface);
    color: var(--danger);
    cursor: pointer;
}

.btn-danger:disabled[b-ddaqi5bqfm] {
    opacity: 0.5;
    cursor: not-allowed;
}
/* /Components/Pages/Usage.razor.rz.scp.css */
/* Usage totals as a responsive grid of stat tiles; right-align the numeric breakdown columns. Scoped to Usage.razor. */
.stat-grid[b-vhrx5cwnqv] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 0.75rem;
}

.stat[b-vhrx5cwnqv] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0.75rem 0.85rem;
    background: var(--surface-2, rgba(0, 0, 0, 0.03));
    border: 1px solid var(--border, rgba(0, 0, 0, 0.12));
    border-radius: var(--radius);
    min-width: 0;
}

.stat__label[b-vhrx5cwnqv] {
    font-size: 0.8rem;
    color: var(--text-muted, #6b7280);
}

.stat__value[b-vhrx5cwnqv] {
    font-size: 1.25rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    word-break: break-word;
}

.num[b-vhrx5cwnqv] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* /Components/Pages/WorkspaceTransparency.razor.rz.scp.css */
/* The §15 public-transparency control. Scoped to WorkspaceTransparency.razor. Tokens only — no literal colours, so
   both themes follow. */

.state-name[b-qei7gl8kce] {
    font-size: 1.5rem;
    font-weight: 600;
    margin: 0;
}

/* The disclosure. A plain, unstyled, always-visible list: every sentence carries equal weight, nothing is collapsed
   behind a toggle, and nothing is de-emphasised — a disclosure whose least convenient sentence is the small one is
   not a disclosure. */
.disclosure[b-qei7gl8kce] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.disclosure__item[b-qei7gl8kce] {
    padding: 0.85rem;
    background: var(--surface-2, rgba(0, 0, 0, 0.03));
    border: 1px solid var(--border, rgba(0, 0, 0, 0.12));
    border-radius: var(--radius);
    min-width: 0;
    word-break: break-word;
}

.ack[b-qei7gl8kce] {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    margin: 0.5rem 0 1rem;
    cursor: pointer;
}

.ack__box[b-qei7gl8kce] {
    margin-top: 0.2rem;
    flex: none;
}

.ack__label[b-qei7gl8kce] {
    min-width: 0;
}
