@font-face {font-family:'JetBrains Mono';src:url('../vendor/fonts/jetbrains-mono-variable.ttf') format('truetype');font-weight:100 800;font-style:normal;font-display:swap;}
@font-face {font-family:Doto;src:url('../vendor/fonts/doto-variable.ttf') format('truetype');font-weight:100 900;font-style:normal;font-display:swap;}

  .abz-departures {width:100%;max-width:1440px;margin:auto;font-family:'JetBrains Mono',monospace;color:#fff;}
  .abz-departures * {box-sizing:border-box;}
  .abz-departures .stage {container-type:inline-size;margin:auto;width:100%;}
  .abz-departures .board {position:relative;background:#0b0d10;border:1px solid #30363b;border-radius:8px;overflow:hidden;}
  .abz-departures .top-links {display:flex;gap:8px;padding:8px 10px 0;align-items:center;flex-wrap:wrap;background:#050607;font:700 11px/1.3 'JetBrains Mono',monospace;}
  .abz-departures .link-look {display:inline-flex;gap:5px;align-items:center;min-height:44px;padding:6px 9px;border:1px solid #6b9d88;border-radius:4px;background:#111916;color:#fff;}
  .abz-departures .link-look b {color:#abefd2;}
  .abz-departures .link-look {text-decoration:none;font:inherit;}
  .abz-departures .close-board {margin-left:auto;flex:none;width:44px;min-height:44px;border:0;background:none;color:#fff;font:700 24px/1 'JetBrains Mono',monospace;}
  .abz-departures .checkin {flex-wrap:wrap;column-gap:5px;row-gap:0;}
  .abz-departures .airport-heading {display:flex;gap:8px;align-items:center;padding:5px 10px;background:#050607;}
  .abz-departures select {min-width:0;flex:1;min-height:44px;padding:6px 4px;color:#ffda5b;background:#050607;border:0;border-radius:2px;font:900 23px/1.2 Doto,monospace;}
  .abz-departures option {font:700 16px 'JetBrains Mono',monospace;background:#11151a;color:#fff;}
  .abz-departures .hazard {height:3px;background:repeating-linear-gradient(-45deg,#f5ca3d 0 10px,#08090a 10px 20px);}
  .abz-departures .ticker {width:100%;display:flex;align-items:center;min-height:38px;padding:0 10px;border:0;border-bottom:1px solid #35332a;border-radius:0;background:#040706;text-align:left;overflow:hidden;color:#ffda5b;}
  .abz-departures .weather-ticker {color:#ffda5b;}
  .abz-departures .update-ticker {color:#b5e5ff;background:#050a10;min-height:34px;}
  .abz-departures .ticker-window {display:block;min-width:0;width:100%;overflow:hidden;}
  .abz-departures .ticker-track {display:flex;width:max-content;animation:abz-ticker-travel var(--duration,30s) linear infinite;}
  .abz-departures .ticker-copy {flex:none;display:block;min-width:var(--cycle,1000px);padding:7px 64px 7px 0;white-space:nowrap;font:900 18px/1.25 Doto,monospace;letter-spacing:.025em;}
  .abz-departures .update-ticker .ticker-copy {font-size:16px;}
  .abz-departures .ticker-static {display:none;padding:6px 0;font:900 18px/1.4 Doto,monospace;}
  .abz-departures .ticker.is-static .ticker-track {display:none;}
  .abz-departures .ticker.is-static .ticker-static {display:block;}
  .abz-departures .ticker:focus-visible,.abz-departures select:focus-visible,.abz-departures .operator-tab:focus-visible {outline:2px solid #fff;outline-offset:-2px;}
  @keyframes abz-ticker-travel {from {transform:translateX(0);}to {transform:translateX(-50%);}}
  .abz-departures .operators {display:grid;grid-template-columns:.7fr 1.35fr .8fr .8fr .8fr;gap:5px;padding:6px 8px;background:#171a1e;}
  .abz-departures .operator-tab {min-width:0;min-height:44px;padding:5px 2px;background:#08090b;border:1px solid #34383e;border-radius:4px;color:#fff;font:700 12px/1.2 'JetBrains Mono',monospace;}
  .abz-departures .operator-tab[aria-pressed="true"] {border-color:#f5d04a;box-shadow:inset 0 -3px #f5d04a;color:#f5d04a;}
  .abz-departures .operator-info {min-height:45px;background:#050607;border-bottom:1px solid #30363b;font:700 12px/1.4 'JetBrains Mono',monospace;}
  .abz-departures .operator-links {display:grid;grid-template-columns:1fr 1fr 1fr;min-height:44px;}
  .abz-departures .operator-links.is-empty {visibility:hidden;}
  .abz-departures .operator-links a,.abz-departures .operator-links button {display:flex;align-items:center;justify-content:center;min-width:0;min-height:44px;padding:4px 6px;border:0;border-radius:0;background:none;color:#fff;font:inherit;text-decoration:underline;text-underline-offset:3px;text-align:center;}
  .abz-departures .operator-links>*+* {border-left:1px solid #30363b;}
  .abz-departures .arrival-times {display:grid;gap:3px;}
  .abz-departures .arrival-time {display:flex;gap:6px;align-items:center;min-width:0;}
  .abz-departures .time-label {color:#e6ce72;font:700 11px/1.2 'JetBrains Mono',monospace;}
  .abz-departures .view-flight {border:1px solid #496672;border-radius:3px;padding:4px 6px;min-height:44px;background:#09151d;color:#b5e5ff;font:900 14px/1.2 Doto,monospace;}
  .abz-departures .view-slot {display:none;}
  .abz-departures .row.has-view .route {text-decoration:underline;text-decoration-color:#496672;text-underline-offset:6px;}
  .abz-departures .row.has-view .flight::after {content:'VIEW ↗';display:block;color:#b5e5ff;font:900 12px/1.2 Doto,monospace;margin-top:4px;}
  .abz-departures .scroll {overflow-y:scroll;overflow-x:hidden;scrollbar-gutter:stable;scrollbar-color:#e8c750 #20252a;scrollbar-width:auto;height:500px;}
  .abz-departures .scroll::-webkit-scrollbar {width:12px;}
  .abz-departures .scroll::-webkit-scrollbar-track {background:#20252a;}
  .abz-departures .scroll::-webkit-scrollbar-thumb {background:#e8c750;border:3px solid #20252a;border-radius:7px;}
  .abz-departures .scroll:focus-visible {outline:2px solid #ffda5b;outline-offset:-2px;}
  .abz-departures .labels,.abz-departures .row-main {display:grid;grid-template-columns:88px minmax(0,1fr) 126px 94px 59px 88px 106px 68px;gap:6px;align-items:center;}
  .abz-departures .labels {position:sticky;top:0;z-index:2;padding:8px 10px;background:#000;color:#f5cf4b;font:700 11px/1.4 'JetBrains Mono',monospace;}
  .abz-departures .rows {list-style:none;margin:0;padding:0;}
  .abz-departures .row-main {padding:11px 10px;min-height:66px;border-top:1px solid #25292d;border-bottom:1px solid #000;background:linear-gradient(#111317,#0b0d10);}
  .abz-departures .row:nth-child(even) .row-main {background:linear-gradient(#0f1114,#090b0d);}
  .abz-departures .flaps {--size:18px;display:flex;gap:3px;flex-wrap:wrap;min-width:0;align-items:center;}
  .abz-departures .word {display:inline-flex;gap:1px;white-space:nowrap;}
  .abz-departures .letter {position:relative;display:inline-flex;flex:none;align-items:center;justify-content:center;width:calc(var(--size)*.9);height:calc(var(--size)*1.6);color:#fff;font:700 var(--size)/1 'JetBrains Mono',monospace;background:linear-gradient(#24282d 0%,#24282d 49%,#1c2024 50%,#1c2024 100%);border-radius:2px;box-shadow:inset 0 1px #373c42,0 1px 1px #000;}
  .abz-departures .letter::after {content:'';position:absolute;top:50%;left:0;right:0;height:1px;background:#0008;pointer-events:none;}
  .abz-departures .blank {opacity:.55;}
  .abz-departures .small-flaps {--size:12px;}
  .abz-departures .std .flaps {flex-wrap:nowrap;}
  .abz-departures .route,.abz-departures .flight,.abz-departures .operator,.abz-departures .atd,.abz-departures .eta {min-width:0;}
  .abz-departures .operator-under,.abz-departures .mobile-label,.abz-departures .departure-heading {display:none;}
  .abz-departures .status {display:flex;align-items:center;gap:6px;white-space:nowrap;color:#fff;font:900 16px/1.2 Doto,monospace;}
  .abz-departures .status::before {content:'';width:6px;height:6px;flex:none;border-radius:50%;background:currentColor;box-shadow:0 0 7px currentColor;}
  .abz-departures .status.airborne,.abz-departures .status.delayed {color:#ffd84e;}
  .abz-departures .status.cancelled {color:#ff8d80;}
  .abz-departures .share {display:flex;align-items:center;justify-content:center;min-height:44px;padding:6px 4px;border:1px solid #bc9f35;border-radius:5px;background:#f2d258;color:#101214;opacity:1;font:900 16px/1.3 Doto,monospace;}
  .abz-departures .empty-preview {padding:24px 12px;color:#fff;font:700 13px/1.6 'JetBrains Mono',monospace;}
  .abz-departures [hidden] {display:none!important;}
  .abz-departures .reader {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
  @container (min-width:851px) and (max-width:1099px) {
    .abz-departures .labels,.abz-departures .row-main {grid-template-columns:88px minmax(0,1fr) 126px 59px 88px 106px 68px;}
    .abz-departures .operator {display:none;}
    .abz-departures .operator-under {display:block;margin-top:4px;font:700 11px/1.4 'JetBrains Mono',monospace;}
  }
  @container (max-width:850px) {
    .abz-departures .labels {display:none;}
    .abz-departures .row-main {grid-template-columns:112px minmax(0,1fr) 106px;grid-template-areas:'heading heading status' 'std std status' 'route route route' 'atd eta share';gap:5px 8px;padding:9px 10px;}
    .abz-departures .departure-heading {grid-area:heading;display:flex;flex-wrap:wrap;align-items:center;gap:5px 8px;color:#e6ce72;font:700 11px/1.2 'JetBrains Mono',monospace;min-width:0;}
    .abz-departures .flight-identity {display:inline-flex;align-items:center;gap:8px;white-space:nowrap;}
    .abz-departures .flight-identity .flaps {flex-wrap:nowrap;}
    .abz-departures .std {grid-area:std;align-self:start;}
    .abz-departures .flight {display:none;}
    .abz-departures .route {grid-area:route;}
    .abz-departures .operator {display:none;}
    .abz-departures .operator-under {display:none;}
    .abz-departures .atd {grid-area:atd;}
    .abz-departures .eta {grid-area:eta;}
    .abz-departures .status-cell {grid-area:status;}
    .abz-departures .share {grid-area:share;align-self:center;}
    .abz-departures .std,.abz-departures .atd,.abz-departures .eta {display:flex;align-items:center;gap:6px;}
    .abz-departures .std .flaps,.abz-departures .atd .flaps,.abz-departures .eta .flaps {flex:none;flex-wrap:nowrap;}
    .abz-departures .mobile-label {display:block;flex:none;margin:0;color:#e6ce72;font:700 11px/1.2 'JetBrains Mono',monospace;}
    .abz-departures .flight .mobile-label {display:none;}
    .abz-departures .eta {display:block;}
    .abz-departures .row.has-view .std {align-self:stretch;min-height:29px;}
    .abz-departures .view-slot {display:flex;align-items:center;margin-left:auto;}
    .abz-departures .view-flight {min-height:29px;}
    .abz-departures .arrival-times .mobile-label {display:none;}
    .abz-departures .std .flaps {--size:18px;}
  }
  @container (max-width:399px) {
    .abz-departures .checkin {flex-direction:column;align-items:flex-start;justify-content:center;}
    .abz-departures .top-links {flex-wrap:nowrap;}
  }
  @container (max-width:370px) {
    .abz-departures .row-main {grid-template-columns:112px minmax(0,1fr) 106px;gap:5px 4px;padding:9px 7px;}
    .abz-departures select {font-size:20px;}
    .abz-departures .top-links {gap:5px;padding-left:7px;padding-right:7px;}
    .abz-departures .link-look {padding-left:6px;padding-right:6px;}
  }
  @container (max-width:350px) {
    .abz-departures .row-main {grid-template-columns:minmax(0,1fr) 106px;grid-template-areas:'heading status' 'std status' 'route route' 'atd share' 'eta share';}
  }
  @media (prefers-reduced-motion:reduce) {
    .abz-departures * {animation:none!important;transition:none!important;scroll-behavior:auto!important;}
    .abz-departures .ticker-track {display:none;}
    .abz-departures .ticker-static {display:block;}
  }
/* Preserve the existing row button and its separate SHARE anchor. */
.abz-departures .row {position:relative;list-style:none;margin:0;}
.abz-departures .row-main {width:100%;border-left:0;border-right:0;border-radius:0;text-align:left;color:#fff;font:700 12px/1.4 'JetBrains Mono',monospace;box-shadow:none;margin:0;min-width:0;}
.abz-departures .row-main:hover {filter:brightness(1.12);}
.abz-departures .row-main:focus-visible,.abz-departures .share:focus-visible,.abz-departures .link-look:focus-visible,.abz-departures .operator-links>*:focus-visible {outline:2px solid #fff;outline-offset:-2px;}
.abz-departures .row>.share {position:absolute;right:10px;bottom:11px;width:68px;height:44px;text-decoration:none;writing-mode:horizontal-tb;}
.abz-departures .share-space {height:44px;min-width:0;}
.abz-departures .schedule-live-status {grid-column:1/-1;color:#b5e5ff;font:700 12px/1.4 'JetBrains Mono',monospace;}
.abz-departures .schedule-live-status:empty {display:none;}
.abz-departures .word {max-width:100%;flex-wrap:wrap;white-space:normal;}
.abz-departures .aircraft {display:block;color:#fff;margin-top:3px;font-size:11px;}
.abz-departures .status {white-space:normal;overflow-wrap:anywhere;}
.abz-departures .ticker-track {animation-play-state:var(--ticker-play,running);}
.abz-departures .scroll {max-height:min(570px,72dvh);}
#detail-panel:has(.abz-departures)>.detail-handle {display:none;}
#detail-panel .detail-body:has(>.abz-departures) {padding:0;}
@container (max-width:850px) {
  .abz-departures .row>.share {width:106px;bottom:9px;}
  .abz-departures .share-space {grid-area:share;}
  .abz-departures .schedule-live-status {grid-area:auto;grid-column:1/-1;}
}
@container (max-width:370px) {.abz-departures .row>.share {right:7px;}}

.abz-departures .status.landed {color:#8affad;}
.abz-departures .observed-callsign {color:#b5e5ff;font:700 11px/1.2 "JetBrains Mono",monospace;}

/* The historic detail-panel rule forces black text on every descendant. Keep
   this board's approved palette local, including Chromium text-fill inheritance. */
html body #detail-panel .abz-departures, html body #detail-panel .abz-departures * {
  color:var(--abz-ink,#fff)!important;-webkit-text-fill-color:var(--abz-ink,#fff)!important;
}
.abz-departures select,.abz-departures .weather-ticker,.abz-departures .labels {--abz-ink:#ffda5b;}
.abz-departures .update-ticker,.abz-departures .view-flight,.abz-departures .observed-callsign,.abz-departures .schedule-live-status {--abz-ink:#b5e5ff;}
.abz-departures .departure-heading,.abz-departures .mobile-label,.abz-departures .time-label {--abz-ink:#e6ce72;}
.abz-departures .operator-tab[aria-pressed="true"] {--abz-ink:#f5d04a;}
.abz-departures .status.landed {--abz-ink:#8affad;}
.abz-departures .status.airborne,.abz-departures .status.delayed {--abz-ink:#ffd84e;}
.abz-departures .status.cancelled {--abz-ink:#ff8d80;}
.abz-departures .letter,.abz-departures option,.abz-departures .status {--abz-ink:#fff;}
.abz-departures .share {--abz-ink:#101214;}
.abz-departures .link-look b {--abz-ink:#abefd2;}
.abz-departures .std>.observed-callsign {display:none;}
@container (max-width:850px) {.abz-departures .std>.observed-callsign {display:inline;}}

@container (min-width:851px) {
  .abz-departures .flight {display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 6px;align-items:center;}
  .abz-departures .flight>.flaps {grid-column:1;grid-row:1;}
  .abz-departures .flight>.aircraft {grid-column:2;grid-row:1;margin:0;}
  .abz-departures .flight>.observed-callsign {grid-column:1;grid-row:2;}
  .abz-departures .row.has-view .flight::after {grid-column:2;grid-row:2;margin:0;}
  .abz-departures .flight>.operator-under {grid-column:1/-1;grid-row:3;margin:0;}
}

/* Departure controls stay fixed; only the remaining flight-list area scrolls.
   Scope to the new board so other map detail panels keep their own layout. */
html[data-theme] body #detail-panel.right-side[data-side-panel="flights"]:has(.abz-departures) {
  position:fixed !important;
  inset:0 !important;
  width:100% !important;
  max-width:none !important;
  height:100vh !important;
  height:100dvh !important;
  max-height:100dvh !important;
  margin:0 !important;
  padding:var(--safe-area-top, 0px) env(safe-area-inset-right, 0px) var(--safe-area-bottom, 0px) env(safe-area-inset-left, 0px) !important;
  box-sizing:border-box;
  border:0 !important;
  border-radius:0 !important;
  background:#050607 !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  overflow:hidden !important;
  /* Above map peek (1200), below the existing Share & Watch dialog (1500). */
  z-index:1400 !important;
}
html[data-theme] body #detail-panel.right-side[data-side-panel="flights"].open:has(.abz-departures) {transform:none !important;}
#detail-panel.right-side[data-side-panel="flights"]:has(.abz-departures) > .flights-panel-body {
  height:100%;max-height:none !important;min-height:0;
  padding:0 !important;overflow:hidden !important;
}
#detail-panel.right-side[data-side-panel="flights"] .abz-departures,
#detail-panel.right-side[data-side-panel="flights"] .abz-departures .stage,
#detail-panel.right-side[data-side-panel="flights"] .abz-departures .board {
  height:100%;max-height:none;min-height:0;max-width:none;
  margin:0;display:flex;flex-direction:column;
}
#detail-panel.right-side[data-side-panel="flights"] .abz-departures .stage {container-type:inline-size;}
#detail-panel.right-side[data-side-panel="flights"] .abz-departures .board {border:0;border-radius:0;}
#detail-panel.right-side[data-side-panel="flights"] .abz-departures .board > :not(.scroll) {flex-shrink:0;}
#detail-panel.right-side[data-side-panel="flights"] .abz-departures .scroll {
  flex:1 1 0%;height:auto !important;max-height:none !important;min-height:0;
  overscroll-behavior:contain;
}

/* Shared ABZ presentation; each heliport retains its own data and actions. */
html body #detail-panel .heliport-retro {padding:0;background:#050607;}
.heliport-retro .lsi-flights-board-heading {padding:12px;margin:0;background:#050607;}
.heliport-retro .lsi-flights-board-heading h2 {--abz-ink:#ffda5b;font:900 24px/1.3 Doto,monospace;}
.heliport-retro .heliport-retro-content {overflow:auto;min-height:0;flex:1;padding:10px;overscroll-behavior:contain;}
.heliport-retro .lsi-flights-section h3 {--abz-ink:#ffda5b;font:900 18px/1.4 Doto,monospace;}
html body #detail-panel .heliport-retro .lsi-flights-schedule-list {display:block;padding:0;list-style:none;}
html body #detail-panel .heliport-retro .lsi-flights-schedule-list>.row {padding:0;margin:0;border:0;border-radius:0;background:#0b0d10;}
.heliport-retro .row-main {width:100%;text-align:left;font-family:'JetBrains Mono',monospace;}
.heliport-retro .heliport-row-actions {padding:6px 10px;border-bottom:1px solid #30363b;}
.heliport-retro .status {white-space:normal;overflow-wrap:anywhere;}
.heliport-retro .word {flex-wrap:wrap;white-space:normal;max-width:100%;}
.heliport-retro .flight-identity {white-space:normal;min-width:0;flex-wrap:wrap;}
.heliport-retro .flight-identity .flaps {flex-wrap:wrap;}
/* Theme rules must never restore white lettering on yellow controls. */
html body #detail-panel .lsi-flights-actions :is(a,button),
html body #detail-panel .lsi-flights-actions :is(a,button) *,
html body #detail-panel .heliport-row-actions button,
html body #detail-panel .heliport-row-actions button * {
  --abz-ink:#111;color:#111!important;-webkit-text-fill-color:#111!important;
}
html body #detail-panel .lsi-flights-actions :is(a,button),
html body #detail-panel .heliport-row-actions button {background:#f2d258;min-height:44px;font:700 13px/1.4 'JetBrains Mono',monospace;}

.heliport-retro .missing-flight {font:700 11px/1.4 'JetBrains Mono',monospace;overflow-wrap:anywhere;}
@container (min-width:851px) {
  .heliport-retro .flight {display:block;}
  .heliport-retro .flight>.flaps {max-width:100%;}
}

.heliport-retro .board>.lsi-flights-actions {display:flex;gap:6px;padding:8px;margin:0;background:#050607;}
.heliport-retro .board>.lsi-flights-actions>* {flex:1;min-width:0;text-align:center;}
.heliport-retro .status {font-size:14px;}
