/* Bootstrap owns layout, controls and component behaviour. Only brand/shell refinements live here. */
:root {
    --bs-body-font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
    --bs-body-color: #1c2b40;
    --bs-body-bg: #f5f7fb;
    --bs-secondary-color: #627187;
    --bs-border-color: #e1e7ef;
    --bs-link-color: #235bd7;
    --bs-link-hover-color: #1848b3;
    --bs-border-radius: .6rem;
    --bs-border-radius-lg: .85rem;
}
.portal-shell { min-height: 100dvh; }
.portal-sidebar { background: #112139; color: #c1cede; }
.portal-sidebar .nav-link { display: flex; align-items: center; gap: .8rem; color: #bdcadb; padding: .75rem 1rem; font-size: .9rem; }
.portal-sidebar .nav-link:hover { color: white; background: #1d3451; }
.portal-sidebar .nav-link.active { color: white; background: #254ac0; box-shadow: 0 4px 12px #071b4040; }
.portal-sidebar .nav-link .bi { font-size: 1.1rem; }
.portal-brand-mark { display: grid; place-items: center; width: 2.65rem; height: 2.65rem; border: 1px solid #607698; border-radius: .7rem; font-size: .85rem; letter-spacing: .04em; background: #1d3451; }
.portal-eyebrow { font-size: .65rem; font-weight: 700; text-transform: uppercase; letter-spacing: .13em; }
.portal-content { width: 100%; max-width: 1600px; margin-inline: auto; }
.min-width-0 { min-width: 0; }
.portal-icon { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: .8rem; font-size: 1.3rem; flex-shrink: 0; }
.portal-content .card { --bs-card-bg: #fff; --bs-card-border-color: var(--bs-border-color); --bs-card-border-radius: .85rem; box-shadow: 0 2px 3px #19335003; }
.portal-content .card-header { background: transparent; padding: 1.25rem 1.5rem; }
.portal-content .list-group { --bs-list-group-bg: #fff; }
.portal-content .btn { --bs-btn-font-weight: 600; }
.portal-content .btn-primary { --bs-btn-bg: #2857d8; --bs-btn-border-color: #2857d8; --bs-btn-hover-bg: #1f46b4; --bs-btn-hover-border-color: #1f46b4; --bs-btn-active-bg: #193d9e; }
.portal-content .table { --bs-table-bg: transparent; --bs-table-hover-bg: #f6f8fc; font-size: .875rem; margin-bottom: 0; }
.portal-content .table > :not(caption) > * > * { padding: 1rem 1.5rem; }
.portal-content .table thead th { background: #f8fafd; color: #627187; font-size: .7rem; font-weight: 600; text-transform: uppercase; letter-spacing: .045em; white-space: nowrap; }
.portal-content .table tbody tr:last-child > * { border-bottom: 0; }
.portal-content .form-label { font-size: .875rem; font-weight: 600; }
.portal-content .form-control, .portal-content .form-select { background-color: #fff; }
.portal-content .badge { font-weight: 500; padding: .45em .7em; }
.portal-content .validation-message, .portal-content .validation-errors { color: var(--bs-danger-text-emphasis); font-size: .875rem; }
.portal-content .invalid { border-color: var(--bs-danger); }
.portal-content h1:focus { outline: none; }
.portal-metric { transition: border-color .15s ease, box-shadow .15s ease; }
.portal-content .portal-metric:hover { border-color: #9bb6f1; box-shadow: 0 4px 16px #204a8a0a; }
.portal-feature { background: #112139; color: #fff; border-radius: .85rem; }
.portal-feature .text-body-secondary { color: #b6c6dc !important; }
.portal-feature-step { width: 1.65rem; height: 1.65rem; display: inline-grid; place-items: center; border: 1px solid #526b8d; border-radius: 50%; font-size: .7rem; }
.portal-seat-progress { height: .3rem; min-width: 5rem; max-width: 8rem; }
.portal-product-key { letter-spacing: .08em; overflow-wrap: anywhere; user-select: all; }
.portal-feature-choice:has(input:checked) { border-color: #789bef !important; background: #f0f5ff; }
.portal-request-json { min-height: 16rem; font-size: .8rem; }
.portal-audit-detail { max-width: 34rem; }
@media (min-width: 992px) {
    .portal-shell { display: grid; grid-template-columns: 240px minmax(0, 1fr); }
    .portal-sidebar { position: sticky; top: 0; height: 100dvh; overflow-y: auto; }
    .portal-topbar { min-height: 73px; }
}
@media (max-width: 575.98px) {
    .portal-content .table > :not(caption) > * > * { padding: .85rem 1rem; }
    .portal-content .display-6 { font-size: 2rem; }
}
@media (prefers-reduced-motion: reduce) {
    .portal-metric { transition: none; }
}
