:root{color-scheme:dark;--bg:#080a0b;--ink:#f2f3ef;--muted:#a3aaae;--yellow:#f6ca45;--line:#2c3032;--row-height:62px;font-family:Arial,Helvetica,sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}.board{height:100vh;height:100dvh;display:flex;flex-direction:column;padding:32px 32px 22px;overflow:hidden}.masthead{display:flex;justify-content:space-between;align-items:center;flex:none;padding-bottom:24px;border-bottom:3px solid var(--yellow);gap:16px}.identity{display:flex;align-items:center;gap:20px}.airport-code{font-size:32px;letter-spacing:2px;font-weight:700;color:var(--yellow);border:2px solid var(--yellow);padding:13px 10px}.identity h1{font-size:48px;letter-spacing:5px;margin:0;font-weight:750;line-height:1}.identity p{font-size:13px;letter-spacing:2px;color:var(--muted);margin:9px 0 0}.date-clock{text-align:right;white-space:nowrap}.date-clock time{font-size:48px;line-height:1;font-weight:700;font-variant-numeric:tabular-nums}.date-clock div{font-size:15px;color:var(--muted);margin-top:9px;letter-spacing:1px}.health{display:flex;align-items:center;min-height:48px;flex:none;font-size:17px;letter-spacing:.4px;gap:10px}.health:before{content:'';width:7px;height:7px;flex:none;border-radius:50%;background:#68be97}.health.warning,.health.error{color:var(--yellow);background:#302713;padding:8px 12px;border-bottom:1px solid #715a1a}.health.error{color:#ffb5a9;background:#361a18}.health.warning:before,.health.error:before,.health.waiting:before{background:currentColor}.panels{display:grid;grid-template-rows:minmax(0,1fr) minmax(0,1fr);flex:1;min-height:0;gap:24px}.panel{display:flex;flex-direction:column;min-height:0}.panel-heading{background:var(--yellow);color:#101211;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:70px;padding:10px 18px;flex:none}.panel-heading h2{display:flex;align-items:center;font-size:37px;margin:0;gap:16px;letter-spacing:.2px}.panel-heading svg{width:38px;height:38px;fill:currentColor;stroke:currentColor;stroke-width:2;stroke-linejoin:round}.panel-caption{font-size:13px;letter-spacing:1.5px;font-weight:700}.columns,.flight{display:grid;grid-template-columns:98px minmax(0,1fr) 255px;column-gap:18px;padding:0 16px;align-items:center}.columns{font-size:13px;letter-spacing:1.7px;color:var(--muted);height:41px;flex:none;border-bottom:1px solid var(--line)}.columns span:last-child{text-align:right}.flights{flex:1;min-height:0;overflow:hidden}.flight{height:var(--row-height);border-bottom:1px solid #232729;background:#0c0e10}.flight:nth-child(even){background:#141719}.flight-time{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;align-self:center}.flight-time small{display:block;font-size:10px;letter-spacing:.6px;color:var(--yellow);font-weight:500;margin-top:4px}.place{font-size:29px;line-height:1.12;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.place.long{font-size:23px}.flight-detail{display:block;font-size:14px;color:var(--muted);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.3px}.flight-number{color:#c8cdd0;font-weight:700;letter-spacing:1px;margin-right:12px}.flight-status{text-align:right;font-size:23px;font-weight:500;line-height:1.15;overflow-wrap:anywhere}.flight-status.active{color:var(--yellow)}.flight-status.delayed{color:#ffbc64}.flight-status.disrupted{color:#ff9b8d}.flight-status.completed{color:#82cda8}.flight-status small{display:block;margin-top:4px;font-size:12px;color:var(--muted)}.panel-footer{display:flex;align-items:center;justify-content:space-between;flex:none;height:32px;font-size:12px;letter-spacing:1px;color:var(--muted);padding:0 16px;border-top:1px solid var(--line)}.pagination{font-variant-numeric:tabular-nums}.board-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;flex:none;min-height:60px;margin-top:15px;border-top:1px solid #414647;font-size:12px;letter-spacing:.6px;color:var(--muted)}.board-footer strong{font-size:23px;letter-spacing:-.8px;color:#e6e8e5}.board-footer strong span{font-weight:400;color:#a3aaae}.source-note{display:block;font-size:11px;margin-top:5px}.empty{height:100%;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:23px;padding:25px;line-height:1.5}.controls{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:6px;padding:7px;background:#242829;border:1px solid #555;border-radius:6px;opacity:0;transition:opacity .2s;z-index:5}.controls:focus-within,body.interacting .controls{opacity:1}.controls button,.controls a{background:#383d3e;border:1px solid #657073;color:white;padding:10px 15px;font:16px Arial;text-decoration:none;border-radius:3px;cursor:pointer;white-space:nowrap}.controls :focus-visible{outline:3px solid var(--yellow)}body:not(.interacting){cursor:none}.noscript{position:fixed;inset:0;display:grid;place-content:center;background:var(--bg);font-size:30px;padding:40px}
@media(min-aspect-ratio:5/4){.panels{grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr)}.board{padding:24px}.panel-caption{display:none}.columns,.flight{grid-template-columns:84px minmax(0,1fr) 205px;column-gap:12px}.place{font-size:25px}.flight-status{font-size:20px}}
@media(max-width:760px){:root{--row-height:57px}.board{padding:14px 12px 9px}.masthead{padding-bottom:14px}.airport-code{font-size:20px;padding:9px 6px}.identity{gap:12px}.identity h1{font-size:30px;letter-spacing:2px}.identity p{font-size:8px;letter-spacing:1px}.date-clock time{font-size:31px}.date-clock div{font-size:10px}.health{font-size:12px;min-height:36px}.panels{gap:12px}.panel-heading{min-height:49px;padding:7px 10px}.panel-heading h2{font-size:27px;gap:10px}.panel-heading svg{width:28px;height:28px}.panel-caption{display:none}.columns,.flight{grid-template-columns:62px minmax(0,1fr) 140px;gap:8px;padding:0 8px}.columns{height:30px;font-size:9px}.flight-time{font-size:21px}.place{font-size:21px}.place.long{font-size:17px}.flight-detail{font-size:10px;margin-top:3px}.flight-number{margin-right:6px}.flight-status{font-size:16px}.flight-status small{font-size:10px}.panel-footer{height:25px;font-size:9px;padding:0 8px}.board-footer{min-height:44px;margin-top:8px;font-size:8px}.board-footer strong{font-size:18px}.source-note{font-size:8px}.empty{font-size:17px}.flight-time small{font-size:8px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.identity h1.long-name{font-size:36px;letter-spacing:2px}.rotation-info{text-align:right;display:flex;flex-direction:column;gap:6px}#rotation{color:var(--yellow)}#skipped:empty{display:none}#skipped{color:#ffbc64;font-size:10px}.controls select{background:#383d3e;color:white;border:1px solid #657073;border-radius:3px;font:16px Arial;max-width:190px}.controls{max-width:calc(100vw - 20px);flex-wrap:wrap;justify-content:center}.flight-status{max-height:var(--row-height);overflow:hidden}.flight-status:has(small){font-size:20px}
@media(max-width:760px){.identity h1.long-name{font-size:22px}.controls button,.controls a,.controls select{font-size:13px;padding:8px}#skipped{font-size:8px}.flight-status:has(small){font-size:15px}}

/* Bristol arrival surveillance is independent of airport status information. */
.traffic-legend,.position-heading{display:none}
.bristol .traffic-legend{display:flex;align-items:center;gap:20px;min-height:35px;flex:none;padding:0 16px;font-size:13px;border-bottom:1px solid var(--line)}
.tracked-key{color:#6de4ff}.received-key{color:#d3acff}#traffic-state{margin-left:auto;color:var(--muted);font-size:12px}
.bristol #arrivals .position-heading{display:block;text-align:right}
.bristol #arrivals .columns,.bristol #arrivals .flight{grid-template-columns:88px minmax(0,1fr) 205px 166px;column-gap:14px}
.bristol #arrivals .columns span:nth-child(3){text-align:right}
.flight-position{text-align:right;font-size:20px;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--muted)}
.flight-position small{display:block;font-size:13px;margin-top:3px}.flight-position strong{display:block;font-size:10px;letter-spacing:1px;margin-top:4px}
.flight.tracked{background:#12333c;box-shadow:inset 5px 0 #6de4ff}.flight.received{background:#2c203c;box-shadow:inset 5px 0 #d3acff}
.tracked .flight-position,.tracked .flight-number{color:#6de4ff}.received .flight-position,.received .flight-number{color:#d3acff}
@media(min-aspect-ratio:5/4){.bristol #arrivals .columns,.bristol #arrivals .flight{grid-template-columns:72px minmax(0,1fr) 150px 136px;column-gap:10px}.bristol #arrivals .place{font-size:22px}.bristol #arrivals .flight-status{font-size:18px}.flight-position{font-size:18px}}
@media(max-width:760px){.bristol #arrivals .columns,.bristol #arrivals .flight{grid-template-columns:54px minmax(0,1fr) 100px 100px;column-gap:7px}.bristol #arrivals .place{font-size:18px}.bristol #arrivals .flight-status{font-size:14px}.flight-position{font-size:14px}.flight-position small{font-size:10px}.flight-position strong{font-size:8px}.bristol .traffic-legend{gap:12px;padding:4px 8px;font-size:10px;flex-wrap:wrap}#traffic-state{font-size:10px}.position-heading{letter-spacing:0}}
