*{box-sizing:border-box} :root{font-family:Arial,Helvetica,sans-serif;color:#24332e;background:#f6f7f3;font-synthesis:none;--line:#dce1da;--muted:#738079;--runway:#33745e;--taxiway:#477c9a;--apron:#a97831}body{margin:0}button,input{font:inherit}button,summary,label.toggle{cursor:pointer}button{color:inherit}button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #7eb19a;outline-offset:4px}[hidden]{display:none!important}.masthead{display:flex;justify-content:space-between;align-items:center;padding:27px 4%;border-bottom:1px solid var(--line);background:#fcfcf9}.brand{display:flex;align-items:center;gap:18px;color:inherit;text-decoration:none}.airport-mark{font-size:28px;font-weight:800;letter-spacing:-1.5px;border-right:1px solid var(--line);padding-right:20px}.airport-mark span{display:block;font:10px monospace;letter-spacing:3px;margin-top:4px;color:var(--muted)}.brand-copy{font-size:14px}.brand-copy span{display:block;font-size:9px;letter-spacing:2.8px;margin-top:8px;color:var(--muted)}.clocks{display:flex;gap:36px}.clock{display:flex;flex-direction:column;gap:6px}.clock+.clock{border-left:1px solid var(--line);padding-left:36px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700}.clock .eyebrow{display:flex;justify-content:space-between;color:var(--muted)}.clock .eyebrow span{font-size:9px;letter-spacing:.5px}.clock time{font:27px 'Courier New',monospace;font-weight:600;letter-spacing:1px}.clock-date{font:600 13px 'Courier New',monospace;letter-spacing:1px;color:inherit}.zulu .clock-date{color:var(--runway)}.zulu time{color:var(--runway)}main{max-width:1800px;margin:auto;padding:42px 4% 20px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:35px}.section-kicker{color:var(--runway);margin-bottom:14px}h1{font-size:clamp(28px,2.5vw,40px);font-weight:500;letter-spacing:-1.7px;margin:0 0 12px}.mobile-break{display:none}.intro-copy{font-size:13px;color:var(--muted);margin:0}.feed-state{display:flex;align-items:flex-end;flex-direction:column;gap:10px;font-size:11px;color:var(--muted)}.feed-pill{display:inline-flex;align-items:center;gap:7px;background:#e8efe7;border:1px solid #d6e2d3;border-radius:20px;padding:7px 11px;color:#3a6249;font-size:10px;font-weight:700}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.feed-pill.warning{background:#fff0d6;color:#896025;border-color:#e8d8b8}.text-button{background:none;border:0;padding:0;font-size:11px}.text-button span{font-size:17px;margin-left:5px}.controls{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 0}.date-navigation,.control-right{display:flex;align-items:center;gap:10px}.icon-button,.quiet-button{background:#fcfcf9;border:1px solid var(--line);border-radius:5px;padding:8px 12px;font-size:12px}.icon-button:hover,.quiet-button:hover{background:#e9ede5}.date-label input{border:0;background:none;font-size:13px;color:#24332e;max-width:150px}.segmented{display:flex;border:1px solid var(--line);border-radius:6px;padding:3px;background:#ecefe9}.segmented button{border:0;background:none;font-size:11px;padding:7px 13px;border-radius:3px;color:#637068}.segmented button[aria-pressed=true]{background:#fff;color:#26362e;box-shadow:0 1px 4px #00000010}.time-standard{font-size:9px;letter-spacing:1px;color:var(--muted);margin-left:10px}.filter-bar{display:flex;justify-content:space-between;gap:15px;align-items:center;padding:20px 0 25px;flex-wrap:wrap}.group-toggles,.secondary-filters{display:flex;gap:10px;align-items:center}.filter-label{font-size:9px;letter-spacing:1px;color:var(--muted);margin-right:4px}.toggle{display:flex;gap:7px;align-items:center;border:1px solid var(--line);border-radius:5px;padding:8px 10px;font-size:11px;background:#fff}.toggle input{width:12px;height:12px;margin:0;accent-color:var(--accent)}.runway{--accent:var(--runway);--tint:#e7f0e9}.taxiway{--accent:var(--taxiway);--tint:#e7eef3}.apron{--accent:var(--apron);--tint:#f5eee1}.toggle-dot{width:5px;height:5px;border-radius:50%;background:var(--accent)}.toggle-count{font:10px monospace;color:var(--muted);margin-left:5px}.secondary-filters{font-size:11px;gap:15px;color:#606b64}.secondary-filters input[type=checkbox]{accent-color:var(--runway);vertical-align:middle}.search-wrap input{background:#fff;border:1px solid var(--line);border-radius:5px;padding:9px 12px;width:160px;font-size:11px}.timeline-heading{display:flex;justify-content:space-between;align-items:center;margin:13px 0 14px}.timeline-heading h2{font-size:12px;font-weight:500;margin:0}.timeline-heading>span{font-size:10px;color:var(--muted)}.now-key{display:inline-block;height:9px;border-left:2px solid #c66f56;margin-right:5px}.divider{margin:0 8px;color:#b9c2b9}.timeline-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px;align-items:stretch}.panel{background:#fff;border:1px solid var(--line);border-radius:9px;overflow:hidden;min-width:0;min-height:330px}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:22px 20px 18px;border-bottom:1px solid #edf0eb}.panel-head h3{font-size:17px;margin:0;font-weight:500;display:flex;gap:9px;align-items:center}.panel-icon{font:20px monospace;color:var(--accent)}.panel-count{font-size:10px;color:var(--muted)}.axis{display:flex;justify-content:space-between;padding:14px 18px 10px;font:9px monospace;color:var(--muted);background:#fafbf8}.chart-body{position:relative;margin:0 18px;padding-bottom:16px;background:repeating-linear-gradient(to right,transparent 0,transparent calc(25% - 1px),#edf0eb calc(25% - 1px),#edf0eb 25%)}.now-line{position:absolute;top:0;bottom:0;width:1px;background:#cc8066;z-index:2;pointer-events:none}.now-line:before{content:'';position:absolute;top:0;left:-3px;border-left:3.5px solid transparent;border-right:3.5px solid transparent;border-top:5px solid #cc8066}.notice-row{display:block;position:relative;text-align:left;width:100%;border:0;border-bottom:1px solid #edf0eb;background:transparent;padding:18px 0 14px;min-height:103px}.notice-row:hover{background:#f4f6f180}.notice-meta{display:flex;justify-content:space-between;align-items:center;position:relative;z-index:3}.notice-number{font:600 12px 'Courier New',monospace;background:#fff;padding-right:6px}.badge{font-size:8px;letter-spacing:.6px;text-transform:uppercase;border:1px solid #e1e7df;background:#f7f9f5;color:#6a786d;border-radius:3px;padding:3px 5px}.badge.closure{color:#926237;border-color:#e9d6ba;background:#fcf5e8}.notice-summary{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#68746b;margin:9px 0 12px;max-width:100%;background:#ffffffb8;position:relative;z-index:3}.bar-track{height:19px;position:relative}.gantt-bar{position:absolute;min-width:3px;height:19px;background:var(--tint);border-left:3px solid var(--accent);border-radius:2px;overflow:hidden;padding:4px 5px;font:9px monospace;color:var(--accent);white-space:nowrap}.gantt-bar.uncertain{border-right:2px dashed var(--accent);background:repeating-linear-gradient(135deg,var(--tint),var(--tint) 5px,#fff 5px,#fff 7px)}.notice-row.history{opacity:.6}.panel-empty{padding:55px 20px;text-align:center;font-size:12px;color:var(--muted);line-height:1.8}.empty-state{text-align:center;padding:70px 20px;border:1px dashed var(--line);border-radius:8px;color:var(--muted)}.empty-state h3{font-size:17px;font-weight:500;color:#24332e}.empty-state p{font-size:12px}.other-notices{margin-top:24px;border:1px solid var(--line);border-radius:7px;background:#fbfcf8;padding:17px 20px}.other-notices summary{display:flex;justify-content:space-between;font-size:12px;list-style:none}.other-count{font:10px monospace;color:var(--muted);margin-left:10px}.summary-hint,.other-notices>p{font-size:10px;color:var(--muted)}.summary-hint span{margin-left:20px}#other-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:22px 0 0;margin-top:40px;font-size:9px;color:var(--muted)}.footer-mark{font-size:10px;font-weight:bold;letter-spacing:1px;color:#3f5144;margin-right:8px}.notice-banner{border:1px solid #e8d8b8;background:#fff8e9;padding:12px 16px;border-radius:6px;font-size:12px;margin-bottom:20px;color:#806037;line-height:1.5}dialog{border:1px solid var(--line);border-radius:12px;padding:28px;width:550px;max-width:calc(100vw - 32px);color:#24332e}dialog::backdrop{background:#1c2b2466;backdrop-filter:blur(3px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;color:var(--muted)}dialog h2{font-size:28px;font-weight:500;letter-spacing:-1px}.detail-badges{display:flex;gap:8px}.detail-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:25px 0;border-top:1px solid var(--line);padding-top:23px}.detail-fields dt{font-size:10px;color:var(--muted);margin-bottom:6px}.detail-fields dd{font:12px monospace;margin:0;overflow-wrap:anywhere}.original-text{font:13px/1.8 monospace;white-space:pre-wrap;background:#f3f5ef;border-radius:5px;padding:16px;overflow-wrap:anywhere}.detail-footnote{font-size:10px;line-height:1.6;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1000px){.timeline-grid{grid-template-columns:repeat(var(--columns,3),minmax(0,1fr))}}
@media(max-width:800px){.masthead{padding:20px 5%;align-items:flex-start}.brand-copy{display:none}.clocks{gap:16px}.clock+.clock{padding-left:16px}.clock time{font-size:21px}main{padding:30px 5%}.intro{align-items:flex-start;gap:20px}h1{font-size:29px}.mobile-break{display:block}.feed-state{max-width:135px;text-align:right}.intro-copy{font-size:11px;line-height:1.6}.controls{flex-wrap:wrap}.control-right{justify-content:space-between;width:100%}.filter-bar{gap:20px}.secondary-filters{flex-wrap:wrap}.timeline-heading>span{max-width:150px;text-align:right;line-height:1.7}.timeline-grid{grid-template-columns:1fr}.summary-hint{display:none}footer{flex-direction:column;line-height:1.7}.group-toggles{gap:6px}.toggle{padding:8px}.toggle-dot{display:none}.filter-label{display:none}}

/* Revision 002: larger branding, with the airport name matching the clocks. */
.airport-mark{display:flex;align-items:center;flex-shrink:0}.airport-logo{display:block;width:88px;height:60px;object-fit:contain}
.brand-copy{font-size:27px}.brand-copy span{font-size:12px}
@media(max-width:800px){.airport-logo{width:73px;height:50px}.brand-copy{font-size:21px}}

/* Revision 003: stacked full-width charts with compact horizontal rows. */
.timeline-grid{grid-template-columns:minmax(0,1fr);gap:20px}
.panel{min-height:0}
.panel-head{padding:16px 20px}
.axis{margin-left:292px;padding:12px 18px}
.chart-body{margin:0 18px;padding-bottom:10px;background:none}
.chart-body>.now-line{left:calc(292px + (100% - 292px)*var(--now-position))!important;top:0;bottom:10px}
.chart-body .notice-row{display:grid;grid-template-columns:272px minmax(0,1fr);column-gap:20px;min-height:66px;padding:12px 0;align-items:center}
.chart-body .notice-meta{grid-column:1;grid-row:1;gap:8px}
.chart-body .notice-summary{grid-column:1;grid-row:2;margin:7px 0 0}
.chart-body .bar-track{grid-column:2;grid-row:1 / span 2;height:42px;background:repeating-linear-gradient(to right,transparent 0,transparent calc(25% - 1px),#edf0eb calc(25% - 1px),#edf0eb 25%)}
.chart-body .gantt-bar{top:10px;height:23px;padding-top:6px}
.runway-row{display:grid;grid-template-columns:272px minmax(0,1fr);gap:20px;align-items:center;border-bottom:1px solid #edf0eb;min-height:66px}
.runway-label h4{font-size:13px;font-weight:500;margin:0 0 7px}.runway-label>span{font-size:10px;color:var(--muted)}
.runway-track{position:relative;background:repeating-linear-gradient(to right,transparent 0,transparent calc(25% - 1px),#edf0eb calc(25% - 1px),#edf0eb 25%)}
.runway-bar{position:absolute;min-width:4px;height:25px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:var(--tint);color:var(--accent);border:0;border-left:3px solid var(--accent);border-radius:3px;padding:0 6px;font:10px monospace}
.runway-bar:hover{filter:brightness(.94)}.runway-bar:focus-visible{z-index:4}.runway-bar.history{opacity:.6}.runway-bar.uncertain{border-right:2px dashed var(--accent);background:repeating-linear-gradient(135deg,var(--tint),var(--tint) 5px,#fff 5px,#fff 7px)}
.runway-empty{display:block;padding:18px 8px;font-size:11px;color:var(--muted)}
.hover-line{position:absolute;top:0;bottom:10px;width:1px;background:#111;z-index:5;pointer-events:none}
.hover-tooltip{position:fixed;z-index:1000;pointer-events:none;background:#151a17;color:#fff;border-radius:5px;padding:9px 12px;font:12px 'Courier New',monospace;box-shadow:0 3px 12px #0002;white-space:nowrap}
.ruler-axis{display:block;padding-top:0;padding-bottom:0}
.ruler{position:relative;width:100%;font:9px 'Courier New',monospace;color:#56645c}
.ruler-dates{position:relative;height:26px}
.ruler-date{position:absolute;top:0;height:26px;padding-top:8px;text-align:center;font-weight:600;transform:translateX(-50%);white-space:nowrap}
.ruler-times{position:relative;height:25px}.ruler-time{position:absolute;top:8px;transform:translateX(-50%);white-space:nowrap}
.ruler-ticks{position:relative;height:25px;border-bottom:1px solid #8b968e}
.ruler-tick{position:absolute;bottom:0;width:1px;background:#98a39b}.ruler-tick.major{height:18px;background:#495b4e}.ruler-tick.hour{height:11px}.ruler-tick.half{height:5px}
.ruler-tick.anchor{height:24px;background:#495b4e}
.chart-scroll{overflow-x:auto}.chart-content.long-view{min-width:1320px}
@media(max-width:800px){.chart-content.long-view{min-width:1028px}.control-right{flex-wrap:wrap}}
@media(max-width:800px){.runway-row{display:block;padding-top:12px}.runway-label{display:flex;justify-content:space-between;align-items:center}.runway-label h4{margin:0 0 8px}}
@media(max-width:800px){.axis{margin-left:0}.chart-body>.now-line{left:calc(100% * var(--now-position))!important}.chart-body .notice-row{display:block;min-height:103px;padding:14px 0}.chart-body .notice-summary{margin:9px 0}.chart-body .bar-track{height:30px}.chart-body .gantt-bar{top:4px}}

/* Revision 010: larger, two-line chart labels. */
.runway-bar,.chart-body .gantt-bar{height:44px;font-size:13px;padding:5px 6px;line-height:17px}
.bar-title,.bar-time{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-title{font-weight:600}.bar-time{font-size:12px}
.chart-body .bar-track{height:56px}.chart-body .gantt-bar{top:6px}
.chart-body .notice-number{font-size:15px}.chart-body .notice-summary{font-size:13px}.runway-label h4{font-size:16px}
.ruler-date{font-size:14px}.ruler-time{font-size:11px}.ruler-dates{height:29px}.ruler-times{height:28px}
/* Revision 011: compact neutral bars on category-tinted chart backgrounds. */
.panel .chart-body{background:var(--tint);padding-bottom:4px}
.runway .chart-body{background:transparent}
.runway-row{min-height:54px;background:var(--tint)}
.runway-row:nth-of-type(even){background:color-mix(in srgb,var(--tint) 45%,white)}
.runway-label{padding-left:8px}.runway-label h4{margin-bottom:4px}
.chart-body .notice-row{min-height:56px;padding:6px 0}
.chart-body .notice-summary{margin-top:4px}
.chart-body .bar-track{height:44px}
.runway-bar,.chart-body .gantt-bar{height:37px;padding:3px 6px;line-height:15px;background:#e5e7e9;color:#374047;border-left:3px solid #9ba3aa}
.chart-body .gantt-bar{top:3px}
.runway-bar.uncertain,.chart-body .gantt-bar.uncertain{border-right-color:#9ba3aa;background:repeating-linear-gradient(135deg,#e5e7e9,#e5e7e9 5px,#f2f3f4 5px,#f2f3f4 7px)}
.chart-body .notice-number,.chart-body .notice-summary{background:transparent}
@media(max-width:800px){.runway-row{padding-top:6px}.chart-body .notice-row{min-height:0;padding:8px 0}.chart-body .notice-summary{margin:5px 0}.runway-label h4{margin-bottom:4px}}
/* Revision 012: airfield category palette; Taxilane reserved for future use. */
:root{--chart-runway:#b64b50;--chart-taxiway:#9a7610;--chart-apron:#397bb1;--chart-taxilane:#3b805b}
.runway{--accent:var(--chart-runway);--tint:#f8e7e8}
.taxiway{--accent:var(--chart-taxiway);--tint:#fff4c9}
.apron{--accent:var(--chart-apron);--tint:#e4effa}
.taxilane{--accent:var(--chart-taxilane);--tint:#e4f2e8}
/* Revision 013: neutral chart backgrounds and blue NOTAM bars. */
.panel .chart-body{background:#f0f1f3}
.runway .chart-body{background:transparent}
.runway-row{background:#f0f1f3}
.runway-row:nth-of-type(even){background:#f8f9fa}
.runway-bar,.chart-body .gantt-bar{background:#cbdff6;color:#173e69;border-left-color:#397bb1}
.runway-bar.uncertain,.chart-body .gantt-bar.uncertain{border-right-color:#397bb1;background:repeating-linear-gradient(135deg,#cbdff6,#cbdff6 5px,#e3eefb 5px,#e3eefb 7px)}
/* Revision 014: notice types and collapsible chart headings. */
.type-closure{--notice-fill:#f5c9cc;--notice-ink:#782b31;--notice-edge:#ba434e;--accent:#ba434e}
.type-condition{--notice-fill:#f9d8b7;--notice-ink:#7b3d12;--notice-edge:#c96e23;--accent:#c96e23}
.type-work{--notice-fill:#fff0af;--notice-ink:#67500d;--notice-edge:#a9820c;--accent:#a9820c}
.type-others{--notice-fill:#cbdff6;--notice-ink:#173e69;--notice-edge:#397bb1;--accent:#397bb1}
.runway-bar,.chart-body .gantt-bar{background:var(--notice-fill);color:var(--notice-ink);border-left-color:var(--notice-edge)}
.runway-bar.uncertain,.chart-body .gantt-bar.uncertain{border-right-color:var(--notice-edge);background:repeating-linear-gradient(135deg,var(--notice-fill),var(--notice-fill) 5px,#ffffff80 5px,#ffffff80 7px)}
button.panel-head{width:100%;border:0;border-bottom:1px solid #edf0eb;background:#fff;text-align:left;gap:16px}
button.panel-head:hover{background:#f7f8f6}button.panel-head:focus-visible{outline-offset:-3px}
.panel-title{display:flex;align-items:center;gap:9px;font-size:17px;font-weight:500}.panel-actions{display:flex;align-items:center;gap:22px}.panel-arrow{font-size:19px;color:#59675e}
.group-toggles,.secondary-filters{flex-wrap:wrap}.toggle{white-space:nowrap}
/* Revision 016: emphasize closure and field-condition notices. */
.type-closure{--notice-fill:#cf3042;--notice-ink:#fff;--notice-edge:#a71929;--accent:#c92f3f}
.type-condition{--notice-fill:#ff9b38;--notice-ink:#482200;--notice-edge:#bd5900;--accent:#d16b0a}

.runway-bar.type-closure.uncertain,.chart-body .gantt-bar.type-closure.uncertain{background:repeating-linear-gradient(135deg,#cf3042,#cf3042 5px,#b92435 5px,#b92435 7px)}
/* Revision 017: moderate emphasis and inactive overlays. */
.type-closure{--notice-fill:#e98691;--notice-ink:#54202a;--notice-edge:#b63d4d;--accent:#b63d4d}
.type-condition{--notice-fill:#f9b66c;--notice-ink:#59300d;--notice-edge:#c37522;--accent:#c37522}
.runway-bar.type-closure.uncertain,.chart-body .gantt-bar.type-closure.uncertain{background:repeating-linear-gradient(135deg,var(--notice-fill),var(--notice-fill) 5px,#f2b0b8 5px,#f2b0b8 7px)}
.runway-bar.history::after,.notice-row.history .gantt-bar::after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(135deg,transparent 0,transparent 7px,rgba(0,0,0,.17) 7px,rgba(0,0,0,.17) 10px)}
.history-toggle{--accent:#58616b}.history-toggle .toggle-dot{width:10px;height:10px;border-radius:2px;background:repeating-linear-gradient(135deg,#c7cbd0 0,#c7cbd0 3px,#58616b 3px,#58616b 5px)}
.techops-toggle{--accent:#64738e}.panel-arrow{font-size:28px;line-height:1}.panel-actions{gap:24px}
/* Revision 019: synchronized temporal panning and floating day labels. */
.chart-content.long-view{min-width:0}.chart-scroll{overflow-x:hidden}
.ruler-dates{overflow:hidden}.ruler-date.floating-date{transform:none;text-align:left;padding:0}
.floating-date>span{position:absolute;top:8px;left:clamp(0px,var(--pin,0%),calc(100% - 50px));width:50px;text-align:center}
.follow-status{font-size:11px;color:var(--muted);margin:0 0 12px}
#today[aria-pressed=true]{background:#e8efe7;border-color:#b8cdbb}
.runway-track,.bar-track{overflow:hidden}
@media(max-width:800px){.long-view .ruler-time{font-size:7px}.long-view .ruler-date{font-size:10px}}
/* Revision 020: clip animated chart height; honor system motion preference. */
.chart-scroll{overflow:hidden}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important}}
/* Revision 022: buffered ruler clipping and composited chart motion. */
.ruler{overflow:hidden}.ruler-dates{overflow:visible}
.runway-bar,.gantt-bar,.ruler-times,.ruler-ticks,.ruler-dates{will-change:translate}
/* Revision 023: pin labels within each bar's visible interval. */
.bar-label{position:absolute;top:3px;display:block;pointer-events:none;overflow:hidden;line-height:15px;text-align:left}
/* Revision 026: filters, then timeline controls, then follow status. */
.filter-bar{padding-top:0;padding-bottom:20px}.timeline-heading .follow-status{margin:0;font-size:11px}.timeline-heading{gap:16px;margin-top:20px}
/* Revision 027: remove borders around the timeline controls. */
.controls{border-top:0;border-bottom:0}
/* Revision 028: bring timeline controls closer to the chart reference row. */
.controls{padding-bottom:6px}
.timeline-heading{margin-top:8px}
/* Revision 029: header remains visible during page scrolling. */
.masthead{position:sticky;top:0;z-index:100;box-shadow:0 2px 8px #24332e08}

/* Release identification stays below the footer information. */
footer{flex-wrap:wrap}footer .release-info{flex-basis:100%;font-size:10px;line-height:1.6;text-align:center}

/* Live runway status, independent of timeline filters and window. */
.masthead{gap:24px}.runway-status-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;flex:1;max-width:850px;min-width:360px}.runway-status-card{border:1px solid #bbc6bd;border-radius:6px;overflow:hidden;text-align:center;background:#dce2e6;color:#24332e}.runway-status-title{background:#fff;font-weight:700;font-size:14px;padding:7px 4px}.runway-state{display:block;font-size:27px;line-height:1.1;padding:9px 4px 5px;letter-spacing:.5px}.runway-status-note{font-size:11px;line-height:1.4;padding:5px 6px 8px;min-height:39px;font-variant-numeric:tabular-nums}.runway-status-card.open{background:#8cd5a0;color:#123e23}.runway-status-card.closing{background:#ffe17b;color:#493800}.runway-status-card.closed{background:#ef9399;color:#59151c}.runway-status-title{color:#24332e}
@media(max-width:1450px){.masthead{flex-wrap:wrap}.runway-status-board{order:3;max-width:none;flex-basis:100%;min-width:0}.runway-status-note{min-height:0}.runway-state{font-size:25px}}
@media(max-width:600px){.masthead{gap:12px;padding:12px 4%}.runway-status-board{gap:6px}.runway-status-title{font-size:11px}.runway-state{font-size:19px}.runway-status-note{font-size:10px;min-height:42px}.clocks{gap:10px}.clock+.clock{padding-left:10px}}

/* Compact white footer leaves more room for the runway status. */
.runway-status-card{display:flex;flex-direction:column}.runway-state{flex:1;display:flex;align-items:center;justify-content:center;font-size:36px;min-height:58px;padding:7px 4px;line-height:1.1}.runway-status-note{background:#fff;color:#000;min-height:0;padding:4px 6px;line-height:1.3;margin-top:auto}
@media(max-width:600px){.runway-state{font-size:25px;min-height:52px}.runway-status-note{min-height:0;padding:3px 4px;font-size:10px}}

/* Center release identification on the main footer row. */
footer{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px}footer>span:first-child{grid-column:1;grid-row:1}footer>span:nth-child(2){grid-column:3;grid-row:1;text-align:right}footer .release-info{grid-column:2;grid-row:1;text-align:center}
@media(max-width:800px){footer{grid-template-columns:1fr;gap:10px}footer>span:first-child,footer>span:nth-child(2),footer .release-info{grid-column:1;grid-row:auto;text-align:center}footer .release-info{grid-row:2}}

/* Dark matching caps for each live runway state. */
.runway-status-card{--status-cap:#46515c}.runway-status-card.open{--status-cap:#23633a}.runway-status-card.closing{--status-cap:#796000}.runway-status-card.closed{--status-cap:#96313b}
.runway-status-card .runway-status-title,.runway-status-card .runway-status-note{background:var(--status-cap);color:#fff;font-weight:700}

/* Larger runway titles within the existing header height. */
.runway-status-title{height:30px;flex:0 0 30px;padding:0 4px;display:flex;align-items:center;justify-content:center;font-size:clamp(16px,1.35vw,24px);line-height:1;white-space:nowrap}
.runway-status-card.open .runway-state{color:rgb(0,255,0)}.runway-status-card.closing .runway-state{color:rgb(255,255,0)}.runway-status-card.closed .runway-state{color:rgb(255,0,0)}
.runway-status-card:not(.unknown) .runway-state{text-shadow:-1px -1px 0 #263128,1px -1px 0 #263128,-1px 1px 0 #263128,1px 1px 0 #263128}
@media(max-width:600px){.runway-status-title{height:27px;flex-basis:27px;font-size:clamp(12px,3.6vw,18px);padding:0 2px}}

/* Clean status lettering and a single-line, fitted footer. */
.runway-status-card:not(.unknown) .runway-state{text-shadow:none}
.runway-status-note{font-size:13px;white-space:nowrap;overflow:hidden;min-width:0}
@media(max-width:600px){.runway-status-note{font-size:11px}}

/* White edge around the bright runway status text. */
.runway-status-card:not(.unknown) .runway-state{text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff}

/* Restore r035 body colors and carry them through the footer. */
.runway-status-card{--status-ink:#24332e;--status-body:#dce2e6}
.runway-status-card.open{--status-ink:#123e23;--status-body:#8cd5a0}
.runway-status-card.closing{--status-ink:#493800;--status-body:#ffe17b}
.runway-status-card.closed{--status-ink:#59151c;--status-body:#ef9399}
.runway-status-card .runway-state,.runway-status-card:not(.unknown) .runway-state{color:var(--status-ink);text-shadow:none}
.runway-status-card .runway-status-note{color:var(--status-ink);background:var(--status-body)}

/* Larger countdowns within the same compact footer footprint. */
.runway-status-card.closing .runway-status-note,.runway-status-card.closed .runway-status-note{height:25px;flex:0 0 25px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:0 4px;font-size:21px;line-height:1;white-space:nowrap}
@media(max-width:600px){.runway-status-card.closing .runway-status-note,.runway-status-card.closed .runway-status-note{height:20px;flex-basis:20px;font-size:18px;padding:0 3px}}

/* Slightly larger next-closure text; existing fitting prevents overflow. */
.runway-status-card.open .runway-status-note{font-size:14px}
@media(max-width:600px){.runway-status-card.open .runway-status-note{font-size:12px}}

/* Retain vertical page scroll and pinch zoom while dragging time horizontally. */
.chart-scroll{touch-action:pan-y pinch-zoom}

/* Clip chart overflow without creating a scroll container that traps sticky. */
.panel,.chart-scroll{overflow:clip}
.ruler-axis{position:sticky;top:var(--masthead-height,160px);z-index:20;background:#fafbf8;box-shadow:0 2px 3px #24332e16}

/* Theme control and dark palette. Status colors remain consistent in both themes. */
.footer-right{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.theme-toggle{font-size:11px}:root{color-scheme:light}
:root[data-theme=dark]{color-scheme:dark;background:#11171d;color:#e3e9ed;--line:#35414a;--muted:#a5b2bc;--runway:#86c7aa}
[data-theme=dark] .masthead{background:#171f27;box-shadow:0 2px 8px #0005}
[data-theme=dark] .airport-logo{background:#fff;border-radius:4px;padding:3px}
[data-theme=dark] :is(.panel,button.panel-head,.toggle,.search-wrap input,.icon-button,.quiet-button,.other-notices,dialog){background:#1c2630;color:#e3e9ed;border-color:var(--line)}
[data-theme=dark] :is(button.panel-head:hover,.icon-button:hover,.quiet-button:hover){background:#2b3945}
[data-theme=dark] :is(.axis,.ruler-axis){background:#202b35;color:var(--muted)}
[data-theme=dark] .panel .chart-body,[data-theme=dark] .runway-row{background:#1b252e}
[data-theme=dark] .runway-row:nth-of-type(even){background:#232f3a}
[data-theme=dark] .segmented{background:#141d25}
[data-theme=dark] .segmented button{color:#b9c5ce}
[data-theme=dark] .segmented button[aria-pressed=true]{background:#3a4d5c;color:#fff}
[data-theme=dark] :is(.date-label input,.panel-arrow,.footer-mark,.notice-number){color:#e3e9ed}
[data-theme=dark] :is(.notice-number,.notice-summary){background:transparent}
[data-theme=dark] :is(.notice-summary,.runway-label span,.runway-empty){color:#a5b2bc}
[data-theme=dark] .notice-row{border-color:var(--line)}
[data-theme=dark] .notice-row:hover{background:#ffffff08}
[data-theme=dark] .original-text{background:#111a22;color:#e3e9ed}
[data-theme=dark] .badge{background:#293a46;color:#d6e3ec;border-color:#4c606f}
[data-theme=dark] .badge.closure{background:#50372b;color:#ffdab6;border-color:#946c47}
[data-theme=dark] .feed-pill{background:#213c32;color:#a7dfc0;border-color:#426954}
[data-theme=dark] :is(.feed-pill.warning,.notice-banner){background:#423521;color:#ffe0a3;border-color:#79633c}
[data-theme=dark] input::placeholder{color:#9cabb6}
[data-theme=dark] .hover-line{background:#050505;box-shadow:0 0 0 1px #ffffff70}
[data-theme=dark] .hover-tooltip{border:1px solid #7c8c97}
[data-theme=dark] dialog::backdrop{background:#0009}
@media(max-width:800px){.footer-right{align-items:center}}
[data-theme=dark] :is(.ruler-date,.ruler-time){color:#c5d2db}[data-theme=dark] #today[aria-pressed=true]{background:#294638;color:#d5f1df;border-color:#557e65}

.logo-dark{display:none}[data-theme=dark] .logo-light{display:none}[data-theme=dark] .logo-dark{display:block}[data-theme=dark] .airport-logo{background:transparent;border-radius:0;padding:0}

/* Align footer copy beneath the right-hand theme button. */
footer{align-items:end}footer>span:first-child,footer .release-info{line-height:1.6}.footer-right>span{line-height:1.6}
/* Animate theme colors after initial load, respecting reduced-motion settings. */
@media(prefers-reduced-motion:no-preference){html.theme-ready,html.theme-ready :is(body,.masthead,.panel,.panel-head,.toggle,input,.icon-button,.quiet-button,.other-notices,dialog,.axis,.ruler-axis,.chart-body,.runway-row,.segmented,.segmented button,.notice-row,.notice-number,.notice-summary,.original-text,.badge,.feed-pill,.notice-banner,.ruler-date,.ruler-time){transition:background-color 280ms ease,color 280ms ease,border-color 280ms ease,box-shadow 280ms ease}}

/* Stronger status colors with darker matching runway-name headers. */
.runway-status-card.open{--status-cap:#12652c;--status-body:#35c759;--status-ink:#073514;background:var(--status-body)}
.runway-status-card.closing{--status-cap:#8a6500;--status-body:#ffda28;--status-ink:#352900;background:var(--status-body)}
.runway-status-card.closed{--status-cap:#941b29;--status-body:#ec4553;--status-ink:#30070c;background:var(--status-body)}

/* Light runway-name headers and white status/footer lettering. */
.runway-status-card.open{--status-cap:#a3e9b3;--status-ink:#fff}
.runway-status-card.closing{--status-cap:#ffed9b;--status-ink:#fff}
.runway-status-card.closed{--status-cap:#f7acb2;--status-ink:#fff}
.runway-status-card .runway-status-title{color:#000}
.runway-status-card.unknown{--status-cap:#b7c2cc;--status-ink:#fff}

/* Production palette in light mode; vivid status palette retained in dark mode. */
:root:not([data-theme=dark]) .runway-status-card.open{--status-cap:#23633a;--status-body:#8cd5a0;--status-ink:#123e23}
:root:not([data-theme=dark]) .runway-status-card.closing{--status-cap:#796000;--status-body:#ffe17b;--status-ink:#493800}
:root:not([data-theme=dark]) .runway-status-card.closed{--status-cap:#96313b;--status-body:#ef9399;--status-ink:#59151c}
:root:not([data-theme=dark]) .runway-status-card.unknown{--status-cap:#46515c;--status-body:#dce2e6;--status-ink:#24332e}
:root:not([data-theme=dark]) .runway-status-card .runway-status-title{color:#fff}
@media(prefers-reduced-motion:no-preference){html.theme-ready :is(.runway-status-card,.runway-status-title,.runway-state,.runway-status-note){transition:background-color 280ms ease,color 280ms ease}}

/* Priority closure message remains with the fixed header. */
.masthead:has(#emergency-banner:not([hidden])){flex-wrap:wrap}
#emergency-banner{flex:0 0 100%;background:#d71920;color:#fff;font-weight:800;font-size:clamp(20px,2.1vw,34px);line-height:1.15;text-align:center;padding:12px 16px;border-radius:5px}

/* Full-width emergency strip attached to the top edge. */
.masthead:has(#emergency-banner:not([hidden])){padding-top:0}
#emergency-banner{flex-basis:calc(100% + 8vw);margin-left:-4vw;margin-right:-4vw;border-radius:0;font-size:clamp(17px,1.65vw,28px);padding:10px 4vw}
@media(min-width:601px) and (max-width:800px){#emergency-banner{flex-basis:calc(100% + 10vw);margin-left:-5vw;margin-right:-5vw;padding-left:5vw;padding-right:5vw}}

/* NAVAIDs in orange; FICONs in light blue. */
.type-navaids{--notice-fill:#f9b66c;--notice-ink:#59300d;--notice-edge:#c37522;--accent:#c37522}
.type-condition{--notice-fill:#a8ddf5;--notice-ink:#153e55;--notice-edge:#389cc8;--accent:#389cc8}

/* Stronger NOTAM palette, shared by filters and timeline entries. */
.type-closure{--notice-fill:#ed6374;--notice-ink:#400c17;--notice-edge:#bd2037;--accent:#bd2037}
.type-navaids{--notice-fill:#ffa044;--notice-ink:#4a2300;--notice-edge:#b85a00;--accent:#b85a00}
.type-work{--notice-fill:#ffda35;--notice-ink:#423500;--notice-edge:#947400;--accent:#947400}
.type-condition{--notice-fill:#78d0f4;--notice-ink:#09364a;--notice-edge:#127da9;--accent:#127da9}
.type-others{--notice-fill:#70d393;--notice-ink:#103c20;--notice-edge:#247843;--accent:#247843}
.toggle:is(.type-closure,.type-navaids,.type-work,.type-condition,.type-others){border-color:var(--notice-edge);border-bottom-width:3px;font-weight:600}
.toggle .toggle-dot{width:7px;height:7px}

/* Inactive-NOTAM hatch treatment on the history filter. */
.toggle.history-toggle{position:relative;isolation:isolate;overflow:hidden;border-color:#58616b;border-bottom-width:3px;font-weight:600}
.toggle.history-toggle::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:repeating-linear-gradient(135deg,rgba(255,255,255,.12) 0,rgba(255,255,255,.12) 7px,rgba(0,0,0,.17) 7px,rgba(0,0,0,.17) 10px)}
.history-toggle .toggle-dot{background:repeating-linear-gradient(135deg,#fff 0,#fff 3px,#171717 3px,#171717 5px)}
[data-theme=dark] .toggle.history-toggle{border-color:#aab4bd}

/* Stripe only the history selector's border; keep its interior solid. */
.toggle.history-toggle::before{content:none}
.toggle.history-toggle{border:2px solid transparent;border-bottom-width:3px;background:linear-gradient(#fff,#fff) padding-box,repeating-linear-gradient(135deg,#fff 0,#fff 4px,#252525 4px,#252525 7px) border-box}
[data-theme=dark] .toggle.history-toggle{border-color:transparent;background:linear-gradient(#1c2630,#1c2630) padding-box,repeating-linear-gradient(135deg,#fff 0,#fff 4px,#252525 4px,#252525 7px) border-box}
.type-others{--notice-fill:#c69aee;--notice-ink:#391653;--notice-edge:#8545b6;--accent:#8545b6}

/* Three independent expandable sections below the airfield timelines. */
.supplementary-notices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:24px;align-items:start}
.supplementary-notices .other-notices{margin-top:0;min-width:0;padding:17px 16px}
.supplementary-notices #other-list{grid-template-columns:minmax(0,1fr)}
.supplementary-notices summary{gap:8px}.supplementary-notices .notice-summary{white-space:normal;overflow-wrap:anywhere}
@media(max-width:800px){.supplementary-notices{grid-template-columns:1fr}}
/* Pending: continuous sticky ruler with a chart title over the group labels. */
.ruler-axis{margin-left:0;padding-left:310px}
.ruler-chart-name{position:absolute;left:26px;top:0;bottom:0;width:266px;display:flex;align-items:center;font:600 17px Arial,Helvetica,sans-serif;color:#24332e}
[data-theme=dark] .ruler-chart-name{color:#e3e9ed}
@media(max-width:800px){.ruler-axis{padding-left:18px}.ruler-chart-name{position:static;width:auto;min-height:28px;font-size:14px}}

/* Sign icons for chart headings. */
.panel-sign{display:block;height:28px;width:auto;flex-shrink:0}

/* Read-only NOTAM detail badges share the filter styling. */
#detail-title{font-size:25px;line-height:1.3;letter-spacing:-.4px;overflow-wrap:anywhere}
.detail-badges{flex-wrap:wrap}
.detail-chip{cursor:default;font-weight:600}
.detail-chip.status-active{--accent:#25834a;border-color:#25834a;border-bottom-width:3px}
.detail-chip.status-upcoming{--accent:#397ca9;border-color:#397ca9;border-bottom-width:3px}
.detail-chip:is(.status-cancelled,.status-expired){--stripe:#222;border:2px solid transparent;border-bottom-width:3px;background:linear-gradient(#fff,#fff) padding-box,repeating-linear-gradient(135deg,#fff 0,#fff 4px,var(--stripe) 4px,var(--stripe) 7px) border-box}
.detail-chip.status-expired{--stripe:#bc387f}
.detail-chip:is(.status-cancelled,.status-expired) .toggle-dot{background:repeating-linear-gradient(135deg,#fff 0,#fff 3px,var(--stripe) 3px,var(--stripe) 5px)}
[data-theme=dark] .detail-chip:is(.status-cancelled,.status-expired){background:linear-gradient(#1c2630,#1c2630) padding-box,repeating-linear-gradient(135deg,#fff 0,#fff 4px,var(--stripe) 4px,var(--stripe) 7px) border-box}

/* Separate expired visibility and colors. */
.type-condition{--notice-fill:#c69aee;--notice-ink:#391653;--notice-edge:#8545b6;--accent:#8545b6}
.type-others{--notice-fill:#78b9f1;--notice-ink:#123953;--notice-edge:#2879b8;--accent:#2879b8}
.toggle.expired-toggle{--accent:#bc387f;background:linear-gradient(#fff,#fff) padding-box,repeating-linear-gradient(135deg,#fff 0,#fff 4px,#bc387f 4px,#bc387f 7px) border-box}
[data-theme=dark] .toggle.expired-toggle{background:linear-gradient(#1c2630,#1c2630) padding-box,repeating-linear-gradient(135deg,#fff 0,#fff 4px,#bc387f 4px,#bc387f 7px) border-box}
.expired-toggle .toggle-dot{background:repeating-linear-gradient(135deg,#fff 0,#fff 3px,#bc387f 3px,#bc387f 5px)}
.runway-bar.status-expired::after,.notice-row.status-expired .gantt-bar::after{background:repeating-linear-gradient(135deg,rgba(255,255,255,.2) 0,rgba(255,255,255,.2) 7px,rgba(188,56,127,.45) 7px,rgba(188,56,127,.45) 10px)}

.search-wrap{position:relative}
#search-results{position:absolute;right:0;top:calc(100% + 6px);width:min(480px,calc(100vw - 32px));max-height:420px;overflow:auto;z-index:50;border:1px solid var(--line);border-radius:7px;background:#fff;box-shadow:0 8px 28px #0003}
.search-result{padding:12px 14px;border-bottom:1px solid var(--line);cursor:pointer;display:grid;gap:5px;text-align:left}
.search-result strong{font-size:13px;line-height:1.4;overflow-wrap:anywhere}
.search-result span,.search-no-results{font-size:11px;color:var(--muted)}.search-no-results{padding:14px}
.search-result:hover,.search-result[aria-selected=true]{background:#eaf1f7}
[data-theme=dark] #search-results{background:#1c2630}
[data-theme=dark] .search-result:hover,[data-theme=dark] .search-result[aria-selected=true]{background:#304353}
.search-selected{outline:3px solid #167fb7;outline-offset:2px}
/* Make the complete supplementary header a native click/touch target. */
.supplementary-notices .other-notices{padding:0}
.supplementary-notices .other-notices>summary{padding:17px 16px;min-height:48px;align-items:center;border-radius:6px;cursor:pointer}
.supplementary-notices .other-notices>p,.supplementary-notices .other-notices>div{margin-left:16px;margin-right:16px}
.supplementary-notices .other-notices>div:last-child{margin-bottom:17px}
.supplementary-notices .other-notices>summary:hover{background:#00000006}
[data-theme=dark] .supplementary-notices .other-notices>summary:hover{background:#ffffff08}
.supplementary-notices .other-notices>summary:focus-visible{outline:3px solid #7eb19a;outline-offset:2px}
/* Dark-mode status cards: deeper status colors for white-text contrast. */
[data-theme=dark] .runway-status-card.open{--status-cap:#254d3b;--status-body:#17603d;--status-ink:#fff}
[data-theme=dark] .runway-status-card.closing{--status-cap:#514322;--status-body:#705600;--status-ink:#fff}
[data-theme=dark] .runway-status-card.closed{--status-cap:#562d35;--status-body:#913340;--status-ink:#fff}
[data-theme=dark] .runway-status-card.unknown{--status-cap:#35424d;--status-body:#475663;--status-ink:#fff}
[data-theme=dark] .runway-status-card .runway-status-title{color:#fff}

/* Day boundaries follow the selected timezone and timeline pan. */
.runway-track,.bar-track{background-image:none}
.day-boundary{position:absolute;top:0;bottom:0;width:1px;background:#495b4e;pointer-events:none;will-change:translate}
/* Midnight dividers use the same color as the ruler midnight ticks in both themes. */
.panel .chart-body,.chart-body .bar-track{background-image:none}

/* Open footer uses the countdown font size; JS fits long text to available width. */
.runway-status-card.open .runway-status-note{font-size:21px}
@media(max-width:600px){.runway-status-card.open .runway-status-note{font-size:18px}}
/* Shared footer geometry aligns open, closing and closed status cards. */
.runway-status-card:is(.open,.closing,.closed,.unknown) .runway-status-note{height:25px;min-height:25px;flex:0 0 25px;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0 4px;line-height:1}
@media(max-width:600px){.runway-status-card:is(.open,.closing,.closed,.unknown) .runway-status-note{height:20px;min-height:20px;flex-basis:20px;padding:0 3px}}
