:root {
  --app-bg: #07111f;
  --panel: #0d1b2d;
  --panel-2: #12243a;
  --border: #233852;
  --text: #eef6ff;
  --muted: #8fa5bd;
  --green: #2fd38a;
  --orange: #ffb547;
  --red: #ff5f6d;
  --blue: #52a8ff;
}

html { background: var(--app-bg); }
body {
  background: radial-gradient(circle at top right, #102e46 0, var(--app-bg) 38rem);
  color: var(--text);
  min-height: 100vh;
  min-height: 100dvh;
  font-size: 1rem;
  padding-left: env(safe-area-inset-left, 0px);
  padding-right: env(safe-area-inset-right, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.app-navbar {
  background: rgba(7, 17, 31, .92);
  backdrop-filter: blur(14px);
  border-color: var(--border) !important;
  padding-top: env(safe-area-inset-top, 0px);
}
@media (display-mode:standalone), (display-mode:fullscreen) {
  body { padding-bottom: env(safe-area-inset-bottom, 0px); }
  .detail-drawer-header { padding-top:max(1rem, calc(.55rem + env(safe-area-inset-top, 0px))); }
}
.navbar-brand { color: var(--text); font-size: 1rem; line-height: 1.05; }
.navbar-brand:hover { color: white; }
.navbar-brand small { font-size: .76rem; }
.brand-mark { display:grid; place-items:center; width:46px; height:38px; border-radius:10px; background:linear-gradient(135deg,var(--green),#0d8c78); color:#04140f; font-weight:900; letter-spacing:.05em; }
.admin-link,.settings-link { display:inline-flex; align-items:center; justify-content:center; gap:.38rem; }
.app-navbar-inner { display:flex; flex-wrap:wrap; align-items:center; gap:.45rem; }
.nav-utility { display:flex; align-items:center; gap:.4rem; order:5; }
.connection-wrap { position:relative; display:flex; align-items:center; }
.connection-dot {
  width:14px; height:14px; padding:0; border:0; border-radius:50%;
  background:#718195; box-shadow:0 0 0 3px rgba(113,129,149,.28);
  cursor:pointer;
}
.connection-dot.is-ok {
  background:#1ee394; box-shadow:0 0 0 3px rgba(30,227,148,.32);
  animation:connection-pulse 2.4s ease-out infinite;
}
.connection-dot.is-warn {
  background:#ffb547; box-shadow:0 0 0 3px rgba(255,181,71,.38);
}
.connection-dot.is-down {
  background:#ff5f6d; box-shadow:0 0 0 3px rgba(255,95,109,.38);
}
.connection-dot:focus-visible { outline:2px solid #8fd3ff; outline-offset:3px; }
@keyframes connection-pulse {
  0% { box-shadow:0 0 0 3px rgba(30,227,148,.4); }
  70% { box-shadow:0 0 0 8px rgba(30,227,148,0); }
  100% { box-shadow:0 0 0 3px rgba(30,227,148,.32); }
}
@media (prefers-reduced-motion:reduce) { .connection-dot.is-ok { animation:none; } }
.connection-pop {
  position:absolute; top:calc(100% + 8px); right:0; z-index:40;
  width:min(260px, 72vw); padding:.55rem .7rem;
  border:1px solid var(--border); border-radius:10px;
  background:#102033; box-shadow:0 12px 28px rgba(0,0,0,.35);
  text-align:left;
}
.connection-pop strong { display:block; color:#fff; font-size:.82rem; }
.connection-pop p { margin:.28rem 0 0; color:var(--muted); font-size:.72rem; line-height:1.35; }
.nav-primary-actions { display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; order:4; margin-left:auto; }
.nav-quick-icons { display:flex; align-items:center; gap:.35rem; flex:0 0 auto; }
.nav-icon-btn {
  display:inline-flex; align-items:center; justify-content:center;
  width:40px; height:40px; padding:0;
  border:1px solid var(--border); border-radius:10px;
  background:#12243a; color:#eef6ff;
  text-decoration:none; cursor:pointer;
}
.nav-icon-btn svg { display:block; width:22px; height:22px; }
.nav-icon-btn.is-live {
  border-color:#14d98a !important;
  background:#1ee394 !important;
  color:#04140f !important;
  box-shadow:0 0 0 2px rgba(30,227,148,.32);
}
.nav-icon-btn:hover,.nav-icon-btn:focus-visible { border-color:#8fd3ff; color:#fff; outline:none; }
.nav-icon-btn.is-live:hover,.nav-icon-btn.is-live:focus-visible { background:#39f0a4 !important; color:#04140f !important; }
.nav-icon-btn[aria-busy="true"] { opacity:.55; }
.sync-now-btn { flex:0 0 auto; min-height:38px; font-weight:850; white-space:nowrap; }
.sync-now-status { color:#9ed8ff; font-size:.62rem; font-weight:800; white-space:nowrap; }
.sync-now-status:empty { display:none; }
.admin-icon { font-size:1rem; line-height:1; }
.mobile-command-grid { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; }
.mobile-command { display:flex; align-items:center; gap:.55rem; min-width:0; padding:.62rem .7rem; border:1px solid var(--border); border-radius:12px; background:linear-gradient(145deg,#0d1b2d,#12243a); color:var(--text); text-align:left; text-decoration:none; }
.mobile-command > span:first-child { display:grid; place-items:center; flex:0 0 28px; height:28px; border-radius:8px; background:rgba(82,168,255,.13); color:#8fd3ff; }
.mobile-command small,.mobile-command strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.mobile-command small { color:var(--muted); font-size:.55rem; font-weight:850; letter-spacing:.04em; text-transform:uppercase; }.mobile-command strong { margin-top:.05rem; font-size:.72rem; }
.mobile-command.has-alert { border-color:rgba(255,95,109,.7); background:linear-gradient(145deg,rgba(84,24,37,.9),#172337); }.mobile-command.has-alert > span:first-child { background:rgba(255,95,109,.17); color:#ffadb4; }
.panel { background: rgba(13, 27, 45, .94); border: 1px solid var(--border); border-radius: 16px; box-shadow: 0 18px 45px rgba(0,0,0,.16); }
.toolbar { padding: 1rem; }
.form-label { color: var(--muted); font-size: .82rem; margin-bottom: .3rem; }
.form-control,.form-select { min-height: 44px; background-color:#091625; border-color:var(--border); color:var(--text); }
.form-control:focus,.form-select:focus { background:#0b1a2b; border-color:var(--green); color:var(--text); box-shadow:0 0 0 .2rem rgba(47,211,138,.13); }
.filter-switch { min-height:44px; display:flex; align-items:center; gap:.5rem; padding:0 .75rem; border:1px solid var(--border); border-radius:.375rem; background:#091625; }
.filter-switch .form-check-input { margin-left:0; }
.metric-card { height:100%; padding:1rem 1.1rem; border:1px solid var(--border); border-left:4px solid var(--green); border-radius:14px; background:linear-gradient(145deg,var(--panel),var(--panel-2)); }
.metric-card span,.metric-card small { color:var(--muted); display:block; }
.metric-card strong { display:block; font-size:1.65rem; line-height:1.1; margin:.28rem 0; }
.metric-orange { border-left-color:var(--orange); }.metric-red { border-left-color:var(--red); }.metric-blue { border-left-color:var(--blue); }
.belt-daily-alert { margin-bottom:.65rem; }
.belt-daily-alert > button { display:flex; align-items:center; justify-content:space-between; gap:.7rem; width:100%; padding:.48rem .75rem; border:1px solid rgba(255,95,109,.72); border-radius:11px; background:rgba(90,18,31,.72); color:#ffe5e8; text-align:left; }
.belt-daily-alert > button:hover,.belt-daily-alert > button:focus { border-color:#ff8d98; background:rgba(111,24,39,.86); outline:none; }
.belt-daily-alert span strong,.belt-daily-alert span small { display:block; }.belt-daily-alert span strong { font-size:.72rem; letter-spacing:.04em; }.belt-daily-alert span small { margin-top:.08rem; color:#e8b8bd; font-size:.62rem; }.belt-daily-alert b { color:#fff; font-size:.7rem; }
.belt-daily-modal { border:1px solid rgba(255,95,109,.55); background:var(--app-bg); }.belt-daily-summary { color:#ffd1d5; font-weight:800; }.belt-daily-flight-list { display:grid; gap:.65rem; }.belt-daily-flight { display:grid; grid-template-columns:1fr auto; gap:.35rem .65rem; padding:.7rem; border:1px solid var(--border); border-radius:10px; background:var(--panel); }.belt-daily-flight strong,.belt-daily-flight span { display:block; }.belt-daily-flight span { color:var(--muted); font-size:.68rem; }.belt-daily-flight p { grid-column:1/-1; margin:0; color:#ffc1c7; font-size:.72rem; }.belt-daily-flight button { grid-column:2; }
.panel-header { padding:1rem 1.1rem; border-bottom:1px solid var(--border); }
.legend { color:var(--muted); font-size:.82rem; }
.tracked-focus-panel,.watch-dock { border-color:rgba(82,168,255,.62); box-shadow:0 18px 48px rgba(9,84,143,.17); }
.tracked-focus-kicker { display:block; margin-bottom:.12rem; color:#8fd3ff; font-size:.62rem; font-weight:950; letter-spacing:.12em; }
.watch-dock-header { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:.35rem .8rem; }
.watch-dock-hint { color:#8aa3b8; font-size:.72rem; font-weight:700; }
.watch-dock-list { display:flex; flex-wrap:wrap; gap:.45rem; padding:.55rem .75rem .75rem; }
.watch-chip {
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  grid-template-areas:"time code extra" "time origin extra";
  column-gap:.55rem;
  align-items:center;
  min-height:52px;
  min-width:min(100%, 210px);
  padding:.4rem .65rem;
  border:1px solid #2b425c;
  border-radius:12px;
  background:#0a1726;
  color:var(--text);
  text-align:left;
}
.watch-chip b { grid-area:time; color:#fff; font-size:1.05rem; font-variant-numeric:tabular-nums; }
.watch-chip strong { grid-area:code; color:#e7f3ff; font-size:.82rem; }
.watch-chip span { grid-area:origin; overflow:hidden; color:#8aa3b8; font-size:.68rem; text-overflow:ellipsis; white-space:nowrap; }
.watch-chip-extra { grid-area:extra; display:grid; justify-items:end; gap:.05rem; font-style:normal; }
.watch-chip em { color:#ffb3b3; font-size:.78rem; font-weight:900; font-style:normal; }
.watch-chip i { color:#9ed8ff; font-size:.68rem; font-weight:800; font-style:normal; }
.watch-chip small { color:#ffd47d; font-size:.62rem; font-weight:800; }
.watch-chip.is-late { border-color:rgba(255,110,110,.55); }
.watch-chip.is-red { border-color:rgba(255,95,109,.7); background:rgba(82,17,29,.35); }
.watch-chip.other-day { border-style:dashed; }
.watch-chip.is-open { border-color:var(--blue); box-shadow:inset 0 0 0 1px rgba(82,168,255,.35); }
.canary-card,.night-card,.upcoming-flight,.flight-row,.watch-chip,.flow-flight,.belt-change-card,.canary-alert-toast { cursor:pointer; }
.tracked-focus-body { padding:1rem; }
.tracked-focus-layout { display:grid; grid-template-columns:minmax(250px,1fr) minmax(0,2fr); gap:1rem; align-items:start; margin-bottom:1rem; }
.tracked-focus-summary,.tracked-focus-belts { min-width:0; }.tracked-focus-summary > *:last-child { margin-bottom:0!important; }
.tracked-focus-summary .flight-focus-hero,.tracked-focus-summary .focus-red-day,.tracked-focus-belts .focus-window { margin-bottom:.75rem; }
.tracked-focus-summary .focus-primary-values { grid-template-columns:repeat(2,minmax(0,1fr)); }
.push-panel { border-color:rgba(82,168,255,.42); }
.push-actions { display:grid; grid-template-columns:1fr 1fr; gap:.5rem; padding:.65rem .85rem .35rem; background:rgba(7,17,31,.35); }
.push-actions .btn { min-height:44px; width:100%; font-weight:700; }
.push-hint { margin:0; padding:.15rem .85rem .55rem; background:rgba(7,17,31,.35); color:#ffd47d; font-size:.72rem; font-weight:700; line-height:1.35; }
.push-panel .push-status-line { border-bottom:0; border-radius:0 0 16px 16px; }
.push-status-line { padding:.55rem 1rem; border-bottom:1px solid var(--border); background:rgba(7,17,31,.45); color:var(--muted); font-size:.72rem; line-height:1.35; }
.push-status-line.push-status-ready { color:#78efbc; background:rgba(47,211,138,.07); }
.push-status-line.push-status-warning { color:#ffd47d; background:rgba(255,181,71,.07); }
.push-status-line.push-status-error { color:#ffadb4; background:rgba(255,95,109,.08); }
.canary-watch-panel { border-color:rgba(255,181,71,.42); }
.canary-watch-header { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:.65rem; }
.canary-watch-copy { min-width:0; flex:1 1 220px; }
.canary-watch-tools { display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; flex:0 0 auto; }
.canary-watch-tools .btn { flex:0 0 auto; min-height:38px; }
.canary-watch-mark { display:grid; place-items:center; width:38px; height:38px; border-radius:50%; background:rgba(255,181,71,.13); font-size:1.25rem; }
.canary-strip { display:flex; gap:.75rem; overflow-x:auto; padding:.85rem 1rem 1rem; scroll-snap-type:x proximity; scrollbar-color:var(--orange) transparent; }
.canary-card { flex:0 0 330px; scroll-snap-align:start; padding:.75rem; border:1px solid #6a552a; border-radius:12px; background:linear-gradient(145deg,#1d2633,#302719); cursor:pointer; transition:transform .16s ease,border-color .16s ease; }
.canary-card:hover,.canary-card:focus { transform:translateY(-2px); border-color:var(--orange); outline:none; }
.canary-card.past { opacity:.54; }
.canary-card.danger { border-color:var(--red); box-shadow:inset 0 0 0 1px rgba(255,95,109,.26); }
.canary-card-timing { display:grid; grid-template-columns:1fr 1fr; gap:.4rem; margin:.45rem 0; }
.canary-card-timing > span { display:grid; grid-template-columns:1fr auto; align-items:baseline; padding:.38rem .45rem; border:1px solid rgba(255,255,255,.1); border-radius:8px; background:rgba(5,14,24,.45); }
.canary-card-timing small { grid-column:1/-1; text-transform:uppercase; letter-spacing:.04em; }
.canary-card-timing b { color:#fff; font-size:1.12rem; }.canary-card-timing em { font-size:.68rem; font-style:normal; font-weight:900; }
.flight-timing em.late,.canary-card-timing em.late,.upcoming-timing em.late { color:#ff8d98; }
.flight-timing em.early,.canary-card-timing em.early,.upcoming-timing em.early { color:#75d3ff; }
.flight-timing em.ontime,.canary-card-timing em.ontime,.upcoming-timing em.ontime { color:#78efbc; }
.canary-card span,.canary-card small { color:var(--muted); font-size:.78rem; }
.canary-flight-code { color:#dbeaff; font-size:.76rem; font-weight:800; }
.canary-codeshare { margin-top:.12rem; color:#ffd47d; font-size:.72rem; line-height:1.25; }
.canary-codeshare span { color:var(--muted); }
.canary-codeshare strong { color:#ffd47d; font-weight:850; letter-spacing:.02em; }
.canary-belts { display:grid; grid-template-columns:1fr 1fr; gap:.4rem; margin-top:.55rem; }
.canary-belt-line { min-width:0; padding:.48rem; border:1px solid rgba(255,255,255,.1); border-radius:9px; background:rgba(5,14,24,.5); }
.canary-belt-line span,.canary-belt-line b,.canary-belt-line small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.canary-belt-line span { font-size:.62rem; text-transform:uppercase; letter-spacing:.04em; }
.canary-belt-line b { margin:.08rem 0; color:#fff; font-size:1rem; }
.canary-belt-line small { font-size:.62rem; }
.canary-belt-predicted { border-color:rgba(82,168,255,.42); }.canary-belt-predicted b { color:#8fd3ff; }
.canary-belt-confirmed { border-color:rgba(47,211,138,.48); }.canary-belt-confirmed b { color:#78efbc; }
.canary-belt-confirmed.pending { border-color:rgba(143,165,189,.28); }.canary-belt-confirmed.pending b { color:#b3c0cf; }
.canary-important { margin-top:.5rem; padding:.45rem .5rem; border:1px solid var(--red); border-radius:8px; background:rgba(255,95,109,.13); }
.canary-important b,.canary-important span { display:block; color:#ffc1c7; }.canary-important b { font-size:.66rem; letter-spacing:.06em; }.canary-important span { margin-top:.1rem; font-size:.68rem; }
.canary-card .canary-proposal { display:block; margin-top:.45rem; color:#ffd47d; }
.later-night { margin-top:.5rem; padding:.45rem .5rem; border:1px solid #3d5d7a; border-radius:8px; background:rgba(18,42,64,.55); }
.later-night.is-last { border-color:#6a552a; background:rgba(64,46,18,.45); }
.later-night strong,.canary-card .later-night strong { display:block; color:#9ed8ff; font-size:.66rem; letter-spacing:.05em; text-transform:uppercase; }
.later-night.is-last strong,.canary-card .later-night.is-last strong { color:#ffd47d; }
.later-night span,.canary-card .later-night span { display:block; margin-top:.12rem; color:#dbeaff; font-size:.72rem; }
.later-night ul { margin:.28rem 0 0; padding:0; list-style:none; }
.later-night li { color:#e8f3ff; font-size:.74rem; line-height:1.35; }
.later-night li + li { margin-top:.16rem; }
.later-night li b { color:#78efbc; font-variant-numeric:tabular-nums; }
.later-night-hint { display:block; margin-top:.2rem; color:#9ed8ff; font-size:.68rem; font-weight:800; line-height:1.35; }
.later-night-hint.last { color:#ffd47d; }
.canary-occupancy { margin-top:.55rem; padding:.55rem; border:1px solid rgba(82,168,255,.38); border-radius:10px; background:rgba(5,14,24,.64); }
.canary-occupancy.has-red { border-color:rgba(255,95,109,.6); }
.canary-occupancy > header { display:grid; grid-template-columns:1fr auto auto; align-items:baseline; gap:.45rem; }
.canary-occupancy > header span { color:#aec3d8; font-size:.62rem; font-weight:800; letter-spacing:.045em; text-transform:uppercase; }
.canary-occupancy > header strong { color:#fff; font-size:1.12rem; }.canary-occupancy > header b { color:#8fd3ff; font-size:.72rem; }
.occupancy-belts { display:grid; grid-template-columns:repeat(8,minmax(0,1fr)); gap:.22rem; margin:.46rem 0; }
.occupancy-belt { display:grid; place-items:center; min-width:0; padding:.26rem .05rem; border:1px solid #284058; border-radius:6px; background:#0a1725; line-height:1; }
.occupancy-belt b { color:#7890a8; font-size:.8rem; }.occupancy-belt small { margin-top:.16rem; color:#60768b!important; font-size:.56rem!important; }
.occupancy-belt.occupied { border-color:#2fd38a; background:rgba(47,211,138,.14); }.occupancy-belt.occupied b { color:#79efbc; }.occupancy-belt.occupied small { color:#79efbc!important; }
.occupancy-belt.occupied.estimated { border-style:dashed; border-color:#ffb547; background:rgba(255,181,71,.12); }.occupancy-belt.occupied.estimated b,.occupancy-belt.occupied.estimated small { color:#ffd47d!important; }
.occupancy-belt.red { border-color:#5c2b38; }.occupancy-belt.red.occupied { border-color:#ff5f6d; background:rgba(255,95,109,.17); }.occupancy-belt.red.occupied b,.occupancy-belt.red.occupied small { color:#ffadb4!important; }
.occupancy-belt.nearby { border-style:dashed; border-color:#4a5d72; }.occupancy-belt.nearby small { color:#8fa5bd!important; }
.occupancy-red { display:grid; grid-template-columns:1fr auto; gap:.1rem .45rem; align-items:baseline; padding:.34rem .42rem; border-radius:7px; background:rgba(255,95,109,.07); }
.occupancy-red span { font-size:.66rem; font-weight:800; text-transform:uppercase; }.occupancy-red strong { color:#ffadb4; font-size:.85rem; }.occupancy-red small { grid-column:1/-1; color:#c7a7ad!important; font-size:.66rem!important; }
.canary-occupancy > footer { display:grid; gap:.12rem; margin-top:.4rem; }.canary-occupancy > footer span { color:#91a7bc; font-size:.68rem; }.canary-occupancy > footer b { color:#dbeaff; }
.canary-occupancy > p { margin:.45rem 0 0; color:var(--muted); font-size:.66rem; line-height:1.4; }
.occupancy-canary-around { margin:.15rem 0 .35rem; padding:.28rem .42rem; border-radius:7px; background:rgba(232,180,64,.16); color:#ffd47d; font-size:.68rem; font-weight:800; line-height:1.35; }
.occupancy-belt.is-canary { box-shadow:0 0 0 1px #e8b440 inset; }
.canary-occupancy.detailed { margin:.7rem 0 .85rem; padding:.75rem; }.canary-occupancy.detailed > header strong { font-size:1.35rem; }.canary-occupancy.detailed .occupancy-belt { min-height:42px; }
.flightaware-link { display:inline-flex; align-items:center; justify-content:center; gap:.3rem; padding:.55rem .7rem; border:1px solid rgba(82,168,255,.55); border-radius:9px; background:rgba(20,76,122,.2); color:#9ed8ff; font-size:.78rem; font-weight:800; text-decoration:none; }
.flightaware-link:hover,.flightaware-link:focus { border-color:#75c8ff; background:rgba(40,115,176,.3); color:#d9f2ff; }
.flightaware-link-compact { margin-top:.55rem; padding:.3rem .5rem; font-size:.65rem; }
.canary-card .flightaware-link { width:100%; }
.canary-card-actions { display:grid; grid-template-columns:1fr 1fr; gap:.4rem; margin-top:.55rem; }
.canary-card-actions .flightaware-link { margin:0; min-height:34px; }
.canary-quick-watch { min-height:34px; border:1px solid rgba(255,181,71,.58); border-radius:9px; background:rgba(80,58,20,.28); color:#ffd47d; font-size:.66rem; font-weight:850; }
.canary-quick-watch.active { border-color:#ffb547; background:#ffb547; color:#201506; }
.flightaware-detail { display:grid; gap:.35rem; }
.flightaware-detail .flightaware-link { width:100%; }
.flightaware-detail small { color:var(--muted); line-height:1.35; }
.flightaware-snapshot { border-color:rgba(255,181,71,.42); }
.flightaware-snapshot > header { display:flex; align-items:center; justify-content:space-between; gap:.6rem; padding:.65rem .75rem; border-bottom:1px solid var(--border); background:rgba(255,181,71,.08); }
.flightaware-snapshot > header div { display:flex; align-items:center; gap:.45rem; }.flightaware-snapshot > header time { color:var(--muted); font-size:.68rem; }
.flightaware-snapshot > p { margin:0; padding:.6rem .75rem 0; color:#ffd78b; font-size:.78rem; font-weight:800; }
.canary-card em.late,.night-card em.late { color:#ffb3b3; font-style:normal; font-size:.78rem; font-weight:800; }
.canary-card em.early,.night-card em.early { color:#78efbc; font-style:normal; font-size:.78rem; font-weight:800; }
.canary-card .flightstats-watch-line,.night-card .flightstats-watch-line { margin-top:.35rem; }
.flightstats-watch-line { display:grid; gap:.08rem; margin:.55rem 0 0; padding:.48rem .55rem; border:1px solid rgba(82,168,255,.38); border-radius:10px; background:rgba(18,58,96,.28); }
.flightstats-watch-line span { color:#8fd3ff; font-size:.58rem; font-weight:950; letter-spacing:.08em; text-transform:uppercase; }
.flightstats-watch-line strong { color:#e7f4ff; font-size:.78rem; line-height:1.3; }
.flightstats-watch-line small { color:#8fa5bd; font-size:.62rem; }
.delay-origin {
  display:grid;
  gap:.18rem;
  margin:.5rem 0 0;
  padding:.65rem .7rem;
  border:1px solid rgba(255,181,71,.55);
  border-radius:12px;
  background:rgba(88,52,12,.34);
}
.delay-origin-kicker {
  margin:0;
  color:#ffd78b;
  font-size:.62rem;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.delay-origin-title {
  margin:0;
  color:#fff4d6;
  font-size:1.05rem;
  font-weight:900;
  line-height:1.2;
}
.delay-origin-meta {
  margin:0;
  color:#ffe7b5;
  font-size:.86rem;
  font-weight:800;
  line-height:1.3;
}
.delay-origin-note {
  margin:0;
  color:#c9b089;
  font-size:.72rem;
  line-height:1.35;
}
.delay-origin.is-drag {
  border-color:rgba(255,110,110,.7);
  background:rgba(110,18,18,.42);
}
.delay-origin.is-drag .delay-origin-kicker,
.delay-origin.is-drag .delay-origin-title { color:#ffb3b3; }
.delay-origin.is-drag .delay-origin-meta { color:#ffd0d0; }
.delay-origin.is-drag .delay-origin-note { color:#f0b8b8; }
.canary-card em.late,.night-card em.late,.canary-card-timing em.late { white-space:nowrap; }
.flightstats-snapshot { border-color:rgba(82,168,255,.42); }
.flightstats-snapshot > header { display:flex; align-items:center; justify-content:space-between; gap:.6rem; padding:.65rem .75rem; border-bottom:1px solid var(--border); background:rgba(82,168,255,.08); }
.flightstats-snapshot > header div { display:flex; align-items:center; gap:.45rem; }.flightstats-snapshot > header time { color:var(--muted); font-size:.68rem; }
.flightstats-snapshot > p { margin:0; padding:.6rem .75rem 0; color:#9ed8ff; font-size:.78rem; font-weight:800; }
.canary-empty { width:100%; padding:.65rem; color:var(--muted); text-align:center; }
.night-week-panel { border-color:rgba(82,168,255,.35); }
.night-week-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.65rem; }
.night-week-sort { display:flex; gap:.35rem; }
.night-sort { min-height:40px; padding:.3rem .75rem; border:1px solid var(--border); border-radius:999px; background:transparent; color:#dbeaff; font-size:.82rem; font-weight:850; }
.night-sort.active { border-color:var(--blue); background:rgba(82,168,255,.2); color:#fff; }
.night-strip { display:flex; gap:.75rem; overflow-x:auto; padding:.85rem 1rem 1.1rem; scroll-snap-type:x mandatory; scrollbar-color:var(--orange) transparent; -webkit-overflow-scrolling:touch; }
.night-strip > .canary-empty { flex:1 0 100%; }
.night-day { min-width:0; }
.night-day-header { display:flex; align-items:flex-end; justify-content:space-between; gap:.75rem; margin:0 .15rem .45rem; }
.night-day-header small { display:block; color:#9ed8ff; font-size:.68rem; font-weight:900; letter-spacing:.04em; text-transform:uppercase; }
.night-day-header strong { color:#fff; font-size:1.05rem; text-transform:capitalize; }
.night-day-header span { color:var(--muted); font-size:.78rem; font-weight:800; }.night-day-header b { color:#ffd47d; }
.night-day-strip { display:flex; gap:.75rem; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-color:var(--orange) transparent; }
.night-card { position:relative; flex:0 0 330px; scroll-snap-align:start; scroll-snap-stop:always; padding-top:1.15rem; }
.night-card.best { border-color:#e8b440; box-shadow:0 0 0 1px rgba(232,180,64,.45); }
.night-card-kicker { display:flex; justify-content:space-between; gap:.5rem; min-height:2.85rem; margin-bottom:.35rem; padding-right:4.6rem; }
.night-card-kicker small { color:#9ed8ff; font-size:.68rem; font-weight:900; letter-spacing:.04em; text-transform:uppercase; }
.night-card-kicker b { color:#ffd47d; font-size:.68rem; }
.night-score { position:absolute; top:.45rem; right:.55rem; display:flex; flex-direction:column; align-items:flex-end; gap:.12rem; color:#fff; line-height:1; }
.night-score-note { display:flex; align-items:baseline; gap:.12rem; }
.night-score strong { font-size:1.7rem; font-weight:900; font-variant-numeric:tabular-nums; }
.night-score small { color:#ffd47d; font-size:.72rem; font-weight:900; }
.night-score-belts { display:flex; flex-direction:column; align-items:flex-end; gap:.06rem; }
.night-score-belts i { font-size:.62rem; font-style:normal; font-weight:900; letter-spacing:.02em; white-space:nowrap; }
.night-score-belts .green { color:#78efbc; }
.night-score-belts .red { color:#ffadb4; }
.night-card.score-10 .night-score strong,.night-card.score-9 .night-score strong { color:#e8b440; }
.night-card.score-8 .night-score strong,.night-card.score-7 .night-score strong { color:#78efbc; }
.watch-explanation { color:var(--muted); font-size:.72rem; line-height:1.4; }
.canary-alert-stack { position:fixed; top:76px; right:1rem; z-index:1095; width:min(390px,calc(100vw - 2rem)); }
@media (display-mode:standalone), (display-mode:fullscreen) { .canary-alert-stack { top:calc(76px + env(safe-area-inset-top)); } }
.canary-alert-toast { width:100%; margin-bottom:.65rem; border:2px solid var(--orange); background:#201b14; color:var(--text); box-shadow:0 12px 38px rgba(0,0,0,.48); }
.canary-alert-toast .toast-header { border-bottom-color:#644e25; background:#332817; color:#ffe1a6; }.canary-alert-toast .toast-body b,.canary-alert-toast .toast-body span { display:block; }.canary-alert-toast .toast-body span { margin-top:.25rem; color:#f3e7d1; font-size:.78rem; }
.canary-alert-toast.canary-alert-danger { border-color:var(--red); background:#2f171d; }.canary-alert-toast.canary-alert-danger .toast-header { background:#481d27; color:#ffc2c7; }
.upcoming-strip { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(240px,1fr); gap:.55rem; overflow-x:auto; padding:.7rem; scroll-snap-type:x mandatory; }
.upcoming-flight { display:grid; grid-template-columns:auto minmax(0,1fr); grid-template-areas:"clock main" "clock side"; align-items:center; gap:.3rem .7rem; padding:.6rem; border:1px solid var(--border); border-radius:12px; background:linear-gradient(145deg,#0a1828,#10243a); cursor:pointer; scroll-snap-align:start; }
.upcoming-flight .later-night { grid-column:1/-1; margin-top:.15rem; }
.upcoming-flight:hover,.upcoming-flight:focus { border-color:var(--blue); outline:none; }
.upcoming-flight.canary { border-color:#755d2a; background:linear-gradient(145deg,#172130,#302719); }
.upcoming-clock { grid-area:clock; display:grid; place-items:center; min-width:78px; padding:.5rem .4rem; border-radius:10px; background:rgba(82,168,255,.13); text-align:center; }
.upcoming-clock b { color:#fff; font-size:1.55rem; font-weight:900; line-height:1; font-variant-numeric:tabular-nums; }
.upcoming-clock small { margin-top:.22rem; color:#9ed8ff; font-size:.74rem; font-weight:850; white-space:nowrap; }
.upcoming-flight.canary .upcoming-clock { background:rgba(255,181,71,.15); }.upcoming-flight.canary .upcoming-clock small { color:#ffd47d; }
.upcoming-main { grid-area:main; min-width:0; }.upcoming-main strong,.upcoming-main span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.upcoming-main strong { color:#fff; font-size:1rem; }.upcoming-main span { color:var(--muted); font-size:.76rem; }
.upcoming-side { grid-area:side; display:flex; flex-wrap:wrap; align-items:center; gap:.3rem; }
.upcoming-side em { padding:.14rem .45rem; border-radius:999px; background:rgba(255,255,255,.06); font-size:.74rem; font-style:normal; font-weight:900; }
.upcoming-side em.late { color:#ff8d98; }.upcoming-side em.early { color:#75d3ff; }.upcoming-side em.ontime { color:#78efbc; }
.upcoming-belt { padding:.14rem .45rem; border:1px solid #36485d; border-radius:7px; color:#b6c4d3; font-size:.76rem; font-weight:850; white-space:nowrap; }
.upcoming-belt.official { border-color:#1f5c4b; background:#102b28; color:#78efbc; }.upcoming-belt.predicted { border-style:dashed; border-color:#31506d; color:#8fd3ff; }
.upcoming-belt.red.official { border-color:#76303a; background:#3b1720; color:#ff9ca5; }.upcoming-belt.red.predicted { border-color:#76303a; color:#ff9ca5; }
.upcoming-empty { padding:.8rem; color:var(--muted); }
#flightMap { height:280px; background:#091625; }
.leaflet-container { font-family:inherit; }
.leaflet-control-attribution { font-size:.65rem; }
.leaflet-popup-content-wrapper,.leaflet-popup-tip { background:#0d1b2d; color:var(--text); }
.leaflet-popup-content { margin:12px 14px; }
.aircraft-marker-wrap { background:transparent; border:0; }
.aircraft-marker-wrap > span { position:absolute; top:29px; left:2px; padding:1px 5px; border:1px solid #42617c; border-radius:5px; background:rgba(7,17,31,.9); color:#fff; font-size:.65rem; font-weight:800; white-space:nowrap; }
.aircraft-marker { display:grid; place-items:center; width:38px; height:38px; border:2px solid #8ad0ff; border-radius:50%; background:#123e5c; color:#fff; font-size:1.35rem; box-shadow:0 0 0 5px rgba(82,168,255,.16),0 5px 14px rgba(0,0,0,.35); }
.aircraft-marker.stale { opacity:.46; filter:grayscale(.65); }
.map-popup { display:flex; flex-direction:column; gap:.35rem; min-width:238px; }
.map-popup > span,.map-popup > small { color:var(--muted); }
.map-popup dl { display:grid; grid-template-columns:auto 1fr; gap:.2rem .6rem; margin:.35rem 0 0; }
.map-popup dt { color:var(--muted); font-weight:500; }.map-popup dd { margin:0; font-weight:750; text-align:right; }
.map-popup-visual { display:grid; place-items:center; height:72px; border-radius:9px; background:radial-gradient(circle,#173652,#091625); overflow:hidden; }
.aircraft-silhouette { display:block; width:130px; height:68px; }
.scene-clock { flex:0 0 auto; padding:.27rem .48rem; border:1px solid var(--border); border-radius:7px; color:#78efbc; background:#091625; font:800 .78rem/1.2 ui-monospace,SFMono-Regular,Menlo,monospace; }
.airport-scene { position:relative; height:286px; overflow:hidden; border-bottom:1px solid var(--border); background:#081522; isolation:isolate; }
.airport-scene-large { height:1080px; }
.airport-scene > svg { display:block; width:100%; }
.scene-aerodrome { height:calc(100% - 210px); }
.scene-approach-line { fill:none; stroke:#74c7ff; stroke-width:2; stroke-dasharray:8 10; opacity:.58; animation:scene-dash 4s linear infinite; }
.scene-approach-right { animation-direction:reverse; }
.scene-taxiway { fill:none; stroke:#e8c46c; stroke-width:14; stroke-linecap:round; opacity:.24; }
.scene-runway { fill:#273440; stroke:#8193a3; stroke-width:2; }
.runway-number { fill:#fff; font-size:20px; font-weight:950; letter-spacing:2px; }
.runway-lights circle { fill:#d9fbff; animation:runway-light 1.5s ease-in-out infinite alternate; }
.runway-lights circle:nth-child(2n) { animation-delay:.6s; }
.scene-terminal path { fill:#193248; stroke:#4d718d; stroke-width:2; }.scene-terminal text { fill:#dcefff; font-size:15px; font-weight:800; text-anchor:middle; }
.scene-fingers rect { fill:#1c3e58; stroke:#75a7c7; stroke-width:2; }.scene-fingers path { fill:none; stroke:#9dcbe7; stroke-width:8; stroke-linecap:round; stroke-linejoin:round; }.scene-fingers circle { fill:#78efbc; stroke:#133c31; stroke-width:3; }
.scene-label { fill:#9bb5ca; font-size:13px; font-weight:800; letter-spacing:1.5px; }
.scene-note { fill:#6f8da3; font-size:10px; font-weight:750; letter-spacing:.8px; }
.scene-baggage-zone-line { fill:none; stroke:#2f6f63; stroke-width:2; stroke-dasharray:8 10; opacity:.62; }
.scene-baggage-zone-label { fill:#78bca2; font-size:11px; letter-spacing:1.2px; }
.scene-trails { position:absolute; inset:0; z-index:2; width:100%; height:100%; pointer-events:none; }
.scene-gps-trail { fill:none; stroke:#52a8ff; stroke-width:.34; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:1.1 1.2; opacity:.72; vector-effect:non-scaling-stroke; }
.scene-gps-trail.canary { stroke:var(--orange); }
.scene-baggage-link { fill:none; stroke:var(--green); stroke-width:.42; stroke-linecap:round; stroke-dasharray:.8 1.4; opacity:.72; vector-effect:non-scaling-stroke; animation:scene-dash 3s linear infinite; }
.scene-aircraft-layer { position:absolute; inset:0; pointer-events:none; z-index:7; }
.scene-plane { position:absolute; display:flex; align-items:center; gap:.35rem; width:clamp(140px,14vw,195px); max-width:none; padding:0; border:0; background:transparent; color:var(--text); text-align:left; opacity:1; transform:translate(-50%,-50%); transition:left 14s linear,top 14s linear,opacity 1.2s ease; pointer-events:auto; will-change:left,top,opacity; z-index:3; }
.scene-plane:hover,.scene-plane:focus { z-index:8; outline:none; }.scene-plane:hover .scene-plane-data,.scene-plane:focus .scene-plane-data { border-color:var(--blue); transform:translateY(-1px); }
.scene-plane-icon { display:grid; place-items:center; flex:0 0 31px; width:31px; height:31px; border:2px solid #8ad0ff; border-radius:50%; background:#123e5c; color:#fff; font-size:1.05rem; line-height:1; box-shadow:0 0 0 5px rgba(82,168,255,.13); transform:rotate(var(--scene-heading)); animation:scene-pulse 1.8s ease-in-out infinite; }
.scene-plane-data { flex:1 1 auto; min-width:0; padding:.28rem .38rem; border:1px solid #31516c; border-radius:7px; background:rgba(7,17,31,.91); transition:.15s ease; }
.scene-plane-side-right .scene-plane-data { order:-1; text-align:right; }
.scene-plane-data strong,.scene-plane-data em,.scene-plane-data small { display:block; max-width:100%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.scene-plane-data strong { color:#8fd3ff; font-size:.72rem; }.scene-plane-data em { color:#fff; font-size:.77rem; font-style:normal; font-weight:850; }.scene-plane-data small { color:var(--muted); font-size:.59rem; }
.scene-plane-approach .scene-plane-icon { border-color:var(--orange); background:#503a16; box-shadow:0 0 0 6px rgba(255,181,71,.18); }
.scene-plane-ground .scene-plane-icon { border-color:var(--green); background:#123c30; box-shadow:0 0 0 5px rgba(47,211,138,.16); transform:none; animation:none; }
.scene-plane-baggage .scene-plane-icon { border-color:var(--green); background:#123c30; box-shadow:0 0 0 5px rgba(47,211,138,.16); transform:none; animation:none; }
.scene-plane-waiting { opacity:.72; }.scene-plane-waiting .scene-plane-icon { filter:grayscale(.55); animation:none; }
.scene-plane-planned:not(.scene-plane-ground):not(.scene-plane-baggage) .scene-plane-icon { border-color:var(--orange); background:#4b3515; box-shadow:0 0 0 5px rgba(255,181,71,.13); }
.scene-plane-entering { opacity:0; }.scene-plane-leaving { opacity:0; pointer-events:none; }
.scene-plane-canary .scene-plane-data { border-color:#87662c; background:rgba(48,39,25,.94); }.scene-plane-canary .scene-plane-data strong { color:#ffd47d; }
.scene-source { position:absolute; right:.55rem; top:.55rem; display:flex; align-items:center; gap:.35rem; padding:.25rem .45rem; border:1px solid #2e5068; border-radius:999px; background:rgba(7,17,31,.82); color:var(--muted); font-size:.62rem; z-index:9; }
.scene-source span { width:7px; height:7px; border-radius:50%; background:var(--green); box-shadow:0 0 0 3px rgba(47,211,138,.15); }.scene-source b { color:var(--text); }
.scene-legend { position:absolute; left:.55rem; top:.55rem; z-index:9; display:flex; flex-wrap:wrap; gap:.45rem; padding:.26rem .45rem; border:1px solid #2e5068; border-radius:999px; background:rgba(7,17,31,.86); color:#a8bfd1; font-size:.59rem; font-weight:750; }
.scene-legend span { display:flex; align-items:center; gap:.22rem; }.scene-legend i { width:7px; height:7px; border-radius:50%; background:var(--blue); }.scene-legend i.planned { background:var(--orange); }.scene-legend i.flow { background:var(--green); }
.scene-belts { position:absolute; left:0; right:0; bottom:0; z-index:5; min-height:210px; padding:.65rem .75rem .8rem; border-top:1px solid #36536c; background:linear-gradient(180deg,rgba(9,22,37,.96),rgba(6,15,26,.99)); overflow-x:auto; }
.scene-belts > header { display:flex; justify-content:space-between; gap:1rem; min-width:720px; margin-bottom:.42rem; color:var(--muted); font-size:.64rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }.scene-belts > header strong { color:#d9e9f7; }
.scene-belts-grid { display:grid; grid-template-columns:repeat(8,minmax(78px,1fr)); gap:.42rem; min-width:720px; }
.scene-belt { position:relative; min-height:142px; padding:.48rem .4rem; border:1px solid #31516c; border-radius:12px; background:#0d2235; color:var(--text); overflow:hidden; }
.scene-belt > span { display:grid; place-items:center; width:31px; height:31px; margin:0 auto .15rem; border:2px solid #4d718d; border-radius:50%; color:#bcd4e6; font-size:.95rem; font-weight:900; }.scene-belt small { display:block; min-height:1.7em; color:var(--muted); font-size:.58rem; line-height:1.1; text-align:center; }.scene-belt b { position:absolute; right:.3rem; top:.3rem; color:var(--orange); font-size:.6rem; }
.scene-belt-origin { display:-webkit-box; min-height:2.45em; overflow:hidden; color:#f4fbff; font-size:.84rem; line-height:1.16; text-align:center; text-overflow:ellipsis; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.scene-belt-origin.free { color:#6f8598; font-size:.7rem; letter-spacing:.06em; }
.scene-belt em { display:flex; align-items:center; justify-content:center; gap:.24rem; margin-top:.28rem; padding:.25rem .2rem; border:1px solid rgba(47,211,138,.34); border-radius:999px; background:rgba(47,211,138,.1); color:#78efbc; font-size:.56rem; font-style:normal; font-weight:850; letter-spacing:.025em; text-align:center; }
.scene-belt em i { font-size:.8rem; font-style:normal; animation:scene-baggage-pulse 1.5s ease-in-out infinite; }
.scene-belt-next { display:none; }
.scene-belt.has-flight { border-color:var(--green); background:#102f2a; cursor:pointer; box-shadow:inset 0 0 20px rgba(47,211,138,.08); }.scene-belt.has-flight > span { border-color:var(--green); color:#78efbc; }.scene-belt.has-flight small { color:#d8fff0; font-weight:800; }
.scene-belt.reserved { border-color:#577461; background:#10231f; }.scene-belt.reserved > span { border-color:#6c9b7c; color:#9bdab2; }.scene-belt.reserved .scene-belt-origin { color:#8fc8a4; font-size:.61rem; letter-spacing:.04em; }
.scene-belt.danger { border-color:#7c3440; background:#321923; }.scene-belt.danger > span { border-color:var(--red); color:#ffadb4; }.scene-belt.danger.has-flight { box-shadow:0 0 0 2px rgba(255,95,109,.18),inset 0 0 20px rgba(255,95,109,.08); }
@keyframes scene-dash { to { stroke-dashoffset:-36; } }
@keyframes runway-light { from { opacity:.28; } to { opacity:1; } }
@keyframes scene-pulse { 50% { box-shadow:0 0 0 9px rgba(82,168,255,.04); } }
@keyframes scene-baggage-pulse { 50% { transform:translateY(-2px); filter:brightness(1.2); } }
.airport-flow { max-height:184px; overflow:auto; padding:.55rem .7rem .7rem; }
.airport-flow-wide { display:grid; grid-template-columns:repeat(5,minmax(180px,1fr)); gap:.55rem; max-height:none; overflow-x:auto; }
.airport-flow-wide .flow-lane { min-width:180px; margin-bottom:0; }
.airport-flow-wide .flow-lane-cards { flex-direction:column; max-height:230px; overflow:auto; }
.airport-flow-wide .flow-flight { flex-basis:auto; width:100%; }
.flow-details { border-top:1px solid var(--border); background:#091625; }
.flow-details > summary { padding:.7rem 1rem; color:#b9cbda; cursor:pointer; font-size:.78rem; font-weight:800; list-style:none; }
.flow-details > summary::after { content:'＋'; float:right; color:var(--blue); }.flow-details[open] > summary::after { content:'−'; }
.belt-changes-section { padding:.75rem; border-top:1px solid rgba(255,181,71,.32); background:linear-gradient(90deg,rgba(255,181,71,.07),transparent); }
.belt-changes-section > header { display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-bottom:.55rem; }
.belt-changes-section > header strong,.belt-changes-section > header small { display:block; }.belt-changes-section > header small { color:var(--muted); font-size:.68rem; }
.belt-changes-strip { display:flex; gap:.55rem; overflow-x:auto; }
.belt-change-card { flex:0 0 260px; display:grid; grid-template-columns:1fr auto; gap:.2rem .6rem; padding:.62rem; border:1px solid #6a552a; border-radius:10px; background:#251f16; color:var(--text); text-align:left; }
.belt-change-card:hover,.belt-change-card:focus { border-color:var(--orange); outline:none; }.belt-change-card span b,.belt-change-card span small { display:block; }.belt-change-card span small,.belt-change-card em { color:var(--muted); font-size:.65rem; font-style:normal; }.belt-change-card > strong { align-self:center; color:#ffd47d; font-size:.85rem; }.belt-change-card > strong i { color:var(--orange); font-style:normal; }.belt-change-card > em { grid-column:1/-1; }
.flow-lane { margin-bottom:.6rem; border:1px solid var(--border); border-radius:11px; overflow:hidden; background:#091625; }
.flow-lane > header { display:flex; justify-content:space-between; align-items:center; padding:.48rem .62rem; color:var(--muted); font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.flow-lane > header b { display:grid; place-items:center; min-width:23px; height:23px; border-radius:999px; background:#1c3147; color:var(--text); }
.flow-approach { border-color:rgba(255,181,71,.62); }.flow-approach > header { color:#ffd47d; }
.flow-baggage { border-color:rgba(47,211,138,.5); }.flow-baggage > header { color:#78efbc; }
.flow-lane-cards { display:flex; gap:.5rem; overflow-x:auto; padding:0 .55rem .55rem; }
.flow-flight { flex:0 0 190px; padding:.55rem; border:1px solid #2b4560; border-radius:9px; background:#102135; cursor:pointer; }
.flow-flight:hover,.flow-flight:focus { border-color:var(--blue); outline:none; }
.flow-flight > div:first-child { display:flex; justify-content:space-between; gap:.4rem; }.flow-flight > div:first-child span { color:var(--blue); font-weight:800; }
.flow-flight p { margin:.16rem 0 .4rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.flow-destination { display:flex; justify-content:space-between; align-items:end; gap:.4rem; }
.flow-destination b { color:#78efbc; }.flow-destination small { color:var(--muted); text-align:right; }
.flow-none,.flow-empty { display:block; padding:.8rem; color:var(--muted); font-size:.82rem; }
.radar-toggle { display:flex; justify-content:space-between; align-items:center; width:100%; padding:.72rem 1rem; border:0; background:linear-gradient(90deg,#0d1b2d,#11263b); color:var(--text); text-align:left; }.radar-toggle:hover { background:#132b42; }.radar-toggle span strong,.radar-toggle span small { display:block; }.radar-toggle span small { margin-top:.1rem; color:var(--muted); font-size:.7rem; }.radar-toggle > b { color:var(--blue); font-size:1.2rem; transition:transform .2s; }.radar-toggle[aria-expanded="true"] > b { transform:rotate(180deg); }
.flights-table { --bs-table-bg: transparent; --bs-table-hover-bg: rgba(82,168,255,.06); --bs-table-color: var(--text); }
.flights-table th { padding:.8rem .9rem; color:var(--muted); text-transform:uppercase; letter-spacing:.045em; font-size:.72rem; white-space:nowrap; border-color:var(--border); }
.flights-table td { padding:.9rem; border-color:rgba(35,56,82,.72); }
.flight-row { cursor:pointer; }
.flight-row { scroll-margin-top:76px; }
.flight-row.past-flight { opacity:.46; filter:grayscale(.86); background:rgba(100,116,132,.055); }
.flight-row.past-flight:hover,.flight-row.past-flight:focus { opacity:.78; filter:grayscale(.35); }
.flight-row.past-flight.current-flight { opacity:.66; }
.flight-row.current-flight { background:linear-gradient(90deg,rgba(82,168,255,.16),transparent 68%); outline:1px solid rgba(82,168,255,.25); outline-offset:-1px; }
.flight-row.canary { background:linear-gradient(90deg,rgba(255,181,71,.13),transparent 55%); }
.flight-row.canary.current-flight { background:linear-gradient(90deg,rgba(255,181,71,.18),rgba(82,168,255,.13),transparent 72%); }
.flight-row.canary td:first-child { box-shadow: inset 4px 0 0 var(--orange); }
.flight-group-row td { padding:.45rem .8rem!important; background:#07111f!important; border-color:var(--border)!important; color:#a9bfd1; }
.flight-group-row td > span { font-size:.72rem; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }.flight-group-row td > b { display:inline-grid; place-items:center; min-width:24px; height:24px; margin-left:.5rem; border-radius:999px; background:#1d3348; color:#fff; font-size:.68rem; }.flight-group-row button { float:right; }
.indicator { font-size:1.1rem; white-space:nowrap; }
.time-primary { font-size:1.08rem; font-weight:750; }
.origin-name { font-weight:700; }.origin-code,.meta { color:var(--muted); font-size:.8rem; }
.belt { display:inline-flex; align-items:center; justify-content:center; min-width:72px; padding:.38rem .55rem; border-radius:9px; background:#102b28; color:#78efbc; border:1px solid #1f5c4b; font-weight:800; white-space:nowrap; }
.belt.standby { background:#202c3b; color:#b6c4d3; border-color:#36485d; }
.belt-attention-row { box-shadow:inset 4px 0 0 var(--red); background:rgba(255,95,109,.055); }
.belt-important { display:block; max-width:250px; margin-top:.28rem; color:#ff8d98; font-size:.64rem; font-weight:850; white-space:normal; }
.belt.red { background:#3b1720; color:#ff9ca5; border-color:#76303a; }
.secondary-belt { display:flex; align-items:center; gap:.3rem; width:max-content; max-width:180px; margin-top:.35rem; color:var(--muted); font-size:.68rem; line-height:1.2; white-space:normal; }
.secondary-belt-flightaware { max-width:240px; color:#ffd47d; font-weight:750; font-size:.72rem; }
.secondary-belt-flightaware.secondary-belt-candidate { color:#ffb347; }
.canary-proposal-fa { color:#ffb347; font-weight:700; }
.force-aero-status { display:block; margin-top:.35rem; color:var(--muted); font-size:.72rem; max-width:16rem; }
.aeroapi-snapshot { border-color:rgba(255,181,71,.35); box-shadow:0 0 0 1px rgba(255,181,71,.08); }
.aeroapi-belt-diverge { border-color:rgba(255,90,90,.55); }
.aeroapi-belt-hero { display:grid; gap:.2rem; margin:0 0 .85rem; padding:.75rem .9rem; border-radius:10px; background:rgba(255,181,71,.1); border:1px solid rgba(255,181,71,.28); }
.aeroapi-belt-diverge .aeroapi-belt-hero { background:rgba(255,90,90,.12); border-color:rgba(255,90,90,.35); }
.aeroapi-belt-hero small { color:var(--muted); text-transform:uppercase; letter-spacing:.04em; font-size:.65rem; }
.aeroapi-belt-hero strong { font-size:1.45rem; line-height:1.1; color:#ffd47d; }
.aeroapi-belt-diverge .aeroapi-belt-hero strong { color:#ff8f8f; }
.aeroapi-belt-hero span { color:var(--muted); font-size:.78rem; }
.aero-pace-banner {
  margin:.65rem 0 0;
  padding:.55rem .7rem;
  border-radius:8px;
  background:rgba(255,181,71,.14);
  border:1px solid rgba(255,181,71,.35);
  color:#ffd47d;
  font-size:.82rem;
}
.aero-pace-banner.is-critical {
  background:rgba(255,95,109,.14);
  border-color:rgba(255,95,109,.4);
  color:#ff9ca5;
}
.aeroapi-belt-ok { border-color:rgba(47,211,138,.4); }
.aero-pace-warn { display:block; margin-top:.25rem; color:#ffb547; font-size:.75rem; }
.aena-evidence-card { border:1px solid var(--border); border-radius:12px; padding:.85rem 1rem; background:rgba(13,27,45,.7); }
.aena-evidence-card header { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; justify-content:space-between; margin-bottom:.55rem; }
.aena-evidence-list { display:grid; gap:.45rem; }
.aena-evidence-item { display:grid; gap:.1rem; padding:.45rem .55rem; border-radius:8px; background:rgba(18,36,58,.85); border:1px solid var(--border); }
.aena-evidence-item time { color:var(--muted); font-size:.72rem; }
.aero-quota-chip {
  display:inline-flex; align-items:center; gap:.25rem; padding:.2rem .55rem; border-radius:999px;
  border:1px solid rgba(255,181,71,.35); background:rgba(255,181,71,.08); color:#ffd47d;
  font-size:.68rem; font-weight:750; white-space:nowrap;
}
.aero-quota-chip.is-danger { border-color:rgba(255,95,109,.5); background:rgba(255,95,109,.12); color:#ff9ca5; }
.belt-dual, .belt-dual-ok, .belt-dual-diverge {
  display:grid; gap:.15rem; margin:.55rem 0 .75rem; padding:.55rem .7rem; border-radius:10px;
  border:1px solid var(--border); background:rgba(18,36,58,.65); font-size:.78rem;
}
.belt-dual-ok { border-color:rgba(47,211,138,.35); background:rgba(47,211,138,.08); }
.belt-dual-diverge { border-color:rgba(255,95,109,.45); background:rgba(255,95,109,.1); }
.belt-dual b, .belt-dual-ok b, .belt-dual-diverge b { font-size:.95rem; }
.belt-dual small, .belt-dual-ok small, .belt-dual-diverge small { color:var(--muted); }
.aena-evidence-card {
  border:1px solid rgba(47,211,138,.28); border-radius:12px; padding:.85rem 1rem;
  background:rgba(47,211,138,.06);
}
.aena-evidence-card header { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.5rem; margin-bottom:.35rem; }
.aena-evidence-list { display:grid; gap:.55rem; max-height:16rem; overflow:auto; }
.aena-evidence-item { display:grid; gap:.1rem; padding:.45rem .55rem; border-radius:8px; background:rgba(7,17,31,.45); border:1px solid var(--border); }
.aena-evidence-item time { color:#9fefc4; font-weight:700; font-size:.72rem; }
.aena-evidence-item a { color:var(--text); font-weight:650; }
.aena-evidence-item small { color:var(--muted); }
.secondary-belt-proposal-fa { border-color:rgba(255,181,71,.4); }
.secondary-dot { flex:0 0 auto; width:7px; height:7px; border-radius:50%; background:#708399; }
.secondary-belt-candidate { color:#ffd47d; font-weight:750; }
.secondary-belt-candidate .secondary-dot { background:var(--orange); box-shadow:0 0 0 3px rgba(255,181,71,.14); }
.secondary-belt-confirmed { color:#72dbae; }
.secondary-belt-confirmed .secondary-dot { background:var(--green); }
.secondary-belt-not_confirmed .secondary-dot { background:#708399; }
.belt-average { display:block; width:max-content; max-width:190px; margin-top:.32rem; color:#8fa7ba; font-size:.61rem; line-height:1.28; white-space:normal; }
.pill { display:inline-flex; padding:.28rem .48rem; border-radius:999px; font-size:.78rem; font-weight:700; white-space:nowrap; }
.pill-low { background:#17372e;color:#6fe8b0; }.pill-medium { background:#3a321b;color:#ffd47d; }.pill-high,.pill-very-high { background:#48202a;color:#ffadb4; }
.source-aena { color:#73ebb6; font-weight:800; }.source-other { color:var(--muted); }
.loading-state,.empty-state { min-height:240px; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:.8rem; color:var(--muted); text-align:center; }
.detail-drawer { --bs-offcanvas-width:min(900px,100vw); display:flex; flex-direction:column; background:var(--app-bg); color:var(--text); }
.detail-drawer .offcanvas-body { flex:1 1 auto; min-height:0; }
.detail-drawer-header {
  position:sticky; top:0; z-index:6;
  align-items:center;
  gap:.75rem;
  padding:.7rem max(.9rem, calc(.5rem + env(safe-area-inset-right, 0px))) .55rem max(.9rem, calc(.5rem + env(safe-area-inset-left, 0px)));
  padding-top:max(.7rem, calc(.4rem + env(safe-area-inset-top, 0px)));
  background:var(--app-bg);
}
.detail-close {
  flex:0 0 auto;
  min-width:88px;
  min-height:44px;
  padding:.4rem .85rem;
  border:1px solid rgba(255,255,255,.28);
  border-radius:11px;
  background:#e8f1f8;
  color:#102033;
  font-size:.88rem;
  font-weight:900;
}
.detail-close-bar {
  display:none;
  padding:.65rem max(.75rem, env(safe-area-inset-right, 0px)) calc(.75rem + env(safe-area-inset-bottom, 0px)) max(.75rem, env(safe-area-inset-left, 0px));
  border-top:1px solid var(--border);
  background:rgba(7,17,31,.98);
}
.detail-close-bar .btn { min-height:48px; font-size:1rem; font-weight:900; }
.flight-focus-hero { margin-bottom:1rem; padding:1rem; border:1px solid rgba(82,168,255,.5); border-radius:16px; background:linear-gradient(145deg,rgba(14,41,67,.96),rgba(5,22,34,.96)); box-shadow:0 16px 42px rgba(0,0,0,.22); }
.flight-focus-hero.canary { border-color:rgba(255,181,71,.58); background:linear-gradient(145deg,rgba(48,39,25,.98),rgba(9,29,39,.97)); }
.focus-flight-title { display:flex; align-items:center; gap:.8rem; }.focus-flight-title > span { display:grid; place-items:center; flex:0 0 48px; height:48px; border-radius:50%; background:rgba(82,168,255,.14); font-size:1.45rem; }
.focus-flight-title small,.focus-primary-values small,.focus-red-day small { display:block; color:var(--muted); font-size:.65rem; font-weight:800; letter-spacing:.055em; text-transform:uppercase; }
.focus-flight-title h3 { margin:0; color:#fff; font-size:1.25rem; }.focus-flight-title p { margin:.15rem 0 0; color:#b9d0e5; font-size:.76rem; }
.focus-primary-values { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.55rem; margin:.9rem 0; }.focus-primary-values > span { min-width:0; padding:.65rem; border:1px solid rgba(255,255,255,.09); border-radius:10px; background:rgba(2,13,23,.42); }.focus-primary-values b { display:block; overflow:hidden; color:#fff; font-size:1rem; text-overflow:ellipsis; white-space:nowrap; }.focus-primary-values em { color:#8fd3ff; font-size:.68rem; font-style:normal; font-weight:850; }
.focus-update-schedule { display:flex; justify-content:space-between; gap:.5rem; margin-top:.48rem; color:#7f98ae; font-size:.61rem; line-height:1.35; }.focus-update-schedule span { min-width:0; }.focus-update-schedule b { color:#bcd0df; font-weight:850; }.focus-refresh-status:not(:empty) { display:block; margin-top:.35rem; color:#b8cade; line-height:1.35; }
.focus-hero-actions { display:grid; grid-template-columns:minmax(0,2fr) minmax(120px,1fr); gap:.45rem; }
.detail-watch-quick { position:sticky; top:0; z-index:5; margin:-1rem -1rem 1rem; padding:.65rem 1rem; border-bottom:1px solid rgba(255,181,71,.4); background:rgba(7,17,31,.96); backdrop-filter:blur(12px); }
.detail-drawer-header .offcanvas-title { margin:0; font-size:1.02rem; }
.detail-quick-bar { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.15fr); gap:.4rem; padding:.45rem .7rem .5rem; border-bottom:1px solid rgba(255,181,71,.4); background:rgba(7,17,31,.97); }
.detail-quick-bar[hidden] { display:none !important; }
.detail-quick-bar .btn { min-height:40px; padding:.35rem .5rem; font-size:.78rem; font-weight:850; line-height:1.15; }
.detail-quick-bar .focus-refresh-status { grid-column:1/-1; margin:0; font-size:.68rem; }
.focus-red-day { display:grid; grid-template-columns:1fr auto; align-items:center; gap:1rem; margin-bottom:1rem; padding:.8rem 1rem; border:1px solid rgba(143,165,189,.28); border-radius:13px; background:rgba(7,17,31,.62); }.focus-red-day.has-red { border-color:rgba(255,95,109,.6); background:linear-gradient(90deg,rgba(82,17,29,.42),rgba(7,17,31,.72)); }.focus-red-day strong,.focus-red-day span { display:block; }.focus-red-day > div:first-child > strong { margin:.1rem 0; color:#fff; font-size:1.15rem; }.focus-red-day > div:first-child > span { color:#aebfd0; font-size:.7rem; }
.focus-red-split { display:flex; gap:.45rem; }.focus-red-split span { min-width:78px; padding:.45rem .65rem; border:1px solid rgba(255,95,109,.45); border-radius:9px; color:#ffc1c7; text-align:center; font-size:.7rem; }.focus-red-split b { display:block; font-size:1rem; }
.focus-window { margin-bottom:1rem; padding:1rem; border:1px solid var(--border); border-radius:15px; background:rgba(7,22,34,.72); }.focus-window > header { display:flex; align-items:end; justify-content:space-between; gap:.8rem; }.focus-window > header small { color:#7fa1bc; font-size:.64rem; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }.focus-window > header h3 { margin:.08rem 0 0; color:#fff; font-size:1.05rem; }.focus-window > header > span { color:#8fd3ff; font-size:.82rem; font-weight:900; }.focus-window > p { margin:.55rem 0 .8rem; color:var(--muted); font-size:.7rem; }
.focus-belt-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.6rem; }.focus-belt { min-width:0; overflow:hidden; border:1px solid rgba(47,211,138,.25); border-radius:11px; background:rgba(4,28,31,.62); }.focus-belt.red { border-color:rgba(255,95,109,.38); background:rgba(49,15,25,.5); }.focus-belt.occupied { box-shadow:inset 0 0 0 1px rgba(47,211,138,.65); }.focus-belt.red.occupied { box-shadow:inset 0 0 0 1px rgba(255,95,109,.78); }
.focus-belt > header { padding:.55rem .6rem; border-bottom:1px solid rgba(255,255,255,.07); }.focus-belt > header span,.focus-belt > header strong { display:block; }.focus-belt > header span { color:#fff; font-size:.88rem; font-weight:900; }.focus-belt > header strong { margin-top:.12rem; color:#7d9a91; font-size:.55rem; letter-spacing:.035em; }.focus-belt.occupied > header strong { color:#65edb1; }.focus-belt.red.occupied > header strong { color:#ff9ca8; }
.focus-belt.own { border-color:var(--orange); box-shadow:0 0 0 2px rgba(255,181,71,.45); }.focus-belt.own > header strong { color:#ffd47d; }.focus-belt li.selected { background:rgba(255,181,71,.16); }.focus-belt li.selected b { color:#ffd47d; }
.focus-belt.nearby { border-style:dashed; }.focus-belt.nearby > header strong { color:#8fa5bd; }
.focus-belt li.nearby { opacity:.72; }.focus-belt li.nearby b { color:#b6c4d3; }
.focus-belt ul { display:grid; gap:.28rem; min-height:72px; margin:0; padding:.45rem; list-style:none; }.focus-belt li { display:block; padding:.36rem; border-radius:7px; background:rgba(2,12,20,.48); }.focus-belt li.selected { outline:1px solid var(--orange); }.focus-belt li.active { background:rgba(47,211,138,.1); }.focus-belt.red li.active { background:rgba(255,95,109,.12); }.focus-belt li span,.focus-belt li b,.focus-belt li small { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.focus-belt li span { min-width:0; }.focus-belt li b { color:#eaf6ff; font-size:.64rem; }.focus-belt li small { color:#7890a6; font-size:.53rem; }.focus-belt li.empty { color:#637c8f; font-size:.58rem; }
.focus-unknown { display:grid; gap:.18rem; margin-top:.65rem; padding:.6rem; border:1px dashed rgba(255,181,71,.5); border-radius:9px; color:#e9c989; font-size:.65rem; }.focus-unknown span { color:#a99978; }
.timeline { position:relative; padding-left:1.3rem; }
.timeline::before { content:""; position:absolute; left:.35rem; top:.4rem; bottom:.4rem; width:2px; background:var(--border); }
.timeline-item { position:relative; padding:0 0 1.2rem .7rem; }
.timeline-item::before { content:""; position:absolute; left:-1.3rem; top:.35rem; width:10px; height:10px; border-radius:50%; background:var(--blue); box-shadow:0 0 0 4px var(--app-bg); }
.timeline-item.aena::before { background:var(--green); }
.detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.7rem; }
.detail-stat { padding:.75rem; background:var(--panel); border:1px solid var(--border); border-radius:10px; }
.detail-stat small { color:var(--muted); display:block; }.detail-stat strong { display:block; margin-top:.25rem; }
.telemetry-card { overflow:hidden; border:1px solid var(--border); border-radius:12px; background:linear-gradient(145deg,#0b1b2b,#102943); }
.telemetry-visual { display:flex; align-items:center; justify-content:center; gap:1rem; padding:.5rem; border-bottom:1px solid var(--border); }
.telemetry-visual span { color:var(--muted); }
.telemetry-values { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.6rem; padding:.7rem; }
.telemetry-values > div { padding:.55rem; border-radius:8px; background:rgba(7,17,31,.56); }
.telemetry-values small,.telemetry-note { color:var(--muted); display:block; }.telemetry-values strong { display:block; margin-top:.15rem; }
.telemetry-note { padding:0 .75rem .7rem; }
.telemetry-trend.climbing { color:#78efbc; }.telemetry-trend.descending { color:#ffbe72; }.telemetry-trend.level { color:#8fd3ff; }.telemetry-trend.unknown { color:var(--muted); }.telemetry-empty { opacity:.82; }
.telemetry-refresh { margin:0 .7rem .7rem; }.telemetry-compact > header { display:flex; justify-content:space-between; gap:.4rem; padding:.55rem .65rem; border-bottom:1px solid var(--border); }.telemetry-compact > header small { color:var(--muted); }.telemetry-compact-values { display:grid; gap:.35rem; padding:.55rem; }.telemetry-compact-values > span { min-width:0; padding:.42rem; border-radius:8px; background:rgba(7,17,31,.56); }.telemetry-compact-values small,.telemetry-compact-values b { display:block; }.telemetry-compact-values small { color:var(--muted); font-size:.58rem; }.telemetry-compact-values b { margin-top:.08rem; overflow:hidden; font-size:.72rem; text-overflow:ellipsis; }
.belt-event-list { display:grid; gap:.55rem; }.belt-event-item { padding:.7rem; border:1px solid #654f26; border-radius:9px; background:#231d14; }.belt-event-item header { display:flex; justify-content:space-between; gap:.7rem; margin-bottom:.4rem; }.belt-event-item header strong { color:#ffd47d; }.belt-event-item header time { color:var(--muted); font-size:.7rem; }.belt-event-item p { margin:.45rem 0 0; color:#d7e0e8; font-size:.8rem; }
.observed-context { display:grid; gap:.2rem; margin-top:.65rem; padding:.68rem; border-left:3px solid var(--orange); background:rgba(255,181,71,.07); }.observed-context strong { color:#ffd47d; font-size:.74rem; }.observed-context span { color:var(--muted); font-size:.72rem; }
.belt-probability-panel { margin-bottom:.75rem; padding:.7rem; border:1px solid #2d4962; border-radius:11px; background:#0a1828; }
.belt-probability-panel > header { display:flex; justify-content:space-between; align-items:flex-start; gap:.7rem; margin-bottom:.6rem; }.belt-probability-panel > header strong,.belt-probability-panel > header small { display:block; }.belt-probability-panel > header small { color:var(--muted); font-size:.66rem; }.belt-probability-panel > header > span { max-width:180px; color:#ffd47d; font-size:.65rem; font-weight:800; text-align:right; }
.belt-probability-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.45rem; }
.belt-probability { padding:.46rem; border:1px solid #29455e; border-radius:8px; background:#0e2134; }.belt-probability > div { display:flex; justify-content:space-between; gap:.4rem; font-size:.7rem; }.belt-probability > div b { color:#78efbc; }.belt-probability > span { display:block; height:6px; margin:.32rem 0; overflow:hidden; border-radius:99px; background:#20354a; }.belt-probability > span i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,var(--blue),var(--green)); }.belt-probability small { color:var(--muted); font-size:.61rem; }
.belt-probability.red { border-color:#59313a; }.belt-probability.red > div b { color:#ffadb4; }.belt-probability.red > span i { background:linear-gradient(90deg,var(--orange),var(--red)); }.belt-probability.current { outline:2px solid var(--orange); outline-offset:-2px; }
.belt-probability-panel > footer { margin-top:.55rem; color:var(--muted); font-size:.67rem; }.belt-probability-panel > footer strong { color:#ffadb4; }
.prediction-summary { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.85rem 1rem; border-color:#315985; background:linear-gradient(105deg,rgba(23,64,101,.75),rgba(8,25,42,.92)); }
.prediction-summary > div:first-child { display:flex; align-items:center; gap:.75rem; }.prediction-summary strong,.prediction-summary small { display:block; }.prediction-summary small { color:var(--muted); font-size:.7rem; }.prediction-orb { display:grid; place-items:center; width:38px; height:38px; border-radius:50%; color:#8cc8ff; font-size:1.5rem; background:#102d49; box-shadow:0 0 18px rgba(82,168,255,.28); }
.prediction-summary-values { display:flex; gap:.6rem; }.prediction-summary-values > span { min-width:94px; padding:.45rem .65rem; border:1px solid #31506d; border-radius:9px; background:rgba(4,16,28,.55); }.prediction-summary-values strong { color:#8fd7ff; }
.prediction-belt { display:block; margin-top:.3rem; color:#8fd7ff; font-size:.62rem; font-weight:800; }.prediction-belt.prediction-red { color:#ff9aa4; }
.prediction-detail { margin:.6rem 0 .8rem; padding:.7rem; border:1px solid #315985; border-radius:10px; background:#0d2135; }.prediction-detail > div { display:flex; justify-content:space-between; gap:.7rem; }.prediction-detail span { color:#8fd7ff; font-size:.72rem; font-weight:800; }.prediction-detail p { margin:.35rem 0 0; color:var(--muted); font-size:.72rem; }.prediction-detail-red { border-color:#70404a; background:#2a151d; }.prediction-detail-red span { color:#ff9aa4; }
@media (max-width:767.98px){.prediction-summary{align-items:stretch;flex-direction:column}.prediction-summary-values{display:grid;grid-template-columns:repeat(2,1fr)}.prediction-summary-values>span{min-width:0}.prediction-detail>div{flex-direction:column;gap:.15rem}}
.provider-health-card{padding:1rem;border:1px solid var(--border);border-left-width:4px;border-radius:12px;background:linear-gradient(145deg,rgba(12,29,45,.96),rgba(10,21,36,.96));box-shadow:0 12px 30px rgba(0,0,0,.12)}
.provider-health-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:.65rem;margin-bottom:.85rem}.provider-health-card header small{display:block;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.05em}.provider-health-card header strong{display:block;margin-top:.16rem;font-size:1.08rem}.provider-health-healthy{border-left-color:var(--green)}.provider-health-stale{border-left-color:var(--orange)}.provider-health-error{border-left-color:var(--red)}.provider-health-unknown,.provider-health-not_configured{border-left-color:#718195}
.provider-health-card dl{display:grid;gap:.38rem;margin:0}.provider-health-card dl>div{display:flex;justify-content:space-between;gap:.75rem;padding-bottom:.35rem;border-bottom:1px solid rgba(106,137,163,.16)}.provider-health-card dt{color:var(--muted);font-size:.7rem;font-weight:650}.provider-health-card dd{margin:0;color:#e9f2f8;font-size:.7rem;text-align:right}.provider-health-modes{display:grid;gap:.22rem;margin-top:.65rem;padding:.55rem;border-radius:8px;background:rgba(41,171,226,.07);font-size:.67rem}.provider-health-modes span{display:flex;justify-content:space-between;gap:.5rem;color:var(--muted)}.provider-health-modes b{color:#dcebf4;text-align:right}.provider-quota-note,.provider-error{margin:.65rem 0 0;font-size:.68rem;line-height:1.35}.provider-quota-note{color:#a8bac8}.provider-error{padding:.5rem;border-radius:7px;background:rgba(255,80,99,.09);color:#ffb4bc}.provider-error b{color:#ff7f8d}
@media (min-width:768px){ .w-md-auto{width:auto!important;} }
@media (max-width:767.98px){
  .app-navbar .container-fluid{flex-wrap:wrap;gap:.3rem;padding:.35rem .5rem}.navbar-brand{margin-right:0}.brand-copy,.admin-label{display:none}.brand-mark{width:36px;height:32px;font-size:.74rem}.admin-link,.settings-link{width:34px;height:34px;padding:0}.admin-icon{font-size:1.05rem}
  .nav-utility{order:3;margin-left:0}
  .nav-primary-actions{width:100%;order:5;margin-left:0;justify-content:stretch;align-items:center}
  .nav-quick-icons{flex:0 0 auto}
  .nav-icon-btn{width:40px;height:40px}
  .sync-now-btn{flex:1 1 auto;min-height:40px;height:auto;padding:.35rem .55rem;font-size:.82rem}
  .sync-now-status{width:100%;text-align:center;white-space:normal}
  .nav-date{flex:1 1 auto;min-width:0;margin:0}.nav-date-current{flex:1 1 auto;min-width:0}.nav-date-current strong{overflow:hidden;font-size:.86rem;text-overflow:ellipsis}.nav-date-step{width:32px;height:36px}
  .connection-dot{width:12px;height:12px}
  main.container-fluid{padding-top:.6rem!important}.filters-panel{margin-bottom:.45rem!important;border:0;background:transparent;box-shadow:none}.filters-panel>.radar-toggle{display:none}.filters-panel .toolbar{margin-top:.35rem;border:1px solid var(--border);border-radius:12px;background:rgba(13,27,45,.96)}.belt-daily-alert{display:none!important}
  .toolbar{padding:.8rem}.metric-card{padding:.85rem}.metric-card strong{font-size:1.35rem}.panel-header{align-items:flex-start!important}
  .flights-table thead{display:none}.flights-table,.flights-table tbody,.flights-table tr,.flights-table td{display:block;width:100%}
  .flights-table tr{position:relative;padding:.8rem 1rem;border-bottom:1px solid var(--border)}
  .flights-table .flight-group-row{padding:.4rem .7rem}.flights-table .flight-group-row td{display:block!important;padding:.25rem!important}.flight-group-row button{font-size:.65rem}
  .flights-table td{border:0;padding:.2rem 0}.flights-table td:nth-child(1){position:absolute;right:1rem;top:.85rem;width:auto}
  .flights-table td:nth-child(2),.flights-table td:nth-child(3){display:inline-block;width:auto;margin-right:.45rem;vertical-align:top}
  .flights-table td:nth-child(4){font-size:1.05rem}.flights-table td:nth-child(6)::before{content:"ETA/Real: ";color:var(--muted)}
  .flights-table td:nth-child(7)::before{content:"Cinta: ";color:var(--muted)}.flights-table td:nth-child(8)::before{content:"Sala: ";color:var(--muted)}
  .flights-table td:nth-child(9){display:none}
  .mobile-command-grid{grid-template-columns:1fr 1fr}
  .canary-strip,.night-strip,.night-day-strip,.upcoming-strip{scroll-snap-type:x mandatory;scroll-padding-inline:.7rem;-webkit-overflow-scrolling:touch}
  .canary-strip.week-scope{overflow:visible;scroll-snap-type:none}
  .canary-card,.night-card{flex:0 0 100%;max-width:100%;padding:.8rem;scroll-snap-align:start;scroll-snap-stop:always}.canary-card>div:first-child strong{font-size:1.05rem}.canary-flight-code{font-size:.85rem}.canary-card-actions{grid-template-columns:1fr 1fr}.canary-quick-watch,.canary-card-actions .flightaware-link{min-height:42px;font-size:.78rem}.canary-belt-line span,.canary-belt-line small{font-size:.68rem}.canary-belt-line b{font-size:1.08rem}
  .night-card{padding-top:1.2rem}.night-score strong{font-size:1.9rem}.night-card-kicker{min-height:3.1rem;padding-right:5rem}
  .upcoming-strip{display:flex;gap:.55rem}.upcoming-flight{flex:0 0 100%;max-width:100%;scroll-snap-stop:always}#flightMap{height:240px}.airport-scene-large{height:980px}.airport-flow{max-height:280px}.flow-flight{flex-basis:170px}
  .scene-plane{width:150px;max-width:150px}.scene-plane-icon{width:25px;height:25px;flex-basis:25px;font-size:.82rem}.scene-plane-data{padding:.2rem .3rem}.scene-plane-data em{font-size:.72rem}.scene-plane-data small{font-size:.62rem}.scene-plane-time b{font-size:.9rem}.scene-source{right:.45rem;top:.45rem}.scene-legend{left:.45rem;top:.45rem;max-width:210px;border-radius:9px}.scene-belt-origin{font-size:.72rem}.scene-belts-grid{grid-template-columns:repeat(8,minmax(88px,1fr))}.belt-change-card{flex-basis:225px}
  .airport-flow-wide{grid-template-columns:repeat(5,minmax(165px,1fr));max-height:none}.scene-belts{padding-left:.4rem;padding-right:.4rem}
  .canary-watch-header{align-items:stretch}.canary-watch-tools{display:flex;width:100%}.canary-watch-tools .btn{flex:1 1 auto;min-height:40px}.canary-watch-mark{display:none}
  .push-actions{grid-template-columns:1fr;padding:.6rem .7rem}
  .tracked-focus-panel .panel-header,.watch-dock .panel-header{padding:.6rem .7rem}.tracked-focus-header h2,.watch-dock-header h2{font-size:1rem}
  .watch-dock-list{padding:.45rem .55rem .65rem;gap:.4rem}
  .watch-chip{min-width:100%;min-height:56px}
  .tracked-focus-body{padding:.6rem}.tracked-focus-layout{grid-template-columns:1fr;gap:.6rem;margin-bottom:.4rem}.tracked-focus-summary .flight-focus-hero,.tracked-focus-summary .focus-red-day,.tracked-focus-belts .focus-window{margin-bottom:.6rem}
  .tracked-other-day{flex-direction:column;align-items:stretch;text-align:left}.tracked-other-day .btn{min-height:44px}
  .flight-focus-hero{padding:.75rem;border-radius:13px}.focus-flight-title{align-items:flex-start;gap:.5rem}.focus-flight-title>span{display:none}.focus-flight-title h3{font-size:1.08rem;line-height:1.2;overflow-wrap:anywhere}.focus-flight-title p{font-size:.8rem}
  .focus-primary-values,.tracked-focus-summary .focus-primary-values{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;margin:.65rem 0}.focus-primary-values>span{padding:.5rem}.focus-primary-values small{font-size:.64rem}.focus-primary-values b{font-size:1.1rem}.focus-primary-values em{font-size:.74rem}
  .focus-hero-actions{grid-template-columns:1fr 1fr;gap:.4rem}.flight-focus-hero .btn{min-height:44px;padding:.45rem .4rem;font-size:.8rem;line-height:1.2}.focus-update-schedule{font-size:.72rem}.detail-watch-quick{margin:-1rem -1rem .7rem;padding:.55rem .7rem}.detail-watch-quick .btn{min-height:44px}.detail-quick-bar{grid-template-columns:1fr;padding:.4rem .55rem}.detail-quick-bar .btn{min-height:40px}
  .detail-close-bar{display:block}
  .detail-close{min-width:96px;min-height:46px;font-size:.95rem}
  .delay-origin{padding:.7rem .75rem}
  .delay-origin-title{font-size:1.12rem}
  .focus-red-day{grid-template-columns:1fr auto;gap:.5rem;padding:.65rem;border-radius:12px}.focus-red-day small{font-size:.64rem}.focus-red-day>div:first-child>strong{font-size:1.05rem}.focus-red-day>div:first-child>span{font-size:.76rem}.focus-red-split{flex-direction:column;gap:.3rem}.focus-red-split span{min-width:58px;padding:.3rem .45rem;font-size:.72rem}.focus-red-split b{display:inline;margin-right:.3rem;font-size:.9rem}.focus-red-list li{font-size:.8rem}.focus-red-toggle{justify-self:stretch;min-height:42px;font-size:.82rem}
  .telemetry-compact .telemetry-visual{display:none}.telemetry-compact .telemetry-note{padding:.55rem;font-size:.74rem}.telemetry-refresh{width:calc(100% - .8rem);margin:0 .4rem .5rem;min-height:42px;font-size:.8rem}.telemetry-compact>header{padding:.5rem .6rem;font-size:.8rem}.telemetry-compact-values{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem;padding:.45rem}.telemetry-compact-values>span{padding:.4rem}.telemetry-compact-values small{font-size:.64rem}.telemetry-compact-values b{font-size:.8rem}
  .focus-window{padding:.65rem;border-radius:13px}.focus-window>header{align-items:flex-start;flex-direction:column;gap:.2rem}.focus-window>header h3{font-size:.98rem;line-height:1.2}.focus-window>header>span{font-size:.8rem}.focus-window>p{display:none}
  .focus-belt-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}.focus-belt>header{padding:.45rem .5rem}.focus-belt>header span{font-size:.92rem}.focus-belt>header strong{font-size:.62rem}.focus-belt ul{min-height:0;padding:.35rem;gap:.25rem}.focus-belt li{padding:.35rem}.focus-belt li b{font-size:.8rem}.focus-belt li small{font-size:.68rem}.focus-belt li.empty{font-size:.7rem}.focus-unknown{padding:.5rem;font-size:.74rem}
  .telemetry-values{grid-template-columns:1fr 1fr}.telemetry-visual{flex-direction:column;gap:.1rem}
  .canary-week{padding:.6rem .7rem .25rem}.canary-origins{padding:.35rem .7rem .1rem}.canary-strip{padding:.7rem .7rem .9rem}
}
@media (max-width:420px){.focus-red-split{width:100%}.focus-red-split span{flex:1}}
@media (max-width:339px){.tracked-focus-layout{grid-template-columns:1fr}.focus-primary-values{grid-template-columns:repeat(2,minmax(0,1fr))}.focus-belt-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:767.98px) and (orientation:portrait){
  .airport-scene-large{height:1580px;overflow:visible}
  .scene-aerodrome{height:750px}
  .scene-aircraft-layer,.scene-trails{height:920px;bottom:auto}
  .scene-plane-ground{display:none}
  .scene-baggage-link{display:none}
  .scene-belts{min-height:830px;height:830px;padding:.8rem .7rem;overflow:visible}
  .scene-belts>header{min-width:0;margin-bottom:.62rem}
  .scene-belts>header>span{display:none}
  .scene-belts>header>strong{width:100%;text-align:center}
  .scene-belts-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;min-width:0}
  .scene-belt{min-height:158px;padding:.55rem}
  .scene-belt-origin{font-size:.88rem}
  .scene-belt-origin.free{font-size:.72rem}
  .scene-belt-next{display:grid;gap:.12rem;margin-top:.45rem;padding:.38rem;border-top:1px solid rgba(143,200,164,.26);border-radius:7px;background:rgba(5,15,23,.34);text-align:left}
  .scene-belt-next i{color:#9bdab2;font-size:.57rem;font-style:normal;font-weight:900;letter-spacing:.05em}
  .scene-belt-next b{position:static;color:#f4fbff;font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .scene-belt-next small{min-height:0;color:var(--muted)!important;font-size:.56rem!important;text-align:left}
}

/* Día visible siempre en la barra superior */
.nav-date { display:flex; align-items:center; gap:.25rem; margin:0 .75rem; padding:.2rem; border:1px solid var(--border); border-radius:12px; background:#091625; }
.nav-date.is-other-day { border-color:var(--orange); background:rgba(80,58,20,.4); }
.nav-date.is-future-day { border-color:var(--blue); background:rgba(20,76,122,.32); }
.nav-date-step { display:grid; place-items:center; width:38px; height:38px; border:0; border-radius:9px; background:#12243a; color:#dbeaff; font-size:1.55rem; line-height:1; }
.nav-date-step:active,.nav-date-step:hover { background:#1d3a57; }
.nav-date-current { position:relative; min-width:160px; padding:0 .3rem; text-align:center; line-height:1.12; }
.nav-date-current small { display:block; color:#9ed8ff; font-size:.66rem; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.nav-date.is-other-day .nav-date-current small { color:#ffd47d; }
.nav-date-current strong { display:block; color:#fff; font-size:.98rem; white-space:nowrap; }
.nav-date-current strong::first-letter { text-transform:uppercase; }
.nav-date-current input { position:absolute; inset:0; width:100%; height:100%; opacity:0; font-size:16px; cursor:pointer; -webkit-appearance:none; appearance:none; }
.nav-date-today { height:38px; padding:0 .6rem; border:0; border-radius:9px; background:var(--orange); color:#201506; font-size:.8rem; font-weight:900; }

/* Varios vuelos en seguimiento */
.tracked-focus-header { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem .75rem; }
.tracked-focus-nav { display:flex; align-items:center; gap:.35rem; margin-left:auto; }
.tracked-focus-nav span { min-width:58px; color:#cfe6fa; font-size:.84rem; font-weight:900; text-align:center; }
.tracked-focus-step { display:grid; place-items:center; width:42px; height:42px; border:1px solid var(--blue); border-radius:10px; background:rgba(32,91,139,.3); color:#fff; font-size:1.5rem; line-height:1; }
.tracked-focus-actions { display:flex; flex-wrap:wrap; gap:.35rem; }
.tracked-focus-actions .btn { white-space:nowrap; }
.tracked-focus-tab.other-day { border-style:dashed; }
.tracked-other-day { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem; border:1px dashed rgba(82,168,255,.55); border-radius:12px; background:rgba(20,76,122,.15); }
.tracked-other-day small,.tracked-other-day strong,.tracked-other-day span { display:block; }
.tracked-other-day small { color:#9ed8ff; font-size:.72rem; font-weight:900; letter-spacing:.05em; text-transform:uppercase; }
.tracked-other-day strong { margin:.15rem 0; color:#fff; font-size:1.1rem; }.tracked-other-day span { color:var(--muted); font-size:.85rem; }

/* Previsión de cintas rojas del día */
.focus-red-list { grid-column:1/-1; display:grid; gap:.25rem; margin:0; padding:0; list-style:none; }
.focus-red-list li { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:.5rem; padding:.35rem .5rem; border-radius:8px; background:rgba(2,12,20,.5); font-size:.78rem; }
.focus-red-list li b { color:#fff; font-variant-numeric:tabular-nums; }
.focus-red-list li span { overflow:hidden; color:#d8e6f2; text-overflow:ellipsis; white-space:nowrap; }
.focus-red-list li em { color:#ffadb4; font-size:.72rem; font-style:normal; font-weight:850; white-space:nowrap; }
.focus-red-list li.selected { outline:1px solid var(--orange); }.focus-red-list li.done { opacity:.6; }
.focus-red-list li.more { display:block; color:var(--muted); text-align:center; }
.focus-red-list[hidden] { display:none; }
.focus-red-toggle { grid-column:1/-1; justify-self:start; min-height:34px; padding:.3rem .75rem; border:1px solid rgba(255,173,180,.45); border-radius:8px; background:rgba(255,77,90,.1); color:#ffadb4; font-size:.78rem; font-weight:850; }
.focus-red-toggle:hover,.focus-red-toggle[aria-expanded="true"] { background:rgba(255,77,90,.2); color:#fff; }

/* Canarias: semana y orígenes */
.canary-week { display:flex; gap:.4rem; overflow-x:auto; padding:.75rem 1rem .3rem; scrollbar-width:none; }
.canary-week::-webkit-scrollbar,.canary-origins::-webkit-scrollbar { display:none; }
.canary-day { flex:0 0 auto; min-width:78px; padding:.4rem .5rem; border:1px solid #4d4128; border-radius:11px; background:#16202c; color:var(--text); line-height:1.15; text-align:center; }
.canary-day small { display:block; color:var(--muted); font-size:.68rem; font-weight:850; text-transform:capitalize; }
.canary-day strong { display:block; font-size:1.25rem; }
.canary-day span { display:block; color:#ffd47d; font-size:.68rem; font-weight:800; white-space:nowrap; }
.canary-day i { display:block; margin-top:.12rem; color:#ffadb4; font-size:.62rem; font-style:normal; font-weight:900; white-space:nowrap; }
.canary-day.empty span { color:#6f8598; }
.canary-day.active { border-color:var(--orange); background:var(--orange); color:#201506; }
.canary-day.active small,.canary-day.active span { color:#3b2a0b; }.canary-day.active i { color:#7a1020; }
.canary-origins { display:flex; gap:.35rem; overflow-x:auto; padding:.35rem 1rem .1rem; scrollbar-width:none; }
.canary-origin { flex:0 0 auto; min-height:38px; padding:.3rem .8rem; border:1px solid #4d4128; border-radius:999px; background:transparent; color:#e8d4ad; font-size:.82rem; font-weight:800; white-space:nowrap; }
.canary-origin b { margin-left:.2rem; color:#ffd47d; }
.canary-origin.active { border-color:var(--orange); background:rgba(255,181,71,.22); color:#fff; }
.canary-origin.mode { border-style:dashed; }
.canary-origin.mode.night.active { border-style:solid; border-color:#75c8ff; background:rgba(82,168,255,.22); color:#fff; }
.canary-origin.mode.night.active b { color:#9ed8ff; }
.canary-origin.mode.week.active { border-style:solid; border-color:#78efbc; background:rgba(47,211,138,.16); color:#fff; }
.canary-origin.mode.week.active b { color:#78efbc; }
.canary-card.is-night { box-shadow:inset 0 0 0 1px rgba(82,168,255,.28); }
.canary-strip.week-scope { display:grid; gap:1rem; overflow:visible; scroll-snap-type:none; }

/* Hora visible en los aviones de la infografía */
.scene-plane-time { display:flex !important; align-items:baseline; gap:.3rem; }
.scene-plane-side-right .scene-plane-time { justify-content:flex-end; }
.scene-plane-time b { color:#fff; font-size:1rem; font-weight:900; font-variant-numeric:tabular-nums; }
.scene-plane-time i { overflow:hidden; color:#ffd47d; font-size:.64rem; font-style:normal; font-weight:850; text-overflow:ellipsis; white-space:nowrap; }

/* Coincidencia de cintas: nube ±30, operativos verde/rojo ajustables */
.settings-modal { background:var(--panel); border:1px solid var(--border); }
.settings-modal .modal-header,.settings-modal .modal-footer { border-color:var(--border); }
.settings-window { display:grid; gap:.45rem; }
.settings-window input[type=range] { width:100%; accent-color:var(--green); }
.settings-window .input-group-text { background:#091625; border-color:var(--border); color:var(--muted); font-weight:800; }
.settings-window .form-control { text-align:center; font-variant-numeric:tabular-nums; font-weight:900; }
.coincidence-badge { display:inline-flex; align-items:center; align-self:flex-start; gap:.35rem; padding:.16rem .55rem .16rem .2rem; border:1px solid #36485d; border-radius:999px; background:rgba(255,255,255,.05); color:#b6c4d3; font-size:.74rem; font-weight:900; white-space:nowrap; }
.coincidence-badge b { display:grid; place-items:center; min-width:1.5rem; height:1.5rem; border-radius:50%; background:rgba(255,255,255,.08); font-size:.78rem; }
.coincidence-badge.perfecto { border-color:#e8b440; background:#e8b440; color:#1d1404; }.coincidence-badge.perfecto b { background:#1d1404; color:#e8b440; }
.coincidence-badge.muy_bueno { border-color:#1f8a63; background:#123a2e; color:#7cf3c2; }.coincidence-badge.muy_bueno b { background:#1f8a63; color:#04140f; }
.coincidence-badge.parcial { border-color:#31506d; color:#9ed8ff; }
.canary-card > .coincidence-badge { margin:.35rem 0 .15rem; }
.canary-occupancy.coincidence-perfecto { border-color:#e8b440; box-shadow:0 0 0 1px rgba(232,180,64,.35) inset; }
.canary-occupancy.coincidence-perfecto > header span { color:#ffd47d; }
.focus-window.coincidence-perfecto { border-color:#e8b440; }
.focus-window > p.coincidence-basis { display:block; color:#b6c4d3; font-size:.8rem; }

@media (max-width:430px) {
  body { font-size:.9rem; }
  .navbar-brand { display:none; }
  .app-navbar .container-fluid { padding:.28rem .42rem; gap:.25rem; }
  .nav-date { padding:.1rem; border-radius:10px; }
  .nav-date-current { min-width:0; padding:0 .2rem; }
  .nav-date-current small { font-size:.58rem; }
  .nav-date-current strong { font-size:.78rem; }
  .nav-date-step { width:28px; height:32px; font-size:1.2rem; }
  .nav-icon-btn { width:36px; height:36px; }
  .nav-icon-btn svg { width:20px; height:20px; }
  .sync-now-btn { min-height:36px; padding:.28rem .45rem; font-size:.74rem; }
  .admin-link,.settings-link { width:32px; height:32px; }
  .mobile-command { padding:.45rem .5rem; border-radius:10px; }
  .mobile-command strong { font-size:.66rem; }
  .canary-watch-copy .small,.canary-watch-copy p { font-size:.72rem; }
  .canary-watch-tools .btn { min-height:36px; font-size:.72rem; }
  .canary-week { padding:.45rem .55rem .15rem; gap:.3rem; }
  .canary-origins { padding:.25rem .55rem .05rem; gap:.28rem; }
  .canary-day { min-width:60px; padding:.25rem .32rem; border-radius:9px; }
  .canary-day strong { font-size:1.05rem; }
  .canary-day small,.canary-day span { font-size:.62rem; }
  .canary-origin { min-height:30px; padding:.16rem .55rem; font-size:.7rem; }
  .canary-card,.night-card { padding:.5rem; border-radius:10px; }
  .canary-card > div:first-child strong { font-size:.95rem; }
  .canary-flight-code { font-size:.78rem; }
  .canary-card-timing b { font-size:.95rem; }
  .canary-belt-line { padding:.36rem; }
  .canary-belt-line b { font-size:.92rem; }
  .canary-occupancy { margin-top:.4rem; padding:.4rem; }
  .canary-occupancy > header strong { font-size:.95rem; }
  .occupancy-belts { gap:.12rem; margin:.32rem 0; }
  .occupancy-belt { padding:.12rem .02rem; }
  .occupancy-belt b { font-size:.68rem; }
  .occupancy-belt small { font-size:.5rem !important; }
  .canary-card-actions .flightaware-link,.canary-quick-watch { min-height:36px; font-size:.7rem; }
  .upcoming-flight { padding:.45rem; }
  .upcoming-clock { min-width:64px; padding:.35rem .28rem; }
  .upcoming-clock b { font-size:1.22rem; }
  .upcoming-main strong { font-size:.9rem; }
  .panel-header { padding:.65rem .7rem; }
  .radar-toggle { padding:.55rem .7rem; }
  .detail-drawer-header { padding-top:max(.9rem, calc(.55rem + env(safe-area-inset-top, 0px))); }
  .detail-quick-bar { padding:.32rem .45rem; gap:.3rem; }
  .detail-quick-bar .btn { min-height:36px; font-size:.72rem; }
  .flight-focus-hero { padding:.5rem; }
  .focus-primary-values > span { padding:.4rem; }
  .focus-primary-values b { font-size:.95rem; }
  .tracked-focus-nav { width:100%; justify-content:space-between; order:3; margin-left:0; }
  .tracked-focus-step { width:48px; height:38px; }
}

#canaryPrintSheet,
#canaryPrintSheet * {
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
  color-adjust: exact;
}
#canaryPrintSheet { display:none; }

@media print {
  @page { size: A4 portrait; margin: 10mm 9mm 12mm; }
  :root, html, html[data-bs-theme="dark"], body {
    --bs-body-bg: #fff !important;
    --bs-body-color: #111 !important;
    --bs-emphasis-color: #111 !important;
    color-scheme: light !important;
  }
  html, body, #canaryPrintSheet, #canaryPrintSheet *, #canaryPrintSheet *::before, #canaryPrintSheet *::after,
  .canary-print, .canary-print-card, .print-belt, .canary-print-occupancy, .canary-print-around li {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    color-adjust: exact !important;
    forced-color-adjust: none !important;
  }
  html, body {
    background: #fff !important;
    color: #111 !important;
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
  }
  body > *:not(#canaryPrintSheet) { display: none !important; }
  #canaryPrintSheet, #canaryPrintSheet[hidden] {
    display: block !important;
    position: static !important;
    width: auto !important;
    height: auto !important;
    overflow: visible !important;
    color: #111 !important;
    background: #fff !important;
  }
  .canary-print {
    font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
    font-size: 10.5pt;
    line-height: 1.25;
    color: #111 !important;
    background: #fff !important;
  }
  .canary-print > header {
    margin-bottom: 8mm;
    padding-bottom: 3mm;
    border-bottom: 1.4pt solid #1565c0;
  }
  .canary-print-kicker {
    margin: 0 0 1mm;
    font-size: 8pt;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #1565c0 !important;
  }
  .canary-print h1 {
    margin: 0 0 1.5mm;
    font-size: 16pt;
    line-height: 1.1;
    color: #0b1f33 !important;
  }
  .canary-print-meta, .canary-print-when, .canary-print-empty {
    margin: 0;
    font-size: 9.5pt;
    color: #222 !important;
  }
  .canary-print-when { margin-top: 1mm; }
  .canary-print-empty { margin-top: 8mm; }
  .canary-print-day { margin: 0 0 6mm; break-inside: auto; }
  .canary-print-day h2 {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 4mm;
    margin: 0 0 2mm;
    padding: 1.2mm 2mm;
    font-size: 12pt;
    text-transform: capitalize;
    color: #0b1f33 !important;
    background: #d6eaf8 !important;
    border-left: 2.4mm solid #1565c0;
    break-after: avoid;
    page-break-after: avoid;
  }
  .canary-print-day h2 span {
    font-size: 9pt;
    font-weight: 700;
    color: #1565c0 !important;
  }
  .canary-print-card {
    margin: 0 0 4.5mm;
    padding: 2mm 2.4mm 3mm 3mm;
    border: .7pt solid #b7c4d1;
    border-left: 2.4mm solid #90a4ae;
    border-radius: 1.2mm;
    background: #fff !important;
    color: #111 !important;
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .canary-print-card.rating-perfecto,
  .canary-print-card.coincidence-perfecto {
    border-color: #f9a825;
    border-left-color: #f9a825;
    background: #fff8e1 !important;
  }
  .canary-print-card.rating-muy_bueno,
  .canary-print-card.coincidence-muy_bueno {
    border-color: #2e7d32;
    border-left-color: #2e7d32;
    background: #e8f5e9 !important;
  }
  .canary-print-card.rating-parcial,
  .canary-print-card.coincidence-parcial {
    border-color: #1565c0;
    border-left-color: #1565c0;
    background: #e3f2fd !important;
  }
  .canary-print-card.rating-bajo,
  .canary-print-card.coincidence-bajo {
    border-color: #90a4ae;
    border-left-color: #78909c;
    background: #f4f6f7 !important;
  }
  .canary-print-card.is-red {
    border-color: #c62828;
    border-left-color: #c62828;
  }
  .canary-print-card > header {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 1.5mm 4mm;
    margin: 0 0 1.5mm;
    padding: 0;
    border: 0;
  }
  .canary-print-id { display: flex; flex-wrap: wrap; align-items: baseline; gap: 1.5mm 3mm; }
  .canary-print-id strong {
    font-size: 15pt;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
    color: #000 !important;
  }
  .canary-print-id b { font-size: 12.5pt; font-weight: 800; color: #111 !important; }
  .canary-print-id span { font-weight: 800; color: #1565c0 !important; }
  .canary-print-id em {
    font-size: 8.5pt;
    font-style: normal;
    font-weight: 800;
    padding: .3mm 1.8mm;
    border-radius: 1mm;
    background: #d6eaf8 !important;
    color: #0b1f33 !important;
  }
  .canary-print-id em.night {
    background: #c5cae9 !important;
    color: #1a237e !important;
  }
  .canary-print-id em.red {
    background: #ef9a9a !important;
    color: #7b1113 !important;
  }
  .canary-print-assign { display: flex; flex-wrap: wrap; gap: 1mm 4mm; font-size: 9.5pt; color: #222 !important; }
  .canary-print-assign b { font-weight: 900; color: #111 !important; }
  .canary-print-assign .score {
    font-weight: 800;
    padding: .3mm 1.6mm;
    border-radius: 1mm;
    background: #d6eaf8 !important;
    color: #0b1f33 !important;
  }
  .canary-print-card.rating-perfecto .score,
  .canary-print-card.coincidence-perfecto .score { background: #ffd54f !important; color: #3e2723 !important; }
  .canary-print-card.rating-muy_bueno .score,
  .canary-print-card.coincidence-muy_bueno .score { background: #81c784 !important; color: #1b5e20 !important; }
  .canary-print-card.rating-parcial .score,
  .canary-print-card.coincidence-parcial .score { background: #90caf9 !important; color: #0d47a1 !important; }
  .canary-print-card.is-red .score { background: #ef9a9a !important; color: #7b1113 !important; }
  .canary-print-timing { margin: 0 0 2mm; font-size: 9pt; color: #222 !important; }
  .delay-origin, .canary-print-timing.delay-origin {
    padding: 1.4mm 2mm;
    border: 0.4mm solid #c62828 !important;
    background: #ffebee !important;
    color: #7b1113 !important;
    font-weight: 800;
  }
  .delay-origin.is-own, .canary-print-timing.delay-origin.is-own {
    border-color: #ef6c00 !important;
    background: #fff3e0 !important;
    color: #e65100 !important;
  }
  .canary-print-occupancy {
    margin: 0 0 2mm;
    padding: 2mm;
    border: .7pt solid #b7c4d1;
    background: #f7fbff !important;
    border-radius: 1mm;
  }
  .canary-print-occupancy.rating-perfecto,
  .canary-print-occupancy.coincidence-perfecto { border-color: #f9a825; background: #fff8e1 !important; }
  .canary-print-occupancy.rating-muy_bueno,
  .canary-print-occupancy.coincidence-muy_bueno { border-color: #2e7d32; background: #e8f5e9 !important; }
  .canary-print-occupancy.rating-parcial,
  .canary-print-occupancy.coincidence-parcial { border-color: #1565c0; background: #e3f2fd !important; }
  .canary-print-occupancy.rating-bajo,
  .canary-print-occupancy.coincidence-bajo { border-color: #90a4ae; background: #f4f6f7 !important; }
  .canary-print-occupancy.has-red { border-color: #c62828; }
  .canary-print-occupancy > header,
  .canary-print-occupancy > header.rating {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 2mm;
    margin: 0 0 1.5mm;
    padding: .6mm 1.2mm;
    border: 0;
    border-radius: .8mm;
    font-size: 8.5pt;
    background: #e3f2fd !important;
    color: #0d47a1 !important;
  }
  .canary-print-occupancy.rating-perfecto > header,
  .canary-print-occupancy.coincidence-perfecto > header { background: #ffe082 !important; color: #5d4037 !important; }
  .canary-print-occupancy.rating-muy_bueno > header,
  .canary-print-occupancy.coincidence-muy_bueno > header { background: #a5d6a7 !important; color: #1b5e20 !important; }
  .canary-print-occupancy.rating-parcial > header,
  .canary-print-occupancy.coincidence-parcial > header { background: #90caf9 !important; color: #0d47a1 !important; }
  .canary-print-occupancy.rating-bajo > header,
  .canary-print-occupancy.coincidence-bajo > header { background: #cfd8dc !important; color: #37474f !important; }
  .canary-print-occupancy.has-red > header { background: #ef9a9a !important; color: #7b1113 !important; }
  .canary-print-occupancy > header span { font-weight: 800; text-transform: uppercase; letter-spacing: .04em; color: inherit !important; }
  .canary-print-occupancy > p { margin: 1.2mm 0 0; font-size: 8pt; color: #222 !important; }
  .print-belts { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 1mm; }
  .print-belt {
    display: grid;
    place-items: center;
    min-height: 9mm;
    padding: .6mm 0;
    border: .8pt solid #b0bec5;
    background: #eceff1 !important;
    color: #455a64 !important;
    text-align: center;
    line-height: 1.1;
  }
  .print-belt b { font-size: 10pt; color: inherit !important; }
  .print-belt small { font-size: 7.5pt; color: inherit !important; }
  .print-belt.occupied {
    border-color: #1b7a43;
    background: #81c784 !important;
    color: #1b5e20 !important;
    font-weight: 900;
  }
  .print-belt.red.occupied {
    border-color: #b71c1c;
    background: #ef9a9a !important;
    color: #7b1113 !important;
  }
  .print-belt.nearby {
    border-style: solid;
    border-color: #ef6c00;
    background: #ffd54f !important;
    color: #e65100 !important;
    font-weight: 800;
  }
  .print-belt.is-canary { outline: .8pt solid #f9a825; outline-offset: -1.2pt; }
  .canary-print-around-wrap h3 {
    margin: 0 0 1mm;
    font-size: 8pt;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #1565c0 !important;
  }
  .canary-print-around {
    display: grid;
    gap: .8mm;
    margin: 0;
    padding: 0;
    list-style: none;
  }
  .canary-print-around li {
    display: flex;
    flex-wrap: wrap;
    gap: .4mm 3mm;
    align-items: baseline;
    padding: .6mm 1.4mm;
    border-radius: .8mm;
    font-size: 8.5pt;
    background: #eceff1 !important;
    border: .6pt solid #cfd8dc;
    color: #222 !important;
  }
  .canary-print-around li b { font-variant-numeric: tabular-nums; color: #000 !important; }
  .canary-print-around li.counts,
  .canary-print-around li.occupied {
    font-weight: 800;
    background: #c8e6c9 !important;
    border-color: #2e7d32;
  }
  .canary-print-around li.near,
  .canary-print-around li.nearby { color: #5d4037 !important; }
  .canary-print-around li.red {
    font-weight: 900;
    background: #ffcdd2 !important;
    border-color: #c62828;
  }
  .canary-print-around li.is-canary {
    background: #ffd54f !important;
    border-color: #f9a825;
    font-weight: 900;
  }
  .canary-print-around li.is-canary.red { background: #ffcc80 !important; border-color: #c62828; }
  .canary-print-around li i {
    font-style: normal;
    font-size: 7.5pt;
    font-weight: 900;
    padding: .15mm 1.4mm;
    border-radius: .8mm;
    background: #f9a825 !important;
    color: #3e2723 !important;
  }
  .canary-print-around-empty { margin: 0 0 1.5mm; font-size: 8.5pt; color: #333 !important; }
  .canary-print-alert {
    margin: 1.5mm 0 0;
    padding: 1.2mm 1.6mm;
    border: .8pt solid #c62828;
    background: #ef9a9a !important;
    color: #7b1113 !important;
    font-size: 8.5pt;
    font-weight: 800;
  }
  .canary-print .later-night {
    margin: 1.8mm 0 0;
    padding: 1.5mm 1.8mm;
    border: .6pt solid #5c6bc0;
    background: #e8eaf6 !important;
  }
  .canary-print .later-night strong,
  .canary-print .later-night span,
  .canary-print .later-night li {
    color: #1a237e !important;
    font-size: 8.5pt;
  }
  .canary-print .later-night ul { margin: .8mm 0 0; padding: 0; list-style: none; }
  .canary-print footer {
    margin-top: 5mm;
    padding-top: 2mm;
    border-top: .6pt solid #90caf9;
    font-size: 8pt;
    color: #333 !important;
  }
}
