/* ============================================================
   NORSE VIRTUAL — Design System, Phase 1
   Backgrounds by page family + card shadow language + type
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap');

/* ---- Grounds (assigned by norse.js via body class) ---- */
body.nv-bg-oatmeal { background: url('/assets/norse/textures/oatmeal.jpg') center / cover fixed no-repeat #DDD3BC !important; }
body.nv-bg-oak     { background: url('/assets/norse/textures/oak.jpg') center / cover fixed no-repeat #C99B5F !important; }
body.nv-bg-cirrus { background: url('/assets/norse/textures/cirrus.jpg') center / cover fixed no-repeat #4A86C4 !important; }
body.nv-bg-globesky { background: linear-gradient(180deg, #7FA8D4, #9FBFE0, #C2D7EC, #8FB2D8) fixed !important; }
body.nv-bg-sky     { background: url('/assets/norse/textures/sky.jpg') center / cover fixed no-repeat #C7D0DA !important; }
body.nv-bg-water   { background: url('/assets/norse/textures/water.jpg') center / cover fixed no-repeat #3E6E96 !important; }
body.nv-bg-grass   { background: url('/assets/norse/textures/grass.jpg') center / cover fixed no-repeat #2E4A26 !important; }
body.nv-bg-taxiway { background: url('/assets/norse/textures/taxiway.png') center / cover fixed no-repeat #9A9186 !important; }
body.nv-bg-wool    { background: url('/assets/norse/textures/wool.jpg') center / cover fixed no-repeat #1E3A66 !important; }

/* ---- De-opaque theme wrappers that cover the body ---- */
body[class*="nv-bg-"] .wrapper,
body[class*="nv-bg-"] .page-header,
body[class*="nv-bg-"] .main-panel,
body[class*="nv-bg-"] .full-page {
  background: transparent !important;
}

/* ---- Card shadow language: one spec, three weights ---- */
.card {
  border: none;
  border-radius: 12px;
  background-color: #FBFDFE;
  box-shadow:
    0 24px 48px rgba(2, 20, 45, .35),
    0 6px 16px rgba(2, 20, 45, .22),
    0 1px 3px rgba(2, 20, 45, .18);
}
body.nv-dark .card {
  box-shadow:
    0 28px 56px rgba(0, 6, 18, .6),
    0 8px 20px rgba(0, 6, 18, .4),
    0 1px 3px rgba(0, 6, 18, .3);
}
body.nv-mid .card {
  box-shadow:
    0 26px 52px rgba(6, 24, 44, .5),
    0 7px 18px rgba(6, 24, 44, .34),
    0 1px 3px rgba(6, 24, 44, .28);
}

/* ---- Type ---- */
h1, h2, h3, h4, h5,
.card-header, .page-title {
  font-family: 'Barlow Condensed', 'IBM Plex Sans', sans-serif;
  letter-spacing: .04em;
}
body { font-family: 'IBM Plex Sans', -apple-system, 'Segoe UI', sans-serif; }

/* ---- Ported globals from the original Norse layout ---- */
:root{
  --nv-navy:#223656; --nv-navy-deep:#1A2A44; --nv-deep:#28487E;
  --nv-bright:#2C73BA; --nv-pale:#88B0D8; --nv-sky:#EEF3F7; --nv-ink:#22364F;
  --nv-disp:'Barlow Condensed',sans-serif; --nv-body:'IBM Plex Sans',sans-serif; --nv-mono:'IBM Plex Mono',monospace;
}
.nv-board-head{background:var(--nv-navy);color:#fff;border-radius:.5rem .5rem 0 0;
  padding:.7rem 1.1rem;font-family:var(--nv-disp);font-size:1.05rem;letter-spacing:.12em;text-transform:uppercase;
  box-shadow: 0 -2px 12px rgba(2,20,45,.15);}
.nv-board-head .nv-dot{display:inline-block;width:8px;height:8px;border-radius:50%;
  background:#4FB06D;margin-right:9px;animation:nvblink 2.4s infinite;vertical-align:middle;}
@keyframes nvblink{50%{opacity:.35}}
.card .card-header,.card-header{background:var(--nv-navy) !important;color:#fff !important;}
.btn-primary,.bg-primary{background:var(--nv-bright) !important;border-color:var(--nv-bright) !important;}
.btn-primary:hover{background:var(--nv-deep) !important;border-color:var(--nv-deep) !important;}
a{color:var(--nv-bright);}
a:hover{color:var(--nv-deep);}
.progress-bar{background-color:var(--nv-bright) !important;}
.badge-primary{background:var(--nv-bright) !important;}
table thead th{font-family:var(--nv-disp);letter-spacing:.06em;text-transform:uppercase;font-size:.85rem;}
.nav-tabs[style]{background:var(--nv-navy) !important;}

/* ---- Rail nav v2: the stamped anatomy ---- */
.nv-nav { display:flex; flex-direction:column; height:100%; padding: 14px 12px !important; }
.nv-rail { display:flex; flex-direction:column; height:100%; min-height:0; }
.nv-primary { flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden;
  list-style:none; margin:0; padding:0; scrollbar-width:thin;
  scrollbar-color:rgba(136,176,216,.35) transparent; }
.nv-primary::-webkit-scrollbar { width:5px; }
.nv-primary::-webkit-scrollbar-thumb { background:rgba(136,176,216,.35); border-radius:3px; }
.nv-primary::-webkit-scrollbar-track { background:transparent; }
.nv-tools { flex:0 0 auto; }
.nv-primary li { margin-bottom: 4px; }
.nv-primary a {
  display:flex; align-items:center; gap:13px;
  color:#B9CCE2; text-decoration:none;
  font-family:'Barlow Condensed',sans-serif; font-weight:600;
  font-size:17px; letter-spacing:.12em; text-transform:uppercase;
  padding: 12px 15px; border-radius:9px;
}

/* nv-rail-fit: 13 nav items do not fit a 13in laptop at 100% zoom, so the
   rail tightens progressively rather than overflowing under the pilot foot. */
@media (max-height: 900px) {
  .nv-primary a { font-size:16px; padding:9px 14px; gap:11px; }
  .nv-primary li { margin-bottom:2px; }
}
@media (max-height: 780px) {
  .nv-primary a { font-size:15px; padding:7px 13px; gap:10px; letter-spacing:.1em; }
  .nv-primary li { margin-bottom:1px; }
  .nv-primary a i { width:18px; }
  .nv-tool, .nv-tool a { padding:6px 13px; font-size:11px; }
}
/* nv-icon-lock: flex items default to min-width:auto, so a wide glyph
   (graduation cap, tachometer) overflows its 20px box and shifts the label.
   Pinning basis, grow, shrink and min-width keeps every first letter on the
   same vertical line. Applies to the Discord SVG in Crew Room too. */
.nv-primary a i,
.nv-primary a svg { flex:0 0 20px; width:20px; min-width:20px; max-width:20px;
  text-align:center; opacity:.85; overflow:visible; }
.nv-tool i, .nv-tool a i,
.nv-tool svg, .nv-tool a svg { flex:0 0 16px; width:16px; min-width:16px; max-width:16px;
  text-align:center; }
.nv-primary a:hover { background:rgba(44,115,186,.2); color:#fff; }
.nv-primary a.active { background:#2C73BA; color:#fff; box-shadow:0 6px 16px rgba(2,20,45,.4); }
.nv-tools { border-top:1px solid rgba(136,176,216,.18); padding-top:10px; }
.nv-tool, .nv-tool a {
  display:flex; align-items:center; gap:10px; color:#88B0D8; text-decoration:none;
  font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.16em; text-transform:uppercase;
  padding: 8px 15px; border-radius:7px;
}
.nv-tool:hover, .nv-tool a:hover { color:#fff; background:rgba(44,115,186,.15); }
.nv-lang { position:relative; padding:0; }
.nv-lang .dropdown-menu { background:#16294A; border:1px solid rgba(136,176,216,.25); }
.nv-lang .dropdown-item { color:#B9CCE2; font-size:12px; }
.nv-lang .dropdown-item:hover { background:rgba(44,115,186,.25); color:#fff; }

/* ---- Stock card headers: full board-head costume ---- */
.card .card-header, .card-header {
  font-family: var(--nv-disp) !important;
  font-size: 1.05rem !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
  padding: .7rem 1.35rem !important;
  border-bottom: none !important;
  border-radius: .5rem .5rem 0 0 !important;
}
.card { border-top-left-radius: .5rem; border-top-right-radius: .5rem; }
.card .card-body:first-child { border-radius: .5rem .5rem 0 0; }
.card-header + .card-body, .card-header + div {
  border-top-left-radius: 0 !important;
  border-top-right-radius: 0 !important;
}

/* ---- Widget tables: the uniform ---- */
.nv-wtable { width:100%; border-collapse:collapse; }
.nv-wtable td {
  font-family: var(--nv-mono); font-size: 12.5px; letter-spacing:.06em;
  color:#223656; padding: 9px 10px 9px 0;
  border-bottom: 1px dashed rgba(40,72,126,.22);
}
.nv-wtable tr:last-child td { border-bottom:none; }
.nv-wtable a { color: var(--nv-bright); font-weight:600; text-decoration:none; }
.nv-wtable a:hover { color: var(--nv-deep); }
.nv-w-ident { font-family: var(--nv-disp) !important; font-size:15px !important; letter-spacing:.08em; color:#02295B !important; text-transform:uppercase; }
.nv-w-arrow { color: var(--nv-bright); padding: 0 4px; }
.nv-w-dim { color:#46597e !important; }
.nv-w-headrow td { font-family: var(--nv-disp) !important; font-size:13px !important; text-transform:uppercase; letter-spacing:.12em; color:#28487E !important; border-bottom:1px solid rgba(40,72,126,.35) !important; }
.nv-wtable-kv td:first-child { color:#46597e; letter-spacing:.1em; text-transform:uppercase; font-size:11.5px; white-space:nowrap; padding-right:18px; }

/* ---- Daylight FIDS rows (C4) + board chips: site-wide ---- */
.nv-fids {
  display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
  background:#EEF3F7; color:#12305e; border:1px solid #C7D4E2; border-radius:9px;
  padding: 12px 16px; margin-bottom:9px;
  font-family: var(--nv-mono); font-size:12.5px; letter-spacing:.06em;
}
.nv-fids:last-child { margin-bottom:0; }
.nv-fids a { color: var(--nv-bright); font-weight:600; text-decoration:none; }
.nv-f-lbl { color:#46597e; font-size:10.5px; letter-spacing:.14em; margin-right:7px; }
.nv-f-id { font-family: var(--nv-disp); font-size:15px; letter-spacing:.08em; color:#02295B; }
.nv-f-arrow { color: var(--nv-bright); padding: 0 3px; }
.nv-f-gold { color:#B8860B; font-weight:500; }
.nv-chip {
  font-family: var(--nv-mono); font-size:11px; letter-spacing:.14em;
  background:rgba(136,176,216,.18); border:1px solid rgba(136,176,216,.35);
  border-radius:6px; padding: 4px 11px; color:#B9CCE2;
}
.nv-chip b { color:#FFD98E; font-weight:500; }

/* ---- Airborne table (Daylight) + empty state ---- */
.nv-airborne { width:100%; border-collapse:collapse; font-family: var(--nv-mono); font-size:12.5px; color:#12305e; }
.nv-airborne thead td { font-family: var(--nv-disp); font-size:13px; text-transform:uppercase; letter-spacing:.12em; color:#28487E; border-bottom:1px solid rgba(40,72,126,.35); padding: 8px 10px 8px 0; }
.nv-airborne tbody td { padding: 10px 10px 10px 0; border-bottom:1px dashed rgba(40,72,126,.22); }
.nv-airborne tbody tr:last-child td { border-bottom:none; }
.nv-airborne a { color: var(--nv-bright); font-weight:600; text-decoration:none; }
.nv-empty { text-align:center; padding: 26px 20px; font-family: var(--nv-mono); font-size:12px; letter-spacing:.22em; color:#7d8ba3; text-transform:uppercase; }

/* ---- Flights journey page ---- */
.nv-jc-eyebrow { font-family:var(--nv-mono); font-size:11px; letter-spacing:.26em; color:#28487E; text-transform:uppercase; margin-bottom:6px; }
.nv-jc-title { font-family:var(--nv-disp); font-weight:700; font-size:34px; letter-spacing:.08em; text-transform:uppercase; color:#02295B; margin:0; }
.nv-jc-toggle { display:inline-flex; border:1px solid #C7D4E2; border-radius:9px; overflow:hidden; }
.nv-jc-toggle span { padding: 10px 20px; cursor:pointer; font-family:var(--nv-disp); font-weight:600; font-size:14px; letter-spacing:.12em; text-transform:uppercase; color:#46597e; background:#EEF3F7; }
.nv-jc-toggle span.on { background:#02295B; color:#fff; }
.nv-jc-reset { cursor:pointer; font-family:var(--nv-mono); font-size:10.5px; letter-spacing:.16em; color:#88B0D8; text-transform:uppercase; }
.nv-jc-reset:hover { color:#fff; }
.nv-jc-crumbs { font-family:var(--nv-mono); font-size:11px; letter-spacing:.14em; color:#46597e; text-transform:uppercase; margin-bottom:16px; min-height: 1em; }
.nv-jc-crumbs b { color:#02295B; } .nv-jc-crumbs .sep { color:#C7D4E2; padding: 0 4px; }
.nv-jc-flags { display:grid; grid-template-columns: repeat(auto-fill, minmax(150px,1fr)); gap:14px; }
.nv-jc-flag { cursor:pointer; text-align:center; background:#EEF3F7; border:1px solid #C7D4E2; border-radius:12px; padding: 18px 10px 14px; transition: all .15s; }
.nv-jc-flag:hover { border-color:#2C73BA; background:#fff; transform: translateY(-3px); box-shadow: 0 12px 26px rgba(2,20,45,.2); }
.nv-jc-flag .fl { font-size:44px; line-height:1; display:block; margin-bottom:8px; }
.nv-jc-flag .nm { font-family:var(--nv-disp); font-weight:600; font-size:15px; letter-spacing:.08em; text-transform:uppercase; color:#12305e; display:block; }
.nv-jc-flag .ct { font-family:var(--nv-mono); font-size:9.5px; letter-spacing:.14em; color:#46597e; }
.nv-jc-chips { display:flex; flex-wrap:wrap; gap:12px; }
.nv-jc-chip { display:flex; align-items:center; gap:10px; cursor:pointer; background:#EEF3F7; border:1px solid #C7D4E2; border-radius:10px; padding: 11px 16px; font-family:var(--nv-disp); font-weight:600; font-size:16px; letter-spacing:.08em; text-transform:uppercase; color:#12305e; transition: all .15s; }
.nv-jc-chip:hover { border-color:#2C73BA; background:#fff; box-shadow: 0 6px 16px rgba(2,20,45,.15); }
.nv-jc-chip .mono { font-family:var(--nv-mono); font-size:10px; letter-spacing:.1em; color:#46597e; text-transform:none; }
.nv-jc-back { cursor:pointer; text-align:center; font-family:var(--nv-mono); font-size:11px; letter-spacing:.16em; color:#2C73BA; text-transform:uppercase; padding: 18px 0 4px; }
.nv-jc-book { color:#fff !important; text-decoration:none; background:#2C73BA; border-radius:6px; padding: 7px 16px; font-family:var(--nv-disp); font-weight:600; font-size:14px; letter-spacing:.14em; text-transform:uppercase; cursor:pointer; }
.nv-jc-book:hover { background:#3d84cb; }
.nv-jc-book.booked { background:#2E7D4F; cursor:default; }
.nv-fids-wrap { margin-bottom: 9px; }
.nv-fids-wrap .nv-fids { margin-bottom: 0; }
.nv-jc-reveal { display:none; gap:10px; justify-content:flex-end; align-items:center; background:#E2EAF2; border:1px solid #C7D4E2; border-top:none; border-radius:0 0 9px 9px; padding: 11px 16px; }
.nv-jc-reveal .note { font-family:var(--nv-mono); font-size:10px; letter-spacing:.14em; color:#2E7D4F; margin-right:auto; }
.nv-jc-reveal a { text-decoration:none; border-radius:6px; padding: 8px 18px; font-family:var(--nv-disp); font-weight:600; font-size:14px; letter-spacing:.14em; text-transform:uppercase; }
.nv-jc-reveal a.dispatch { background:#02295B; color:#fff; }
.nv-jc-reveal a.dispatch:hover { background:#0a3a7a; }
.nv-jc-reveal a.bids { color:#28487E; border:1px solid #A9BFD6; }
.nv-jc-reveal a.bids:hover { color:#02295B; border-color:#02295B; }

/* ---- V3 Line & Archive: active vs historical states ---- */
.nv-jc-flag .tag, .nv-jc-chip .tag, .nv-fids .tag {
  display:inline-block; font-family:var(--nv-mono); font-size:8.5px; letter-spacing:.2em;
  padding: 2px 9px; border-radius:5px; margin-top:7px;
}
.nv-jc-chip .tag { margin-top:0; margin-left:8px; }
.nv-fids .tag { margin-top:0; font-size:8px; }

.nv-jc-flag.act, .nv-jc-chip.act { border-bottom:3px solid #2E7D4F !important; }
.nv-jc-flag.act .tag, .nv-jc-chip.act .tag, .nv-fids.act .tag { color:#2E7D4F; border:1px solid #9CCBAD; background:transparent; }

.nv-jc-flag.his, .nv-jc-chip.his {
  background:#FAF9F6 !important; border:1px dashed #C9BFA8 !important; border-bottom:3px solid #B8A16E !important;
  color:#6B5D45 !important;
}
.nv-jc-flag.his .fl { filter: grayscale(.6); opacity:.8; }
.nv-jc-flag.his .nm, .nv-jc-chip.his { color:#6B5D45 !important; }
.nv-jc-flag.his .ct, .nv-jc-chip.his .mono { color:#8A7A5D !important; }
.nv-jc-flag.his .tag, .nv-jc-chip.his .tag, .nv-fids.his .tag { color:#8A6D3B; border:1px dashed #C9AE7A; background:transparent; }
.nv-fids.his { background:#FAF9F6; border:1px dashed #C9BFA8; border-bottom:2px solid #B8A16E; }
.nv-fids.his .nv-f-id { color:#6B5D45; }

/* ---- V3 tile layout fix: count on its own line, tag beneath ---- */
.nv-jc-flag .ct { display:block; margin-top:2px; }
.nv-jc-flag .tag { margin-top:8px; }
body.nv-bg-paper { background: url('/assets/norse/textures/nordic-paper.jpg') center / cover fixed no-repeat #E4E0D8 !important; }
body.nv-bg-sailcloth { background: url('/assets/norse/textures/weathered-sailcloth.jpg') center / cover fixed no-repeat #A9A493 !important; }
body.nv-bg-stone { background: url('/assets/norse/textures/stone-windowpane.jpg') center / cover fixed no-repeat #A9A093 !important; }


/* NVT rail tooltip (Option C navy pill) */
.nvt-tip{position:fixed;transform:translateY(-50%);z-index:99999;background:#223656;border-radius:9px;
  padding:10px 14px;width:212px;display:flex;gap:9px;align-items:flex-start;
  box-shadow:0 10px 26px rgba(2,20,45,.5);pointer-events:none;font-family:'IBM Plex Sans',sans-serif}
.nvt-tip::before{content:'';position:absolute;left:-6px;top:50%;transform:translateY(-50%);
  border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:6px solid #223656}
.nvt-tip-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:4px}
.nvt-tip b{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.11em;color:#EDF4FA;font-weight:500}
.nvt-tip>div{font-size:11.5px;color:#B9CCE2;line-height:1.55}

/* Live Map airborne count pill (Option 3 - glowing) */
.nv-live-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-left: auto;
  padding: 4px 11px 4px 9px;
  background: rgba(80,214,138,.22);
  border: 1px solid rgba(80,214,138,.6);
  border-radius: 20px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .05em;
  color: #A5EFC4;
  vertical-align: middle;
  animation: nvLiveGlow 2.2s ease-in-out infinite;
}
.nv-primary a.active .nv-live-pill { color: #C6F4D9; }
.nv-live-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #4FD68A;
  display: inline-block;
}
/* Bid cycle countdown pill. Same geometry as .nv-live-pill so adjacent rows
   match; only the colour differs. Amber inside 72 hours, red inside 12. */
.nv-bid-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-left: auto;
  padding: 4px 11px 4px 9px;
  border-radius: 20px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .05em;
  vertical-align: middle;
  background: rgba(232,185,92,.20);
  border: 1px solid rgba(232,185,92,.6);
  color: #F0D79A;
}
.nv-bid-pill.urgent {
  background: rgba(240,138,138,.22);
  border-color: rgba(240,138,138,.65);
  color: #F5B3B3;
  animation: nvLiveGlow 2.2s ease-in-out infinite;
}
.nv-primary a.active .nv-bid-pill { color: #FFF0CF; }
.nv-bid-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #E8B95C;
  display: inline-block;
}
.nv-bid-pill.urgent .nv-bid-dot { background: #F08A8A; }

@keyframes nvLiveGlow {
  0%, 100% { box-shadow: 0 0 6px 0 rgba(80,214,138,.5); }
  50% { box-shadow: 0 0 12px 2px rgba(80,214,138,.85); }
}

/* Fleet maintenance pill (orange glow) */
.nv-maint-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-left: auto;
  padding: 4px 11px 4px 9px;
  background: rgba(240,159,39,.2);
  border: 1px solid rgba(240,159,39,.6);
  border-radius: 20px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .05em;
  color: #F6C77A;
  vertical-align: middle;
  animation: nvMaintGlow 2.2s ease-in-out infinite;
}
.nv-primary a.active .nv-maint-pill { color: #FAD9A0; }
.nv-maint-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #EF9F27;
  display: inline-block;
}
@keyframes nvMaintGlow {
  0%, 100% { box-shadow: 0 0 6px 0 rgba(240,159,39,.5); }
  50% { box-shadow: 0 0 12px 2px rgba(240,159,39,.85); }
}

/* Pilots "NEW" badge (gold, static - no glow) */
.nv-new-badge {
  display: inline-flex;
  align-items: center;
  margin-left: auto;
  padding: 3px 10px;
  background: #E5B94A;
  border-radius: 6px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .1em;
  color: #3D2A06;
  vertical-align: middle;
}

/* Command Ladder clap (close to promotion) */
.nv-clap {
  margin-left: auto;
  font-size: 15px;
  line-height: 1;
  vertical-align: middle;
}

/* Command Ladder nav text glow (within 5 hrs of promotion) */
.nv-primary a.nv-cl-glow {
  color: #F0C860 !important;
  animation: nvClGlow 1.8s ease-in-out infinite;
}
@keyframes nvClGlow {
  0%, 100% { text-shadow: 0 0 4px rgba(224,176,55,.5); }
  50% { text-shadow: 0 0 12px rgba(240,200,96,.95); }
}

/* rail section labels */
.nv-nav li.nv-lab{
  font-family:'IBM Plex Mono',monospace; font-weight:500; font-size:10px;
  letter-spacing:.2em; color:#D8E6F4; text-transform:uppercase;
  padding:0 14px; margin:16px 0 7px;
  display:flex !important; align-items:center; gap:9px;
}
.nv-nav li.nv-lab::after{ content:""; flex:1; height:1px; background:rgba(216,230,244,.3); }

/* Body overflow from now-ui-kit disables position:sticky on the rail.
   Sticky requires every ancestor to have overflow:visible. */
html body.nv-shell[class] {
  overflow-x: visible !important;
  overflow-y: visible !important;
}

/* Bid Portal crew pairing badge. Shows only when a pairing exists. */
.nv-pair-badge{display:inline-flex;align-items:center;margin-left:auto;
  background:rgba(127,214,164,.16);border-radius:999px;padding:3px 9px;
  color:#7FD6A4;line-height:0;flex-shrink:0;}
.nv-sidebar a.active .nv-pair-badge{background:rgba(255,255,255,.2);color:#fff;}

/* Open time board: estimated pay at the viewing pilot's rank rate. */
.nvc-pay{color:#2E7D4F;font-weight:500;}
.nvc-paytot{color:#E8C46A;}

/* In Flight rail item. Muted when no flight is active, green and animated when
   one is. Arcs light outward from the dot. */
.nv-sidebar a.nvi-off { color:#5C7396 !important; }
.nv-sidebar a.nvi-off .nvi-ico { opacity:.55; }
.nv-sidebar a.nvi-on { color:#7FD6A4 !important; }
.nv-sidebar a.nvi-on.active, .nv-sidebar a.nvi-off.active { color:#fff !important; }
.nvi-ico { width:20px; display:inline-flex; justify-content:center; flex-shrink:0; }
/* Unread message pill. Geometry, fill, border, type and glow copied verbatim
   from .nv-live-pill so it sits identically beside VATSIM and Crew Room. */
.nvi-badge {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-left: auto;
  padding: 4px 11px 4px 9px;
  background: rgba(80,214,138,.22);
  border: 1px solid rgba(80,214,138,.6);
  border-radius: 20px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .05em;
  color: #A5EFC4;
  vertical-align: middle;
  flex-shrink: 0;
  animation: nvLiveGlow 2.2s ease-in-out infinite;
}
.nv-primary a.active .nvi-badge { color: #C6F4D9; }
.nvi-badge span { font-family: inherit; font-size: inherit; color: inherit; }
.nvi-bub { flex-shrink: 0; color: #4FD68A; }
@keyframes nviArc { 0%,70%,100% { opacity:.25 } 20%,50% { opacity:1 } }
.nv-sidebar a.nvi-on .nvi-a1 { animation: nviArc 2s infinite; }
.nv-sidebar a.nvi-on .nvi-a2 { animation: nviArc 2s infinite; animation-delay:.25s; }
.nv-sidebar a.nvi-on .nvi-a3 { animation: nviArc 2s infinite; animation-delay:.5s; }
@media (prefers-reduced-motion: reduce) {
  .nv-sidebar a.nvi-on .nvi-a1, .nv-sidebar a.nvi-on .nvi-a2, .nv-sidebar a.nvi-on .nvi-a3 { animation:none; opacity:1; }
}
