:root {
  --portal-page-current: var(--portal-page);
  --portal-surface-current: var(--portal-surface);
  --portal-text-current: var(--portal-text);
  --portal-muted-current: color-mix(in srgb, var(--portal-muted) 80%, var(--portal-text) 20%);
  --portal-border-current: color-mix(in srgb, var(--portal-border) 76%, var(--portal-text) 24%);
  --portal-navbar-current: var(--portal-navbar);
  --portal-active-booking-bg-current: var(--portal-active-booking-bg);
  --portal-active-booking-text-current: var(--portal-active-booking-text);
  --portal-primary-ink-current: var(--portal-primary);
  --portal-header-height: 66px;
  --portal-sidebar-width: 238px;
  --portal-shadow-sm: 0 3px 10px rgba(16, 30, 44, .13);
  --portal-shadow: 0 10px 30px rgba(16, 30, 44, .18);
  --bs-primary: var(--portal-primary);
  --bs-primary-rgb: var(--portal-primary-rgb);
  --bs-link-color: var(--portal-primary);
  --bs-link-hover-color: var(--portal-accent);
  --bs-body-font-family: var(--portal-font-body);
  --bs-body-bg: var(--portal-page-current);
  --bs-body-color: var(--portal-text-current);
}

[data-bs-theme="dark"] {
  --portal-page-current: var(--portal-dark-page);
  --portal-surface-current: var(--portal-dark-surface);
  --portal-text-current: var(--portal-dark-text);
  --portal-muted-current: color-mix(in srgb, var(--portal-dark-muted) 78%, var(--portal-dark-text) 22%);
  --portal-border-current: color-mix(in srgb, var(--portal-dark-border) 76%, var(--portal-dark-text) 24%);
  --portal-active-booking-bg-current: var(--portal-dark-active-booking-bg);
  --portal-active-booking-text-current: var(--portal-dark-active-booking-text);
  --portal-primary-ink-current: var(--portal-dark-link-safe, var(--portal-dark-link));
  --portal-shadow-sm: 0 3px 12px rgba(0, 0, 0, .34);
  --portal-shadow: 0 12px 32px rgba(0, 0, 0, .46);
  --bs-body-bg: var(--portal-page-current);
  --bs-body-color: var(--portal-text-current);
  --bs-border-color: var(--portal-border-current);
  --bs-secondary-color: var(--portal-muted-current);
}

* { box-sizing: border-box; }
html, body { min-height: 100%; }
html { background: var(--portal-page-current); }
body {
  margin: 0;
  color: var(--portal-text-current);
  background: var(--portal-page-current);
  font-family: var(--portal-font-body);
  font-size: var(--portal-font-size-base);
  font-weight: 400;
  transition: background-color .18s ease, color .18s ease;
}
body.portal-bg-all::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  background: var(--portal-bg-image) center / cover no-repeat fixed;
}
body.portal-bg-all::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  background: rgba(var(--portal-page-rgb), var(--portal-background-overlay-opacity));
}
[data-bs-theme="dark"] body.portal-bg-all::after { background: rgba(var(--portal-dark-page-rgb), var(--portal-background-overlay-opacity)); }

body.portal-bg-public.portal-public::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -2;
  background: var(--portal-bg-image) center / cover no-repeat fixed;
}
body.portal-bg-public.portal-public::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  background: linear-gradient(90deg, rgba(var(--portal-primary-rgb), var(--portal-hero-overlay-opacity)), rgba(var(--portal-primary-rgb), calc(var(--portal-hero-overlay-opacity) * .45)));
}

a { color: var(--portal-primary-ink-current); text-decoration: none; }
a:hover { color: var(--portal-accent); }
h1, h2, h3, h4, h5, h6 { color: var(--portal-text-current); font-family: var(--portal-font-headings); font-weight: 600; }
.text-muted, .text-body-secondary, .description { color: var(--portal-muted-current) !important; }

.table-primary {
  --bs-table-bg: var(--portal-active-booking-bg-current);
  --bs-table-striped-bg: var(--portal-active-booking-bg-current);
  --bs-table-hover-bg: var(--portal-active-booking-bg-current);
  --bs-table-color: var(--portal-active-booking-text-current);
  color: var(--portal-active-booking-text-current);
}
.table-primary a, .table-primary .btn-link { color: inherit; }
.table-primary td, .table-primary th { border-color: rgba(255, 255, 255, .08); }

.mc-blackbox-wrap { padding: 18px; }
.mc-blackbox-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px; }
.mc-blackbox-head > div > strong { display:block; font-family:var(--portal-font-headings); font-size:1.05rem; color:var(--portal-text-current); }
.mc-blackbox-count { display:inline-flex; align-items:center; white-space:nowrap; padding:5px 9px; border:1px solid var(--portal-border-current); border-radius:999px; color:var(--portal-muted-current); font-size:.78rem; font-weight:700; background:var(--portal-surface-current); }
.mc-blackbox-toolbar { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:14px; }
.mc-blackbox-toolbar .btn { min-width:64px; font-weight:700; }
.mc-blackbox-stats { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; margin-bottom:12px; }
.mc-blackbox-stats > div { min-width:0; padding:10px 12px; border:1px solid var(--portal-border-current); border-radius:var(--portal-radius); background:rgba(var(--portal-primary-rgb),.035); }
.mc-blackbox-stats small { display:block; color:var(--portal-muted-current); font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.035em; margin-bottom:2px; }
.mc-blackbox-stats strong { display:block; color:var(--portal-text-current); font-size:.96rem; font-variant-numeric:tabular-nums; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mc-blackbox-stage { position:relative; min-height:390px; border:1px solid var(--portal-border-current); border-radius:calc(var(--portal-radius) + 2px); background:linear-gradient(180deg,rgba(var(--portal-primary-rgb),.055),rgba(var(--portal-primary-rgb),.012)); padding:14px; overflow:hidden; }
.mc-blackbox-stage canvas { width:100% !important; height:390px !important; }
.mc-blackbox-events { margin-top:14px; padding-top:12px; border-top:1px solid var(--portal-border-current); }
.mc-blackbox-events-title { color:var(--portal-text-current); font-weight:700; font-size:.86rem; margin-bottom:8px; }
.mc-blackbox-event-list { display:flex; flex-wrap:wrap; gap:7px; }
.mc-blackbox-event { display:inline-flex; align-items:center; gap:6px; max-width:100%; padding:5px 8px; border:1px solid var(--portal-border-current); border-radius:999px; background:var(--portal-surface-current); color:var(--portal-muted-current); font-size:.76rem; }
.mc-blackbox-event strong { color:var(--portal-text-current); font-variant-numeric:tabular-nums; }
.mc-blackbox-event span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:300px; }
.mc-blackbox-fallback { border:1px dashed var(--portal-border-current); border-radius:calc(var(--portal-radius) + 2px); padding:2rem 1rem; text-align:center; color:var(--portal-muted-current); }
.mc-blackbox-fallback i { font-size:2rem; display:block; margin-bottom:.6rem; }
@media (max-width: 991.98px) {
  .mc-blackbox-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .mc-blackbox-stage, .mc-blackbox-stage canvas { min-height:340px; height:340px !important; }
}
@media (max-width: 575.98px) {
  .mc-blackbox-wrap { padding:12px; }
  .mc-blackbox-head { display:block; }
  .mc-blackbox-count { margin-top:8px; }
  .mc-blackbox-stats { grid-template-columns:1fr; }
  .mc-blackbox-stage, .mc-blackbox-stage canvas { min-height:300px; height:300px !important; }
}

/* Main frame */
.portal-shell { min-height: 100vh; }
.portal-main { min-height: 100vh; padding-top: var(--portal-header-height); }
.portal-content { width: min(1460px, 100%); margin: 0 auto; padding: 24px 28px 42px; min-height: calc(100vh - 112px); }
.portal-footer { min-height: 46px; border-top: 1px solid var(--portal-border-current); color: var(--portal-muted-current); display: flex; align-items: center; justify-content: center; font-size: .9rem; background: var(--portal-surface-current); }
.portal-nav-sidebar.portal-auth .portal-main { margin-left: var(--portal-sidebar-width); }
.portal-nav-sidebar.portal-auth .portal-header { left: var(--portal-sidebar-width); }

/* Header and navigation */
.portal-header {
  position: fixed;
  inset: 0 0 auto 0;
  height: var(--portal-header-height);
  z-index: 1030;
  background: var(--portal-navbar-current);
  color: var(--portal-nav-text);
  border-bottom: 3px solid var(--portal-accent);
  box-shadow: 0 2px 7px rgba(0,0,0,.2);
}
.portal-header-inner { height: 100%; padding: 0 24px; display: flex; align-items: center; gap: 22px; }
.portal-brand { display: inline-flex; align-items: center; flex: 0 0 auto; }
.portal-brand img { display: block; max-height: 44px; max-width: 188px; object-fit: contain; }
.portal-desktop-nav { align-self: stretch; align-items: stretch; gap: 2px; }
.portal-desktop-nav .dropdown { display: flex; }
.portal-top-link {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--portal-nav-text);
  padding: 0 13px;
  display: inline-flex;
  align-items: center;
  font-weight: 600;
  font-size: .94rem;
  border-bottom: 3px solid transparent;
  margin-bottom: -3px;
}
.portal-top-link:hover, .portal-top-link:focus, .portal-top-link.active, .portal-desktop-nav .dropdown.show > .portal-top-link { color: var(--portal-nav-text); border-bottom-color: var(--portal-accent); background: color-mix(in srgb, var(--portal-nav-text) 6%, transparent); }
.portal-header-actions { margin-left: auto; display: flex; align-items: center; gap: 7px; }
.portal-notifications-host { display:flex; align-items:center; position:relative; }
.portal-utc { color: var(--portal-nav-muted); font-size: .78rem; font-weight: 600; margin-right: 4px; }
.portal-icon-btn {
  width: 38px; height: 38px; border: 1px solid color-mix(in srgb, var(--portal-nav-text) 18%, transparent); border-radius: calc(var(--portal-radius) * .75);
  background: color-mix(in srgb, var(--portal-nav-text) 8%, transparent); color: var(--portal-nav-text); display: inline-flex; align-items: center; justify-content: center;
}
.portal-icon-btn:hover { background: color-mix(in srgb, var(--portal-nav-text) 16%, transparent); color: var(--portal-accent); }
.portal-account-btn { border: 0; background: transparent; color: var(--portal-nav-text); display: flex; align-items: center; gap: 9px; padding: 4px 3px 4px 7px; border-radius: var(--portal-radius); }
.portal-account-btn:hover { background: color-mix(in srgb, var(--portal-nav-text) 8%, transparent); }
.portal-account-btn img { width: 38px; height: 38px; border-radius: calc(var(--portal-radius) * .75); object-fit: cover; border: 1px solid color-mix(in srgb, var(--portal-nav-text) 35%, transparent); }
.portal-account-fallback-icon { width:38px; height:38px; display:inline-flex; align-items:center; justify-content:center; font-size:1.7rem; color:var(--portal-nav-text); }
.portal-account-btn span { text-align: left; line-height: 1.05; }
.portal-account-btn strong { display: block; color: var(--portal-nav-text); font-size: .82rem; font-weight: 600; }
.portal-account-btn small { display: block; margin-top: 4px; color: var(--portal-nav-muted); font-size: .69rem; }
.portal-login-link { color: var(--portal-nav-text); font-weight: 600; padding: 8px 10px; }
.portal-login-link:hover { color: var(--portal-accent); }
.portal-dropdown { min-width: 218px; padding: 7px; border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); background: var(--portal-surface-current); box-shadow: var(--portal-shadow); }
.portal-dropdown .dropdown-item { color: var(--portal-text-current); padding: 8px 10px; border-radius: calc(var(--portal-radius) * .65); font-size: .84rem; }
.portal-dropdown .dropdown-item:hover, .portal-dropdown .dropdown-item.active { background: rgba(var(--portal-primary-rgb), .1); color: var(--portal-primary-ink-current); }
.portal-dropdown .dropdown-divider { border-color: var(--portal-border-current); }
.portal-theme-option.active::after { content: "✓"; float: right; font-weight: 700; color: var(--portal-primary-ink-current); }

.portal-sidebar { position: fixed; inset: 0 auto 0 0; width: var(--portal-sidebar-width); z-index: 1040; background: var(--portal-navbar-current); color: var(--portal-nav-text); flex-direction: column; border-right: 1px solid color-mix(in srgb, var(--portal-nav-text) 14%, transparent); }
.portal-sidebar-brand { height: var(--portal-header-height); display: flex; align-items: center; justify-content: center; padding: 10px 18px; border-bottom: 3px solid var(--portal-accent); }
.portal-sidebar-brand img { max-width: 178px; max-height: 43px; object-fit: contain; }
.portal-sidebar-nav { padding: 15px 11px; display: grid; gap: 3px; overflow-y: auto; }
.portal-nav-item { display: flex; align-items: center; gap: 11px; padding: 9px 11px; color: var(--portal-nav-text); border-radius: calc(var(--portal-radius) * .7); font-weight: 500; }
.portal-nav-item i { width: 18px; text-align: center; }
.portal-nav-item:hover, .portal-nav-item.active { color: var(--portal-nav-text); background: color-mix(in srgb, var(--portal-nav-text) 10%, transparent); }
.portal-nav-item.active { box-shadow: inset 3px 0 0 var(--portal-accent); }
.portal-sidebar-separator { height: 1px; background: color-mix(in srgb, var(--portal-nav-text) 12%, transparent); margin: 9px 5px; }
.portal-header-context { align-items: center; color: var(--portal-nav-muted); font-size: .8rem; }

.portal-mobile-nav { background: var(--portal-surface-current); color: var(--portal-text-current); }
.portal-mobile-nav .offcanvas-header { border-bottom: 1px solid var(--portal-border-current); }
.portal-mobile-nav .portal-brand img { max-height: 42px; }
.portal-mobile-links { display: grid; gap: 4px; }
.portal-mobile-links a { display: flex; align-items: center; gap: 12px; padding: 11px 12px; color: var(--portal-text-current); border-radius: var(--portal-radius); font-weight: 600; }
.portal-mobile-links a:hover, .portal-mobile-links a.active { background: rgba(var(--portal-primary-rgb), .1); color: var(--portal-primary-ink-current); }
.portal-mobile-links i { width: 20px; }
.portal-mobile-separator { height: 1px; background: var(--portal-border-current); margin: 8px 0; }

/* Generic UI */
.card, .mc-panel {
  background: var(--portal-surface-current);
  color: var(--portal-text-current);
  border-radius: var(--portal-radius);
  overflow: hidden;
}
.portal-cards-flat .card, .portal-cards-flat .mc-panel { border: 0; box-shadow: none; }
.portal-cards-border .card, .portal-cards-border .mc-panel { border: 1px solid var(--portal-border-current); box-shadow: none; }
.portal-cards-shadow .card, .portal-cards-shadow .mc-panel { border: 1px solid var(--portal-border-current); box-shadow: var(--portal-shadow-sm); }
.card-header, .mc-panel-head { background: var(--portal-surface-current); color: var(--portal-text-current); border-bottom: 1px solid var(--portal-border-current); }
.card-header { padding: 13px 16px; font-weight: 600; }
.card-body { padding: 17px; }
.card-footer { padding: 11px 16px; background: rgba(var(--portal-primary-rgb), .045); border-top: 1px solid var(--portal-border-current); }
.mc-panel-head { min-height: 52px; padding: 13px 16px; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.mc-panel-head h3 { margin: 0; font-size: 1rem; }
.mc-panel-body { padding: 17px; }

.btn { font-family: var(--portal-font-body); font-weight: 600; min-height: 37px; padding: .43rem .82rem; font-size: .9rem; }
.portal-buttons-square .btn { border-radius: 2px; }
.portal-buttons-rounded .btn { border-radius: calc(var(--portal-radius) * .8); }
.portal-buttons-pill .btn { border-radius: 999px; }
.btn-primary { --bs-btn-bg: var(--portal-primary); --bs-btn-border-color: var(--portal-primary); --bs-btn-hover-bg: var(--portal-navbar); --bs-btn-hover-border-color: var(--portal-navbar); }
.btn-outline-primary { --bs-btn-color: var(--portal-primary); --bs-btn-border-color: var(--portal-primary); --bs-btn-hover-bg: var(--portal-primary); --bs-btn-hover-border-color: var(--portal-primary); }
.btn-accent, .btn-warning { background: var(--portal-accent); border-color: var(--portal-accent); color: var(--portal-accent-button-text); }
.btn-accent:hover, .btn-warning:hover { filter: brightness(.92); color: var(--portal-accent-button-text); }
.btn-info { --bs-btn-bg: var(--portal-secondary); --bs-btn-border-color: var(--portal-secondary); --bs-btn-color: var(--portal-secondary-button-text); --bs-btn-hover-bg: var(--portal-primary); --bs-btn-hover-border-color: var(--portal-primary); --bs-btn-hover-color: var(--portal-nav-text); }

.form-label { color: var(--portal-text-current); font-weight: 600; font-size: .88rem; }
.form-control, .form-select, .ts-control { min-height: 41px; background: var(--portal-surface-current); color: var(--portal-text-current); border: 1px solid var(--portal-border-current); border-radius: calc(var(--portal-radius) * .7); box-shadow: none; }
.form-control:focus, .form-select:focus, .ts-control.focus { background: var(--portal-surface-current); color: var(--portal-text-current); border-color: var(--portal-secondary); box-shadow: 0 0 0 3px rgba(var(--portal-secondary-rgb), .18); }
.form-control::placeholder { color: var(--portal-muted-current); opacity: .72; }
.input-group-text { background: rgba(var(--portal-primary-rgb), .05); color: var(--portal-muted-current); border-color: var(--portal-border-current); }

.table-responsive { border-radius: var(--portal-radius); }
.table { --bs-table-bg: transparent; --bs-table-color: var(--portal-text-current); --bs-table-border-color: var(--portal-border-current); --bs-table-hover-bg: rgba(var(--portal-primary-rgb), .055); margin-bottom: 0; }
.table > :not(caption) > * > * { padding: .68rem .65rem; vertical-align: middle; }
.table thead th { color: var(--portal-muted-current); font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; }
.table tbody td { font-size: .9rem; }

.badge { border-radius: 999px; font-weight: 600; }
.nav-pills { gap: 5px; }
.nav-pills .nav-link { color: var(--portal-text-current); border-radius: calc(var(--portal-radius) * .7); }
.nav-pills .nav-link.active { background: var(--portal-primary); color: var(--portal-nav-text); }
.nav-tabs { border-bottom-color: var(--portal-border-current); }
.nav-tabs .nav-link { color: var(--portal-muted-current); border: 0; border-bottom: 2px solid transparent; }
.nav-tabs .nav-link.active { color: var(--portal-primary-ink-current); background: transparent; border-bottom-color: var(--portal-accent); }
.list-group-item { background: var(--portal-surface-current); color: var(--portal-text-current); border-color: var(--portal-border-current); }
.list-group-item-action:hover { background: rgba(var(--portal-primary-rgb), .05); color: var(--portal-primary-ink-current); }
.modal-content { background: var(--portal-surface-current); color: var(--portal-text-current); border-color: var(--portal-border-current); border-radius: var(--portal-radius); }
.modal-header, .modal-footer { border-color: var(--portal-border-current); }
.alert { border-radius: var(--portal-radius); }

/* Headings */
.mc-eyebrow { color: var(--portal-primary-ink-current); font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
.mc-page-title { margin: 0 0 18px; }
.mc-page-title h1 { font-size: 1.65rem; margin: 3px 0 0; }
.mc-page-title p { color: var(--portal-muted-current); margin: 5px 0 0; }

/* Dashboard */
.mc-dashboard-head { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 17px; }
.mc-dashboard-head h1 { margin: 2px 0 0; font-size: 1.75rem; }
.mc-dashboard-head p { margin: 5px 0 0; color: var(--portal-muted-current); }
.mc-dashboard-badge { background: rgba(var(--portal-primary-rgb), .08); color: var(--portal-primary-ink-current); border: 1px solid rgba(var(--portal-primary-rgb), .14); border-radius: 999px; padding: 6px 10px; font-weight: 600; font-size: .82rem; }
.mc-stat-grid, .mc-profile-stats { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 12px; margin-bottom: 16px; }
.mc-stat-card { padding: 14px 15px; background: var(--portal-surface-current); border-radius: var(--portal-radius); }
.portal-cards-flat .mc-stat-card { border: 0; }
.portal-cards-border .mc-stat-card { border: 1px solid var(--portal-border-current); }
.portal-cards-shadow .mc-stat-card { border: 1px solid var(--portal-border-current); box-shadow: var(--portal-shadow-sm); }
.mc-stat-icon { width: 34px; height: 34px; border-radius: calc(var(--portal-radius) * .7); display: inline-flex; align-items: center; justify-content: center; background: rgba(var(--portal-primary-rgb), .09); color: var(--portal-primary-ink-current); margin-bottom: 8px; }
.mc-stat-value { font-size: 1.25rem; font-weight: 700; color: var(--portal-text-current); line-height: 1.1; }
.mc-stat-label { color: var(--portal-muted-current); font-size: .8rem; margin-top: 5px; }
.mc-dashboard-grid { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(285px,.8fr); gap: 16px; align-items: start; }
.mc-stack { display: grid; gap: 16px; }
.mc-weather-shell .card { border: 0 !important; box-shadow: none !important; margin: 0 !important; }

/* Hero / public */
.mc-hero { min-height: 380px; display: flex; align-items: center; margin: -24px -28px 24px; padding: 48px max(28px, calc((100vw - 1404px)/2)); background: linear-gradient(90deg, rgba(var(--portal-primary-rgb), var(--portal-hero-overlay-opacity)), rgba(var(--portal-primary-rgb), calc(var(--portal-hero-overlay-opacity) * .44))), var(--portal-bg-image) center / cover no-repeat; border-bottom: 3px solid var(--portal-accent); }
.mc-hero-content { max-width: 650px; color: var(--portal-hero-text); }
.mc-hero-content h1 { color: var(--portal-hero-text); font-size: clamp(2rem, 4vw, 3.5rem); margin: 6px 0 10px; }
.mc-hero-content p { font-size: 1.08rem; color: var(--portal-hero-muted-text); max-width: 590px; }
.mc-hero-kicker { color: var(--portal-accent); font-size: .8rem; font-weight: 700; letter-spacing: .1em; }
.mc-hero-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 20px; }

/* Flights */
.mc-flight-layout { display: grid; grid-template-columns: minmax(0,1fr) 310px; gap: 16px; align-items: start; }
.mc-flight-list { display: grid; gap: 10px; }
.mc-flight-card { padding: 15px 16px; background: var(--portal-surface-current); border-radius: var(--portal-radius); border: 1px solid var(--portal-border-current); }
.mc-flight-card:hover { border-color: rgba(var(--portal-primary-rgb), .35); }
.mc-flight-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.mc-flight-ident { display: flex; align-items: center; gap: 9px; font-weight: 700; }
.mc-flight-ident img { max-width: 70px; max-height: 24px; object-fit: contain; }
.mc-flight-route { display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); gap: 13px; align-items: center; }
.mc-flight-airport:last-child { text-align: right; }
.mc-flight-airport strong { display: block; font-size: 1.35rem; color: var(--portal-text-current); }
.mc-flight-airport span { display: block; color: var(--portal-muted-current); font-size: .79rem; white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
.mc-flight-airport time { color: var(--portal-primary-ink-current); font-weight: 600; font-size: .84rem; }
.mc-flight-direction { min-width: 98px; display: flex; align-items: center; gap: 7px; color: var(--portal-muted-current); }
.mc-flight-direction::before, .mc-flight-direction::after { content: ""; height: 1px; flex: 1; background: var(--portal-border-current); }
.mc-flight-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding-top: 11px; margin-top: 11px; border-top: 1px solid var(--portal-border-current); color: var(--portal-muted-current); font-size: .8rem; }
.mc-flight-actions { margin-left: auto; display: flex; gap: 6px; }
.mc-search-panel { position: static; align-self: start; }

/* Profile */
.mc-profile-hero { display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 18px; align-items: center; padding: 18px; margin-bottom: 14px; background: var(--portal-surface-current); border-radius: var(--portal-radius); border-top: 4px solid var(--portal-primary); }
.portal-cards-border .mc-profile-hero { border-left: 1px solid var(--portal-border-current); border-right: 1px solid var(--portal-border-current); border-bottom: 1px solid var(--portal-border-current); }
.portal-cards-shadow .mc-profile-hero { box-shadow: var(--portal-shadow-sm); }
.mc-profile-avatar { width: 90px; height: 90px; object-fit: cover; border-radius: calc(var(--portal-radius) * 1.2); border: 1px solid var(--portal-border-current); }
.mc-profile-copy h1 { margin: 0 0 2px; font-size: 1.65rem; }
.mc-profile-copy p { margin: 0; color: var(--portal-muted-current); }
.mc-profile-meta { display: flex; flex-wrap: wrap; gap: 7px 13px; margin-top: 9px; color: var(--portal-muted-current); font-size: .84rem; }
.mc-profile-rank { min-width: 125px; text-align: right; }
.mc-profile-rank img { max-width: 105px; max-height: 70px; object-fit: contain; }
.mc-profile-rank small { color: var(--portal-muted-current); }
.mc-profile-rank strong { color: var(--portal-text-current); }
.portal-api-box { display: grid; gap: 10px; }
.portal-api-row { display: flex; gap: 7px; }
.portal-api-row .form-control { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .84rem; }
.portal-api-actions { display: flex; flex-wrap: wrap; gap: 7px; }

/* Detail/PIREP/downloads */
.mc-detail-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; }
.mc-detail-item { padding: 12px; background: rgba(var(--portal-primary-rgb), .035); border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); }
.mc-detail-item small { display: block; color: var(--portal-muted-current); }
.mc-route-summary { display: grid; grid-template-columns: 1fr auto 1fr; gap: 18px; align-items: center; padding: 17px; }
.mc-route-point:last-child { text-align: right; }
.mc-route-icao { font-size: 1.4rem; font-weight: 700; }
.mc-route-name { color: var(--portal-muted-current); font-size: .8rem; }
.mc-route-line { min-width: 115px; display: flex; align-items: center; gap: 7px; color: var(--portal-primary-ink-current); }
.mc-route-line::before, .mc-route-line::after { content:""; height:1px; flex:1; background: var(--portal-border-current); }
.mc-pirep-hero, .mc-pirep-summary { background: var(--portal-surface-current); border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); }
.mc-download-grid { display: grid; gap: 10px; }
.mc-download-item { background: var(--portal-surface-current); border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); padding: 14px; }
.mc-download-icon { color: var(--portal-primary-ink-current); }
.mc-map-shell { border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); overflow: hidden; }
.mc-rich-content { background: var(--portal-surface-current); border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); padding: 18px; }

/* Auth */
.mc-auth-page { min-height: calc(100vh - var(--portal-header-height)); margin: -24px -28px -42px; display: grid; grid-template-columns: minmax(0,1.1fr) minmax(420px,.7fr); background: var(--portal-surface-current); }
.mc-auth-visual { min-height: 620px; background: linear-gradient(90deg, rgba(var(--portal-primary-rgb), var(--portal-hero-overlay-opacity)), rgba(var(--portal-primary-rgb), calc(var(--portal-hero-overlay-opacity) * .32))), var(--portal-bg-image) center / cover no-repeat; display: flex; align-items: end; padding: 42px; color: var(--portal-hero-text); }
.mc-auth-tagline h1 { color:var(--portal-hero-text); font-size: 2.4rem; }
.mc-auth-tagline p { color:var(--portal-hero-muted-text); max-width:520px; }
.mc-auth-panel { display:flex; align-items:center; justify-content:center; padding:42px; background:var(--portal-surface-current); }
.mc-auth-box { width:min(420px,100%); }
.mc-auth-brand img, .mc-auth-mobile-logo img { max-width:210px; max-height:72px; object-fit:contain; }
.mc-register-wrap { max-width: 980px; margin: 0 auto; }
.mc-register-panel { background: var(--portal-surface-current); border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); padding: 22px; }
.mc-register-terms { max-height: 210px; overflow:auto; border:1px solid var(--portal-border-current); padding:12px; border-radius:var(--portal-radius); }

/* States */
.mc-state-wrap { min-height: 56vh; display:flex; align-items:center; justify-content:center; }
.mc-state-card { max-width:620px; width:100%; padding:28px; text-align:center; background:var(--portal-surface-current); border:1px solid var(--portal-border-current); border-radius:var(--portal-radius); }
.mc-state-icon { font-size:2.8rem; color: var(--portal-primary-ink-current); }
.mc-state-danger .mc-state-icon { color:var(--portal-danger); }
.mc-state-success .mc-state-icon { color:var(--portal-success); }
.mc-error-code { font-size:4rem; font-weight:700; color: var(--portal-primary-ink-current); }

[data-bs-theme="dark"] .btn-light { --bs-btn-bg: var(--portal-dark-surface); --bs-btn-border-color: var(--portal-dark-border); --bs-btn-color: var(--portal-text-current); }
[data-bs-theme="dark"] .btn-outline-secondary { --bs-btn-color: var(--portal-dark-text); --bs-btn-border-color: var(--portal-dark-border); }
[data-bs-theme="dark"] .dropdown-menu { --bs-dropdown-bg: var(--portal-surface-current); --bs-dropdown-color: var(--portal-text-current); --bs-dropdown-link-color: var(--portal-text-current); --bs-dropdown-border-color: var(--portal-border-current); }
[data-bs-theme="dark"] .form-control:disabled, [data-bs-theme="dark"] .form-control[readonly] { background: color-mix(in srgb, var(--portal-dark-text) 5%, var(--portal-dark-input-bg)); }
[data-bs-theme="dark"] .btn-close { filter: invert(1) grayscale(100%) brightness(200%); }

@media (max-width: 1199.98px) {
  .mc-dashboard-grid { grid-template-columns: minmax(0,1fr) 300px; }
  .mc-flight-layout { grid-template-columns: 1fr; }
  .mc-search-panel { position: static; }
}
@media (max-width: 991.98px) {
  .portal-nav-sidebar.portal-auth .portal-main { margin-left: 0; }
  .portal-nav-sidebar.portal-auth .portal-header { left: 0; }
  .portal-content { padding: 20px 18px 34px; }
  .mc-hero { margin: -20px -18px 22px; padding: 42px 22px; }
  .mc-stat-grid, .mc-profile-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .mc-dashboard-grid { grid-template-columns: 1fr; }
  .mc-profile-hero { grid-template-columns: auto 1fr; }
  .mc-profile-rank { grid-column: 1 / -1; text-align:left; display:flex; align-items:center; gap:12px; }
  .mc-auth-page { margin: -20px -18px -34px; grid-template-columns: 1fr; }
  .mc-auth-visual { display:none; }
  .mc-auth-panel { min-height: calc(100vh - var(--portal-header-height)); padding:28px 20px; }
}
@media (max-width: 767.98px) {
  .portal-header-inner { padding: 0 12px; gap: 10px; }
  .portal-brand img { max-width: 142px; max-height: 40px; }
  .portal-content { padding: 17px 12px 28px; }
  .mc-hero { margin: -17px -12px 19px; padding: 36px 16px; min-height: 330px; }
  .mc-dashboard-head { align-items:flex-start; flex-direction:column; }
  .mc-flight-route { grid-template-columns: 1fr auto 1fr; gap:8px; }
  .mc-flight-direction { min-width:50px; }
  .mc-flight-meta { align-items:flex-start; }
  .mc-flight-actions { width:100%; margin-left:0; }
  .mc-profile-hero { grid-template-columns: 1fr; text-align:center; justify-items:center; }
  .mc-profile-meta { justify-content:center; }
  .mc-profile-rank { justify-content:center; text-align:center; }
  .mc-detail-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 479.98px) {
  .mc-stat-grid, .mc-profile-stats { grid-template-columns: 1fr 1fr; gap:8px; }
  .mc-stat-card { padding:11px; }
  .mc-flight-card { padding:12px; }
  .mc-flight-airport strong { font-size:1.18rem; }
  .mc-detail-grid { grid-template-columns:1fr; }
  .portal-api-row { flex-wrap:wrap; }
  .portal-api-row .form-control { width:100%; flex-basis:100%; }
}

/* Dashboard v1.1 */
.portal-dashboard-banner { min-height: 128px; margin-bottom: 14px; padding: 20px 22px; display: flex; align-items: center; justify-content: space-between; gap: 18px; border-radius: var(--portal-radius); background: linear-gradient(90deg, rgba(var(--portal-primary-rgb), var(--portal-hero-overlay-opacity)), rgba(var(--portal-primary-rgb), calc(var(--portal-hero-overlay-opacity) * .72))), var(--portal-bg-image) center 54% / cover no-repeat; border-bottom: 3px solid var(--portal-accent); color: var(--portal-hero-text); }
.portal-dashboard-banner .mc-eyebrow { color: var(--portal-accent); }
.portal-dashboard-banner h1 { color: var(--portal-nav-text); margin: 2px 0 0; font-size: 1.8rem; }
.portal-dashboard-profile-link { color: inherit; text-decoration: none; }
.portal-dashboard-profile-link:hover, .portal-dashboard-profile-link:focus { color: inherit; text-decoration: none; }
.portal-dashboard-banner p { margin: 3px 0 0; color: var(--portal-hero-muted-text); }
.portal-dashboard-banner-actions { display: flex; align-items: center; gap: 10px; }
.portal-dashboard-banner-actions > span { font-weight: 600; color: var(--portal-hero-text); }
.portal-dashboard-layout { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(290px,.72fr); gap: 16px; align-items: start; }
.portal-dashboard-main, .portal-dashboard-side { display: grid; gap: 16px; }
.portal-quick-links { display: grid; }
.portal-quick-links a { display: grid; grid-template-columns: 22px 1fr 15px; align-items: center; gap: 9px; padding: 10px 14px; color: var(--portal-text-current); border-bottom: 1px solid var(--portal-border-current); }
.portal-quick-links a:last-child { border-bottom: 0; }
.portal-quick-links a:hover { background: rgba(var(--portal-primary-rgb), .05); color: var(--portal-primary-ink-current); }
.portal-quick-links a > i:first-child { color: var(--portal-primary-ink-current); }
.portal-quick-links a > i:last-child { color: var(--portal-muted-current); font-size: .72rem; }
@media (max-width: 991.98px) { .portal-dashboard-layout { grid-template-columns: 1fr; } }
@media (max-width: 575.98px) { .portal-dashboard-banner { align-items:flex-start; flex-direction:column; } .portal-dashboard-banner-actions { width:100%; justify-content:space-between; } }
.portal-auth-theme { position:absolute; top:16px; right:18px; z-index:5; }
.portal-auth-theme-btn { width:38px;height:38px;border-radius:var(--portal-radius);border:1px solid var(--portal-border-current);background:var(--portal-surface-current);color:var(--portal-text-current); }
.mc-auth-panel { position:relative; }

/* SimBrief OFP workspace v1.2 */
.mc-sb-accordion .accordion-item { background: var(--portal-surface-current); border: 1px solid var(--portal-border-current); overflow: hidden; }
.mc-sb-accordion .accordion-item + .accordion-item { margin-top: 10px; }
.mc-sb-accordion .accordion-button { background: var(--portal-surface-current); color: var(--portal-text-current); font-weight: 700; box-shadow: none; }
.mc-sb-accordion .accordion-button:not(.collapsed) { color: var(--portal-primary-ink-current); background: rgba(var(--portal-primary-rgb), .06); }
.mc-sb-accordion .accordion-body { background: var(--portal-page-current); padding: 12px; }
.mc-sb-stat { min-height: 84px; padding: 12px 10px; border: 1px solid var(--portal-border-current); background: var(--portal-surface-current); border-radius: var(--portal-radius); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.mc-sb-stat strong { font-size: 1.02rem; line-height: 1.2; color: var(--portal-text-current); }
.mc-sb-stat span { margin-top: 5px; font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 700; color: var(--portal-muted-current); }
.mc-sb-stat small { margin-top: 2px; color: var(--portal-muted-current); }
.mc-sb-route { font-family: var(--bs-font-monospace); line-height: 1.65; word-break: break-word; }
.mc-sb-atc { max-height: 360px; overflow: auto; white-space: normal; }
.mc-sb-actions { top: calc(var(--portal-header-height) + 12px); display: grid; gap: 8px; justify-items: center; }
.mc-sb-actions .btn { min-height: 46px; padding: 7px 6px; display: flex; flex-direction: column; gap: 2px; justify-content: center; align-items: center; font-size: .72rem; line-height: 1.05; }
.mc-sb-actions .btn i { font-size: 1rem; }
.mc-sb-qr { display: block; width: 112px; height: 112px; padding: 6px; background: #fff; border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); }
.mc-sb-chart { max-height: 650px; object-fit: contain; }
.mc-sb-wx-label { font-size: .7rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--portal-muted-current); margin-bottom: 5px; }
.mc-sb-wx { white-space: pre-wrap; word-break: break-word; line-height: 1.55; }
.mc-sb-tlr { max-height: 430px; white-space: normal; }
.mc-sb-action-column { width: 136px; flex: 0 0 136px; }
.mc-sb-action-separator { width: 100%; display: flex; align-items: center; gap: 7px; margin: 4px 0 0; color: var(--portal-muted-current); font-size: .62rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.mc-sb-action-separator::before, .mc-sb-action-separator::after { content: ""; height: 1px; background: var(--portal-border-current); flex: 1; }
.mc-sb-action-separator span { white-space: nowrap; }
.mc-sb-planning-card .card-body { padding: 16px; }
.mc-sb-option-group { padding: 12px; border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); background: color-mix(in srgb, var(--portal-surface-current) 86%, var(--portal-page-current) 14%); }
.mc-sb-option-group-title { display: flex; align-items: center; gap: 7px; margin-bottom: 11px; color: var(--portal-primary-ink-current); font-size: .76rem; font-weight: 800; letter-spacing: .045em; text-transform: uppercase; }
.mc-sb-field label { display: block; margin-bottom: 5px; color: var(--portal-text-current); font-size: .76rem; font-weight: 700; }
.mc-sb-field .form-select, .mc-sb-field .form-control { min-height: 42px; }
.mc-sb-field .form-text { margin-top: 5px; font-size: .68rem; color: var(--portal-muted-current); }
.mc-sb-readonly-value { min-height: 42px; display: flex; align-items: center; gap: 9px; padding: 8px 11px; border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); background: var(--portal-page-current); color: var(--portal-text-current); }
.mc-sb-tlr-card { overflow: hidden; }
.mc-sb-tlr-report { max-height: 520px; overflow: auto; padding: 18px 20px; background: color-mix(in srgb, var(--portal-page-current) 82%, #000 18%); color: var(--portal-text-current); border: 0; border-radius: 0; font-family: var(--bs-font-monospace); font-size: .79rem; line-height: 1.62; white-space: pre; tab-size: 4; }
.mc-ofp-modal { max-width: 520px; }
.mc-ofp-paper { max-height: 82vh; overflow: auto; background: #fff; color: #111; font-family: Verdana, Arial, sans-serif; font-size: .76rem; }
.mc-ofp-edit-modal { max-width: 1040px; }
.mc-sb-editor { width: 100%; height: 82vh; display: block; border: 0; }
[data-bs-theme="dark"] .mc-sb-accordion .table,
[data-theme="dark"] .mc-sb-accordion .table { color: var(--portal-text-current); }
@media (max-width: 1199.98px) {
  .mc-sb-action-column { width: 100%; flex: 0 0 100%; }
  .mc-sb-actions { position: static !important; display: flex; flex-wrap: wrap; justify-content: flex-start; align-items: center; }
  .mc-sb-actions .btn { width: auto !important; min-width: 84px; min-height: 40px; flex-direction: row; gap: 6px; }
  .mc-sb-action-separator { width: 100%; margin-top: 2px; }
  .mc-sb-qr { width: 92px; height: 92px; }
}
@media (max-width: 575.98px) {
  .mc-sb-accordion .accordion-body { padding: 8px; }
  .mc-sb-stat { min-height: 74px; padding: 9px 7px; }
  .mc-ofp-modal { margin: 8px; }
}

/* PlunaPortal 1.3.0 ----------------------------------------------------- */
:root {
  --bs-success: var(--portal-success);
  --bs-warning: var(--portal-warning);
  --bs-danger: var(--portal-danger);
  --bs-info: var(--portal-info);
}

h1 { font-size: calc(2rem * var(--portal-heading-scale)); }
h2 { font-size: calc(1.65rem * var(--portal-heading-scale)); }
h3 { font-size: calc(1.35rem * var(--portal-heading-scale)); }
h4 { font-size: calc(1.18rem * var(--portal-heading-scale)); }
h5 { font-size: calc(1.05rem * var(--portal-heading-scale)); }
h6 { font-size: calc(.95rem * var(--portal-heading-scale)); }
.mc-page-title h1, .mc-profile-copy h1, .mc-dashboard-head h1 { font-size: calc(2rem * var(--portal-heading-scale)); }
.mc-panel-head h3 { font-size: calc(1rem * var(--portal-heading-scale)); }

.portal-header, .portal-sidebar { color: var(--portal-nav-text); }
.portal-top-link, .portal-nav-item, .portal-login-link, .portal-account-btn { color: var(--portal-nav-text); font-size: var(--portal-font-size-nav); }
.portal-top-link:hover, .portal-top-link:focus, .portal-top-link.active, .portal-desktop-nav .dropdown.show > .portal-top-link,
.portal-nav-item:hover, .portal-nav-item.active, .portal-login-link:hover { color: var(--portal-nav-text); }
.portal-utc, .portal-account-btn small, .portal-header-context { color: var(--portal-nav-muted); }
.portal-account-btn strong { color: var(--portal-nav-text); }
.portal-icon-btn { color: var(--portal-nav-text); }
.portal-desktop-nav { font-size: var(--portal-font-size-nav); }
.portal-sidebar-label, .portal-mobile-label {
  color: var(--portal-nav-muted);
  font-size: .68em;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: 10px 11px 4px;
}
.portal-mobile-label { color: var(--portal-muted-current); padding-left: 12px; }

.bg-success, .text-bg-success { background-color: var(--portal-success) !important; }
.bg-warning, .text-bg-warning { background-color: var(--portal-warning) !important; }
.bg-danger, .text-bg-danger { background-color: var(--portal-danger) !important; }
.bg-info, .text-bg-info { background-color: var(--portal-info) !important; }
.text-success { color: var(--portal-success) !important; }
.text-warning { color: var(--portal-warning) !important; }
.text-danger { color: var(--portal-danger) !important; }
.text-info { color: var(--portal-info) !important; }
.btn-success { --bs-btn-bg: var(--portal-success); --bs-btn-border-color: var(--portal-success); }
.btn-warning { --bs-btn-bg: var(--portal-warning); --bs-btn-border-color: var(--portal-warning); }
.btn-danger { --bs-btn-bg: var(--portal-danger); --bs-btn-border-color: var(--portal-danger); }
.btn-info { --bs-btn-bg: var(--portal-info); --bs-btn-border-color: var(--portal-info); }

.portal-footer {
  gap: 18px;
  flex-wrap: wrap;
  padding: 12px 20px;
  min-height: 58px;
}
.portal-vatsim-footer { display: inline-flex; align-items: center; }
.portal-vatsim-footer img { width: 78px; height: 37px; object-fit: contain; display: block; }

.mc-new-pilot-avatar { width: 58px; height: 58px; flex: 0 0 58px; border-radius: calc(var(--portal-radius) * 1.1); object-fit: cover; object-position: center; }
.mc-new-pilot-card { overflow: hidden; }
.mc-landing-stats { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 13px; }
.mc-vatsim-partner { display: flex; align-items: center; justify-content: center; padding: 34px 0 8px; }
.mc-vatsim-partner a { display: inline-flex; padding: 0; border: 0; border-radius: 0; background: transparent; }
.mc-vatsim-partner img { width: 142px; height: 67px; object-fit: contain; display: block; }

/* Login: both logos remain visible at top-left */
.mc-auth-page { position: relative; margin: 0; min-height: 100vh; grid-template-columns: minmax(0,1.08fr) minmax(420px,.72fr); }
.mc-auth-visual { min-height: 100vh; background: linear-gradient(90deg, rgba(var(--portal-primary-rgb), calc(var(--portal-hero-overlay-opacity) * .32)), rgba(var(--portal-primary-rgb), calc(var(--portal-hero-overlay-opacity) * .13))), var(--portal-bg-image) center / cover no-repeat; padding: 0; }
.mc-auth-panel { min-height: 100vh; padding: 90px 42px 42px; }
.mc-auth-brand-row {
  position: absolute;
  z-index: 10;
  top: 24px;
  left: 26px;
  display: flex;
  align-items: center;
  gap: 14px;
}
.mc-auth-brand-logo, .mc-auth-vatsim-logo {
  height: 66px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px 12px;
  border-radius: calc(var(--portal-radius) * .9);
  background: color-mix(in srgb, var(--portal-surface-current) 92%, transparent);
  box-shadow: 0 5px 18px rgba(0,0,0,.12);
}
.mc-auth-brand-logo img { max-width: 188px; max-height: 48px; object-fit: contain; }
.mc-auth-vatsim-logo img { width: 92px; height: 44px; object-fit: contain; }
.mc-auth-mobile-logo, .mc-auth-brand, .mc-auth-tagline { display: none !important; }
.portal-auth-theme { position:absolute; top:24px; right:24px; z-index:11; }

/* Fast flight and roster filters */
.mc-flight-quick-search, .mc-roster-search { max-width: 920px; }
.mc-wide-fleet { width:90vw; max-width:90vw; margin-left:calc(50% - 45vw); }
@media (max-width:991.98px) { .mc-wide-fleet { width:100%; max-width:100%; margin-left:0; } }
.mc-flight-quick-search small { display: block; margin-top: 6px; padding-left: 2px; }
.mc-flight-card.d-none { display: none !important; }

/* Roster media is normalized regardless of source dimensions */
.mc-roster-table { min-width: 1120px; }
.mc-roster-avatar { width: 64px !important; height: 64px !important; min-width: 64px; border-radius: calc(var(--portal-radius) * 1.05); object-fit: cover !important; object-position: center; display: block; }
.mc-roster-person { min-width: 190px; }
.mc-roster-subtext { max-width: none; overflow: visible; text-overflow: clip; white-space: normal; overflow-wrap: anywhere; }
.mc-roster-logo-wrap { width: 92px; height: 42px; display: flex; align-items: center; justify-content: flex-start; overflow: hidden; }
.mc-roster-airline-logo { width: 88px !important; height: 38px !important; object-fit: contain !important; object-position: left center; display: block; }
.mc-roster-rank-wrap { width: 42px; height: 42px; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 42px; overflow: hidden; }
.mc-roster-rank-logo { width: 38px !important; height: 38px !important; object-fit: contain !important; display: block; }

/* Profile economy */
.mc-economy-balance { display:flex; align-items:baseline; gap:9px; }
.mc-economy-balance small { color: var(--portal-muted-current); font-weight: 600; }
.mc-economy-balance strong { font-family: var(--portal-font-headings); font-size: calc(1.25rem * var(--portal-heading-scale)); color: var(--portal-primary-ink-current); }
.mc-economy-table th:first-child, .mc-economy-table td:first-child { padding-left: 16px; }
.mc-economy-table th:last-child, .mc-economy-table td:last-child { padding-right: 16px; }

/* PIREP detail: all sections are Bootstrap collapses, initially closed */
.mc-report-accordion { display: grid; gap: 10px; margin-top: 18px; }
.mc-report-accordion .accordion-item { border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius) !important; overflow: hidden; background: var(--portal-surface-current); color: var(--portal-text-current); }
.mc-report-accordion .accordion-button { background: var(--portal-surface-current); color: var(--portal-text-current); font-family: var(--portal-font-headings); font-weight: 650; box-shadow: none; }
.mc-report-accordion .accordion-button:not(.collapsed) { background: rgba(var(--portal-primary-rgb), .07); color: var(--portal-primary-ink-current); box-shadow: none; }
.mc-report-accordion .accordion-button::after { filter: none; }
[data-bs-theme="dark"] .mc-report-accordion .accordion-button::after { filter: invert(1) grayscale(1); }
.mc-report-accordion .accordion-body { background: var(--portal-surface-current); }
.mc-detail-wide { grid-column: 1 / -1; }
.mc-pirep-map { width:100%; height:min(68vh, 690px); min-height:420px; }
.mc-pirep-ofp { max-height: 72vh; min-height: 260px; }

@media (max-width: 991.98px) {
  .mc-landing-media { margin: -20px -18px 0; min-height: 500px; }
  .mc-landing-stats { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .mc-auth-page { grid-template-columns: 1fr; }
  .mc-auth-visual { display: none; }
  .mc-auth-panel { padding: 116px 24px 36px; min-height: 100vh; background: linear-gradient(rgba(var(--portal-primary-rgb), var(--portal-hero-overlay-opacity)), rgba(var(--portal-primary-rgb), var(--portal-hero-overlay-opacity))), var(--portal-bg-image) center / cover no-repeat; }
  .mc-auth-box { background: var(--portal-surface-current); border: 1px solid var(--portal-border-current); border-radius: var(--portal-radius); padding: 24px; box-shadow: var(--portal-shadow); }
  .mc-auth-brand-row { top: 20px; left: 20px; }
  .mc-auth-brand-logo, .mc-auth-vatsim-logo { height: 60px; }
  .mc-auth-brand-logo img { max-width: 160px; max-height: 43px; }
  .mc-auth-vatsim-logo img { width: 82px; height: 39px; }
}

@media (max-width: 575.98px) {
  .mc-landing-media { margin: -17px -12px 0; min-height: 440px; }
  .mc-landing-stats { grid-template-columns: 1fr 1fr; }
  .mc-auth-brand-row { left: 12px; right: 58px; top: 12px; gap: 7px; }
  .mc-auth-brand-logo, .mc-auth-vatsim-logo { height: 52px; padding: 6px 8px; }
  .mc-auth-brand-logo img { max-width: 132px; max-height: 36px; }
  .mc-auth-vatsim-logo img { width: 67px; height: 32px; }
  .portal-auth-theme { top: 19px; right: 12px; }
  .mc-auth-panel { padding: 86px 12px 24px; }
  .mc-auth-box { padding: 20px 16px; }
  .mc-pirep-map { min-height: 350px; height: 55vh; }
}

/* PlunaPortal 1.4 refinements */
.portal-vatsim-footer { padding: 0; background: none; border: 0; box-shadow: none; }
.portal-vatsim-footer img { width: var(--portal-vatsim-footer-width, 78px); height: auto; max-height: none; object-fit: contain; display: block; }

.mc-vatsim-partner a { display: inline-block; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; }
.mc-vatsim-partner img { width: var(--portal-vatsim-landing-width, 142px); height: auto; max-height: none; object-fit: contain; display: block; }


.mc-profile-stats { grid-template-columns: repeat(auto-fit, minmax(155px, 1fr)); }
.mc-stat-card-link { color: inherit; text-decoration: none; }
.mc-stat-card-link:hover, .mc-stat-card-link:focus { color: inherit; text-decoration: none; }
.mc-stat-card-action { appearance: none; width: 100%; color: inherit; font: inherit; text-align: left; cursor: pointer; transition: transform .14s ease, border-color .14s ease, background-color .14s ease; }
.mc-stat-card-action:hover { transform: translateY(-1px); border-color: rgba(var(--portal-primary-rgb), .38) !important; background: rgba(var(--portal-primary-rgb), .045); }
.mc-stat-card-action:focus-visible { outline: 3px solid rgba(var(--portal-primary-rgb), .22); outline-offset: 2px; }
.mc-stat-money { font-size: clamp(1rem, 1.4vw, 1.25rem); overflow-wrap: anywhere; }
.mc-balance-modal-summary { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:18px 20px; background:rgba(var(--portal-primary-rgb),.055); border-bottom:1px solid var(--portal-border-current); }
.mc-balance-modal-summary span { color:var(--portal-muted-current); font-weight:700; }
.mc-balance-modal-summary strong { font-family:var(--portal-font-headings); font-size:1.45rem; color: var(--portal-primary-ink-current); }

.mc-login-main-logo { margin: 0 0 28px; }
.mc-login-main-logo a { display:inline-block; padding:0; margin:0; background:transparent; border:0; box-shadow:none; }
.mc-login-main-logo img { display:block; width:min(300px, 82%); height:auto; max-height:120px; object-fit:contain; object-position:left center; }
.mc-login-main-logo .mc-login-logo-dark { display:none; }
[data-bs-theme="dark"] .mc-login-main-logo .mc-login-logo-light { display:none; }
[data-bs-theme="dark"] .mc-login-main-logo .mc-login-logo-dark { display:block; }
.mc-auth-vatsim-corner { position:absolute; z-index:12; right:28px; bottom:24px; display:block; padding:0; background:transparent; border:0; box-shadow:none; line-height:0; }
.mc-auth-vatsim-corner img { width:var(--portal-vatsim-login-width,112px); height:auto; display:block; object-fit:contain; }
.mc-auth-panel { padding-bottom: max(82px, calc(var(--portal-vatsim-login-width, 112px) * .48 + 34px)); }

.mc-roster-table { min-width: 970px; }
.mc-roster-airline-logo, .mc-roster-logo-wrap { display:none !important; }

@media (max-width: 991.98px) {
  .mc-auth-panel { padding: 30px 20px max(86px, calc(var(--portal-vatsim-login-width, 112px) * .48 + 34px)); }
  .mc-auth-vatsim-corner { right:20px; bottom:18px; }
}
@media (max-width: 575.98px) {
  .mc-login-main-logo img { width:min(250px, 84%); }
  .mc-auth-vatsim-corner { right:14px; bottom:14px; }
  .mc-auth-vatsim-corner img { max-width:42vw; }
}

/* Dashboard operational modules */
.portal-dashboard-widget-grid { display:grid; grid-template-columns:1fr; gap:16px; min-width:0; }
.portal-dashboard-widget-grid-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.portal-module-widget { min-width:0; }
.portal-module-widget > .card,
.portal-module-widget > .row,
.portal-module-widget .card { margin-bottom:0 !important; }
.portal-module-widget .card { border-color:var(--portal-border-current); background:var(--portal-surface-current); }
.portal-module-widget .card-header { background:transparent; color:var(--portal-text-current); border-color:var(--portal-border-current); }
.portal-module-widget .table { color:var(--portal-text-current); }
.portal-vatsim-online { min-width:0; overflow:hidden; }

.mc-last-pirep { min-width:0; }
.mc-last-pirep-route { display:grid; grid-template-columns:minmax(0,1fr) minmax(130px,.5fr) minmax(0,1fr); align-items:center; gap:18px; padding:18px 20px; border-bottom:1px solid var(--portal-border-current); }
.mc-last-pirep-route small { display:block; color:var(--portal-muted-current); text-transform:uppercase; letter-spacing:.05em; font-size:.72rem; font-weight:700; }
.mc-last-pirep-route strong { display:block; font-family:var(--portal-font-headings); font-size:1.45rem; line-height:1.1; }
.mc-last-pirep-route span { display:block; color:var(--portal-muted-current); font-size:.86rem; }
.mc-last-pirep-flightline { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; text-align:center; color: var(--portal-primary-ink-current); }
.mc-last-pirep-flightline::before { content:""; position:absolute; z-index:0; left:0; right:0; top:50%; height:1px; background:var(--portal-border-current); }
.mc-last-pirep-flightline span,
.mc-last-pirep-flightline i { position:relative; z-index:1; background:var(--portal-surface-current); padding:0 7px; }
.mc-last-pirep-flightline span { color:var(--portal-muted-current); font-size:.78rem; font-weight:700; }
.mc-last-pirep-flightline i { font-size:1.15rem; }
.mc-last-pirep-table thead th { font-size:.72rem; text-transform:uppercase; letter-spacing:.035em; color:var(--portal-muted-current); white-space:nowrap; }
.mc-last-pirep-comments { border-top:1px solid var(--portal-border-current); padding:10px 18px; display:grid; gap:7px; font-size:.9rem; }
.mc-last-pirep-footer { border-top:1px solid var(--portal-border-current); padding:12px 18px; text-align:right; }

@media (max-width: 991.98px) {
  .portal-dashboard-widget-grid-2 { grid-template-columns:1fr; }
}
@media (max-width: 575.98px) {
  .mc-last-pirep-route { grid-template-columns:1fr; gap:10px; }
  .mc-last-pirep-route .text-end { text-align:left !important; }
  .mc-last-pirep-flightline { flex-direction:row; justify-content:flex-start; }
  .mc-last-pirep-flightline::before { display:none; }
  .mc-last-pirep-flightline span,
  .mc-last-pirep-flightline i { background:transparent; padding:0; }
}

/* Dashboard maps, weather and airport information - v1.5 */
.portal-dashboard-map-actions { display:grid; gap:10px; }
.mc-dashboard-map-button { width:100%; display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--portal-border-current); border-radius:var(--portal-radius); background:var(--portal-surface-current); color:var(--portal-text-current); text-align:left; transition:border-color .16s ease, transform .16s ease, background .16s ease; }
.mc-dashboard-map-button:hover { border-color:var(--portal-primary); background:rgba(var(--portal-primary-rgb),.035); transform:translateY(-1px); }
.mc-dashboard-map-button .mc-stat-icon { flex:0 0 auto; margin:0; }
.mc-dashboard-map-button > span:nth-child(2) { display:grid; line-height:1.15; }
.mc-dashboard-map-button strong { font-family:var(--portal-font-headings); font-size:1rem; }
.mc-dashboard-map-button small { margin-top:4px; color:var(--portal-muted-current); }
.mc-dashboard-modal-map { width:100%; height:min(70vh, 650px); min-height:420px; background:var(--portal-page-current); }
.mc-map-stats { justify-content:flex-end; gap:14px; font-size:.82rem; color:var(--portal-muted-current); }
.mc-map-stats strong { color:var(--portal-text-current); }
.mc-fleet-popup-row { padding:2px 0; }
.mc-weather-disposable .mc-panel-body { overflow:hidden; }
.mc-weather-disposable { --portal-metar-bg-current: var(--portal-metar-bg-light, #2E6A9E); }
[data-bs-theme="dark"] .mc-weather-disposable { --portal-metar-bg-current: var(--portal-metar-bg-dark, #102235); }
.mc-metartaf-frame { display:block; width:100%; height:255px; pointer-events:none; text-decoration:none; color:#fff; background:var(--portal-metar-bg-current); padding:12px; }
.mc-metartaf-links { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:6px 10px; border-top:1px solid var(--portal-border-current); font-size:.76rem; }
.mc-airport-info-title { display:flex; align-items:baseline; gap:9px; margin-bottom:12px; }
.mc-airport-info-title strong { font-family:var(--portal-font-headings); font-size:1.35rem; color: var(--portal-primary-ink-current); }
.mc-airport-info-title span { color:var(--portal-muted-current); }
.mc-airport-info-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.mc-airport-info-grid > div { padding:8px 10px; border:1px solid var(--portal-border-current); border-radius:calc(var(--portal-radius) * .75); min-width:0; }
.mc-airport-info-grid small { display:block; color:var(--portal-muted-current); font-size:.72rem; }
.mc-airport-info-grid strong { display:block; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:575.98px) {
  .mc-dashboard-modal-map { min-height:360px; height:62vh; }
  .mc-map-stats { justify-content:flex-start; }
  .mc-airport-info-grid { grid-template-columns:1fr; }
}

/* ============================================================
   PlunaPortal 1.6.0 - configurable component palette
   ============================================================ */
:root {
  --portal-heading-current: var(--portal-heading);
  --portal-link-current: var(--portal-link);
  --portal-link-hover-current: var(--portal-link-hover);
  --portal-panel-header-bg-current: var(--portal-panel-header-bg);
  --portal-panel-header-text-current: var(--portal-panel-header-text);
  --portal-input-bg-current: var(--portal-input-bg);
  --portal-input-text-current: var(--portal-input-text);
  --portal-table-header-bg-current: var(--portal-table-header-bg);
  --portal-table-header-text-current: var(--portal-table-header-text);
  --portal-table-stripe-current: var(--portal-table-stripe);
  --portal-dropdown-bg-current: var(--portal-dropdown-bg);
  --portal-dropdown-text-current: var(--portal-dropdown-text);
  --portal-card-bg-current: var(--portal-card-bg);
  --portal-card-text-current: var(--portal-card-text);
  --portal-stat-bg-current: var(--portal-stat-bg);
  --portal-stat-text-current: var(--portal-stat-text);
  --portal-stat-icon-bg-current: var(--portal-stat-icon-bg);
  --portal-footer-bg-current: var(--portal-footer-bg);
  --portal-footer-text-current: var(--portal-footer-text-color);
  --portal-badge-bg-current: var(--portal-badge-bg);
  --portal-badge-text-current: var(--portal-badge-text);
}
[data-bs-theme="dark"] {
  --portal-heading-current: var(--portal-dark-heading);
  --portal-link-current: var(--portal-dark-link);
  --portal-link-hover-current: var(--portal-dark-link-hover);
  --portal-panel-header-bg-current: var(--portal-dark-panel-header-bg);
  --portal-panel-header-text-current: var(--portal-dark-panel-header-text);
  --portal-input-bg-current: var(--portal-dark-input-bg);
  --portal-input-text-current: var(--portal-dark-input-text);
  --portal-table-header-bg-current: var(--portal-dark-table-header-bg);
  --portal-table-header-text-current: var(--portal-dark-table-header-text);
  --portal-table-stripe-current: var(--portal-dark-table-stripe);
  --portal-dropdown-bg-current: var(--portal-dark-dropdown-bg);
  --portal-dropdown-text-current: var(--portal-dark-dropdown-text);
  --portal-card-bg-current: var(--portal-dark-card-bg);
  --portal-card-text-current: var(--portal-dark-card-text);
  --portal-stat-bg-current: var(--portal-dark-stat-bg);
  --portal-stat-text-current: var(--portal-dark-stat-text);
  --portal-stat-icon-bg-current: var(--portal-dark-stat-icon-bg);
  --portal-footer-bg-current: var(--portal-dark-footer-bg);
  --portal-footer-text-current: var(--portal-dark-footer-text-color);
  --portal-badge-bg-current: var(--portal-dark-badge-bg);
  --portal-badge-text-current: color-mix(in srgb, var(--portal-dark-badge-text) 42%, var(--portal-dark-text-safe, var(--portal-dark-text)) 58%);
}

a { color: var(--portal-link-current); }
a:hover, a:focus { color: var(--portal-link-hover-current); }
h1,h2,h3,h4,h5,h6 { color: var(--portal-heading-current); }
.card,.mc-panel { background: var(--portal-card-bg-current); color: var(--portal-card-text-current); }
.card-header,.mc-panel-head { background: var(--portal-panel-header-bg-current); color: var(--portal-panel-header-text-current); }
.card-header h1,.card-header h2,.card-header h3,.card-header h4,.card-header h5,.card-header h6,
.mc-panel-head h1,.mc-panel-head h2,.mc-panel-head h3,.mc-panel-head h4,.mc-panel-head h5,.mc-panel-head h6 { color: inherit; }
.form-control,.form-select,.ts-control,.select2-container--default .select2-selection--single,.select2-container--default .select2-selection--multiple { background: var(--portal-input-bg-current) !important; color: var(--portal-input-text-current) !important; border-color: var(--portal-border-current) !important; }
.form-control:focus,.form-select:focus,.ts-control.focus { background: var(--portal-input-bg-current) !important; color: var(--portal-input-text-current) !important; }
.form-control option,.form-select option { background: var(--portal-input-bg-current); color: var(--portal-input-text-current); }
.portal-dropdown,.dropdown-menu,.select2-dropdown,.ts-dropdown { background: var(--portal-dropdown-bg-current) !important; color: var(--portal-dropdown-text-current) !important; border-color: var(--portal-border-current) !important; }
.portal-dropdown .dropdown-item,.dropdown-menu .dropdown-item,.select2-results__option,.ts-dropdown .option { color: var(--portal-dropdown-text-current) !important; }
.portal-dropdown .dropdown-item:hover,.dropdown-menu .dropdown-item:hover,.select2-results__option--highlighted,.ts-dropdown .active { background: rgba(var(--portal-primary-rgb),.13) !important; color: var(--portal-link-current) !important; }
.table thead th { background: var(--portal-table-header-bg-current) !important; color: var(--portal-table-header-text-current) !important; }
.table-striped>tbody>tr:nth-of-type(odd)>* { --bs-table-accent-bg: var(--portal-table-stripe-current); background: var(--portal-table-stripe-current); color: var(--portal-text-current); }
.mc-stat-card { background: var(--portal-stat-bg-current); color: var(--portal-stat-text-current); }
.mc-stat-card .mc-stat-value { color: var(--portal-stat-text-current); }
.mc-stat-card .mc-stat-icon { background: var(--portal-stat-icon-bg-current); }
.portal-footer { background: var(--portal-footer-bg-current); color: var(--portal-footer-text-current); }
.badge:not(.bg-success):not(.bg-danger):not(.bg-warning):not(.bg-info):not(.text-bg-success):not(.text-bg-danger):not(.text-bg-warning):not(.text-bg-info), .mc-status-badge { background: var(--portal-badge-bg-current) !important; color: var(--portal-badge-text-current) !important; }
.btn-primary { --bs-btn-color: var(--portal-primary-button-text); --bs-btn-hover-color: var(--portal-primary-button-text); }
.btn-accent,.btn-warning { color: var(--portal-accent-button-text) !important; }
.portal-nav-item.active,.portal-mobile-links a.active { background: var(--portal-nav-active-bg) !important; color: var(--portal-nav-active-text) !important; }

/* Module compatibility: keep DBasic / DSpecial widgets readable in both modes */
.portal-module-widget { min-width: 0; }
.portal-module-widget > .card,
.portal-module-widget .card,
.portal-module-widget .widget,
.portal-module-widget .card-body,
.portal-module-widget .card-footer { color: var(--portal-card-text-current); border-color: var(--portal-border-current); }
.portal-module-widget .card { background: var(--portal-card-bg-current) !important; }
.portal-module-widget .card-header { background: var(--portal-panel-header-bg-current) !important; color: var(--portal-panel-header-text-current) !important; }
.portal-module-widget .table { --bs-table-color: var(--portal-card-text-current); --bs-table-border-color: var(--portal-border-current); }
.portal-module-widget .text-dark { color: var(--portal-card-text-current) !important; }
.portal-module-widget a:not(.btn) { color: var(--portal-link-current); }
.portal-module-widget a:not(.btn):hover { color: var(--portal-link-hover-current); }
.portal-module-widget .bg-light { background: var(--portal-table-stripe-current) !important; color: var(--portal-card-text-current) !important; }
.portal-module-widget .select2-container { width: 100% !important; }
/* Pilot names are intentionally shown in full in Disposable widgets. */
.portal-module-widget .mc-leaderboard-table th:first-child,
.portal-module-widget .mc-leaderboard-table td:first-child { white-space: normal; min-width: 0; }
.portal-module-widget .mc-leaderboard-table td:first-child a { overflow-wrap: anywhere; }

.select2-container--default .select2-selection--single { min-height: 40px; display:flex; align-items:center; border-radius:calc(var(--portal-radius)*.7); }
.select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--portal-input-text-current) !important; line-height:38px; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height:38px; }

/* Complete operations dashboard */
.portal-dashboard-full { margin: 0 0 16px; }
.mc-section-label { margin: 0 0 7px; color: var(--portal-muted-current); font-size:.76rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; }
.portal-online-pilots .card { margin-bottom:0 !important; }
.portal-flight-board { border-bottom:1px solid var(--portal-border-current); }
.portal-live-map-under-board { min-height:390px; background:var(--portal-surface-current); }
.portal-dashboard-widget-grid-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }
.portal-nav-menu-wide { min-width:260px; max-height:min(70vh,620px); overflow-y:auto; }
.mc-airport-info-title { display:grid; margin-bottom:12px; padding:10px 11px; border:1px solid var(--portal-border-current); border-radius:calc(var(--portal-radius)*.75); background:rgba(var(--portal-primary-rgb),.04); }
.mc-airport-info-title strong { color:var(--portal-link-current); font-size:1.05rem; }
.mc-airport-info-title span { color:var(--portal-muted-current); }
.mc-map-popup-airport { font-size:1rem; font-weight:800; }
.leaflet-popup-content-wrapper,.leaflet-popup-tip { background:var(--portal-card-bg-current); color:var(--portal-card-text-current); }
.leaflet-popup-content a { color:var(--portal-link-current); }

/* Airport operational page */
.mc-airport-hero { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; }
.mc-airport-stat-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; }
.mc-airport-stat { padding:13px 14px; border:1px solid var(--portal-border-current); border-radius:var(--portal-radius); background:var(--portal-stat-bg-current); color:var(--portal-stat-text-current); }
.mc-airport-stat small { display:block; color:var(--portal-muted-current); font-size:.73rem; text-transform:uppercase; letter-spacing:.04em; }
.mc-airport-stat strong { display:block; margin-top:5px; font-size:1rem; }
.mc-airport-detail-list { display:grid; gap:0; }
.mc-airport-detail-list>div { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:9px 0; border-bottom:1px solid var(--portal-border-current); }
.mc-airport-detail-list>div:last-child { border-bottom:0; }
.mc-airport-detail-list span { color:var(--portal-muted-current); }
.mc-airport-detail-list strong { text-align:right; }

@media (max-width: 1100px) {
  .portal-dashboard-widget-grid-3 { grid-template-columns:1fr; }
  .mc-airport-stat-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width: 700px) {
  .mc-airport-stat-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .mc-airport-hero { align-items:flex-start; flex-direction:column; }
}

/* PlunaPortal 1.6.1 · overrides for DisposableBasic pages */
.mc-rank-image {
  width: auto !important;
  height: auto !important;
  max-width: 72px !important;
  max-height: 48px !important;
  object-fit: contain !important;
  display: inline-block;
}
.mc-award-image {
  width: 110px !important;
  height: 110px !important;
  max-width: 110px !important;
  max-height: 110px !important;
  object-fit: contain !important;
  display: inline-block;
}
.mc-wide-reports {
  width: 90vw;
  max-width: 90vw;
  margin-left: calc(50% - 45vw);
}
.mc-wide-reports .table {
  width: 100%;
}
@media (max-width: 767.98px) {
  .mc-award-image { width: 88px !important; height: 88px !important; }
}

/* PlunaPortal 1.6.31 · visual normalization and tour refinements */
:root { --portal-icon-current: var(--portal-icon-color); }
[data-bs-theme="dark"] {
  --portal-icon-current: color-mix(in srgb, var(--portal-dark-icon-color) 42%, var(--portal-dark-text-safe, var(--portal-dark-text)) 58%);
}

.fi {
  width: 1.05em !important;
  line-height: .76em !important;
  background-size: contain !important;
  vertical-align: -.04em;
}
.portal-icon-btn .fi { width: 1em !important; line-height: .72em !important; }

.mc-panel-head > h3 > i,
.card-header h1 > i, .card-header h2 > i, .card-header h3 > i,
.card-header h4 > i, .card-header h5 > i, .card-header h6 > i,
.mc-stat-icon > i,
.portal-quick-links a > i:first-child,
.mc-dashboard-map-button .mc-stat-icon > i,
.portal-module-widget .card-header i,
.mc-section-label > i {
  color: var(--portal-icon-current) !important;
}

.portal-dashboard-widget-grid-1 {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
}
.portal-dashboard-widget-grid > .portal-module-widget:only-child { grid-column: 1 / -1; }

.mc-dashboard-collapsible .mc-collapse-trigger {
  width: 100%;
  border: 0;
  text-align: left;
  background: var(--portal-panel-header-bg-current);
  color: var(--portal-panel-header-text-current);
  cursor: pointer;
}
.mc-dashboard-collapsible .mc-collapse-chevron { transition: transform .18s ease; }
.mc-dashboard-collapsible .mc-collapse-trigger:not(.collapsed) .mc-collapse-chevron { transform: rotate(180deg); }

.mc-tour-award-showcase {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px;
  border-bottom: 1px solid var(--portal-border-current);
}
.mc-tour-award-image {
  width: 96px !important;
  height: 96px !important;
  max-width: 96px !important;
  max-height: 96px !important;
  object-fit: contain !important;
  flex: 0 0 96px;
}
.mc-tour-award-showcase strong { color: var(--portal-heading-current); font-size: 1.08rem; }
.mc-tour-award-showcase p { color: var(--portal-muted-current); margin: 4px 0 0; }
.mc-tour-progress { height: 18px; background: var(--portal-table-stripe-current); }
.mc-tour-progress .progress-bar { color: var(--portal-primary-button-text) !important; font-weight: 700; }
.mc-tour-progress .bg-warning { color: var(--portal-accent-button-text) !important; }

.portal-module-widget,
.portal-module-widget .card,
.portal-module-widget .card-body,
.portal-module-widget .card-footer,
.portal-module-widget table,
.portal-module-widget td,
.portal-module-widget th {
  color: var(--portal-card-text-current);
}
.portal-module-widget .card-header,
.portal-module-widget .card-header h1,
.portal-module-widget .card-header h2,
.portal-module-widget .card-header h3,
.portal-module-widget .card-header h4,
.portal-module-widget .card-header h5,
.portal-module-widget .card-header h6 {
  color: var(--portal-panel-header-text-current) !important;
}
.portal-module-widget [style*="color: black"],
.portal-module-widget [style*="color:black"],
.portal-module-widget .text-black {
  color: var(--portal-primary-button-text) !important;
}
.portal-module-widget .bg-warning.text-black,
.portal-module-widget .bg-warning .text-black,
.portal-module-widget .progress-bar.bg-warning a {
  color: var(--portal-accent-button-text) !important;
}
.portal-module-widget .progress-bar a { color: inherit !important; }

.pe-front {
  --pe-page-text: var(--portal-text-current) !important;
  --pe-heading-text: var(--portal-heading-current) !important;
  --pe-card-text: var(--portal-card-text-current) !important;
  --pe-card-header-text: var(--portal-panel-header-text-current) !important;
  --pe-muted-text: var(--portal-muted-current) !important;
  --pe-card-muted-text: var(--portal-muted-current) !important;
  --pe-link-text: var(--portal-link-current) !important;
  --pe-currency-badge-text: var(--portal-badge-text-current) !important;
  --pe-currency-badge-bg: var(--portal-badge-bg-current) !important;
}
.pe-front .table,
.pe-front .table td,
.pe-front .table th,
.pe-front .card-body,
.pe-front .card-footer { color: var(--portal-card-text-current) !important; }

/* PlunaPortal 1.6.3 · dashboard live-map + weather sizing hotfix */
.mc-weather-disposable .mc-panel-body {
  overflow: visible !important;
}
.mc-weather-disposable .mc-metartaf-frame {
  min-height: 335px !important;
  height: 335px !important;
  padding: 10px 12px 4px !important;
}
.mc-weather-disposable .mc-metartaf-frame iframe,
.mc-weather-disposable iframe[id*="metartaf"],
.mc-weather-disposable iframe[src*="metar-taf.com"] {
  min-height: 325px !important;
  height: 325px !important;
  width: 100% !important;
}
.mc-weather-disposable .mc-metartaf-links {
  position: relative;
  z-index: 2;
  background: var(--portal-surface-current);
}

/* PlunaPortal 1.6.4 · compact flags across core and addon pages */
img[src*="/image/flags_new/"],
img[src*="image/flags_new/"],
.img-h20,
.img-h25,
.img-mh20,
.img-mh25 {
  width: auto !important;
  height: 18px !important;
  max-width: 28px !important;
  max-height: 18px !important;
  object-fit: contain !important;
  vertical-align: middle !important;
}

/* DisposableSpecial tour legs used intrinsic flag dimensions when the helper class had no CSS. */
.mc-portal-main .table img[src*="flags_new"],
.mc-portal-content .table img[src*="flags_new"],
main .table img[src*="flags_new"] {
  width: auto !important;
  height: 18px !important;
  max-width: 28px !important;
  max-height: 18px !important;
  object-fit: contain !important;
}

/* flag-icons package (language/roster/profile) */
.fi {
  font-size: .82rem !important;
  line-height: 1 !important;
}


/* PlunaPortal 1.6.11 - scoped briefing/roster/map fixes */
#sbapiform .card {
  border: 1px solid var(--portal-border-current);
  border-radius: 14px;
  background: var(--portal-surface-current);
  box-shadow: var(--portal-shadow-sm);
  overflow: hidden;
}
#sbapiform .card-header.bg-primary {
  background: var(--portal-primary) !important;
  border-bottom: 0;
  padding: .8rem 1rem;
  font-weight: 700;
}
#sbapiform .card-body { padding: 1rem; }
#sbapiform label {
  display: block;
  margin-bottom: .35rem;
  color: var(--portal-muted-current);
  font-size: .8rem;
  font-weight: 700;
}
#sbapiform .form-control,
#sbapiform .form-select { min-height: 42px; }
#sbapiform .mc-sb-time-input,
#sbapiform .mc-sb-date-input {
  border-color: var(--portal-primary);
  font-weight: 700;
}
.mc-roster-table { min-width: 1280px; }
.mc-map-modal { z-index: 1060; }
.mc-map-modal .modal-dialog { max-width: min(1500px, 96vw); }
.mc-map-modal .modal-content {
  overflow: hidden;
  border: 1px solid var(--portal-border-current);
  background: var(--portal-surface-current);
}
.mc-map-modal-body {
  position: relative;
  min-height: 68vh;
  overflow: hidden;
  isolation: isolate;
}
.mc-map-modal-body .leaflet-container,
.mc-map-modal-body [id*="map"],
.mc-map-modal-body .map {
  width: 100% !important;
  min-height: 68vh !important;
  height: 68vh !important;
  position: relative !important;
  z-index: 1 !important;
}
.mc-map-modal-body .leaflet-control-container { position: relative; z-index: 10; }
.mc-tour-map { background: var(--portal-map-canvas-bg); }
[data-bs-theme="dark"] .mc-tour-map { background: var(--portal-dark-map-canvas-bg); }
@media (max-width: 767.98px) {
  .mc-map-modal-body,
  .mc-map-modal-body .leaflet-container,
  .mc-map-modal-body [id*="map"],
  .mc-map-modal-body .map { min-height: 72vh !important; height: 72vh !important; }
}



/* VATSIM / WhazzUp: preserve DisposableBasic data logic, enhance only its check indicators */
.mc-whazzup-table th,
.mc-whazzup-table td { vertical-align: middle; }
.mc-whazzup-status {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: .42rem;
  min-height: 25px;
}
.mc-whazzup-orb {
  --mc-whazzup-color: var(--portal-info);
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 23px;
  height: 23px;
  flex: 0 0 23px;
  border-radius: 50%;
  color: #fff;
  font-size: 10px;
  line-height: 1;
  text-shadow: 0 1px 2px rgba(0,0,0,.72);
  background:
    radial-gradient(circle at 27% 21%, rgba(255,255,255,.98) 0 6%, rgba(255,255,255,.56) 7% 14%, transparent 15%),
    radial-gradient(circle at 34% 30%, color-mix(in srgb, var(--mc-whazzup-color) 36%, white) 0 11%, var(--mc-whazzup-color) 43%, color-mix(in srgb, var(--mc-whazzup-color) 73%, black) 78%, color-mix(in srgb, var(--mc-whazzup-color) 43%, black) 100%);
  border: 1px solid color-mix(in srgb, var(--mc-whazzup-color) 68%, black);
  box-shadow:
    inset -5px -6px 8px rgba(0,0,0,.38),
    inset 3px 3px 6px rgba(255,255,255,.27),
    0 3px 6px rgba(0,0,0,.32),
    0 0 0 1px color-mix(in srgb, var(--mc-whazzup-color) 34%, transparent),
    0 0 11px color-mix(in srgb, var(--mc-whazzup-color) 34%, transparent);
  animation: mc-whazzup-orb-pulse var(--mc-whazzup-duration, 2.9s) ease-in-out infinite;
  animation-delay: var(--mc-whazzup-delay, 0s);
  transform: translateZ(0);
}
.mc-whazzup-orb > i { position: relative; z-index: 2; }
.mc-whazzup-orb::before {
  content: '';
  position: absolute;
  left: 5px;
  top: 4px;
  width: 8px;
  height: 4px;
  border-radius: 50%;
  background: rgba(255,255,255,.78);
  filter: blur(.2px);
  pointer-events: none;
}
.mc-whazzup-orb::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--mc-whazzup-color) 24%, transparent);
  opacity: .44;
  pointer-events: none;
}
.mc-whazzup-orb-airline-missing { --mc-whazzup-color: var(--portal-vatsim-airline-missing); }
.mc-whazzup-orb-pirep-found { --mc-whazzup-color: var(--portal-vatsim-pirep-found); }
.mc-whazzup-orb-pirep-missing { --mc-whazzup-color: var(--portal-vatsim-pirep-missing); }
@keyframes mc-whazzup-orb-pulse {
  0%, 56%, 100% {
    transform: scale(1);
    filter: brightness(1);
  }
  69% {
    transform: scale(1.085);
    filter: brightness(1.15);
  }
}
@media (prefers-reduced-motion: reduce) {
  .mc-whazzup-orb { animation: none !important; }
}

/* Fuel Calculator override */
.mc-fuel-calculator-modal .modal-content { overflow: hidden; }
.mc-fuel-calculator-modal .mc-fuel-result .form-control { font-variant-numeric: tabular-nums; }
.mc-fuel-calculator-modal .input-group-text { min-width: 70px; justify-content: center; }

/* Landing-rate page */
.mc-landing-rate-stat {
  border: 1px solid var(--portal-border-current);
  border-radius: var(--portal-radius);
  background: var(--portal-surface-current);
  padding: .85rem 1rem;
  min-height: 100%;
}
.mc-landing-rate-stat small { color: var(--portal-muted-current); display:block; margin-bottom:.15rem; }
.mc-landing-rate-stat strong { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.mc-unit-pill {
  display: inline-flex;
  align-items: center;
  padding: .12rem .45rem;
  border-radius: 999px;
  background: var(--portal-badge-bg-current);
  color: var(--portal-badge-text-current);
  font-size: .78rem;
  font-weight: 800;
  white-space: nowrap;
}


/* Dashboard operational widgets: preserve DisposableBasic behavior and only normalize the visual shell. */
.portal-dashboard-operation-widget { min-width: 0; height: 100%; }
.portal-dashboard-operation-widget > form { height: 100%; margin: 0; }
.portal-dashboard-operation-widget > form > .card { height: 100%; margin-bottom: 0 !important; }

/* Dashboard operational selectors: JumpSeat and TransferAircraft use the same TomSelect visual language.
   The native TransferAircraft select remains the source of truth; TomSelect mirrors it and still emits change events. */
.portal-dashboard-operation-widget .ts-wrapper { width: 100% !important; }
.portal-dashboard-operation-widget .ts-control {
  width: 100% !important;
  min-height: 40px !important;
  border: 1px solid var(--portal-border-current) !important;
  border-radius: calc(var(--portal-radius) * .7) !important;
  background: var(--portal-input-bg-current) !important;
  color: var(--portal-input-text-current) !important;
  box-shadow: none !important;
}
.portal-dashboard-operation-widget .ts-control.focus {
  border-color: var(--portal-secondary) !important;
  box-shadow: 0 0 0 3px rgba(var(--portal-secondary-rgb), .18) !important;
}
.portal-dashboard-operation-widget .ts-control input,
.portal-dashboard-operation-widget .ts-control .item { color: var(--portal-input-text-current) !important; }
.portal-dashboard-operation-widget .ts-control input::placeholder {
  color: var(--portal-muted-current) !important;
  opacity: .78 !important;
}
.portal-dashboard-operation-widget .ts-dropdown {
  background: var(--portal-dropdown-bg-current) !important;
  color: var(--portal-dropdown-text-current) !important;
  border-color: var(--portal-border-current) !important;
}
.portal-dashboard-operation-widget .ts-dropdown .option { color: var(--portal-dropdown-text-current) !important; }
.portal-dashboard-operation-widget .ts-dropdown .active {
  background: rgba(var(--portal-primary-rgb), .13) !important;
  color: var(--portal-link-current) !important;
}
/* Native fallback before TomSelect initializes. */
.portal-dashboard-transfer select#ac_selection {
  display: block;
  width: 100%;
  min-height: 40px;
  height: 40px;
  margin: 0;
  padding: 0 2.25rem 0 .75rem;
  border: 1px solid var(--portal-border-current);
  border-radius: calc(var(--portal-radius) * .7);
  background-color: var(--portal-input-bg-current);
  color: var(--portal-muted-current);
  box-shadow: none;
}
.portal-dashboard-transfer select#ac_selection option {
  background: var(--portal-input-bg-current);
  color: var(--portal-input-text-current);
}

/* Balance modal pagination is fully client-side so changing page never dismisses the modal. */
#portalBalanceModal .mc-balance-pagination .page-link { cursor: pointer; }
#portalBalanceModal .mc-balance-pagination .page-item.disabled .page-link { cursor: default; }

/* PlunaPortal 1.6.35 · PIREP states, selected live flight and Tours spacing */
[data-bs-theme="dark"] .table-danger {
  --bs-table-bg: rgba(153, 48, 58, .24);
  --bs-table-striped-bg: rgba(163, 53, 63, .30);
  --bs-table-hover-bg: rgba(174, 59, 70, .36);
  --bs-table-color: var(--portal-text-current);
  --bs-table-striped-color: var(--portal-text-current);
  --bs-table-hover-color: var(--portal-text-current);
  --bs-table-border-color: rgba(231, 110, 120, .22);
}
[data-bs-theme="dark"] .table-danger > :not(caption) > * > * { color:var(--portal-text-current); }
[data-bs-theme="dark"] .table-danger a:not(.btn) { color:color-mix(in srgb, var(--portal-primary) 55%, #fff); }
[data-bs-theme="dark"] .table-warning {
  --bs-table-bg: rgba(146, 105, 27, .22);
  --bs-table-striped-bg: rgba(155, 112, 29, .28);
  --bs-table-color: var(--portal-text-current);
  --bs-table-striped-color: var(--portal-text-current);
  --bs-table-hover-color: var(--portal-text-current);
}
.mc-tour-list-grid { align-items:stretch; }
.mc-tour-card { border:1px solid var(--portal-border-current); background:var(--portal-surface-current); overflow:hidden; }
.mc-tour-card-head { padding:14px 16px; background:rgba(var(--portal-primary-rgb),.045); }
.mc-tour-card-head h5 { font-size:1rem; line-height:1.25; }
.mc-tour-card-head h5 a { color:var(--portal-text-current); }
.mc-tour-airline-logo { max-width:96px; max-height:40px; object-fit:contain; flex:0 0 auto; }
.mc-tour-card-body { padding:14px 16px; }
.mc-tour-facts { display:grid; grid-template-columns:minmax(0,1fr) minmax(90px,.35fr); gap:12px; }
.mc-tour-facts > div { min-width:0; padding:10px 12px; border:1px solid var(--portal-border-current); border-radius:var(--portal-radius); background:rgba(var(--portal-primary-rgb),.025); }
.mc-tour-facts small { display:block; color:var(--portal-muted-current); font-size:.7rem; text-transform:uppercase; letter-spacing:.04em; margin-bottom:4px; }
.mc-tour-facts strong { display:block; line-height:1.3; }
.mc-tour-fact-wide { grid-column:1 / -1; }
.mc-tour-remark { margin-top:12px; padding:9px 11px; border-radius:var(--portal-radius); background:rgba(var(--portal-primary-rgb),.055); font-size:.82rem; }
.mc-tour-description { margin-top:12px; color:var(--portal-muted-current); line-height:1.55; }
.mc-tour-description > :last-child { margin-bottom:0; }
@media (max-width:575.98px) { .mc-tour-facts { grid-template-columns:1fr; } .mc-tour-fact-wide { grid-column:auto; } }


/* PLUNA Portal: mapas exclusivamente 2D. */
.mc-runway-analysis{padding:2px 0}.mc-runway-analysis-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.mc-runway-analysis-head strong{font-family:var(--portal-font-headings);font-size:1.02rem;color:var(--portal-text-current)}.mc-runway-source{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;background:rgba(var(--portal-primary-rgb),.12);border:1px solid rgba(var(--portal-primary-rgb),.3);color: var(--portal-primary-ink-current);font-size:.72rem;font-weight:900;letter-spacing:.05em}.mc-runway-schematic{border:1px solid var(--portal-border-current);border-radius:calc(var(--portal-radius) + 2px);background:linear-gradient(180deg,rgba(var(--portal-primary-rgb),.035),rgba(var(--portal-primary-rgb),.01));padding:8px;overflow:hidden}.mc-runway-schematic svg{display:block;width:100%;height:auto;min-height:180px;color:var(--portal-muted-current)}.mc-rwy-zone-end{stroke:#21c17a;stroke-width:4;stroke-dasharray:9 8}.mc-rwy-label,.mc-rwy-zone-label,.mc-rwy-touchdown-label,.mc-rwy-dimension-label{font-family:var(--portal-font-body);font-weight:900;fill:var(--portal-text-current)}.mc-rwy-label,.mc-rwy-zone-label{font-size:13px}.mc-rwy-zone-label{fill:#18b26e}.mc-rwy-touchdown-ring{fill:rgba(255,191,63,.15);stroke:#ffbf3f;stroke-width:5}.mc-rwy-touchdown-dot{fill:#ffbf3f;stroke:#111827;stroke-width:2}.mc-rwy-touchdown-label{font-size:14px;fill:#f7b733}.mc-rwy-dimension{stroke:var(--portal-muted-current);stroke-width:2}.mc-rwy-dimension-label{font-size:14px;fill:var(--portal-muted-current)}.mc-rwy-offrunway-backdrop{fill:rgba(8,18,31,.92);stroke:rgba(255,59,77,.62);stroke-width:1.5}.mc-rwy-offrunway-text{font-family:var(--portal-font-headings);font-size:28px;font-weight:950;letter-spacing:.025em;fill:#ff3b4d;paint-order:stroke fill;stroke:rgba(8,18,31,.96);stroke-width:3px;stroke-linejoin:round}.mc-rwy-offrunway-icon path{fill:#ff3b4d;stroke:rgba(8,18,31,.96);stroke-width:3px;stroke-linejoin:round}.mc-rwy-offrunway-icon line{stroke:#0b1725;stroke-width:4px;stroke-linecap:round}.mc-rwy-offrunway-icon circle{fill:#0b1725}.mc-runway-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.mc-runway-stats>div{padding:10px 12px;border:1px solid var(--portal-border-current);border-radius:var(--portal-radius);background:rgba(var(--portal-primary-rgb),.025);min-width:0}.mc-runway-stats small{display:block;color:var(--portal-muted-current);font-size:.69rem;font-weight:800;text-transform:uppercase;letter-spacing:.035em;margin-bottom:2px}.mc-runway-stats strong{display:block;color:var(--portal-text-current);font-size:.92rem;font-variant-numeric:tabular-nums}.mc-runway-stats strong span{color:var(--portal-muted-current);font-weight:700}@media(max-width:767.98px){.mc-runway-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:575.98px){.mc-runway-analysis-head{display:block}.mc-runway-source{margin-top:8px}.mc-runway-stats{grid-template-columns:1fr}.mc-runway-schematic{padding:2px}.mc-runway-schematic svg{min-width:620px}}

/* ======================================================================
   PLUNA Portal visual layer
   PLUNA-specific airline-site header with a stronger editorial rhythm,
   yellow signature line, photographic/slider landing and softer surfaces.
   ====================================================================== */
.portal-topbar { border-bottom:4px solid var(--portal-accent); box-shadow:0 8px 26px rgba(5,25,43,.12); }
.portal-brand img { filter:none; }
.portal-desktop-nav { gap:3px; }
.portal-top-link { border-bottom:0; border-radius:999px; padding:.55rem .85rem; }
.portal-top-link:hover,.portal-top-link:focus,.portal-top-link.active,.portal-desktop-nav .dropdown.show>.portal-top-link { background:rgba(255,255,255,.1); color:#fff; }
.portal-top-link.active { box-shadow:inset 0 -3px 0 var(--portal-accent); }
.portal-icon-btn { border-radius:999px; }
.portal-content { max-width:1480px; }
.portal-public .portal-content { max-width:none; padding-top:0; }
.portal-public .portal-footer { margin-top:0; }

.card,.mc-panel,.mc-profile-hero,.mc-flight-card,.mc-pirep-hero,.mc-pirep-summary,.mc-rich-content { border-radius:calc(var(--portal-radius) + 2px); }
.portal-cards-shadow .card,.portal-cards-shadow .mc-panel { border-color:transparent; box-shadow:0 10px 30px rgba(16,45,76,.08); }
[data-bs-theme="dark"] .portal-cards-shadow .card,[data-bs-theme="dark"] .portal-cards-shadow .mc-panel { box-shadow:0 12px 34px rgba(0,0,0,.24); }
.mc-eyebrow { color: var(--portal-primary-ink-current); font-weight:800; letter-spacing:.14em; }
[data-bs-theme="dark"] .mc-eyebrow { color:var(--portal-accent); }
.btn-warning,.btn-accent { font-weight:800; box-shadow:0 8px 18px rgba(247,198,0,.2); }
.btn-primary { font-weight:700; }

.pv-landing-hero {
  position:relative;
  height:var(--pv-landing-height,590px);
  min-height:360px;
  margin:0 -28px 34px;
  overflow:hidden;
  background:#102d4c;
  color:#fff;
  isolation:isolate;
}
.pv-landing-background,.pv-landing-carousel { position:absolute; inset:0; }
.pv-landing-background { background:var(--pv-landing-background) center/cover no-repeat; transform:scale(1.015); }
.pv-landing-carousel .carousel-inner,.pv-landing-carousel .carousel-item { height:100%; }
.pv-carousel-image { object-fit:var(--pv-landing-fit,cover); background:#102d4c; }
.pv-landing-overlay {
  position:absolute; inset:0; z-index:2; pointer-events:none;
  background:
    linear-gradient(90deg,rgba(5,24,42,.92) 0%,rgba(5,24,42,.65) 40%,rgba(5,24,42,.28) 72%,rgba(5,24,42,.48) 100%),
    linear-gradient(180deg,rgba(0,0,0,.08) 50%,rgba(4,21,36,.76) 100%);
  opacity:var(--portal-landing-overlay-opacity,.46);
}
.pv-landing-hero::after { content:""; position:absolute; z-index:3; left:0; bottom:0; width:42%; height:7px; background:var(--portal-accent); }
.pv-landing-copy { position:absolute; z-index:4; left:max(34px,calc((100vw - 1410px)/2)); top:50%; width:min(640px,calc(100% - 68px)); transform:translateY(-57%); text-shadow:0 2px 12px rgba(0,0,0,.28); }
.pv-landing-kicker { display:inline-flex; align-items:center; gap:9px; margin-bottom:12px; font-size:.78rem; font-weight:900; letter-spacing:.22em; }
.pv-landing-kicker::before { content:""; width:42px; height:4px; border-radius:99px; background:var(--portal-accent); }
.pv-landing-copy h1 { margin:0; color:#fff; font-family:var(--portal-font-headings); font-size:clamp(2.15rem,5vw,4.65rem); line-height:.98; font-weight:800; letter-spacing:-.035em; }
.pv-landing-copy p { max-width:560px; margin:17px 0 0; color:rgba(255,255,255,.88); font-size:1.08rem; line-height:1.55; }
.pv-landing-actions { position:absolute; z-index:5; left:max(34px,calc((100vw - 1410px)/2)); bottom:52px; display:flex; flex-wrap:wrap; gap:10px; }
.pv-landing-actions .btn { min-width:170px; padding:.72rem 1.25rem; border-width:2px; }
.pv-carousel-indicators { z-index:6; justify-content:flex-end; margin-right:max(34px,calc((100vw - 1410px)/2)); margin-left:55%; }
.pv-carousel-indicators [data-bs-target] { width:42px; height:4px; border:0; border-radius:99px; opacity:.45; }
.pv-carousel-indicators .active { background-color:var(--portal-accent); opacity:1; }
.pv-carousel-control { z-index:5; width:6%; opacity:.45; }
.pv-carousel-control:hover { opacity:.9; }

.pv-home-intro { display:grid; grid-template-columns:auto 1fr; gap:24px; align-items:end; max-width:1404px; margin:0 auto 16px; padding:0 0 5px; }
.pv-home-intro h2 { margin:2px 0 0; color:var(--portal-heading-current); font-family:var(--portal-font-headings); font-size:clamp(1.55rem,2.2vw,2.2rem); font-weight:800; }
.pv-home-rule { height:1px; margin-bottom:9px; background:linear-gradient(90deg,var(--portal-accent),var(--portal-border-current) 18%,var(--portal-border-current)); }
.pv-pilot-card { position:relative; overflow:hidden; transition:transform .18s ease,box-shadow .18s ease; }
.pv-pilot-card::before { content:""; position:absolute; inset:0 auto 0 0; width:4px; background:var(--portal-accent); opacity:.85; }
.pv-pilot-card:hover { transform:translateY(-2px); }
.pv-stats-strip .mc-stat-card { position:relative; overflow:hidden; border:0; box-shadow:0 10px 28px rgba(16,45,76,.08); }
.pv-stats-strip .mc-stat-card::after { content:""; position:absolute; left:0; right:0; bottom:0; height:4px; background:linear-gradient(90deg,var(--portal-primary),var(--portal-accent)); }
.pv-stats-strip .mc-stat-icon { border-radius:50%; }
.pv-vatsim-partner { margin-top:36px; border-top:1px solid var(--portal-border-current); }

[data-bs-theme="dark"] .pv-home-rule { background:linear-gradient(90deg,var(--portal-accent),var(--portal-dark-border) 18%,var(--portal-dark-border)); }
[data-bs-theme="dark"] .pv-stats-strip .mc-stat-card { box-shadow:0 14px 34px rgba(0,0,0,.22); }

@media (max-width:991.98px) {
  .pv-landing-hero { margin:0 -18px 28px; }
  .pv-landing-copy,.pv-landing-actions { left:28px; }
  .pv-landing-copy { width:calc(100% - 56px); }
  .pv-carousel-indicators { margin-right:28px; }
}
@media (max-width:767.98px) {
  .pv-landing-hero { height:var(--pv-landing-height-mobile,390px); min-height:320px; margin:0 -12px 24px; }
  .pv-landing-copy { left:20px; top:44%; width:calc(100% - 40px); transform:translateY(-50%); }
  .pv-landing-copy p { display:none; }
  .pv-landing-actions { left:20px; right:20px; bottom:34px; }
  .pv-landing-actions .btn { min-width:0; flex:1 1 145px; }
  .pv-carousel-indicators { margin:0 20px 18px 45%; }
  .pv-carousel-control { display:none; }
  .pv-home-intro { grid-template-columns:1fr; gap:5px; }
  .pv-home-rule { margin:0; }
}

/* ======================================================================
   PLUNA Portal 1.0.1 · wider airline layout
   Keep the established palette/effects, but move away from the Mercargo
   geometry: less lateral gutter, editorial section headers and a masthead
   + operational-stat composition instead of a stacked dashboard.
   ====================================================================== */
:root {
  --pv-page-gutter: 14px;
  --pv-page-gutter-tablet: 12px;
  --pv-page-gutter-mobile: 9px;
}

/* Use the available viewport. The sidebar already reserves its own width. */
.portal-content {
  width: 100%;
  max-width: none;
  padding-left: var(--pv-page-gutter);
  padding-right: var(--pv-page-gutter);
}

/* PLUNA uses a flatter, more editorial information hierarchy. */
.mc-page-title {
  position: relative;
  padding-left: 15px;
  margin-bottom: 20px;
}
.mc-page-title::before {
  content: "";
  position: absolute;
  left: 0;
  top: 4px;
  bottom: 3px;
  width: 4px;
  border-radius: 999px;
  background: var(--portal-accent);
}
.mc-page-title h1 { letter-spacing: -.02em; }

/* Panel headers read as section bands rather than generic Bootstrap cards. */
.mc-panel-head,
.portal-module-widget > .card > .card-header,
.portal-module-widget .mc-whazzup-card > .card-header {
  position: relative;
  padding-left: 18px;
}
.mc-panel-head::before,
.portal-module-widget > .card > .card-header::before,
.portal-module-widget .mc-whazzup-card > .card-header::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 4px;
  background: var(--portal-accent);
}

/* Dashboard masthead: identity/CTA on the left, four compact operational
   values in a 2×2 bank on the right. This is intentionally unlike Mercargo. */
.pv-dashboard-overview {
  display: grid;
  grid-template-columns: minmax(0, 1.8fr) minmax(390px, .78fr);
  gap: 12px;
  align-items: stretch;
  margin-bottom: 18px;
}
.pv-dashboard-overview .portal-dashboard-banner {
  min-height: 178px;
  height: 100%;
  margin-bottom: 0;
  border-radius: calc(var(--portal-radius) + 4px);
}
.pv-dashboard-stats {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-rows: 1fr;
  gap: 10px;
  margin: 0;
}
.pv-dashboard-stats .mc-stat-card {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 13px 14px;
}
.pv-dashboard-stats .mc-stat-icon {
  flex: 0 0 38px;
  width: 38px;
  height: 38px;
  margin: 0;
  border-radius: 50%;
}
.pv-dashboard-stats .mc-stat-value {
  font-size: 1.18rem;
  line-height: 1.05;
}
.pv-dashboard-stats .mc-stat-label { margin-top: 4px; }

/* The lower dashboard is less sidebar-heavy and uses the extra width. */
.portal-dashboard-layout {
  grid-template-columns: minmax(0, 1.5fr) minmax(330px, .82fr);
  gap: 12px;
}
.portal-dashboard-main,
.portal-dashboard-side,
.mc-stack { gap: 12px; }
.portal-dashboard-full { margin-bottom: 18px; }
.mc-section-label {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
  font-size: .74rem;
  letter-spacing: .11em;
}
.mc-section-label::after {
  content: "";
  height: 1px;
  flex: 1 1 auto;
  background: linear-gradient(90deg, var(--portal-accent), var(--portal-border-current) 12%, var(--portal-border-current));
}

/* Online network board: remove the nested-card feeling seen in Mercargo. */
.portal-online-pilots .mc-whazzup-card {
  border-radius: calc(var(--portal-radius) * .7);
  border-left: 0 !important;
  border-right: 0 !important;
}
.portal-online-pilots .mc-whazzup-card > .card-header {
  min-height: 42px;
  display: flex;
  align-items: center;
  padding-top: 8px;
  padding-bottom: 8px;
}
.portal-online-pilots .mc-whazzup-card > .card-header h5 {
  width: 100%;
  font-size: .98rem;
  letter-spacing: -.01em;
}
.portal-online-pilots .mc-whazzup-empty {
  display: flex;
  align-items: center;
  gap: 9px;
  min-height: 52px;
  padding: 12px 16px;
  color: var(--portal-muted-current);
  font-weight: 650;
}
.portal-online-pilots .mc-whazzup-empty i { color: var(--portal-icon-current); }
.portal-online-pilots .mc-whazzup-note {
  color: var(--portal-muted-current);
  font-size: .76rem;
  font-weight: 650;
}

/* Full-width landing follows the new narrow gutter too. */
.pv-landing-hero {
  margin-left: calc(var(--pv-page-gutter) * -1);
  margin-right: calc(var(--pv-page-gutter) * -1);
}
.pv-landing-copy,
.pv-landing-actions {
  left: clamp(26px, 3.2vw, 58px);
}
.pv-carousel-indicators { margin-right: clamp(26px, 3.2vw, 58px); }
.pv-home-intro { max-width: none; }

/* Reports no longer need a viewport breakout: the portal itself is wide. */
.mc-wide-reports {
  width: 100%;
  max-width: 100%;
  margin-left: 0;
}

@media (max-width: 1199.98px) {
  .pv-dashboard-overview { grid-template-columns: minmax(0, 1.35fr) minmax(340px, .85fr); }
  .portal-dashboard-layout { grid-template-columns: minmax(0, 1fr) 320px; }
}
@media (max-width: 991.98px) {
  .portal-content {
    padding-left: var(--pv-page-gutter-tablet);
    padding-right: var(--pv-page-gutter-tablet);
  }
  .pv-dashboard-overview { grid-template-columns: 1fr; }
  .pv-dashboard-overview .portal-dashboard-banner { min-height: 150px; }
  .pv-dashboard-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .pv-dashboard-stats .mc-stat-card { display: block; }
  .pv-dashboard-stats .mc-stat-icon { margin-bottom: 8px; }
  .portal-dashboard-layout { grid-template-columns: 1fr; }
  .pv-landing-hero {
    margin-left: calc(var(--pv-page-gutter-tablet) * -1);
    margin-right: calc(var(--pv-page-gutter-tablet) * -1);
  }
}
@media (max-width: 767.98px) {
  .portal-content {
    padding-left: var(--pv-page-gutter-mobile);
    padding-right: var(--pv-page-gutter-mobile);
  }
  .pv-dashboard-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pv-dashboard-stats .mc-stat-card { display: flex; }
  .pv-dashboard-stats .mc-stat-icon { margin: 0; }
  .pv-landing-hero {
    margin-left: calc(var(--pv-page-gutter-mobile) * -1);
    margin-right: calc(var(--pv-page-gutter-mobile) * -1);
  }
}
@media (max-width: 479.98px) {
  .pv-dashboard-stats { grid-template-columns: 1fr; }
}


/* ======================================================================
   PLUNA Portal 1.0.2 · balanced width + dashboard order
   Desktop content stays around 90% of the available viewport.  The landing
   and dashboard no longer break out to full width.  Primary pilot actions
   are intentionally kept above informational blocks.
   ====================================================================== */
.portal-content {
  width: 90%;
  max-width: 1680px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 0;
  padding-right: 0;
}

/* Keep the landing aligned with the same page frame instead of stretching
   edge-to-edge. */
.pv-landing-hero {
  margin-left: 0;
  margin-right: 0;
  border-radius: calc(var(--portal-radius) + 4px);
  overflow: hidden;
}
.pv-home-intro { max-width: 1180px; }

/* Dashboard: one clear masthead, a horizontal stat rail, then operations. */
.pv-dashboard-overview {
  display: block;
  margin-bottom: 14px;
}
.pv-dashboard-overview .portal-dashboard-banner {
  min-height: 138px;
  height: auto;
  margin-bottom: 12px;
}
.pv-dashboard-stats {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-auto-rows: auto;
  gap: 12px;
}
.pv-dashboard-stats .mc-stat-card {
  min-height: 82px;
  padding: 13px 15px;
}
.pv-dashboard-primary-actions {
  margin-bottom: 18px;
}
.portal-dashboard-layout {
  grid-template-columns: minmax(0, 2fr) minmax(300px, .9fr);
  gap: 18px;
}
.portal-dashboard-main,
.portal-dashboard-side,
.mc-stack { gap: 16px; }
.portal-dashboard-full { margin-bottom: 18px; }

@media (max-width: 1199.98px) {
  .portal-content { width: 92%; }
  .portal-dashboard-layout { grid-template-columns: minmax(0, 1fr) 310px; }
}
@media (max-width: 991.98px) {
  .portal-content {
    width: calc(100% - 32px);
    padding-left: 0;
    padding-right: 0;
  }
  .pv-dashboard-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portal-dashboard-layout { grid-template-columns: 1fr; }
  .pv-landing-hero { margin-left: 0; margin-right: 0; }
}
@media (max-width: 575.98px) {
  .portal-content { width: calc(100% - 20px); }
  .pv-dashboard-overview .portal-dashboard-banner { min-height: 126px; }
  .pv-dashboard-stats { grid-template-columns: 1fr; }
}

/* ======================================================================
   PLUNA Portal 1.0.3 · compact dashboard + dark-mode compatibility
   ====================================================================== */

/* The rest of the portal keeps the 90% frame. The dashboard gets its own
   calmer working width so widgets do not become long horizontal strips. */
.pv-dashboard-shell {
  width: 100%;
  max-width: 1320px;
  margin: 0 auto;
}
.pv-dashboard-overview {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(410px, .95fr);
  gap: 14px;
  align-items: stretch;
  margin-bottom: 16px;
}
.pv-dashboard-overview .portal-dashboard-banner {
  min-height: 174px;
  height: 100%;
  margin-bottom: 0;
}
.pv-dashboard-stats {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-rows: 1fr;
  gap: 10px;
  margin-bottom: 0;
}
.pv-dashboard-stats .mc-stat-card {
  min-height: 0;
  padding: 13px 14px;
}
.pv-dashboard-primary-actions { margin-bottom: 16px; }
.pv-dashboard-shell .portal-dashboard-layout {
  grid-template-columns: minmax(0, 1.68fr) minmax(330px, .82fr);
  gap: 16px;
}
.pv-dashboard-shell .portal-dashboard-main,
.pv-dashboard-shell .portal-dashboard-side { gap: 14px; }

/* Airline logos may have a separate asset for each visual mode. */
.portal-airline-theme-logo-dark { display: none !important; }
[data-bs-theme="dark"] .portal-airline-theme-logo-light { display: none !important; }
[data-bs-theme="dark"] .portal-airline-theme-logo-dark { display: inline-block !important; }

/* Flight catalogue remains complete; operational availability is explicit. */
.mc-flight-card-unavailable { border-style: dashed; }
.mc-flight-card-unavailable:hover { border-color: var(--portal-border-current); }
.mc-flight-top-status { display:flex; align-items:center; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
.mc-flight-location-lock {
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:4px 8px;
  border:1px solid var(--portal-border-current);
  border-radius:999px;
  color:var(--portal-muted-current);
  background:rgba(var(--portal-primary-rgb),.035);
  font-size:.72rem;
  font-weight:700;
}
.mc-flight-book-disabled { opacity:.72 !important; cursor:not-allowed !important; }

/* Buttons need brighter edges/text on the dark PLUNA palette. */
[data-bs-theme="dark"] .btn-primary {
  --bs-btn-bg: var(--portal-secondary);
  --bs-btn-border-color: var(--portal-secondary);
  --bs-btn-color: #fff;
  --bs-btn-hover-bg: var(--portal-dark-link);
  --bs-btn-hover-border-color: var(--portal-dark-link);
  --bs-btn-hover-color: #081723;
  --bs-btn-active-bg: var(--portal-dark-link);
  --bs-btn-active-border-color: var(--portal-dark-link);
  --bs-btn-active-color: #081723;
}
[data-bs-theme="dark"] .btn-outline-primary {
  --bs-btn-color: var(--portal-dark-link);
  --bs-btn-border-color: var(--portal-dark-link);
  --bs-btn-hover-bg: var(--portal-secondary);
  --bs-btn-hover-border-color: var(--portal-secondary);
  --bs-btn-hover-color: #fff;
  --bs-btn-active-bg: var(--portal-secondary);
  --bs-btn-active-border-color: var(--portal-secondary);
  --bs-btn-active-color: #fff;
}
[data-bs-theme="dark"] .btn-info,
[data-bs-theme="dark"] .btn-outline-info {
  --bs-btn-bg: var(--portal-secondary);
  --bs-btn-border-color: var(--portal-secondary);
  --bs-btn-color: #fff;
  --bs-btn-hover-bg: var(--portal-dark-link);
  --bs-btn-hover-border-color: var(--portal-dark-link);
  --bs-btn-hover-color: #081723;
}
[data-bs-theme="dark"] .btn-success,
[data-bs-theme="dark"] .btn-danger { --bs-btn-color:#fff; --bs-btn-hover-color:#fff; }
[data-bs-theme="dark"] .btn-outline-secondary {
  --bs-btn-color: var(--portal-dark-muted);
  --bs-btn-border-color: var(--portal-dark-border);
  --bs-btn-hover-bg: var(--portal-dark-panel-header-bg);
  --bs-btn-hover-border-color: var(--portal-dark-link);
  --bs-btn-hover-color: var(--portal-dark-text);
}
[data-bs-theme="dark"] .alert-info {
  --bs-alert-color: #c9e7fb;
  --bs-alert-bg: rgba(var(--portal-secondary-rgb), .18);
  --bs-alert-border-color: rgba(var(--portal-secondary-rgb), .45);
}
[data-bs-theme="dark"] .alert-success {
  --bs-alert-color: #c9f3dd;
  --bs-alert-bg: rgba(25,135,84,.16);
  --bs-alert-border-color: rgba(25,135,84,.42);
}
[data-bs-theme="dark"] .alert-warning {
  --bs-alert-color: #ffeaa0;
  --bs-alert-bg: rgba(255,193,7,.12);
  --bs-alert-border-color: rgba(255,193,7,.38);
}

/* EconomyPlus already exposes variables; strengthen alerts/secondary copy. */
[data-bs-theme="dark"] .pe-front .alert,
[data-bs-theme="dark"] .pe-front .text-muted { color: var(--portal-dark-muted) !important; }
[data-bs-theme="dark"] .pe-front .alert-info { color:#c9e7fb !important; }

/* OperationsEnhanced has its own palette variables. When it is displayed
   inside PlunaPortal, the portal theme wins so its economy screen does not
   turn into a white sheet while the rest of the site is dark. */
[data-bs-theme="dark"] .oe-economy {
  --oe-primary: var(--portal-secondary) !important;
  --oe-accent: var(--portal-accent) !important;
  --oe-bg: var(--portal-dark-page) !important;
  --oe-card: var(--portal-dark-card-bg) !important;
  --oe-text: var(--portal-dark-text) !important;
  --oe-muted: var(--portal-dark-muted) !important;
  background: var(--portal-dark-page) !important;
  color: var(--portal-dark-text) !important;
}
[data-bs-theme="dark"] .oe-economy .card,
[data-bs-theme="dark"] .oe-economy .oe-airline-card {
  background: var(--portal-dark-card-bg) !important;
  color: var(--portal-dark-text) !important;
  border-color: var(--portal-dark-border) !important;
  box-shadow: none !important;
}
[data-bs-theme="dark"] .oe-economy .oe-selected-head,
[data-bs-theme="dark"] .oe-economy .oe-airline-mini-grid { border-color:var(--portal-dark-border) !important; }
[data-bs-theme="dark"] .oe-economy .oe-movements-card .card-header {
  background: var(--portal-dark-panel-header-bg) !important;
  color: var(--portal-dark-panel-header-text) !important;
  border-bottom: 1px solid var(--portal-dark-border) !important;
}
[data-bs-theme="dark"] .oe-economy table,
[data-bs-theme="dark"] .oe-economy .table {
  --bs-table-bg: transparent !important;
  --bs-table-color: var(--portal-dark-text) !important;
  --bs-table-border-color: var(--portal-dark-border) !important;
  --bs-table-hover-bg: rgba(var(--portal-secondary-rgb),.12) !important;
  color: var(--portal-dark-text) !important;
  background: transparent !important;
}
[data-bs-theme="dark"] .oe-economy table td,
[data-bs-theme="dark"] .oe-economy table th { background:transparent !important; color:var(--portal-dark-text) !important; border-color:var(--portal-dark-border) !important; }
[data-bs-theme="dark"] .oe-economy table tbody tr:hover { background:rgba(var(--portal-secondary-rgb),.1) !important; }
[data-bs-theme="dark"] .oe-economy .oe-airline-name,
[data-bs-theme="dark"] .oe-economy .oe-label,
[data-bs-theme="dark"] .oe-economy .oe-kicker,
[data-bs-theme="dark"] .oe-economy .oe-muted { color:var(--portal-dark-muted) !important; }

@media (max-width: 1199.98px) {
  .pv-dashboard-shell { max-width: 1120px; }
  .pv-dashboard-overview { grid-template-columns: minmax(0, 1.2fr) minmax(380px, .9fr); }
  .pv-dashboard-shell .portal-dashboard-layout { grid-template-columns: minmax(0, 1fr) 320px; }
}
@media (max-width: 991.98px) {
  .pv-dashboard-shell { max-width:none; }
  .pv-dashboard-overview { grid-template-columns:1fr; }
  .pv-dashboard-overview .portal-dashboard-banner { min-height:145px; }
  .pv-dashboard-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .pv-dashboard-shell .portal-dashboard-layout { grid-template-columns:1fr; }
}
@media (max-width: 575.98px) {
  .pv-dashboard-stats { grid-template-columns:1fr; }
  .mc-flight-top-status { justify-content:flex-start; }
}
[data-bs-theme="dark"] .oe-economy .oe-category-badge {
  color: var(--portal-accent-button-text) !important;
}

/* ======================================================================
   PLUNA Portal 1.0.4 · integrated masthead + PLUNA reports ledger
   ====================================================================== */

/* A touch more breathing room than 1.0.3, without returning to full-width. */
.pv-dashboard-shell {
  max-width: 1420px;
}

/* The pilot identity, CTA and four operational values now belong to one
   masthead instead of looking like unrelated cards beside the banner. */
.pv-dashboard-overview {
  display: block;
  margin-bottom: 16px;
}
.pv-dashboard-overview .portal-dashboard-banner.pv-dashboard-banner-integrated {
  min-height: 226px;
  width: 100%;
  height: auto;
  margin: 0;
  padding: 22px 24px 18px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: space-between;
  gap: 22px;
  border-radius: calc(var(--portal-radius) + 5px);
  overflow: hidden;
}
.pv-dashboard-banner-top {
  width: 100%;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
}
.pv-dashboard-banner-copy { min-width: 0; }
.pv-dashboard-banner-copy h1 { font-size: clamp(1.55rem, 2vw, 2rem); }
.pv-dashboard-banner-integrated .portal-dashboard-banner-actions {
  margin-left: auto;
  align-self: center;
}
.pv-dashboard-banner-stats {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border: 1px solid rgba(255,255,255,.12);
  border-radius: calc(var(--portal-radius) - 1px);
  overflow: hidden;
  background: rgba(4, 20, 34, .34);
  backdrop-filter: blur(7px);
}
.pv-dashboard-banner-stat {
  min-width: 0;
  min-height: 68px;
  padding: 11px 14px;
  display: flex;
  align-items: center;
  gap: 11px;
  color: var(--portal-hero-text) !important;
  text-decoration: none !important;
  border-right: 1px solid rgba(255,255,255,.11);
  transition: background .18s ease, color .18s ease;
}
.pv-dashboard-banner-stat:last-child { border-right: 0; }
a.pv-dashboard-banner-stat:hover { background: rgba(255,255,255,.075); }
.pv-dashboard-banner-stat .mc-stat-icon {
  flex: 0 0 36px;
  width: 36px;
  height: 36px;
  margin: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.09);
  color: var(--portal-accent);
}
.pv-dashboard-banner-stat > span:not(.mc-stat-icon) {
  min-width: 0;
  display: flex;
  flex-direction: column;
  line-height: 1.08;
}
.pv-dashboard-banner-stat strong {
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--portal-hero-text);
  font-size: 1rem;
  font-weight: 800;
  white-space: nowrap;
}
.pv-dashboard-banner-stat small {
  margin-top: 5px;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--portal-hero-muted-text);
  font-size: .72rem;
  white-space: nowrap;
}
.pv-dashboard-stat-arrow {
  margin-left: auto;
  color: rgba(255,255,255,.62);
  font-size: .78rem;
}

/* In dark mode the principal actions start in PLUNA gold. Semantic danger and
   success actions keep their own colours so status remains understandable. */
[data-bs-theme="dark"] .btn-primary,
[data-bs-theme="dark"] .btn-info {
  --bs-btn-bg: var(--portal-accent);
  --bs-btn-border-color: var(--portal-accent);
  --bs-btn-color: var(--portal-accent-button-text);
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-accent) 84%, #fff);
  --bs-btn-hover-border-color: color-mix(in srgb, var(--portal-accent) 84%, #fff);
  --bs-btn-hover-color: var(--portal-accent-button-text);
  --bs-btn-active-bg: color-mix(in srgb, var(--portal-accent) 78%, #000);
  --bs-btn-active-border-color: color-mix(in srgb, var(--portal-accent) 78%, #000);
  --bs-btn-active-color: var(--portal-accent-button-text);
  background: var(--portal-accent);
  border-color: var(--portal-accent);
  color: var(--portal-accent-button-text);
}
[data-bs-theme="dark"] .btn-primary:hover,
[data-bs-theme="dark"] .btn-info:hover {
  filter: brightness(.96);
  color: var(--portal-accent-button-text);
}
[data-bs-theme="dark"] .btn-outline-primary,
[data-bs-theme="dark"] .btn-outline-info {
  --bs-btn-bg: transparent;
  --bs-btn-border-color: var(--portal-accent);
  --bs-btn-color: var(--portal-accent);
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-accent) 14%, transparent);
  --bs-btn-hover-border-color: var(--portal-accent);
  --bs-btn-hover-color: var(--portal-accent);
  --bs-btn-active-bg: color-mix(in srgb, var(--portal-accent) 20%, transparent);
  --bs-btn-active-border-color: var(--portal-accent);
  --bs-btn-active-color: var(--portal-accent);
  background: transparent;
  border-color: var(--portal-accent);
  color: var(--portal-accent);
}
[data-bs-theme="dark"] .btn-outline-primary:hover,
[data-bs-theme="dark"] .btn-outline-info:hover {
  background: color-mix(in srgb, var(--portal-accent) 14%, transparent);
  border-color: var(--portal-accent);
  color: var(--portal-accent);
}

/* All reports: a flight ledger, not the Mercargo striped-table composition. */
.pv-reports-page { width: 100%; }
.pv-reports-hero {
  position: relative;
  min-height: 126px;
  margin-bottom: 14px;
  padding: 22px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  overflow: hidden;
  border: 1px solid var(--portal-border-current);
  border-radius: calc(var(--portal-radius) + 3px);
  background:
    linear-gradient(110deg, rgba(var(--portal-primary-rgb), .16), transparent 58%),
    var(--portal-surface-current);
}
.pv-reports-hero::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 5px;
  background: var(--portal-accent);
}
.pv-reports-heading h1 {
  margin: 3px 0 5px;
  font-size: clamp(1.65rem, 2.2vw, 2.15rem);
  letter-spacing: -.025em;
}
.pv-reports-heading p {
  max-width: 720px;
  margin: 0;
  color: var(--portal-muted-current);
}
.pv-reports-count {
  flex: 0 0 auto;
  min-width: 145px;
  padding: 11px 16px;
  text-align: right;
  border-left: 1px solid var(--portal-border-current);
}
.pv-reports-count span {
  display: block;
  color: var(--portal-primary-ink-current);
  font-size: 1.55rem;
  font-weight: 800;
  line-height: 1;
}
[data-bs-theme="dark"] .pv-reports-count span { color: var(--portal-accent); }
.pv-reports-count small {
  display: block;
  margin-top: 5px;
  color: var(--portal-muted-current);
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.pv-reports-search {
  max-width: 900px;
  margin: 0 0 14px auto;
}
.pv-reports-ledger {
  overflow: hidden;
  border: 1px solid var(--portal-border-current);
  border-radius: calc(var(--portal-radius) + 2px);
  background: var(--portal-surface-current);
  box-shadow: var(--portal-shadow-sm);
}
.pv-reports-table-wrap {
  max-height: 72vh;
  overflow: auto;
}
.pv-reports-table { min-width: 1420px; }
.pv-reports-table thead {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--portal-panel-header-bg-current);
  box-shadow: 0 1px 0 var(--portal-border-current);
}
.pv-reports-table thead th {
  padding-top: .78rem;
  padding-bottom: .78rem;
  color: var(--portal-panel-header-text-current);
  border: 0;
}
.pv-reports-table th:last-child,
.pv-reports-table td:last-child { min-width: 155px; white-space: nowrap; }
.pv-reports-table tbody tr { border-bottom: 1px solid var(--portal-border-current); }
.pv-reports-table tbody tr:last-child { border-bottom: 0; }
.pv-reports-table tbody td {
  padding: .78rem .7rem;
  background: transparent !important;
  border: 0;
}
.pv-reports-table tbody tr:hover td { background: rgba(var(--portal-primary-rgb), .045) !important; }
[data-bs-theme="dark"] .pv-reports-table tbody tr:hover td { background: rgba(255,255,255,.035) !important; }
.pv-report-flight,
.pv-report-pilot,
.pv-report-airport {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  color: var(--portal-text-current);
  text-decoration: none;
}
.pv-report-flight > div,
.pv-report-pilot,
.pv-report-airport { flex-direction: column; align-items: flex-start; gap: 2px; }
.pv-report-flight strong,
.pv-report-pilot strong,
.pv-report-airport strong { color: var(--portal-text-current); font-weight: 800; }
.pv-report-flight small,
.pv-report-pilot small,
.pv-report-airport small {
  display: block;
  max-width: 200px;
  overflow: hidden;
  color: var(--portal-muted-current);
  font-size: .72rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pv-report-airport strong { color: var(--portal-link-current); }
.pv-report-aircraft { font-weight: 700; }
.pv-report-open {
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--portal-border-current);
  border-radius: 50%;
  color: var(--portal-link-current);
  text-decoration: none;
}
.pv-report-open:hover {
  border-color: var(--portal-accent);
  background: var(--portal-accent);
  color: var(--portal-accent-button-text);
}
.pv-report-state {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 78px;
  padding: 5px 9px;
  border-radius: 999px;
  font-size: .7rem;
  font-weight: 800;
  line-height: 1;
  border: 1px solid transparent;
}
.pv-report-state.is-accepted { color: #0f7a4e; background: rgba(25,135,84,.12); border-color: rgba(25,135,84,.25); }
.pv-report-state.is-pending { color: #8a6700; background: rgba(255,193,7,.15); border-color: rgba(255,193,7,.28); }
.pv-report-state.is-rejected { color: #b02a37; background: rgba(220,53,69,.11); border-color: rgba(220,53,69,.24); }
.pv-report-state.is-cancelled,
.pv-report-state.is-neutral { color: var(--portal-muted-current); background: rgba(127,127,127,.1); border-color: var(--portal-border-current); }
[data-bs-theme="dark"] .pv-report-state.is-accepted { color: #79d9ad; }
[data-bs-theme="dark"] .pv-report-state.is-pending { color: #ffe08a; }
[data-bs-theme="dark"] .pv-report-state.is-rejected { color: #ff9ca6; }
.pv-reports-footer {
  min-height: 44px;
  padding: 9px 14px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 14px;
  color: var(--portal-muted-current);
  border-top: 1px solid var(--portal-border-current);
  background: rgba(var(--portal-primary-rgb), .035);
  font-size: .78rem;
  font-weight: 700;
}
.pv-reports-page-indicator {
  padding: 4px 8px;
  border: 1px solid var(--portal-border-current);
  border-radius: 999px;
  color: var(--portal-text-current);
}
.pv-reports-pagination { margin-top: 14px; }

@media (max-width: 1199.98px) {
  .pv-dashboard-shell { max-width: 1320px; }
  .pv-dashboard-banner-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pv-dashboard-banner-stat:nth-child(2) { border-right: 0; }
  .pv-dashboard-banner-stat:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.11); }
}
@media (max-width: 767.98px) {
  .pv-dashboard-overview .portal-dashboard-banner.pv-dashboard-banner-integrated { min-height: 0; padding: 18px; }
  .pv-dashboard-banner-top { flex-direction: column; }
  .pv-dashboard-banner-integrated .portal-dashboard-banner-actions { width: 100%; margin: 0; align-self: auto; }
  .pv-dashboard-banner-integrated .portal-dashboard-banner-actions .btn { width: 100%; }
  .pv-reports-hero { align-items: flex-start; flex-direction: column; }
  .pv-reports-count { width: 100%; padding: 10px 0 0; text-align: left; border-left: 0; border-top: 1px solid var(--portal-border-current); }
  .pv-reports-search { max-width: none; }
}
@media (max-width: 575.98px) {
  .pv-dashboard-banner-stats { grid-template-columns: 1fr; }
  .pv-dashboard-banner-stat { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.11); }
  .pv-dashboard-banner-stat:last-child { border-bottom: 0; }
  .pv-dashboard-banner-stat:nth-child(2) { border-right: 0; }
  .pv-dashboard-banner-stat:nth-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.11); }
}

/* ======================================================================
   PLUNA Portal 1.0.5 · dashboard balance/VATSIM + strict route actions
   ====================================================================== */

/* Slightly wider than 1.0.4, still deliberately contained. */
.pv-dashboard-shell { max-width: 1480px; }

/* Five compact values now live inside the masthead. */
.pv-dashboard-banner-stats { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.pv-dashboard-banner-top { min-height: 72px; }

/* The PLUNA gold used by buttons is exactly the same variable as the
   signature line. This avoids Bootstrap warning yellow drifting away. */
.btn-warning,
.btn-accent {
  --bs-btn-bg: var(--portal-accent) !important;
  --bs-btn-border-color: var(--portal-accent) !important;
  --bs-btn-color: var(--portal-accent-button-text) !important;
  background-color: var(--portal-accent) !important;
  border-color: var(--portal-accent) !important;
  color: var(--portal-accent-button-text) !important;
}
[data-bs-theme="dark"] .btn-primary,
[data-bs-theme="dark"] .btn-info,
[data-bs-theme="dark"] .btn-warning,
[data-bs-theme="dark"] .btn-accent {
  --bs-btn-bg: var(--portal-accent) !important;
  --bs-btn-border-color: var(--portal-accent) !important;
  --bs-btn-color: var(--portal-accent-button-text) !important;
  background-color: var(--portal-accent) !important;
  border-color: var(--portal-accent) !important;
  color: var(--portal-accent-button-text) !important;
}
[data-bs-theme="dark"] .btn-outline-primary,
[data-bs-theme="dark"] .btn-outline-info {
  --bs-btn-bg: transparent !important;
  --bs-btn-border-color: var(--portal-accent) !important;
  --bs-btn-color: var(--portal-accent) !important;
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-accent) 14%, transparent) !important;
  --bs-btn-hover-border-color: var(--portal-accent) !important;
  --bs-btn-hover-color: var(--portal-accent) !important;
  background-color: transparent !important;
  border-color: var(--portal-accent) !important;
  color: var(--portal-accent) !important;
}
[data-bs-theme="dark"] .btn-outline-primary:hover,
[data-bs-theme="dark"] .btn-outline-info:hover {
  background-color: color-mix(in srgb, var(--portal-accent) 14%, transparent) !important;
  border-color: var(--portal-accent) !important;
  color: var(--portal-accent) !important;
}

/* Optional per-slide caption: intentionally restrained and away from the
   main landing headline/actions. */
.pv-carousel-slide-text {
  position: absolute;
  z-index: 4;
  right: max(34px, calc((100vw - 1410px)/2));
  bottom: 54px;
  max-width: min(380px, 36vw);
  padding: 7px 10px 7px 12px;
  border-left: 3px solid var(--portal-accent);
  border-radius: 5px;
  color: rgba(255,255,255,.94);
  background: rgba(4,20,34,.56);
  box-shadow: 0 6px 18px rgba(0,0,0,.16);
  font-size: .84rem;
  font-weight: 500;
  line-height: 1.35;
  text-align: left;
  text-shadow: 0 1px 4px rgba(0,0,0,.25);
  backdrop-filter: blur(5px);
}

@media (max-width: 1199.98px) {
  .pv-dashboard-shell { max-width: 1380px; }
  .pv-dashboard-banner-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pv-dashboard-banner-stat { border-bottom: 1px solid rgba(255,255,255,.11); }
  .pv-dashboard-banner-stat:nth-child(3n) { border-right: 0; }
  .pv-dashboard-banner-stat:nth-last-child(-n+2) { border-bottom: 0; }
}
@media (max-width: 767.98px) {
  .pv-dashboard-banner-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pv-dashboard-banner-stat:nth-child(3n) { border-right: 1px solid rgba(255,255,255,.11); }
  .pv-dashboard-banner-stat:nth-child(even) { border-right: 0; }
  .pv-dashboard-banner-stat:nth-last-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.11); }
  .pv-dashboard-banner-stat:last-child { border-bottom: 0; border-right: 0; }
  .pv-carousel-slide-text {
    right: 28px;
    bottom: 118px;
    max-width: calc(100% - 56px);
    font-size: .78rem;
  }
}
@media (max-width: 575.98px) {
  .pv-dashboard-banner-stats { grid-template-columns: 1fr; }
  .pv-dashboard-banner-stat,
  .pv-dashboard-banner-stat:nth-child(even),
  .pv-dashboard-banner-stat:nth-child(3n) { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.11); }
  .pv-dashboard-banner-stat:last-child { border-bottom: 0; }
}

/* ======================================================================
   PLUNA Portal 1.0.6 · operational selectors, readable dark icons,
   dashboard account/VATSIM actions
   ====================================================================== */

/* Clickable masthead cells must keep exactly the same visual language as the
   passive cells; button reset avoids browser button styling. */
.pv-dashboard-banner-stat-button {
  width: 100%;
  margin: 0;
  border: 0;
  border-right: 1px solid rgba(255,255,255,.11);
  border-radius: 0;
  background: transparent;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.pv-dashboard-banner-stat-button:hover { background: rgba(255,255,255,.075); }
.pv-dashboard-banner-stat-button:focus-visible {
  outline: 2px solid var(--portal-accent);
  outline-offset: -3px;
}

/* Some installations retained a darker Mercargo-era icon preference. In dark
   PLUNA mode we lift only operational/navigation icons toward white so they
   remain visible without changing the configured hue everywhere else. */
[data-bs-theme="dark"] .portal-quick-links a > i:first-child,
[data-bs-theme="dark"] .portal-module-widget .card-header i,
[data-bs-theme="dark"] .mc-panel-head > h3 > i,
[data-bs-theme="dark"] .mc-section-label > i,
[data-bs-theme="dark"] .mc-dashboard-map-button .mc-stat-icon > i {
  color: #9fd0f2 !important;
  color: color-mix(in srgb, var(--portal-icon-current) 55%, #ffffff 45%) !important;
  opacity: 1 !important;
}
[data-bs-theme="dark"] .portal-quick-links a:hover > i:first-child {
  color: var(--portal-accent) !important;
}

/* DisposableBasic TransferAircraft is Select2. Keep one selector engine only
   and let its popup escape the dashboard card instead of being clipped. */
.portal-dashboard-transfer .select2-container { width: 100% !important; max-width: 100%; }
.portal-dashboard-transfer .select2-selection--single { width: 100% !important; }
.select2-container--open { z-index: 2200 !important; }
.select2-container--open .select2-dropdown {
  max-width: min(760px, calc(100vw - 24px));
  box-shadow: 0 12px 32px rgba(0,0,0,.24);
}
.select2-container--open .select2-results__options { max-height: 320px !important; }
.select2-container--open .select2-results__option {
  white-space: normal;
  line-height: 1.25;
  padding: 8px 10px;
}

#portalDashboardBalanceModal .mc-balance-pagination .page-link { cursor: pointer; }
#portalDashboardBalanceModal .mc-balance-pagination .page-item.disabled .page-link { cursor: default; }


/* ======================================================================
   PLUNA Portal 1.0.7 · dark contrast pass + tour/airline refinements
   ====================================================================== */

/* Dark mode is contrast-first. Third-party modules often carry Bootstrap
   contextual backgrounds/text colors that were designed for a light page. */
[data-bs-theme="dark"] .portal-content,
[data-bs-theme="dark"] .portal-content .card,
[data-bs-theme="dark"] .portal-content .card-body,
[data-bs-theme="dark"] .portal-content .card-footer,
[data-bs-theme="dark"] .portal-content .mc-panel,
[data-bs-theme="dark"] .portal-content .modal-content,
[data-bs-theme="dark"] .portal-content .offcanvas {
  color: var(--portal-dark-text) !important;
}
[data-bs-theme="dark"] .portal-content .text-muted,
[data-bs-theme="dark"] .portal-content .text-body-secondary,
[data-bs-theme="dark"] .portal-content .description,
[data-bs-theme="dark"] .portal-content small:not(.badge):not(.text-success):not(.text-danger):not(.text-warning) {
  color: color-mix(in srgb, var(--portal-dark-text) 78%, var(--portal-dark-muted)) !important;
}
[data-bs-theme="dark"] .portal-content .table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--portal-dark-text);
  --bs-table-border-color: var(--portal-dark-border);
  --bs-table-striped-color: var(--portal-dark-text);
  --bs-table-hover-color: var(--portal-dark-text);
  color: var(--portal-dark-text) !important;
}
[data-bs-theme="dark"] .portal-content .table > :not(caption) > * > * {
  color: var(--portal-dark-text) !important;
  border-color: var(--portal-dark-border) !important;
}
[data-bs-theme="dark"] .portal-content .table-secondary > *,
[data-bs-theme="dark"] .portal-content .table-light > *,
[data-bs-theme="dark"] .portal-content .table-primary > *,
[data-bs-theme="dark"] .portal-content .table-info > * {
  --bs-table-bg: transparent !important;
  --bs-table-color: var(--portal-dark-text) !important;
  --bs-table-striped-bg: var(--portal-dark-table-stripe) !important;
  --bs-table-striped-color: var(--portal-dark-text) !important;
  background: transparent !important;
  color: var(--portal-dark-text) !important;
}
[data-bs-theme="dark"] .portal-content .table-striped > tbody > tr:nth-of-type(odd) > * {
  background: var(--portal-dark-table-stripe) !important;
  color: var(--portal-dark-text) !important;
}
[data-bs-theme="dark"] .portal-content .card a:not(.btn),
[data-bs-theme="dark"] .portal-content table a:not(.btn) {
  color: color-mix(in srgb, var(--portal-dark-link) 88%, white) !important;
}
[data-bs-theme="dark"] .portal-content .card a:not(.btn):hover,
[data-bs-theme="dark"] .portal-content table a:not(.btn):hover {
  color: var(--portal-accent) !important;
}
[data-bs-theme="dark"] .portal-content .fas,
[data-bs-theme="dark"] .portal-content .far,
[data-bs-theme="dark"] .portal-content .fab,
[data-bs-theme="dark"] .portal-content .bi {
  color: currentColor;
}
[data-bs-theme="dark"] .portal-content .card-header > i,
[data-bs-theme="dark"] .portal-content .card-header h1 i,
[data-bs-theme="dark"] .portal-content .card-header h2 i,
[data-bs-theme="dark"] .portal-content .card-header h3 i,
[data-bs-theme="dark"] .portal-content .card-header h4 i,
[data-bs-theme="dark"] .portal-content .card-header h5 i,
[data-bs-theme="dark"] .portal-content .card-header h6 i {
  color: var(--portal-dark-text) !important;
  opacity: .92;
}
[data-bs-theme="dark"] .portal-content .form-floating > label,
[data-bs-theme="dark"] .portal-content label {
  color: color-mix(in srgb, var(--portal-dark-text) 78%, var(--portal-dark-muted)) !important;
}

/* Flight information pills must read as information, not disappear into the card. */
[data-bs-theme="dark"] .mc-flight-meta > span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  border: 1px solid color-mix(in srgb, var(--portal-dark-link) 28%, var(--portal-dark-border));
  border-radius: 999px;
  background: color-mix(in srgb, var(--portal-dark-badge-bg) 88%, transparent);
  color: var(--portal-dark-text) !important;
  font-weight: 600;
}
[data-bs-theme="dark"] .mc-flight-meta > span i { color: var(--portal-dark-link) !important; }
[data-bs-theme="dark"] .mc-flight-location-lock {
  color: var(--portal-dark-text) !important;
  border-color: color-mix(in srgb, var(--portal-accent) 40%, var(--portal-dark-border));
  background: color-mix(in srgb, var(--portal-accent) 10%, var(--portal-dark-surface));
}

/* Airline selector: visible above the airline-specific fleet/roster/report view. */
.mc-airline-switcher {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 11px 14px;
  border: 1px solid var(--portal-border-current);
  border-left: 3px solid var(--portal-accent);
  border-radius: var(--portal-radius);
  background: var(--portal-surface-current);
  color: var(--portal-text-current);
}
.mc-airline-switcher > div { min-width: 0; }
.mc-airline-switcher-label { display:block; color:var(--portal-muted-current); font-size:.7rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.mc-airline-switcher strong { display:block; color:var(--portal-text-current); margin-top:2px; }
.mc-airline-switcher .form-select { width:min(390px, 46vw); }
[data-bs-theme="dark"] .mc-airline-switcher,
[data-bs-theme="dark"] .mc-airline-switcher strong { color:var(--portal-dark-text) !important; }
@media (max-width: 767.98px) {
  .mc-airline-switcher { align-items:stretch; flex-direction:column; }
  .mc-airline-switcher .form-select { width:100%; }
}

/* Compact award information on the tour itself. */
.mc-tour-award-summary {
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 13px;
  border:1px solid var(--portal-border-current);
  border-left:3px solid var(--portal-accent);
  border-radius:var(--portal-radius);
  background:var(--portal-surface-current);
  color:var(--portal-text-current);
}
.mc-tour-award-summary-image {
  width:58px !important;
  height:58px !important;
  max-width:58px !important;
  max-height:58px !important;
  flex:0 0 58px;
  object-fit:contain;
}
.mc-tour-award-summary-copy { min-width:0; display:grid; gap:1px; }
.mc-tour-award-summary-kicker { color:var(--portal-accent); font-size:.68rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.mc-tour-award-summary-copy strong { color:var(--portal-heading-current); font-size:.96rem; }
.mc-tour-award-summary-copy small { color:var(--portal-muted-current); line-height:1.3; }
[data-bs-theme="dark"] .mc-tour-award-summary { color:var(--portal-dark-text); }
[data-bs-theme="dark"] .mc-tour-award-summary-copy strong { color:var(--portal-dark-text); }

/* Tour map: one close control only; map surface should not inherit dark/CARTO styling. */
.mc-map-modal .modal-footer { justify-content:flex-end; min-height:30px; }
.mc-tour-map .leaflet-container { background:#d8e0e6; }

/* DisposableBasic Scenery uses table-secondary in its own template. Never let
   Bootstrap turn that into a light rectangle inside a dark PLUNA page. */
[data-bs-theme="dark"] .portal-content .table.table-secondary,
[data-bs-theme="dark"] .portal-content .table.table-secondary tbody,
[data-bs-theme="dark"] .portal-content .table.table-secondary tr,
[data-bs-theme="dark"] .portal-content .table.table-secondary td,
[data-bs-theme="dark"] .portal-content .table.table-secondary th {
  background: var(--portal-dark-card-bg) !important;
  color: var(--portal-dark-text) !important;
}

/* PLUNA Portal 1.0.8 · Tours: award visibility + robust leg vectors */
.mc-tour-award-summary-placeholder,
.mc-tour-award-image-placeholder,
.mc-tour-card-award-icon {
  display:grid;
  place-items:center;
  color:var(--portal-accent);
  background:color-mix(in srgb, var(--portal-accent) 12%, var(--portal-surface-current));
  border:1px solid color-mix(in srgb, var(--portal-accent) 32%, var(--portal-border-current));
}
.mc-tour-award-summary-placeholder {
  width:48px;
  height:48px;
  flex:0 0 48px;
  border-radius:12px;
  font-size:1.15rem;
}
.mc-tour-award-image-placeholder {
  min-width:72px;
  height:72px;
  border-radius:12px;
  font-size:1.4rem;
}
.mc-tour-card-award {
  display:flex;
  align-items:center;
  gap:9px;
  margin-top:10px;
  padding:8px 10px;
  border-radius:10px;
  border:1px solid color-mix(in srgb, var(--portal-accent) 28%, var(--portal-border-current));
  background:color-mix(in srgb, var(--portal-accent) 7%, var(--portal-surface-current));
}
.mc-tour-card-award img,
.mc-tour-card-award-icon {
  width:38px;
  height:38px;
  flex:0 0 38px;
  object-fit:contain;
  border-radius:8px;
}
.mc-tour-card-award small,
.mc-tour-card-award strong { display:block; }
.mc-tour-card-award small {
  color:var(--portal-accent);
  font-size:.65rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.mc-tour-card-award strong {
  color:var(--portal-heading-current);
  font-size:.86rem;
  line-height:1.15;
}
.mc-map-modal .leaflet-overlay-pane .mc-tour-leg-line {
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.55));
  pointer-events:stroke;
}
[data-bs-theme="dark"] .mc-tour-card-award strong,
[data-bs-theme="dark"] .mc-tour-award-summary-copy strong { color:var(--portal-dark-text); }

/* PLUNA Portal 1.0.9 · PIREP runway touchdown marker */
.mc-rwy-touchdown-halo{fill:rgba(255,204,0,.18);stroke:rgba(255,204,0,.42);stroke-width:2}
.mc-rwy-touchdown-cross{stroke:#ffcc00;stroke-width:3;stroke-linecap:round;filter:drop-shadow(0 1px 1px rgba(0,0,0,.8))}
.mc-rwy-touchdown-marker .mc-rwy-touchdown-ring{fill:rgba(255,204,0,.25)!important;stroke:#ffcc00!important;stroke-width:4!important}
.mc-rwy-touchdown-marker .mc-rwy-touchdown-dot{fill:#ffcc00!important;stroke:#07121e!important;stroke-width:2.5!important}
.mc-rwy-touchdown-label{fill:#ffcc00!important;paint-order:stroke;stroke:rgba(7,18,30,.9);stroke-width:3px;stroke-linejoin:round}


/* PLUNA Portal 1.0.10 · dark accordion contrast + runway data fallback UI */
[data-bs-theme="dark"] .mc-report-accordion .accordion-button,
[data-bs-theme="dark"] .mc-report-accordion .accordion-button:not(.collapsed),
[data-bs-theme="dark"] .mc-report-accordion .accordion-button i,
[data-bs-theme="dark"] .mc-report-accordion .accordion-header,
[data-bs-theme="dark"] .mc-report-accordion .accordion-header * {
  color: var(--portal-dark-text) !important;
}
[data-bs-theme="dark"] .mc-report-accordion .accordion-button:not(.collapsed) {
  background: color-mix(in srgb, var(--portal-dark-surface) 90%, var(--portal-accent) 10%) !important;
}
[data-bs-theme="dark"] .mc-report-accordion .accordion-button:focus { box-shadow:none !important; }
[data-bs-theme="dark"] .mc-report-accordion .accordion-button::after { filter:brightness(0) invert(1) !important; opacity:.85; }

/* ======================================================================
   PLUNA Portal 1.0.14 · independent internal-header artwork
   ====================================================================== */
.portal-dashboard-banner,
.pv-dashboard-overview .portal-dashboard-banner.pv-dashboard-banner-integrated {
  background:
    linear-gradient(90deg, rgba(var(--portal-primary-rgb), var(--portal-hero-overlay-opacity)), rgba(var(--portal-primary-rgb), calc(var(--portal-hero-overlay-opacity) * .70))),
    var(--portal-header-bg-image, var(--portal-bg-image)) center 54% / cover no-repeat;
}

.mc-profile-hero,
.mc-pirep-hero,
.mc-airport-hero.mc-page-title {
  position: relative;
  overflow: hidden;
  background:
    linear-gradient(90deg, rgba(var(--portal-primary-rgb), var(--portal-hero-overlay-opacity)), rgba(var(--portal-primary-rgb), calc(var(--portal-hero-overlay-opacity) * .62))),
    var(--portal-header-bg-image, var(--portal-bg-image)) center / cover no-repeat;
  color: var(--portal-hero-text);
  border-color: rgba(255,255,255,.16);
  border-bottom: 3px solid var(--portal-accent);
}

.mc-profile-hero { border-top: 0; }
.mc-profile-copy h1,
.mc-profile-copy p,
.mc-profile-meta,
.mc-profile-rank small,
.mc-profile-rank strong,
.mc-pirep-hero .mc-route-name,
.mc-pirep-hero .small,
.mc-airport-hero.mc-page-title h1,
.mc-airport-hero.mc-page-title p {
  color: var(--portal-hero-text) !important;
}
.mc-profile-copy p,
.mc-profile-meta,
.mc-profile-rank small,
.mc-pirep-hero .mc-route-name,
.mc-pirep-hero .small,
.mc-airport-hero.mc-page-title p { opacity: .82; }
.mc-profile-avatar { border-color: rgba(255,255,255,.34); box-shadow: 0 5px 20px rgba(0,0,0,.18); }
.mc-airport-hero.mc-page-title { padding: 18px 18px 16px 24px; border-radius: calc(var(--portal-radius) + 2px); }
.mc-airport-hero.mc-page-title::before { background: var(--portal-accent); left: 10px; top: 13px; bottom: 13px; }

/* Tour enrollment is intentionally compact: it marks intent without taking over the Tour card. */
.mc-tour-enrollment-footer {
  min-height: 52px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 9px 12px;
  background: color-mix(in srgb, var(--portal-surface-current) 94%, var(--portal-accent) 6%);
  border-top: 1px solid var(--portal-border-current);
  color: var(--portal-text-current);
}
.mc-tour-enrollment-footer > small { color: var(--portal-muted-current); max-width: 72%; line-height: 1.25; }
.mc-tour-enrollment-state { min-width: 0; display: grid; gap: 3px; }
.mc-tour-enrollment-state small { color: var(--portal-muted-current); line-height: 1.2; }
@media (max-width: 575.98px) {
  .mc-tour-enrollment-footer { align-items: stretch; flex-direction: column; }
  .mc-tour-enrollment-footer > small { max-width: none; }
  .mc-tour-enrollment-footer form .btn { width: 100%; }
}

/* PLUNA Portal 1.0.14 · persistent top-bar identity */
.portal-header-brand { min-width: 118px; }
.portal-header-brand img { max-height: 30px; max-width: 142px; width: auto; object-fit: contain; }
@media (max-width: 991.98px) {
  .portal-header-brand { min-width: 0; }
  .portal-header-brand img { max-height: 28px; max-width: 124px; }
}

/* FPE score movements inside the PIREP flight log */
.mc-fpe-score-summary td { border-top: 1px solid rgba(var(--portal-accent-rgb), .38); border-bottom: 1px solid rgba(var(--portal-accent-rgb), .22); }
[data-bs-theme="dark"] .mc-fpe-score-summary td { background: rgba(var(--portal-accent-rgb), .08) !important; color: var(--portal-dark-text) !important; }
[data-bs-theme="dark"] .mc-fpe-score-event td { color: var(--portal-dark-text) !important; }
[data-bs-theme="dark"] .mc-fpe-score-event .text-muted,
[data-bs-theme="dark"] .mc-fpe-score-summary .text-muted { color: var(--portal-dark-muted) !important; }


/* ======================================================================
   PLUNA Portal 1.0.19 · landing text polish + identical guest/auth frame
   ====================================================================== */
/* Guest and authenticated home use the exact same page frame. Earlier
   public rules removed the desktop max-width, making the guest carousel
   slightly wider on large screens. */
.portal-public .portal-content,
.portal-auth .portal-content {
  max-width: 1680px;
}

/* Per-slide text is a photographic caption, not a badge/card. */
.pv-carousel-slide-text {
  right: clamp(28px, 3.2vw, 58px);
  bottom: 48px;
  max-width: min(460px, 40vw);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  color: rgba(255,255,255,.94);
  font-size: .9rem;
  font-weight: 600;
  line-height: 1.4;
  text-align: right;
  text-shadow: 0 2px 8px rgba(0,0,0,.85);
}
.pv-carousel-slide-text::after {
  content: "";
  display: block;
  width: 30px;
  height: 2px;
  margin: 7px 0 0 auto;
  border-radius: 99px;
  background: var(--portal-accent);
}
@media (max-width: 767.98px) {
  .pv-carousel-slide-text {
    right: 20px;
    bottom: 112px;
    max-width: calc(100% - 40px);
    font-size: .8rem;
  }
}


/* ======================================================================
   PLUNA Portal 1.0.20 · dashboard dark contrast + module readability
   ====================================================================== */
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget .card,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget .card-body,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget .card-footer,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget p,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget td,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget th,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget span:not(.badge):not(.progress-bar) {
  color: var(--portal-dark-text) !important;
}
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget a:not(.btn),
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget table a:not(.btn),
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget .card-footer a:not(.btn) {
  color: #8fcaff !important;
}
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget a:not(.btn):hover,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget table a:not(.btn):hover,
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget .card-footer a:not(.btn):hover {
  color: var(--portal-accent) !important;
}
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget .table > :not(caption) > * > * {
  color: var(--portal-dark-text) !important;
}
[data-bs-theme="dark"] .pv-dashboard-shell .portal-module-widget .table-striped > tbody > tr:nth-of-type(odd) > * {
  color: var(--portal-dark-text) !important;
}

/* PLUNA Portal 1.0.26 · live departure countdown in flight cards */
.mc-flight-departure-countdown{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  padding:.34rem .58rem;
  border-radius:999px;
  border:1px solid var(--portal-border-current);
  background:color-mix(in srgb,var(--portal-surface-current) 86%,var(--portal-primary) 14%);
  color:var(--portal-text-current);
  font-size:.78rem;
  font-weight:750;
  line-height:1;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.mc-flight-countdown-soon{
  border-color:color-mix(in srgb,var(--portal-accent) 72%,var(--portal-border-current));
  background:color-mix(in srgb,var(--portal-surface-current) 76%,var(--portal-accent) 24%);
  color:var(--portal-text-current);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--portal-accent) 10%,transparent);
}
.mc-flight-countdown-imminent{
  background:var(--portal-accent);
  border-color:var(--portal-accent);
  color:#101722;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--portal-accent) 16%,transparent);
}
[data-bs-theme="dark"] .mc-flight-countdown-soon{
  color:var(--portal-dark-text)!important;
}
[data-bs-theme="dark"] .mc-flight-countdown-imminent{
  color:#101722!important;
}

/* Flight cards stay visually neutral; only the countdown carries urgency. */
.mc-flight-card{
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
  transform-origin:center center;
  will-change:transform;
}
.mc-flight-card:hover{
  transform:scale(1.006);
}
@media (prefers-reduced-motion: reduce){
  .mc-flight-card{transition:none;will-change:auto}
  .mc-flight-card:hover{transform:none}
}
@media(max-width:575.98px){
  .mc-flight-departure-countdown{font-size:.72rem;padding:.31rem .48rem}
}


/* PLUNA Portal 1.0.27 · planning action */
.mc-flight-actions .mc-flight-plan-action{
  border-color:rgba(255,255,255,.16)!important;
  box-shadow:0 0 0 1px rgba(25,135,84,.14);
  font-weight:700;
}
.mc-flight-actions .mc-flight-plan-action:hover,
.mc-flight-actions .mc-flight-plan-action:focus{
  filter:brightness(1.08);
}

/* Aircraft maintenance history */
.mc-maint-history { margin-top: 22px; overflow: hidden; }
.mc-maint-history .mc-panel-head h3 { display:flex; align-items:center; gap:9px; }
.mc-maint-status { display:inline-flex; align-items:center; min-height:28px; padding:4px 10px; border-radius:999px; border:1px solid var(--portal-border-current); font-size:.76rem; font-weight:800; letter-spacing:.01em; }
.mc-maint-status.is-available { color:#17834a; background:rgba(23,131,74,.08); border-color:rgba(23,131,74,.25); }
.mc-maint-status.is-maintenance { color:#b4670c; background:rgba(212,126,22,.10); border-color:rgba(212,126,22,.30); }
.mc-maint-status.is-reserved { color:#7a5b00; background:rgba(255,194,0,.12); border-color:rgba(190,143,0,.30); }
[data-bs-theme="dark"] .mc-maint-status.is-available { color:#72d99f; background:rgba(80,190,126,.12); border-color:rgba(114,217,159,.28); }
[data-bs-theme="dark"] .mc-maint-status.is-maintenance { color:#ffc068; background:rgba(255,175,75,.12); border-color:rgba(255,192,104,.28); }
[data-bs-theme="dark"] .mc-maint-status.is-reserved { color:#ffda6a; background:rgba(255,194,0,.12); border-color:rgba(255,218,106,.30); }
.mc-aircraft-booking-note { display:flex; align-items:flex-start; gap:.5rem; margin-top:.55rem; padding:.55rem .7rem; border:1px solid var(--portal-border-current); border-radius:.65rem; background:rgba(255,194,0,.07); color:var(--portal-text-current); font-size:.78rem; line-height:1.35; }
.mc-aircraft-booking-note i { flex:0 0 auto; margin-top:.05rem; color:#8a6800; }
[data-bs-theme="dark"] .mc-aircraft-booking-note { background:rgba(255,194,0,.08); }
[data-bs-theme="dark"] .mc-aircraft-booking-note i { color:#ffda6a; }
.mc-maint-privacy-note { display:flex; align-items:flex-start; gap:10px; padding:11px 13px; margin-bottom:16px; border:1px solid var(--portal-border-current); border-radius:calc(var(--portal-radius) * .72); background:color-mix(in srgb, var(--portal-primary) 5%, var(--portal-surface-current)); color:var(--portal-muted-current); font-size:.86rem; line-height:1.45; }
.mc-maint-privacy-note i { margin-top:2px; color: var(--portal-primary-ink-current); }
.mc-maint-summary-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:20px; }
.mc-maint-summary-card { min-width:0; padding:14px; border:1px solid var(--portal-border-current); border-radius:var(--portal-radius); background:var(--portal-surface-current); }
.mc-maint-kicker { display:block; margin-bottom:7px; color:var(--portal-muted-current); font-size:.74rem; font-weight:800; text-transform:uppercase; letter-spacing:.055em; }
.mc-maint-summary-card > strong { display:block; color:var(--portal-text-current); font-size:1.02rem; line-height:1.28; }
.mc-maint-summary-card > small { display:block; margin-top:5px; color:var(--portal-muted-current); font-size:.78rem; line-height:1.4; }
.mc-maint-progress { height:7px; margin-top:10px; overflow:hidden; border-radius:999px; background:color-mix(in srgb, var(--portal-border-current) 70%, transparent); }
.mc-maint-progress > span { display:block; height:100%; border-radius:inherit; background:var(--portal-primary); }
.mc-maint-section-title { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; margin:6px 0 11px; }
.mc-maint-section-title > div > strong { display:block; color:var(--portal-text-current); font-size:.96rem; }
.mc-maint-section-title > div > span { display:block; margin-top:3px; color:var(--portal-muted-current); font-size:.79rem; line-height:1.4; }
.mc-maint-history-heading { margin-top:22px; padding-top:18px; border-top:1px solid var(--portal-border-current); }
.mc-maint-count { flex:0 0 auto; color:var(--portal-muted-current); font-size:.76rem; font-weight:800; white-space:nowrap; }
.mc-maint-check-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.mc-maint-check-card { min-width:0; padding:13px 14px; border:1px solid var(--portal-border-current); border-radius:var(--portal-radius); background:color-mix(in srgb, var(--portal-surface-current) 96%, var(--portal-primary)); }
.mc-maint-check-card.is-due { border-color:rgba(205,77,77,.42); background:rgba(205,77,77,.055); }
.mc-maint-check-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding-bottom:9px; margin-bottom:9px; border-bottom:1px solid var(--portal-border-current); }
.mc-maint-check-head strong { color:var(--portal-text-current); }
.mc-maint-check-head span { color:var(--portal-muted-current); font-size:.72rem; font-weight:800; text-align:right; }
.mc-maint-check-card.is-due .mc-maint-check-head span { color:#c34f4f; }
[data-bs-theme="dark"] .mc-maint-check-card.is-due .mc-maint-check-head span { color:#ff8585; }
.mc-maint-check-card dl { margin:0; display:grid; gap:7px; }
.mc-maint-check-card dl > div { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.mc-maint-check-card dt { color:var(--portal-muted-current); font-size:.75rem; font-weight:600; }
.mc-maint-check-card dd { margin:0; color:var(--portal-text-current); font-size:.76rem; font-weight:800; text-align:right; }
.mc-maint-table-wrap { border:1px solid var(--portal-border-current); border-radius:var(--portal-radius); overflow:auto; }
.mc-maint-table { margin:0; min-width:820px; color:var(--portal-text-current); }
.mc-maint-table > :not(caption) > * > * { background:transparent; color:inherit; border-color:var(--portal-border-current); vertical-align:middle; }
.mc-maint-table thead th { background:color-mix(in srgb, var(--portal-surface-current) 92%, var(--portal-primary)); color:var(--portal-muted-current); font-size:.72rem; text-transform:uppercase; letter-spacing:.045em; white-space:nowrap; }
.mc-maint-table tbody td { font-size:.82rem; }
.mc-maint-table tbody tr:last-child td { border-bottom:0; }
.mc-maint-row-note { display:block; margin-top:3px; color:var(--portal-muted-current); font-weight:400; }
.mc-maint-state { display:inline-flex; align-items:center; padding:3px 8px; border:1px solid var(--portal-border-current); border-radius:999px; color:var(--portal-text-current); background:var(--portal-surface-current); font-size:.72rem; font-weight:800; white-space:nowrap; }
.mc-maint-empty { display:flex; align-items:center; gap:12px; padding:18px; border:1px dashed var(--portal-border-current); border-radius:var(--portal-radius); color:var(--portal-muted-current); }
.mc-maint-empty > i { color: var(--portal-primary-ink-current); font-size:1.3rem; }
.mc-maint-empty strong { display:block; color:var(--portal-text-current); }
.mc-maint-empty span { display:block; margin-top:2px; font-size:.8rem; }
@media (max-width: 900px) {
  .mc-maint-summary-grid, .mc-maint-check-grid { grid-template-columns:1fr; }
  .mc-maint-section-title { align-items:flex-start; flex-direction:column; gap:7px; }
}

/* PlunaPortal 1.0.33 · ficha de aeronave reorganizada */
.mc-aircraft-detail-page { width:100%; }
.mc-aircraft-overview { margin-bottom:1rem; }
.mc-aircraft-overview > [class*="col-"] { min-width:0; }
.mc-aircraft-detail-page .card { overflow:hidden; }
.mc-aircraft-detail-page .card-body.table-responsive,
.mc-aircraft-detail-page .card-body.overflow-auto { max-width:100%; }
.mc-aircraft-stats-card table th { width:62%; }
.mc-aircraft-stats-card table td { white-space:nowrap; }
.mc-aircraft-full-card { width:100%; }
.mc-aircraft-reports-card .table,
.mc-aircraft-maintenance-card .table { margin-bottom:0; }
.mc-aircraft-detail-page > .mc-maint-history { margin-top:0; }
.mc-aircraft-secondary { margin-bottom:.25rem; }
.mc-maint-table-detailed { min-width:1220px; }
.mc-maint-kind { display:inline-flex; align-items:center; min-height:25px; padding:3px 8px; border:1px solid var(--portal-border-current); border-radius:999px; color:var(--portal-muted-current); background:color-mix(in srgb, var(--portal-surface-current) 94%, var(--portal-primary)); font-size:.7rem; font-weight:800; white-space:nowrap; }
.mc-maint-table-detailed .mc-maint-detail-cell { min-width:220px; max-width:340px; white-space:normal; line-height:1.35; color:var(--portal-muted-current); }
@media (max-width: 991.98px) {
  .mc-aircraft-overview { gap:.2rem; }
  .mc-aircraft-stats-card { margin-top:.35rem; }
}

/* ======================================================================
   PLUNA Portal 1.0.39 · flight detail composition + report width
   ====================================================================== */

/* The all-reports ledger needs a little more horizontal room than the normal
   portal frame so the operational columns do not collapse into each other. */
.pv-reports-page {
  position: relative;
  left: 50%;
  width: min(96vw, 1840px);
  max-width: none;
  transform: translateX(-50%);
}
.pv-reports-table { min-width: 1440px; }

/* Flight detail: one visual hierarchy instead of a narrow 8/4 Bootstrap split. */
.pv-flight-detail-page {
  position: relative;
  left: 50%;
  width: min(95vw, 1680px);
  max-width: none;
  display: grid;
  gap: 16px;
  transform: translateX(-50%);
}
.pv-flight-detail-hero {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--portal-border-current);
  border-radius: calc(var(--portal-radius) + 4px);
  background:
    linear-gradient(115deg, rgba(var(--portal-primary-rgb), .11), transparent 58%),
    var(--portal-surface-current);
  box-shadow: var(--portal-shadow-sm);
}
.pv-flight-detail-hero::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 5px;
  background: var(--portal-accent);
}
.pv-flight-detail-top {
  min-height: 84px;
  padding: 18px 22px 13px 25px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 22px;
}
.pv-flight-detail-titleline {
  margin-top: 3px;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.pv-flight-detail-titleline h1 {
  margin: 0;
  color: var(--portal-heading-current);
  font-size: clamp(1.75rem, 2.25vw, 2.35rem);
  line-height: 1;
  letter-spacing: -.035em;
}
.pv-flight-type {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 4px 9px;
  border: 1px solid var(--portal-border-current);
  border-radius: 999px;
  background: rgba(var(--portal-primary-rgb), .055);
  color: var(--portal-muted-current);
  font-size: .74rem;
  font-weight: 750;
}
.pv-flight-route-strip {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(145px, .42fr) minmax(0, 1fr);
  gap: 20px;
  align-items: center;
  padding: 17px 24px 19px;
  border-top: 1px solid var(--portal-border-current);
  border-bottom: 1px solid var(--portal-border-current);
  background: rgba(var(--portal-primary-rgb), .025);
}
.pv-flight-airport { min-width: 0; }
.pv-flight-airport-destination { text-align: right; }
.pv-flight-airport-code {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: clamp(1.55rem, 2vw, 2rem);
  font-weight: 850;
  line-height: 1;
}
.pv-flight-airport-destination .pv-flight-airport-code { justify-content: flex-end; }
.pv-flight-airport-code a { color: var(--portal-text-current); text-decoration: none; }
.pv-flight-airport-code a:hover { color: var(--portal-link-hover-current); }
.pv-flight-airport-name {
  margin-top: 6px;
  min-height: 1.2em;
  overflow: hidden;
  color: var(--portal-muted-current);
  font-size: .82rem;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pv-flight-airport time {
  display: block;
  margin-top: 9px;
  color: var(--portal-text-current);
  font-size: 1rem;
  font-weight: 800;
}
.pv-flight-route-bridge {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: var(--portal-primary-ink-current);
}
[data-bs-theme="dark"] .pv-flight-route-bridge { color: var(--portal-accent); }
.pv-flight-route-bridge span {
  height: 1px;
  flex: 1 1 auto;
  background: var(--portal-border-current);
}
.pv-flight-route-bridge i {
  flex: 0 0 auto;
  transform: rotate(90deg);
  font-size: 1.05rem;
}
.pv-flight-facts {
  display: grid;
  grid-template-columns: minmax(125px, .8fr) minmax(125px, .8fr) minmax(300px, 2fr) minmax(125px, .8fr);
}
.pv-flight-facts > div {
  min-width: 0;
  min-height: 72px;
  padding: 13px 16px;
  border-right: 1px solid var(--portal-border-current);
}
.pv-flight-facts > div:last-child { border-right: 0; }
.pv-flight-facts small,
.pv-flight-route-meta small,
.pv-flight-history-stats small {
  display: block;
  margin-bottom: 4px;
  color: var(--portal-muted-current);
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .045em;
}
.pv-flight-facts strong {
  display: block;
  overflow-wrap: anywhere;
  color: var(--portal-text-current);
  font-size: .93rem;
  font-weight: 800;
  line-height: 1.28;
}

.pv-flight-primary-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(360px, .72fr);
  gap: 16px;
  align-items: start;
}
.pv-flight-detail-rail {
  min-width: 0;
  display: grid;
  gap: 16px;
}
.pv-flight-map-panel,
.pv-flight-route-panel,
.pv-flight-weather-panel,
.pv-flight-history-panel,
.pv-flight-notes-panel { margin: 0; }
.pv-flight-map-panel { overflow: hidden; }
.pv-flight-map-body { overflow: hidden; }
.pv-flight-map-body > .row {
  --bs-gutter-x: 0;
  margin: 0;
}
.pv-flight-map-body > .row > .col-12 { padding: 0; }
.pv-flight-map-body .box-body { padding: 0; }
.pv-flight-map-body .mc-map-stage {
  height: min(58vh, 640px) !important;
  min-height: 480px !important;
  border: 0;
  border-radius: 0;
}

.pv-flight-route-plan {
  min-height: 76px;
  padding: 13px 14px;
  border: 1px solid var(--portal-border-current);
  border-radius: var(--portal-radius);
  background: rgba(var(--portal-primary-rgb), .035);
  color: var(--portal-text-current);
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  font-size: .83rem;
  font-weight: 700;
  line-height: 1.5;
  overflow-wrap: anywhere;
}
.pv-flight-route-meta {
  margin-top: 10px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.pv-flight-route-meta > div {
  min-width: 0;
  padding: 10px 11px;
  border: 1px solid var(--portal-border-current);
  border-radius: var(--portal-radius);
  background: rgba(var(--portal-primary-rgb), .022);
}
.pv-flight-route-meta strong {
  display: block;
  overflow-wrap: anywhere;
  color: var(--portal-text-current);
  font-size: .9rem;
  font-weight: 800;
}

.pv-flight-weather-panel .mc-panel-body { padding-top: 12px; }
.pv-flight-weather-tabs {
  gap: 4px;
  border-bottom-color: var(--portal-border-current);
}
.pv-flight-weather-tabs .nav-link {
  padding: .45rem .7rem;
  border-radius: 8px 8px 0 0;
  font-size: .76rem;
  font-weight: 800;
}
.pv-flight-weather-content { padding-top: 10px; }
.pv-flight-weather-widget > .card,
.pv-flight-weather-widget .card {
  margin: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
.pv-flight-weather-widget .card-header { padding-left: 0 !important; padding-right: 0 !important; background: transparent !important; }
.pv-flight-weather-widget .card-body { padding-left: 0 !important; padding-right: 0 !important; }

.pv-flight-history-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.pv-flight-history-stats > div {
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid var(--portal-border-current);
  border-radius: var(--portal-radius);
  background: rgba(var(--portal-primary-rgb), .03);
}
.pv-flight-history-stats strong {
  display: block;
  color: var(--portal-text-current);
  font-size: 1.18rem;
  font-weight: 850;
}
.pv-flight-history-columns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.pv-flight-history-block {
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--portal-border-current);
  border-radius: var(--portal-radius);
  background: rgba(var(--portal-primary-rgb), .018);
}
.pv-flight-history-block h4,
.pv-flight-recent-reports h4 {
  margin: 0 0 10px;
  color: var(--portal-text-current);
  font-size: .84rem;
  font-weight: 850;
}
.pv-flight-history-table thead th {
  color: var(--portal-muted-current);
  font-size: .68rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .035em;
  white-space: nowrap;
}
.pv-flight-history-table td,
.pv-flight-history-table th { padding: .56rem .5rem; }
.pv-flight-recent-reports {
  margin-top: 16px;
  padding-top: 15px;
  border-top: 1px solid var(--portal-border-current);
}

@media (max-width: 1199.98px) {
  .pv-flight-primary-grid { grid-template-columns: minmax(0, 1.45fr) minmax(330px, .8fr); }
  .pv-flight-map-body .mc-map-stage { min-height: 430px !important; }
}
@media (max-width: 991.98px) {
  .pv-reports-page,
  .pv-flight-detail-page {
    position: static;
    left: auto;
    width: 100%;
    transform: none;
  }
  .pv-flight-primary-grid { grid-template-columns: 1fr; }
  .pv-flight-detail-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pv-flight-map-body .mc-map-stage { height: 52vh !important; min-height: 390px !important; }
}
@media (max-width: 767.98px) {
  .pv-flight-detail-top { padding: 16px 17px 12px 20px; flex-direction: column; }
  .pv-flight-detail-top .btn { width: 100%; }
  .pv-flight-route-strip { grid-template-columns: minmax(0, 1fr) 68px minmax(0, 1fr); gap: 8px; padding: 15px 14px; }
  .pv-flight-route-bridge { gap: 4px; }
  .pv-flight-airport-code { font-size: 1.3rem; }
  .pv-flight-airport-name { white-space: normal; }
  .pv-flight-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pv-flight-facts > div:nth-child(2) { border-right: 0; }
  .pv-flight-facts > div:nth-child(-n+2) { border-bottom: 1px solid var(--portal-border-current); }
  .pv-flight-detail-rail,
  .pv-flight-history-columns { grid-template-columns: 1fr; }
  .pv-flight-history-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
  .pv-flight-route-strip { grid-template-columns: 1fr; }
  .pv-flight-airport-destination { text-align: left; }
  .pv-flight-airport-destination .pv-flight-airport-code { justify-content: flex-start; }
  .pv-flight-route-bridge { min-height: 26px; transform: rotate(90deg); }
  .pv-flight-facts { grid-template-columns: 1fr; }
  .pv-flight-facts > div,
  .pv-flight-facts > div:nth-child(2) { border-right: 0; border-bottom: 1px solid var(--portal-border-current); }
  .pv-flight-facts > div:last-child { border-bottom: 0; }
  .pv-flight-history-stats { grid-template-columns: 1fr; }
  .pv-flight-route-meta { grid-template-columns: 1fr; }
  .pv-flight-map-body .mc-map-stage { height: 48vh !important; min-height: 330px !important; }
}


/* ============================================================
   PlunaPortal 1.0.49 - contrast pass for light/dark modes
   Keeps the admin-configured palette, but strengthens separation
   between page, panels, inputs, tables and secondary text.
   ============================================================ */
:root {
  --portal-panel-contrast-current: color-mix(in srgb, var(--portal-panel-header-bg-current) 88%, var(--portal-text-current) 12%);
  --portal-subtle-surface-current: color-mix(in srgb, var(--portal-card-bg-current) 95%, var(--portal-text-current) 5%);
  --portal-hover-surface-current: color-mix(in srgb, var(--portal-card-bg-current) 91%, var(--portal-primary) 9%);
}
[data-bs-theme="dark"] {
  --portal-panel-contrast-current: color-mix(in srgb, var(--portal-panel-header-bg-current) 86%, var(--portal-text-current) 14%);
  --portal-subtle-surface-current: color-mix(in srgb, var(--portal-card-bg-current) 93%, var(--portal-text-current) 7%);
  --portal-hover-surface-current: color-mix(in srgb, var(--portal-card-bg-current) 88%, var(--portal-accent) 12%);
}

/* Main panels: the edge must remain visible even when the selected palette
   uses close page/surface colours. */
.card,
.mc-panel,
.mc-stat-card,
.mc-flight-card,
.mc-detail-item,
.mc-airport-stat,
.mc-airport-info-grid > div,
.mc-dashboard-map-button,
.mc-maint-check-card,
.pv-flight-history-block,
.pv-flight-route-meta > div,
.pv-flight-history-stats > div {
  border-color: var(--portal-border-current) !important;
}

.card-header,
.mc-panel-head {
  background: var(--portal-panel-contrast-current) !important;
  border-bottom-color: var(--portal-border-current) !important;
}
.card-footer {
  background: var(--portal-subtle-surface-current);
  border-top-color: var(--portal-border-current);
}

/* Secondary copy was visually too faint in both themes. */
.text-muted,
.text-body-secondary,
.description,
.mc-section-label,
.mc-stat-label,
.mc-page-title p,
.mc-dashboard-head p,
.mc-flight-airport span,
.mc-flight-meta,
.mc-airport-info-title span,
.mc-airport-detail-list span,
.mc-blackbox-stats small,
.mc-blackbox-event,
.mc-profile-copy p,
.mc-profile-meta,
.mc-detail-item small,
.mc-route-name {
  color: var(--portal-muted-current) !important;
  opacity: 1 !important;
}

/* Forms and selectors need a clear field boundary in light and dark mode. */
.form-control,
.form-select,
.ts-control,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple,
.input-group-text {
  border-color: var(--portal-border-current) !important;
}
.form-control::placeholder,
.ts-control input::placeholder {
  color: var(--portal-muted-current) !important;
  opacity: .9 !important;
}
.form-control:focus,
.form-select:focus,
.ts-control.focus,
.select2-container--focus .select2-selection {
  border-color: var(--portal-secondary) !important;
  box-shadow: 0 0 0 3px rgba(var(--portal-secondary-rgb), .22) !important;
}

/* Tables and list rows: stronger headers and separators prevent large blocks
   from becoming one flat surface. */
.table {
  --bs-table-border-color: var(--portal-border-current);
}
.table thead th {
  background: var(--portal-panel-contrast-current) !important;
  color: var(--portal-table-header-text-current) !important;
  border-bottom-color: var(--portal-border-current) !important;
}
.table > :not(caption) > * > * {
  border-bottom-color: var(--portal-border-current);
}
.table-hover > tbody > tr:hover > * {
  background: var(--portal-hover-surface-current) !important;
}
.list-group-item {
  border-color: var(--portal-border-current);
}
.list-group-item-action:hover,
.portal-quick-links a:hover {
  background: var(--portal-hover-surface-current);
}

/* Bootstrap accordions appear on several dashboard widgets. */
.accordion-item,
.accordion-button,
.accordion-body {
  color: var(--portal-card-text-current);
  border-color: var(--portal-border-current);
}
.accordion-item {
  background: var(--portal-card-bg-current);
}
.accordion-button {
  background: var(--portal-panel-contrast-current);
}
.accordion-button.collapsed {
  background: var(--portal-card-bg-current);
}
.accordion-button:not(.collapsed) {
  color: var(--portal-link-current);
  background: var(--portal-hover-surface-current);
  box-shadow: inset 0 -1px 0 var(--portal-border-current);
}
[data-bs-theme="dark"] .accordion-button::after {
  filter: brightness(0) invert(1);
  opacity: .9;
}

/* Module widgets (Disposable/other modules) must follow the same contrast
   rules instead of bringing pale Bootstrap defaults into the dashboard. */
.portal-module-widget .card,
.portal-module-widget .card-body,
.portal-module-widget .card-footer,
.portal-module-widget .widget,
.portal-module-widget .list-group-item {
  background-color: var(--portal-card-bg-current) !important;
  color: var(--portal-card-text-current) !important;
  border-color: var(--portal-border-current) !important;
}
.portal-module-widget .card-header {
  background: var(--portal-panel-contrast-current) !important;
  border-color: var(--portal-border-current) !important;
}
.portal-module-widget .table > :not(caption) > * > * {
  border-color: var(--portal-border-current) !important;
}
.portal-module-widget .bg-light,
.portal-module-widget .table-light > * > * {
  background: var(--portal-subtle-surface-current) !important;
  color: var(--portal-card-text-current) !important;
}

/* In dark mode neutral/secondary buttons need a visible outline; in light
   mode the same treatment avoids washed-out controls. */
.btn-outline-secondary {
  --bs-btn-color: var(--portal-text-current);
  --bs-btn-border-color: var(--portal-border-current);
  --bs-btn-hover-bg: var(--portal-hover-surface-current);
  --bs-btn-hover-border-color: var(--portal-secondary);
  --bs-btn-hover-color: var(--portal-text-current);
}
.btn-light {
  --bs-btn-bg: var(--portal-card-bg-current);
  --bs-btn-border-color: var(--portal-border-current);
  --bs-btn-color: var(--portal-text-current);
  --bs-btn-hover-bg: var(--portal-hover-surface-current);
  --bs-btn-hover-border-color: var(--portal-secondary);
  --bs-btn-hover-color: var(--portal-text-current);
}

/* ============================================================
   PlunaPortal 1.0.50 - light mode PLUNA ink + button contrast
   Light mode must read as PLUNA: dark blue ink on pale surfaces.
   Dark mode intentionally keeps the palette from 1.0.49 unchanged.
   ============================================================ */
[data-bs-theme="light"] {
  --portal-light-ink: color-mix(in srgb, var(--portal-primary) 88%, #071827 12%);
  --portal-light-muted-ink: color-mix(in srgb, var(--portal-primary) 70%, #66798a 30%);
  --portal-light-soft-blue: color-mix(in srgb, var(--portal-primary) 9%, #ffffff 91%);
  --portal-light-soft-blue-hover: color-mix(in srgb, var(--portal-primary) 15%, #ffffff 85%);
  --portal-light-button-border: color-mix(in srgb, var(--portal-primary) 42%, var(--portal-border) 58%);

  /* Do not trust old saved component-text colours if they were configured too
     pale.  The light theme deliberately derives its ink from the PLUNA blue. */
  --portal-text-current: var(--portal-light-ink);
  --portal-muted-current: var(--portal-light-muted-ink);
  --portal-heading-current: var(--portal-primary);
  --portal-panel-header-text-current: var(--portal-primary);
  --portal-input-text-current: var(--portal-light-ink);
  --portal-table-header-text-current: var(--portal-primary);
  --portal-dropdown-text-current: var(--portal-light-ink);
  --portal-card-text-current: var(--portal-light-ink);
  --portal-stat-text-current: var(--portal-light-ink);
  --portal-footer-text-current: var(--portal-light-muted-ink);
  --portal-badge-text-current: var(--portal-primary);
  --portal-border-current: color-mix(in srgb, var(--portal-border) 72%, var(--portal-primary) 28%);
  --portal-panel-contrast-current: color-mix(in srgb, var(--portal-panel-header-bg-current) 90%, var(--portal-primary) 10%);
  --portal-subtle-surface-current: color-mix(in srgb, var(--portal-card-bg-current) 96%, var(--portal-primary) 4%);
  --portal-hover-surface-current: color-mix(in srgb, var(--portal-card-bg-current) 90%, var(--portal-primary) 10%);

  --bs-body-color: var(--portal-light-ink);
  --bs-emphasis-color: var(--portal-light-ink);
  --bs-secondary-color: var(--portal-light-muted-ink);
  --bs-tertiary-color: color-mix(in srgb, var(--portal-light-muted-ink) 78%, #ffffff 22%);
  --bs-border-color: var(--portal-border-current);
}

[data-bs-theme="light"] body,
[data-bs-theme="light"] .portal-content,
[data-bs-theme="light"] .card-body,
[data-bs-theme="light"] .card-footer,
[data-bs-theme="light"] .mc-panel-body,
[data-bs-theme="light"] .list-group-item,
[data-bs-theme="light"] .accordion-body,
[data-bs-theme="light"] .table {
  color: var(--portal-light-ink);
}
[data-bs-theme="light"] h1,
[data-bs-theme="light"] h2,
[data-bs-theme="light"] h3,
[data-bs-theme="light"] h4,
[data-bs-theme="light"] h5,
[data-bs-theme="light"] h6,
[data-bs-theme="light"] .card-header,
[data-bs-theme="light"] .mc-panel-head,
[data-bs-theme="light"] .accordion-button {
  color: var(--portal-primary-ink-current);
}
[data-bs-theme="light"] .text-muted,
[data-bs-theme="light"] .text-body-secondary,
[data-bs-theme="light"] .text-secondary,
[data-bs-theme="light"] .description,
[data-bs-theme="light"] small:not(.text-white):not(.badge *) {
  color: var(--portal-light-muted-ink) !important;
}
[data-bs-theme="light"] .form-control::placeholder,
[data-bs-theme="light"] .ts-control input::placeholder {
  color: var(--portal-light-muted-ink) !important;
  opacity: .82 !important;
}

/* Primary actions stay solid PLUNA blue.  Secondary/info actions use a pale
   blue surface with dark PLUNA text; this fixes controls such as
   "Consultar precio", which previously rendered pale blue + white. */
[data-bs-theme="light"] .btn-primary {
  --bs-btn-bg: var(--portal-primary) !important;
  --bs-btn-border-color: var(--portal-primary) !important;
  --bs-btn-color: #ffffff !important;
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-primary) 84%, #000000 16%) !important;
  --bs-btn-hover-border-color: color-mix(in srgb, var(--portal-primary) 84%, #000000 16%) !important;
  --bs-btn-hover-color: #ffffff !important;
  background-color: var(--portal-primary) !important;
  border-color: var(--portal-primary) !important;
  color: #ffffff !important;
}
[data-bs-theme="light"] .btn-secondary,
[data-bs-theme="light"] .btn-info {
  --bs-btn-bg: var(--portal-light-soft-blue) !important;
  --bs-btn-border-color: var(--portal-light-button-border) !important;
  --bs-btn-color: var(--portal-primary) !important;
  --bs-btn-hover-bg: var(--portal-primary) !important;
  --bs-btn-hover-border-color: var(--portal-primary) !important;
  --bs-btn-hover-color: #ffffff !important;
  --bs-btn-active-bg: var(--portal-secondary) !important;
  --bs-btn-active-border-color: var(--portal-secondary) !important;
  --bs-btn-active-color: #ffffff !important;
  background-color: var(--portal-light-soft-blue) !important;
  border-color: var(--portal-light-button-border) !important;
  color: var(--portal-primary-ink-current) !important;
}
[data-bs-theme="light"] .btn-secondary:hover,
[data-bs-theme="light"] .btn-info:hover {
  background-color: var(--portal-primary) !important;
  border-color: var(--portal-primary) !important;
  color: #ffffff !important;
}
[data-bs-theme="light"] .btn-outline-primary,
[data-bs-theme="light"] .btn-outline-info,
[data-bs-theme="light"] .btn-outline-secondary {
  --bs-btn-bg: transparent !important;
  --bs-btn-border-color: var(--portal-light-button-border) !important;
  --bs-btn-color: var(--portal-primary) !important;
  --bs-btn-hover-bg: var(--portal-light-soft-blue-hover) !important;
  --bs-btn-hover-border-color: var(--portal-primary) !important;
  --bs-btn-hover-color: var(--portal-primary) !important;
  background-color: transparent !important;
  border-color: var(--portal-light-button-border) !important;
  color: var(--portal-primary-ink-current) !important;
}
[data-bs-theme="light"] .btn-outline-primary:hover,
[data-bs-theme="light"] .btn-outline-info:hover,
[data-bs-theme="light"] .btn-outline-secondary:hover {
  background-color: var(--portal-light-soft-blue-hover) !important;
  border-color: var(--portal-primary) !important;
  color: var(--portal-primary-ink-current) !important;
}
[data-bs-theme="light"] .btn-light,
[data-bs-theme="light"] .btn-default {
  --bs-btn-bg: var(--portal-card-bg-current) !important;
  --bs-btn-border-color: var(--portal-light-button-border) !important;
  --bs-btn-color: var(--portal-primary) !important;
  --bs-btn-hover-bg: var(--portal-light-soft-blue-hover) !important;
  --bs-btn-hover-border-color: var(--portal-primary) !important;
  --bs-btn-hover-color: var(--portal-primary) !important;
  background-color: var(--portal-card-bg-current) !important;
  border-color: var(--portal-light-button-border) !important;
  color: var(--portal-primary-ink-current) !important;
}

/* Disabled controls remain visibly disabled without destroying label contrast. */
[data-bs-theme="light"] .btn:disabled,
[data-bs-theme="light"] .btn.disabled {
  opacity: .62;
}
[data-bs-theme="light"] .btn-secondary:disabled,
[data-bs-theme="light"] .btn-info:disabled,
[data-bs-theme="light"] .btn-secondary.disabled,
[data-bs-theme="light"] .btn-info.disabled {
  color: var(--portal-primary-ink-current) !important;
}

/* ============================================================
   PlunaPortal 1.0.51 - dashboard operational action buttons
   DisposableBasic renders the "Consultar precio" controls with a
   secondary/info-style class. Inside JumpSeat and TransferAircraft those
   quote buttons should use the same PLUNA action language as the rest of
   the dashboard, without touching the semantic green Viajar/Transferir
   buttons.
   ============================================================ */
[data-bs-theme="light"] .portal-dashboard-operation-widget :is(.btn-secondary,.btn-info,.btn-light,.btn-outline-secondary) {
  --bs-btn-bg: var(--portal-primary) !important;
  --bs-btn-border-color: var(--portal-primary) !important;
  --bs-btn-color: #ffffff !important;
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-primary) 84%, #000000 16%) !important;
  --bs-btn-hover-border-color: color-mix(in srgb, var(--portal-primary) 84%, #000000 16%) !important;
  --bs-btn-hover-color: #ffffff !important;
  --bs-btn-active-bg: color-mix(in srgb, var(--portal-primary) 76%, #000000 24%) !important;
  --bs-btn-active-border-color: color-mix(in srgb, var(--portal-primary) 76%, #000000 24%) !important;
  --bs-btn-active-color: #ffffff !important;
  background-color: var(--portal-primary) !important;
  border-color: var(--portal-primary) !important;
  color: #ffffff !important;
}
[data-bs-theme="dark"] .portal-dashboard-operation-widget :is(.btn-secondary,.btn-info,.btn-light,.btn-outline-secondary) {
  --bs-btn-bg: var(--portal-accent) !important;
  --bs-btn-border-color: var(--portal-accent) !important;
  --bs-btn-color: var(--portal-accent-button-text) !important;
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-accent) 84%, #ffffff 16%) !important;
  --bs-btn-hover-border-color: color-mix(in srgb, var(--portal-accent) 84%, #ffffff 16%) !important;
  --bs-btn-hover-color: var(--portal-accent-button-text) !important;
  --bs-btn-active-bg: color-mix(in srgb, var(--portal-accent) 78%, #000000 22%) !important;
  --bs-btn-active-border-color: color-mix(in srgb, var(--portal-accent) 78%, #000000 22%) !important;
  --bs-btn-active-color: var(--portal-accent-button-text) !important;
  background-color: var(--portal-accent) !important;
  border-color: var(--portal-accent) !important;
  color: var(--portal-accent-button-text) !important;
}
[data-bs-theme="light"] .portal-dashboard-operation-widget :is(.btn-secondary,.btn-info,.btn-light,.btn-outline-secondary):hover,
[data-bs-theme="dark"] .portal-dashboard-operation-widget :is(.btn-secondary,.btn-info,.btn-light,.btn-outline-secondary):hover {
  filter: none !important;
}

/* ======================================================================
   PLUNA Portal 1.0.52 · definitive light/dark contrast guardrails
   Keep the configurable palette, but prevent Bootstrap/module utilities and
   old saved defaults from producing low-contrast text or mismatched actions.
   ====================================================================== */

/* LIGHT: PLUNA blue ink is the readability baseline on pale surfaces. */
[data-bs-theme="light"] {
  --portal-light-ink: color-mix(in srgb, var(--portal-primary) 90%, #071827 10%);
  --portal-light-muted-ink: color-mix(in srgb, var(--portal-primary) 72%, #5f7080 28%);
  --portal-light-soft-surface: color-mix(in srgb, var(--portal-page) 88%, #ffffff 12%);
  --portal-light-control-surface: color-mix(in srgb, var(--portal-surface) 97%, var(--portal-primary) 3%);

  --portal-text-current: var(--portal-light-ink);
  --portal-muted-current: var(--portal-light-muted-ink);
  --portal-card-text-current: var(--portal-light-ink);
  --portal-stat-text-current: var(--portal-light-ink);
  --portal-input-text-current: var(--portal-light-ink);
  --portal-dropdown-text-current: var(--portal-light-ink);
  --portal-table-header-text-current: var(--portal-primary);
  --portal-panel-header-text-current: var(--portal-primary);
  --portal-heading-current: var(--portal-primary);
  --portal-link-current: var(--portal-primary);
  --portal-link-hover-current: color-mix(in srgb, var(--portal-primary) 74%, #000000 26%);

  --bs-body-color: var(--portal-light-ink);
  --bs-emphasis-color: var(--portal-light-ink);
  --bs-secondary-color: var(--portal-light-muted-ink);
}

[data-bs-theme="light"] .portal-content,
[data-bs-theme="light"] .portal-content .card,
[data-bs-theme="light"] .portal-content .card-body,
[data-bs-theme="light"] .portal-content .card-footer,
[data-bs-theme="light"] .portal-content .mc-panel,
[data-bs-theme="light"] .portal-content .mc-panel-body,
[data-bs-theme="light"] .portal-content .modal-content,
[data-bs-theme="light"] .portal-content .offcanvas,
[data-bs-theme="light"] .portal-content .accordion-body,
[data-bs-theme="light"] .portal-content .list-group-item {
  color: var(--portal-light-ink) !important;
}
[data-bs-theme="light"] .portal-content :is(.text-muted,.text-body-secondary,.text-secondary,.description),
[data-bs-theme="light"] .portal-content small:not(.badge):not(.text-white):not(.text-success):not(.text-danger):not(.text-warning):not(.text-info) {
  color: var(--portal-light-muted-ink) !important;
}
[data-bs-theme="light"] .portal-content :is(.text-dark,.text-body,.text-black) {
  color: var(--portal-light-ink) !important;
}
[data-bs-theme="light"] .portal-content :is(.bg-light,.bg-body-tertiary,.bg-body-secondary) {
  background-color: var(--portal-light-soft-surface) !important;
  color: var(--portal-light-ink) !important;
}
[data-bs-theme="light"] .portal-content :is(.form-control,.form-select,.ts-control,.select2-selection) {
  background-color: var(--portal-light-control-surface) !important;
  color: var(--portal-light-ink) !important;
}
[data-bs-theme="light"] .portal-content :is(.form-control,.form-select,.ts-control) ::placeholder,
[data-bs-theme="light"] .portal-content :is(.form-control,.form-select,.ts-control)::placeholder {
  color: var(--portal-light-muted-ink) !important;
  opacity: .82 !important;
}

/* DARK: brighten the historical dark-link default (#2E6A9E was only ~2.8:1
   on the standard dark surface) without discarding custom palette choices. */
[data-bs-theme="dark"] {
  --portal-dark-text-safe: color-mix(in srgb, var(--portal-dark-text) 94%, #ffffff 6%);
  --portal-dark-muted-safe: color-mix(in srgb, var(--portal-dark-muted) 76%, var(--portal-dark-text-safe) 24%);
  --portal-dark-link-safe: color-mix(in srgb, var(--portal-dark-link) 60%, #b9ddfa 40%);
  --portal-dark-link-hover-safe: color-mix(in srgb, var(--portal-dark-link-hover) 78%, #ffffff 22%);
  --portal-dark-control-surface: color-mix(in srgb, var(--portal-dark-input-bg) 92%, var(--portal-dark-surface) 8%);

  --portal-text-current: var(--portal-dark-text-safe);
  --portal-muted-current: var(--portal-dark-muted-safe);
  --portal-card-text-current: var(--portal-dark-text-safe);
  --portal-stat-text-current: var(--portal-dark-text-safe);
  --portal-input-text-current: var(--portal-dark-text-safe);
  --portal-dropdown-text-current: var(--portal-dark-text-safe);
  --portal-panel-header-text-current: var(--portal-dark-text-safe);
  --portal-table-header-text-current: var(--portal-dark-muted-safe);
  --portal-heading-current: var(--portal-dark-text-safe);
  --portal-link-current: var(--portal-dark-link-safe);
  --portal-link-hover-current: var(--portal-dark-link-hover-safe);

  --bs-body-color: var(--portal-dark-text-safe);
  --bs-emphasis-color: var(--portal-dark-text-safe);
  --bs-secondary-color: var(--portal-dark-muted-safe);
}

[data-bs-theme="dark"] .portal-content,
[data-bs-theme="dark"] .portal-content .card,
[data-bs-theme="dark"] .portal-content .card-body,
[data-bs-theme="dark"] .portal-content .card-footer,
[data-bs-theme="dark"] .portal-content .mc-panel,
[data-bs-theme="dark"] .portal-content .mc-panel-body,
[data-bs-theme="dark"] .portal-content .modal-content,
[data-bs-theme="dark"] .portal-content .offcanvas,
[data-bs-theme="dark"] .portal-content .accordion-body,
[data-bs-theme="dark"] .portal-content .list-group-item {
  color: var(--portal-dark-text-safe) !important;
}
[data-bs-theme="dark"] .portal-content :is(.text-muted,.text-body-secondary,.text-secondary,.description),
[data-bs-theme="dark"] .portal-content small:not(.badge):not(.text-success):not(.text-danger):not(.text-warning):not(.text-info) {
  color: var(--portal-dark-muted-safe) !important;
}
[data-bs-theme="dark"] .portal-content :is(.text-dark,.text-body,.text-black) {
  color: var(--portal-dark-text-safe) !important;
}
[data-bs-theme="dark"] .portal-content :is(.bg-light,.bg-white,.bg-body,.bg-body-tertiary,.bg-body-secondary) {
  background-color: var(--portal-dark-surface) !important;
  color: var(--portal-dark-text-safe) !important;
}
[data-bs-theme="dark"] .portal-content :is(.form-control,.form-select,.ts-control,.select2-selection) {
  background-color: var(--portal-dark-control-surface) !important;
  color: var(--portal-dark-text-safe) !important;
}
[data-bs-theme="dark"] .portal-content :is(.form-control,.form-select,.ts-control)::placeholder {
  color: var(--portal-dark-muted-safe) !important;
  opacity: .82 !important;
}
[data-bs-theme="dark"] .portal-content :is(.dropdown-menu,.portal-dropdown,.select2-dropdown,.ts-dropdown) {
  background-color: var(--portal-dark-dropdown-bg) !important;
  color: var(--portal-dark-text-safe) !important;
}
[data-bs-theme="dark"] .portal-content :is(.dropdown-item,.select2-results__option,.ts-dropdown .option) {
  color: var(--portal-dark-text-safe) !important;
}
[data-bs-theme="dark"] .portal-content :is(.dropdown-item,.select2-results__option,.ts-dropdown .option):hover,
[data-bs-theme="dark"] .portal-content .select2-results__option--highlighted,
[data-bs-theme="dark"] .portal-content .ts-dropdown .active {
  background-color: color-mix(in srgb, var(--portal-dark-link-safe) 16%, var(--portal-dark-dropdown-bg)) !important;
  color: var(--portal-dark-text-safe) !important;
}

/* Restore semantic utility colours after the broad third-party table rules. */
[data-bs-theme="dark"] .portal-content .text-success { color: #79d9ad !important; }
[data-bs-theme="dark"] .portal-content .text-danger  { color: #ff9ca6 !important; }
[data-bs-theme="dark"] .portal-content .text-warning { color: #ffe08a !important; }
[data-bs-theme="dark"] .portal-content .text-info    { color: #9ddcff !important; }
[data-bs-theme="light"] .portal-content .text-success { color: #146c43 !important; }
[data-bs-theme="light"] .portal-content .text-danger  { color: #b02a37 !important; }
[data-bs-theme="light"] .portal-content .text-warning { color: #7a5a00 !important; }
[data-bs-theme="light"] .portal-content .text-info    { color: #075985 !important; }

/* Tables and headers must never inherit a pale Bootstrap contextual foreground. */
[data-bs-theme="light"] .portal-content .table > :not(caption) > * > * {
  color: var(--portal-light-ink);
  border-color: var(--portal-border-current);
}
[data-bs-theme="light"] .portal-content .table thead th {
  color: var(--portal-primary-ink-current) !important;
}
[data-bs-theme="dark"] .portal-content .table > :not(caption) > * > * {
  color: var(--portal-dark-text-safe);
  border-color: var(--portal-border-current) !important;
}
[data-bs-theme="dark"] .portal-content .table thead th {
  color: var(--portal-dark-muted-safe) !important;
}

/* Dashboard: all standard operational buttons share one geometry. Semantic
   colours (success/danger) remain semantic; quote/secondary actions use the
   same PLUNA action palette as primary buttons in each visual mode. */
.pv-dashboard-shell .btn:not(.btn-sm):not(.btn-lg):not(.btn-link):not(.page-link) {
  min-height: 42px;
  padding: .5rem .9rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .38rem;
  border-width: 1px;
  border-radius: calc(var(--portal-radius) * .8);
  font-weight: 750;
  line-height: 1.15;
  box-shadow: none;
}
.portal-dashboard-operation-widget .btn:not(.btn-sm):not(.btn-link) {
  min-height: 42px !important;
  border-radius: calc(var(--portal-radius) * .8) !important;
  font-weight: 750 !important;
}
[data-bs-theme="light"] .portal-dashboard-operation-widget :is(.btn-secondary,.btn-info,.btn-light,.btn-default,.btn-outline-secondary,.btn-outline-info) {
  --bs-btn-bg: var(--portal-primary) !important;
  --bs-btn-border-color: var(--portal-primary) !important;
  --bs-btn-color: #ffffff !important;
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-primary) 82%, #000000 18%) !important;
  --bs-btn-hover-border-color: color-mix(in srgb, var(--portal-primary) 82%, #000000 18%) !important;
  --bs-btn-hover-color: #ffffff !important;
  background-color: var(--portal-primary) !important;
  border-color: var(--portal-primary) !important;
  color: #ffffff !important;
}
[data-bs-theme="dark"] .portal-dashboard-operation-widget :is(.btn-secondary,.btn-info,.btn-light,.btn-default,.btn-outline-secondary,.btn-outline-info) {
  --bs-btn-bg: var(--portal-accent) !important;
  --bs-btn-border-color: var(--portal-accent) !important;
  --bs-btn-color: var(--portal-accent-button-text) !important;
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-accent) 86%, #ffffff 14%) !important;
  --bs-btn-hover-border-color: color-mix(in srgb, var(--portal-accent) 86%, #ffffff 14%) !important;
  --bs-btn-hover-color: var(--portal-accent-button-text) !important;
  background-color: var(--portal-accent) !important;
  border-color: var(--portal-accent) !important;
  color: var(--portal-accent-button-text) !important;
}

/* Disabled buttons stay legible and visibly disabled in both modes. */
.pv-dashboard-shell .btn:disabled,
.pv-dashboard-shell .btn.disabled,
.portal-content .btn:disabled,
.portal-content .btn.disabled {
  opacity: .58;
  filter: saturate(.72);
}

/* Pagination/modal controls are also theme-safe. */
[data-bs-theme="light"] .portal-content .page-link {
  background: var(--portal-surface-current);
  color: var(--portal-primary-ink-current);
  border-color: var(--portal-border-current);
}
[data-bs-theme="dark"] .portal-content .page-link {
  background: var(--portal-dark-surface);
  color: var(--portal-dark-link-safe);
  border-color: var(--portal-dark-border);
}
[data-bs-theme="dark"] .portal-content .page-item.active .page-link {
  background: var(--portal-accent);
  border-color: var(--portal-accent);
  color: var(--portal-accent-button-text);
}

/* Contextual Bootstrap helpers that intentionally carry their own foreground. */
.portal-content .btn-warning.text-black,
.portal-content .btn-accent.text-black,
.portal-content .bg-warning.text-black,
.portal-content .text-bg-warning {
  color: var(--portal-accent-button-text) !important;
}
[data-bs-theme="light"] .portal-content .text-bg-light {
  background-color: var(--portal-light-soft-surface) !important;
  color: var(--portal-light-ink) !important;
  border: 1px solid var(--portal-border-current);
}
[data-bs-theme="dark"] .portal-content .text-bg-light {
  background-color: color-mix(in srgb, var(--portal-dark-surface) 88%, var(--portal-dark-link-safe) 12%) !important;
  color: var(--portal-dark-text-safe) !important;
  border: 1px solid var(--portal-dark-border);
}

/* ======================================================================
   PLUNA Portal 1.0.53 · dashboard masthead icons + operation buttons
   Fixes the low-contrast hero icons and normalizes DisposableBasic
   JumpSeat / TransferAircraft actions (including btn-sm and disabled quote).
   ====================================================================== */

/* The dashboard masthead always sits on a dark photographic overlay, so its
   icons need their own high-contrast treatment independent of page mode. */
.pv-dashboard-banner-stat .mc-stat-icon {
  background: rgba(116, 172, 223, .18) !important;
  border: 1px solid rgba(207, 234, 255, .22) !important;
  color: #cfeaff !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.025), 0 2px 8px rgba(0,0,0,.16) !important;
}
.pv-dashboard-banner-stat .mc-stat-icon > i {
  color: #cfeaff !important;
  opacity: 1 !important;
  font-size: 1rem !important;
  line-height: 1 !important;
}
a.pv-dashboard-banner-stat:hover .mc-stat-icon,
.pv-dashboard-banner-stat-button:hover .mc-stat-icon {
  background: rgba(116, 172, 223, .28) !important;
  border-color: rgba(207, 234, 255, .38) !important;
}

/* DisposableBasic uses small Bootstrap buttons in these two widgets. Previous
   normalization skipped .btn-sm, which is why the quote/action pair kept two
   different geometries. */
.portal-dashboard-operation-widget .card-footer .btn,
.portal-dashboard-operation-widget .btn.btn-sm {
  min-height: 36px !important;
  height: 36px !important;
  padding: .42rem .72rem !important;
  border-width: 1px !important;
  border-radius: calc(var(--portal-radius) * .65) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: .86rem !important;
  font-weight: 750 !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  box-shadow: none !important;
  vertical-align: middle !important;
}
.portal-dashboard-operation-widget .card-footer .btn + .btn {
  margin-left: 6px !important;
}

/* Quote/price action: PLUNA blue, not the pale Bootstrap-info treatment. */
[data-bs-theme="light"] .portal-dashboard-operation-widget :is(.btn-primary,.btn-secondary,.btn-info,.btn-light,.btn-default,.btn-outline-primary,.btn-outline-secondary,.btn-outline-info):not(:disabled):not(.disabled),
[data-bs-theme="dark"] .portal-dashboard-operation-widget :is(.btn-primary,.btn-secondary,.btn-info,.btn-light,.btn-default,.btn-outline-primary,.btn-outline-secondary,.btn-outline-info):not(:disabled):not(.disabled) {
  --bs-btn-bg: var(--portal-secondary) !important;
  --bs-btn-border-color: var(--portal-secondary) !important;
  --bs-btn-color: #ffffff !important;
  --bs-btn-hover-bg: color-mix(in srgb, var(--portal-secondary) 82%, #000000 18%) !important;
  --bs-btn-hover-border-color: color-mix(in srgb, var(--portal-secondary) 82%, #000000 18%) !important;
  --bs-btn-hover-color: #ffffff !important;
  background-color: var(--portal-secondary) !important;
  border-color: var(--portal-secondary) !important;
  color: #ffffff !important;
  opacity: 1 !important;
  filter: none !important;
}

/* Primary travel/transfer action keeps its semantic green, but with exactly
   the same dimensions and typography as the quote button. */
.portal-dashboard-operation-widget .btn-success:not(:disabled):not(.disabled) {
  --bs-btn-bg: var(--portal-success) !important;
  --bs-btn-border-color: var(--portal-success) !important;
  --bs-btn-color: #ffffff !important;
  background-color: var(--portal-success) !important;
  border-color: var(--portal-success) !important;
  color: #ffffff !important;
  opacity: 1 !important;
  filter: none !important;
}
.portal-dashboard-operation-widget .btn-success:not(:disabled):not(.disabled):hover {
  background-color: color-mix(in srgb, var(--portal-success) 82%, #000000 18%) !important;
  border-color: color-mix(in srgb, var(--portal-success) 82%, #000000 18%) !important;
  color: #ffffff !important;
}

/* Disabled quote buttons should look disabled, not washed-out light blue with
   white text. Keep opacity at 1 and encode the disabled state in the surface. */
[data-bs-theme="dark"] .portal-dashboard-operation-widget .btn:disabled,
[data-bs-theme="dark"] .portal-dashboard-operation-widget .btn.disabled {
  background: color-mix(in srgb, var(--portal-dark-panel-header-bg) 80%, var(--portal-dark-border) 20%) !important;
  border-color: color-mix(in srgb, var(--portal-dark-border) 78%, var(--portal-dark-muted-safe) 22%) !important;
  color: var(--portal-dark-muted-safe) !important;
  opacity: 1 !important;
  filter: none !important;
  cursor: not-allowed !important;
}
[data-bs-theme="light"] .portal-dashboard-operation-widget .btn:disabled,
[data-bs-theme="light"] .portal-dashboard-operation-widget .btn.disabled {
  background: color-mix(in srgb, var(--portal-page) 82%, var(--portal-border) 18%) !important;
  border-color: var(--portal-border-current) !important;
  color: var(--portal-light-muted-ink) !important;
  opacity: 1 !important;
  filter: none !important;
  cursor: not-allowed !important;
}

/* Small money/operation glyphs in the footer use the portal icon palette
   instead of Bootstrap contextual pink/red inherited from vendor widgets. */
[data-bs-theme="dark"] .portal-dashboard-operation-widget .card-footer > i:first-child,
[data-bs-theme="dark"] .portal-dashboard-operation-widget .card-footer > .bi:first-child {
  color: var(--portal-dark-link-safe) !important;
  opacity: 1 !important;
}

/* ======================================================================
   PLUNA Portal 1.0.54 · dark quote button contrast
   The DisposableBasic price button can be rendered with different
   Bootstrap contextual classes/states. Target the footer role directly so
   "Consultar precio" always keeps a dark PLUNA surface in dark mode.
   ====================================================================== */
[data-bs-theme="dark"] .portal-dashboard-operation-widget .card-footer .btn:not(.btn-success) {
  --bs-btn-bg: #2B4761 !important;
  --bs-btn-border-color: #3B6385 !important;
  --bs-btn-color: #FFFFFF !important;
  --bs-btn-hover-bg: #355C7E !important;
  --bs-btn-hover-border-color: #4A79A1 !important;
  --bs-btn-hover-color: #FFFFFF !important;
  --bs-btn-active-bg: #203A52 !important;
  --bs-btn-active-border-color: #4A79A1 !important;
  --bs-btn-active-color: #FFFFFF !important;
  background-color: #2B4761 !important;
  border-color: #3B6385 !important;
  color: #FFFFFF !important;
  opacity: 1 !important;
  filter: none !important;
  text-shadow: none !important;
}
[data-bs-theme="dark"] .portal-dashboard-operation-widget .card-footer .btn:not(.btn-success):not(:disabled):not(.disabled):hover,
[data-bs-theme="dark"] .portal-dashboard-operation-widget .card-footer .btn:not(.btn-success):not(:disabled):not(.disabled):focus {
  background-color: #355C7E !important;
  border-color: #4A79A1 !important;
  color: #FFFFFF !important;
}
[data-bs-theme="dark"] .portal-dashboard-operation-widget .card-footer .btn:not(.btn-success):disabled,
[data-bs-theme="dark"] .portal-dashboard-operation-widget .card-footer .btn:not(.btn-success).disabled {
  background-color: #263F56 !important;
  border-color: #365B79 !important;
  color: #F7FBFF !important;
  opacity: 1 !important;
  filter: none !important;
}


/* PLUNA Portal 1.0.59 · profile hero with integrated summary strip */
.pv-profile-overview { margin-bottom: 16px; }
.pv-profile-hero-integrated {
  display: block;
  padding: 0;
  gap: 0;
  border-bottom: 0;
  border-radius: calc(var(--portal-radius) + 2px);
  overflow: hidden;
}
.pv-profile-hero-top {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  gap: 18px;
  align-items: center;
  padding: 18px;
}
.pv-profile-hero-integrated .pv-profile-banner-stats {
  margin-top: 0;
  margin-bottom: 0;
  border-top: 1px solid rgba(255,255,255,.14);
  border-left: 0;
  border-right: 0;
  border-bottom: 0;
  border-radius: 0;
  background: rgba(4, 20, 34, .30);
  backdrop-filter: blur(6px);
}
.pv-profile-banner-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pv-profile-banner-stats.pv-profile-banner-stats-balance { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.pv-profile-banner-stats .pv-dashboard-banner-stat,
.pv-profile-banner-stats .pv-dashboard-banner-stat-button {
  min-height: 84px;
}
@media (max-width: 991.98px) {
  .pv-profile-hero-top { grid-template-columns: auto 1fr; }
  .pv-profile-hero-top .mc-profile-rank { grid-column: 1 / -1; text-align: left; display: flex; align-items: center; gap: 12px; }
}
@media (max-width: 767.98px) {
  .pv-profile-banner-stats,
  .pv-profile-banner-stats.pv-profile-banner-stats-balance { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
  .pv-profile-hero-top { grid-template-columns: 1fr; text-align: center; justify-items: center; }
  .pv-profile-hero-top .mc-profile-rank { justify-content: center; text-align: center; }
  .pv-profile-banner-stats,
  .pv-profile-banner-stats.pv-profile-banner-stats-balance { grid-template-columns: 1fr; }
}


/* PLUNA Portal 1.0.59 · stronger contrast for integrated profile hero */
.pv-profile-hero-integrated::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background: linear-gradient(180deg,
    rgba(8, 18, 34, .18) 0%,
    rgba(8, 18, 34, .24) 30%,
    rgba(8, 18, 34, .34) 56%,
    rgba(8, 18, 34, .48) 100%);
}
.pv-profile-hero-top,
.pv-profile-hero-integrated .pv-profile-banner-stats {
  position: relative;
  z-index: 1;
}
.pv-profile-hero-top .mc-profile-copy h1,
.pv-profile-hero-top .mc-profile-copy p,
.pv-profile-hero-top .mc-profile-meta,
.pv-profile-hero-top .mc-profile-rank small,
.pv-profile-hero-top .mc-profile-rank strong,
.pv-profile-hero-integrated .pv-dashboard-banner-stat strong,
.pv-profile-hero-integrated .pv-dashboard-banner-stat small,
.pv-profile-hero-integrated .pv-dashboard-stat-arrow {
  text-shadow: 0 1px 10px rgba(0,0,0,.24);
}
.pv-profile-hero-top .mc-profile-copy h1,
.pv-profile-hero-top .mc-profile-copy p,
.pv-profile-hero-top .mc-profile-meta,
.pv-profile-hero-top .mc-profile-rank strong,
.pv-profile-hero-integrated .pv-dashboard-banner-stat strong {
  color: #ffffff !important;
}
.pv-profile-hero-top .mc-profile-copy p,
.pv-profile-hero-top .mc-profile-meta,
.pv-profile-hero-top .mc-profile-rank small,
.pv-profile-hero-integrated .pv-dashboard-banner-stat small,
.pv-profile-hero-integrated .pv-dashboard-stat-arrow {
  color: rgba(255,255,255,.90) !important;
  opacity: 1 !important;
}
.pv-profile-hero-top .mc-profile-copy p,
.pv-profile-hero-top .mc-profile-meta,
.pv-profile-hero-top .mc-profile-rank small,
.pv-profile-hero-integrated .pv-dashboard-banner-stat small {
  font-weight: 600;
}
.pv-profile-hero-integrated .pv-dashboard-banner-stat strong {
  font-weight: 800;
}
[data-bs-theme="light"] .pv-profile-hero-integrated .pv-profile-banner-stats {
  background: rgba(7, 24, 43, .40);
  border-top-color: rgba(255,255,255,.18);
  backdrop-filter: blur(8px);
}
[data-bs-theme="light"] .pv-profile-hero-top {
  background: linear-gradient(180deg, rgba(7, 24, 43, .08), rgba(7, 24, 43, .02));
}
[data-bs-theme="dark"] .pv-profile-hero-integrated .pv-profile-banner-stats {
  background: rgba(4, 15, 27, .52);
  border-top-color: rgba(255,255,255,.12);
  backdrop-filter: blur(8px);
}
[data-bs-theme="dark"] .pv-profile-hero-integrated::before {
  background: linear-gradient(180deg,
    rgba(6, 14, 24, .24) 0%,
    rgba(6, 14, 24, .32) 30%,
    rgba(6, 14, 24, .42) 56%,
    rgba(6, 14, 24, .58) 100%);
}


/* ======================================================================
   PLUNA Portal 1.0.61 · readability pass + configurable blackbox palette
   ====================================================================== */
:root {
  --portal-card-muted-current: color-mix(in srgb, var(--portal-card-text-current) 60%, var(--portal-muted-current) 40%);
}
[data-bs-theme="dark"] {
  --portal-card-muted-current: color-mix(in srgb, var(--portal-dark-card-text) 78%, var(--portal-dark-muted) 22%);
}
.portal-content .card,
.portal-content .mc-panel,
.portal-content .card-body,
.portal-content .card-footer,
.portal-content .mc-panel-body,
.portal-content .accordion-item,
.portal-content .accordion-body,
.portal-content .list-group-item,
.portal-content .offcanvas,
.portal-content .modal-content {
  color: var(--portal-card-text-current);
}
.portal-content .card-header,
.portal-content .mc-panel-head,
.portal-content .accordion-button {
  background: var(--portal-panel-header-bg-current);
  color: var(--portal-panel-header-text-current);
}
.portal-content .card-header > *,
.portal-content .mc-panel-head > *,
.portal-content .accordion-button > * {
  color: inherit;
}
.portal-content .card small:not(.badge):not(.text-success):not(.text-danger):not(.text-warning):not(.text-info),
.portal-content .mc-panel small:not(.badge):not(.text-success):not(.text-danger):not(.text-warning):not(.text-info),
.portal-content .accordion-item small:not(.badge):not(.text-success):not(.text-danger):not(.text-warning):not(.text-info),
.portal-content .card .text-muted,
.portal-content .mc-panel .text-muted,
.portal-content .accordion-item .text-muted,
.portal-content .card .text-body-secondary,
.portal-content .mc-panel .text-body-secondary,
.portal-content .accordion-item .text-body-secondary,
.portal-content .card .description,
.portal-content .mc-panel .description,
.portal-content .accordion-item .description {
  color: var(--portal-card-muted-current) !important;
}
.portal-content .card-footer {
  background: color-mix(in srgb, var(--portal-card-bg-current) 92%, var(--portal-primary) 8%);
  color: var(--portal-card-text-current);
}
.portal-content .table tbody td,
.portal-content .table tbody th,
.portal-content .table tbody a:not(.btn) {
  color: var(--portal-card-text-current);
}
.portal-content .table tbody a:not(.btn):hover {
  color: var(--portal-link-hover-current);
}
.portal-content .table tbody .text-muted,
.portal-content .table tbody small:not(.badge) {
  color: var(--portal-card-muted-current) !important;
}
.portal-content .card i,
.portal-content .mc-panel i,
.portal-content .accordion-item i {
  color: currentColor;
}
.mc-metartaf-links a,
.card-footer a,
.mc-panel .card-footer a {
  font-weight: 600;
}
#portalBlackboxStage {
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--portal-card-bg-current) 88%, var(--portal-primary) 12%),
    color-mix(in srgb, var(--portal-card-bg-current) 96%, var(--portal-primary) 4%));
}

/* PLUNA Portal 1.0.63 · METAR theme-safe dual embed */
.portal-metar-theme-embeds { position: relative; }
.portal-metar-embed { width: 100%; }
.portal-metar-embed-dark { display: none; }
[data-bs-theme="dark"] .portal-metar-embed-light { display: none; }
[data-bs-theme="dark"] .portal-metar-embed-dark { display: block; }
.portal-metar-embed iframe { display: block; width: 100% !important; }


/* ======================================================================
   1.0.68 - Entidades navegables (piloto / aeropuerto / vuelo)
   ====================================================================== */
:is(.mc-airport-link,.mc-pilot-link,.mc-flight-link) {
  color: inherit !important;
  text-decoration: none !important;
  border-radius: 3px;
  transition: transform .14s ease, filter .14s ease, opacity .14s ease;
}
:is(.mc-airport-link,.mc-pilot-link,.mc-flight-link):hover,
:is(.mc-airport-link,.mc-pilot-link,.mc-flight-link):focus-visible {
  color: inherit !important;
  text-decoration: none !important;
  filter: brightness(1.14);
}
:is(.mc-airport-link,.mc-pilot-link,.mc-flight-link):hover { transform: translateY(-1px); }
:is(.mc-airport-link,.mc-pilot-link,.mc-flight-link):focus-visible {
  outline: 1px solid color-mix(in srgb, currentColor 45%, transparent);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  :is(.mc-airport-link,.mc-pilot-link,.mc-flight-link) { transition: none; }
  :is(.mc-airport-link,.mc-pilot-link,.mc-flight-link):hover { transform: none; }
}


/* ======================================================================
   1.0.69 - Roster sorting / lightweight table interaction
   ====================================================================== */
.mc-table-sort {
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  width:100%;
  color:inherit !important;
  text-decoration:none !important;
  white-space:nowrap;
}
.mc-table-sort .bi {
  font-size:.72rem;
  opacity:.5;
  transition:opacity .12s ease, transform .12s ease;
}
.mc-table-sort:hover,
.mc-table-sort:focus-visible {
  color:inherit !important;
  text-decoration:none !important;
}
.mc-table-sort:hover .bi,
.mc-table-sort:focus-visible .bi { opacity:.95; transform:translateY(-1px); }


/* Aviso persistente para aterrizajes fuera de pista */



/* PlunaPortal 1.0.85 · Award preview/effects, FPE runway display and dashboard limits */
/* ============================================================
   PlunaPortal 1.6.123 · award detail modal
   Custom overlay (no Bootstrap Modal dependency) with image, title and
   description. This avoids conflicts with phpVMS/addon Bootstrap bundles.
   ============================================================ */
.mc-award-previewable {
  cursor: zoom-in;
  transition: transform .16s ease, filter .16s ease;
}
.mc-award-previewable:hover {
  transform: scale(1.045);
  filter: drop-shadow(0 5px 10px rgba(0,0,0,.16));
}
.mc-award-previewable:focus-visible {
  outline: 3px solid rgba(var(--portal-primary-rgb), .28);
  outline-offset: 4px;
  border-radius: calc(var(--portal-radius) * .7);
}
body.mc-award-preview-open { overflow: hidden; }
.mc-award-preview-modal {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: grid;
  place-items: center;
  padding: 24px;
  opacity: 0;
  visibility: hidden;
  transition: opacity .16s ease, visibility .16s ease;
}
.mc-award-preview-modal[hidden] { display: none !important; }
.mc-award-preview-modal.is-open {
  opacity: 1;
  visibility: visible;
}
.mc-award-preview-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(5, 13, 22, .72);
  backdrop-filter: blur(3px);
  cursor: zoom-out;
}
.mc-award-preview-dialog {
  position: relative;
  z-index: 1;
  width: min(680px, 100%);
  max-height: calc(100vh - 48px);
  overflow: auto;
  display: grid;
  grid-template-columns: minmax(240px, 320px) minmax(0, 1fr);
  align-items: center;
  gap: 0;
  background: var(--portal-card-bg-current);
  color: var(--portal-card-text-current);
  border: 1px solid var(--portal-border-current);
  border-radius: calc(var(--portal-radius) + 6px);
  box-shadow: 0 24px 70px rgba(0,0,0,.38);
  transform: translateY(8px) scale(.985);
  transition: transform .16s ease;
}
.mc-award-preview-modal.is-open .mc-award-preview-dialog {
  transform: translateY(0) scale(1);
}
.mc-award-preview-close {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 3;
  width: 36px;
  height: 36px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--portal-border-current);
  border-radius: 50%;
  background: var(--portal-surface-current);
  color: var(--portal-text-current);
  cursor: pointer;
  box-shadow: var(--portal-shadow-sm);
}
.mc-award-preview-close:hover {
  color: var(--portal-primary-ink-current);
  border-color: rgba(var(--portal-primary-rgb), .45);
}
.mc-award-preview-visual {
  min-height: 330px;
  padding: 34px 26px;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at center, rgba(var(--portal-primary-rgb), .10), transparent 67%),
    color-mix(in srgb, var(--portal-card-bg-current) 92%, var(--portal-primary) 8%);
  border-right: 1px solid var(--portal-border-current);
}
.mc-award-preview-visual #portalAwardPreviewImage {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 330px;
  object-fit: contain;
  filter: drop-shadow(0 10px 18px rgba(0,0,0,.16));
}
.mc-award-preview-copy {
  padding: 46px 34px 36px;
  min-width: 0;
}
.mc-award-preview-copy .mc-eyebrow {
  margin-bottom: 7px;
}
.mc-award-preview-copy h3 {
  margin: 0;
  color: var(--portal-heading-current);
  font-size: 1.35rem;
  line-height: 1.22;
}
.mc-award-preview-copy p {
  margin: 12px 0 0;
  color: var(--portal-muted-current);
  font-size: .94rem;
  line-height: 1.55;
  white-space: pre-line;
}
.mc-award-preview-copy p[hidden] { display: none !important; }

.mc-award-granted-date {
  display: flex;
  align-items: center;
  gap: 3px;
  margin-top: 7px;
  color: var(--portal-muted-current);
  font-size: .78rem;
  font-weight: 600;
}
.mc-award-preview-date {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 16px;
  padding: 7px 10px;
  border: 1px solid var(--portal-border-current);
  border-radius: 999px;
  color: var(--portal-muted-current);
  background: color-mix(in srgb, var(--portal-card-bg-current) 94%, var(--portal-primary) 6%);
  font-size: .8rem;
  font-weight: 700;
}
.mc-award-preview-date[hidden] { display: none !important; }
@media (max-width: 650px) {
  .mc-award-preview-modal { padding: 12px; }
  .mc-award-preview-dialog {
    width: min(460px, 100%);
    max-height: calc(100vh - 24px);
    grid-template-columns: 1fr;
  }
  .mc-award-preview-visual {
    min-height: 250px;
    padding: 28px 24px;
    border-right: 0;
    border-bottom: 1px solid var(--portal-border-current);
  }
  .mc-award-preview-visual #portalAwardPreviewImage { max-height: 270px; }
  .mc-award-preview-copy { padding: 24px 24px 28px; }
  .mc-award-preview-copy h3 { font-size: 1.2rem; }
}

/* ============================================================
   PlunaPortal 1.6.126 · award card typography + effect stage
   The effect stage is intentionally inert until a named effect is
   registered. It gives special awards a safe, pointer-events-free canvas.
   ============================================================ */
.mc-award-card-description {
  margin-top: 2px;
  font-size: .91rem;
  line-height: 1.42;
}
.mc-award-granted-date {
  margin-top: 6px;
  font-size: .68rem;
  line-height: 1.2;
  font-weight: 600;
  letter-spacing: .005em;
}
.mc-award-granted-date i {
  font-size: .70rem;
}
.mc-award-preview-copy p {
  font-size: 1rem;
  line-height: 1.58;
}
.mc-award-preview-date {
  font-size: .74rem;
}
.mc-award-preview-effects {
  position: absolute;
  inset: 0;
  z-index: 4;
  overflow: hidden;
  pointer-events: none;
  contain: layout paint;
}
.mc-award-preview-effects:empty {
  display: block;
}
.mc-award-preview-modal[data-active-award-effect=""],
.mc-award-preview-modal[data-active-award-effect="none"] {
  --mc-award-effect-active: 0;
}
.mc-award-preview-dialog {
  z-index: 3;
}
@media (max-width: 650px) {
  .mc-award-card-description { font-size: .88rem; }
  .mc-award-preview-copy p { font-size: .96rem; }
}

/* ============================================================
   PlunaPortal 1.6.127 · Award FX engine
   HARD RULE: the visual cell is the clipping boundary. Award effects exist
   only inside this rectangle and are never rendered over modal copy/page.
   ============================================================ */
.mc-award-preview-visual {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  contain: paint;
}
.mc-award-preview-medal-root {
  position: relative;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 100%;
  max-width: 100%;
}
.mc-award-preview-motion-layer {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  transform-origin: center center;
  will-change: transform;
}
.mc-award-preview-visual #portalAwardPreviewImage {
  position: relative;
  z-index: 2;
  transform-origin: center center;
  will-change: transform, filter;
}
.mc-award-preview-visual .mc-award-preview-effects {
  position: absolute;
  inset: 0;
  z-index: 3;
  overflow: hidden;
  pointer-events: none;
  contain: strict;
  border-radius: inherit;
}
.mc-award-fx-particle {
  position: absolute;
  display: block;
  pointer-events: none;
  will-change: transform, opacity;
}
.mc-award-fx-particle.is-burst {
  border-radius: 50%;
  box-shadow: 0 0 7px rgba(255, 211, 94, .45);
}
.mc-award-fx-particle.is-speedline {
  border-radius: 999px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.88), rgba(var(--portal-primary-rgb), .72));
  filter: blur(.2px);
}
.mc-award-fx-particle.is-dust {
  border-radius: 50%;
  background: rgba(173, 129, 83, .72);
  box-shadow: 0 0 7px rgba(173,129,83,.24);
}
.mc-award-fx-particle.is-leaf {
  width: 9px;
  height: 5px;
  border-radius: 90% 10% 90% 10%;
  background: linear-gradient(135deg, #9eb757, #4f783e);
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.08);
}
.mc-award-fx-particle.is-shine {
  top: -18%;
  bottom: -18%;
  left: 34%;
  width: 23%;
  height: 136%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.08), rgba(255,255,255,.72), rgba(255,255,255,.08), transparent);
  filter: blur(1px);
  mix-blend-mode: screen;
}

.mc-award-fx-particle.is-spark{border-radius:999px;background:linear-gradient(90deg,#fff7bd,#ffc247,#ff7a1a);box-shadow:0 0 7px rgba(255,177,52,.78)}
.mc-award-fx-particle.is-star{color:#ffe680;text-shadow:0 0 8px rgba(255,215,74,.8);font-weight:700;line-height:1}
.mc-award-fx-particle.is-coin{border-radius:50%;background:radial-gradient(circle at 34% 30%,#fff3a4,#ffc531 48%,#b97600);border:1px solid rgba(117,74,0,.35);box-shadow:0 0 7px rgba(255,196,45,.38)}
.mc-award-fx-particle.is-bubble{border-radius:50%;border:1px solid rgba(190,235,255,.75);background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.7),rgba(135,211,255,.15) 55%,rgba(105,173,255,.08));box-shadow:inset -2px -3px 8px rgba(54,125,190,.13)}
.mc-award-fx-particle.is-snow{border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 0 8px rgba(205,235,255,.68)}
.mc-award-fx-particle.is-rain{border-radius:999px;background:linear-gradient(to bottom,rgba(205,235,255,0),rgba(136,204,255,.8))}
.mc-award-fx-particle.is-petal{border-radius:80% 20% 75% 25%;background:linear-gradient(135deg,#ffd5e8,#ff91c0);box-shadow:0 0 5px rgba(255,128,184,.2)}
.mc-award-fx-particle.is-ember{border-radius:50%;background:#ff8b2b;box-shadow:0 0 9px #ff6a00,0 0 15px rgba(255,155,36,.5)}
.mc-award-fx-particle.is-smoke{border-radius:50%;background:rgba(160,170,180,.28);filter:blur(4px)}
.mc-award-fx-particle.is-ring{border-radius:50%;border:2px solid rgba(130,207,255,.7);box-shadow:0 0 10px rgba(83,177,255,.22)}
.mc-award-fx-particle.is-scan{left:0;right:0;height:3px;background:linear-gradient(90deg,transparent,rgba(109,224,255,.85),transparent);box-shadow:0 0 12px rgba(86,213,255,.75)}
.mc-award-fx-particle.is-lightning{background:linear-gradient(180deg,#fffbd0,#ffe34d 45%,#ffb300);filter:drop-shadow(0 0 9px rgba(255,222,73,.95));clip-path:polygon(44% 0,72% 0,58% 38%,86% 38%,26% 100%,42% 56%,14% 56%)}
@media (prefers-reduced-motion: reduce) {
  .mc-award-preview-visual #portalAwardPreviewImage,
  .mc-award-preview-motion-layer,
  .mc-award-fx-particle { will-change: auto; }
}

/* PlunaPortal 1.6.128 · pilot profile links */
.mc-pilot-link {
  color: inherit;
  text-decoration: none !important;
  transition: color .14s ease, opacity .14s ease, transform .14s ease;
}
a.mc-pilot-link:hover, a.mc-pilot-link:focus-visible {
  color: var(--portal-primary-ink-current);
  text-decoration: none !important;
  opacity: .96;
}
a.mc-pilot-link:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--portal-primary) 42%, transparent);
  outline-offset: 2px;
  border-radius: 4px;
}
@media (prefers-reduced-motion: no-preference) {
  a.mc-pilot-link:hover { transform: translateY(-1px); }
}

/* PlunaPortal 1.6.129 · runway/off-runway visualization. */
.mc-rwy-label,.mc-rwy-zone-label{font-size:13px}
.mc-rwy-touchdown-label{font-size:14px}
.mc-rwy-dimension-label{font-size:14px}
.mc-rwy-offrunway-backdrop{fill:rgba(8,18,31,.92);stroke:rgba(255,59,77,.62);stroke-width:1.5}
.mc-rwy-offrunway-text{font-family:var(--portal-font-headings);font-size:21px;font-weight:950;letter-spacing:.025em;fill:#ff3b4d;paint-order:stroke fill;stroke:rgba(8,18,31,.96);stroke-width:3px;stroke-linejoin:round}
.mc-rwy-offrunway-icon path{fill:#ff3b4d;stroke:rgba(8,18,31,.96);stroke-width:3px;stroke-linejoin:round}
.mc-rwy-offrunway-icon line{stroke:#0b1725;stroke-width:4px;stroke-linecap:round}
.mc-rwy-offrunway-icon circle{fill:#0b1725}


/* PlunaPortal 1.6.134 · Award PIREP provenance */
.mc-award-preview-flights {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--portal-border-current);
}
.mc-award-preview-flights[hidden] { display: none !important; }
.mc-award-preview-flights-title {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 8px;
  color: var(--portal-heading-current);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .02em;
}
.mc-award-preview-flights-title i { color: var(--portal-primary-ink-current); }
.mc-award-preview-flights-list {
  display: grid;
  gap: 5px;
}
.mc-award-preview-flight-row {
  display: grid;
  grid-template-columns: 72px minmax(76px, .8fr) minmax(118px, 1.25fr);
  align-items: center;
  gap: 8px;
  min-width: 0;
  padding: 7px 9px;
  border: 1px solid color-mix(in srgb, var(--portal-border-current) 78%, transparent);
  border-radius: 8px;
  background: color-mix(in srgb, var(--portal-card-bg-current) 95%, var(--portal-primary) 5%);
  font-size: .76rem;
  line-height: 1.25;
}
.mc-award-preview-flight-date,
.mc-award-preview-flight-route {
  color: var(--portal-muted-current);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mc-award-preview-flight-ident {
  min-width: 0;
  font-weight: 850;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mc-award-preview-flight-ident a {
  color: var(--portal-primary-ink-current);
  text-decoration: none;
}
.mc-award-preview-flight-ident a:hover { text-decoration: underline; }
@media (max-width: 650px) {
  .mc-award-preview-flight-row {
    grid-template-columns: 68px minmax(70px, .72fr) minmax(96px, 1.15fr);
    gap: 6px;
    font-size: .72rem;
  }
}

/* PlunaPortal 1.6.135 · Award modal lists every distinct active FPE qualifying PIREP. */


/* PlunaPortal 1.6.137 · 3-row Award viewport + exact 4-row dashboard tables */
.mc-award-preview-flights-list {
  --mc-award-flight-row-height: 34px;
  max-height: calc((var(--mc-award-flight-row-height) * 3) + 10px);
  overflow-y: auto;
  overflow-x: hidden;
  padding-right: 4px;
  scrollbar-gutter: stable;
  overscroll-behavior: contain;
}
.mc-award-preview-flight-row {
  min-height: var(--mc-award-flight-row-height);
}

.mc-dashboard-table-scroll {
  overflow: auto;
  scrollbar-gutter: stable both-edges;
  overscroll-behavior: contain;
}
/* The exact max-height is measured in portal.js from the real header + first
   four rendered rows, so logos/status content cannot leave a fifth partial row. */
.mc-dashboard-table-scroll table thead th {
  position: sticky;
  top: 0;
  z-index: 4;
  background: var(--portal-panel-header-bg-current) !important;
  color: var(--portal-panel-header-text-current) !important;
  box-shadow: 0 1px 0 var(--portal-border-current);
}

/* PlunaPortal 1.0.85 · compact FPE runway warning */
.mc-rwy-offrunway-text{font-size:21px!important}


/* PlunaPortal 1.0.87 · PIREP score presentation + header spacing */
.mc-pirep-hero.mc-pirep-hero-detail {
  padding: 18px 22px 28px;
  border-bottom-width: 1px;
}
.mc-pirep-hero-detail .mc-pirep-scorebar {
  position: absolute;
  left: -1px;
  right: -1px;
  bottom: -1px;
  height: 20px;
  margin: 0;
  overflow: hidden;
  border-radius: 0 0 calc(var(--portal-radius) + 2px) calc(var(--portal-radius) + 2px);
  background: rgba(255,255,255,.18);
}
.mc-pirep-hero-detail .mc-pirep-scorebar .progress-bar {
  border-radius: inherit;
}
.mc-pirep-hero-detail .mc-pirep-scorebar-label {
  position: absolute;
  inset: 0 8px 0 auto;
  z-index: 2;
  display: flex;
  align-items: center;
  color: #fff;
  font-size: calc(.69rem + 1px);
  font-weight: 900;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  text-shadow: 0 1px 2px rgba(0,0,0,.6);
  pointer-events: none;
}
@media (max-width: 767.98px) {
  .mc-pirep-hero.mc-pirep-hero-detail { padding: 16px 16px 26px; }
}


/* PlunaPortal 1.0.92 · optional TransportExperience reputation detail. */
.mc-profile-reputation-item strong { display:block; }


/* ============================================================
   PlunaPortal 1.0.95 - aircraft reservations and profile cleanup
   ============================================================ */
.mc-flight-reserved-aircraft {
  display: inline-flex;
  align-items: center;
  gap: .38rem;
  flex-wrap: wrap;
}
.mc-flight-reserved-aircraft strong { font-weight: 800; }
.mc-flight-reserved-aircraft small {
  color: var(--portal-muted-current);
  font-size: .72rem;
  font-weight: 700;
}

.mc-aircraft-operational-card {
  display: grid;
  grid-template-columns: minmax(220px, .72fr) minmax(0, 2.28fr);
  gap: 18px;
  align-items: stretch;
  margin: 0 0 16px;
  padding: 16px 18px;
  border: 1px solid var(--portal-border-current);
  border-left: 4px solid var(--portal-muted-current);
  border-radius: var(--portal-radius);
  background: var(--portal-card-bg-current);
  color: var(--portal-card-text-current);
}
.mc-aircraft-operational-card.is-available { border-left-color: #2f9e62; }
.mc-aircraft-operational-card.is-reserved { border-left-color: #d69e2e; }
.mc-aircraft-operational-card.is-maintenance,
.mc-aircraft-operational-card.is-unavailable { border-left-color: #c84b4b; }
.mc-aircraft-operational-main {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  padding-right: 18px;
  border-right: 1px solid var(--portal-border-current);
}
.mc-aircraft-operational-kicker {
  color: var(--portal-muted-current);
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .065em;
  text-transform: uppercase;
}
.mc-aircraft-operational-state {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 4px 0 2px;
}
.mc-aircraft-operational-state strong { font-size: 1.08rem; }
.mc-aircraft-operational-dot {
  width: 10px;
  height: 10px;
  flex: 0 0 10px;
  border-radius: 50%;
  background: var(--portal-muted-current);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--portal-muted-current) 15%, transparent);
}
.is-available .mc-aircraft-operational-dot { background:#2f9e62; box-shadow:0 0 0 4px rgba(47,158,98,.13); }
.is-reserved .mc-aircraft-operational-dot { background:#d69e2e; box-shadow:0 0 0 4px rgba(214,158,46,.15); }
.is-maintenance .mc-aircraft-operational-dot,
.is-unavailable .mc-aircraft-operational-dot { background:#c84b4b; box-shadow:0 0 0 4px rgba(200,75,75,.14); }
.mc-aircraft-operational-main small { color: var(--portal-muted-current); }
.mc-aircraft-operational-details {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px 16px;
  margin: 0;
  align-items: center;
}
.mc-aircraft-operational-details > div { min-width:0; }
.mc-aircraft-operational-details dt {
  margin: 0 0 3px;
  color: var(--portal-muted-current);
  font-size: .67rem;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.mc-aircraft-operational-details dd {
  margin: 0;
  color: var(--portal-card-text-current);
  font-size: .83rem;
  font-weight: 700;
  line-height: 1.32;
  overflow-wrap: anywhere;
}
.mc-aircraft-operational-details dd small {
  display: block;
  margin-top: 2px;
  color: var(--portal-muted-current);
  font-size: .7rem;
  font-weight: 600;
}
.mc-aircraft-operational-free {
  display:flex;
  align-items:center;
  gap:9px;
  color:var(--portal-muted-current);
  font-size:.84rem;
  font-weight:650;
}
.mc-aircraft-operational-free i { color:#2f9e62; font-size:1.05rem; }

/* Keep every row in the DOM/data set; only the viewport is constrained. */
.mc-aircraft-history-scroll {
  max-height: 510px; /* header + approximately 10 compact rows */
  overflow: auto !important;
  scrollbar-gutter: stable;
}
.mc-aircraft-history-scroll table { margin-bottom: 0; }
.mc-aircraft-history-scroll thead th {
  position: sticky;
  top: 0;
  z-index: 2;
}
.mc-aircraft-reports-card .mc-aircraft-history-scroll tbody tr { min-height: 46px; }
.mc-maint-table-wrap.mc-aircraft-history-scroll { max-height: 510px; }

@media (max-width: 991.98px) {
  .mc-aircraft-operational-card { grid-template-columns: 1fr; }
  .mc-aircraft-operational-main {
    padding-right: 0;
    padding-bottom: 12px;
    border-right: 0;
    border-bottom: 1px solid var(--portal-border-current);
  }
  .mc-aircraft-operational-details { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
  .mc-aircraft-operational-details { grid-template-columns: 1fr; }
  .mc-aircraft-history-scroll { max-height: 500px; }
}

/* PlunaPortal 1.0.96 · sortable active reservations */
.mc-booking-sort {
  border: 0;
  background: transparent;
  padding: 0;
  font: inherit;
  font-weight: inherit;
  text-align: inherit;
  cursor: pointer;
}

/* PlunaPortal 1.0.97 · active reservations polish + 7-row viewport */
.mc-active-bookings-scroll {
  overflow: auto !important;
  scrollbar-gutter: stable;
  overscroll-behavior: contain;
}
.mc-active-bookings-scroll table { margin-bottom: 0; }
.mc-active-bookings-scroll table thead th {
  position: sticky;
  top: 0;
  z-index: 4;
  background: var(--portal-panel-contrast-current) !important;
  color: var(--portal-table-header-text-current) !important;
  box-shadow: 0 1px 0 var(--portal-border-current);
}
.mc-active-bookings-card .mc-booking-sort {
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  min-height: 0;
  font: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  color: inherit !important;
  text-align: inherit;
  cursor: pointer;
  justify-content: flex-start;
}
.mc-active-bookings-card th.text-end .mc-booking-sort { justify-content: flex-end; }
.mc-active-bookings-card .mc-booking-sort:focus-visible {
  outline: 1px solid color-mix(in srgb, var(--portal-primary) 55%, transparent);
  outline-offset: 3px;
  border-radius: 3px;
}
.mc-active-bookings-card .mc-booking-sort .bi {
  font-size: .68rem;
  opacity: .5;
}
.mc-active-bookings-card .table.table-sm > :not(caption) > * > * {
  padding: .68rem .65rem;
}
.mc-active-bookings-card .table thead th {
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.mc-active-bookings-card .table tbody td { font-size: .9rem; }

.mc-aircraft-operation-link {
  display: inline-flex;
  align-items: center;
  gap: .34rem;
  color: inherit;
  text-decoration: none;
  border-bottom: 1px dashed color-mix(in srgb, currentColor 38%, transparent);
}
.mc-aircraft-operation-link:hover,
.mc-aircraft-operation-link:focus-visible {
  color: var(--portal-primary-ink-current);
  text-decoration: none;
  border-bottom-color: currentColor;
}
.mc-aircraft-operation-link .bi { font-size: .72rem; opacity: .72; }

/* ============================================================
   PlunaPortal 1.0.98 · visual consistency for reservations/status links
   ============================================================ */
/* Keep a clear hierarchy: section title, column header and rows must read as
   three different layers. The previous reservation header reused the panel
   header colour and visually merged with the section title. */
.mc-active-bookings-card > .card-header {
  background: var(--portal-panel-contrast-current) !important;
  color: var(--portal-panel-header-text-current) !important;
  border-bottom: 1px solid var(--portal-border-current) !important;
}
.mc-active-bookings-scroll table thead th,
.mc-active-bookings-card .table thead th {
  background: var(--portal-subtle-surface-current) !important;
  color: var(--portal-muted-current) !important;
  border-bottom: 1px solid var(--portal-border-current) !important;
  box-shadow: 0 1px 0 color-mix(in srgb, var(--portal-border-current) 72%, transparent);
  text-transform: none !important;
  letter-spacing: .015em;
  font-size: .78rem;
  font-weight: 750;
}
[data-bs-theme="dark"] .mc-active-bookings-scroll table thead th,
[data-bs-theme="dark"] .mc-active-bookings-card .table thead th {
  background: color-mix(in srgb, var(--portal-card-bg-current) 88%, var(--portal-text-current) 12%) !important;
  color: var(--portal-dark-muted-safe) !important;
}
[data-bs-theme="light"] .mc-active-bookings-scroll table thead th,
[data-bs-theme="light"] .mc-active-bookings-card .table thead th {
  background: color-mix(in srgb, var(--portal-card-bg-current) 94%, var(--portal-primary) 6%) !important;
  color: var(--portal-muted-current) !important;
}
.mc-active-bookings-card .mc-booking-sort {
  color: inherit !important;
  border-radius: 4px;
  transition: color .12s ease, background-color .12s ease;
}
.mc-active-bookings-card .mc-booking-sort:hover,
.mc-active-bookings-card .mc-booking-sort:focus-visible {
  color: var(--portal-link-current) !important;
  background: color-mix(in srgb, var(--portal-link-current) 8%, transparent);
}
.mc-active-bookings-card .mc-booking-sort .bi {
  color: currentColor;
  opacity: .42;
}
.mc-active-bookings-card .mc-booking-sort:hover .bi,
.mc-active-bookings-card .mc-booking-sort:focus-visible .bi,
.mc-active-bookings-card .mc-booking-sort[aria-sort] .bi {
  opacity: .82;
}

/* Every clickable value inside the reservations table uses the same palette.
   This intentionally overrides older mc-airport-link/mc-pilot-link rules that
   inherited cell colour. */
.mc-active-bookings-card tbody a:not(.btn) {
  color: var(--portal-link-current) !important;
  text-decoration: none !important;
  font-weight: inherit;
}
.mc-active-bookings-card tbody a:not(.btn):hover,
.mc-active-bookings-card tbody a:not(.btn):focus-visible {
  color: var(--portal-link-hover-current) !important;
  text-decoration: none !important;
}

/* Operation in aircraft status behaves like every other portal link; do not
   swap to a different hard-coded/primary colour on hover. */
.mc-aircraft-operation-link {
  color: var(--portal-link-current) !important;
  border-bottom: 0 !important;
  text-decoration: none !important;
}
.mc-aircraft-operation-link:hover,
.mc-aircraft-operation-link:focus-visible {
  color: var(--portal-link-hover-current) !important;
  border-bottom: 0 !important;
  text-decoration: none !important;
}
.mc-aircraft-operation-link .bi { color: currentColor; }


/* ======================================================================
   PLUNA Portal 1.0.103 · dark-mode foreground contrast
   Keep PLUNA primary for fills/borders, but never use the dark primary as
   foreground text on dark surfaces.
   ====================================================================== */
[data-bs-theme="dark"] {
  --bs-link-color: var(--portal-dark-link-safe);
  --bs-link-hover-color: var(--portal-dark-link-hover-safe);
}
[data-bs-theme="dark"] .portal-content :is(.text-primary,.link-primary) {
  color: var(--portal-dark-link-safe) !important;
}


/* ======================================================================
   PLUNA Portal 1.0.106 · landing dynamics inside runway reconstruction
   Keep every touchdown metric next to the FPE runway geometry instead of
   scattering landing data through generic PIREP sections.
   ====================================================================== */
.mc-landing-dynamics{margin-top:14px;padding-top:13px;border-top:1px solid var(--portal-border-current)}
.mc-landing-dynamics-title{display:flex;align-items:center;gap:8px;margin:0 0 9px;color:var(--portal-text-current);font-family:var(--portal-font-headings);font-size:.9rem;font-weight:900;letter-spacing:.01em}
.mc-landing-dynamics-title .bi{color:var(--portal-primary-ink-current);font-size:1rem}
.mc-landing-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.mc-landing-metric{position:relative;min-width:0;padding:11px 12px;border:1px solid var(--portal-border-current);border-radius:var(--portal-radius);background:rgba(var(--portal-primary-rgb),.022);overflow:hidden}
.mc-landing-metric-primary{background:linear-gradient(145deg,rgba(var(--portal-primary-rgb),.075),rgba(var(--portal-primary-rgb),.025));border-color:rgba(var(--portal-primary-rgb),.28)}
.mc-landing-metric small{display:block;margin-bottom:3px;color:var(--portal-muted-current);font-size:.67rem;font-weight:850;text-transform:uppercase;letter-spacing:.04em;line-height:1.2}
.mc-landing-metric strong{display:block;color:var(--portal-text-current);font-family:var(--portal-font-headings);font-size:1rem;font-weight:900;font-variant-numeric:tabular-nums;line-height:1.25;overflow-wrap:anywhere}
.mc-landing-metric span{display:block;margin-top:3px;color:var(--portal-muted-current);font-size:.7rem;font-weight:700;font-variant-numeric:tabular-nums}
@media(max-width:991.98px){.mc-landing-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575.98px){.mc-landing-metrics{grid-template-columns:1fr}}
