/* /Components/GlobalControls/AccountDropDown.razor.rz.scp.css */
.account-selector[b-8n2ktepuce] {
    position: relative;
    width: 100%;
    max-width: 360px;
    display: flex;
    align-items: center;
    gap: 0.35rem;
}

.account-selector-trigger[b-8n2ktepuce] {
    cursor: pointer;
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Super-admin copy-account-name button */
.account-copy-btn[b-8n2ktepuce] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.1rem;
    height: 2.1rem;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--bs-secondary-color, #777);
    cursor: pointer;
    font-size: 0.95rem;
}

.account-copy-btn:hover[b-8n2ktepuce] {
    background: var(--bs-secondary-bg, rgba(0, 0, 0, 0.06));
    color: var(--bs-body-color);
}

.account-selector-backdrop[b-8n2ktepuce] {
    position: fixed;
    inset: 0;
    z-index: 1040;
    background: transparent;
}

.account-selector-panel[b-8n2ktepuce] {
    position: fixed;
    z-index: 1050;
    max-height: 400px;
    background: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 6px;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.18);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 280px;
}

.account-selector-search[b-8n2ktepuce] {
    border: 0;
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 0;
    padding: 0.625rem 0.875rem;
}

.account-selector-search:focus[b-8n2ktepuce] {
    box-shadow: none;
    border-color: var(--bs-border-color, #dee2e6);
    border-bottom-color: var(--bs-primary, #0d6efd);
}

.account-selector-list[b-8n2ktepuce] {
    max-height: 320px;
    min-height: 36px;
    overflow-y: auto;
}

.account-selector-item[b-8n2ktepuce] {
    padding: 8px 12px;
    height: 66px;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.04);
    line-height: 1.25;
}

.account-selector-item:hover[b-8n2ktepuce] {
    background: rgba(var(--bs-primary-rgb, 13, 110, 253), 0.08);
}

.account-selector-item.selected[b-8n2ktepuce] {
    background: rgba(var(--bs-primary-rgb, 13, 110, 253), 0.14);
    font-weight: 500;
}

/* Keyboard highlight (arrow keys / first search match). The inset bar distinguishes it
   from the mouse :hover tint and marks the row that Enter will select. */
.account-selector-item.active[b-8n2ktepuce] {
    background: rgba(var(--bs-primary-rgb, 13, 110, 253), 0.18);
    box-shadow: inset 3px 0 0 var(--bs-primary, #0d6efd);
}

.account-selector-name[b-8n2ktepuce] {
    font-size: 0.9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.account-selector-realm[b-8n2ktepuce] {
    font-size: 0.72rem;
    color: var(--bs-secondary-color, #6c757d);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.account-selector-empty[b-8n2ktepuce] {
    padding: 1rem;
    text-align: center;
    color: var(--bs-secondary-color, #6c757d);
    font-size: 0.85rem;
}

.account-selector-footer[b-8n2ktepuce] {
    padding: 4px 12px;
    font-size: 0.72rem;
    color: var(--bs-secondary-color, #6c757d);
    border-top: 1px solid var(--bs-border-color, #dee2e6);
    background: rgba(0, 0, 0, 0.02);
    text-align: right;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-6oemgu0pss] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-6oemgu0pss] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Pages/Admin/AccountAdmin.razor.rz.scp.css */
.ac-page h4[b-b25y4hh21m] {
    font-weight: 600;
}

.ac-card[b-b25y4hh21m] {
    border: none;
    border-radius: 0.75rem;
}

.ac-card-head[b-b25y4hh21m] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--bs-border-color);
}

.fs-nano[b-b25y4hh21m] {
    font-size: 0.72rem;
}

.ac-field[b-b25y4hh21m] {
    margin-bottom: 0.9rem;
}

.ac-switch-row[b-b25y4hh21m] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--bs-border-color);
}

.ac-switch-row:last-child[b-b25y4hh21m] {
    border-bottom: none;
}

.ac-table-wrap[b-b25y4hh21m] {
    max-height: 24rem;
    overflow-y: auto;
}

.ac-table-wrap thead th[b-b25y4hh21m] {
    position: sticky;
    top: 0;
    background: var(--bs-body-bg);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--bs-secondary-color);
}

.ac-table-wrap td[b-b25y4hh21m],
.ac-table-wrap th[b-b25y4hh21m] {
    padding: 0.45rem 1rem;
}

/* Sync-preview lists: cap and scroll — the first run can hold hundreds of rows. */
.ac-sync-list[b-b25y4hh21m] {
    max-height: 20rem;
    overflow-y: auto;
}
/* /Components/Pages/Admin/FarmersAdmin.razor.rz.scp.css */
/* Account list: scrolls inside the card so the detail pane opposite stays put
   rather than being pushed down by 650 accounts. */
.fa-list[b-y3q0tii197] {
    max-height: 32rem;
    overflow-y: auto;
}

/* ---------- phones: master/detail swap ---------- */

/* Below lg the list and detail columns stack, which buried the detail under ~650
   accounts — tapping one appeared to do nothing. Show ONE pane at a time: the list
   until an account is picked, then the detail full-width with its own "All accounts"
   back button (hidden on desktop). */
@media (max-width: 991.98px) {
    .fa-split.has-selection .fa-col-list[b-y3q0tii197] {
        display: none;
    }

    .fa-split:not(.has-selection) .fa-col-detail[b-y3q0tii197] {
        display: none;
    }

    /* The list is the only pane now — let it use the screen. */
    .fa-list[b-y3q0tii197] {
        max-height: none;
    }
}

.fa-back[b-y3q0tii197] {
    text-decoration: none;
    font-weight: 500;
}

/* Raw callflow dump — available for diagnosis, capped so it can't run away. */
.fa-pre[b-y3q0tii197] {
    background-color: var(--bs-secondary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: 0.6rem 0.8rem;
    font-size: 0.75rem;
    max-height: 26rem;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    margin-bottom: 0;
}
/* /Components/Pages/Admin/GlobalUsers.razor.rz.scp.css */
/* Initials avatar — matches the look the scaffold's inline styles had, minus the
   inline <style> block that leaked across pages. */
.gu-avatar[b-9i154jffct] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    font-size: 12px;
    font-weight: 600;
    color: #fff;
}

/* Long names/usernames truncate rather than widen the table. */
.gu-names[b-9i154jffct] {
    min-width: 0;
    max-width: 20rem;
}

.gu-account[b-9i154jffct] {
    max-width: 16rem;
}

/* ---- details modal ---- */

.gu-detail-head[b-9i154jffct] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 600;
    opacity: 0.7;
    border-bottom: 1px solid var(--bs-border-color);
    padding-bottom: 0.3rem;
    margin-bottom: 0.6rem;
}

/* Label/value pairs: labels in a fixed column so the two panels line up, values
   free to wrap (GUIDs are 32 chars and must not widen the modal). */
.gu-dl[b-9i154jffct] {
    display: grid;
    grid-template-columns: 9rem minmax(0, 1fr);
    gap: 0.25rem 0.75rem;
    font-size: 0.875rem;
    margin-bottom: 1rem;
}

    .gu-dl dt[b-9i154jffct] {
        font-weight: 500;
        color: var(--bs-secondary-color);
    }

    .gu-dl dd[b-9i154jffct] {
        margin: 0;
        min-width: 0;
        overflow-wrap: anywhere;
    }

/* The id + copy button pair. Without min-width:0 the <code> is a flex item at its
   intrinsic width — a 32-char GUID then pushes the modal into horizontal scroll
   instead of wrapping. */
.gu-idwrap[b-9i154jffct] {
    display: inline-flex;
    align-items: flex-start;
    gap: 0.25rem;
    max-width: 100%;
}

.gu-id[b-9i154jffct] {
    font-size: 0.8rem;
    min-width: 0;
    overflow-wrap: anywhere;
}

/* Phones: the label column plus a 32-char GUID doesn't fit — stack instead. */
@media (max-width: 575.98px) {
    .gu-dl[b-9i154jffct] {
        grid-template-columns: minmax(0, 1fr);
        gap: 0 0;
    }

        .gu-dl dd[b-9i154jffct] {
            margin-bottom: 0.5rem;
        }
}
/* /Components/Pages/Admin/IntegrationAdmin.razor.rz.scp.css */
/* The account name doubles as the usage-history trigger — keep it looking like
   table text, not a link, until hovered. */
.usage-name[b-og1uvq78iu] {
    text-decoration: none;
    color: inherit;
}

    .usage-name:hover[b-og1uvq78iu] {
        text-decoration: underline;
    }

/* Sortable column headers on the usage table. */
.usage-sort[b-og1uvq78iu] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.usage-sort:hover[b-og1uvq78iu] {
    background-color: var(--bs-secondary-bg);
}

/* Tier-status row tinting.
   Bootstrap's .table-danger/.table-warning set a light background, but utility
   classes inside the row (.text-muted, .btn-link) keep their own colours and end
   up washed out or clashing against it — the Messages column and the
   "N number(s)" link were both hard to read. These rules tint the row via the
   table's own CSS variables (so striping/hover still work and dark mode adapts)
   and force the text inside back to a readable, high-contrast ink. */
.usage-table > tbody > tr.tier-over[b-og1uvq78iu] {
    --bs-table-bg: var(--bs-danger-bg-subtle);
    --bs-table-color: var(--bs-danger-text-emphasis);
}

.usage-table > tbody > tr.tier-under[b-og1uvq78iu] {
    --bs-table-bg: var(--bs-warning-bg-subtle);
    --bs-table-color: var(--bs-warning-text-emphasis);
}

/* .text-muted / .btn-link set colour with their own specificity, so override
   them explicitly. Naming the emphasis colour directly (rather than `inherit`)
   matters: the muted cell IS a <td>, so `inherit` would resolve against the
   <tr> — which is transparent and keeps the default grey ink — leaving the
   Messages column washed out on the tint. */
.usage-table > tbody > tr.tier-over .text-muted[b-og1uvq78iu] {
    color: var(--bs-danger-text-emphasis) !important;
    opacity: 0.8;
}

.usage-table > tbody > tr.tier-under .text-muted[b-og1uvq78iu] {
    color: var(--bs-warning-text-emphasis) !important;
    opacity: 0.8;
}

.usage-table > tbody > tr.tier-over .btn-link[b-og1uvq78iu],
.usage-table > tbody > tr.tier-under .btn-link[b-og1uvq78iu] {
    color: inherit;
    text-decoration: underline;
}

/* The status badges sit on an already-tinted row, so give them a solid surface
   instead of the subtle one that would blend into the background. */
.usage-table > tbody > tr.tier-over .badge[b-og1uvq78iu],
.usage-table > tbody > tr.tier-under .badge[b-og1uvq78iu] {
    background-color: var(--bs-body-bg) !important;
}
/* /Components/Pages/Admin/KbArticleEditor.razor.rz.scp.css */
.kb-editor[b-yeh6liw2iw] {
    min-height: 26rem;
    background: var(--bs-body-bg, #fff);
}

.kb-html[b-yeh6liw2iw] {
    min-height: 26rem;
    font-size: 0.8rem;
    line-height: 1.4;
    white-space: pre;
    overflow-wrap: normal;
    overflow-x: auto;
}

.kb-preview[b-yeh6liw2iw] {
    min-height: 26rem;
    line-height: 1.65;
}

.kb-preview[b-yeh6liw2iw]  img {
    max-width: 100%;
    height: auto;
    border-radius: 6px;
    border: 1px solid var(--bs-border-color, #e5e7eb);
    margin: 0.5rem 0;
}

.kb-preview[b-yeh6liw2iw]  h1 { font-size: 1.5rem; margin-top: 1.5rem; }
.kb-preview[b-yeh6liw2iw]  h2 { font-size: 1.3rem; margin-top: 1.5rem; }
.kb-preview[b-yeh6liw2iw]  h3 { font-size: 1.1rem; margin-top: 1.25rem; }

.kb-related[b-yeh6liw2iw] {
    max-height: 22rem;
    overflow-y: auto;
}

.kb-related .form-check[b-yeh6liw2iw] {
    padding: 0.2rem 0 0.2rem 1.5rem;
}
/* /Components/Pages/Admin/LogsAdmin.razor.rz.scp.css */
/* Message cells: one line in the list, wrapped fully when expanded or in the modal. */
.logs-message[b-p0cwijijxk] {
    max-width: 30rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.logs-expanded[b-p0cwijijxk] {
    white-space: pre-wrap;
    word-break: break-word;
}

.logs-account[b-p0cwijijxk] {
    max-width: 12rem;
}

/* Sortable headers: the whole cell is the hit target, and the idle arrows stay
   faint so the active column's caret is the thing the eye lands on. */
.logs-sortable[b-p0cwijijxk] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.logs-sortable:hover[b-p0cwijijxk] {
    background-color: var(--bs-secondary-bg);
}

.logs-sort-idle[b-p0cwijijxk] {
    opacity: 0.25;
}

/* Payload / message dumps in the detail modal. */
.logs-pre[b-p0cwijijxk] {
    background-color: var(--bs-secondary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: 0.6rem 0.8rem;
    font-size: 0.78rem;
    max-height: 24rem;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    margin-bottom: 0;
}
/* /Components/Pages/Admin/MassComm.razor.rz.scp.css */
/* Editor height: tall enough to draft a real announcement without scrolling. The
   ::deep is required because Quill builds its DOM at runtime, outside Blazor's
   scoped-CSS attribute stamping. */
[b-uj98fjygvn] .mc-editor {
    min-height: 16rem;
}

[b-uj98fjygvn] .mc-editor .ql-editor {
    min-height: 16rem;
    font-size: 0.95rem;
}

/* Theme-follow: Quill snow ships light-theme borders/ink; map them onto the
   Bootstrap variables so dark mode doesn't produce a white box. */
[b-uj98fjygvn] .ql-toolbar.ql-snow,
[b-uj98fjygvn] .ql-container.ql-snow {
    border-color: var(--bs-border-color);
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
}

[b-uj98fjygvn] .ql-snow .ql-stroke { stroke: var(--bs-body-color); }
[b-uj98fjygvn] .ql-snow .ql-fill { fill: var(--bs-body-color); }
[b-uj98fjygvn] .ql-snow .ql-picker { color: var(--bs-body-color); }

[b-uj98fjygvn] .ql-toolbar.ql-snow {
    border-top-left-radius: var(--bs-border-radius);
    border-top-right-radius: var(--bs-border-radius);
}

[b-uj98fjygvn] .ql-container.ql-snow {
    border-bottom-left-radius: var(--bs-border-radius);
    border-bottom-right-radius: var(--bs-border-radius);
}

/* Recipient list stays inside the card no matter how many thousand addresses land
   in it. */
.mc-list[b-uj98fjygvn] {
    max-height: 22rem;
    overflow-y: auto;
}
/* /Components/Pages/Admin/NewAccountWizard.razor.rz.scp.css */
/* ---------- stepper (same visual language as the TCR pending stepper) ---------- */
.naw-stepper .step[b-fk2y3l72si] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    color: var(--bs-secondary-color);
    font-weight: 500;
    white-space: nowrap;
    font-size: 0.9rem;
}

.naw-stepper .step.current[b-fk2y3l72si] { color: var(--bs-primary); }
.naw-stepper .step.done[b-fk2y3l72si] { color: var(--bs-success); }

.naw-stepper .step-dot[b-fk2y3l72si] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    border: 2px solid currentColor;
    font-size: 0.75rem;
    font-weight: 700;
}

.naw-stepper .step-line[b-fk2y3l72si] {
    flex: 1;
    height: 2px;
    background: var(--bs-border-color);
    margin: 0 0.6rem;
    min-width: 1.25rem;
}

/* Narrow screens: keep the dots for every step but only label the current one,
   so the stepper never forces horizontal scrolling. */
@media (max-width: 575.98px) {
    .naw-stepper .step:not(.current)[b-fk2y3l72si] {
        font-size: 0;
        gap: 0;
    }

    .naw-stepper .step:not(.current) .step-dot[b-fk2y3l72si] {
        font-size: 0.75rem;
    }
}

/* ---------- derived-values preview + review panels ---------- */
.naw-preview[b-fk2y3l72si],
.naw-review[b-fk2y3l72si] {
    background-color: var(--bs-secondary-bg);
    border: 1px solid var(--bs-border-color);
}

/* ---------- build progress ---------- */
.naw-build li + li[b-fk2y3l72si] {
    border-top: 1px dashed var(--bs-border-color);
}

.naw-build-icon[b-fk2y3l72si] {
    display: inline-flex;
    width: 1.4rem;
    justify-content: center;
    padding-top: 0.15rem;
}

/* Numbers list stays compact even when someone imports a big block. */
.naw-numbers[b-fk2y3l72si] {
    max-height: 16rem;
    overflow-y: auto;
}
/* /Components/Pages/Admin/NumberAdmin.razor.rz.scp.css */
/* Callflow ids are a single 32-char token, so they need an explicit wrap rule to
   show in full rather than ellipsizing or forcing the table wide. */
.nm-cfid[b-f9r3fov8xd] {
    min-width: 0;
    overflow-wrap: anywhere;
}

/* The copy icon sits beside a wrapping id — never let it shrink or wrap away. */
.nm-copy[b-f9r3fov8xd] {
    flex: none;
}

/* Preview of the tagged caller ID. white-space: pre is the whole trick — HTML
   collapses a trailing space, which is exactly the character the operator needs
   to see, so the shaded run would otherwise end flush against the name. */
.nm-prepend-preview[b-f9r3fov8xd] {
    white-space: pre;
    background-color: rgba(var(--bs-primary-rgb), 0.14);
    border-radius: 3px 0 0 3px;
    padding: 1px 0;
    font-family: var(--bs-font-monospace);
}

.nm-prepend-caller[b-f9r3fov8xd] {
    font-family: var(--bs-font-monospace);
    background-color: rgba(var(--bs-secondary-rgb), 0.10);
    border-radius: 0 3px 3px 0;
    padding: 1px 2px 1px 0;
}

@media (max-width: 575.98px) {
    /* Features (badges like "local") are the least load-bearing column — drop them
       on phones so Number/State/Used-by/Actions fit without horizontal scroll. */
    .nm-features[b-f9r3fov8xd] {
        display: none;
    }
}
/* /Components/Pages/Admin/TcrAdmin.razor.rz.scp.css */
/* Moved out of an inline <style> block so it participates in Blazor's scoped CSS
   and can't leak into other pages. The hard-coded greys it used to carry are now
   Bootstrap variables, so the stepper and dividers follow dark mode. */

/* ---------- stage stepper on a pending registration ---------- */
.tcr-stepper .step[b-kbuhw03ste] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    color: var(--bs-secondary-color);
    font-weight: 500;
    white-space: nowrap;
}

.tcr-stepper .step.current[b-kbuhw03ste] { color: var(--bs-primary); }
.tcr-stepper .step.done[b-kbuhw03ste] { color: var(--bs-success); }

.tcr-stepper .step-dot[b-kbuhw03ste] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    border: 2px solid currentColor;
    font-size: 0.8rem;
    font-weight: 700;
}

.tcr-stepper .step-line[b-kbuhw03ste] {
    flex: 1;
    height: 2px;
    background: var(--bs-border-color);
    margin: 0 0.75rem;
    min-width: 2rem;
}

/* ---------- campaign status dot ---------- */
.status-dot[b-kbuhw03ste] {
    display: inline-block;
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 50%;
}

.status-dot.status-complete[b-kbuhw03ste] { background: var(--bs-success); }
.status-dot.status-partial[b-kbuhw03ste] { background: var(--bs-info); }
.status-dot.status-nonumbers[b-kbuhw03ste] { background: var(--bs-warning); }
.status-dot.status-noelection[b-kbuhw03ste] { background: var(--bs-danger); }

/* ---------- summary tiles that switch tabs ---------- */
.tcr-tile[b-kbuhw03ste] {
    cursor: pointer;
    transition: transform .12s ease, box-shadow .12s ease;
}

.tcr-tile:hover[b-kbuhw03ste] {
    transform: translateY(-2px);
    box-shadow: var(--bs-box-shadow) !important;
}

/* The tile for the open tab reads as pressed rather than merely hovered, so the
   tiles and the tab strip never disagree about where you are. */
.tcr-tile.active[b-kbuhw03ste] {
    background-color: var(--bs-secondary-bg);
}

.tcr-tile.active h6[b-kbuhw03ste] {
    color: var(--bs-body-color) !important;
}

/* ---------- sortable column headers ---------- */
.tcr-sort[b-kbuhw03ste] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.tcr-sort:hover[b-kbuhw03ste] {
    background-color: var(--bs-secondary-bg);
}

/* Cancelled requests sit in the same queue but read as inactive, so they can't be
   mistaken for work waiting to be done. */
.list-group-item.tcr-cancelled:not(.active)[b-kbuhw03ste] {
    background-color: var(--bs-secondary-bg);
}

.list-group-item.tcr-cancelled:not(.active) .fw-semibold[b-kbuhw03ste] {
    text-decoration: line-through;
    opacity: 0.75;
}

/* ---------- pending queue list ---------- */
/* The queue can run long; cap it and scroll inside the card so the detail pane
   next to it stays put instead of being pushed off-screen. */
.tcr-queue[b-kbuhw03ste] {
    max-height: 32rem;
    overflow-y: auto;
}

/* ---------- phones: master/detail swap ---------- */

/* Below lg the queue and detail columns stack, which buried the detail under the
   whole queue — tapping a request appeared to do nothing. Show ONE pane at a time:
   the queue until a request is picked, then the detail full-width with its own
   "All requests" back button (hidden on desktop). */
@media (max-width: 991.98px) {
    .tcr-split.has-selection .tcr-col-queue[b-kbuhw03ste] {
        display: none;
    }

    .tcr-split:not(.has-selection) .tcr-col-detail[b-kbuhw03ste] {
        display: none;
    }

    /* The queue is the only pane now — let it use the screen. */
    .tcr-queue[b-kbuhw03ste] {
        max-height: none;
    }
}

.tcr-back[b-kbuhw03ste] {
    text-decoration: none;
    font-weight: 500;
}
/* /Components/Pages/Admin/TicketDetail.razor.rz.scp.css */
.tk-timeline[b-mfptwd6om9] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.tk-msg[b-mfptwd6om9] {
    border: 1px solid var(--bs-border-color, #e5e7eb);
    border-radius: 0.6rem;
    padding: 0.7rem 0.9rem;
    background: var(--bs-body-bg, #fff);
}

.tk-customer[b-mfptwd6om9] {
    border-left: 4px solid var(--bs-primary, #667eea);
}

.tk-staff[b-mfptwd6om9] {
    border-left: 4px solid var(--bs-success, #198754);
}

.tk-note[b-mfptwd6om9] {
    border-left: 4px solid var(--bs-warning, #ffc107);
    background: rgba(255, 193, 7, 0.08);
}

.tk-note-box[b-mfptwd6om9] {
    background: rgba(255, 193, 7, 0.08);
}

.tk-event[b-mfptwd6om9] {
    padding: 0.1rem 0.9rem;
}

.tk-meta[b-mfptwd6om9] {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.3rem;
}

.tk-body[b-mfptwd6om9] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    line-height: 1.5;
}

.tk-files[b-mfptwd6om9] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.tk-file[b-mfptwd6om9] {
    font-size: 0.85rem;
    text-decoration: none;
    border: 1px solid var(--bs-border-color, #e5e7eb);
    border-radius: 999px;
    padding: 0.15rem 0.6rem;
}

.tk-details[b-mfptwd6om9] {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 0.8rem;
    row-gap: 0.3rem;
    font-size: 0.9rem;
}

.tk-details dt[b-mfptwd6om9] {
    color: var(--bs-secondary-color, #6c757d);
    font-weight: 500;
}

.tk-details dd[b-mfptwd6om9] {
    margin: 0;
    overflow-wrap: anywhere;
}
/* /Components/Pages/Admin/TicketQueue.razor.rz.scp.css */
.tq-views[b-c1oucbns4j] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
}

.tq-table td[b-c1oucbns4j],
.tq-table th[b-c1oucbns4j] {
    font-size: 0.9rem;
}

.tq-needs-reply td:nth-child(3)[b-c1oucbns4j] {
    border-left: 3px solid var(--bs-danger, #dc3545);
}
/* /Components/Pages/Admin/VoicemailCard.razor.rz.scp.css */
/* Transcription previews: clamp to three lines so five voicemails never swallow
   the card — the full text lives in the portal/Kazoo, this is just evidence. */
.vm-transcript[b-ii2f8supiy] {
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Recipient table: sortable headers + a hard cap on the email column so one long
   address can't push the controls out of the card. */
.vm-sort[b-ii2f8supiy] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.vm-sort:hover[b-ii2f8supiy] {
    background-color: var(--bs-secondary-bg);
}

.vm-recipient-email[b-ii2f8supiy] {
    max-width: 11rem;
}
/* /Components/Pages/Admin/WhitelistAdmin.razor.rz.scp.css */
/* Summary tiles double as source filters. */
.wl-tile[b-ojp1lk61f6] {
    cursor: pointer;
    transition: transform .12s ease, box-shadow .12s ease;
}

.wl-tile:hover[b-ojp1lk61f6] {
    transform: translateY(-2px);
    box-shadow: var(--bs-box-shadow) !important;
}

.wl-tile.active[b-ojp1lk61f6] {
    background-color: var(--bs-secondary-bg);
}

.wl-tile.active h6[b-ojp1lk61f6] {
    color: var(--bs-body-color) !important;
}

/* Sortable headers. */
.wl-sort[b-ojp1lk61f6] {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.wl-sort:hover[b-ojp1lk61f6] {
    background-color: var(--bs-secondary-bg);
}

/* Orphaned rows — the account is gone but the firewall grant is live, so they
   need to stand out enough that someone deals with them. */
.wl-orphan[b-ojp1lk61f6] {
    --bs-table-bg: var(--bs-warning-bg-subtle);
    --bs-table-color: var(--bs-warning-text-emphasis);
}
/* /Components/Shared/Partials/GeneratedNavigation.razor.rz.scp.css */
/* Sidebar additions on top of the theme's nav styles (wwwroot/scss/app/_nav.scss).
   Scoped to GeneratedNavigation.razor; every element below is rendered there. */

/* The theme draws the group chevron with ::before (the accordion icon) but never turns it. */
li.open > a > .collapse-sign[b-94aisvoplu]::before {
    transform: rotate(180deg);
}

/* Hover tools at the right end of a link: pin star, reorder arrows, drag grip. Overlaid
   rather than in the flex flow — in flow, four icons made "Mass Communication" wrap onto
   a second line. On hover the pill takes the item's hover colour so it sits cleanly over
   the tail of a long label. */
.nav-tools[b-94aisvoplu] {
    position: absolute;
    right: 0.25rem;
    top: 50%;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.25rem 0.3rem 0.25rem 0.5rem;
    border-radius: 0.5rem;
    font-size: 0.8rem;
    line-height: 1;
}

li:hover > a > .nav-tools[b-94aisvoplu] {
    background-color: var(--app-nav-item-hover-bg);
}

.nav-tool[b-94aisvoplu] {
    opacity: 0;
    transition: opacity 0.15s ease;
    cursor: pointer;
    color: var(--app-nav-link-color);
}

li:hover > a > .nav-tools > .nav-tool[b-94aisvoplu],
.nav-tool.pinned[b-94aisvoplu] {
    opacity: 0.75;
}

.nav-tool:hover[b-94aisvoplu] {
    opacity: 1;
}

.nav-pin.pinned[b-94aisvoplu] {
    color: var(--warning-500, #f7b924);
}

.nav-grip[b-94aisvoplu] {
    cursor: grab;
}

/* Touch screens have no hover: keep the tools faintly visible, on their pill. */
@media (pointer: coarse) {
    .nav-tools[b-94aisvoplu] {
        background-color: var(--app-nav-item-hover-bg);
    }

    .nav-tool[b-94aisvoplu] {
        opacity: 0.55;
    }
}

/* SortableJS feedback while a favourite is dragged. */
li.nav-fav-chosen > a[b-94aisvoplu] {
    background-color: var(--app-nav-item-hover-bg);
    border-radius: 0.625rem;
}

li.nav-fav-ghost[b-94aisvoplu] {
    opacity: 0.35;
}

/* Nothing pinned yet. */
li.nav-fav-empty > span[b-94aisvoplu] {
    display: block;
    font-size: 0.8rem;
    line-height: 1.4;
    color: var(--app-nav-title-color);
    padding: 0.125rem 0 0.5rem;
}

/* While the filter box is active the favourites section steps aside: the grouped copies
   already answer, and a hit shown twice reads as a bug. The theme's filter marks the menu
   with js-list-active. */
#js-nav-menu.js-list-active > li.nav-fav-title[b-94aisvoplu],
#js-nav-menu.js-list-active > li.nav-fav-item[b-94aisvoplu],
#js-nav-menu.js-list-active > li.nav-fav-empty[b-94aisvoplu] {
    display: none !important;
}

.nav-no-results[b-94aisvoplu] {
    font-size: 0.8rem;
    color: var(--app-nav-title-color);
    padding-top: 0.5rem;
}
/* /Components/Shared/Partials/Sidebar.razor.rz.scp.css */
/* The filter's hit-count badge: the theme's ListFilter writes the count into it and empties
   it on reset, but never hides the empty button. */
.js-filter-message:empty[b-2kvqg6pwpu] {
    display: none;
}
/* /Components/Shared/SessionReauthModal.razor.rz.scp.css */
.reauth-backdrop[b-q7lspvp6nm] {
    background-color: rgba(0, 0, 0, 0.55);
    z-index: 12000; /* above drawers, lightbox stays below the login ask */
}

.reauth-dialog[b-q7lspvp6nm] {
    max-width: 24rem;
}
