:root{color-scheme:dark;--bg:#080f1b;--panel:#111d2d;--line:#26364b;--muted:#a7b9cf;--text:#edf5ff;--cyan:#67dce7;--green:#79dfb0;--amber:#ffc978}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif;font-size:17px}button,select,input,textarea{font:inherit}button{cursor:pointer;background:#173c53;color:var(--text);border:1px solid #3b687a;border-radius:8px;padding:10px 16px}a{color:var(--cyan)}[hidden]{display:none!important}
h1,h2,p{margin:0}h2{font-size:1.12rem}small,.muted{color:var(--muted)}.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.14em;color:var(--cyan)}
#display{height:100dvh;padding:18px 24px 10px;display:grid;grid-template-rows:58px auto minmax(0,1fr) 24px;gap:12px;overflow:hidden}.display-header,.header-right,.panel-title,.map-footer,.display-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.display-header h1{font-size:1.25rem;margin-top:5px}.header-right{gap:22px;text-align:right}#clock{font-size:2rem;font-variant-numeric:tabular-nums}.header-right small{display:block;font-size:.75rem}.header-right button{font-size:24px;padding:4px 12px}
.current-card{border:1px solid #305064;border-left:4px solid var(--cyan);border-radius:12px;padding:16px 20px;background:linear-gradient(110deg,#142b40,#111d2d);display:grid;grid-template-columns:1fr 1.5fr;gap:12px 25px}.flight-heading h2{font-size:2.25rem;letter-spacing:.025em;margin:5px 0}.flight-heading p{color:var(--muted);font-size:.85rem}.flight-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:center}.flight-metrics span,.flight-metrics small{display:block;font-size:.72rem;color:var(--muted)}.flight-metrics strong{display:block;font-size:1.18rem;margin:7px 0;font-variant-numeric:tabular-nums}.current-crew{grid-column:1/-1;display:flex;gap:8px 22px;flex-wrap:wrap;border-top:1px solid #294355;padding-top:10px;font-size:.84rem}.current-crew span{overflow-wrap:anywhere}.current-crew small{margin-right:6px}
.board-grid{min-height:0;display:grid;grid-template-columns:1fr 1.25fr;gap:14px}.primary-column,.secondary-column{min-height:0;min-width:0;display:grid;gap:14px}.primary-column{grid-template-rows:minmax(0,1.7fr) minmax(0,1fr)}.secondary-column{grid-template-rows:minmax(0,1fr) minmax(0,1fr)}.panel{min-height:0;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}.panel-title{padding:12px 16px;flex-shrink:0;border-bottom:1px solid var(--line)}.panel-title span{font-size:.68rem;color:var(--muted)}.map{flex:1;min-height:0;background:#132232}.map-footer,.legend{padding:7px 12px;font-size:.72rem;color:var(--muted)}.overview-grid{min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:14px}.legend{display:flex;gap:9px;flex-wrap:wrap;font-size:.65rem}.done{color:var(--green)}.active{color:var(--cyan)}.cancelled{color:#fba4a4}.map-footer .stale,.stale{color:var(--amber)!important}
#upcoming{min-height:0;flex:1;display:grid;grid-template-rows:repeat(2,minmax(0,1fr));padding:0 14px}.upcoming-flight{padding:9px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;gap:6px}.upcoming-flight:last-child{border:0}.upcoming-top{display:flex;justify-content:space-between;gap:8px;font-size:1rem}.upcoming-top small{font-size:.72rem}.upcoming-crew{display:flex;flex-wrap:wrap;gap:3px 12px;font-size:.75rem;line-height:1.3;overflow-wrap:anywhere}.upcoming-crew small{color:var(--muted)}.planning{color:var(--green);font-size:.65rem}.planning.warning{color:var(--amber)}
#notices{min-height:0;flex:1;display:grid;grid-template-rows:repeat(2,minmax(0,1fr));gap:10px;padding:12px 16px}.notice{min-height:0;border-left:3px solid #59738d;padding:3px 0 3px 12px;display:flex;flex-direction:column;justify-content:center;gap:6px;overflow-wrap:anywhere}.notice.important{border-color:var(--amber)}.notice h3{font-size:1rem;margin:0}.notice.important h3{color:var(--amber)}.notice p{font-size:.92rem;line-height:1.35;white-space:pre-wrap}.notice small{font-size:.65rem;color:var(--muted)}
#arrival-notes{padding:12px 14px;font-size:.85rem;white-space:pre-wrap;overflow-wrap:anywhere}.weather{padding:0 14px 12px;min-height:0}.weather small{font-size:.7rem}#metar{font-family:Consolas,monospace;font-size:.8rem;line-height:1.45;margin-top:8px;overflow-wrap:anywhere}.display-footer{font-size:.65rem;color:var(--muted)}.display-footer a{color:var(--muted)}.leaflet-control-attribution{font-size:9px!important}.plane-icon{background:transparent;border:0;color:#ffffff;font-size:28px;text-shadow:0 1px 5px #000}.plane-icon.stale{opacity:.6}
.setup{max-width:780px;margin:10vh auto;padding:35px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}.setup h1{font-size:2rem;margin:14px 0}.setup p{margin:20px 0;line-height:1.5}.setup label{display:block}.setup select{display:block;width:100%;padding:12px;margin:10px 0 18px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:6px}
@media(max-height:850px),(max-width:1600px){body{font-size:14px}#display{padding:10px 14px 5px;gap:8px;grid-template-rows:46px auto minmax(0,1fr) 20px}.display-header h1{font-size:1rem}#clock{font-size:1.5rem}.current-card{padding:10px 14px;gap:7px 20px}.flight-heading h2{font-size:1.75rem}.flight-metrics strong{font-size:1rem;margin:5px 0}.current-crew{padding-top:7px;font-size:.72rem;gap:5px 14px}.board-grid,.primary-column,.secondary-column,.overview-grid{gap:9px}.panel-title{padding:8px 12px}.panel-title h2{font-size:.95rem}.upcoming-flight{padding:5px 0;gap:4px}.upcoming-top{font-size:.9rem}.upcoming-crew{font-size:.68rem;gap:2px 9px}#notices{padding:8px 12px;gap:7px}.notice h3{font-size:.85rem}.notice p{font-size:.8rem;line-height:1.25}.notice{gap:4px}#arrival-notes{padding:8px 10px;font-size:.75rem}#metar{font-size:.7rem;line-height:1.3}.weather{padding:0 10px 8px}.legend{font-size:.58rem;gap:5px}.map-footer{font-size:.65rem}}
/* Allocate notice space to its actual content instead of forcing short and long
   notices into equally sized boxes. Compact roster rows never overlap. */
.board-grid{grid-template-columns:1fr 1.25fr}.secondary-column{grid-template-rows:auto minmax(0,1fr)}
#upcoming{flex:0 0 auto;grid-template-rows:repeat(2,max-content)}
.upcoming-flight{padding:3px 0;gap:2px;justify-content:flex-start}
#notices{grid-template-rows:max-content max-content;align-content:start}
.notice{justify-content:flex-start;flex-shrink:0}
.notice p{white-space:normal}
@media(max-height:850px),(max-width:1600px){.upcoming-flight{padding:2px 0;gap:2px}.notice p{font-size:.75rem}.notice h3{font-size:.8rem}}
@media(max-width:1000px){#display{height:auto;min-height:100dvh;overflow:visible}.current-card{grid-template-columns:1fr}.board-grid{grid-template-columns:1fr}.primary-column{grid-template-rows:400px 260px}.secondary-column{grid-template-rows:400px 380px}.flight-metrics{gap:8px}.setup{margin:20px}.display-footer{flex-wrap:wrap}}
/* Darken only the base tiles: route, aircraft and status colours stay intact. */
.map .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.72) saturate(.65)}
.leaflet-control-attribution{background:#111d2de6!important;color:#a7b9cf!important}.leaflet-control-attribution a{color:#67dce7!important}
.overview-grid{grid-template-columns:1.6fr 1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr)}
.overview-grid .event-panel{grid-row:1/3}
.secondary-column{grid-template-rows:auto minmax(334px,1fr)}
.stream-panel .panel-title a{font-size:.65rem;text-decoration:none}
#simfest-stream{display:block;border:0;width:100%;flex:1;min-height:300px;background:#080f1b}
.notices-panel .panel-title{padding:8px 10px}.notices-panel h2{font-size:.85rem}
#notices{padding:8px 10px;grid-template-rows:max-content}
.notice{padding-left:7px;gap:4px}.notice h3{font-size:.75rem}.notice p{font-size:.75rem;line-height:1.25}.notice small{font-size:.6rem}
@media(max-width:1000px){.secondary-column{grid-template-rows:auto 360px}.overview-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto auto}.overview-grid .event-panel{grid-column:1/-1;grid-row:auto;min-height:250px}.notices-panel{grid-column:auto;min-height:160px}.primary-column{grid-template-rows:400px auto}.overview-grid>.panel:not(.notices-panel){min-height:230px}}
@media(min-width:1001px) and (max-height:850px){
 .upcoming-flight{padding:1px 0;gap:0}.upcoming-top{font-size:.82rem;line-height:1.15}.upcoming-crew{font-size:.65rem;line-height:1.15;gap:1px 7px}.planning{font-size:.6rem;line-height:1.15}
 .secondary-column{grid-template-rows:auto minmax(336px,1fr)}
}
.flight-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}.current-card{grid-template-columns:.8fr 1.8fr}
.upcoming-crew{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.upcoming-crew .crew-report{display:block;grid-column:1/-1}.crew-report{font-variant-numeric:tabular-nums}
@media(max-width:1000px){.current-card{grid-template-columns:1fr}}
@media(min-width:1001px) and (max-height:850px){
 #display{grid-template-rows:40px auto minmax(0,1fr) 20px}
 .current-card{padding:6px 14px;row-gap:4px}.flight-heading h2{font-size:1.4rem;line-height:1.1;margin:2px 0}.current-crew{padding-top:4px}
}
.stream-panel .panel-title{padding:6px 12px}.stream-panel .panel-title h2{font-size:.9rem;line-height:18px}
.stream-status{padding:20px;color:var(--muted)}


.current-visitors{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px 20px;font-size:.78rem;overflow-wrap:anywhere}.current-visitors small{color:var(--muted)}.current-visitors[hidden]{display:none}
.upcoming-visitors{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:.68rem;line-height:1.3;overflow-wrap:anywhere}.upcoming-visitors small{color:var(--muted)}.upcoming-visitors[hidden]{display:none}

.aircraft-instruments{grid-column:1/-1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px 16px;border-top:1px solid #294355;padding-top:9px}.aircraft-instruments span{display:block;font-size:.68rem;color:var(--muted);margin-bottom:4px}.aircraft-instruments strong{font-size:1rem;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.aircraft-instruments .mcp-instrument{border-left:2px solid #67dce7;padding-left:10px}@media(max-width:900px){.aircraft-instruments{grid-template-columns:repeat(4,minmax(0,1fr))}}

.flight-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 16px}.flight-metrics strong,.flight-metrics small{overflow-wrap:anywhere}

/* Keep the next two upcoming legs compact so the stream gets the remaining height.
   Short windows scroll the board rather than clipping roster text. */
@media(min-width:1001px){#display{height:auto;min-height:100dvh;overflow:visible}.board-grid{min-height:650px}.secondary-column{grid-template-rows:max-content minmax(334px,1fr)}}
@media(min-width:1601px){.flight-metrics{grid-template-columns:repeat(6,minmax(0,1fr))}.current-card{grid-template-columns:.55fr 2fr}}

#giveaway-panel{grid-column:1/-1;min-width:0;padding:8px 0;border-top:1px solid #294355}#giveaway-panel h2{font-size:.8rem;color:var(--muted)}#giveaway-panel[hidden]{display:none}#giveaway-prize{white-space:pre-line;overflow-wrap:anywhere;font-size:clamp(18px,1.5vw,24px);margin:4px 0}

/* Readable daily information, independently paged without changing flight selection. */
.worldflight-daily{display:grid;grid-template-columns:1fr 1fr;gap:14px;min-width:0;height:230px}
.worldflight-daily[hidden]{display:none}.daily-status{padding:5px 12px;color:var(--muted);overflow-wrap:anywhere;flex-shrink:0}
.daily-items{min-height:0;flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:max-content;align-content:start;gap:10px;padding:8px 12px;overflow:auto}
.daily-item{min-width:0;overflow-wrap:anywhere;border-left:2px solid var(--cyan);padding-left:9px;font-size:.82rem;line-height:1.4}.daily-item h3{font-size:.9rem;margin:0 0 4px}.daily-item p{white-space:pre-wrap}
@media(min-width:1001px){#display:has(.worldflight-daily:not([hidden])){grid-template-rows:46px auto minmax(560px,1fr) 24px;min-height:100dvh;height:auto}}

@media(max-width:1000px){.worldflight-daily{grid-template-columns:1fr;height:auto}.worldflight-daily>.panel{height:240px}}

/* Wide unattended screens keep the daily row in view; shorter windows may scroll. */
@media(min-width:1001px){
 #display:has(.worldflight-daily:not([hidden])){grid-template-rows:36px max-content minmax(560px,1fr) 20px;gap:8px;padding:8px 18px;height:100dvh;min-height:max-content;overflow:visible}
 #display:has(.worldflight-daily:not([hidden])) .current-card{padding:7px 14px;gap:4px 18px}
 #display:has(.worldflight-daily:not([hidden])) .flight-heading h2{font-size:1.45rem;margin:2px 0}
 #display:has(.worldflight-daily:not([hidden])) #giveaway-panel{padding:3px 0}
 #display:has(.worldflight-daily:not([hidden])) #giveaway-prize{font-size:16px;line-height:1.2;margin:2px 0}
 #display:has(.worldflight-daily:not([hidden])) .aircraft-instruments{padding-top:4px}
 #display:has(.worldflight-daily:not([hidden])) .board-grid{min-height:560px}
 #display:has(.worldflight-daily:not([hidden])) .primary-column{grid-template-rows:minmax(190px,1fr) 160px 190px}
 #display:has(.worldflight-daily:not([hidden])) .overview-grid{grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr}
 #display:has(.worldflight-daily:not([hidden])) .event-panel{grid-row:auto}
 #display:has(.worldflight-daily:not([hidden])) .secondary-column{grid-template-rows:max-content minmax(200px,1fr)}
 #display:has(.worldflight-daily:not([hidden])) #simfest-stream{min-height:0}
 #display:has(.worldflight-daily:not([hidden])) .operations-panel{overflow:auto}
 #display:has(.worldflight-daily:not([hidden])) .worldflight-daily{height:190px}
}

/* Keep daily information beneath the maps; the stream fills the right column. */
#giveaway-panel{display:flex;align-items:center;gap:14px}
#giveaway-panel h2{flex:none;white-space:nowrap}
#giveaway-prize{min-width:0;flex:1;white-space:nowrap;overflow-wrap:normal;overflow-x:auto;font-size:clamp(14px,1.1vw,20px)}
@media(max-width:1000px){.primary-column:has(.worldflight-daily:not([hidden])){grid-template-rows:400px auto auto}}
/* Compact the flight summary to return vertical space to the stream. */
@media(min-width:1001px){
 .display-header h1{font-size:1rem;margin-top:2px}
 .display-header .eyebrow{font-size:.62rem}
 #clock{font-size:1.5rem;line-height:1.05}
 .header-right small{font-size:.68rem}
 .header-right button{font-size:20px;padding:3px 10px}
 .current-card{padding:7px 14px;gap:4px 18px}
 .flight-heading h2{font-size:1.45rem;margin:2px 0}
 .flight-heading p{font-size:.75rem}
 .flight-metrics{gap:4px 12px}
 .flight-metrics strong{font-size:1rem;margin:3px 0}
 .aircraft-instruments{padding-top:4px;gap:4px 12px}
 .aircraft-instruments span{margin-bottom:2px}
 .aircraft-instruments strong{font-size:.9rem}
 .current-crew{padding-top:5px;gap:4px 16px;font-size:.75rem}
 .current-visitors{font-size:.72rem;gap:3px 16px}
}
@media(min-width:1250px){.flight-metrics{grid-template-columns:repeat(6,minmax(0,1fr))}.current-card{grid-template-columns:.55fr 2fr}}
.leg-chat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-width:0;min-height:0}
.leg-chat-grid .panel-title{flex-wrap:wrap;gap:4px}
#simfest-chat{display:block;flex:1;width:100%;min-height:0;border:0;background:#18181b}
#simfest-chat[hidden]{display:none}
@media(max-width:600px){
 .leg-chat-grid{grid-template-columns:minmax(0,1fr);grid-template-rows:300px 360px}
 .primary-column,.primary-column:has(.worldflight-daily:not([hidden])){grid-template-rows:auto auto auto}
}
