/* /Components/Cal/AnniversaryEventDialog.razor.rz.scp.css */
/* AnniversaryEventDialog -- custom event dialog for anniversary events */

.slm-anniv-embedded-host[b-z46qvvn7qy] {
    display: contents;
}
/* /Components/Cal/AppointmentEventDialog.razor.rz.scp.css */
/* AppointmentEventDialog -- custom event dialog for medical/dental/service appointments */

/* Embedded host: transparent passthrough -- no overlay, no centering, fills parent. */
.slm-appt-embedded-host[b-xb09o90hss] {
    display: contents;
}

.slm-appt-dialog-overlay[b-xb09o90hss] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
}

.slm-appt-dialog[b-xb09o90hss] {
    background: var(--v2-surface, #fff);
    border: 1px solid var(--v2-border, #ddd);
    border-radius: 6px;
    box-shadow: 0 8px 32px rgba(0,0,0,.18);
    display: flex;
    flex-direction: column;
    max-width: 560px;
    width: min(560px, calc(100vw - 48px));
    max-height: calc(100vh - 80px);
    overflow: hidden;
}

.slm-appt-dialog-header[b-xb09o90hss] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--v2-border, #ddd);
    background: var(--v2-panel-bg, #f5f5f5);
    flex-shrink: 0;
}

.slm-appt-dialog-title[b-xb09o90hss] {
    flex: 1;
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.slm-appt-dialog-body[b-xb09o90hss] {
    flex: 1;
    overflow-y: auto;
    padding: 12px 16px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.slm-appt-dialog-error[b-xb09o90hss] {
    color: var(--v2-danger, #c00);
    background: var(--v2-danger-bg, #fff0f0);
    border: 1px solid var(--v2-danger, #c00);
    border-radius: 4px;
    padding: 8px 12px;
    font-size: 13px;
    margin-bottom: 8px;
    white-space: pre-wrap;
}

.slm-appt-dialog-section[b-xb09o90hss] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.slm-appt-dialog-row[b-xb09o90hss] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    flex-wrap: wrap;
}

.slm-appt-dialog-footer[b-xb09o90hss] {
    padding: 8px 12px;
    border-top: 1px solid var(--v2-border, #ddd);
    background: var(--v2-panel-bg, #f5f5f5);
    flex-shrink: 0;
    font-size: 11px;
    color: var(--v2-text-muted, #6b6f73);
}
/* /Components/Cal/BirthdayEventDialog.razor.rz.scp.css */
/* BirthdayEventDialog -- custom event dialog for birthday events */

.slm-bday-embedded-host[b-7n2fdfne28] {
    display: contents;
}
/* /Components/Cal/DefaultEventDialog.razor.rz.scp.css */
/* DefaultEventDialog -- custom event dialog for default/general event types */

.slm-default-evt-embedded-host[b-4bic9vxdoq] {
    display: contents;
}

.slm-default-evt-title-field[b-4bic9vxdoq] {
    width: 100%;
}
/* /Components/Cal/EventRecurrenceEditor.razor.rz.scp.css */
/* EventRecurrenceEditor -- scoped styles.
   Structure:
     .slm-recur              outer container (column: band then day-row)
     .slm-recur__band        flex-wrap row; Field* are DIRECT children (no wrapper divs)
     .slm-recur__info-banner full-width italic info text (AnnualMonthDay)
     .slm-recur__planned-banner full-width warning strip (unimplemented modes)
     .slm-recur__day-row     full-width day-of-week checkbox strip below the band

   IMPORTANT: Field* components must be direct children of .slm-recur__band.
   Never wrap them in an intermediate div -- matches the DFormV3Dialog pattern. */

/* ── Outer container ────────────────────────────────────────────────────── */

.slm-recur[b-j3lr3ciult] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 8px 12px;
    border: 1px solid var(--v2-border, #ddd);
    border-radius: 5px;
    background: var(--v2-panel-bg, #f8f8f8);
    margin-top: 2px;
}

/* ── Scalar band: Field* components as direct flex-wrap children ─────────── */

.slm-recur__band[b-j3lr3ciult] {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    gap: 0 14px;
    width: 100%;
}

/* ── Info text (AnnualMonthDay -- no extra params) ───────────────────────── */

.slm-recur__info-banner[b-j3lr3ciult] {
    flex-basis: 100%;
    font-size: 0.82rem;
    color: var(--v2-text-muted, #6b6f73);
    font-style: italic;
    padding: 2px 0;
}

/* ── Planned-mode warning banner ─────────────────────────────────────────── */

.slm-recur__planned-banner[b-j3lr3ciult] {
    flex-basis: 100%;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 6px;
    font-size: 0.82rem;
    color: var(--v2-warning-text, #7a5800);
    background: var(--v2-warning-bg, #fff8e1);
    border: 1px solid var(--v2-warning-border, #ffe082);
    border-radius: 4px;
    padding: 5px 8px;
    margin-bottom: 4px;
}

.slm-recur__planned-icon[b-j3lr3ciult] {
    flex-shrink: 0;
    font-size: 0.9rem;
}

/* ── Day-of-week row -- always full width, below the band ───────────────── */

.slm-recur__day-row[b-j3lr3ciult] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.slm-recur__day-label[b-j3lr3ciult] {
    font-size: 0.78rem;
    color: var(--v2-text-muted, #6b6f73);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.slm-recur__day-checks[b-j3lr3ciult] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 10px;
}

/* Pass 4: widen the Repeat mode dropdown ~1.5x so labels like
   "Monthly (by Nth weekday)" don't truncate. */
.slm-recur__repeat-mode[b-j3lr3ciult]  .field-v3,
.slm-recur__repeat-mode[b-j3lr3ciult] {
    min-width: 18rem;
}
/* /Components/Cal/HolidayEditDialog.razor.rz.scp.css */
/* HolidayEditDialog -- minimal styling.
   The dialog leans on the shared slm-dialog-* and slm-dform-* utility classes
   (see UIStylingDesign.md / DialogDesign.md) so this file only adds layout
   helpers specific to the holiday edit form.

   Note (per AI_INSTRUCTIONS.md "CSS workflow reminder"): scoped CSS does not
   reliably hot-reload; use Ctrl+F5 after editing. */

.slm-hed-embedded-host[b-xbohncom6r] {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

.slm-hed-row[b-xbohncom6r] {
    display: flex;
    flex-flow: row wrap;
    gap: 8px;
    align-items: flex-end;
    margin-top: 4px;
}

.slm-hed-row > *[b-xbohncom6r] {
    flex: 0 1 auto;
    min-width: 8rem;
}

.slm-hed-hint[b-xbohncom6r] {
    font-size: 11px;
    color: var(--v2-text-muted, #6b6f73);
    font-style: italic;
    margin: 2px 0 8px 4px;
}
/* /Components/Cal/MeetingEventDialog.razor.rz.scp.css */
/* MeetingEventDialog -- custom event dialog for meetings */

/* Embedded host: transparent passthrough -- no overlay, no centering, fills parent. */
.slm-mtg-embedded-host[b-48uu6c2gmc] {
    display: contents;
}

.slm-mtg-title-field[b-48uu6c2gmc] {
    width: 100%;
}
/* /Components/Cal/NewEventWizard.razor.rz.scp.css */
/* NewEventWizard.razor.css -- scoped overrides.
   The wizard chrome and tile styles live in SLMWizard.css (global).
   Only add rules here that are specific to the NewEventWizard tile content. */
/* /Components/Cal/OutOfOfficeEventDialog.razor.rz.scp.css */
/* OutOfOfficeEventDialog -- custom event dialog for out-of-office events */

.slm-ooo-embedded-host[b-s5onofnddk] {
    display: contents;
}
/* /Components/Layout/PortalLayout.razor.rz.scp.css */
.portal-layout[b-doja14qfta] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    background: #f5f5f5;
    font-family: inherit;
}

.portal-layout__header[b-doja14qfta] {
    background: #1a3a5c;
    color: #fff;
    padding: 0.75rem 1.5rem;
    display: flex;
    align-items: center;
}

.portal-layout__brand[b-doja14qfta] {
    font-size: 1.1rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.portal-layout__content[b-doja14qfta] {
    flex: 1;
    padding: 1.5rem;
    max-width: 1100px;
    width: 100%;
    margin: 0 auto;
}

.portal-layout__footer[b-doja14qfta] {
    background: #e0e0e0;
    color: #666;
    text-align: center;
    font-size: 0.78rem;
    padding: 0.5rem 1rem;
}
/* /Components/Pages/Admin/NewTenantCreateLogPage.razor.rz.scp.css */
.ntcl[b-26dtn8nb1p] {
    padding: 1rem 1.5rem;
    font-size: 0.875rem;
}

.ntcl__header[b-26dtn8nb1p] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1rem;
}

.ntcl__title[b-26dtn8nb1p] {
    margin: 0;
    font-size: 1.5rem;
}

.ntcl__refresh-btn[b-26dtn8nb1p] {
    padding: 0.3rem 0.9rem;
    font-size: 0.85rem;
    cursor: pointer;
    border: 1px solid #ccc;
    border-radius: 4px;
    background: #f5f5f5;
}

    .ntcl__refresh-btn:disabled[b-26dtn8nb1p] {
        opacity: 0.5;
        cursor: default;
    }

.ntcl__error[b-26dtn8nb1p] {
    background: #fde8e8;
    border: 1px solid #f5c6c6;
    border-radius: 4px;
    padding: 0.5rem 1rem;
    color: #a00;
    margin-bottom: 1rem;
}

.ntcl__status[b-26dtn8nb1p],
.ntcl__summary[b-26dtn8nb1p] {
    color: #666;
    margin-bottom: 0.75rem;
}

/* ── Run card ── */

.ntcl__run[b-26dtn8nb1p] {
    border: 1px solid #ddd;
    border-radius: 4px;
    margin-bottom: 0.5rem;
    overflow: hidden;
}

.ntcl__run-header[b-26dtn8nb1p] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.45rem 0.75rem;
    background: #f9f9f9;
    cursor: pointer;
    user-select: none;
}

    .ntcl__run-header:hover[b-26dtn8nb1p] {
        background: #f0f0f0;
    }

.ntcl__run--open .ntcl__run-header[b-26dtn8nb1p] {
    background: #e8f0fe;
    border-bottom: 1px solid #ddd;
}

.ntcl__run-toggle[b-26dtn8nb1p] {
    font-size: 0.7rem;
    width: 1rem;
    flex-shrink: 0;
}

.ntcl__run-id[b-26dtn8nb1p] {
    font-family: monospace;
    font-size: 0.8rem;
    color: #555;
    flex-shrink: 0;
}

.ntcl__run-tenant[b-26dtn8nb1p] {
    font-weight: 600;
    flex-shrink: 0;
}

.ntcl__run-email[b-26dtn8nb1p] {
    color: #333;
    flex-shrink: 0;
}

.ntcl__run-mode[b-26dtn8nb1p] {
    font-size: 0.75rem;
    font-weight: 700;
    padding: 0.1rem 0.45rem;
    border-radius: 3px;
    flex-shrink: 0;
}

.ntcl__badge--commit[b-26dtn8nb1p] {
    background: #d4edda;
    color: #155724;
}

.ntcl__badge--preview[b-26dtn8nb1p] {
    background: #fff3cd;
    color: #856404;
}

.ntcl__run-count[b-26dtn8nb1p] {
    color: #666;
    font-size: 0.8rem;
    flex-shrink: 0;
}

.ntcl__run-time[b-26dtn8nb1p] {
    color: #888;
    font-size: 0.78rem;
    font-family: monospace;
    margin-left: auto;
}

/* ── Step table ── */

.ntcl__steps[b-26dtn8nb1p] {
    padding: 0.5rem 0.75rem;
    overflow-x: auto;
}

.ntcl__table[b-26dtn8nb1p] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

    .ntcl__table th[b-26dtn8nb1p] {
        text-align: left;
        padding: 0.25rem 0.5rem;
        border-bottom: 2px solid #ddd;
        color: #555;
        font-weight: 600;
        white-space: nowrap;
    }

    .ntcl__table td[b-26dtn8nb1p] {
        padding: 0.2rem 0.5rem;
        border-bottom: 1px solid #f0f0f0;
        vertical-align: top;
    }

.ntcl__step-name[b-26dtn8nb1p] {
    font-family: monospace;
    font-weight: 600;
    white-space: nowrap;
    color: #333;
}

.ntcl__step-value[b-26dtn8nb1p] {
    font-family: monospace;
    font-size: 0.78rem;
    color: #666;
    max-width: 28rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ntcl__step-time[b-26dtn8nb1p] {
    font-family: monospace;
    font-size: 0.78rem;
    color: #999;
    white-space: nowrap;
}

.ntcl__row--warn td[b-26dtn8nb1p] {
    background: #fffbe6;
    color: #7a6000;
}
/* /Components/Pages/Cal/EventTypeDefaultsPage.razor.rz.scp.css */
/* EventTypeDefaultsPage.razor.css
 * Scoped styles intentionally minimal -- layout is handled via the inline <style> block
 * in the razor file (same pattern as EventTypePage.razor.css).
 */
/* /Components/Pages/Cal/EventTypePage.razor.rz.scp.css */
/*
 * EventTypePage.razor.css
 * Scoped styles for cal.EventTypePage.
 * Global/shared BEM styles are inlined in the .razor file (pattern from CalendarConfigurationPage).
 * This file is intentionally minimal -- layout tokens live in the razor <style> block.
 */
/* /Components/Pages/Dev/DocsReaderPage.razor.rz.scp.css */
/* ============================================================
   DocsReaderPage -- scoped styles (dr__ prefix)
   Moved from wwwroot/css/SLMDocsReader.css in #651 Phase 4.

   ::deep usage:
   - .dr__search-input: the class is passed via CssClass to a
     FieldV3Text child component, so its root element carries the
     child's scope attribute, not ours.
   - .dr__markdown *: the markdown is injected as @((MarkupString)...)
     so those inner elements never receive the Blazor scope attribute.
     All descendant rules inside .dr__markdown need ::deep so Blazor
     emits ".dr__markdown[b-xxx] <el>" (no scope attr on <el>).
   ============================================================ */

.dr[b-2hxdj2nyj9] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

/* -- Header -- */
.dr__header[b-2hxdj2nyj9] {
    display: flex;
    align-items: flex-end;
    gap: 1rem;
    padding: 0.5rem 1rem;
    border-bottom: 1px solid var(--border);
    flex: 0 0 auto;
}

.dr__header h1[b-2hxdj2nyj9] {
    margin: 0;
    font-size: 1.25rem;
    line-height: 2rem;
}

/* -- Error -- */
.dr__error[b-2hxdj2nyj9] {
    padding: 0.5rem 1rem;
    margin: 0.5rem 1rem;
    background: var(--danger-bg, #fdd);
    border: 1px solid var(--danger-border, #c00);
    border-radius: 4px;
    color: var(--danger-fg, #900);
    white-space: pre-wrap;
    font-size: 0.85rem;
}

/* -- Split pane -- */
.dr__split[b-2hxdj2nyj9] {
    display: flex;
    flex: 1 1 auto;
    overflow: hidden;
}

/* -- Left panel: file list -- */
.dr__list[b-2hxdj2nyj9] {
    display: flex;
    flex-direction: column;
    width: 280px;
    min-width: 220px;
    max-width: 360px;
    border-right: 1px solid var(--border);
    flex: 0 0 auto;
    overflow: hidden;
}

.dr__list-search[b-2hxdj2nyj9] {
    padding: 0.4rem 0.5rem;
    border-bottom: 1px solid var(--border);
    flex: 0 0 auto;
}

/* FieldV3Text child component renders the element with CssClass -- needs ::deep */
.dr__list-search[b-2hxdj2nyj9]  .dr__search-input {
    width: 100%;
}

.dr__list-scroll[b-2hxdj2nyj9] {
    flex: 1 1 0;
    overflow-y: auto;
    padding: 0.25rem 0;
}

.dr__file[b-2hxdj2nyj9] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.75rem;
    cursor: pointer;
    font-size: 0.85rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    border-left: 3px solid transparent;
}

.dr__file:hover[b-2hxdj2nyj9] {
    background: var(--hover-bg, rgba(0, 0, 0, 0.04));
}

.dr__file--selected[b-2hxdj2nyj9] {
    background: var(--selected-bg, rgba(0, 120, 212, 0.1));
    border-left-color: var(--accent, #0078d4);
    font-weight: 600;
}

.dr__file-icon[b-2hxdj2nyj9] {
    flex: 0 0 auto;
    font-size: 0.9rem;
    opacity: 0.6;
}

.dr__file-name[b-2hxdj2nyj9] {
    overflow: hidden;
    text-overflow: ellipsis;
}

.dr__empty[b-2hxdj2nyj9],
.dr__placeholder[b-2hxdj2nyj9] {
    padding: 1.5rem;
    text-align: center;
    opacity: 0.6;
    font-size: 0.9rem;
}

/* -- Right panel: rendered content -- */
.dr__content[b-2hxdj2nyj9] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    overflow: hidden;
}

.dr__content-header[b-2hxdj2nyj9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 1.25rem;
    border-bottom: 1px solid var(--border);
    flex: 0 0 auto;
}

.dr__content-header h2[b-2hxdj2nyj9] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    opacity: 0.7;
}

.dr__content-scroll[b-2hxdj2nyj9] {
    flex: 1 1 0;
    overflow-y: auto;
    padding: 1rem 1.5rem 3rem 1.5rem;
}

/* -- Pop-out overlay (fixed to viewport, covers entire screen) -- */
.dr__popout[b-2hxdj2nyj9] {
    position: fixed;
    top: var(--slm-overlay-top, 0px);
    left: 0;
    width: 100vw;
    height: calc(100vh - var(--slm-overlay-top, 0px));
    z-index: 10000;
    display: flex;
    flex-direction: column;
    background: var(--slm-color-surface, var(--bg, #fff));
}

.dr__popout-header[b-2hxdj2nyj9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 1.25rem;
    border-bottom: 1px solid var(--border);
    flex: 0 0 auto;
    background: var(--slm-color-surface, var(--bg, #fff));
}

.dr__popout-header h2[b-2hxdj2nyj9] {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 600;
    opacity: 0.8;
}

.dr__popout-scroll[b-2hxdj2nyj9] {
    flex: 1 1 0;
    overflow-y: auto;
    padding: 1rem 2rem 3rem 2rem;
}

/* ============================================================
   Markdown rendered HTML styling
   .dr__markdown is a direct Razor element (gets scope attr).
   Its CHILDREN are injected via @((MarkupString)...) and do NOT
   get the scope attribute -- all descendant rules use ::deep.
   ============================================================ */

.dr__markdown[b-2hxdj2nyj9] {
    line-height: 1.65;
    font-size: 0.92rem;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

/* Headings */
.dr__markdown[b-2hxdj2nyj9]  h1 {
    font-size: 1.6rem;
    font-weight: 700;
    margin: 1.5rem 0 0.75rem 0;
    padding-bottom: 0.3rem;
    border-bottom: 2px solid var(--border, #ddd);
}

.dr__markdown[b-2hxdj2nyj9]  h2 {
    font-size: 1.3rem;
    font-weight: 600;
    margin: 1.25rem 0 0.6rem 0;
    padding-bottom: 0.25rem;
    border-bottom: 1px solid var(--border, #ddd);
}

.dr__markdown[b-2hxdj2nyj9]  h3 {
    font-size: 1.1rem;
    font-weight: 600;
    margin: 1rem 0 0.5rem 0;
}

.dr__markdown[b-2hxdj2nyj9]  h4,
.dr__markdown[b-2hxdj2nyj9]  h5,
.dr__markdown[b-2hxdj2nyj9]  h6 {
    font-size: 1rem;
    font-weight: 600;
    margin: 0.8rem 0 0.4rem 0;
}

/* Paragraphs and spacing */
.dr__markdown[b-2hxdj2nyj9]  p {
    margin: 0.5rem 0;
}

/* Lists */
.dr__markdown[b-2hxdj2nyj9]  ul,
.dr__markdown[b-2hxdj2nyj9]  ol {
    margin: 0.4rem 0 0.4rem 1.5rem;
    padding: 0;
}

.dr__markdown[b-2hxdj2nyj9]  li {
    margin: 0.2rem 0;
}

.dr__markdown[b-2hxdj2nyj9]  li > ul,
.dr__markdown[b-2hxdj2nyj9]  li > ol {
    margin-top: 0.15rem;
    margin-bottom: 0.15rem;
}

/* Inline code */
.dr__markdown[b-2hxdj2nyj9]  code {
    background: var(--code-bg, rgba(0, 0, 0, 0.06));
    border-radius: 3px;
    padding: 0.15em 0.35em;
    font-size: 0.88em;
    font-family: Consolas, "Courier New", monospace;
}

/* Fenced code blocks */
.dr__markdown[b-2hxdj2nyj9]  pre {
    background: var(--code-bg, rgba(0, 0, 0, 0.06));
    border: 1px solid var(--border, #ddd);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    overflow-x: auto;
    margin: 0.6rem 0;
    font-size: 0.85rem;
    line-height: 1.5;
}

.dr__markdown[b-2hxdj2nyj9]  pre code {
    background: none;
    padding: 0;
    border-radius: 0;
    font-size: inherit;
}

/* Tables */
.dr__markdown[b-2hxdj2nyj9]  table {
    border-collapse: collapse;
    width: 100%;
    margin: 0.6rem 0;
    font-size: 0.88rem;
}

.dr__markdown[b-2hxdj2nyj9]  th,
.dr__markdown[b-2hxdj2nyj9]  td {
    border: 1px solid var(--border, #ccc);
    padding: 0.4rem 0.65rem;
    text-align: left;
    vertical-align: top;
}

.dr__markdown[b-2hxdj2nyj9]  th {
    background: var(--table-header-bg, rgba(0, 0, 0, 0.04));
    font-weight: 600;
}

.dr__markdown[b-2hxdj2nyj9]  tr:nth-child(even) {
    background: var(--table-stripe-bg, rgba(0, 0, 0, 0.015));
}

/* Blockquotes */
.dr__markdown[b-2hxdj2nyj9]  blockquote {
    margin: 0.6rem 0;
    padding: 0.5rem 1rem;
    border-left: 4px solid var(--accent, #0078d4);
    background: var(--blockquote-bg, rgba(0, 120, 212, 0.04));
    color: var(--fg, inherit);
}

.dr__markdown[b-2hxdj2nyj9]  blockquote p {
    margin: 0.25rem 0;
}

/* Horizontal rule */
.dr__markdown[b-2hxdj2nyj9]  hr {
    border: none;
    border-top: 1px solid var(--border, #ddd);
    margin: 1.25rem 0;
}

/* Links */
.dr__markdown[b-2hxdj2nyj9]  a {
    color: var(--accent, #0078d4);
    text-decoration: none;
}

.dr__markdown[b-2hxdj2nyj9]  a:hover {
    text-decoration: underline;
}

/* Images */
.dr__markdown[b-2hxdj2nyj9]  img {
    max-width: 100%;
    height: auto;
    border-radius: 4px;
}

/* Strong / em */
.dr__markdown[b-2hxdj2nyj9]  strong {
    font-weight: 700;
}

/* Task lists (Markdig advanced extensions) */
.dr__markdown[b-2hxdj2nyj9]  ul.contains-task-list {
    list-style: none;
    margin-left: 0;
    padding-left: 0;
}

.dr__markdown[b-2hxdj2nyj9]  .task-list-item {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
}

.dr__markdown[b-2hxdj2nyj9]  .task-list-item input[type="checkbox"] {
    margin-top: 0.3em;
    pointer-events: none;
}
/* /Components/Pages/Doc/DocumentViewerPage.razor.rz.scp.css */
/* ============================================================
   DocumentViewerPage -- scoped styles (dvw__ prefix)
   Moved from wwwroot/css/SLMDocumentViewer.css in #651 Phase 4.
   All elements are direct Razor-rendered; preview is in an
   iframe so no ::deep needed.
   ============================================================ */

.dvw[b-rsne8c8zc7] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.5rem;
    height: calc(100vh - 80px);
    overflow: hidden;
}

/* ── Header ── */
.dvw__header[b-rsne8c8zc7] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    flex-wrap: wrap;
    flex-shrink: 0;
}

.dvw__header h1[b-rsne8c8zc7] {
    margin: 0 0.5rem 0 0;
    font-size: 1.3rem;
}

/* ── Error ── */
.dvw__error[b-rsne8c8zc7] {
    color: var(--v2-danger, #c00);
    background: #fff5f5;
    border: 1px solid var(--v2-danger, #c00);
    padding: 0.5rem;
    border-radius: 4px;
    white-space: pre-wrap;
    font-size: 0.85rem;
    flex-shrink: 0;
}

/* ── Controls bar ── */
.dvw__controls[b-rsne8c8zc7] {
    display: flex;
    align-items: flex-end;
    gap: 0.5rem;
    flex-shrink: 0;
}

.dvw__search[b-rsne8c8zc7] {
    min-width: 200px;
    flex: 0 1 300px;
}

.dvw__category[b-rsne8c8zc7] {
    min-width: 180px;
    flex: 0 1 250px;
}

.dvw__count[b-rsne8c8zc7] {
    font-size: 0.8rem;
    color: var(--v2-text-muted, #999);
    padding-bottom: 4px;
}

/* ── Split pane ── */
.dvw__split[b-rsne8c8zc7] {
    display: flex;
    gap: 0.5rem;
    flex: 1;
    min-height: 0;
}

/* ── Left: Document list ── */
.dvw__list[b-rsne8c8zc7] {
    flex: 0 0 420px;
    min-width: 320px;
    max-width: 500px;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--v2-border, #ddd);
    border-radius: 4px;
    overflow: hidden;
}

.dvw__list-scroll[b-rsne8c8zc7] {
    flex: 1;
    overflow-y: auto;
}

.dvw__table[b-rsne8c8zc7] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.8rem;
    table-layout: fixed;
}

.dvw__th[b-rsne8c8zc7] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--v2-panel-bg, #f8f8f8);
    padding: 4px 6px;
    text-align: left;
    font-size: var(--slm-label-font-size, 0.75rem);
    font-weight: normal;
    color: var(--slm-label-color, #8B0000);
    border-bottom: 2px solid var(--v2-border, #ddd);
    white-space: nowrap;
}

.dvw__th--sortable[b-rsne8c8zc7] {
    cursor: pointer;
    user-select: none;
}

.dvw__th--sortable:hover[b-rsne8c8zc7] {
    color: var(--v2-accent, #2563eb);
}

.dvw__th--type[b-rsne8c8zc7] {
    width: 60px;
}

.dvw__th--size[b-rsne8c8zc7] {
    width: 80px;
}

.dvw__th--date[b-rsne8c8zc7] {
    width: 120px;
}

.dvw__td[b-rsne8c8zc7] {
    padding: 3px 6px;
    border-bottom: 1px solid var(--v2-border-light, #eee);
    vertical-align: middle;
    font-size: 0.8rem;
}

.dvw__td--ellipsis[b-rsne8c8zc7] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dvw__td--right[b-rsne8c8zc7] {
    text-align: right;
}

.dvw__td--date[b-rsne8c8zc7] {
    white-space: nowrap;
    font-size: 0.75rem;
    color: var(--v2-text-muted, #888);
}

.dvw__file-icon[b-rsne8c8zc7] {
    margin-right: 4px;
    color: var(--v2-text-muted, #888);
}

.dvw__row[b-rsne8c8zc7] {
    cursor: pointer;
}

.dvw__row:hover[b-rsne8c8zc7] {
    background: var(--v2-row-hover, #f0f4ff);
}

.dvw__row--selected[b-rsne8c8zc7] {
    background: var(--v2-row-selected, #dbeafe);
}

.dvw__row--selected:hover[b-rsne8c8zc7] {
    background: var(--v2-row-selected, #dbeafe);
}

/* ── Paging ── */
.dvw__paging[b-rsne8c8zc7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 4px 6px;
    border-top: 1px solid var(--v2-border, #ddd);
    font-size: 0.75rem;
    flex-shrink: 0;
}

.dvw__page-info[b-rsne8c8zc7] {
    color: var(--v2-text-muted, #999);
}

/* ── Right: Detail / preview ── */
.dvw__detail[b-rsne8c8zc7] {
    flex: 1;
    min-width: 0;
    border: 1px solid var(--v2-border, #ddd);
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.dvw__detail-scroll[b-rsne8c8zc7] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.dvw__detail-header[b-rsne8c8zc7] {
    padding: 0.75rem;
    border-bottom: 1px solid var(--v2-border, #ddd);
    flex-shrink: 0;
}

.dvw__detail-title[b-rsne8c8zc7] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.dvw__detail-title h2[b-rsne8c8zc7] {
    margin: 0;
    font-size: 1rem;
    line-height: 1.3;
}

.dvw__detail-filename[b-rsne8c8zc7] {
    font-size: 0.75rem;
    color: var(--v2-text-muted, #999);
}

.dvw__file-icon--lg[b-rsne8c8zc7] {
    font-size: 1.5rem;
    color: var(--v2-text-muted, #888);
    flex-shrink: 0;
    margin-top: 2px;
}

.dvw__detail-meta[b-rsne8c8zc7] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    font-size: 0.75rem;
    color: var(--v2-text-muted, #888);
}

.dvw__detail-actions[b-rsne8c8zc7] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

/* ── Preview area ── */
.dvw__preview[b-rsne8c8zc7] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 200px;
}

.dvw__preview-iframe[b-rsne8c8zc7] {
    flex: 1;
    width: 100%;
    border: none;
    background: #fff;
}

.dvw__preview-noview[b-rsne8c8zc7] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 2rem;
    text-align: center;
    color: var(--v2-text-muted, #999);
}

.dvw__noview-icon[b-rsne8c8zc7] {
    font-size: 3rem;
    color: var(--v2-text-muted, #ccc);
}

/* ── Utility ── */
.dvw__loading[b-rsne8c8zc7], .dvw__empty[b-rsne8c8zc7] {
    color: var(--v2-text-muted, #999);
    font-style: italic;
    padding: 1rem;
    text-align: center;
}
/* /Components/Pages/Idea/IdeasPage.razor.rz.scp.css */
/* ============================================================
   IdeasPage -- scoped styles (idea__ prefix)
   Moved from wwwroot/css/SLMIdeas.css in #651 Phase 4.
   All elements are direct Razor-rendered -- no ::deep needed.
   ============================================================ */

/* ── Layout ── */

.idea__[b-kgnnxc7fcg] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.5rem;
}

.idea__header[b-kgnnxc7fcg] {
    display: flex;
    align-items: flex-end;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.idea__header h1[b-kgnnxc7fcg] {
    margin: 0 0.5rem 0 0;
    font-size: 1.4rem;
    line-height: 2rem;
}

/* ── Error ── */

.idea__error[b-kgnnxc7fcg] {
    color: #c00;
    background: #fff5f5;
    border: 1px solid #c00;
    padding: 0.5rem;
    border-radius: 4px;
    white-space: pre-wrap;
    font-size: 0.9rem;
}

/* ── Loading / empty ── */

.idea__loading[b-kgnnxc7fcg], .idea__empty[b-kgnnxc7fcg] {
    color: var(--slm-muted, #999);
    font-style: italic;
    padding: 1rem 0;
}

/* ── Vote button ── */

.idea__vote-btn[b-kgnnxc7fcg] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 3px;
    cursor: pointer;
    color: var(--slm-muted, #999);
    transition: color 0.15s, background 0.15s;
}

.idea__vote-btn:hover[b-kgnnxc7fcg] {
    color: var(--slm-color-accent, #2563eb);
    background: color-mix(in srgb, var(--slm-color-accent, #2563eb) 12%, transparent 88%);
}

.idea__vote-btn--active[b-kgnnxc7fcg] {
    color: var(--slm-color-accent, #2563eb);
    font-weight: bold;
}

.idea__vote-btn--large[b-kgnnxc7fcg] {
    width: 2rem;
    height: 2rem;
    font-size: 1.1rem;
}

.idea__vote-score[b-kgnnxc7fcg] {
    font-weight: 600;
    color: var(--slm-color-text, #222);
    font-size: 0.9rem;
}

.idea__vote-score--large[b-kgnnxc7fcg] {
    font-size: 1.2rem;
}

.idea__voted-label[b-kgnnxc7fcg] {
    font-size: 0.8rem;
    color: var(--slm-color-accent, #2563eb);
    margin-left: 0.25rem;
}

.idea__vote-label[b-kgnnxc7fcg] {
    font-size: 0.85rem;
    color: var(--slm-muted, #888);
    margin-left: 0.15rem;
}

/* ── Detail panel ── */

.idea__detail[b-kgnnxc7fcg] {
    border: 1px solid var(--slm-color-border, #ddd);
    border-radius: 4px;
    padding: 1rem;
    background: var(--slm-color-surface, #fff);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.idea__detail-header h2[b-kgnnxc7fcg] {
    margin: 0 0 0.25rem 0;
    font-size: 1.2rem;
}

.idea__detail-meta[b-kgnnxc7fcg] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    font-size: 0.85rem;
}

.idea__detail-badge[b-kgnnxc7fcg] {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 10px;
    background: var(--slm-color-border, #e0e0e0);
    color: var(--slm-color-text, #333);
    font-size: 0.8rem;
}

.idea__detail-badge--status[b-kgnnxc7fcg] {
    background: color-mix(in srgb, var(--slm-color-accent, #2563eb) 15%, #f0f0f0 85%);
    color: var(--slm-color-accent, #2563eb);
}

.idea__detail-badge--schema[b-kgnnxc7fcg] {
    background: color-mix(in srgb, #8b5cf6 15%, #f0f0f0 85%);
    color: #7c3aed;
}

.idea__detail-badge--release[b-kgnnxc7fcg] {
    background: color-mix(in srgb, #22c55e 15%, #f0f0f0 85%);
    color: #16a34a;
}

.idea__detail-by[b-kgnnxc7fcg] {
    color: var(--slm-muted, #999);
}

.idea__detail-html[b-kgnnxc7fcg] {
    padding: 0.5rem;
    border: 1px solid var(--slm-color-border, #eee);
    border-radius: 4px;
    background: var(--slm-color-surface, #fafafa);
    font-size: 0.95rem;
    flex: 1 1 auto;
    min-width: 200px;
    margin-bottom: 0;
}

.idea__detail-content-row[b-kgnnxc7fcg] {
    display: flex;
    flex-flow: row wrap;
    gap: 0.75rem;
    align-items: flex-start;
}

.idea__detail-vote[b-kgnnxc7fcg] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 0 0 auto;
}

/* ── Admin actions ── */

.idea__admin-actions[b-kgnnxc7fcg] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem;
    padding: 0.5rem 0;
    border-top: 1px solid var(--slm-color-border, #eee);
}

/* ── Comments ── */

.idea__comments[b-kgnnxc7fcg] {
    padding-top: 0;
}

.idea__comments-header[b-kgnnxc7fcg] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.idea__comments-header h3[b-kgnnxc7fcg] {
    margin: 0;
    font-size: 1.0rem;
}

.idea__comment[b-kgnnxc7fcg] {
    display: flex;
    flex-flow: row wrap;
    align-items: baseline;
    gap: 0.5rem;
    padding: 0.25rem 0.5rem;
    font-size: 0.9rem;
}

.idea__comment--reply[b-kgnnxc7fcg] {
    margin-left: 1.5rem;
    border-left: 2px solid var(--slm-color-border, #ddd);
    padding-left: 0.75rem;
}

.idea__comment strong[b-kgnnxc7fcg] {
    color: var(--slm-color-text, #222);
    font-size: 0.85rem;
}

.idea__comment-date[b-kgnnxc7fcg] {
    color: var(--slm-muted, #999);
    font-size: 0.8rem;
}

.idea__comment-body[b-kgnnxc7fcg] {
    color: var(--slm-color-text, #333);
    font-size: 0.9rem;
}
/* /Components/Pages/Msg/EmailViewerPage.razor.rz.scp.css */
/* ============================================================
   EmailViewerPage -- scoped styles (evw__ prefix)
   Moved from wwwroot/css/SLMEmailViewer.css in #651 Phase 4.
   All elements are direct Razor-rendered; email body is in an
   iframe so no ::deep needed.
   ============================================================ */

.evw[b-xy5szvcnzl] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.5rem;
    height: calc(100vh - 80px);
    overflow: hidden;
}

/* ── Header ── */
.evw__header[b-xy5szvcnzl] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    flex-wrap: wrap;
    flex-shrink: 0;
}

.evw__header h1[b-xy5szvcnzl] {
    margin: 0 0.5rem 0 0;
    font-size: 1.3rem;
}

/* ── Error ── */
.evw__error[b-xy5szvcnzl] {
    color: var(--v2-danger, #c00);
    background: #fff5f5;
    border: 1px solid var(--v2-danger, #c00);
    padding: 0.5rem;
    border-radius: 4px;
    white-space: pre-wrap;
    font-size: 0.85rem;
    flex-shrink: 0;
}

/* ── Controls bar ── */
.evw__controls[b-xy5szvcnzl] {
    display: flex;
    align-items: flex-end;
    gap: 0.5rem;
    flex-shrink: 0;
}

.evw__search[b-xy5szvcnzl] {
    min-width: 250px;
    flex: 0 1 350px;
}

.evw__count[b-xy5szvcnzl] {
    font-size: 0.8rem;
    color: var(--v2-text-muted, #999);
    padding-bottom: 4px;
}

/* ── Split pane ── */
.evw__split[b-xy5szvcnzl] {
    display: flex;
    gap: 0.5rem;
    flex: 1;
    min-height: 0;
}

/* ── Left: Email list ── */
.evw__list[b-xy5szvcnzl] {
    flex: 0 0 420px;
    min-width: 320px;
    max-width: 500px;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--v2-border, #ddd);
    border-radius: 4px;
    overflow: hidden;
}

.evw__list-scroll[b-xy5szvcnzl] {
    flex: 1;
    overflow-y: auto;
}

.evw__table[b-xy5szvcnzl] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.8rem;
    table-layout: fixed;
}

.evw__th[b-xy5szvcnzl] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--v2-panel-bg, #f8f8f8);
    padding: 4px 6px;
    text-align: left;
    font-size: var(--slm-label-font-size, 0.75rem);
    font-weight: normal;
    color: var(--slm-label-color, #8B0000);
    border-bottom: 2px solid var(--v2-border, #ddd);
    white-space: nowrap;
}

.evw__th--sortable[b-xy5szvcnzl] {
    cursor: pointer;
    user-select: none;
}

.evw__th--sortable:hover[b-xy5szvcnzl] {
    color: var(--v2-accent, #2563eb);
}

.evw__th--from[b-xy5szvcnzl] {
    width: 140px;
}

.evw__th--date[b-xy5szvcnzl] {
    width: 120px;
}

.evw__th--att[b-xy5szvcnzl] {
    width: 40px;
    text-align: center;
}

.evw__td[b-xy5szvcnzl] {
    padding: 3px 6px;
    border-bottom: 1px solid var(--v2-border-light, #eee);
    vertical-align: middle;
    font-size: 0.8rem;
}

.evw__td--ellipsis[b-xy5szvcnzl] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.evw__td--date[b-xy5szvcnzl] {
    white-space: nowrap;
    font-size: 0.75rem;
    color: var(--v2-text-muted, #888);
}

.evw__td--center[b-xy5szvcnzl] {
    text-align: center;
}

.evw__att-icon[b-xy5szvcnzl] {
    color: var(--v2-text-muted, #888);
    margin-right: 3px;
    font-size: 0.7rem;
}

.evw__row[b-xy5szvcnzl] {
    cursor: pointer;
}

.evw__row:hover[b-xy5szvcnzl] {
    background: var(--v2-row-hover, #f0f4ff);
}

.evw__row--selected[b-xy5szvcnzl] {
    background: var(--v2-row-selected, #dbeafe);
}

.evw__row--selected:hover[b-xy5szvcnzl] {
    background: var(--v2-row-selected, #dbeafe);
}

/* ── Paging ── */
.evw__paging[b-xy5szvcnzl] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 4px 6px;
    border-top: 1px solid var(--v2-border, #ddd);
    font-size: 0.75rem;
    flex-shrink: 0;
}

.evw__page-info[b-xy5szvcnzl] {
    color: var(--v2-text-muted, #999);
}

/* ── Right: Detail viewer ── */
.evw__detail[b-xy5szvcnzl] {
    flex: 1;
    min-width: 0;
    border: 1px solid var(--v2-border, #ddd);
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.evw__detail-scroll[b-xy5szvcnzl] {
    flex: 1;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

.evw__detail-header[b-xy5szvcnzl] {
    padding: 0.75rem;
    border-bottom: 1px solid var(--v2-border, #ddd);
    flex-shrink: 0;
}

.evw__detail-subject[b-xy5szvcnzl] {
    margin: 0 0 0.5rem 0;
    font-size: 1.1rem;
    line-height: 1.3;
}

.evw__detail-meta[b-xy5szvcnzl] {
    font-size: 0.8rem;
    display: flex;
    flex-direction: column;
    gap: 2px;
    color: var(--v2-text, #333);
}

/* ── Attachments ── */
.evw__attachments[b-xy5szvcnzl] {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--v2-border, #ddd);
    font-size: 0.8rem;
    flex-shrink: 0;
}

.evw__attachment-list[b-xy5szvcnzl] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.3rem;
}

.evw__attachment-chip[b-xy5szvcnzl] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border: 1px solid var(--v2-border, #ddd);
    border-radius: 12px;
    background: var(--v2-panel-bg, #f8f8f8);
    font-size: 0.75rem;
}

.evw__attachment-chip[b-xy5szvcnzl]  a {
    color: var(--v2-accent, #2563eb);
    text-decoration: none;
}

.evw__attachment-chip[b-xy5szvcnzl]  a:hover {
    text-decoration: underline;
}

.evw__attachment-size[b-xy5szvcnzl] {
    color: var(--v2-text-muted, #999);
}

/* ── Email body ── */
.evw__body[b-xy5szvcnzl] {
    flex: 1;
    min-height: 200px;
    display: flex;
    flex-direction: column;
}

.evw__body-iframe[b-xy5szvcnzl] {
    flex: 1;
    width: 100%;
    min-height: 300px;
    border: none;
    background: #fff;
}

.evw__body-text[b-xy5szvcnzl] {
    flex: 1;
    padding: 0.75rem;
    margin: 0;
    font-family: monospace;
    font-size: 0.85rem;
    white-space: pre-wrap;
    word-break: break-word;
    overflow-y: auto;
}

/* ── Utility ── */
.evw__loading[b-xy5szvcnzl], .evw__empty[b-xy5szvcnzl] {
    color: var(--v2-text-muted, #999);
    font-style: italic;
    padding: 1rem;
    text-align: center;
}
/* /Components/Pages/Portal/QuotePortalPage.razor.rz.scp.css */
/* ============================================================
   QUOTE PORTAL PAGE  (qpp)
   Public-facing, token-authenticated portal for viewing quotes.
   ============================================================ */

/* ── Page shell ──────────────────────────────────────────── */

.qpp[b-bkhs941agp] {
    min-height: 100vh;
    background: #f8f9fa;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    color: #1a1a2e;
}

/* ── Status pages (loading, expired, invalid) ────────────── */

.qpp__status-page[b-bkhs941agp] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 80vh;
    gap: 1rem;
    text-align: center;
    padding: 2rem;
}

.qpp__status-page--expired .qpp__status-icon[b-bkhs941agp] {
    font-size: 3rem;
}

.qpp__status-page h2[b-bkhs941agp] {
    font-size: 1.5rem;
    font-weight: 600;
    color: #1a1a2e;
    margin: 0;
}

.qpp__status-page p[b-bkhs941agp] {
    color: #6c757d;
    margin: 0;
}

/* Loading spinner */
.qpp__spinner[b-bkhs941agp] {
    width: 40px;
    height: 40px;
    border: 4px solid #dee2e6;
    border-top-color: #0d6efd;
    border-radius: 50%;
    animation: qpp-spin-b-bkhs941agp 0.8s linear infinite;
}

@keyframes qpp-spin-b-bkhs941agp {
    to { transform: rotate(360deg); }
}

/* ── Header ──────────────────────────────────────────────── */

.qpp__header[b-bkhs941agp] {
    background: #fff;
    border-bottom: 1px solid #dee2e6;
    padding: 0.875rem 0;
    position: sticky;
    top: 0;
    z-index: 10;
    box-shadow: 0 1px 3px rgba(0,0,0,.06);
}

.qpp__header-inner[b-bkhs941agp] {
    max-width: 860px;
    margin: 0 auto;
    padding: 0 1.5rem;
}

.qpp__company-name[b-bkhs941agp] {
    font-size: 1.25rem;
    font-weight: 700;
    color: #1a1a2e;
    letter-spacing: -0.01em;
}

/* ── Main content area ───────────────────────────────────── */

.qpp__main[b-bkhs941agp] {
    max-width: 860px;
    margin: 0 auto;
    padding: 2rem 1.5rem;
}

/* ── Back row ────────────────────────────────────────────── */

.qpp__back-row[b-bkhs941agp] {
    margin-bottom: 1rem;
}

/* ── Section ─────────────────────────────────────────────── */

.qpp__section[b-bkhs941agp] {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    padding: 1.5rem;
}

.qpp__section-title[b-bkhs941agp] {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0 0 0.25rem;
}

.qpp__section-sub[b-bkhs941agp] {
    color: #6c757d;
    margin: 0 0 1.25rem;
}

.qpp__empty[b-bkhs941agp] {
    color: #6c757d;
    font-style: italic;
}

/* ── Quote list table ────────────────────────────────────── */

.qpp__table[b-bkhs941agp] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.qpp__table th[b-bkhs941agp] {
    text-align: left;
    padding: 0.5rem 0.75rem;
    background: #f8f9fa;
    border-bottom: 2px solid #dee2e6;
    font-weight: 600;
    color: #495057;
}

.qpp__table td[b-bkhs941agp] {
    padding: 0.625rem 0.75rem;
    border-bottom: 1px solid #f0f0f0;
    vertical-align: middle;
}

.qpp__table tr:last-child td[b-bkhs941agp] {
    border-bottom: none;
}

/* ── Document header block ───────────────────────────────── */

.qpp__doc-header[b-bkhs941agp] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    padding: 1.5rem;
    margin-bottom: 1rem;
    gap: 2rem;
    flex-wrap: wrap;
}

.qpp__doc-company[b-bkhs941agp] {
    font-size: 1.5rem;
    font-weight: 700;
    color: #1a1a2e;
    margin-bottom: 0.5rem;
}

.qpp__doc-meta[b-bkhs941agp] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    font-size: 0.9rem;
    color: #495057;
}

.qpp__doc-label[b-bkhs941agp] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.qpp__doc-bill-to[b-bkhs941agp] {
    font-size: 0.9rem;
    line-height: 1.5;
}

/* ── Line items table ────────────────────────────────────── */

.qpp__lines-section[b-bkhs941agp] {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    overflow: hidden;
    margin-bottom: 1rem;
}

.qpp__line-table[b-bkhs941agp] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.qpp__line-table th[b-bkhs941agp] {
    padding: 0.625rem 0.875rem;
    background: #f8f9fa;
    border-bottom: 2px solid #dee2e6;
    font-weight: 600;
    color: #495057;
    text-align: left;
}

.qpp__line-table td[b-bkhs941agp] {
    padding: 0.5rem 0.875rem;
    border-bottom: 1px solid #f0f0f0;
    vertical-align: top;
}

.qpp__line-table tfoot td[b-bkhs941agp] {
    border-top: 2px solid #dee2e6;
    border-bottom: none;
    padding: 0.75rem 0.875rem;
    font-weight: 600;
}

.qpp__section-row td[b-bkhs941agp] {
    background: #f8f9fa;
    font-weight: 600;
    color: #495057;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.375rem 0.875rem;
    border-bottom: 1px solid #dee2e6;
}

.qpp__num[b-bkhs941agp] { text-align: right; }
.qpp__col-item[b-bkhs941agp]   { width: 140px; }
.qpp__col-qty[b-bkhs941agp]    { width: 60px;  text-align: right; }
.qpp__col-price[b-bkhs941agp]  { width: 100px; text-align: right; }
.qpp__col-amount[b-bkhs941agp] { width: 110px; text-align: right; }

.qpp__total-label[b-bkhs941agp]  { text-align: right; color: #495057; }
.qpp__total-amount[b-bkhs941agp] { font-size: 1rem; }

/* ── Notes section ───────────────────────────────────────── */

.qpp__notes-section[b-bkhs941agp] {
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    padding: 1rem 1.5rem;
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

/* ── Action bar ──────────────────────────────────────────── */

.qpp__action-bar[b-bkhs941agp] {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    background: #fff;
    border: 1px solid #dee2e6;
    border-radius: 8px;
    padding: 1rem 1.5rem;
    flex-wrap: wrap;
}

/* ── Buttons ─────────────────────────────────────────────── */

.qpp__btn[b-bkhs941agp] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.5rem 1.125rem;
    font-size: 0.9rem;
    font-weight: 500;
    border-radius: 6px;
    border: none;
    cursor: pointer;
    transition: opacity 0.15s, background 0.15s;
    text-decoration: none;
    white-space: nowrap;
}

.qpp__btn:disabled[b-bkhs941agp] {
    opacity: 0.55;
    cursor: not-allowed;
}

.qpp__btn--primary[b-bkhs941agp]  { background: #0d6efd; color: #fff; }
.qpp__btn--primary:hover:not(:disabled)[b-bkhs941agp]  { background: #0b5ed7; }

.qpp__btn--accept[b-bkhs941agp]   { background: #198754; color: #fff; }
.qpp__btn--accept:hover:not(:disabled)[b-bkhs941agp]   { background: #157347; }

.qpp__btn--changes[b-bkhs941agp]  { background: #fd7e14; color: #fff; }
.qpp__btn--changes:hover:not(:disabled)[b-bkhs941agp]  { background: #e96b0c; }

.qpp__btn--decline[b-bkhs941agp]  { background: #6c757d; color: #fff; }
.qpp__btn--decline:hover:not(:disabled)[b-bkhs941agp]  { background: #5c636a; }

.qpp__btn--ghost[b-bkhs941agp]    { background: transparent; color: #495057; border: 1px solid #dee2e6; }
.qpp__btn--ghost:hover:not(:disabled)[b-bkhs941agp]    { background: #f8f9fa; }

.qpp__btn--sm[b-bkhs941agp] { padding: 0.3rem 0.75rem; font-size: 0.8rem; }

/* ── Banners ─────────────────────────────────────────────── */

.qpp__action-success[b-bkhs941agp] {
    background: #d1e7dd;
    color: #0a3622;
    border: 1px solid #a3cfbb;
    border-radius: 6px;
    padding: 0.875rem 1rem;
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

.qpp__action-error[b-bkhs941agp] {
    background: #f8d7da;
    color: #58151c;
    border: 1px solid #f1aeb5;
    border-radius: 6px;
    padding: 0.75rem 1rem;
    margin-bottom: 0.75rem;
    font-size: 0.875rem;
}

/* ── Dialog overlay ──────────────────────────────────────── */

.qpp__overlay[b-bkhs941agp] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    padding: 1rem;
}

.qpp__dialog[b-bkhs941agp] {
    background: #fff;
    border-radius: 10px;
    padding: 1.75rem;
    width: 100%;
    max-width: 480px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.18);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.qpp__dialog h3[b-bkhs941agp] {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 600;
}

.qpp__dialog p[b-bkhs941agp] {
    margin: 0;
    color: #495057;
    font-size: 0.9rem;
}

.qpp__field-label[b-bkhs941agp] {
    font-size: 0.85rem;
    font-weight: 500;
    color: #495057;
}

.qpp__required[b-bkhs941agp] { color: #dc3545; }

.qpp__input[b-bkhs941agp] {
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 1px solid #ced4da;
    border-radius: 6px;
    font-size: 0.9rem;
    box-sizing: border-box;
    font-family: inherit;
}

.qpp__input:focus[b-bkhs941agp] {
    outline: none;
    border-color: #86b7fe;
    box-shadow: 0 0 0 3px rgba(13,110,253,.15);
}

.qpp__textarea[b-bkhs941agp] {
    resize: vertical;
    min-height: 80px;
}

.qpp__dialog-footer[b-bkhs941agp] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

/* ── Responsive ──────────────────────────────────────────── */

@media (max-width: 600px) {
    .qpp__doc-header[b-bkhs941agp] {
        flex-direction: column;
        gap: 1rem;
    }
    .qpp__action-bar[b-bkhs941agp] {
        flex-direction: column;
        align-items: stretch;
    }
    .qpp__btn[b-bkhs941agp] {
        justify-content: center;
    }
    .qpp__col-item[b-bkhs941agp]   { width: auto; }
    .qpp__col-price[b-bkhs941agp]  { display: none; }
}

/* ── Sub-section headings (Open Quotes / Active Orders) ──── */

.qpp__subsection-title[b-bkhs941agp] {
    font-size: 1rem;
    font-weight: 600;
    color: #495057;
    margin: 0 0 0.75rem;
    padding-bottom: 0.375rem;
    border-bottom: 1px solid #dee2e6;
}

.qpp__subsection-title--spaced[b-bkhs941agp] {
    margin-top: 1.5rem;
}

/* ── Order / line status badges ──────────────────────────── */

.qpp__status-badge[b-bkhs941agp] {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 4px;
    font-size: 0.78rem;
    font-weight: 600;
    white-space: nowrap;
    background: #e9ecef;
    color: #495057;
}

.qpp__status-badge--order[b-bkhs941agp]   { background: #cfe2ff; color: #084298; }
.qpp__status-badge--partial[b-bkhs941agp] { background: #fff3cd; color: #664d03; }
.qpp__status-badge--quote[b-bkhs941agp]   { background: #e9ecef; color: #495057; }

.qpp__line-status[b-bkhs941agp] {
    display: inline-block;
    font-size: 0.8rem;
    color: #6c757d;
    white-space: nowrap;
}

/* ── Column widths (with delivery status column) ─────────── */

.qpp__col-status[b-bkhs941agp] { width: 110px; }

/* ── Read-only action bar (active orders) ────────────────── */

.qpp__action-bar--readonly[b-bkhs941agp] {
    background: #f8f9fa;
    border-color: #dee2e6;
}

.qpp__readonly-note[b-bkhs941agp] {
    font-size: 0.9rem;
    color: #495057;
}
/* /Components/Pages/Recipe/RecipeBrowserPage.razor.rz.scp.css */
/* ============================================================
   RecipeBrowserPage -- scoped styles (rb__ prefix)
   Split from wwwroot/css/recipe.css in #651 Phase 4.
   All elements are direct Razor-rendered -- no ::deep needed.
   ============================================================ */

/* ── Page wrapper ── */
.rb__[b-l1y0r9rbho] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    height: 100%;
    overflow: hidden;
    color: var(--slm-color-text-primary);
    background: var(--v2-panel-bg);
}

/* ── Header row ── */
.rb__header[b-l1y0r9rbho] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem;
}

.rb__header h1[b-l1y0r9rbho] {
    margin: 0;
    font-size: 1.4rem;
    line-height: 2rem;
    white-space: nowrap;
}

.rb__header-spacer[b-l1y0r9rbho] {
    flex: 1 1 auto;
}

/* ── Error display ── */
.rb__error[b-l1y0r9rbho] {
    border: 1px solid #dc3545;
    background: #fff5f5;
    color: #dc3545;
    padding: 0.5rem 0.75rem;
    border-radius: 4px;
    white-space: pre-wrap;
    font-size: 0.9rem;
}

/* ── Main 2-column layout (tree + grid) ── */
.rb__layout[b-l1y0r9rbho] {
    display: flex;
    gap: 0.75rem;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

/* ── Left panel: category tree ── */
.rb__tree[b-l1y0r9rbho] {
    flex: 0 0 260px;
    min-width: 200px;
    overflow-y: auto;
    border-right: 1px solid var(--slm-color-border);
    padding-right: 0.5rem;
}

.rb__tree-selection[b-l1y0r9rbho] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.5rem;
    margin-bottom: 0.25rem;
    background: rgba(79,163,255,0.15);
    border: 1px solid var(--slm-color-accent);
    border-radius: 4px;
    font-size: 0.8rem;
    color: var(--slm-color-accent);
}

/* ── Right panel: recipe grid + controls + detail ── */
.rb__main[b-l1y0r9rbho] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-width: 0;
    overflow: hidden;
}

/* ── Controls row (search, filters) ── */
.rb__controls[b-l1y0r9rbho] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem;
}

.rb__controls-fields[b-l1y0r9rbho] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem;
}

/* ── Recipe grid table ── */
.rb__grid[b-l1y0r9rbho] {
    flex: 1 1 auto;
    overflow-y: auto;
    min-height: 0;
}

.rb__table[b-l1y0r9rbho] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.9rem;
}

.rb__table thead[b-l1y0r9rbho] {
    position: sticky;
    top: 0;
    z-index: 2;
}

.rb__table th[b-l1y0r9rbho] {
    background: var(--slm-color-surface);
    padding: 4px 8px;
    text-align: left;
    font-weight: 600;
    border-bottom: 2px solid var(--slm-color-border);
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.rb__table th:hover[b-l1y0r9rbho] {
    background: rgba(128,128,128,0.1);
}

.rb__table td[b-l1y0r9rbho] {
    padding: 3px 8px;
    border-bottom: 1px solid var(--slm-color-border);
    vertical-align: middle;
}

.rb__table tr[b-l1y0r9rbho] {
    cursor: pointer;
}

.rb__table tr:hover td[b-l1y0r9rbho] {
    background: rgba(128,128,128,0.1);
}

.rb__table tr.rb__row--selected td[b-l1y0r9rbho] {
    background: rgba(79,163,255,0.15);
}

.rb__sort-glyph[b-l1y0r9rbho] {
    margin-left: 4px;
    font-size: 0.8rem;
}

.rb__fav-icon[b-l1y0r9rbho] {
    color: #e8a100;
}

.rb__time-cell[b-l1y0r9rbho] {
    white-space: nowrap;
}

/* ── Detail panel (selected recipe) ── */
.rb__detail[b-l1y0r9rbho] {
    border: 1px solid var(--slm-color-border);
    border-radius: 4px;
    padding: 0.5rem 0.75rem;
    background: var(--slm-color-surface);
}

.rb__detail-title[b-l1y0r9rbho] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 0.25rem 0;
}

.rb__detail-meta[b-l1y0r9rbho] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    font-size: 0.9rem;
    color: var(--slm-color-text-muted);
}

.rb__detail-meta span[b-l1y0r9rbho] {
    white-space: nowrap;
}

/* ── Children panels (ingredients + steps) ── */
.rb__children[b-l1y0r9rbho] {
    display: flex;
    gap: 0.75rem;
    min-height: 0;
    overflow: hidden;
}

.rb__ing-panel[b-l1y0r9rbho],
.rb__step-panel[b-l1y0r9rbho] {
    flex: 1 1 50%;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    overflow-y: auto;
    max-height: 250px;
}

.rb__child-header[b-l1y0r9rbho] {
    font-weight: 600;
    font-size: 0.9rem;
    padding: 0.25rem 0;
    border-bottom: 1px solid var(--slm-color-border);
}

.rb__child-table[b-l1y0r9rbho] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.rb__child-table th[b-l1y0r9rbho] {
    text-align: left;
    font-weight: 600;
    padding: 2px 6px;
    border-bottom: 1px solid var(--slm-color-border);
    background: var(--slm-color-surface);
}

.rb__child-table td[b-l1y0r9rbho] {
    padding: 2px 6px;
    border-bottom: 1px solid var(--slm-color-border);
}

.rb__qty-cell[b-l1y0r9rbho] {
    text-align: right;
    white-space: nowrap;
    width: 60px;
}

.rb__unit-cell[b-l1y0r9rbho] {
    white-space: nowrap;
    width: 60px;
}

.rb__step-num[b-l1y0r9rbho] {
    text-align: center;
    width: 30px;
    font-weight: 600;
    color: var(--slm-color-text-muted);
}

/* ── Loading / empty states ── */
.rb__loading[b-l1y0r9rbho] {
    padding: 1rem;
    color: var(--slm-color-text-muted);
}

.rb__empty[b-l1y0r9rbho] {
    padding: 1rem;
    color: var(--slm-color-text-muted);
    font-style: italic;
}
/* /Components/Pages/Recipe/RecipeEditorPage.razor.rz.scp.css */
/* ============================================================
   RecipeEditorPage -- scoped styles (re__ prefix)
   Split from wwwroot/css/recipe.css in #651 Phase 4.
   All elements are direct Razor-rendered -- no ::deep needed.
   ============================================================ */

/* ── Page wrapper ── */
.re__[b-fj3vcmz996] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    max-width: 960px;
    color: var(--slm-color-text-primary);
    background: var(--v2-panel-bg);
}

/* ── Header row ── */
.re__header[b-fj3vcmz996] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem;
}

.re__header h1[b-fj3vcmz996] {
    margin: 0;
    font-size: 1.4rem;
    line-height: 2rem;
    white-space: nowrap;
}

.re__header-spacer[b-fj3vcmz996] {
    flex: 1 1 auto;
}

/* ── Error display ── */
.re__error[b-fj3vcmz996] {
    border: 2px solid var(--v2-danger, #dc3545);
    color: var(--v2-danger, #dc3545);
    padding: 0.5rem 0.75rem;
    border-radius: 4px;
    white-space: pre-wrap;
    font-size: 0.9rem;
    background: var(--v2-panel-bg, #fff5f5);
}

.re__loading[b-fj3vcmz996] {
    padding: 1rem;
    color: var(--slm-color-text-muted);
}

/* ── Recipe fields layout ── */
.re__fields[b-fj3vcmz996] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.re__fields-row[b-fj3vcmz996] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem;
}

/* ── Section container (Notes, Ingredients, Steps) ── */
.re__section[b-fj3vcmz996] {
    border: 1px solid var(--slm-color-border);
    border-radius: 4px;
    padding: 0.5rem 0.75rem;
    background: var(--slm-color-surface);
}

.re__section-header[b-fj3vcmz996] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    font-size: 0.9rem;
    padding-bottom: 0.35rem;
    border-bottom: 1px solid var(--slm-color-border);
    margin-bottom: 0.35rem;
}

.re__hint[b-fj3vcmz996] {
    font-size: 0.8rem;
    font-weight: 400;
    font-style: italic;
    color: var(--slm-color-text-muted);
}

/* ── Save prompt (new recipe, before ingredients) ── */
.re__save-prompt[b-fj3vcmz996] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    border: 2px dashed var(--slm-color-border);
    border-radius: 4px;
    background: var(--slm-color-surface);
}

/* ── Child tables (ingredients, steps) ── */
.re__child-table[b-fj3vcmz996] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.82rem;
    margin-bottom: 0.35rem;
}

.re__child-table thead[b-fj3vcmz996] {
    position: sticky;
    top: 0;
    z-index: 2;
}

.re__child-table th[b-fj3vcmz996] {
    background: var(--slm-color-surface);
    padding: 3px 6px;
    text-align: left;
    font-weight: 600;
    border-bottom: 2px solid var(--slm-color-border);
    white-space: nowrap;
}

.re__child-table td[b-fj3vcmz996] {
    padding: 3px 6px;
    border-bottom: 1px solid var(--slm-color-border);
    vertical-align: middle;
}

.re__child-table tr:hover td[b-fj3vcmz996] {
    background: rgba(128,128,128,0.1);
}

.re__qty-col[b-fj3vcmz996] {
    text-align: right;
    white-space: nowrap;
    width: 60px;
}

.re__unit-col[b-fj3vcmz996] {
    white-space: nowrap;
    width: 60px;
}

.re__step-num[b-fj3vcmz996] {
    text-align: center;
    width: 30px;
    font-weight: 600;
    color: var(--slm-color-text-muted);
}

.re__dur-col[b-fj3vcmz996] {
    white-space: nowrap;
    width: 60px;
}

.re__ord-col[b-fj3vcmz996] {
    text-align: center;
    width: 50px;
    color: var(--slm-color-text-muted);
}

.re__act-col[b-fj3vcmz996] {
    white-space: nowrap;
    width: 60px;
    text-align: right;
}

.re__step-desc[b-fj3vcmz996] {
    font-size: 0.8rem;
    color: var(--slm-color-text-muted);
}

/* ── Inline edit form ── */
.re__inline-form[b-fj3vcmz996] {
    border: 1px solid var(--slm-color-border);
    border-radius: 4px;
    padding: 0.5rem 0.75rem;
    margin-top: 0.35rem;
    background: var(--v2-panel-bg);
}

.re__inline-title[b-fj3vcmz996] {
    font-weight: 600;
    font-size: 0.85rem;
    margin-bottom: 0.35rem;
}

.re__inline-row[b-fj3vcmz996] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}

.re__inline-actions[b-fj3vcmz996] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.35rem;
}

.re__step-html[b-fj3vcmz996] {
    margin-top: 0.35rem;
}
/* /Components/Pages/Signup/ConfigurationWizardPage.razor.rz.scp.css */
/* ======================================================================
   ConfigurationWizardPage.razor.css
   Scoped styles for the 5-step Configuration Wizard step content.
   The outer wizard chrome (overlay, dialog, header, steps, footer) is
   handled globally by SLMWizard.css; only step body content is scoped here.
   ====================================================================== */

/* ── Step wrapper ── */
.cfg-wiz__step[b-vl9wonbphj] {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.cfg-wiz__lead[b-vl9wonbphj] {
    margin: 0;
    color: var(--slm-color-text-muted, #6b6f73);
    font-size: 0.88rem;
    line-height: 1.55;
}

.cfg-wiz__empty-note[b-vl9wonbphj] {
    margin: 0;
    padding: 12px 14px;
    background: var(--slm-surface, #f9fafb);
    border: 1px dashed var(--slm-color-border, #d1d5db);
    border-radius: 8px;
    color: var(--slm-color-text-muted, #6b6f73);
    font-size: 0.85rem;
}

/* ── Scenario tiles ── */
.cfg-wiz__tile--basics[b-vl9wonbphj] {
    border-style: dashed;
}

.cfg-wiz__tile-icon[b-vl9wonbphj] {
    display: block;
    font-size: 1.4rem;
    margin-bottom: 6px;
    color: var(--slm-color-primary, #1e3a5f);
}

.cfg-wiz__check[b-vl9wonbphj] {
    display: block;
    margin-top: 6px;
    color: var(--slm-color-primary, #1e3a5f);
    font-size: 0.8rem;
}

.cfg-wiz__family-group[b-vl9wonbphj] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.cfg-wiz__family-label[b-vl9wonbphj] {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--slm-color-text-muted, #6b6f73);
    padding: 2px 0;
    border-bottom: 1px solid var(--slm-color-border, #e5e7eb);
}

.cfg-wiz__selection-note[b-vl9wonbphj] {
    margin: 0;
    font-size: 0.82rem;
    color: var(--slm-color-text-muted, #6b6f73);
    text-align: right;
}

/* ── Feature list ── */
.cfg-wiz__feature-list[b-vl9wonbphj] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.cfg-wiz__feature-row[b-vl9wonbphj] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 10px;
    border-radius: 6px;
    transition: background 0.1s;
}

.cfg-wiz__feature-row:hover[b-vl9wonbphj] {
    background: var(--slm-surface, #f9fafb);
}

.cfg-wiz__feature-row--disabled[b-vl9wonbphj] {
    opacity: 0.55;
}

.cfg-wiz__feature-check[b-vl9wonbphj] {
    display: flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    font-size: 0.9rem;
}

.cfg-wiz__feature-check input[type="checkbox"][b-vl9wonbphj] {
    width: 15px;
    height: 15px;
    cursor: pointer;
    flex-shrink: 0;
}

.cfg-wiz__feature-name[b-vl9wonbphj] {
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 6px;
}

.cfg-wiz__icon-universal[b-vl9wonbphj] {
    color: var(--slm-color-text-muted, #9ca3af);
    font-size: 0.8rem;
}

.cfg-wiz__feature-meta[b-vl9wonbphj] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: 23px;
}

.cfg-wiz__feature-desc[b-vl9wonbphj] {
    font-size: 0.78rem;
    color: var(--slm-color-text-muted, #6b6f73);
}

/* ── Badges ── */
.cfg-wiz__badge[b-vl9wonbphj] {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}

.cfg-wiz__badge--auto[b-vl9wonbphj] {
    background: var(--slm-color-warning-bg, #fffbeb);
    color: var(--slm-color-warning, #b45309);
    border: 1px solid var(--slm-color-warning-border, #fde68a);
}

.cfg-wiz__badge--universal[b-vl9wonbphj] {
    background: var(--slm-color-primary-bg, #eef3fa);
    color: var(--slm-color-primary, #1e3a5f);
    border: 1px solid var(--slm-color-primary-border, #bfdbfe);
}

/* ── Authorization rows ── */
.cfg-wiz__auth-list[b-vl9wonbphj] {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.cfg-wiz__auth-row[b-vl9wonbphj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 6px 8px;
    border-bottom: 1px solid var(--slm-color-border, #e5e7eb);
    gap: 12px;
}

.cfg-wiz__auth-row:hover[b-vl9wonbphj] {
    background: var(--slm-surface, #f9fafb);
}

.cfg-wiz__auth-feature-name[b-vl9wonbphj] {
    font-size: 0.875rem;
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 1 1 auto;
    min-width: 0;
}

.cfg-wiz__auth-tier-group[b-vl9wonbphj] {
    display: flex;
    gap: 4px;
    flex-shrink: 0;
}

.cfg-wiz__auth-tier-label[b-vl9wonbphj] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    border: 1px solid var(--slm-color-border, #d1d5db);
    border-radius: 4px;
    font-size: 0.78rem;
    cursor: pointer;
    white-space: nowrap;
    color: var(--slm-color-text-muted, #6b6f73);
    user-select: none;
    transition: background 0.1s, border-color 0.1s;
}

.cfg-wiz__auth-tier-label:hover[b-vl9wonbphj] {
    border-color: var(--slm-color-primary, #2563eb);
    color: var(--slm-color-primary, #2563eb);
}

.cfg-wiz__auth-tier-label--selected[b-vl9wonbphj] {
    background: var(--slm-color-primary, #2563eb);
    border-color: var(--slm-color-primary, #2563eb);
    color: #fff;
    font-weight: 600;
}

.cfg-wiz__auth-tier-label input[type="radio"][b-vl9wonbphj] {
    display: none;
}

/* ── Confirm summary ── */
.cfg-wiz__summary-section[b-vl9wonbphj] {
    border: 1px solid var(--slm-color-border, #e5e7eb);
    border-radius: 8px;
    padding: 12px 14px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.cfg-wiz__summary-title[b-vl9wonbphj] {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--slm-color-text-muted, #6b6f73);
    margin-bottom: 4px;
}

.cfg-wiz__summary-item[b-vl9wonbphj] {
    margin: 0;
    font-size: 0.875rem;
    display: flex;
    align-items: baseline;
    gap: 6px;
    flex-wrap: wrap;
}

.cfg-wiz__summary-item--muted[b-vl9wonbphj] {
    color: var(--slm-color-text-muted, #9ca3af);
    font-size: 0.82rem;
}

.cfg-wiz__summary-check[b-vl9wonbphj] {
    color: var(--slm-color-success, #22863a);
    font-size: 0.75rem;
    flex-shrink: 0;
}

.cfg-wiz__summary-tagline[b-vl9wonbphj] {
    color: var(--slm-color-text-muted, #6b6f73);
    font-size: 0.82rem;
}

/* ── Done screen ── */
.cfg-wiz__step--done[b-vl9wonbphj] {
    align-items: center;
    text-align: center;
    padding: 8px 0;
}

.cfg-wiz__done-icon[b-vl9wonbphj] {
    font-size: 3.5rem;
    color: var(--slm-color-success, #22863a);
    line-height: 1;
}

.cfg-wiz__done-title[b-vl9wonbphj] {
    margin: 0;
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--slm-color-text, #1f2937);
}

/* ── Note banner ── */
.cfg-wiz__note[b-vl9wonbphj] {
    padding: 10px 14px;
    border-radius: 6px;
    font-size: 0.84rem;
    max-width: 520px;
    text-align: left;
}

.cfg-wiz__note--info[b-vl9wonbphj] {
    background: var(--slm-color-primary-bg, #eef3fa);
    border: 1px solid var(--slm-color-primary-border, #bfdbfe);
    color: var(--slm-color-primary, #1e3a5f);
}

/* ── Next-step suggestions ── */
.cfg-wiz__next-steps[b-vl9wonbphj] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-width: 520px;
    text-align: left;
    width: 100%;
}

.cfg-wiz__next-steps-title[b-vl9wonbphj] {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--slm-color-text-muted, #6b6f73);
}

.cfg-wiz__next-step[b-vl9wonbphj] {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 10px 12px;
    border: 1px solid var(--slm-color-border, #e5e7eb);
    border-radius: 8px;
    background: var(--slm-surface, #fff);
    font-size: 0.875rem;
}

.cfg-wiz__next-step i[b-vl9wonbphj] {
    font-size: 1.2rem;
    color: var(--slm-color-primary, #1e3a5f);
    flex-shrink: 0;
    padding-top: 2px;
}

.cfg-wiz__next-step-desc[b-vl9wonbphj] {
    font-size: 0.8rem;
    color: var(--slm-color-text-muted, #6b6f73);
    margin-top: 2px;
}
/* /Components/Pages/Test/RecurrenceModeTestPage.razor.rz.scp.css */
/* RecurrenceModeTestPage scoped CSS */

.rmtp[b-2v96uo0o0c] {
    padding: 20px 24px;
    max-width: 860px;
}

.rmtp__header[b-2v96uo0o0c] {
    margin-bottom: 24px;
}

.rmtp__header h1[b-2v96uo0o0c] {
    margin: 0 0 6px;
    font-size: 1.4rem;
}

.rmtp__subtitle[b-2v96uo0o0c] {
    margin: 0;
    font-size: 0.88rem;
    color: var(--slm-color-text-muted, #6b6f73);
}

.rmtp__error[b-2v96uo0o0c] {
    border-left: 4px solid var(--slm-color-danger, #c0392b);
    padding: 8px 12px;
    margin-bottom: 16px;
    font-size: 0.875rem;
    white-space: pre-wrap;
}

.rmtp__section[b-2v96uo0o0c] {
    border: 1px solid var(--slm-color-border, #e5e7eb);
    border-radius: 8px;
    padding: 20px;
    margin-bottom: 24px;
    background: var(--slm-color-surface, #fff);
}

.rmtp__section h2[b-2v96uo0o0c] {
    margin: 0 0 10px;
    font-size: 1.05rem;
    font-weight: 700;
}

.rmtp__hint[b-2v96uo0o0c] {
    margin: 0 0 12px;
    font-size: 0.84rem;
    color: var(--slm-color-text-muted, #6b6f73);
}

/* Live state table */
.rmtp__state-table[b-2v96uo0o0c] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

.rmtp__state-table td[b-2v96uo0o0c] {
    padding: 4px 8px;
    border-bottom: 1px solid var(--slm-color-border, #e5e7eb);
    vertical-align: top;
}

.rmtp__state-table td:first-child[b-2v96uo0o0c] {
    font-weight: 600;
    width: 220px;
    color: var(--slm-color-text-muted, #555);
    white-space: nowrap;
}

.rmtp__state-row--dim td[b-2v96uo0o0c] {
    opacity: 0.38;
}

/* Reference table */
.rmtp__ref-table[b-2v96uo0o0c] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.84rem;
}

.rmtp__ref-table th[b-2v96uo0o0c],
.rmtp__ref-table td[b-2v96uo0o0c] {
    padding: 5px 8px;
    border-bottom: 1px solid var(--slm-color-border, #e5e7eb);
    vertical-align: top;
    text-align: left;
}

.rmtp__ref-table th[b-2v96uo0o0c] {
    font-weight: 700;
    background: var(--slm-color-surface-alt, #f8f8f8);
}

.rmtp__status[b-2v96uo0o0c] {
    font-weight: 600;
    font-size: 0.78rem;
    padding: 2px 7px;
    border-radius: 10px;
    white-space: nowrap;
    display: inline-block;
}

.rmtp__status--live[b-2v96uo0o0c] {
    background: var(--slm-color-success-bg, #e6f9ee);
    color: var(--slm-color-success-text, #1a6636);
}

.rmtp__status--planned[b-2v96uo0o0c] {
    background: var(--slm-color-warning-bg, #fff8e1);
    color: var(--slm-color-warning-text, #7a5800);
}
/* /Components/Pages/Test/WizardTestPage.razor.rz.scp.css */
/* WizardTestPage scoped CSS */

.wtp[b-c6l8l7b1go] {
    padding: 20px 24px;
    max-width: 960px;
}

.wtp__header[b-c6l8l7b1go] {
    margin-bottom: 24px;
}

.wtp__header h1[b-c6l8l7b1go] {
    margin: 0;
    font-size: 1.4rem;
}

.wtp__error[b-c6l8l7b1go] {
    border-left: 4px solid var(--slm-color-danger, #c0392b);
    padding: 8px 12px;
    margin-bottom: 16px;
    font-size: 0.875rem;
    white-space: pre-wrap;
}

.wtp__section[b-c6l8l7b1go] {
    border: 1px solid var(--slm-color-border, #e5e7eb);
    border-radius: 8px;
    padding: 20px;
    margin-bottom: 24px;
    background: var(--slm-color-surface, #fff);
}

.wtp__section h2[b-c6l8l7b1go] {
    margin: 0 0 10px;
    font-size: 1.05rem;
    font-weight: 700;
}

.wtp__result-card[b-c6l8l7b1go] {
    border: 1px solid var(--slm-color-border, #e5e7eb);
    border-radius: 6px;
    padding: 12px 16px;
    background: var(--slm-field-wrapper-bg, #f9fafb);
    font-size: 0.875rem;
    margin-top: 12px;
}

.wtp__result-row[b-c6l8l7b1go] {
    display: flex;
    gap: 12px;
    padding: 3px 0;
    border-bottom: 1px solid var(--slm-color-border, #f0f0f0);
}

.wtp__result-row:last-child[b-c6l8l7b1go] {
    border-bottom: none;
}

.wtp__result-row span:first-child[b-c6l8l7b1go] {
    font-weight: 600;
    min-width: 180px;
    color: var(--slm-color-text-muted, #6b6f73);
    flex-shrink: 0;
}

/* ── Icon catalog table ── */

.wtp__icon-table[b-c6l8l7b1go] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.88rem;
}

.wtp__icon-table th[b-c6l8l7b1go] {
    text-align: left;
    padding: 6px 12px;
    border-bottom: 2px solid var(--slm-color-border, #e5e7eb);
    color: var(--slm-color-text-muted, #6b6f73);
    font-weight: 600;
    white-space: nowrap;
}

.wtp__icon-table td[b-c6l8l7b1go] {
    padding: 7px 12px;
    border-bottom: 1px solid var(--slm-color-border, #f0f0f0);
    vertical-align: middle;
}

.wtp__icon-table tr:last-child td[b-c6l8l7b1go] {
    border-bottom: none;
}

.wtp__icon-table code[b-c6l8l7b1go] {
    font-size: 0.82rem;
    background: var(--slm-field-wrapper-bg, #f3f4f6);
    padding: 1px 5px;
    border-radius: 4px;
}

.wtp__icon-preview[b-c6l8l7b1go] {
    font-size: 1.3rem;
    color: var(--slm-color-text, #1a1a1a);
}
