/* ===========================================================================
   AURYNGE CLOUD PORTAL — WINDOWS 11 FLUENT DESIGN SYSTEM
   Light + Dark theme via [data-theme] on <html>
   Built on Bootstrap 5.3 with Fluent Design token overrides
   =========================================================================== */

/* ---------------------------------------------------------------------------
   1. THEME TOKENS  (Sleek Slate brand palette)
   --------------------------------------------------------------------------- */
:root,
[data-theme="light"] {
    --palette-primary:   #d84a1b;
    --palette-secondary: #1b1f3b;
    --palette-accent:    #4a5773;
    --palette-neutral:   #edf2f7;

    --bg:              var(--palette-neutral);
    --bg-alt:          #e3eaf3;
    --surface:         #ffffff;
    --surface-alt:     #f7f9fc;
    --surface-warm:    #fbede8;
    --text:            var(--palette-secondary);
    --text-secondary:  var(--palette-accent);
    --text-tertiary:   #73809a;
    --text-on-accent:  #ffffff;
    --text-on-status:  #ffffff;
    --stroke:          #d4dbe6;
    --stroke-strong:   #aeb8ca;
    --divider:         #d4dbe6;
    --hover:           rgba(216,74,27,0.06);
    --pressed:         rgba(216,74,27,0.1);
    --brand:           var(--palette-primary);
    --brand-soft:      rgba(216,74,27,0.1);
    --accent:          var(--palette-primary);
    --accent-hover:    #b83d12;
    --accent-active:   #8f2e0c;
    --accent-soft:     rgba(216,74,27,0.12);
    --accent-bg:       rgba(216,74,27,0.07);
    --blue:            var(--palette-accent);
    --blue-soft:       rgba(74,87,115,0.13);
    --green:           #2f7d5c;
    --green-soft:      rgba(47,125,92,0.12);
    --red:             #b13a2c;
    --red-soft:        rgba(177,58,44,0.11);
    --yellow:          #9f6415;
    --yellow-soft:     rgba(159,100,21,0.13);
    --shadow-sm:       0 1px 3px rgba(27,31,59,0.07);
    --shadow-md:       0 8px 22px rgba(27,31,59,0.09);
    --shadow-lg:       0 18px 42px rgba(27,31,59,0.13);
    --shadow-card:     0 8px 24px rgba(27,31,59,0.08), 0 0 0 1px var(--stroke);
    --acrylic:         rgba(237,242,247,0.88);
    --font-display:    "Segoe UI Variable Display", "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
    --font-body:       "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
    --radius-sm:       4px;
    --radius-md:       8px;
    --radius-lg:       12px;
    --radius-xl:       16px;
}

[data-theme="dark"] {
    --bg:              #111527;
    --bg-alt:          #0d1020;
    --surface:         var(--palette-secondary);
    --surface-alt:     #252d4a;
    --surface-warm:    #2c1f23;
    --text:            var(--palette-neutral);
    --text-secondary:  #c7d0df;
    --text-tertiary:   #98a4b8;
    --text-on-accent:  #ffffff;
    --text-on-status:  #ffffff;
    --stroke:          #3a4561;
    --stroke-strong:   #58647f;
    --divider:         #3a4561;
    --hover:           rgba(216,74,27,0.12);
    --pressed:         rgba(216,74,27,0.2);
    --brand:           var(--palette-primary);
    --brand-soft:      rgba(216,74,27,0.2);
    --accent:          var(--palette-primary);
    --accent-hover:    #f06432;
    --accent-active:   #ff7c4d;
    --accent-soft:     rgba(216,74,27,0.24);
    --accent-bg:       rgba(216,74,27,0.14);
    --blue:            #aeb9cf;
    --blue-soft:       rgba(174,185,207,0.15);
    --green:           #75c49b;
    --green-soft:      rgba(117,196,155,0.15);
    --red:             #ee8a7d;
    --red-soft:        rgba(238,138,125,0.15);
    --yellow:          #e4b36d;
    --yellow-soft:     rgba(228,179,109,0.16);
    --shadow-sm:       0 1px 4px rgba(0,0,0,0.2);
    --shadow-md:       0 10px 28px rgba(0,0,0,0.3);
    --shadow-lg:       0 18px 48px rgba(0,0,0,0.42);
    --shadow-card:     0 12px 32px rgba(0,0,0,0.28), 0 0 0 1px var(--stroke);
    --acrylic:         rgba(27,31,59,0.9);
}

/* Theme transition — only active during toggle */
html.theme-transition,
html.theme-transition *,
html.theme-transition *::before,
html.theme-transition *::after {
    transition: background-color 0.35s ease, color 0.35s ease,
                border-color 0.35s ease, box-shadow 0.35s ease,
                fill 0.35s ease, stroke 0.2s ease !important;
    transition-delay: 0s !important;
}

/* ---------------------------------------------------------------------------
   2. BOOTSTRAP OVERRIDES
   --------------------------------------------------------------------------- */
:root,
[data-theme="light"],
[data-theme="dark"] {
    --bs-body-bg:           var(--bg);
    --bs-body-color:        var(--text);
    --bs-border-color:      var(--stroke);
    --bs-card-bg:           var(--surface);
    --bs-card-border-color: var(--stroke);
    --bs-primary:           var(--accent);
    --bs-primary-rgb:       216, 74, 27;
    --bs-secondary-bg:      var(--surface-alt);
    --bs-tertiary-bg:       var(--bg-alt);
    --bs-link-color:        var(--accent);
    --bs-link-hover-color:  var(--accent-hover);
    --bs-emphasis-color:    var(--text);
    --bs-secondary-color:   var(--text-secondary);
}

[data-theme="dark"] {
    --bs-primary-rgb:       240, 107, 59;
}

/* ---------------------------------------------------------------------------
   3. BASE STYLES
   --------------------------------------------------------------------------- */
* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: var(--font-body);
    font-size: 1rem;
    line-height: 1.6;
    color: var(--text);
    background:
        linear-gradient(180deg, var(--bg-alt) 0, var(--bg) 260px);
    min-height: 100vh;
    -webkit-font-smoothing: antialiased;
}

a { color: var(--accent); }
a:hover { color: var(--accent-hover); }

hr {
    border-color: var(--stroke);
    opacity: 1;
}

/* Bootstrap .text-secondary override */
.text-secondary { color: var(--text-secondary) !important; }

/* ---------------------------------------------------------------------------
   4. PORTAL NAVBAR
   --------------------------------------------------------------------------- */
.portal-navbar {
    background: var(--acrylic);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-color: var(--stroke) !important;
    box-shadow: 0 1px 0 rgba(255,255,255,0.38), 0 8px 26px rgba(22,35,34,0.05);
    padding-block: 0.65rem;
}

[data-theme="dark"] .portal-navbar {
    box-shadow: 0 1px 0 rgba(255,255,255,0.04), 0 10px 32px rgba(0,0,0,0.36);
}

.portal-navbar .container-lg {
    gap: 1.25rem;
    min-width: 0;
}

.portal-navbar .navbar-brand {
    color: var(--text);
    margin-right: 0;
}

.portal-brand-lockup {
    display: inline-flex;
    align-items: center;
    gap: 0.7rem;
    min-width: 0;
    padding-block: 0;
    text-decoration: none;
}

.portal-brand-lockup .portal-brand-mark {
    width: 34px;
    height: 34px;
}

.portal-brand-copy {
    display: grid;
    gap: 0.08rem;
    line-height: 1.1;
}

.portal-brand-name {
    font-family: var(--font-display);
    font-size: 1.18rem;
    font-weight: 680;
    letter-spacing: -0.025em;
}

.portal-brand-context {
    color: var(--text-tertiary);
    font-size: 0.7rem;
    font-weight: 520;
    letter-spacing: 0.025em;
    white-space: nowrap;
}

.portal-navbar .navbar-brand.portal-brand-active {
    color: var(--brand);
}

.portal-navbar .navbar-collapse {
    min-width: 0;
}

.portal-nav-content {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.85rem;
    width: 100%;
    min-width: 0;
}

.portal-primary-nav,
.portal-utility-nav {
    display: flex;
    align-items: center;
}

.portal-primary-nav {
    gap: 0.18rem;
    margin-left: auto;
}

.portal-utility-nav {
    gap: 0.45rem;
    padding-left: 0.85rem;
    border-left: 1px solid var(--stroke);
}

.portal-nav-link {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.42rem;
    min-height: 38px;
    padding: 0.48rem 0.7rem;
    border: 1px solid transparent;
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--text-secondary);
    font-family: inherit;
    font-size: 0.84rem;
    font-weight: 590;
    line-height: 1.1;
    text-decoration: none;
    white-space: nowrap;
    transition: background-color 140ms ease, color 140ms ease, border-color 140ms ease;
}

.portal-nav-link > i {
    color: var(--text-tertiary);
    font-size: 0.95rem;
    transition: color 140ms ease;
}

.portal-nav-link:hover,
.portal-nav-link:focus-visible,
.portal-nav-link.show {
    border-color: var(--stroke);
    background: var(--surface);
    color: var(--text);
}

.portal-nav-link:hover > i,
.portal-nav-link:focus-visible > i,
.portal-nav-link.show > i {
    color: var(--brand);
}

.portal-nav-link:focus-visible,
.portal-user-chip:focus-visible,
.portal-utility-btn:focus-visible,
.theme-toggle-btn:focus-visible {
    outline: 3px solid var(--accent-soft);
    outline-offset: 2px;
}

.portal-nav-link.is-active {
    border-color: rgba(216,74,27,0.18);
    background: var(--brand-soft);
    color: var(--brand);
    font-weight: 680;
}

.portal-nav-link.is-active > i {
    color: var(--brand);
}

.portal-nav-link.is-active::before {
    position: absolute;
    right: 0.7rem;
    bottom: -0.7rem;
    left: 0.7rem;
    height: 3px;
    border-radius: 999px 999px 0 0;
    background: var(--brand);
    content: "";
}

.portal-nav-menu.dropdown-toggle::after {
    position: static;
    width: auto;
    height: auto;
    margin-left: 0.1rem;
    border-top: 0.3em solid;
    border-right: 0.3em solid transparent;
    border-bottom: 0;
    border-left: 0.3em solid transparent;
    border-radius: 0;
    background: transparent;
    content: "";
}

.portal-system-menu {
    width: min(330px, calc(100vw - 24px));
    margin-top: 0.65rem !important;
    padding: 0.5rem;
}

.portal-system-menu .dropdown-header {
    padding: 0.35rem 0.55rem 0.45rem;
    color: var(--text-tertiary);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.portal-system-item {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    align-items: center;
    gap: 0.7rem;
    min-height: 50px;
    padding: 0.45rem 0.55rem;
    border-radius: calc(var(--radius-md) - 2px);
}

.portal-system-item > i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-sm);
    background: var(--surface-alt);
    color: var(--text-secondary);
}

.portal-system-item > span {
    display: grid;
    min-width: 0;
}

.portal-system-item strong {
    color: var(--text);
    font-size: 0.84rem;
    font-weight: 650;
}

.portal-system-item small {
    overflow: hidden;
    color: var(--text-tertiary);
    font-size: 0.72rem;
    text-overflow: ellipsis;
}

.portal-system-item.active,
.portal-system-item:active {
    background: var(--brand-soft);
    color: var(--brand);
}

.portal-system-item.active > i {
    border-color: rgba(216,74,27,0.22);
    background: var(--surface-warm);
    color: var(--brand);
}

.portal-user-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.48rem;
    max-width: 155px;
    min-height: 34px;
    padding: 0.34rem 0.68rem;
    border: 1px solid var(--stroke);
    border-radius: 999px;
    background: var(--surface);
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-weight: 620;
}

.portal-user-presence {
    flex: 0 0 auto;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--green);
    box-shadow: 0 0 0 3px var(--green-soft);
}

.portal-user-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.portal-utility-btn {
    width: 34px;
    height: 34px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-color: var(--stroke);
    border-radius: 50%;
    background: transparent;
    color: var(--text-secondary);
}

.portal-utility-btn:hover {
    border-color: var(--stroke-strong);
    background: var(--hover);
    color: var(--text);
}

@media (prefers-reduced-motion: reduce) {
    .portal-nav-link,
    .portal-nav-link > i {
        transition: none;
    }
}

/* Theme toggle */
.theme-toggle-btn {
    position: relative;
    width: 34px;
    height: 34px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-color: var(--stroke);
    color: var(--text-secondary);
    background: transparent;
    border-radius: 50%;
}

.theme-toggle-btn:hover {
    background: var(--hover);
    color: var(--text);
    border-color: var(--stroke-strong);
}

[data-theme="light"] .theme-icon-light { display: none; }
[data-theme="light"] .theme-icon-dark  { display: inline; }
[data-theme="dark"]  .theme-icon-light { display: inline; }
[data-theme="dark"]  .theme-icon-dark  { display: none; }

/* Floating toggle for unauthenticated pages */
.theme-toggle-float {
    position: fixed;
    top: 1.25rem;
    right: 1.25rem;
    z-index: 1050;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 1px solid var(--stroke);
    background: var(--surface);
    color: var(--text-secondary);
    box-shadow: var(--shadow-md);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background 0.15s ease, box-shadow 0.15s ease;
    font-size: 1rem;
    padding: 0;
}

.theme-toggle-float:hover {
    background: var(--surface-alt);
    color: var(--text);
    box-shadow: var(--shadow-lg);
    border-color: var(--stroke-strong);
}

/* ---------------------------------------------------------------------------
   5. PORTAL FOOTER
   --------------------------------------------------------------------------- */
.portal-footer {
    border-color: var(--stroke) !important;
}

.portal-footer-link {
    color: var(--accent) !important;
}

.portal-footer-link:hover {
    color: var(--accent-hover) !important;
}

/* ---------------------------------------------------------------------------
   6. BRAND DOT
   --------------------------------------------------------------------------- */
.brand-dot {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--brand);
    box-shadow: 0 0 0 6px var(--brand-soft);
    display: inline-block;
    flex-shrink: 0;
}

/* ---------------------------------------------------------------------------
   7. LOGIN / AUTH PAGES
   --------------------------------------------------------------------------- */
.login-surface {
    min-height: 100vh;
    padding: 1.5rem 2rem 2.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    background: var(--bg);
}

.login-panel {
    border-radius: var(--radius-xl);
    background: var(--surface);
    border: 1px solid var(--stroke);
    box-shadow: var(--shadow-lg);
    display: flex;
    flex-direction: column;
}

.login-header-border {
    border-bottom: 1px solid var(--stroke);
}

.login-submit-btn {
    margin-top: 0.5rem;
    padding: 0.65rem 1.05rem !important;
    font-weight: 600 !important;
    font-size: 0.98rem !important;
    background: var(--accent) !important;
    color: var(--text-on-accent) !important;
    border: none !important;
    border-radius: var(--radius-md) !important;
    box-shadow: 0 8px 24px var(--accent-soft);
    transition: transform 0.12s ease, box-shadow 0.12s ease;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    text-align: center;
    cursor: pointer;
}

.login-submit-btn:hover {
    background: var(--accent-hover) !important;
    box-shadow: 0 12px 36px var(--accent-soft);
    transform: translateY(-1px);
}

.login-submit-btn:focus-visible {
    outline: 3px solid var(--accent-soft);
    outline-offset: 2px;
}

.login-sidebar {
    height: 100%;
    border-radius: var(--radius-xl);
    border: 1px solid var(--stroke);
    background: var(--surface-alt);
    backdrop-filter: blur(8px);
    color: var(--text);
    display: flex;
    flex-direction: column;
    justify-content: center;
    box-shadow: var(--shadow-lg);
}

.login-highlights .mud-icon-root {
    background: var(--accent-soft);
    padding: 0.5rem;
    border-radius: 0.9rem;
}

.login-meta {
    padding: 0.85rem 1rem;
    border-radius: var(--radius-lg);
    border: 1px solid var(--stroke);
    background: var(--surface-alt);
}

.validation-summary {
    padding: 0.75rem 1rem;
    border-radius: var(--radius-md);
    background: var(--red-soft);
    border: 1px solid var(--red);
    min-height: 0.5rem;
}

/* Form controls within login */
.login-panel .form-control,
.login-panel .form-select {
    background: var(--bg);
    border-color: var(--stroke);
    color: var(--text);
    border-radius: var(--radius-md);
}

.login-panel .form-control:focus,
.login-panel .form-select:focus {
    background: var(--surface);
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
    color: var(--text);
}

.login-panel .form-control::placeholder {
    color: var(--text-tertiary);
}

.login-panel .form-label {
    color: var(--text);
}

.login-panel .form-check-input {
    background-color: var(--bg);
    border-color: var(--stroke-strong);
}

.login-panel .form-check-input:checked {
    background-color: var(--accent);
    border-color: var(--accent);
}

/* Setup page tab buttons */
.tab-btn {
    background: transparent;
    color: var(--text-tertiary);
    border: 1px solid transparent;
    font-weight: 600;
    transition: all 0.15s ease;
}

.tab-btn.active {
    background: var(--hover);
    color: var(--text);
    border-color: var(--stroke);
}

.tab-btn:hover:not(.active) {
    color: var(--text-secondary);
}

/* Setup step indicator pills */
.step-pill-done {
    background: var(--accent-soft);
    color: var(--accent);
    border: 1px solid var(--accent);
}

.step-pill-current {
    background: var(--blue-soft);
    color: var(--blue);
    border: 1px solid var(--blue);
}

.setup-tab-container {
    background: var(--hover);
    border: 1px solid var(--stroke);
}

/* PendingApproval divider */
.auth-divider {
    border-color: var(--stroke);
}

/* SelectAccount picker tiles (OIDC prompt=select_account) */
.account-tile {
    background: var(--surface);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
    color: var(--text);
    padding: 0.85rem 1rem;
    transition: border-color 0.12s ease, box-shadow 0.12s ease, transform 0.12s ease;
    cursor: pointer;
}

.account-tile:hover {
    border-color: var(--accent);
    box-shadow: 0 4px 12px var(--accent-soft);
    transform: translateY(-1px);
}

.account-tile:focus-visible {
    outline: 3px solid var(--accent-soft);
    outline-offset: 2px;
}

.account-tile-row {
    align-items: stretch;
}

.account-remove-btn {
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
    background: var(--surface);
}

.account-remove-btn:hover {
    color: var(--text) !important;
    border-color: var(--accent);
}

.account-avatar {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    border-radius: 50%;
    background: var(--accent-soft);
    color: var(--accent);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
}

.account-avatar-muted {
    background: var(--stroke);
    color: var(--text);
}

.min-width-0 {
    min-width: 0;
}

/* ---------------------------------------------------------------------------
   8. DASHBOARD SHELL
   --------------------------------------------------------------------------- */
.dashboard-shell {
    max-width: 1380px;
    margin: 0 auto;
    padding: 0 24px 48px;
}

/* ---------------------------------------------------------------------------
   9. CARDS
   --------------------------------------------------------------------------- */
.card {
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
    background: var(--surface);
    box-shadow: var(--shadow-sm);
    color: var(--text);
}

.card-body { color: var(--text); }

.stat-card {
    background: var(--surface);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-card);
}

.section-card {
    background: var(--surface);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
}

.section-card > .card-body {
    padding: 1.125rem;
}

.section-card h5,
.section-card h6 {
    letter-spacing: 0;
    color: var(--text);
}

.portal-page-header {
    padding: 1.15rem 0 0.95rem;
    border-bottom: 1px solid var(--stroke);
}

.portal-page-header h4 {
    font-size: 1.35rem;
    font-weight: 650;
    letter-spacing: 0;
    color: var(--text);
}

.portal-page-header .btn {
    white-space: nowrap;
}

.admin-summary-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 0.625rem;
}

.admin-metric-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    min-height: 34px;
    padding: 0.35rem 0.75rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface);
    color: var(--text-secondary);
    font-size: 0.875rem;
    font-weight: 600;
    box-shadow: var(--shadow-sm);
}

.admin-metric-pill strong {
    color: var(--text);
    font-weight: 700;
}

.admin-metric-pill.is-critical {
    border-color: var(--red);
    color: var(--red);
}

.admin-metric-pill.is-warning {
    border-color: var(--yellow);
    color: var(--yellow);
}

.admin-metric-pill.is-healthy {
    border-color: var(--green);
    color: var(--green);
}

.admin-metric-pill.is-info {
    border-color: var(--blue);
    color: var(--blue);
}

.card-subtle {
    background: var(--surface-alt);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
}

/* Agent credential cards in dashboard */
.card-subtle code {
    display: block;
    background: var(--bg-alt);
    border-radius: var(--radius-sm);
    padding: 0.4rem;
    margin-bottom: 0.4rem;
    color: var(--text);
    font-size: 0.85rem;
}

/* ---------------------------------------------------------------------------
   10. TABLES
   --------------------------------------------------------------------------- */
.table {
    --bs-table-color: var(--text);
    --bs-table-bg: transparent;
    --bs-table-border-color: var(--stroke);
    --bs-table-hover-bg: var(--hover);
    --bs-table-hover-color: var(--text);
    color: var(--text);
    margin-bottom: 0;
    font-size: 0.925rem;
}

.table thead th {
    color: var(--text-secondary);
    font-weight: 600;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border-bottom-color: var(--stroke);
    background: var(--surface-alt);
    vertical-align: middle;
    white-space: nowrap;
}

.table tbody td {
    border-bottom-color: var(--stroke);
    vertical-align: middle;
}

.table tbody tr:last-child td {
    border-bottom-width: 0;
}

.table-responsive {
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface);
}

.table-responsive > .table > :not(caption) > * > * {
    padding: 0.72rem 0.65rem;
}

.table-sm > :not(caption) > * > * {
    padding: 0.52rem 0.55rem;
}

.table code {
    color: var(--text);
    background: var(--surface-alt);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-sm);
    padding: 0.12rem 0.32rem;
}

/* ---------------------------------------------------------------------------
   11. FORMS — Global overrides for Bootstrap forms
   --------------------------------------------------------------------------- */
.form-control,
.form-select {
    background-color: var(--surface);
    border-color: var(--stroke);
    color: var(--text);
    min-height: 34px;
}

.form-control-sm,
.form-select-sm,
.input-group-sm > .form-control,
.input-group-sm > .form-select,
.input-group-sm > .btn {
    min-height: 32px;
}

.form-control:focus,
.form-select:focus {
    background-color: var(--surface);
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
    color: var(--text);
}

.form-control::placeholder {
    color: var(--text-tertiary);
}

.form-label {
    color: var(--text);
    font-size: 0.82rem;
    font-weight: 650;
    margin-bottom: 0.35rem;
}

.form-check-input {
    background-color: var(--surface);
    border-color: var(--stroke-strong);
}

.form-check-input:checked {
    background-color: var(--accent);
    border-color: var(--accent);
}

.form-text {
    color: var(--text-tertiary);
}

/* select option styling for non-native dropdowns */
.form-select option {
    background: var(--surface);
    color: var(--text);
}

/* ---------------------------------------------------------------------------
   12. BUTTONS — Primary override to use accent
   --------------------------------------------------------------------------- */
.btn-primary {
    --bs-btn-bg: var(--accent);
    --bs-btn-border-color: var(--accent);
    --bs-btn-hover-bg: var(--accent-hover);
    --bs-btn-hover-border-color: var(--accent-hover);
    --bs-btn-active-bg: var(--accent-active);
    --bs-btn-active-border-color: var(--accent-active);
    --bs-btn-color: var(--text-on-accent);
    --bs-btn-hover-color: var(--text-on-accent);
    --bs-btn-active-color: var(--text-on-accent);
    --bs-btn-disabled-bg: var(--accent);
    --bs-btn-disabled-border-color: var(--accent);
}

.btn-sm {
    min-height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
}

.table .btn-sm {
    white-space: nowrap;
}

.btn-outline-primary {
    --bs-btn-color: var(--accent);
    --bs-btn-border-color: var(--accent);
    --bs-btn-hover-bg: var(--accent);
    --bs-btn-hover-border-color: var(--accent);
    --bs-btn-hover-color: var(--text-on-accent);
    --bs-btn-active-bg: var(--accent-active);
    --bs-btn-active-border-color: var(--accent-active);
    --bs-btn-active-color: var(--text-on-accent);
}

.btn-accent-outline {
    color: var(--accent);
    border: 1px solid var(--accent);
    background: transparent;
    border-radius: .375rem;
    transition: background .15s, color .15s;
}
.btn-accent-outline:hover,
.btn-accent-outline:focus {
    background: var(--accent);
    color: var(--text-on-accent);
    border-color: var(--accent);
}
.btn-accent-outline:active {
    background: var(--accent-active);
    color: var(--text-on-accent);
    border-color: var(--accent-active);
}

.btn-outline-secondary {
    --bs-btn-color: var(--text-secondary);
    --bs-btn-border-color: var(--stroke);
    --bs-btn-hover-bg: var(--hover);
    --bs-btn-hover-color: var(--text);
    --bs-btn-hover-border-color: var(--stroke-strong);
}

.btn-outline-danger {
    --bs-btn-color: var(--red);
    --bs-btn-border-color: var(--red);
    --bs-btn-hover-bg: var(--red);
    --bs-btn-hover-border-color: var(--red);
    --bs-btn-hover-color: var(--text-on-status);
    --bs-btn-active-bg: var(--red);
    --bs-btn-active-border-color: var(--red);
    --bs-btn-active-color: var(--text-on-status);
}

.btn-outline-warning {
    --bs-btn-color: var(--yellow);
    --bs-btn-border-color: var(--yellow);
    --bs-btn-hover-bg: var(--yellow);
    --bs-btn-hover-border-color: var(--yellow);
    --bs-btn-hover-color: var(--text-on-status);
    --bs-btn-active-bg: var(--yellow);
    --bs-btn-active-border-color: var(--yellow);
    --bs-btn-active-color: var(--text-on-status);
}

.btn-success {
    --bs-btn-bg: var(--green);
    --bs-btn-border-color: var(--green);
    --bs-btn-hover-bg: var(--green);
    --bs-btn-hover-border-color: var(--green);
    --bs-btn-color: var(--text-on-status);
    --bs-btn-hover-color: var(--text-on-status);
    --bs-btn-active-color: var(--text-on-status);
}

.btn-warning {
    --bs-btn-bg: var(--yellow);
    --bs-btn-border-color: var(--yellow);
    --bs-btn-hover-bg: var(--yellow);
    --bs-btn-hover-border-color: var(--yellow);
    --bs-btn-active-bg: var(--yellow);
    --bs-btn-active-border-color: var(--yellow);
    --bs-btn-color: var(--text-on-status);
    --bs-btn-hover-color: var(--text-on-status);
    --bs-btn-active-color: var(--text-on-status);
}

.btn-danger {
    --bs-btn-bg: var(--red);
    --bs-btn-border-color: var(--red);
    --bs-btn-hover-bg: var(--red);
    --bs-btn-hover-border-color: var(--red);
    --bs-btn-active-bg: var(--red);
    --bs-btn-active-border-color: var(--red);
    --bs-btn-color: var(--text-on-status);
    --bs-btn-hover-color: var(--text-on-status);
    --bs-btn-active-color: var(--text-on-status);
}

.dropdown-menu {
    background: var(--surface);
    border-color: var(--stroke);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-md);
    color: var(--text);
}

.dropdown-item {
    color: var(--text);
}

.dropdown-item:hover,
.dropdown-item:focus {
    background: var(--hover);
    color: var(--text);
}

.dropdown-item.text-danger {
    color: var(--red) !important;
}

/* ---------------------------------------------------------------------------
   13. BADGES — Override Bootstrap badge colors
   --------------------------------------------------------------------------- */
.badge {
    font-size: 0.8rem;
    font-weight: 600;
    border: 1px solid currentColor;
    border-radius: 999px;
}

.bg-success-subtle {
    background-color: var(--green-soft) !important;
}
.text-success-emphasis {
    color: var(--green) !important;
}

.bg-info-subtle {
    background-color: var(--blue-soft) !important;
}
.text-info-emphasis {
    color: var(--blue) !important;
}

.bg-primary-subtle {
    background-color: var(--accent-soft) !important;
}
.text-primary-emphasis {
    color: var(--accent) !important;
}

.bg-warning-subtle {
    background-color: var(--yellow-soft) !important;
}
.text-warning-emphasis {
    color: var(--yellow) !important;
}

.bg-secondary-subtle {
    background-color: var(--hover) !important;
}
.text-secondary-emphasis {
    color: var(--text-secondary) !important;
}

.bg-danger-subtle {
    background-color: var(--red-soft) !important;
}
.text-danger-emphasis {
    color: var(--red) !important;
}

.bg-dark-subtle {
    background-color: var(--surface-alt) !important;
}
.text-dark-emphasis {
    color: var(--text) !important;
}

/* Bootstrap named colors */
.text-primary { color: var(--accent) !important; }
.text-info { color: var(--blue) !important; }
.text-success { color: var(--green) !important; }
.text-warning { color: var(--yellow) !important; }
.text-danger { color: var(--red) !important; }

/* ---------------------------------------------------------------------------
   14. ALERTS
   --------------------------------------------------------------------------- */
.alert {
    border-radius: var(--radius-md);
    border-width: 1px;
    font-weight: 550;
}

.alert-success {
    background-color: var(--green-soft);
    border-color: var(--green);
    color: var(--green);
}

.alert-danger {
    background-color: var(--red-soft);
    border-color: var(--red);
    color: var(--red);
}

.alert-info {
    background-color: var(--blue-soft);
    border-color: var(--blue);
    color: var(--blue);
}

.alert-warning {
    background-color: var(--yellow-soft);
    border-color: var(--yellow);
    color: var(--yellow);
}

.modal-content {
    background: var(--surface);
    color: var(--text);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
}

.modal-header,
.modal-footer {
    border-color: var(--stroke);
}

.modal-body {
    background: var(--surface);
}

.btn-close {
    filter: var(--bs-btn-close-white-filter, none);
}

[data-theme="dark"] .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}

.accordion-item,
.list-group-item {
    background: var(--surface);
    border-color: var(--stroke);
    color: var(--text);
}

.accordion-button {
    background: var(--surface);
    color: var(--text);
    box-shadow: none;
}

.accordion-button:not(.collapsed) {
    background: var(--surface-alt);
    color: var(--text);
    box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--stroke);
}

.accordion-button:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}

.portal-step-indicator {
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    border: 1px solid var(--stroke);
    background: var(--surface-alt);
    color: var(--text-secondary);
    font-size: 0.9rem;
    font-weight: 650;
}

.portal-step-indicator.is-active {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--text-on-accent);
}

.portal-step-indicator.is-complete {
    background: var(--blue);
    border-color: var(--blue);
    color: var(--text-on-accent);
}

.portal-step-connector {
    width: 100%;
    height: 2px;
    z-index: -1;
}

.portal-step-connector-line {
    width: 100%;
    height: 2px;
    background: var(--bs-secondary-bg);
}

.portal-step-connector-line.is-complete {
    background: #94a3b8;
}

.portal-brand-mark {
    width: 28px;
    height: 28px;
}

.portal-brand-mark-lg {
    width: 40px;
    height: 40px;
}

.signup-progress-track {
    height: 3px;
}

.auth-narrow-shell {
    width: 100%;
    max-width: 480px;
    padding: 2rem 1rem;
}

.auth-narrow-shell-sm {
    max-width: 440px;
}

.auth-invite-shell {
    max-width: 600px;
}

.auth-state-icon {
    font-size: 3rem;
}

/* ---------------------------------------------------------------------------
   15. ACCORDION — Dashboard agent limits
   --------------------------------------------------------------------------- */
.accordion-item {
    background: var(--surface);
    border-color: var(--stroke);
    color: var(--text);
}

.accordion-button {
    background: var(--surface);
    color: var(--text);
    border: none;
    box-shadow: none;
}

.accordion-button:not(.collapsed) {
    background: var(--surface-alt);
    color: var(--text);
    box-shadow: none;
}

.accordion-button::after {
    filter: var(--bs-accordion-btn-icon-filter, none);
}

[data-theme="dark"] .accordion-button::after {
    filter: invert(1) grayscale(100%) brightness(200%);
}

.accordion-body {
    background: var(--surface);
}

/* ---------------------------------------------------------------------------
   16. LIST GROUP — Telemetry feed
   --------------------------------------------------------------------------- */
.list-group-item {
    background: transparent;
    border-color: var(--stroke);
    color: var(--text);
}

.list-group-item.telemetry-item {
    background: transparent;
    border-color: var(--stroke);
}

/* ---------------------------------------------------------------------------
   17. CHARTS
   --------------------------------------------------------------------------- */
.chart canvas {
    width: 100% !important;
    height: 260px !important;
}

.chart-mini {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}

.chart-mini canvas {
    height: 180px !important;
}

/* ---------------------------------------------------------------------------
   18. DASHBOARD SUMMARY CARDS & METRICS
   --------------------------------------------------------------------------- */
.dashboard-summary .stat-card {
    background: var(--surface);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
}

.dashboard-summary-header {
    padding: 0 6px 6px;
}

.stat-icon {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    box-shadow: 0 0 0 8px var(--hover);
}

.stat-icon-primary { background: var(--accent); }
.stat-icon-secondary { background: var(--blue); }
.stat-icon-info { background: var(--green); }
.stat-icon-accent { background: var(--red); }

.stat-value {
    letter-spacing: -0.01em;
}

.spotlight-card {
    background: var(--accent-bg);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-xl);
}

.pill-group .mud-chip {
    border-radius: 999px;
    background: var(--hover);
    border-color: var(--stroke);
    font-weight: 600;
}

/* User filter */
.user-filter-stack {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.user-filter-select {
    background: var(--surface-alt);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
    padding: 6px 12px;
}

.user-filter-select select {
    width: 100%;
    background: transparent;
    border: none;
    outline: none;
    color: var(--text);
    font-size: 0.95rem;
    font-weight: 600;
}

.user-filter-select option {
    color: var(--text);
    background: var(--surface);
}

/* User metrics */
.user-metrics-grid .user-metric-card {
    background: var(--surface);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
}

.user-metric-card .metric-value {
    font-weight: 700;
    letter-spacing: -0.01em;
}

/* Dashboard hero */
.dashboard-hero-card {
    background: var(--accent-bg);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-xl);
}

.hero-meta .mud-chip {
    background: var(--hover);
    border-radius: 999px;
    font-weight: 600;
}

.meta-chip {
    box-shadow: var(--shadow-md);
}

.hero-copy {
    max-width: 720px;
}

/* Section header */
.section-header {
    border-bottom: 1px solid var(--stroke);
    padding-bottom: 8px;
    margin-bottom: 16px;
}

/* Usage window */
.usage-window {
    background: var(--surface-alt);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
}

/* Data table wrapper */
.data-table-wrapper {
    background: var(--surface-alt);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.data-table-wrapper table {
    min-width: 680px;
}

/* Live telemetry list */
.live-telemetry-list {
    max-height: 420px;
    overflow-y: auto;
}

/* ---------------------------------------------------------------------------
   19. LAYOUT SHELLS
   --------------------------------------------------------------------------- */
.site-shell {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1rem 2rem;
}

.body-shell {
    max-width: 1200px;
    margin: 0 auto;
    padding: 2rem;
}

/* ---------------------------------------------------------------------------
   20. CODE BLOCKS
   --------------------------------------------------------------------------- */
code {
    color: var(--accent);
    font-size: 0.875em;
}

.bg-code {
    background: var(--bg-alt);
    border-radius: var(--radius-sm);
    padding: 0.25rem 0.5rem;
    color: var(--text);
}

/* ---------------------------------------------------------------------------
   21. STATUS BANNER (fixed bottom-right)
   --------------------------------------------------------------------------- */
.status-banner {
    position: fixed;
    bottom: 2rem;
    right: 2rem;
    padding: 1rem 1.5rem;
    border-radius: 999px;
    background: var(--accent-soft);
    border: 1px solid var(--accent);
    color: var(--text);
}

/* ---------------------------------------------------------------------------
   22. DASHBOARD LAYOUT
   --------------------------------------------------------------------------- */
.dash-shell {
    max-width: 1380px;
    margin: 0 auto;
    padding: 0 24px 48px;
}

.dash-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1rem;
    margin-bottom: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--stroke);
}

.dash-header-left {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.dash-title {
    margin: 0;
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: -0.02em;
}

.dash-subtitle {
    color: var(--text-secondary);
    font-size: 0.9rem;
}

.dash-tenant-picker {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.dash-tenant-label {
    font-size: 0.82rem;
    color: var(--text-tertiary);
    white-space: nowrap;
}

.dash-tenant-picker .form-select {
    min-width: 180px;
}

/* KPI Row */
.dash-kpi-row {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.dash-kpi {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    background: var(--surface);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-lg);
    padding: 1rem 1.125rem;
    box-shadow: var(--shadow-card);
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.dash-kpi:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-1px);
}

.dash-kpi-icon {
    width: 40px;
    height: 40px;
    border-radius: var(--radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.15rem;
    flex-shrink: 0;
}

.dash-kpi-icon--sessions  { background: var(--accent-soft); color: var(--accent); }
.dash-kpi-icon--automations { background: var(--yellow-soft); color: var(--yellow); }
.dash-kpi-icon--developers  { background: var(--blue-soft); color: var(--blue); }
.dash-kpi-icon--agents      { background: var(--green-soft); color: var(--green); }

.dash-kpi-body {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.dash-kpi-value {
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: var(--text);
}

.dash-kpi-label {
    font-size: 0.78rem;
    color: var(--text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Two-column grid */
.dash-grid {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 1.25rem;
    margin-bottom: 1.5rem;
}

.dash-grid-main {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    min-width: 0;
}

.dash-grid-aside {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* Section card internals */
.dash-section {
    margin-bottom: 0 !important; /* grid gap handles spacing */
}

.dash-section-head {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}

.dash-section-meta {
    font-size: 0.82rem;
    color: var(--text-secondary);
    white-space: nowrap;
}

/* Metrics strip (horizontal KPIs inside usage card) */
.dash-metrics-strip {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
}

.dash-metric {
    display: flex;
    flex-direction: column;
    padding: 0.75rem;
    background: var(--surface-alt);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
}

.dash-metric-value {
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.01em;
    color: var(--text);
}

.dash-metric-label {
    font-size: 0.78rem;
    color: var(--text-secondary);
    margin-top: 2px;
}

/* Empty-windows notice */
.dash-empty-notice {
    display: flex;
    align-items: center;
    padding: 0.75rem 1rem;
    background: var(--surface-alt);
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.dashboard-chart-frame {
    position: relative;
    height: 220px;
    min-height: 220px;
}

.dashboard-chart-frame--compact {
    height: 180px;
    min-height: 180px;
}

.dashboard-chart-frame canvas {
    display: block;
    width: 100% !important;
    height: 100% !important;
}

.dashboard-empty-chart {
    min-height: 220px;
}

/* Full-width sections below the grid */
.dash-fullwidth-section {
    margin-bottom: 1.25rem !important;
}

/* Empty state for main column */
.dash-empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 3rem 2rem;
    background: var(--surface);
    border: 1px dashed var(--stroke-strong);
    border-radius: var(--radius-xl);
    color: var(--text-secondary);
}

.dash-empty-state-icon {
    font-size: 2.5rem;
    color: var(--text-tertiary);
    margin-bottom: 0.75rem;
}

/* Tabular numbers for numeric table columns */
.table .text-end {
    font-variant-numeric: tabular-nums;
}

/* Live feed */
.dash-live-indicator {
    display: flex;
    align-items: center;
    gap: 6px;
}

.dash-live-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--green);
    display: inline-block;
    flex-shrink: 0;
    animation: dash-pulse 2s ease-in-out infinite;
}

@keyframes dash-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.3; }
}

.dash-feed-scroll {
    max-height: 320px;
    overflow-y: auto;
}

/* ---------------------------------------------------------------------------
   23. TOKEN USAGE
   --------------------------------------------------------------------------- */
.token-usage-header {
    align-items: flex-start;
}

.token-usage-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    gap: 0.625rem;
}

.token-usage-filter {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.token-usage-filter .form-select {
    min-width: 150px;
}

.token-kpi-row .dash-kpi {
    min-width: 0;
}

.token-kpi-row small,
.token-breakdown-grid small {
    font-size: 0.78rem;
}

.token-breakdown-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.token-chart-frame {
    position: relative;
    height: 320px;
    min-height: 320px;
}

.token-chart-frame--compact {
    height: 280px;
    min-height: 280px;
}

.token-chart-frame canvas {
    display: block;
    width: 100% !important;
    height: 100% !important;
}

.token-empty-state {
    min-height: 320px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    text-align: center;
    padding: 2rem;
    border: 1px dashed var(--stroke-strong);
    border-radius: var(--radius-lg);
    background: var(--surface-alt);
    color: var(--text-secondary);
}

.token-empty-state--compact {
    min-height: 220px;
}

.token-empty-state i {
    font-size: 2rem;
    color: var(--text-tertiary);
}

/* ---------------------------------------------------------------------------
   24. RESPONSIVE
   --------------------------------------------------------------------------- */
@media (max-width: 1100px) {
    .dash-grid {
        grid-template-columns: 1fr;
    }
    .dash-grid-aside {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    }
}

@media (max-width: 768px) {
    .dash-kpi-row {
        grid-template-columns: repeat(2, 1fr);
    }
    .dash-metrics-strip {
        grid-template-columns: repeat(2, 1fr);
    }
    .dash-header {
        flex-direction: column;
        align-items: flex-start;
    }
    .dash-shell {
        padding: 0 16px 32px;
    }
    .token-usage-actions {
        width: 100%;
        justify-content: flex-start;
    }
    .token-usage-filter {
        flex: 1 1 180px;
    }
    .token-usage-filter .form-select {
        width: 100%;
    }
    .token-breakdown-grid {
        grid-template-columns: 1fr;
    }
    .token-chart-frame {
        height: 260px;
        min-height: 260px;
    }
    .token-empty-state {
        min-height: 240px;
    }

    /* Page header pattern: title left + buttons right — stack on mobile
       !important needed to override Bootstrap utility classes (d-flex, justify-content-between, align-items-center) which also use !important */
    .portal-page-header {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 0.75rem !important;
    }
    .portal-page-header .d-flex {
        flex-wrap: wrap;
    }

    /* Container padding reduction */
    .container-lg,
    .container-fluid {
        padding-left: 12px;
        padding-right: 12px;
    }

    /* Card body padding reduction */
    .section-card > .card-body {
        padding: 0.875rem;
    }

    /* Login surface padding */
    .login-surface {
        padding: 1rem 1rem 2rem;
    }

    /* Stepper indicators — wrap on small screens
       !important needed to override Bootstrap utility classes (d-flex, justify-content-between) which also use !important */
    .portal-stepper {
        flex-wrap: wrap !important;
        gap: 0.5rem !important;
        justify-content: center !important;
    }
    .portal-stepper > * {
        font-size: 0.78rem;
    }
    /* Hide connector lines between steps when wrapped — they use position:absolute and break on wrap */
    .portal-stepper .position-absolute {
        display: none;
    }
}

/* Navbar collapse styling for compact screens */
@media (max-width: 1199.98px) {
    .portal-navbar {
        padding-block: 0.55rem;
    }

    .portal-navbar .navbar-collapse {
        border-top: 1px solid var(--stroke);
        margin-top: 0.65rem;
    }

    .portal-navbar .navbar-toggler {
        border-color: var(--stroke);
        color: var(--text-secondary);
        padding: 0.25rem 0.5rem;
    }
    .portal-navbar .navbar-toggler-icon {
        filter: var(--bs-navbar-toggler-icon-filter, none);
    }
    [data-theme="dark"] .portal-navbar .navbar-toggler-icon {
        filter: invert(1) grayscale(100%) brightness(200%);
    }

    .portal-nav-content,
    .portal-primary-nav {
        align-items: stretch;
        flex-direction: column;
        width: 100%;
    }

    .portal-nav-content {
        gap: 0.65rem;
        padding-block: 0.75rem 0.2rem;
    }

    .portal-primary-nav {
        gap: 0.2rem;
        margin-left: 0;
    }

    .portal-nav-link {
        justify-content: flex-start;
        width: 100%;
        padding-inline: 0.75rem;
    }

    .portal-nav-link.is-active::before {
        top: 0.55rem;
        right: auto;
        bottom: 0.55rem;
        left: -0.05rem;
        width: 3px;
        height: auto;
        border-radius: 0 999px 999px 0;
    }

    .portal-nav-menu.dropdown-toggle::after {
        position: static;
        width: auto;
        height: auto;
        margin-left: auto;
        border-radius: 0;
    }

    .portal-system-menu {
        position: static !important;
        width: 100%;
        margin-top: 0.25rem !important;
        transform: none !important;
        box-shadow: none;
    }

    .portal-utility-nav {
        justify-content: flex-start;
        padding-top: 0.65rem;
        padding-left: 0;
        border-top: 1px solid var(--stroke);
        border-left: 0;
    }

    .portal-user-chip {
        max-width: min(100%, 280px);
    }
}

/* Small phones */
@media (max-width: 480px) {
    .dash-kpi-row {
        grid-template-columns: 1fr 1fr;
        gap: 0.75rem;
    }
    .dash-kpi {
        padding: 0.75rem;
        gap: 0.625rem;
    }
    .dash-kpi-icon {
        width: 34px;
        height: 34px;
        font-size: 1rem;
    }
    .dash-kpi-value {
        font-size: 1.25rem;
    }
    .dash-kpi-label {
        font-size: 0.72rem;
    }
    .dash-metrics-strip {
        grid-template-columns: 1fr 1fr;
    }
    .dash-metric-value {
        font-size: 1.05rem;
    }
    .dash-shell {
        padding: 0 12px 24px;
    }
    .dash-header {
        gap: 0.5rem;
        margin-bottom: 1rem;
    }
    .dash-title {
        font-size: 1.25rem;
    }
    .dash-grid-aside {
        grid-template-columns: 1fr;
    }
    .dash-section .card-body {
        padding: 0.875rem;
    }
    .portal-footer .d-flex {
        flex-direction: column;
        gap: 0.5rem;
        text-align: center;
    }
    .portal-footer .nav {
        justify-content: center;
    }
}

/* ---------------------------------------------------------------------------
   23. ERROR PAGE (MudBlazor classes)
   --------------------------------------------------------------------------- */
.mud-paper {
    background: var(--surface) !important;
    color: var(--text) !important;
    border: 1px solid var(--stroke);
}

.mud-error-text {
    color: var(--red) !important;
}

.mud-secondary-text {
    color: var(--text-secondary) !important;
}

.mud-button-filled-primary {
    background: var(--accent) !important;
    color: var(--text-on-accent) !important;
}

/* ── Realtor Onboarding Polish ── */

.realtor-onboarding {
    position: relative;
}

.realtor-onboarding::before {
    content: "";
    position: absolute;
    inset: -40px;
    background-image:
        radial-gradient(circle, rgba(71, 85, 105, 0.07) 1px, transparent 1.5px),
        radial-gradient(circle, rgba(216, 74, 27, 0.06) 1px, transparent 1.5px);
    background-size: 35px 35px, 50px 50px;
    background-position: 0 0, 17px 17px;
    pointer-events: none;
    z-index: 0;
    mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, black 0%, transparent 70%);
    -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, black 0%, transparent 70%);
}

.realtor-onboarding > * {
    position: relative;
    z-index: 1;
}

.realtor-onboarding .section-card {
    position: relative;
    overflow: hidden;
    transition: box-shadow 0.3s, transform 0.3s;
}

.realtor-onboarding .section-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--palette-primary), var(--palette-accent));
    z-index: 2;
}

.realtor-onboarding .section-card:hover {
    box-shadow: var(--shadow-lg);
}

.realtor-onboarding .rounded-circle {
    transition: box-shadow 0.2s;
}

.realtor-onboarding .border.rounded.p-3 {
    position: relative;
    overflow: hidden;
    transition: box-shadow 0.3s, border-color 0.3s;
}

.realtor-onboarding .border.rounded.p-3::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle, rgba(71, 85, 105, 0.04) 1px, transparent 1.5px);
    background-size: 24px 24px;
    pointer-events: none;
    z-index: 0;
}

.realtor-onboarding .border.rounded.p-3 > * {
    position: relative;
    z-index: 1;
}

.realtor-onboarding .border.rounded.p-3:hover {
    border-color: rgba(216, 74, 27, 0.3) !important;
    box-shadow: 0 2px 12px rgba(216, 74, 27, 0.08);
}

.realtor-onboarding .btn-success.btn-lg {
    box-shadow: 0 4px 16px rgba(216, 74, 27, 0.2);
    transition: box-shadow 0.3s, transform 0.15s;
}

.realtor-onboarding .btn-success.btn-lg:hover {
    box-shadow: 0 6px 24px rgba(216, 74, 27, 0.35);
}

.portal-branding-preview-shell {
    min-height: 100px;
    display: flex;
    align-items: center;
}

.portal-branding-logo-preview {
    max-width: 200px;
    max-height: 100px;
    border: 1px solid var(--bs-border-color);
    border-radius: 4px;
}

.portal-branding-photo-preview {
    max-width: 120px;
    max-height: 120px;
    border: 2px solid var(--bs-border-color);
    border-radius: 50%;
}

.portal-branding-placeholder {
    width: 100px;
    height: 100px;
    border: 2px dashed var(--bs-border-color);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--bs-secondary);
}

.portal-branding-placeholder-icon {
    font-size: 2rem;
}

.portal-color-picker {
    width: 40px;
    height: 34px;
    padding: 2px;
    border: 1px solid var(--bs-border-color);
    border-radius: 4px;
    cursor: pointer;
}

.portal-color-text {
    max-width: 100px;
}

.portal-branding-logo-summary {
    max-width: 80px;
    max-height: 50px;
    border: 1px solid var(--bs-border-color);
    border-radius: 4px;
}

.portal-branding-photo-summary {
    max-width: 50px;
    max-height: 50px;
    border: 1px solid var(--bs-border-color);
    border-radius: 50%;
}

.portal-color-swatch {
    width: 14px;
    height: 14px;
    vertical-align: middle;
}

.portal-color-swatch circle {
    stroke: var(--bs-border-color);
    stroke-width: 1px;
}

.access-mode-option {
    cursor: pointer;
}

.access-mode-option-active {
    border-width: 2px !important;
}

.portal-access-code-input {
    max-width: 350px;
}

.portal-ai-conversation-tenant-cell {
    min-width: 170px;
}

.portal-ai-conversation-preview-cell {
    min-width: 260px;
}

.portal-ai-conversation-activity-cell {
    min-width: 150px;
}

.portal-ai-conversation-actions-cell {
    min-width: 120px;
}

.portal-ai-conversation-row {
    cursor: pointer;
}

.portal-ai-conversation-row:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: -2px;
}

.portal-ai-transcript-modal {
    --bs-modal-width: 1200px;
}

.portal-ai-message {
    border-left: 3px solid var(--stroke-strong);
}

.portal-ai-message--user {
    border-left-color: var(--blue);
}

.portal-ai-message--assistant {
    border-left-color: var(--accent);
}

.portal-ai-message-content {
    white-space: pre-wrap;
}

.realtor-onboarding-illustration img {
    max-width: 280px;
    opacity: 0.65;
    filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.05));
}

[data-bs-theme="dark"] .realtor-onboarding::before {
    background-image:
        radial-gradient(circle, rgba(148, 163, 184, 0.08) 1px, transparent 1.5px),
        radial-gradient(circle, rgba(216, 74, 27, 0.06) 1px, transparent 1.5px);
}

[data-bs-theme="dark"] .realtor-onboarding .section-card::before {
    background: linear-gradient(90deg, rgba(216, 74, 27, 0.8), rgba(148, 163, 184, 0.6));
}

[data-bs-theme="dark"] .realtor-onboarding .border.rounded.p-3::before {
    background: radial-gradient(circle, rgba(148, 163, 184, 0.05) 1px, transparent 1.5px);
    background-size: 24px 24px;
}

[data-bs-theme="dark"] .realtor-onboarding-illustration img {
    opacity: 0.4;
    filter: brightness(0.9) drop-shadow(0 4px 8px rgba(0, 0, 0, 0.2));
}

@media (prefers-reduced-motion: reduce) {
    .realtor-onboarding .section-card:hover,
    .realtor-onboarding .border.rounded.p-3:hover,
    .realtor-onboarding .btn-success.btn-lg:hover {
        box-shadow: none;
    }
}

/* ---------------------------------------------------------------------------
   Tenant Admin
   --------------------------------------------------------------------------- */
.tenant-admin-shell {
    max-width: 1480px;
    margin: 0 auto;
    padding: 0 24px 48px;
    overflow-x: clip;
}

.tenant-admin-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1rem;
    margin-bottom: 1rem;
}

.tenant-admin-title {
    min-width: 0;
}

.tenant-admin-kicker {
    margin-bottom: 0.2rem;
    color: var(--text-tertiary);
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.tenant-admin-header-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.5rem;
}

.tenant-admin-summary {
    align-items: center;
}

.tenant-admin-summary .admin-metric-pill {
    background: var(--surface);
}

.tenant-provisioning-panel {
    padding: 0.95rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface);
    box-shadow: var(--shadow-sm);
}

.tenant-provisioning-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.85rem;
}

.tenant-provisioning-refresh {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0.18rem 0.55rem;
    border: 1px solid var(--stroke);
    border-radius: 999px;
    background: var(--surface-alt);
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-weight: 700;
    white-space: nowrap;
}

.tenant-progress-banner {
    display: flex;
    gap: 0.9rem;
    padding: 1rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface);
    box-shadow: var(--shadow-sm);
}

.tenant-progress-banner.is-active {
    border-color: var(--accent);
    background:
        linear-gradient(135deg, var(--accent-bg), transparent 62%),
        var(--surface);
}

.tenant-progress-banner.is-success {
    border-color: var(--green);
    background:
        linear-gradient(135deg, var(--green-soft), transparent 62%),
        var(--surface);
}

.tenant-progress-banner.is-danger {
    border-color: var(--red);
    background:
        linear-gradient(135deg, var(--red-soft), transparent 62%),
        var(--surface);
}

.tenant-progress-banner-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 38px;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: var(--accent-bg);
    color: var(--accent);
    font-size: 1.05rem;
}

.tenant-progress-banner.is-success .tenant-progress-banner-icon {
    background: var(--green-soft);
    color: var(--green);
}

.tenant-progress-banner.is-danger .tenant-progress-banner-icon {
    background: var(--red-soft);
    color: var(--red);
}

.tenant-progress-banner-body {
    display: grid;
    min-width: 0;
    flex: 1;
    gap: 0.55rem;
}

.tenant-progress-banner-title-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.tenant-progress-banner-title {
    color: var(--text);
    font-weight: 750;
    line-height: 1.2;
}

.tenant-progress-banner-step {
    margin-top: 0.12rem;
    color: var(--text-secondary);
    font-size: 0.92rem;
    line-height: 1.35;
}

.tenant-provisioning-inline-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.45rem;
}

.tenant-provisioning-title-actions {
    display: flex;
    align-items: flex-start;
    justify-content: flex-end;
    gap: 0.55rem;
}

.tenant-detail-dismiss-btn {
    width: 32px;
    min-width: 32px;
    height: 32px;
    padding: 0;
    border-color: var(--stroke-strong);
    background: var(--surface);
    color: var(--text-secondary);
    line-height: 1;
}

.tenant-detail-dismiss-btn:hover,
.tenant-detail-dismiss-btn:focus {
    border-color: var(--accent);
    background: var(--accent-bg);
    color: var(--accent);
}

.tenant-detail-dismiss-btn i {
    font-size: 0.82rem;
}

.alert-dismissible > .tenant-detail-dismiss-btn {
    position: absolute;
    top: 0.65rem;
    right: 0.75rem;
}

.tenant-provisioning-title-actions > .tenant-detail-dismiss-btn {
    flex: 0 0 auto;
    margin-top: 0.18rem;
}

.tenant-provisioning-title-actions > .tenant-detail-dismiss-btn:hover,
.tenant-provisioning-title-actions > .tenant-detail-dismiss-btn:focus {
    opacity: 1;
}

.tenant-provisioning-percent {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0.18rem 0.55rem;
    border: 1px solid var(--accent);
    border-radius: 999px;
    background: var(--accent-bg);
    color: var(--accent);
    font-size: 0.78rem;
    font-weight: 750;
    white-space: nowrap;
}

.tenant-provisioning-list {
    display: grid;
    gap: 0.65rem;
}

.tenant-provisioning-item {
    display: grid;
    gap: 0.48rem;
    padding: 0.75rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-sm);
    background: var(--surface-alt);
}

.tenant-provisioning-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.tenant-provisioning-name {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: 0.08rem;
}

.tenant-provisioning-name strong {
    color: var(--text);
    font-size: 0.9rem;
    line-height: 1.2;
}

.tenant-provisioning-name span,
.tenant-provisioning-meta,
.tenant-provisioning-empty,
.tenant-provisioning-error {
    color: var(--text-secondary);
    font-size: 0.8rem;
}

.tenant-provisioning-step,
.tenant-progress-note {
    color: var(--text-secondary);
    font-size: 0.82rem;
    line-height: 1.35;
}

.tenant-progress-track {
    height: 8px;
    overflow: hidden;
    border-radius: 999px;
    background: var(--stroke);
}

.tenant-progress-track-lg {
    height: 10px;
}

.tenant-progress-track > span {
    display: block;
    height: 100%;
    width: 0;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--accent), var(--blue));
    transition: width 220ms ease;
}

.tenant-progress-banner.is-success .tenant-progress-track > span {
    background: var(--green);
}

.tenant-progress-banner.is-danger .tenant-progress-track > span {
    background: var(--red);
}

@media (max-width: 575.98px) {
    .tenant-progress-banner {
        align-items: flex-start;
        gap: 0.75rem;
    }

    .tenant-progress-banner-title-row {
        flex-direction: column;
        gap: 0.55rem;
    }

    .tenant-provisioning-title-row {
        align-items: flex-start;
        flex-direction: column;
    }

    .tenant-provisioning-title-actions {
        width: 100%;
        justify-content: space-between;
    }

    .tenant-provisioning-inline-meta {
        justify-content: flex-start;
    }
}

.tenant-provisioning-error-message,
.tenant-provisioning-error {
    padding: 0.5rem 0.65rem;
    border: 1px solid var(--red);
    border-radius: var(--radius-sm);
    background: var(--red-soft);
    color: var(--red);
    font-size: 0.8rem;
    font-weight: 650;
}

.tenant-provisioning-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.tenant-provisioning-meta span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Tenant detail control desk */
.tenant-detail-shell {
    max-width: 1480px;
    margin: 0 auto;
    padding: 0 24px 48px;
    overflow-x: clip;
}

.tenant-detail-header {
    margin-bottom: 1rem;
}

.tenant-detail-title-row {
    display: flex;
    align-items: center;
    gap: 0.8rem;
}

.tenant-detail-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    border: 1px solid var(--stroke-strong);
    border-radius: var(--radius-md);
    background:
        linear-gradient(145deg, var(--accent-bg), transparent 72%),
        var(--surface-alt);
    box-shadow: inset 3px 0 0 var(--accent);
    color: var(--accent);
    font-size: 1rem;
    font-weight: 800;
}

.tenant-detail-identity-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.45rem 0.85rem;
    color: var(--text-secondary);
    font-size: 0.84rem;
}

.tenant-detail-identity-meta > span:not(.badge) {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.tenant-detail-identity-meta i {
    color: var(--text-tertiary);
}

.tenant-detail-section-nav {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.45rem;
    overflow-x: auto;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface);
    box-shadow: var(--shadow-card);
    scrollbar-width: thin;
}

.tenant-detail-section-nav a {
    display: inline-flex;
    align-items: center;
    gap: 0.42rem;
    min-height: 34px;
    padding: 0.35rem 0.7rem;
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    color: var(--text-secondary);
    font-size: 0.82rem;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
}

.tenant-detail-section-nav a:hover,
.tenant-detail-section-nav a:focus-visible {
    border-color: var(--stroke);
    background: var(--surface-alt);
    color: var(--accent);
    outline: none;
}

.tenant-detail-section-nav a > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 0.35rem;
    border-radius: 999px;
    background: var(--accent-bg);
    color: var(--accent);
    font-size: 0.72rem;
}

.tenant-detail-overview-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 1rem;
}

.tenant-detail-card,
.tenant-detail-panel,
.tenant-detail-workflow-card,
.tenant-detail-governance-card {
    min-width: 0;
}

.tenant-detail-section-heading,
.tenant-detail-workflow-heading {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
}

.tenant-detail-section-icon,
.tenant-detail-module-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
    border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--stroke));
    border-radius: var(--radius-sm);
    background: var(--accent-bg);
    color: var(--accent);
}

.tenant-detail-section-icon.is-danger {
    border-color: color-mix(in srgb, var(--red) 35%, var(--stroke));
    background: var(--red-soft);
    color: var(--red);
}

.tenant-detail-panel-heading,
.tenant-detail-module-header,
.tenant-detail-group-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.tenant-detail-panel-heading {
    padding-bottom: 0.85rem;
    border-bottom: 1px solid var(--stroke);
}

.tenant-detail-module {
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface-alt);
}

.tenant-quota-module {
    border-left: 3px solid var(--accent);
    background:
        linear-gradient(105deg, var(--accent-bg), transparent 34%),
        var(--surface-alt);
}

.tenant-quota-metrics {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0.55rem;
    margin-top: 1rem;
}

.tenant-quota-metric {
    min-width: 0;
    padding: 0.65rem 0.7rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-sm);
    background: var(--surface);
}

.tenant-quota-metric > div {
    margin-bottom: 0.15rem;
    color: var(--text-secondary);
    font-size: 0.75rem;
}

.tenant-quota-metric strong {
    display: block;
    overflow: hidden;
    color: var(--text);
    font-size: 0.92rem;
    font-weight: 750;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tenant-quota-metric.is-emphasis {
    border-color: color-mix(in srgb, var(--accent) 42%, var(--stroke));
    background: var(--accent-bg);
}

.tenant-quota-metric.is-emphasis strong {
    color: var(--accent);
}

.tenant-quota-usage {
    margin-top: 0.8rem;
}

.tenant-quota-usage-label {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.35rem;
    color: var(--text-secondary);
    font-size: 0.76rem;
    font-weight: 650;
}

.tenant-quota-reset-note {
    margin-top: 0.35rem;
    color: var(--text-tertiary);
    font-size: 0.74rem;
}

.tenant-quota-form {
    display: grid;
    grid-template-columns: minmax(180px, 0.8fr) minmax(280px, 1.2fr) auto;
    align-items: end;
    gap: 0.8rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--stroke);
}

.tenant-quota-submit .btn {
    white-space: nowrap;
}

.tenant-detail-module-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.8rem;
}

.tenant-detail-compact-module {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
}

.tenant-detail-compact-module > :last-child {
    margin-top: auto;
}

.tenant-detail-group-heading {
    margin-bottom: 0.8rem;
    padding: 0 0.15rem;
}

.tenant-detail-workflow-grid,
.tenant-detail-governance-grid {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: 1rem;
}

.tenant-detail-workflow-card--create,
.tenant-detail-governance-card--audit {
    grid-column: 1 / -1;
}

.tenant-detail-workflow-heading {
    margin-bottom: 1rem;
}

.tenant-detail-workflow-heading p {
    line-height: 1.35;
}

.tenant-detail-governance-card--ownership {
    border-top: 3px solid var(--red);
}

.tenant-detail-panel .table,
.tenant-detail-governance-card .table {
    margin-bottom: 0;
}

#tenant-overview,
#portal-operations,
#access-management,
#tenant-accounts,
#tenant-governance {
    scroll-margin-top: 5rem;
}

@media (max-width: 1199.98px) {
    .tenant-quota-metrics {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .tenant-detail-workflow-grid,
    .tenant-detail-governance-grid {
        grid-template-columns: 1fr;
    }

    .tenant-detail-workflow-card--create,
    .tenant-detail-governance-card--audit {
        grid-column: auto;
    }
}

@media (max-width: 991.98px) {
    .tenant-detail-shell {
        padding-right: 16px;
        padding-left: 16px;
    }

    .tenant-detail-overview-grid {
        grid-template-columns: 1fr;
    }

    .tenant-quota-form {
        grid-template-columns: minmax(160px, 0.8fr) minmax(240px, 1.2fr);
    }

    .tenant-quota-submit {
        grid-column: 1 / -1;
    }
}

@media (max-width: 767.98px) {
    .tenant-quota-metrics {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .tenant-quota-form {
        grid-template-columns: 1fr;
    }

    .tenant-quota-submit {
        grid-column: auto;
    }
}

@media (max-width: 575.98px) {
    .tenant-detail-shell {
        padding-right: 12px;
        padding-left: 12px;
    }

    .tenant-detail-title-row {
        align-items: flex-start;
    }

    .tenant-detail-avatar {
        flex-basis: 40px;
        width: 40px;
        height: 40px;
    }

    .tenant-detail-identity-meta {
        align-items: flex-start;
        flex-direction: column;
        gap: 0.35rem;
    }

    .tenant-detail-panel-heading,
    .tenant-detail-module-header,
    .tenant-detail-group-heading {
        flex-direction: column;
    }

    .tenant-detail-module-actions form,
    .tenant-detail-module-actions .btn,
    .tenant-quota-submit .btn,
    .tenant-detail-workflow-card .btn {
        width: 100%;
    }
}

.tenant-admin-card .card-body,
.tenant-create-card .card-body {
    padding: 1rem;
}

.tenant-card-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.95rem;
}

.tenant-card-meta {
    color: var(--text-secondary);
    font-size: 0.84rem;
}

.tenant-card-count {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0.25rem 0.65rem;
    border: 1px solid var(--stroke);
    border-radius: 999px;
    background: var(--surface-alt);
    color: var(--text-secondary);
    font-size: 0.8rem;
    font-weight: 700;
    white-space: nowrap;
}

.tenant-empty-state {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 2rem;
    border: 1px dashed var(--stroke-strong);
    border-radius: var(--radius-md);
    background: var(--surface-alt);
}

.tenant-empty-state > i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: var(--radius-md);
    background: var(--accent-soft);
    color: var(--accent);
}

.tenant-table-wrap {
    overflow-x: auto;
    overscroll-behavior-x: contain;
}

.tenant-table {
    min-width: 1060px;
}

.tenant-table thead th {
    padding-top: 0.7rem;
    padding-bottom: 0.7rem;
}

.tenant-table tbody td {
    padding-top: 0.68rem;
    padding-bottom: 0.68rem;
}

.tenant-name-cell {
    width: 220px;
}

.tenant-identity {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    min-width: 0;
}

.tenant-avatar {
    --tenant-color: var(--accent);
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    overflow: hidden;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface-alt);
    color: var(--tenant-color);
    font-size: 0.9rem;
    font-weight: 800;
}

.tenant-avatar-lg {
    width: 46px;
    height: 46px;
    font-size: 1.05rem;
}

.tenant-avatar img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: var(--surface);
}

.tenant-account-name-cell {
    min-width: 220px;
}

.tenant-account-password-input {
    min-width: 11rem;
}

.tenant-copy {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: 0.08rem;
}

.tenant-name {
    color: var(--text);
    font-weight: 700;
    line-height: 1.25;
}

.tenant-slug,
.tenant-date,
.tenant-owner,
.tenant-cell-note,
.tenant-muted-dash {
    color: var(--text-secondary);
    font-size: 0.84rem;
}

.tenant-workspace-link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    max-width: 170px;
    min-height: 30px;
    padding: 0.25rem 0.55rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-sm);
    background: var(--surface-alt);
    color: var(--accent);
    font-size: 0.86rem;
    font-weight: 650;
    text-decoration: none;
}

.tenant-workspace-link span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tenant-workspace-link i {
    flex: 0 0 auto;
    font-size: 0.75rem;
}

.tenant-workspace-link:hover {
    border-color: var(--accent);
    background: var(--accent-bg);
    color: var(--accent-hover);
}

.tenant-token,
.tenant-status,
.tenant-asset-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-height: 28px;
    padding: 0.2rem 0.55rem;
    border: 1px solid var(--stroke-strong);
    border-radius: 999px;
    background: transparent;
    color: var(--text-secondary);
    font-size: 0.82rem;
    font-weight: 700;
    white-space: nowrap;
}

.tenant-token.is-realtor {
    border-color: var(--blue);
    color: var(--blue);
}

.tenant-status.is-success {
    border-color: var(--green);
    color: var(--green);
}

.tenant-status.is-danger {
    border-color: var(--red);
    color: var(--red);
}

.tenant-status.is-warning {
    border-color: var(--yellow);
    color: var(--yellow);
}

.tenant-status.is-info {
    border-color: var(--blue);
    color: var(--blue);
}

.tenant-cell-note {
    display: flex;
    align-items: center;
    gap: 0.28rem;
    margin-top: 0.35rem;
}

.tenant-error-note {
    display: block;
    margin-top: 0.35rem;
    color: var(--red);
    font-size: 0.78rem;
    font-weight: 650;
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tenant-progress-note {
    display: block;
    margin-top: 0.35rem;
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tenant-owner-stack {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.38rem;
    max-width: 190px;
}

.tenant-owner {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tenant-account-btn {
    min-height: 28px;
    padding: 0.2rem 0.5rem;
    font-size: 0.8rem;
}

.tenant-toggle-btn {
    border: 1px solid var(--stroke);
    border-radius: 999px;
    background: transparent;
    color: var(--text-secondary);
    font-weight: 700;
}

.tenant-toggle-btn.is-on {
    border-color: var(--green);
    color: var(--green);
}

.tenant-toggle-btn.is-off {
    border-color: var(--stroke-strong);
    color: var(--text-secondary);
}

.tenant-toggle-btn:hover {
    background: var(--hover);
}

.tenant-assets {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.tenant-asset-pill {
    min-height: 26px;
    padding: 0.16rem 0.48rem;
    border-color: var(--green);
    color: var(--green);
    font-size: 0.78rem;
}

.tenant-actions-col {
    width: 156px;
    text-align: right;
}

.tenant-row-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.35rem;
    min-width: 144px;
}

.tenant-icon-btn {
    width: 30px;
    height: 30px;
    padding: 0;
}

.tenant-table th:last-child,
.tenant-table td:last-child {
    position: sticky;
    right: 0;
    z-index: 1;
    background: var(--surface);
    box-shadow: -10px 0 18px -18px rgba(0, 0, 0, 0.65);
}

.tenant-table thead th:last-child {
    z-index: 2;
    background: var(--surface-alt);
}

.tenant-branding-preview {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.8rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface-alt);
}

.tenant-color-input .form-control-color {
    width: 40px;
    min-width: 40px;
    padding: 0.2rem;
}

.tenant-current-asset {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.45rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface-alt);
}

.tenant-current-asset img {
    max-width: 140px;
    max-height: 48px;
    object-fit: contain;
}

.tenant-current-asset .tenant-current-face {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    object-fit: cover;
}

.portal-chart {
    min-height: 2px;
}

.portal-chart--120 {
    height: 120px;
}

.portal-chart--100 {
    height: 100px;
}

.portal-chart-cell {
    min-width: 0;
}

.portal-chart-bar {
    min-height: 2px;
    max-width: 40px;
}

.portal-chart-bar--narrow {
    min-height: 1px;
    max-width: 14px;
}

.portal-rating-up {
    background-color: var(--green);
}

.portal-rating-down {
    background-color: var(--red);
}

.portal-chart-label {
    font-size: 0.7rem;
}

.portal-legend-dot {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 2px;
    vertical-align: middle;
}

.portal-legend-dot--up {
    background: var(--green);
}

.portal-legend-dot--down {
    background: var(--red);
}

.portal-progress-thin {
    height: 8px;
}

.portal-funnel-step {
    flex: 1;
    min-width: 120px;
}

.portal-funnel-bar {
    height: 32px;
    min-width: 60px;
    margin: 0 auto;
}

.portal-funnel-bar--0 {
    background-color: var(--accent);
}

.portal-funnel-bar--1 {
    background-color: color-mix(in srgb, var(--accent) 82%, var(--surface) 18%);
}

.portal-funnel-bar--2 {
    background-color: color-mix(in srgb, var(--accent) 64%, var(--surface) 36%);
}

.portal-funnel-bar--3 {
    background-color: color-mix(in srgb, var(--accent) 46%, var(--surface) 54%);
}

.portal-funnel-chevron {
    font-size: 1.2rem;
}

.portal-question-text {
    max-width: 80%;
}

.portal-heatmap-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.portal-heatmap-grid {
    display: grid;
    grid-template-columns: 48px repeat(24, 1fr);
    gap: 2px;
    min-width: 600px;
}

.portal-heatmap-hour {
    font-size: 0.65rem;
}

.portal-heatmap-day {
    display: flex;
    align-items: center;
    font-size: 0.75rem;
}

.portal-heatmap-cell {
    border-radius: 3px;
    aspect-ratio: 1;
    min-height: 18px;
}

.portal-heatmap-legend-cell {
    width: 14px;
    height: 14px;
    min-height: 14px;
    border-radius: 2px;
}

.portal-heatmap-cell--0 {
    background-color: var(--surface-alt);
}

.portal-heatmap-cell--1 {
    background-color: color-mix(in srgb, var(--accent) 25%, var(--surface) 75%);
}

.portal-heatmap-cell--2 {
    background-color: color-mix(in srgb, var(--accent) 50%, var(--surface) 50%);
}

.portal-heatmap-cell--3 {
    background-color: color-mix(in srgb, var(--accent) 75%, var(--surface) 25%);
}

.portal-heatmap-cell--4 {
    background-color: var(--accent);
}

.tenant-create-form {
    display: grid;
    gap: 0.9rem;
}

.tenant-form-section {
    padding: 0.95rem;
    border: 1px solid var(--stroke);
    border-radius: var(--radius-md);
    background: var(--surface-alt);
}

.tenant-form-section-head {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin-bottom: 0.8rem;
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.tenant-form-section .input-group-text {
    border-color: var(--stroke);
    background: var(--surface);
    color: var(--text-secondary);
    font-size: 0.8rem;
}

.tenant-create-actions {
    display: flex;
    justify-content: flex-end;
    padding-top: 0.1rem;
}

@media (max-width: 992px) {
    .tenant-admin-shell {
        padding-right: 16px;
        padding-left: 16px;
    }

    .tenant-admin-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .tenant-admin-header-actions {
        justify-content: flex-start;
    }

    .tenant-card-head {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (max-width: 576px) {
    .tenant-admin-shell {
        padding-right: 12px;
        padding-left: 12px;
    }

    .tenant-admin-header-actions .btn {
        width: 100%;
    }

    .tenant-admin-header-actions {
        width: 100%;
    }

    .tenant-empty-state {
        align-items: flex-start;
        padding: 1rem;
    }

    .tenant-create-actions {
        justify-content: stretch;
    }

    .tenant-create-actions .btn {
        width: 100%;
    }
}

/* CASA percentage utility classes */
.portal-h-pct-0 { height: 0%; }
.portal-h-pct-1 { height: 1%; }
.portal-h-pct-2 { height: 2%; }
.portal-h-pct-3 { height: 3%; }
.portal-h-pct-4 { height: 4%; }
.portal-h-pct-5 { height: 5%; }
.portal-h-pct-6 { height: 6%; }
.portal-h-pct-7 { height: 7%; }
.portal-h-pct-8 { height: 8%; }
.portal-h-pct-9 { height: 9%; }
.portal-h-pct-10 { height: 10%; }
.portal-h-pct-11 { height: 11%; }
.portal-h-pct-12 { height: 12%; }
.portal-h-pct-13 { height: 13%; }
.portal-h-pct-14 { height: 14%; }
.portal-h-pct-15 { height: 15%; }
.portal-h-pct-16 { height: 16%; }
.portal-h-pct-17 { height: 17%; }
.portal-h-pct-18 { height: 18%; }
.portal-h-pct-19 { height: 19%; }
.portal-h-pct-20 { height: 20%; }
.portal-h-pct-21 { height: 21%; }
.portal-h-pct-22 { height: 22%; }
.portal-h-pct-23 { height: 23%; }
.portal-h-pct-24 { height: 24%; }
.portal-h-pct-25 { height: 25%; }
.portal-h-pct-26 { height: 26%; }
.portal-h-pct-27 { height: 27%; }
.portal-h-pct-28 { height: 28%; }
.portal-h-pct-29 { height: 29%; }
.portal-h-pct-30 { height: 30%; }
.portal-h-pct-31 { height: 31%; }
.portal-h-pct-32 { height: 32%; }
.portal-h-pct-33 { height: 33%; }
.portal-h-pct-34 { height: 34%; }
.portal-h-pct-35 { height: 35%; }
.portal-h-pct-36 { height: 36%; }
.portal-h-pct-37 { height: 37%; }
.portal-h-pct-38 { height: 38%; }
.portal-h-pct-39 { height: 39%; }
.portal-h-pct-40 { height: 40%; }
.portal-h-pct-41 { height: 41%; }
.portal-h-pct-42 { height: 42%; }
.portal-h-pct-43 { height: 43%; }
.portal-h-pct-44 { height: 44%; }
.portal-h-pct-45 { height: 45%; }
.portal-h-pct-46 { height: 46%; }
.portal-h-pct-47 { height: 47%; }
.portal-h-pct-48 { height: 48%; }
.portal-h-pct-49 { height: 49%; }
.portal-h-pct-50 { height: 50%; }
.portal-h-pct-51 { height: 51%; }
.portal-h-pct-52 { height: 52%; }
.portal-h-pct-53 { height: 53%; }
.portal-h-pct-54 { height: 54%; }
.portal-h-pct-55 { height: 55%; }
.portal-h-pct-56 { height: 56%; }
.portal-h-pct-57 { height: 57%; }
.portal-h-pct-58 { height: 58%; }
.portal-h-pct-59 { height: 59%; }
.portal-h-pct-60 { height: 60%; }
.portal-h-pct-61 { height: 61%; }
.portal-h-pct-62 { height: 62%; }
.portal-h-pct-63 { height: 63%; }
.portal-h-pct-64 { height: 64%; }
.portal-h-pct-65 { height: 65%; }
.portal-h-pct-66 { height: 66%; }
.portal-h-pct-67 { height: 67%; }
.portal-h-pct-68 { height: 68%; }
.portal-h-pct-69 { height: 69%; }
.portal-h-pct-70 { height: 70%; }
.portal-h-pct-71 { height: 71%; }
.portal-h-pct-72 { height: 72%; }
.portal-h-pct-73 { height: 73%; }
.portal-h-pct-74 { height: 74%; }
.portal-h-pct-75 { height: 75%; }
.portal-h-pct-76 { height: 76%; }
.portal-h-pct-77 { height: 77%; }
.portal-h-pct-78 { height: 78%; }
.portal-h-pct-79 { height: 79%; }
.portal-h-pct-80 { height: 80%; }
.portal-h-pct-81 { height: 81%; }
.portal-h-pct-82 { height: 82%; }
.portal-h-pct-83 { height: 83%; }
.portal-h-pct-84 { height: 84%; }
.portal-h-pct-85 { height: 85%; }
.portal-h-pct-86 { height: 86%; }
.portal-h-pct-87 { height: 87%; }
.portal-h-pct-88 { height: 88%; }
.portal-h-pct-89 { height: 89%; }
.portal-h-pct-90 { height: 90%; }
.portal-h-pct-91 { height: 91%; }
.portal-h-pct-92 { height: 92%; }
.portal-h-pct-93 { height: 93%; }
.portal-h-pct-94 { height: 94%; }
.portal-h-pct-95 { height: 95%; }
.portal-h-pct-96 { height: 96%; }
.portal-h-pct-97 { height: 97%; }
.portal-h-pct-98 { height: 98%; }
.portal-h-pct-99 { height: 99%; }
.portal-h-pct-100 { height: 100%; }
.portal-w-pct-0 { width: 0%; }
.portal-w-pct-1 { width: 1%; }
.portal-w-pct-2 { width: 2%; }
.portal-w-pct-3 { width: 3%; }
.portal-w-pct-4 { width: 4%; }
.portal-w-pct-5 { width: 5%; }
.portal-w-pct-6 { width: 6%; }
.portal-w-pct-7 { width: 7%; }
.portal-w-pct-8 { width: 8%; }
.portal-w-pct-9 { width: 9%; }
.portal-w-pct-10 { width: 10%; }
.portal-w-pct-11 { width: 11%; }
.portal-w-pct-12 { width: 12%; }
.portal-w-pct-13 { width: 13%; }
.portal-w-pct-14 { width: 14%; }
.portal-w-pct-15 { width: 15%; }
.portal-w-pct-16 { width: 16%; }
.portal-w-pct-17 { width: 17%; }
.portal-w-pct-18 { width: 18%; }
.portal-w-pct-19 { width: 19%; }
.portal-w-pct-20 { width: 20%; }
.portal-w-pct-21 { width: 21%; }
.portal-w-pct-22 { width: 22%; }
.portal-w-pct-23 { width: 23%; }
.portal-w-pct-24 { width: 24%; }
.portal-w-pct-25 { width: 25%; }
.portal-w-pct-26 { width: 26%; }
.portal-w-pct-27 { width: 27%; }
.portal-w-pct-28 { width: 28%; }
.portal-w-pct-29 { width: 29%; }
.portal-w-pct-30 { width: 30%; }
.portal-w-pct-31 { width: 31%; }
.portal-w-pct-32 { width: 32%; }
.portal-w-pct-33 { width: 33%; }
.portal-w-pct-34 { width: 34%; }
.portal-w-pct-35 { width: 35%; }
.portal-w-pct-36 { width: 36%; }
.portal-w-pct-37 { width: 37%; }
.portal-w-pct-38 { width: 38%; }
.portal-w-pct-39 { width: 39%; }
.portal-w-pct-40 { width: 40%; }
.portal-w-pct-41 { width: 41%; }
.portal-w-pct-42 { width: 42%; }
.portal-w-pct-43 { width: 43%; }
.portal-w-pct-44 { width: 44%; }
.portal-w-pct-45 { width: 45%; }
.portal-w-pct-46 { width: 46%; }
.portal-w-pct-47 { width: 47%; }
.portal-w-pct-48 { width: 48%; }
.portal-w-pct-49 { width: 49%; }
.portal-w-pct-50 { width: 50%; }
.portal-w-pct-51 { width: 51%; }
.portal-w-pct-52 { width: 52%; }
.portal-w-pct-53 { width: 53%; }
.portal-w-pct-54 { width: 54%; }
.portal-w-pct-55 { width: 55%; }
.portal-w-pct-56 { width: 56%; }
.portal-w-pct-57 { width: 57%; }
.portal-w-pct-58 { width: 58%; }
.portal-w-pct-59 { width: 59%; }
.portal-w-pct-60 { width: 60%; }
.portal-w-pct-61 { width: 61%; }
.portal-w-pct-62 { width: 62%; }
.portal-w-pct-63 { width: 63%; }
.portal-w-pct-64 { width: 64%; }
.portal-w-pct-65 { width: 65%; }
.portal-w-pct-66 { width: 66%; }
.portal-w-pct-67 { width: 67%; }
.portal-w-pct-68 { width: 68%; }
.portal-w-pct-69 { width: 69%; }
.portal-w-pct-70 { width: 70%; }
.portal-w-pct-71 { width: 71%; }
.portal-w-pct-72 { width: 72%; }
.portal-w-pct-73 { width: 73%; }
.portal-w-pct-74 { width: 74%; }
.portal-w-pct-75 { width: 75%; }
.portal-w-pct-76 { width: 76%; }
.portal-w-pct-77 { width: 77%; }
.portal-w-pct-78 { width: 78%; }
.portal-w-pct-79 { width: 79%; }
.portal-w-pct-80 { width: 80%; }
.portal-w-pct-81 { width: 81%; }
.portal-w-pct-82 { width: 82%; }
.portal-w-pct-83 { width: 83%; }
.portal-w-pct-84 { width: 84%; }
.portal-w-pct-85 { width: 85%; }
.portal-w-pct-86 { width: 86%; }
.portal-w-pct-87 { width: 87%; }
.portal-w-pct-88 { width: 88%; }
.portal-w-pct-89 { width: 89%; }
.portal-w-pct-90 { width: 90%; }
.portal-w-pct-91 { width: 91%; }
.portal-w-pct-92 { width: 92%; }
.portal-w-pct-93 { width: 93%; }
.portal-w-pct-94 { width: 94%; }
.portal-w-pct-95 { width: 95%; }
.portal-w-pct-96 { width: 96%; }
.portal-w-pct-97 { width: 97%; }
.portal-w-pct-98 { width: 98%; }
.portal-w-pct-99 { width: 99%; }
.portal-w-pct-100 { width: 100%; }
.portal-flex-pct-0 { flex: 0; }
.portal-flex-pct-1 { flex: 1; }
.portal-flex-pct-2 { flex: 2; }
.portal-flex-pct-3 { flex: 3; }
.portal-flex-pct-4 { flex: 4; }
.portal-flex-pct-5 { flex: 5; }
.portal-flex-pct-6 { flex: 6; }
.portal-flex-pct-7 { flex: 7; }
.portal-flex-pct-8 { flex: 8; }
.portal-flex-pct-9 { flex: 9; }
.portal-flex-pct-10 { flex: 10; }
.portal-flex-pct-11 { flex: 11; }
.portal-flex-pct-12 { flex: 12; }
.portal-flex-pct-13 { flex: 13; }
.portal-flex-pct-14 { flex: 14; }
.portal-flex-pct-15 { flex: 15; }
.portal-flex-pct-16 { flex: 16; }
.portal-flex-pct-17 { flex: 17; }
.portal-flex-pct-18 { flex: 18; }
.portal-flex-pct-19 { flex: 19; }
.portal-flex-pct-20 { flex: 20; }
.portal-flex-pct-21 { flex: 21; }
.portal-flex-pct-22 { flex: 22; }
.portal-flex-pct-23 { flex: 23; }
.portal-flex-pct-24 { flex: 24; }
.portal-flex-pct-25 { flex: 25; }
.portal-flex-pct-26 { flex: 26; }
.portal-flex-pct-27 { flex: 27; }
.portal-flex-pct-28 { flex: 28; }
.portal-flex-pct-29 { flex: 29; }
.portal-flex-pct-30 { flex: 30; }
.portal-flex-pct-31 { flex: 31; }
.portal-flex-pct-32 { flex: 32; }
.portal-flex-pct-33 { flex: 33; }
.portal-flex-pct-34 { flex: 34; }
.portal-flex-pct-35 { flex: 35; }
.portal-flex-pct-36 { flex: 36; }
.portal-flex-pct-37 { flex: 37; }
.portal-flex-pct-38 { flex: 38; }
.portal-flex-pct-39 { flex: 39; }
.portal-flex-pct-40 { flex: 40; }
.portal-flex-pct-41 { flex: 41; }
.portal-flex-pct-42 { flex: 42; }
.portal-flex-pct-43 { flex: 43; }
.portal-flex-pct-44 { flex: 44; }
.portal-flex-pct-45 { flex: 45; }
.portal-flex-pct-46 { flex: 46; }
.portal-flex-pct-47 { flex: 47; }
.portal-flex-pct-48 { flex: 48; }
.portal-flex-pct-49 { flex: 49; }
.portal-flex-pct-50 { flex: 50; }
.portal-flex-pct-51 { flex: 51; }
.portal-flex-pct-52 { flex: 52; }
.portal-flex-pct-53 { flex: 53; }
.portal-flex-pct-54 { flex: 54; }
.portal-flex-pct-55 { flex: 55; }
.portal-flex-pct-56 { flex: 56; }
.portal-flex-pct-57 { flex: 57; }
.portal-flex-pct-58 { flex: 58; }
.portal-flex-pct-59 { flex: 59; }
.portal-flex-pct-60 { flex: 60; }
.portal-flex-pct-61 { flex: 61; }
.portal-flex-pct-62 { flex: 62; }
.portal-flex-pct-63 { flex: 63; }
.portal-flex-pct-64 { flex: 64; }
.portal-flex-pct-65 { flex: 65; }
.portal-flex-pct-66 { flex: 66; }
.portal-flex-pct-67 { flex: 67; }
.portal-flex-pct-68 { flex: 68; }
.portal-flex-pct-69 { flex: 69; }
.portal-flex-pct-70 { flex: 70; }
.portal-flex-pct-71 { flex: 71; }
.portal-flex-pct-72 { flex: 72; }
.portal-flex-pct-73 { flex: 73; }
.portal-flex-pct-74 { flex: 74; }
.portal-flex-pct-75 { flex: 75; }
.portal-flex-pct-76 { flex: 76; }
.portal-flex-pct-77 { flex: 77; }
.portal-flex-pct-78 { flex: 78; }
.portal-flex-pct-79 { flex: 79; }
.portal-flex-pct-80 { flex: 80; }
.portal-flex-pct-81 { flex: 81; }
.portal-flex-pct-82 { flex: 82; }
.portal-flex-pct-83 { flex: 83; }
.portal-flex-pct-84 { flex: 84; }
.portal-flex-pct-85 { flex: 85; }
.portal-flex-pct-86 { flex: 86; }
.portal-flex-pct-87 { flex: 87; }
.portal-flex-pct-88 { flex: 88; }
.portal-flex-pct-89 { flex: 89; }
.portal-flex-pct-90 { flex: 90; }
.portal-flex-pct-91 { flex: 91; }
.portal-flex-pct-92 { flex: 92; }
.portal-flex-pct-93 { flex: 93; }
.portal-flex-pct-94 { flex: 94; }
.portal-flex-pct-95 { flex: 95; }
.portal-flex-pct-96 { flex: 96; }
.portal-flex-pct-97 { flex: 97; }
.portal-flex-pct-98 { flex: 98; }
.portal-flex-pct-99 { flex: 99; }
.portal-flex-pct-100 { flex: 100; }

.realtor-admin-narrow-shell {
    max-width: 1100px;
}

.realtor-settings-numeric-input {
    max-width: 120px;
}

.realtor-documents-select-col {
    width: 40px;
}

.realtor-documents-actions-col {
    width: 80px;
}

.email-unsubscribes-actions-col {
    width: 120px;
}

.realtor-lead-detail-label-col {
    width: 160px;
}

.crawl-sites-url-link {
    max-width: 250px;
}

.portal-external-icon-sm {
    font-size: 0.7em;
}

.portal-empty-icon {
    font-size: 3rem;
}

.portal-transcript-message {
    border-left: 3px solid #adb5bd;
    margin-bottom: 12px;
    padding: 8px 12px;
}

.portal-transcript-message-user {
    border-left-color: var(--blue);
}

.portal-transcript-message-assistant {
    border-left-color: #adb5bd;
}

.portal-pre-wrap {
    white-space: pre-wrap;
}

body:has(.checkout-shell) {
    background: #f7f4ee;
}

body:has(.checkout-shell) main.py-4 {
    padding: 0 !important;
}

body:has(.checkout-shell) .portal-footer {
    display: none;
}

.checkout-shell {
    min-height: 100vh;
    color: #151515;
    background:
        linear-gradient(90deg, rgba(31, 111, 102, 0.12), transparent 34%),
        linear-gradient(145deg, #fbfaf7 0%, #f3f0e9 52%, #edf1ed 100%);
}

.checkout-topbar,
.checkout-layout {
    width: min(1180px, calc(100% - 32px));
    margin: 0 auto;
}

.checkout-topbar {
    padding: 24px 0 12px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.checkout-brand,
.checkout-cancel,
.checkout-primary {
    color: #151515;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
}

.checkout-brand {
    gap: 10px;
    font-weight: 750;
    font-size: 1.05rem;
}

.checkout-brand img {
    width: 32px;
    height: 32px;
}

.checkout-cancel,
.checkout-primary {
    min-height: 40px;
    border: 1px solid rgba(21, 21, 21, 0.18);
    border-radius: 999px;
    padding: 0 16px;
    background: rgba(255, 255, 255, 0.56);
    font-weight: 700;
}

.checkout-cancel {
    color: #4f4a45;
    font-size: 0.94rem;
}

.checkout-primary {
    border-color: transparent;
    background: #1f6f66;
    color: #fff;
}

.checkout-layout {
    display: grid;
    grid-template-columns: minmax(280px, 0.82fr) minmax(360px, 1.18fr);
    gap: 24px;
    align-items: start;
    padding: 32px 0 56px;
}

.checkout-summary,
.checkout-panel,
.checkout-invalid {
    border: 1px solid rgba(21, 21, 21, 0.1);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.78);
    box-shadow: 0 18px 52px rgba(32, 28, 22, 0.08);
}

.checkout-summary {
    position: sticky;
    top: 24px;
    padding: clamp(22px, 3.4vw, 36px);
}

.checkout-kicker {
    color: #1f6f66;
    font-weight: 760;
    margin-bottom: 18px;
    font-size: 0.78rem;
}

.checkout-price-lockup {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 8px;
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(21, 21, 21, 0.1);
}

.checkout-price {
    font-size: clamp(2rem, 4vw, 3.25rem);
    line-height: 0.95;
    font-weight: 780;
}

.checkout-price-cadence {
    color: #68625b;
    font-weight: 700;
}

.checkout-summary h1 {
    margin: 18px 0 0;
    font-size: clamp(1.75rem, 3.4vw, 2.8rem);
    line-height: 1;
}

.checkout-product {
    margin: 10px 0 22px;
    color: #5c5650;
    font-size: 1.05rem;
}

.checkout-facts {
    margin: 0;
    display: grid;
    gap: 12px;
}

.checkout-facts div {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    padding: 13px 0;
    border-top: 1px solid rgba(21, 21, 21, 0.1);
}

.checkout-facts div:first-child {
    border-top: 0;
}

.checkout-facts dt {
    color: #6c665f;
    white-space: nowrap;
}

.checkout-facts dd {
    margin: 0;
    font-weight: 750;
    text-align: right;
}

.checkout-note {
    margin: 22px 0 0;
    padding-top: 18px;
    border-top: 1px solid rgba(21, 21, 21, 0.1);
    color: #5c5650;
    line-height: 1.55;
    font-size: 0.96rem;
}

.checkout-panel {
    min-height: 680px;
    padding: clamp(18px, 3vw, 28px);
}

.checkout-status,
.checkout-error {
    padding: 18px;
    border-radius: 8px;
    background: #fff;
    color: #5c5650;
    font-weight: 700;
}

.checkout-error {
    color: #9b2d20;
    border: 1px solid rgba(155, 45, 32, 0.22);
}

.checkout-invalid {
    width: min(520px, calc(100% - 32px));
    margin: 8vh auto;
    padding: 40px;
    text-align: center;
}

.checkout-invalid img {
    width: 48px;
    height: 48px;
}

.checkout-invalid h1 {
    margin: 18px 0 8px;
}

@media (max-width: 860px) {
    .checkout-layout {
        grid-template-columns: 1fr;
        gap: 16px;
        padding-top: 18px;
    }

    .checkout-summary {
        position: static;
    }

    .checkout-panel {
        min-height: 560px;
    }
}

@media (max-width: 520px) {
    .checkout-topbar,
    .checkout-layout {
        width: min(100% - 20px, 1180px);
    }

    .checkout-summary,
    .checkout-panel,
    .checkout-invalid {
        border-radius: 6px;
    }

    .checkout-facts div {
        display: grid;
        gap: 4px;
    }

    .checkout-facts dd {
        text-align: left;
    }

    .checkout-summary {
        padding: 20px;
    }

    .checkout-note {
        margin-top: 16px;
    }
}
