@import '_content/se.Ui/se.Ui.xyhbe348xq.bundle.scp.css';

/* /Components/CommandPalette.razor.rz.scp.css */
/* MS25-γ — Command palette dialog. Composes on the .dialog-card --wide
   variant; overrides the default vertical centering to drop the card
   ~15% from the top (matches the Linear / Notion / VS Code visual
   convention — palette feels "headers down" not "modal in the middle").
   Min-height keeps the card a stable size regardless of result count
   so the scrim doesn't jitter as the user types. */

.command-palette-scrim[b-cu0ym4mqje] {
    align-items: flex-start;
    padding-top: 12vh;
}

.command-palette-card[b-cu0ym4mqje] {
    width: 100%;
    max-width: 36rem;
    min-height: 14rem;
    padding: 0;
    overflow: hidden;
}

.command-palette-input[b-cu0ym4mqje] {
    width: 100%;
    padding: var(--se-space-4) var(--se-space-5);
    font-size: var(--se-text-md);
    border: none;
    border-bottom: 1px solid var(--se-color-border-default);
    background: var(--se-color-surface);
    color: var(--se-color-text-strong);
    outline: none;
    box-sizing: border-box;
}

.command-palette-input[b-cu0ym4mqje]::placeholder {
    color: var(--se-color-text-muted);
}

.command-palette-empty[b-cu0ym4mqje] {
    padding: var(--se-space-5) var(--se-space-5) var(--se-space-6);
    color: var(--se-color-text-muted);
    font-size: var(--se-text-sm);
    text-align: center;
    margin: 0;
}

.command-palette-results[b-cu0ym4mqje] {
    list-style: none;
    margin: 0;
    padding: var(--se-space-2) 0;
    max-height: 22rem;
    overflow-y: auto;
}

.command-palette-result[b-cu0ym4mqje] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--se-space-4);
    padding: var(--se-space-2) var(--se-space-5);
    cursor: pointer;
    transition: background-color var(--se-transition-fast);
}

.command-palette-result:hover[b-cu0ym4mqje],
.command-palette-result.is-selected[b-cu0ym4mqje] {
    background: var(--se-color-accent-soft);
}

.command-palette-result.is-selected[b-cu0ym4mqje] {
    /* MS25-γ — Selected row carries a thin accent left-stripe in
       addition to the bg tint, so keyboard nav is obvious even on
       hover-only displays (touch / pointer device). */
    box-shadow: inset 3px 0 0 var(--se-color-accent);
}

.command-palette-result-title[b-cu0ym4mqje] {
    color: var(--se-color-text-strong);
    font-size: var(--se-text-base);
}

.command-palette-result-subtitle[b-cu0ym4mqje] {
    color: var(--se-color-text-muted);
    font-size: var(--se-text-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}
/* /Components/DensityToggle.razor.rz.scp.css */
/* MS25-β.2 — Segmented control for density preference. Three buttons
   in a tight group, with the active one carrying the accent-soft tint
   + accent-text. */

.density-toggle[b-0ipv7yb8os] {
    display: inline-flex;
    align-items: center;
    gap: 0;
    border: 1px solid var(--se-color-border-default);
    border-radius: var(--se-radius-md);
    overflow: hidden;
    background: var(--se-color-surface);
}

.density-toggle-option[b-0ipv7yb8os] {
    appearance: none;
    background: transparent;
    border: none;
    padding: 0.35rem 0.55rem;
    cursor: pointer;
    color: var(--se-color-text-muted);
    font-size: 0.85rem;
    line-height: 1;
    transition: background-color var(--se-transition-fast),
                color var(--se-transition-fast);
}

.density-toggle-option:hover[b-0ipv7yb8os] {
    background: var(--se-color-surface-sunken);
    color: var(--se-color-text-default);
}

.density-toggle-option:focus-visible[b-0ipv7yb8os] {
    outline: 2px solid var(--se-color-accent);
    outline-offset: -2px;
}

.density-toggle-option.is-active[b-0ipv7yb8os] {
    background: var(--se-color-accent-soft);
    color: var(--se-color-accent-strong);
    font-weight: 600;
}

/* Separators between buttons — keep the segmented-control feel. */
.density-toggle-option + .density-toggle-option[b-0ipv7yb8os] {
    border-left: 1px solid var(--se-color-border-subtle);
}
/* /Layout/MainLayout.razor.rz.scp.css */
/* MS24 — Modernised SE web-app chrome.
   Design direction (2025 SaaS): Linear/Vercel/Notion light-sidebar
   language. Replaces the default Blazor template's navy→purple
   gradient (which read as a stale 2015 admin theme) with a
   restrained warm-grey sidebar + a quiet white top bar, brand
   orange used as a deliberate accent rather than ambient
   decoration. Content area gets a subtle stone-50 background so
   the white cards inside lift off the page.

   Same flex shape the original used; only the visual layer
   changes. Scott directive: "we really need to improve the look
   of the left bar... default Blazor, looks gross... maybe put
   your design hat on for a bit and focus on some of the newer
   design thoughts/concepts that have been discussed around the
   internet over the last year". */

:root[b-cltgzrpgg8] {
    /* Tokens scoped to the layout — keeping the per-component
       palette local so we don't accidentally globalize colors
       that should differ on the marketing site vs the app. */
    --se-sidebar-bg: #fafafa;
    --se-sidebar-border: #e7e7e6;
    --se-app-bg: #f5f5f4;
    --se-topbar-bg: #ffffff;
    --se-topbar-border: #e7e7e6;
    --se-text-muted: #71717a;
    --se-text-strong: #18181b;
    --se-accent: #f97316;
    --se-accent-soft: rgba(249, 115, 22, 0.08);
    --se-accent-strong: #c2410c;
}

.page[b-cltgzrpgg8] {
    position: relative;
    display: flex;
    flex-direction: column;
    background: var(--se-app-bg);
    min-height: 100vh;
}

main[b-cltgzrpgg8] {
    flex: 1;
    background: var(--se-app-bg);
    display: flex;
    flex-direction: column;
}

.sidebar[b-cltgzrpgg8] {
    background: var(--se-sidebar-bg);
    border-right: 1px solid var(--se-sidebar-border);
}

.top-row[b-cltgzrpgg8] {
    background: var(--se-topbar-bg);
    border-bottom: 1px solid var(--se-topbar-border);
    height: 3rem;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 0 1.25rem;
    gap: 0.75rem;
}

.tenant-indicator[b-cltgzrpgg8] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.82rem;
}

.tenant-label[b-cltgzrpgg8] {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--se-text-muted);
}

.tenant-value[b-cltgzrpgg8] {
    font-weight: 600;
    color: var(--se-text-strong);
    background: #f4f4f5;
    border: 1px solid #e4e4e7;
    border-radius: 999px;
    padding: 0.15rem 0.65rem;
    font-family: 'SFMono-Regular', Menlo, Consolas, monospace;
    font-size: 0.74rem;
    letter-spacing: -0.01em;
}

.tenant-switch[b-cltgzrpgg8] {
    background: transparent;
    border: 1px solid transparent;
    border-radius: 999px;
    padding: 0.2rem 0.7rem;
    font-size: 0.74rem;
    font-weight: 600;
    color: var(--se-text-muted);
    cursor: pointer;
    transition: background 0.12s, color 0.12s, border-color 0.12s;
    letter-spacing: 0.01em;
}

.tenant-switch:hover[b-cltgzrpgg8] {
    background: var(--se-accent-soft);
    color: var(--se-accent-strong);
}

.top-row[b-cltgzrpgg8]  a,
.top-row[b-cltgzrpgg8]  .btn-link {
    white-space: nowrap;
    margin-left: 0.75rem;
    text-decoration: none;
    color: var(--se-text-muted);
    font-size: 0.85rem;
    font-weight: 500;
    transition: color 0.12s;
}

.top-row[b-cltgzrpgg8]  a:hover,
.top-row[b-cltgzrpgg8]  .btn-link:hover {
    color: var(--se-accent-strong);
}

.content[b-cltgzrpgg8] {
    padding: 1.5rem 2rem 4rem;
    flex: 1;
}

@media (max-width: 640.98px) {
    .top-row[b-cltgzrpgg8] {
        justify-content: space-between;
        padding: 0 0.85rem;
    }

    .top-row[b-cltgzrpgg8]  a,
    .top-row[b-cltgzrpgg8]  .btn-link {
        margin-left: 0;
    }

    .content[b-cltgzrpgg8] {
        padding: 1rem;
    }
}

@media (min-width: 641px) {
    .page[b-cltgzrpgg8] {
        flex-direction: row;
    }

    .sidebar[b-cltgzrpgg8] {
        width: 232px;
        height: 100vh;
        position: sticky;
        top: 0;
        overflow: hidden;
        display: flex;
        flex-direction: column;
        transition: width var(--se-transition-fast, 0.1s ease);
    }

    /* MS25-β.3 — Rail mode. 56px width by default; hover-expands back
       to 232px as an overlay so content below doesn't reflow when the
       user mouses in. z-index above the article so the expanded rail
       floats over content rather than pushing it. */
    .sidebar.sidebar--rail[b-cltgzrpgg8] {
        width: 56px;
        z-index: 5;
    }
    .sidebar.sidebar--rail:hover[b-cltgzrpgg8] {
        width: 232px;
    }
}
/* /Layout/NavMenu.razor.rz.scp.css */
/* MS24 — Modernised NavMenu chrome (light-sidebar redesign).
   Drops the Bootstrap navbar-dark scaffold + redundant `bi`
   list-nested SVG icons (every nav item had the same icon — visual
   noise without informational value) + refines the brand mark,
   nav-item typography, and active-state language.

   Design language (2025 SaaS — Linear/Vercel/Notion idiom):
     - Light warm-grey sidebar instead of the navy→purple gradient
     - 14px (0.875rem) compact nav items with tracked-out group
       headers
     - Active state: small left orange tab + subtle orange-tinted
       background + brand-orange text; everything else stays quiet
     - Brand mark at top: small orange square + "SE Worldwide"
       wordmark, no boxed dark band
     - Group dividers as hairlines, not borders
     - Custom thin scrollbar for the long nav

   Scott directive: "put your design hat on for a bit and focus on
   some of the newer design thoughts/concepts that have been
   discussed around the internet over the last year". */

/* ---- Brand bar at top of sidebar -------------------------------- */

.top-row[b-tmidf0gymm] {
    min-height: 3rem;
    background: transparent;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.9rem 1rem 0.85rem;
    border-bottom: 1px solid rgba(0, 0, 0, 0.04);
    margin-bottom: 0.25rem;
}

.navbar-brand[b-tmidf0gymm] {
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: -0.015em;
    color: #18181b;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
}

.navbar-brand[b-tmidf0gymm]::before {
    content: '';
    display: inline-block;
    width: 0.65rem;
    height: 0.65rem;
    background: #f97316;
    border-radius: 0.15rem;
    box-shadow: 0 0 0 2px rgba(249, 115, 22, 0.18);
}

.navbar-toggler[b-tmidf0gymm] {
    background: transparent;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: 0.3rem;
    padding: 0.25rem 0.5rem;
    cursor: pointer;
}

.navbar-toggler-icon[b-tmidf0gymm] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2371717a'%3E%3Cpath d='M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4A.5.5 0 0 1 3 3.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
}

/* ---- Scrollable nav --------------------------------------------- */

.nav-scrollable[b-tmidf0gymm] {
    padding: 0.5rem 0 1rem;
}

/* MS25-β.3 — Top row containing spotlight + rail-toggle. */
.nav-top-row[b-tmidf0gymm] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.5rem 0.75rem 0;
}

/* Rail-mode toggle — small square button next to the spotlight. */
.nav-rail-toggle[b-tmidf0gymm] {
    flex-shrink: 0;
    width: 1.85rem;
    height: 1.85rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--se-color-surface);
    border: 1px solid var(--se-color-border-default);
    border-radius: var(--se-radius-md);
    color: var(--se-color-text-muted);
    cursor: pointer;
    transition: background-color var(--se-transition-fast),
                border-color var(--se-transition-fast),
                color var(--se-transition-fast);
}
.nav-rail-toggle:hover[b-tmidf0gymm] {
    background: var(--se-color-surface-sunken);
    border-color: var(--se-color-border-strong);
    color: var(--se-color-text-default);
}
.nav-rail-toggle:focus-visible[b-tmidf0gymm] {
    outline: none;
    border-color: var(--se-color-accent);
    box-shadow: 0 0 0 2px var(--se-color-accent-ring);
}

/* MS25-β.1 — Spotlight bar at the top of the sidebar. Visible
   affordance for the command palette (γ) — click opens, hover shows
   the hotkey hint, focus-visible draws an orange ring to match the
   rest of the app's focus chrome. Renders as a button (semantically
   correct since it triggers an overlay), styled to look like a
   search input so the affordance reads "type to find" at first
   glance. The actual typing happens inside the palette modal. */
.nav-spotlight[b-tmidf0gymm] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: calc(100% - 1.5rem);
    margin: 0.5rem 0.75rem 0.75rem;
    padding: 0.45rem 0.65rem;
    background: var(--se-color-surface);
    border: 1px solid var(--se-color-border-default);
    border-radius: var(--se-radius-md);
    color: var(--se-color-text-muted);
    font-size: 0.82rem;
    cursor: pointer;
    transition: border-color var(--se-transition-fast),
                background-color var(--se-transition-fast),
                color var(--se-transition-fast);
}

.nav-spotlight:hover[b-tmidf0gymm] {
    border-color: var(--se-color-border-strong);
    background: var(--se-color-surface-sunken);
}

.nav-spotlight:focus-visible[b-tmidf0gymm] {
    outline: none;
    border-color: var(--se-color-accent);
    box-shadow: 0 0 0 2px var(--se-color-accent-ring);
}

.nav-spotlight-icon[b-tmidf0gymm] {
    font-size: 0.95rem;
    color: var(--se-color-text-muted);
    line-height: 1;
}

.nav-spotlight-placeholder[b-tmidf0gymm] {
    flex: 1;
    text-align: left;
    color: var(--se-color-text-muted);
}

.nav-spotlight-hotkey[b-tmidf0gymm] {
    font-family: var(--se-font-mono, ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace);
    font-size: 0.7rem;
    color: var(--se-color-text-subtle);
    background: var(--se-color-surface-sunken);
    border: 1px solid var(--se-color-border-subtle);
    border-radius: var(--se-radius-sm);
    padding: 0.05rem 0.35rem;
    line-height: 1.3;
}

.nav[b-tmidf0gymm] {
    flex-direction: column;
    gap: 0.1rem;
}

/* ---- Group headers + dividers ----------------------------------- */

.nav-group[b-tmidf0gymm] {
    margin-top: 0.25rem;
}

.nav-group + .nav-group[b-tmidf0gymm] {
    margin-top: 0.85rem;
    padding-top: 0.55rem;
    border-top: 1px solid rgba(0, 0, 0, 0.05);
}

.nav-group-header[b-tmidf0gymm] {
    color: #a1a1aa;
    font-size: 0.66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    margin: 0;
    padding: 0.35rem 1rem 0.3rem;
}

/* ---- Nav items + links ------------------------------------------ */

.nav-item[b-tmidf0gymm] {
    padding: 0;
    margin: 0;
}

    .nav-item[b-tmidf0gymm]  a {
        color: #3f3f46;
        font-size: 0.85rem;
        font-weight: 500;
        line-height: 1.35;
        /* MS25 — `min-height` (not `height`) so two-line wrapped labels
           — AI Corrective Action Suggestions, AI Recordability
           Suggestions, etc. — grow rather than overflowing into the
           next item. Pair with vertical padding so two-line items get
           visible breathing room and the visible gap between every
           item stays consistent regardless of wrap state. Scott
           surfaced: "the line spacing is too cramped". */
        min-height: 2.1rem;
        display: flex;
        align-items: center;
        padding: 0.35rem 0.85rem;
        margin: 0 0.5rem;
        border-radius: 0.375rem;
        text-decoration: none;
        position: relative;
        transition: background 0.12s ease, color 0.12s ease, transform 0.12s ease;
    }

.nav-item[b-tmidf0gymm]  a:hover {
    background: rgba(24, 24, 27, 0.04);
    color: #18181b;
    text-decoration: none;
}

.nav-item[b-tmidf0gymm]  a.active {
    background: rgba(249, 115, 22, 0.09);
    color: #c2410c;
    font-weight: 600;
}

.nav-item[b-tmidf0gymm]  a.active::before {
    content: '';
    position: absolute;
    left: -0.25rem;
    /* MS25 — Anchor the tab to a fixed vertical span centered on
       the item, not top/bottom-offset that grew arbitrarily on
       wrapped two-line entries (made the tab tower the full label
       height which looked off). */
    top: 50%;
    transform: translateY(-50%);
    height: 1.1rem;
    width: 3px;
    background: #f97316;
    border-radius: 2px;
}

/* ---- Drop the legacy 'bi' icon spans entirely ------------------
   Every nav link had the same list-nested icon (visual noise, no
   per-link information). Hide the spans rather than removing
   them from markup so a future design pass can introduce
   purposeful per-section icons via a new class without churning
   the per-page NavLink markup. */
.nav-item[b-tmidf0gymm]  .bi {
    display: none;
}

/* ---- Mobile collapse -------------------------------------------- */

@media (min-width: 641px) {
    .navbar-toggler[b-tmidf0gymm] {
        display: none;
    }

    .collapse[b-tmidf0gymm] {
        display: block;
    }

    .nav-scrollable[b-tmidf0gymm] {
        height: calc(100vh - 3rem);
        overflow-y: auto;
        overflow-x: hidden;
        scrollbar-width: thin;
        scrollbar-color: #d4d4d8 transparent;
    }

    .nav-scrollable[b-tmidf0gymm]::-webkit-scrollbar {
        width: 6px;
    }

    .nav-scrollable[b-tmidf0gymm]::-webkit-scrollbar-thumb {
        background: #d4d4d8;
        border-radius: 3px;
    }

    .nav-scrollable[b-tmidf0gymm]::-webkit-scrollbar-track {
        background: transparent;
    }
}

@media (max-width: 640.98px) {
    .top-row[b-tmidf0gymm] {
        background: #fafafa;
    }
}
/* /Layout/OfflineDataBanner.razor.rz.scp.css */
.offline-data-banner[b-vnh7zgq833] {
    padding: 0.4rem 0.9rem;
    margin-bottom: 0.75rem;
    border-radius: 6px;
    background: #fdf3e3;
    color: #8a5a14;
    border: 1px solid #e7c98c;
    font-size: 0.85rem;
    line-height: 1.4;
}
/* /Layout/OfflineStatusIndicator.razor.rz.scp.css */
.offline-indicator[b-i1ke7s3kp9] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0.7rem;
    border-radius: 999px;
    font-size: 0.8rem;
    line-height: 1.4;
    white-space: nowrap;
}

.offline-indicator.is-offline[b-i1ke7s3kp9] {
    background: #fbeaea;
    color: #8a1f1f;
    border: 1px solid #e6b8b8;
}

.offline-indicator.is-pending[b-i1ke7s3kp9] {
    background: #eef3fb;
    color: #1f3a5f;
    border: 1px solid #c2d3ec;
}

/* ADR-78 / M210 — conflicts need a decision, not just connectivity:
   amber, more prominent than the informational pending pill. */
.offline-indicator.is-conflict[b-i1ke7s3kp9] {
    background: #fdf3e3;
    color: #8a5a14;
    border: 1px solid #e7c98c;
}

.offline-indicator.is-conflict a.offline-sync[b-i1ke7s3kp9] {
    text-decoration: none;
}

.offline-dot[b-i1ke7s3kp9] {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: #c0392b;
    flex: 0 0 auto;
}

.offline-text[b-i1ke7s3kp9] {
    font-weight: 600;
}

.offline-sync[b-i1ke7s3kp9] {
    appearance: none;
    border: 1px solid currentColor;
    background: transparent;
    color: inherit;
    font: inherit;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.05rem 0.5rem;
    border-radius: 999px;
    cursor: pointer;
}

.offline-sync:hover[b-i1ke7s3kp9] {
    background: rgba(31, 58, 95, 0.08);
}
/* /Pages/Billing.razor.rz.scp.css */
/* M32 — customer-facing billing page. Visual posture matches the list pages
   (simple table-like layout) rather than the operator UI in se.Management. */

.billing-page[b-7d79ag871w] {
    padding: 1rem;
}

.billing-summary[b-7d79ag871w] {
    display: grid;
    grid-template-columns: 200px 1fr;
    row-gap: 0.5rem;
    column-gap: 1rem;
    margin-top: 1rem;
}

.billing-summary dt[b-7d79ag871w] {
    font-weight: 600;
    color: #6b7280;
    font-size: 0.875rem;
}

.billing-summary dd[b-7d79ag871w] { margin: 0; }

.billing-summary code[b-7d79ag871w] {
    background: #f3f4f6;
    padding: 0.125rem 0.375rem;
    border-radius: 3px;
    font-size: 0.875rem;
}

.billing-empty[b-7d79ag871w],
.billing-forbidden[b-7d79ag871w] {
    background: #f9fafb;
    border: 1px dashed #d1d5db;
    border-radius: 6px;
    padding: 1.5rem;
    max-width: 40rem;
}

.billing-actions[b-7d79ag871w] {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid #e5e7eb;
}

/* Status badges — mirrors se.Management's treatment so operators and customers
   see the same visual language for the same states. */
.status[b-7d79ag871w] {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-weight: 600;
}

.status-active[b-7d79ag871w] { background: #d1fae5; color: #065f46; }
.status-trialing[b-7d79ag871w] { background: #dbeafe; color: #1e40af; }
.status-pendingpayment[b-7d79ag871w] { background: #fef3c7; color: #92400e; }
.status-pastdue[b-7d79ag871w] { background: #fef3c7; color: #92400e; }
.status-cancelled[b-7d79ag871w] { background: #fee2e2; color: #991b1b; }
/* /Pages/ChemicalSafety.razor.rz.scp.css */
/* MS20 + M269γ — Chemical-safety overview page styles. Matches the
   project's plain HTML/CSS hand-written component convention (per
   CLAUDE.md); no Telerik, no third-party components.

   M269γ slice 7 added multi-site dashboard surfaces:
   - Site picker
   - Inventory table with breach pills
   - Storage location list
   - SDS library grid with pictograms
   - Compatibility-check + drill-down nav links */

/* Site picker */

.chemical-safety-site-picker-card[b-9uk65rk00t] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.25rem 1.75rem;
    margin-bottom: 1.5rem;
}

.chemical-safety-site-picker-label[b-9uk65rk00t] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-weight: 600;
    color: #0f172a;
    font-size: 1rem;
}

.chemical-safety-site-picker-label select[b-9uk65rk00t] {
    padding: 0.45rem 0.75rem;
    border: 1px solid #cbd5e1;
    border-radius: 0.375rem;
    background: #ffffff;
    font-size: 0.95rem;
    color: #0f172a;
    min-width: 220px;
}

.chemical-safety-site-picker-context[b-9uk65rk00t] {
    margin: 0;
    color: #64748b;
    font-size: 0.9rem;
}

/* MS25-α.2 — .chemical-safety-inventory-table was a bespoke clone of
   the .data-grid pattern. Markup is now reclassed to .data-grid;
   action-cell .chemical-safety-table-actions becomes the shared
   .col-actions modifier. Whole 40+-line block deleted; no per-page
   replacement needed — the shared rule covers every property the
   bespoke variant set. */

/* Breach pills (replaces the MS20 single-card breach block) */

.chemical-safety-breach-pill[b-9uk65rk00t] {
    display: inline-block;
    padding: 0.2rem 0.65rem;
    border-radius: 999px;
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.4;
}

.chemical-safety-breach-pill--exceeded[b-9uk65rk00t] {
    background: #fef2f2;
    color: #b91c1c;
    border: 1px solid #fecaca;
}

.chemical-safety-breach-pill--approaching[b-9uk65rk00t] {
    background: #fef3c7;
    color: #a16207;
    border: 1px solid #fde68a;
}

.chemical-safety-breach-pill--safe[b-9uk65rk00t] {
    background: #ecfdf5;
    color: #047857;
    border: 1px solid #a7f3d0;
}

.chemical-safety-breach-pill--unknown[b-9uk65rk00t] {
    background: #f1f5f9;
    color: #64748b;
    border: 1px solid #e2e8f0;
}

/* Storage locations */

.chemical-safety-storage-list[b-9uk65rk00t] {
    list-style: none;
    margin: 1.25rem 0 0;
    padding: 0;
}

.chemical-safety-storage-item[b-9uk65rk00t] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.85rem 1rem;
    border: 1px solid #e2e8f0;
    border-radius: 0.5rem;
    margin-bottom: 0.5rem;
    background: #f8fafc;
}

.chemical-safety-storage-info[b-9uk65rk00t] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.chemical-safety-storage-info strong[b-9uk65rk00t] {
    color: #0f172a;
    font-weight: 600;
}

.chemical-safety-storage-kind[b-9uk65rk00t] {
    color: #64748b;
    font-size: 0.85rem;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
}

.chemical-safety-storage-actions[b-9uk65rk00t] {
    display: flex;
    gap: 1rem;
}

.chemical-safety-text-link[b-9uk65rk00t] {
    color: #c2410c;
    font-weight: 600;
    text-decoration: none;
    font-size: 0.88rem;
}

.chemical-safety-text-link:hover[b-9uk65rk00t] {
    text-decoration: underline;
}

/* SDS library grid */

.chemical-safety-sds-grid[b-9uk65rk00t] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1rem;
    margin-top: 1.25rem;
}

.chemical-safety-sds-tile[b-9uk65rk00t] {
    border: 1px solid #e2e8f0;
    border-radius: 0.5rem;
    padding: 1rem 1.1rem;
    background: #f8fafc;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
}

.chemical-safety-sds-tile-header h3[b-9uk65rk00t] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
}

.chemical-safety-sds-tile-meta[b-9uk65rk00t] {
    margin: 0.2rem 0 0;
    color: #64748b;
    font-size: 0.85rem;
}

.chemical-safety-sds-tile-body[b-9uk65rk00t] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.chemical-safety-sds-tile-signalword[b-9uk65rk00t] {
    margin: 0;
    color: #b91c1c;
    font-weight: 700;
    font-size: 0.95rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.chemical-safety-sds-tile-actions[b-9uk65rk00t] {
    display: flex;
    gap: 1rem;
    border-top: 1px solid #e2e8f0;
    padding-top: 0.6rem;
}

/* Empty state */

.chemical-safety-empty-state[b-9uk65rk00t] {
    color: #64748b;
    font-style: italic;
    padding: 1rem 0;
}

.chemical-safety-empty-state a[b-9uk65rk00t] {
    color: #c2410c;
    font-weight: 600;
    text-decoration: none;
}

/* MS20 — Chemical-safety overview page styles. Matches the project's
   plain HTML/CSS hand-written component convention (per CLAUDE.md);
   no Telerik, no third-party components. */

.chemical-safety-page[b-9uk65rk00t] {
    max-width: 1100px;
    margin: 0 auto;
    padding: 1.5rem 1.5rem 4rem;
}

/* MS25-β — .chemical-safety-hero + .chemical-safety-subtitle picked up
   by the shared .page-header rule in app.css. The class is kept on
   the markup as a compatibility shim; this scoped block is the
   per-page hero's bespoke chemistry that the shared rule didn't cover
   (currently nothing — the shared rule covers every property the old
   hero set). When the next chemical-safety-specific hero treatment is
   needed it lands here. */

/* MS25-α.3 — chrome (bg / border / radius / padding / shadow) joins
   the .card primitive in app.css. The per-page margin-bottom for
   stacking multiple cards down the page stays here — it's the
   layout rhythm, not the chrome. */
.chemical-safety-card[b-9uk65rk00t] {
    margin-bottom: var(--se-space-6);
}

.chemical-safety-card-header h2[b-9uk65rk00t] {
    margin: 0;
    font-size: 1.35rem;
    color: #0f172a;
    font-weight: 700;
}

.chemical-safety-card-header p[b-9uk65rk00t] {
    margin: 0.35rem 0 0;
    color: #64748b;
    font-size: 0.92rem;
}

/* SDS card layout */

.chemical-safety-sds-manufacturer[b-9uk65rk00t] {
    margin: 0.25rem 0 0;
    color: #64748b;
    font-size: 0.9rem;
}

.chemical-safety-sds-row[b-9uk65rk00t] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 2rem;
    margin-top: 1.25rem;
    align-items: start;
}

.chemical-safety-pictograms[b-9uk65rk00t] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
}

.chemical-safety-signal-word[b-9uk65rk00t] {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: #b91c1c;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.chemical-safety-sds-codes h3[b-9uk65rk00t] {
    margin: 0 0 0.5rem;
    font-size: 0.85rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #475569;
}

.chemical-safety-code-list[b-9uk65rk00t] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.chemical-safety-code-list li[b-9uk65rk00t] {
    background: #fef3c7;
    border: 1px solid #fcd34d;
    border-radius: 0.375rem;
    padding: 0.25rem 0.6rem;
    font-size: 0.85rem;
}

.chemical-safety-code-list code[b-9uk65rk00t] {
    font-family: 'SFMono-Regular', Menlo, Consolas, monospace;
    color: #92400e;
}

.chemical-safety-sds-details[b-9uk65rk00t] {
    margin-top: 1.25rem;
    border-top: 1px solid #f1f5f9;
    padding-top: 1rem;
}

.chemical-safety-sds-details summary[b-9uk65rk00t] {
    cursor: pointer;
    font-weight: 600;
    color: #0f172a;
    font-size: 0.95rem;
}

.chemical-safety-section-content[b-9uk65rk00t] {
    margin: 0.75rem 0 0;
    color: #334155;
    font-size: 0.9rem;
    white-space: pre-wrap;
    line-height: 1.5;
}

/* Inventory + breach panel */

.chemical-safety-inventory-subtitle[b-9uk65rk00t],
.chemical-safety-regulatory-subtitle[b-9uk65rk00t],
.chemical-safety-conformance-subtitle[b-9uk65rk00t] {
    color: #64748b;
    font-size: 0.92rem;
}

.chemical-safety-breach[b-9uk65rk00t] {
    margin-top: 1.25rem;
    padding: 1.25rem;
    border-radius: 0.5rem;
    border-left: 4px solid currentColor;
}

.chemical-safety-breach--exceeded[b-9uk65rk00t] {
    background: #fef2f2;
    color: #b91c1c;
}

.chemical-safety-breach--approaching[b-9uk65rk00t] {
    background: #fef3c7;
    color: #a16207;
}

.chemical-safety-breach--safe[b-9uk65rk00t] {
    background: #ecfdf5;
    color: #047857;
}

.chemical-safety-breach-title[b-9uk65rk00t] {
    margin: 0;
    font-weight: 700;
    font-size: 1.05rem;
}

.chemical-safety-breach-quantity[b-9uk65rk00t] {
    margin: 0.5rem 0 0;
    color: #334155;
    font-size: 0.92rem;
}

.chemical-safety-breach-quantity em[b-9uk65rk00t] {
    color: #64748b;
    font-style: italic;
}

/* Regulatory actions */

.chemical-safety-regulatory-actions[b-9uk65rk00t] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.25rem;
}

/* Multi-jurisdiction conformance grid */

.chemical-safety-regulator-grid[b-9uk65rk00t] {
    list-style: none;
    margin: 1.25rem 0 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0.75rem;
}

.chemical-safety-regulator-grid li[b-9uk65rk00t] {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 0.5rem;
    padding: 0.85rem 1rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
}

.chemical-safety-regulator-name[b-9uk65rk00t] {
    color: #0f172a;
    font-size: 0.9rem;
    font-weight: 600;
}

.chemical-safety-regulator-link[b-9uk65rk00t] {
    color: #c2410c;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
}

.chemical-safety-regulator-link:hover[b-9uk65rk00t] {
    text-decoration: underline;
}

/* Prop 65 panel */

.chemical-safety-prop65-body[b-9uk65rk00t] {
    margin: 0.75rem 0 1rem;
    color: #334155;
    font-size: 0.95rem;
    line-height: 1.55;
}
/* /Pages/GettingStarted.razor.rz.scp.css */
/* ADR-107 / M328 — Tenant onboarding-readiness checklist. Reuses the
   global .status-* badge classes for per-step status; this file styles
   only the page chrome (progress bar + checklist layout). */

.onboarding-page[b-3sm6tf0kul] {
    max-width: 56rem;
}

.onboarding-page-header[b-3sm6tf0kul] {
    margin-bottom: var(--se-space-6);
    padding-bottom: var(--se-space-3);
    border-bottom: 1px solid var(--se-color-border-default);
}

.onboarding-meta[b-3sm6tf0kul] {
    margin-top: var(--se-space-2);
    color: var(--se-color-text-muted);
}

.onboarding-progress[b-3sm6tf0kul] {
    margin-bottom: var(--se-space-6);
}

.onboarding-progress-count[b-3sm6tf0kul],
.onboarding-progress-done[b-3sm6tf0kul] {
    margin: 0 0 var(--se-space-2);
    font-weight: 600;
}

.onboarding-progress-done[b-3sm6tf0kul] {
    color: var(--se-color-success-fg);
}

.onboarding-progress-bar[b-3sm6tf0kul] {
    height: 0.5rem;
    border-radius: var(--se-radius-sm);
    background: var(--se-color-surface-sunken);
    overflow: hidden;
}

.onboarding-progress-bar-fill[b-3sm6tf0kul] {
    height: 100%;
    background: var(--se-color-accent);
    transition: width 0.3s ease;
}

.onboarding-checklist[b-3sm6tf0kul] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--se-space-3);
}

.onboarding-step[b-3sm6tf0kul] {
    display: flex;
    gap: var(--se-space-4);
    padding: var(--se-space-4);
    border: 1px solid var(--se-color-border-default);
    border-radius: var(--se-radius-md);
    background: var(--se-color-surface);
}

.onboarding-step--complete[b-3sm6tf0kul] {
    border-color: var(--se-color-success-bg);
    background: var(--se-color-surface-sunken);
}

.onboarding-step-marker[b-3sm6tf0kul] {
    flex-shrink: 0;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    border: 2px solid var(--se-color-border-strong);
    display: flex;
    align-items: center;
    justify-content: center;
}

.onboarding-step--complete .onboarding-step-marker[b-3sm6tf0kul] {
    border-color: var(--se-color-success-fg);
    background: var(--se-color-success-fg);
}

.onboarding-step-check[b-3sm6tf0kul] {
    color: var(--se-color-text-inverse);
    font-size: 0.9rem;
    line-height: 1;
}

.onboarding-step-body[b-3sm6tf0kul] {
    flex: 1;
}

.onboarding-step-head[b-3sm6tf0kul] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--se-space-3);
    margin-bottom: var(--se-space-2);
}

.onboarding-step-title[b-3sm6tf0kul] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--se-color-text-strong);
}

.onboarding-step-copy[b-3sm6tf0kul] {
    margin: 0 0 var(--se-space-2);
    color: var(--se-color-text-default);
}

.onboarding-step-action[b-3sm6tf0kul] {
    display: inline-block;
}
/* /Pages/Home.razor.rz.scp.css */
/* M217 — offline-reachable "Recently viewed" card. Deliberately quiet
   chrome: it sits under the welcome block and never competes with the
   reporting/posting alert banners above it. */
.recently-viewed[b-u4nwcif4ol] {
    margin-top: 1.5rem;
}

.recently-viewed h2[b-u4nwcif4ol] {
    font-size: 1rem;
    color: #4a5568;
    margin-bottom: 0.5rem;
}

.recently-viewed-list[b-u4nwcif4ol] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.recently-viewed-list a[b-u4nwcif4ol] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.5rem;
    text-decoration: none;
    color: #1f3a5f;
}

.recently-viewed-list a:hover[b-u4nwcif4ol] {
    text-decoration: underline;
}

.recently-viewed-label[b-u4nwcif4ol] {
    font-weight: 600;
}

.recently-viewed-id[b-u4nwcif4ol] {
    font-size: 0.8rem;
    color: #8a94a6;
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
/* /Pages/LocationQrCodes.razor.rz.scp.css */
.qr-page[b-m69x2ku2k3] {
    max-width: 980px;
    margin: 0 auto;
    padding: 1.5rem;
}

.qr-page-header[b-m69x2ku2k3] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.qr-page-header h1[b-m69x2ku2k3] {
    margin: 0 0 0.25rem;
}

.qr-page-intro[b-m69x2ku2k3] {
    margin: 0;
    color: var(--text-muted, #555);
    max-width: 60ch;
}

.qr-empty[b-m69x2ku2k3],
.qr-hint[b-m69x2ku2k3] {
    color: var(--text-muted, #555);
}

.qr-grid[b-m69x2ku2k3] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 1.25rem;
}

.qr-card[b-m69x2ku2k3] {
    border: 1px solid var(--border, #d6d6d6);
    border-radius: 8px;
    padding: 1.25rem;
    text-align: center;
    background: #fff;
    break-inside: avoid;
    page-break-inside: avoid;
}

.qr-card-image[b-m69x2ku2k3] {
    width: 180px;
    height: 180px;
    image-rendering: pixelated;
}

.qr-card-title[b-m69x2ku2k3] {
    margin: 0.75rem 0 0;
    font-size: 1.05rem;
}

.qr-card-region[b-m69x2ku2k3] {
    margin: 0.15rem 0 0;
    color: var(--text-muted, #555);
    font-size: 0.9rem;
}

.qr-card-caption[b-m69x2ku2k3] {
    margin: 0.5rem 0 0;
    font-size: 0.85rem;
    color: var(--text-muted, #555);
}
/* /Pages/NoAccess.razor.rz.scp.css */
/* M345 (F2) — Full-page no-access state. Centred card on the bare
   viewport (App.razor renders this outside MainLayout, so there's no
   sidebar/topbar chrome to align to). */

.no-access[b-uhfbjkde9p] {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--se-space-6);
    background: var(--se-color-surface-sunken);
}

.no-access-card[b-uhfbjkde9p] {
    max-width: 32rem;
    text-align: center;
    padding: var(--se-space-8);
    border: 1px solid var(--se-color-border-default);
    border-radius: var(--se-radius-md);
    background: var(--se-color-surface);
}

.no-access-heading[b-uhfbjkde9p] {
    margin: 0 0 var(--se-space-4);
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--se-color-text-strong);
}

.no-access-body[b-uhfbjkde9p] {
    margin: 0 0 var(--se-space-6);
    color: var(--se-color-text-default);
}
/* /Pages/SdsMobile.razor.rz.scp.css */
/* M269γ slice 8 — Mobile-first SDS view styles. Single-column,
   high-contrast, large-text. Designed for arm's-length reading on
   a phone during a chemical incident on the floor. */

.sds-mobile-page[b-iucljixdf6] {
    max-width: 480px;
    margin: 0 auto;
    padding: 1rem 1rem 3rem;
    font-size: 1.05rem;
    line-height: 1.5;
    color: #0f172a;
}

.sds-mobile-header[b-iucljixdf6] {
    border-bottom: 2px solid #b91c1c;
    padding-bottom: 1.25rem;
    margin-bottom: 1.5rem;
    text-align: center;
}

.sds-mobile-header h1[b-iucljixdf6] {
    margin: 0;
    font-size: 1.6rem;
    font-weight: 800;
    letter-spacing: -0.015em;
}

.sds-mobile-manufacturer[b-iucljixdf6] {
    margin: 0.35rem 0 0;
    color: #64748b;
    font-size: 0.92rem;
}

.sds-mobile-pictograms[b-iucljixdf6] {
    margin-top: 1rem;
    display: flex;
    justify-content: center;
}

.sds-mobile-signal-word[b-iucljixdf6] {
    margin: 1rem 0 0;
    color: #b91c1c;
    font-size: 1.5rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.sds-mobile-hazards[b-iucljixdf6] {
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 0.5rem;
    padding: 0.85rem 1rem;
    margin-bottom: 1.25rem;
}

.sds-mobile-hazards h2[b-iucljixdf6] {
    margin: 0 0 0.5rem;
    font-size: 0.95rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #b91c1c;
}

.sds-mobile-h-code-list[b-iucljixdf6],
.sds-mobile-p-code-list[b-iucljixdf6] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.sds-mobile-h-code-list li[b-iucljixdf6] {
    background: #ffffff;
    border: 1px solid #fca5a5;
    border-radius: 0.375rem;
    padding: 0.2rem 0.55rem;
}

.sds-mobile-p-code-list li[b-iucljixdf6] {
    background: #f1f5f9;
    border: 1px solid #cbd5e1;
    border-radius: 0.375rem;
    padding: 0.2rem 0.55rem;
}

.sds-mobile-h-code-list code[b-iucljixdf6],
.sds-mobile-p-code-list code[b-iucljixdf6] {
    font-family: 'SFMono-Regular', Menlo, Consolas, monospace;
    font-size: 0.88rem;
}

.sds-mobile-section[b-iucljixdf6] {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 0.5rem;
    margin-bottom: 0.75rem;
    overflow: hidden;
}

.sds-mobile-section summary[b-iucljixdf6] {
    cursor: pointer;
    padding: 0.75rem 1rem;
    font-weight: 700;
    font-size: 0.98rem;
    background: #f8fafc;
    color: #0f172a;
}

.sds-mobile-section[open] summary[b-iucljixdf6] {
    border-bottom: 1px solid #e2e8f0;
}

.sds-mobile-section-body[b-iucljixdf6] {
    margin: 0;
    padding: 0.85rem 1rem;
    font-size: 0.95rem;
    color: #334155;
    white-space: pre-wrap;
}

.sds-mobile-footer[b-iucljixdf6] {
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid #e2e8f0;
}

.sds-mobile-footer dl[b-iucljixdf6] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.35rem 1rem;
    margin: 0;
    font-size: 0.88rem;
}

.sds-mobile-footer dt[b-iucljixdf6] {
    color: #64748b;
    font-weight: 600;
}

.sds-mobile-footer dd[b-iucljixdf6] {
    margin: 0;
    color: #0f172a;
}

.sds-mobile-backlink[b-iucljixdf6] {
    display: block;
    margin-top: 1.25rem;
    color: #c2410c;
    font-weight: 600;
    text-decoration: none;
    font-size: 0.92rem;
}

.sds-mobile-backlink:hover[b-iucljixdf6] {
    text-decoration: underline;
}

.sds-mobile-error[b-iucljixdf6] {
    color: #b91c1c;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 0.5rem;
    padding: 1rem;
    text-align: center;
}
