/* Portal UI foundation. Load after legacy Bootstrap; keep its grid and widget geometry. */
:root {
  --portal-ink: #243b40;
  --portal-muted: #566b70;
  --portal-brand: #17545c;
  --portal-brand-hover: #103e45;
  --portal-canvas: #f5f7f7;
  --portal-surface: #fff;
  --portal-border: #d5dfe0;
  --portal-focus: #2469b3;
  --portal-radius: 6px;
  --portal-space-1: 4px;
  --portal-space-2: 8px;
  --portal-space-3: 12px;
  --portal-space-4: 16px;
  --portal-space-6: 24px;
  --portal-space-8: 32px;
}
body { color: var(--portal-ink); background: var(--portal-canvas); font-family: Arial, Helvetica, sans-serif; }
h1, h2, h3 { color: var(--portal-ink); line-height: 1.25; }
h1 { font-size: 30px; margin: 0 0 20px; }
h2 { font-size: 24px; }
h3 { font-size: 20px; }
a { color: var(--portal-brand); }
a:hover, a:focus { color: var(--portal-brand-hover); }
.muted, .help-block { color: var(--portal-muted); }
:focus-visible { outline: 3px solid var(--portal-focus) !important; outline-offset: 3px; }
.portal-skip-link { position: fixed; left: 16px; top: -100px; z-index: 10000; padding: 12px 20px; background: #fff; border: 2px solid var(--portal-brand); border-radius: 4px; }
.portal-skip-link:focus { top: 8px; }
#main-content:focus { outline: none; }
.navbar-inner { background: #fff; border-bottom: 1px solid var(--portal-border); box-shadow: 0 1px 4px rgba(24, 60, 65, .07); }
.navbar .nav > li > a { color: var(--portal-ink); text-shadow: none; }
.navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { color: var(--portal-brand); background: #e4eeee; box-shadow: inset 0 -3px var(--portal-brand); }
.navbar .portal-navbar-container { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; column-gap:16px; width:auto; margin:0; padding:0 24px; }
.navbar .portal-navbar-container:before,.navbar .portal-navbar-container:after { display:none; }
.portal-nav-brand { grid-column:1; grid-row:1; display:flex; align-items:center; justify-self:start; min-height:40px; }
.portal-nav-brand img { display:block; width:176px; height:auto; }
.navbar .portal-nav-account { grid-column:3; grid-row:1; float:none; justify-self:end; margin:0; padding:0; max-width:100%; }
.portal-nav-account>.dropdown-toggle { box-sizing:border-box; display:block; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-navbar-container>.nav-collapse { grid-column:2; grid-row:1; min-width:0; }
.portal-navbar-container>.btn-navbar { grid-column:3; grid-row:1; margin:0; }
@media(min-width:1200px) {
  .portal-navbar-container>.nav-collapse { justify-self:center; }
  .portal-navbar-container>.nav-collapse>.nav { display:flex; justify-content:center; float:none; margin:0; }
  .portal-navbar-container .nav>li>a { padding-left:9px; padding-right:9px; }
}
@media(max-width:1199px) {
  body.portal-has-navigation { padding-top:0; }
  .portal-has-navigation>.navbar-fixed-top { position:static; margin-bottom:20px; }
  .navbar .portal-navbar-container { grid-template-columns:176px minmax(0,1fr) 40px; padding:0 12px; }
  .navbar .portal-nav-account { grid-column:2; }
  .portal-navbar-container>.btn-navbar { display:block; justify-self:end; }
  .portal-navbar-container>.nav-collapse { grid-column:1 / -1; grid-row:2; }
  .portal-navbar-container>.nav-collapse.collapse { height:0!important; overflow:hidden!important; }
  .portal-navbar-container>.nav-collapse.in { height:auto!important; overflow:visible!important; }
  .portal-navbar-container .nav-collapse .nav { float:none; margin:0 0 10px; }
  .portal-navbar-container .nav-collapse .nav>li { float:none; }
  .portal-navbar-container .nav-collapse .nav>li>a { padding:9px 12px; margin-bottom:2px; }
  .portal-navbar-container .nav-collapse .dropdown-menu { position:static; float:none; display:none; margin:0 12px; padding:0; background:transparent; border:0; box-shadow:none; }
  .portal-navbar-container .nav-collapse .open>.dropdown-menu { display:block; }
  .portal-navbar-container .nav-collapse .dropdown-menu:before,.portal-navbar-container .nav-collapse .dropdown-menu:after { display:none; }
  .portal-navbar-container .nav-collapse .dropdown-menu a { padding:9px 12px; }
}
@media(max-width:599px) {
  .navbar .portal-navbar-container { grid-template-columns:minmax(0,1fr) 40px; }
  .portal-navbar-container>.btn-navbar { grid-column:2; }
  .navbar .portal-nav-account { grid-column:1 / -1; grid-row:2; margin:0 0 5px; max-width:100%; }
  .portal-navbar-container>.nav-collapse { grid-row:3; }
}
.btn { background-image: none; border-color: #a8b9bc; border-radius: var(--portal-radius); text-shadow: none; box-shadow: none; }
.btn-primary { color: #fff; background: var(--portal-brand); border-color: var(--portal-brand); }
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active { color: #fff; background: var(--portal-brand-hover); border-color: var(--portal-brand-hover); }
.btn-primary.disabled, .btn-primary[disabled] { background: var(--portal-brand); }
.btn-large { font-size: 16px; line-height: 24px; white-space: normal; }
.well, .hero-unit { background: var(--portal-surface); border: 1px solid var(--portal-border); border-radius: var(--portal-radius); box-shadow: none; }
input[type="text"], input[type="password"], input[type="email"], textarea, select { border-color: #a8b9bc; border-radius: 4px; color: var(--portal-ink); }
input:focus, textarea:focus, select:focus { border-color: var(--portal-brand); }
.table { background: #fff; }
.table th { color: var(--portal-ink); background-color: #edf2f2; }
.table-bordered, .table td, .table th { border-color: var(--portal-border); }
.alert { border-radius: var(--portal-radius); text-shadow: none; }
.alert a { text-decoration: underline; }
footer { color: var(--portal-muted); font-size: 13px; line-height: 1.7; padding: 8px 0 16px; }
footer a { text-decoration: underline; }
.portal-footer-details { display: flex; justify-content: center; flex-wrap: wrap; gap: 4px 16px; margin: 0 0 4px; }
.portal-footer-details a { white-space: nowrap; }
.portal-footer-payment { margin: 0; }
hr { border-top-color: var(--portal-border); border-bottom: 0; margin: 24px 0; }
.portal-eyebrow { color: var(--portal-brand); font-size: 12px; font-weight: bold; letter-spacing: .12em; text-transform: uppercase; margin: 0 0 8px; }
.portal-login { padding-top: 24px; }
.portal-login .navbar { display: none; }
.portal-login-brand { text-align: center; margin: 32px 0; }
.portal-login-brand img { display: block; width: 360px; max-width: 90%; height: auto; margin: 0 auto; }
.portal-login .form-signin { box-sizing: border-box; max-width: 440px; padding: 32px; margin: 0 auto 32px; background: #fff; border: 1px solid var(--portal-border); border-top: 4px solid var(--portal-brand); border-radius: 8px; box-shadow: 0 8px 24px rgba(24, 60, 65, .06); }
.portal-login h1 { margin: 0 0 8px; }
.portal-login-intro { color: var(--portal-muted); line-height: 1.6; margin-bottom: 24px; }
.portal-login .form-signin > label { font-weight: bold; margin-bottom: 8px; }
.portal-login .form-signin input[type="text"], .portal-login .form-signin input[type="email"], .portal-login .form-signin input[type="password"] { height: 48px; padding: 12px; margin-bottom: 24px; }
.portal-login-options { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0 0 24px; }
.portal-login-options .checkbox { display: inline-flex; align-items: center; gap: 8px; padding: 0; margin: 0; line-height: 20px; }
.portal-login-options .checkbox input { float: none; flex-shrink: 0; width: 16px; height: 16px; margin: 0; }
.portal-login-options a { text-decoration: underline; }
.portal-login .btn { box-sizing: border-box; min-height: 48px; padding: 11px 12px; line-height: 24px; margin-bottom: 0; }
.portal-divider { display: flex; align-items: center; gap: 12px; margin: 24px 0; line-height: 20px; color: var(--portal-muted); }
.portal-divider:before, .portal-divider:after { content: ""; height: 1px; background: var(--portal-border); flex: 1; }
.portal-login .portal-entra-button { display: flex; align-items: center; justify-content: center; gap: 12px; background: #fff; color: var(--portal-ink); margin-top: 12px; padding: 11px 12px; font-size: 14px; }
.portal-divider + .portal-entra-button { margin-top: 0; }
.portal-entra-button:hover { background: #edf2f2; }
.portal-microsoft-mark { display: grid; grid-template-columns: 8px 8px; gap: 2px; flex-shrink: 0; }
.portal-microsoft-mark span { width: 8px; height: 8px; background: #f25022; }
.portal-microsoft-mark span:nth-child(2) { background: #7fba00; }
.portal-microsoft-mark span:nth-child(3) { background: #00a4ef; }
.portal-microsoft-mark span:nth-child(4) { background: #ffb900; }
@media (max-width: 767px) {
  .portal-login { padding-top: 16px; }
  .portal-login-brand { margin: 24px 0; }
  .portal-login .form-signin { padding: 24px; }
  h1 { font-size: 26px; }
}
@media print {
  body { color: #000; background: #fff; }
  .portal-skip-link { display: none; }
  .well, .hero-unit, .form-signin { box-shadow: none; }
}
.portal-page-heading { margin: 0 0 24px; }
.portal-page-heading > p:last-child { margin-bottom: 0; }
.portal-page-heading h1 { margin-bottom: 8px; }
.portal-quote-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.portal-quote-action { box-sizing: border-box; min-width: 0; padding: 24px; background: #fff; border: 1px solid var(--portal-border); border-radius: var(--portal-radius); margin: 0; }
.portal-quote-action h2 { font-size: 20px; margin: 0 0 16px; }
.portal-quote-action .btn { box-sizing: border-box; max-width: 100%; min-height: 44px; padding: 11px 16px; line-height: 20px; vertical-align: top; white-space: normal; }
.portal-quote-action .multi-row { margin-bottom: 0; }
.portal-quote-action .multi-row + .multi-row { margin-top: 8px; }
.portal-estimator-actions { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.portal-estimator-actions .btn { min-width: 0; }
.portal-estimator-logo { display: block; flex: 0 0 auto; width: 90px; height: auto; margin: 0 0 0 auto; }
.portal-quote-search { display: grid; grid-template-columns: minmax(120px, 1fr) repeat(2, minmax(0, 2fr)); gap: 8px 16px; margin-bottom: 24px; }
.portal-quote-search label { margin: 0 0 8px; font-weight: bold; }
.portal-quote-search input { box-sizing: border-box; width: 100%; height: 44px; padding: 10px 12px; margin: 0; }
.portal-quote-search > p { grid-column: 1 / -1; margin: 0; }
.portal-access-form { max-width: 640px; }
/* Legacy div#form applies -19px margins. Reset only this standalone editor. */
.portal-access-form > #form { margin: 0 0 24px; }
.portal-access-form .control-group { margin: 0 0 24px; }
.portal-access-form .control-label { margin-bottom: 8px; font-weight: bold; }
.portal-access-form textarea { display: block; box-sizing: border-box; width: 100%; max-width: 100%; padding: 12px; margin: 0; resize: vertical; }
.portal-access-form > .btn { box-sizing: border-box; min-height: 44px; padding: 11px 16px; line-height: 20px; }
@media (max-width: 767px) {
  .portal-quote-actions { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .portal-quote-search { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .portal-quote-action { padding: 24px; }
}
.portal-empty-state { padding: 24px; border: 1px dashed #a8b9bc; border-radius: var(--portal-radius); text-align: center; background: #fff; }
.portal-empty-state h2 { font-size: 20px; margin: 0 0 8px; }
.portal-empty-state p { margin: 0; color: var(--portal-muted); }
.portal-return-link { text-align: center; margin: 20px 0 0; }
.portal-return-link a { text-decoration: underline; }

/* Keep content panels distinct from the page canvas. */
.panel, .panel-body, .tab-content, .accordion-inner, .thumbnail { background-color: var(--portal-surface); }
.panel { border: 1px solid var(--portal-border); border-radius: var(--portal-radius); }

/* Rich-text notices use inline borders rather than the panel class. */
.portal-page-content div[style*="border:"] { background-color: var(--portal-surface, #fff); }

.portal-status-heading,.portal-status-card-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; }
.portal-status-heading h1 { margin-bottom:8px; }
.portal-status-heading p { margin-bottom:0; }
.portal-status-heading { margin-bottom:16px; }
.portal-status-time { color:var(--portal-muted); margin-bottom:24px; }
.portal-status-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.portal-status-card { box-sizing:border-box; min-width:0; padding:24px; border:1px solid var(--portal-border); border-radius:8px; background:#fff; overflow-wrap:anywhere; }
.portal-status-card h2 { font-size:22px; margin:0 0 12px; }
.portal-status-badge { display:inline-block; border-radius:16px; background:#edf0f1; color:#425258; padding:4px 12px; font-size:13px; font-weight:bold; }
.portal-status-badge--available { background:#e5f4eb; color:#215e39; }
.portal-status-badge--unavailable { background:#fce9e9; color:#913333; }
.portal-status-badge--degraded { background:#fff3d8; color:#76540d; }
.portal-status-metrics { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 16px; margin:24px 0; }
.portal-status-metrics dt { font-size:13px; color:var(--portal-muted); font-weight:normal; }
.portal-status-metrics dd { margin:6px 0 0; font-size:26px; line-height:1.3; font-weight:bold; }
.portal-status-metrics dd .muted { font-size:16px; font-weight:normal; }
.portal-status-metrics small { font-size:14px; font-weight:normal; }
.portal-status-note { font-size:13px; color:var(--portal-muted); line-height:1.6; }
.portal-status-web { border-top:1px solid var(--portal-border); padding-top:16px; margin-top:20px; }
.portal-status-web p { margin:6px 0 0; }
.portal-status-settings { margin-top:24px; }
.portal-status-settings h2 { margin-bottom:20px; }
.portal-status-table { overflow-x:auto; }
.portal-status-table th { text-align:left; }
.portal-status-table tbody th { width:32%; }
.portal-status-settings>p:last-child { margin-bottom:0; }
@media(max-width:767px) { .portal-status-grid { grid-template-columns:minmax(0,1fr); gap:16px; } .portal-status-card { padding:20px; } .portal-status-metrics dd { font-size:24px; } }

.portal-status-live { margin-top:40px; padding-top:32px; border-top:1px solid var(--portal-border); }
.portal-status-live h2 { margin:0 0 8px; }
.portal-status-controls { display:flex; align-items:end; flex-wrap:wrap; gap:12px; margin:20px 0 12px; }
.portal-status-controls label,.portal-error-filters label { display:flex; flex-direction:column; gap:6px; font-size:13px; font-weight:bold; margin:0; }
.portal-status-controls select,.portal-status-controls input,.portal-error-filters input,.portal-error-filters select { box-sizing:border-box; margin:0; width:auto; max-width:100%; min-height:38px; height:auto; padding:8px; }
#status-custom { display:flex; flex-wrap:wrap; align-items:end; gap:12px; }
.portal-status-live [hidden] { display:none!important; }
.portal-live-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; margin:20px 0; }
.portal-live-stats>div { background:#fff; border:1px solid var(--portal-border); border-radius:8px; padding:18px; }
.portal-live-stats span { display:block; font-size:13px; color:var(--portal-muted); }
.portal-live-stats strong { display:block; margin-top:8px; font-size:28px; }
.portal-status-charts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.status-chart { margin:0; padding:20px; }
.status-chart h3,.portal-status-feeds h3,.portal-status-errors h3 { font-size:20px; margin:0 0 12px; }
.status-chart svg { display:block; width:100%; height:auto; touch-action:pan-y; }
.status-chart figcaption { font-size:12px; line-height:1.5; color:var(--portal-muted); }
.status-chart-legend { display:flex; flex-wrap:wrap; gap:4px 14px; min-height:28px; font-size:12px; }
.status-chart-legend i { display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:6px; }
.status-chart-readout { min-height:36px; font-size:12px; line-height:1.5; color:var(--portal-muted); margin:4px 0 8px; }
.portal-status-feeds { margin-top:24px; }
.portal-status-feeds td,.portal-status-errors td { font-size:12px; overflow-wrap:anywhere; max-width:220px; }
.portal-status-feeds .table { margin-bottom:0; }
.status-user-button { padding:0; border:0; background:none; color:var(--portal-brand); font:inherit; text-align:left; text-decoration:underline; }
.portal-status-errors { margin-top:24px; }
.portal-error-filters { display:flex; flex-wrap:wrap; align-items:end; gap:12px; margin:16px 0; }
.portal-error-filters label:first-child { flex:1; min-width:180px; }
.portal-error-filters label:first-child input { width:100%; }
.portal-error-pagination { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px; font-size:13px; }
@media(max-width:900px) { .portal-live-stats { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:767px) { .portal-status-charts { grid-template-columns:minmax(0,1fr); } .status-chart { padding:16px; } .portal-live-stats { gap:10px; } .portal-live-stats>div { padding:14px; } .portal-status-controls input { width:100%; } }

.portal-status-section-nav{display:flex;flex-wrap:wrap;gap:8px 20px;margin:16px 0}.portal-status-section-nav a{text-decoration:underline}#status-live,#status-connections,#status-environments{scroll-margin-top:70px}

.portal-access-summary { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:24px; background:#fff; border:1px solid var(--portal-border); border-left:4px solid var(--portal-brand); border-radius:8px; margin-bottom:24px; }
.portal-access-summary h2 { font-size:22px; margin:0 0 8px; }
.portal-access-summary p:last-child { margin-bottom:0; }
.portal-access-summary dl { display:flex; gap:28px; flex-shrink:0; margin:0; }
.portal-access-summary dt { font-size:12px; font-weight:normal; color:var(--portal-muted); }
.portal-access-summary dd { margin:6px 0 0; font-size:28px; font-weight:bold; }
.portal-access-layout { display:grid; grid-template-columns:minmax(0,1fr) 280px; align-items:start; gap:24px; }
.portal-access-form.portal-access-editor { max-width:none; margin:0; }
.portal-access-card { box-sizing:border-box; min-width:0; border:1px solid var(--portal-border); border-radius:8px; background:#fff; padding:24px; margin:0 0 24px; }
.portal-access-editor fieldset>legend { box-sizing:border-box; display:block; float:left; width:100%; font-size:20px; font-weight:bold; line-height:1.4; border:0; margin:0 0 12px; padding:0; color:var(--portal-ink); }
.portal-access-editor fieldset>legend+p { clear:both; }
.portal-access-options { display:grid; gap:12px; margin:20px 0 16px; }
.portal-access-option { box-sizing:border-box; display:flex; align-items:flex-start; gap:12px; margin:0; padding:16px; border:1px solid var(--portal-border); border-radius:6px; cursor:pointer; }
.portal-access-option:has(input:checked) { border-color:var(--portal-brand); background:#eef6f5; box-shadow:inset 3px 0 var(--portal-brand); }
.portal-access-option input[type=radio] { flex:none; width:18px; height:18px; margin:2px 0 0; }
.portal-access-option>span { display:block; }
.portal-access-option strong { display:block; margin-bottom:4px; }
.portal-access-option>span>span { color:var(--portal-muted); font-size:13px; line-height:1.6; }
.portal-access-help { color:var(--portal-muted); font-size:13px; line-height:1.6; margin:10px 0 0; }
.portal-access-lists { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; margin-top:20px; }
.portal-access-lists label { font-weight:bold; margin-bottom:8px; }
.portal-access-editor textarea { font-family:monospace; font-size:14px; line-height:1.6; }
.portal-access-aside h2 { font-size:18px; margin:0 0 12px; }
.portal-access-aside .portal-access-card p:last-child { margin-bottom:0; }
.portal-access-email { overflow-wrap:anywhere; }
.portal-access-save { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; margin-top:0; }
.portal-access-save p { max-width:440px; font-size:13px; line-height:1.6; color:var(--portal-muted); margin:0; }
.portal-access-save .btn { min-height:44px; padding:11px 18px; }
@media(max-width:1000px) { .portal-access-layout { grid-template-columns:minmax(0,1fr); } .portal-access-aside { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; } }
@media(max-width:767px) { .portal-access-summary { align-items:flex-start; flex-direction:column; padding:20px; } .portal-access-lists,.portal-access-aside { grid-template-columns:minmax(0,1fr); } .portal-access-card { padding:20px; } .portal-access-layout { gap:24px; } .portal-access-aside { gap:0; } .portal-access-save .btn { width:100%; } }

/* Empty required fields are not errors before a user attempts sign-in. */
.portal-login .form-signin input:focus:invalid:not(:user-invalid) { border-color:var(--portal-brand); color:var(--portal-ink); box-shadow:none; }
.portal-login .form-signin > .btn + .muted { margin-top:12px; }
