:root{color-scheme:light;--bg:#ead5a9;--surface:#f0deb7;--ink:#153c40;--muted:#6f654a;--accent:#b53d22;--line:#b19a6f;--accent-soft:#d6b987;--feature-muted:#57604e}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;padding:22px 30px 16px;background:radial-gradient(ellipse at 40% 30%,#f5e5c4,transparent 75%),#e9d2a3;color:var(--ink);font-family:'Arial Narrow','Avenir Next Condensed',Arial,sans-serif;min-height:100svh}body:before{content:'';position:fixed;inset:0;pointer-events:none;z-index:150;opacity:.19;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23695330' filter='url(%23n)' opacity='.55' d='M0 0h180v180H0z'/%3E%3C/svg%3E");mix-blend-mode:multiply}body:after{content:'';position:fixed;inset:7px;pointer-events:none;z-index:151;border:2px solid #aa805047;box-shadow:0 0 24px 8px #a2773936,inset 0 0 32px #a2773926}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #bd5829;outline-offset:3px}svg{display:block}.wrap{max-width:1680px;margin:auto}.topbar{display:grid;grid-template-columns:1fr 215px;gap:24px;padding-bottom:12px;border-bottom:5px double var(--ink)}.masthead{background:var(--accent);color:#f2dfaf;padding:0 20px 8px;position:relative;overflow:hidden}.brand{font-family:Didot,'Bodoni MT','Times New Roman',serif;font-weight:900;font-size:clamp(68px,10vw,150px);letter-spacing:-.06em;line-height:1;display:flex;justify-content:space-between;align-items:center}.brand span{font-family:Georgia,serif;font-size:.6em;transform:rotate(-12deg);margin-left:20px}.masthead-sub{text-align:center;letter-spacing:.46em;font-size:clamp(12px,1.7vw,24px);font-weight:800;color:var(--ink)}.edition{border-left:1px solid var(--ink);padding-left:20px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:9px;text-align:center}.edition>span{font-weight:800;font-size:13px;letter-spacing:.2em;line-height:1.5}.edition svg{width:48px;height:48px}.topright{display:flex;align-items:center;gap:9px;font-size:10px;font-weight:700;letter-spacing:.07em}.status{display:flex;gap:5px;align-items:center}.status-dot{width:5px;height:5px;border-radius:50%;background:var(--accent)}.heading{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:14px 0 8px}.intro{font-family:Georgia,serif;font-style:italic;font-size:clamp(18px,1.9vw,26px);line-height:1.25;margin:0}.intro br{display:none}.controls{display:flex;align-items:center;gap:12px}.segmented{display:flex;border:1px solid var(--line)}.segmented button{border:0;background:transparent;padding:11px 30px;color:var(--ink);font-weight:800;letter-spacing:.2em;font-size:17px;text-transform:uppercase}.segmented button.active{background:var(--accent);color:#f4e1b5;clip-path:polygon(7% 0,100% 0,93% 100%,0 100%)}.iconbtn,.frame-button{border:1px solid var(--line);color:var(--ink);background:transparent;padding:10px;display:flex;align-items:center;justify-content:center;min-height:42px}.frame-button{font-size:10px;letter-spacing:.1em;text-transform:uppercase}.iconbtn svg{width:19px;height:19px}.demo-notice{display:none;align-items:center;justify-content:space-between;font:italic 13px Georgia,serif;padding:2px 0 12px;color:#665840}.demo-notice.visible{display:flex}.demo-notice button{background:none;border:1px solid var(--line);padding:6px 12px;color:var(--ink)}.stage{display:grid;grid-template-columns:minmax(230px,.8fr) minmax(0,1.8fr);gap:22px;align-items:stretch}.panel{min-width:0}.radar-card{background:#173b3a;color:#e7cb8d;padding:20px;display:flex;flex-direction:column;position:relative;overflow:hidden}.radar-card:before{content:'';position:absolute;inset:0;opacity:.12;background:repeating-linear-gradient(0deg,transparent 0 3px,#e6c98933 4px 5px);pointer-events:none}.sectiontop{display:flex;justify-content:space-between;gap:10px;align-items:start}.label{font-size:11px;letter-spacing:.17em;font-weight:800;text-transform:uppercase}.name{font-size:clamp(17px,1.8vw,26px);font-weight:800;letter-spacing:.06em;margin-top:5px;text-transform:uppercase}.section-side{font-size:8px;text-align:right;line-height:1.6;white-space:nowrap;opacity:.65}.radar-wrap{display:grid;place-items:center;flex:1;padding:16px 0 10px}.radar{position:relative;isolation:isolate;width:min(100%,400px);aspect-ratio:1;border:1px solid #ddc47d;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 calc(25% - 1px),#d3b9718c calc(25% - 1px) 25%);overflow:hidden}.radar:after{content:'';position:absolute;left:50%;top:0;height:100%;width:1px;background:#d3b97175;pointer-events:none}.radar-hline{position:absolute;top:50%;height:1px;width:100%;background:#d3b97175}.radar-sweep{position:absolute;inset:0;background:conic-gradient(transparent 0deg,#d4bc7420 40deg,transparent 45deg);animation:sweep 22s linear infinite;pointer-events:none}@keyframes sweep{to{transform:rotate(360deg)}}.planes-layer{position:absolute;inset:0;z-index:5}.plane{position:absolute;transform:translate(-50%,-50%);border:0;background:none;color:#f3dfb3;padding:10px;display:grid;place-items:center;transition:left .6s,top .6s}.plane svg{width:20px;height:20px;transform:rotate(var(--heading))}.plane.selected{color:#ffdc8b}.plane.selected:before{content:'';position:absolute;inset:0;border:1px dashed #e9c779;border-radius:50%;background:#bfa75922;z-index:-1}.plane.selected svg{width:28px;height:28px}.plane:hover{color:#fff}.center-dot{position:absolute;left:50%;top:50%;width:7px;height:7px;transform:translate(-50%,-50%);border-radius:50%;background:#e4c883;box-shadow:0 0 0 5px #e4c88325}.n-label,.cardinal{position:absolute;font-size:9px;font-weight:800}.n-label{top:5%;left:49%}.cardinal.s{bottom:5%;left:49%}.cardinal.e{right:5%;top:49%}.cardinal.w{left:5%;top:49%}.radar-motto{font-family:Georgia,serif;font-weight:bold;font-style:italic;font-size:clamp(20px,2.6vw,38px);line-height:.98;padding:8px 0 15px;color:#ecdbb5}.radar-bottom{display:flex;justify-content:space-between;gap:6px;border-top:1px solid #ddc47d55;padding-top:12px;font-size:8px;letter-spacing:.09em}.feature{display:flex;flex-direction:column;position:relative}.feature-top{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px}.feature-top .label{color:var(--accent)}.feature-chip{font-size:11px;font-weight:bold;letter-spacing:.1em}.aircraft-visual{height:auto;aspect-ratio:3;position:relative;background:#b9b599;overflow:hidden;border:1px solid #b19a6f55}.aircraft-photo{display:none;width:100%;height:100%;object-fit:cover}.has-photo .aircraft-photo{display:block}.photo-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;font-size:12px}.photo-placeholder>span:first-child{font-size:60px}.has-photo .photo-placeholder{display:none}.photo-identity{display:none;position:absolute;left:10px;top:9px;padding:5px 7px;background:#ead5a9df;color:#244541;font-size:8px;letter-spacing:.13em}.has-photo .photo-identity{display:block}.photo-credit{display:none;position:absolute;right:0;bottom:0;padding:4px 8px;background:#ead5a9dd;font-size:8px}.has-photo .photo-credit{display:block}.photo-credit a{text-decoration:none}.flight-sheet{display:grid;grid-template-columns:1fr .58fr;gap:0 20px;padding-top:8px;flex:1}.feature-primary{min-width:0}.flight-title{font-family:Didot,'Bodoni MT',Georgia,serif;color:var(--accent);font-size:clamp(48px,6vw,86px);font-weight:900;letter-spacing:-.04em;line-height:1}.flight-sub{font-size:clamp(14px,1.6vw,23px);font-weight:850;letter-spacing:.015em;text-transform:uppercase}.route-line{font-size:clamp(14px,1.5vw,22px);font-weight:800;line-height:1.3}.status-line{font:14px Georgia,serif;margin-top:4px}.distance-row{border-left:1px solid var(--line);padding-left:20px;padding-top:10px}.distance-row .label{color:var(--accent);font-size:10px}.distance-number{font-family:Georgia,serif;font-size:clamp(40px,5.3vw,78px);font-weight:700;letter-spacing:-.055em;white-space:nowrap;line-height:1.1;padding-top:5px}.distance-unit{font-size:19px;letter-spacing:0}.distance-description{display:none}.metrics{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding-top:9px;margin-top:10px;gap:15px}.metric{position:relative}.metric+.metric{border-left:1px solid var(--line);padding-left:15px}.metric .label{color:var(--accent);font-size:9px}.metric .value{font:700 clamp(25px,2.6vw,38px) Georgia,serif;display:inline-block;margin-top:2px}.unit{font:12px Georgia,serif;padding-left:5px}.feature-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:10px;padding-top:8px;gap:10px;font-size:8px;letter-spacing:.08em;text-transform:uppercase}.feature-foot button{border:0;background:var(--accent);color:#f4e0b5;padding:8px 12px;font-size:10px;text-transform:uppercase;font-weight:bold;letter-spacing:.06em}.fleet{margin-top:16px;padding-top:10px;border-top:4px double var(--ink)}.fleet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.fleet-head h2{margin:0;font:italic bold 19px Georgia,serif}.fleet-head p{display:none}.refresh{background:none;border:0;display:flex;align-items:center;gap:6px;font-size:9px;text-transform:uppercase;font-weight:bold;color:var(--ink)}.refresh svg{width:12px;height:12px}.aircraft-list{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.aircraft-card{display:flex;align-items:center;gap:9px;border:1px solid var(--line);background:#f4e5c140;color:var(--ink);text-align:left;padding:8px;min-width:0}.aircraft-card.active{border:2px solid var(--accent);padding:7px}.aircraft-mark{width:40px;height:34px;flex-shrink:0;overflow:hidden}.aircraft-mark svg{width:22px;height:22px}.aircraft-mark img{width:100%;height:100%;object-fit:cover}.aircraft-meta{display:flex;flex-direction:column;min-width:0;gap:3px}.aircraft-meta strong{font-size:11px}.aircraft-meta>span{font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aircraft-meta .thumb-credit{display:none}.aircraft-distance{display:none}.note{display:flex;gap:8px;font-size:9px;line-height:1.4;opacity:.65;margin-top:12px}.note svg{flex-shrink:0;width:13px}.empty{padding:20px;font:16px Georgia,serif;grid-column:1/-1}.board-view .stage{display:none}.board-view .aircraft-list{grid-template-columns:repeat(3,minmax(0,1fr))}.board-view .aircraft-card{padding:18px}.board-view .aircraft-distance{display:block;margin-left:auto;font-size:16px}.aircraft-distance small{display:block;font-size:10px;margin-top:4px}.board-view .fleet{min-height:400px}.overlay{position:fixed;inset:0;background:#102b2bb0;z-index:160;visibility:hidden;opacity:0}.overlay.visible{visibility:visible;opacity:1}.drawer{position:fixed;right:0;top:0;bottom:0;width:min(440px,100%);padding:25px;background:var(--surface);z-index:170;overflow:auto;transform:translateX(105%);visibility:hidden;transition:transform .25s}.drawer.visible{transform:translateX(0);visibility:visible}.drawer-head{display:flex;justify-content:space-between;align-items:center}.drawer-head h2{font:32px Georgia,serif}.setting-group{border-top:1px solid var(--line);margin-top:20px;padding-top:15px}.setting-group h3{font-size:12px;letter-spacing:.15em}.field{margin:12px 0}.field label{display:block;font-size:12px;margin-bottom:6px}.field input,.field select{width:100%;padding:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}.cols2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.hint{display:block;font-size:11px;line-height:1.5;margin-top:8px}.toggle,.range-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;gap:10px}.range{width:100%;margin:18px 0;accent-color:var(--accent)}.toggle input{accent-color:var(--accent)}.button-solid,.button-outline{padding:12px;width:100%;margin-top:12px;border:1px solid var(--line);background:var(--accent);color:#f5e5c1}.button-outline{background:transparent;color:var(--ink)}.drawer-bottom{margin-top:15px}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,100px);opacity:0;background:var(--ink);color:var(--surface);padding:12px 20px;z-index:200;max-width:90%;font-size:12px;transition:.2s}.toast.visible{transform:translate(-50%,0);opacity:1}
:root[data-theme=dark]{--bg:#253b36;--surface:#233a34;--ink:#eddbb5;--line:#7b7856;--accent:#e39764;--muted:#c5b990}:root[data-theme=dark] body{background:#243a34}:root[data-theme=dark] .masthead{background:#9c3d27}:root[data-theme=dark] .masthead-sub{color:#eed8ad}:root[data-theme=dark] .demo-notice{color:#c5b990}
@media(min-width:1700px){body{padding-top:30px}.stage{grid-template-columns:.78fr 1.8fr}}
@media(max-width:1100px){body{padding:15px 20px}.topbar{grid-template-columns:1fr 160px;gap:15px}.edition{padding-left:12px}.edition>span{font-size:10px}.edition svg{width:30px;height:30px}.topright{font-size:8px;gap:5px}.stage{gap:14px}.radar-card{padding:14px}.section-side{display:none}.controls{gap:7px}.segmented button{padding:9px 18px;font-size:14px}.intro{font-size:20px}.aircraft-list{grid-template-columns:repeat(3,1fr)}.aircraft-distance{display:block;margin-left:auto;font-size:12px}.flight-sheet{gap:0 12px}.distance-row{padding-left:12px}.radar-motto{font-size:27px}.feature-foot{font-size:7px}}
@media(max-width:700px) and (orientation:portrait){body{padding:13px}.topbar{grid-template-columns:1fr}.masthead{padding:5px 12px 8px}.brand{font-size:16vw}.masthead-sub{font-size:12px;letter-spacing:.3em}.edition{flex-direction:row;justify-content:space-between;border-left:0;padding:0;gap:6px}.edition>span{font-size:8px;text-align:left}.edition svg{display:none}.topright{font-size:9px}.heading{flex-wrap:wrap;gap:10px}.intro{font-size:19px}.controls{width:100%;justify-content:space-between}.frame-button{font-size:8px;padding:8px}.segmented button{padding:10px 20px}.demo-notice{font-size:11px;line-height:1.4}.stage{grid-template-columns:1fr}.feature{grid-row:1}.flight-title{font-size:60px}.flight-sub,.route-line{font-size:15px}.distance-number{font-size:43px}.distance-row .label{font-size:8px}.status-line{font-size:12px}.aircraft-visual{aspect-ratio:2.5}.radar-wrap{padding:12px 0}.radar{width:min(100%,280px)}.radar-motto{font-size:26px}.radar-motto br{display:none}.radar-motto{padding:10px 0}.aircraft-list,.board-view .aircraft-list{grid-template-columns:repeat(2,minmax(0,1fr))}.aircraft-distance{display:none}.board-view .aircraft-card{padding:10px}.board-view .aircraft-distance{font-size:10px}.feature-foot{font-size:7px}.note{font-size:8px}}
@media(orientation:landscape) and (max-height:600px){body{padding:10px 18px}.topbar{grid-template-columns:1fr 170px;gap:14px;padding-bottom:6px}.brand{font-size:clamp(54px,7.8vw,90px)}.masthead-sub{font-size:11px}.edition{gap:3px}.edition>span{font-size:9px}.edition svg{display:none}.heading{padding:7px 0}.intro{font-size:16px}.segmented button{font-size:12px;padding:7px 20px}.iconbtn,.frame-button{min-height:32px;padding:6px}.demo-notice{font-size:10px;padding-bottom:7px}.stage{grid-template-columns:minmax(200px,.82fr) minmax(0,1.8fr);gap:12px}.radar-card{padding:10px}.name{font-size:16px}.radar-wrap{padding:6px 0}.radar{max-width:210px}.radar-motto{font-size:20px;padding:5px 0}.radar-motto br{display:none}.radar-bottom{font-size:6px;padding-top:6px}.feature-top{margin-bottom:4px}.feature-top .label{font-size:9px}.aircraft-visual{aspect-ratio:3}.flight-title{font-size:42px}.flight-sub,.route-line{font-size:13px}.status-line{font-size:11px}.distance-number{font-size:42px}.distance-row{padding-top:5px}.distance-row .label{font-size:8px}.metrics{padding-top:5px;margin-top:6px}.metric .value{font-size:23px}.metric .label{font-size:8px}.unit{font-size:9px}.feature-foot{margin-top:6px;padding-top:5px}.feature-foot button{font-size:8px;padding:6px}.fleet{margin-top:12px}.fleet-head h2{font-size:15px}.note{font-size:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.radar-sweep{animation:none}.plane,.drawer{transition:none}}
/* Aviation chart: ink on an aged instrument panel. */
.radar-card{background:radial-gradient(ellipse at 70% 35%,#31504a,#1a3936 60%,#122f2e);border:1px solid #c3a56888;box-shadow:inset 0 0 0 5px #163734,inset 0 0 0 6px #d4ba7425,0 7px 20px #42331818}
.radar-card:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23f0d69b' filter='url(%23n)' d='M0 0h150v150H0z'/%3E%3C/svg%3E");opacity:.12;mix-blend-mode:screen}
.radar-card .sectiontop{padding-bottom:13px;border-bottom:3px double #ccb37865}.radar-card .label{color:#dcc58e;font-size:9px;letter-spacing:.22em}.radar-card .name{font-family:Georgia,serif;font-size:clamp(18px,1.6vw,25px);letter-spacing:.035em;color:#f2e0b4}.radar-card .section-side{color:#d4ba84;opacity:.75;letter-spacing:.1em;font-size:7px}
.radar-wrap{padding:12px 0 7px}.radar{border:0;border-radius:0;background:transparent;box-shadow:none;max-width:460px;overflow:hidden}.radar:after,.radar-hline,.n-label,.cardinal,.center-dot{display:none}.radar-chart{width:100%;height:100%;position:absolute;inset:0;pointer-events:none}.chart-graticule path{stroke:#aab494;stroke-width:1;fill:none;opacity:.12}.illustrated-coast>path{fill:url(#landDots);stroke:none}.illustrated-coast .shoreline{stroke:#bfae75;stroke-width:2.3;fill:none;opacity:.65}.sea-caption{font-size:22px;font-family:Georgia,serif;font-style:italic;letter-spacing:9px;fill:#acb9a3;opacity:.5}.river-caption{font-size:17px;font-family:Georgia,serif;font-style:italic;letter-spacing:5px;fill:#c5c9a2;opacity:.65}.chart-rings circle{fill:none;stroke:#c7b074;stroke-width:1.7;opacity:.8}.chart-rings circle:last-of-type{stroke-width:2.7}.ring-number{font:16px Georgia,serif;fill:#d8c18b;opacity:.8;letter-spacing:2px}.chart-tick{stroke:#d4bc7c;stroke-width:1.7;opacity:.5}.chart-tick.major{stroke-width:2.5;opacity:.95}.bearing-number{font:16px Georgia,serif;fill:#d4bb84;text-anchor:middle;opacity:.65}.chart-axis path{stroke:#dac389;stroke-width:1.4;opacity:.6}.chart-cardinal{fill:#f3dfac;font:bold 25px Georgia,serif;text-anchor:middle}.chart-center{fill:#193b36;stroke:#f0d59b;stroke-width:3}.center-reticle{stroke:#f0d59b;stroke-width:2}.center-label{fill:#d9c18b;font:bold 15px Arial,sans-serif;letter-spacing:3px}.selected-bearing{stroke:#e9cb86;stroke-width:2;stroke-dasharray:9 9;opacity:.75}.selected-ring{fill:#ebc57f10;stroke:#f0d395;stroke-width:1.7}.selected-ring.outer{fill:none;stroke:#d9bf80;stroke-dasharray:3 10;opacity:.55}.flight-map-label{fill:#f4deb0;font:bold 23px 'Arial Narrow',Arial,sans-serif;letter-spacing:3px;paint-order:stroke;stroke:#24433c;stroke-width:7;stroke-linejoin:round}.plane svg{width:21px;height:21px;filter:drop-shadow(0 2px 2px #071c18)}.plane.selected svg{width:31px;height:31px}.plane.selected{color:#ffe8af}.plane.selected:before{display:none}.plane{min-width:34px;min-height:34px}.plane:hover svg{filter:drop-shadow(0 0 4px #eddaab)}.radar-sweep{inset:7%;background:conic-gradient(from 0deg,transparent 0deg,#ddc68d0d 27deg,#ead29324 40deg,transparent 41deg);border-radius:50%;mix-blend-mode:screen;animation-duration:30s}.radar-reading{position:absolute;left:9px;bottom:6px;font-size:8px;letter-spacing:.13em;display:flex;gap:8px;align-items:center;color:#d8c493;pointer-events:none;opacity:.9}.radar-reading span:first-child{color:#f4dfb3;font-weight:800}.chart-key{display:flex;justify-content:space-between;gap:8px;color:#c7b784;font-size:6px;letter-spacing:.09em;padding:3px 0 10px;border-bottom:1px solid #c9b47738}.chart-key>span:first-child{display:flex;align-items:center;gap:4px}.chart-key i{width:5px;height:5px;border:1px solid #cfb985;border-radius:50%}.radar-motto{font-size:clamp(22px,2.3vw,34px);padding:15px 0;color:#dbc99d}.radar-bottom{color:#c4b17c;font-size:7px}.radar-bottom strong{color:#eedaaa}
@media(orientation:landscape) and (max-height:600px){.radar-card .sectiontop{padding-bottom:6px}.radar-card .name{font-size:15px}.radar-wrap{padding:5px 0}.radar{max-width:230px}.chart-key{font-size:5px;padding-bottom:5px}.radar-motto{font-size:18px;padding:7px 0}.radar-reading{font-size:6px;left:3px;bottom:3px}.radar-bottom{font-size:6px}}
@media(max-width:700px) and (orientation:portrait){.radar{max-width:340px}.radar-motto{font-size:25px}.chart-key{font-size:7px}.radar-reading{font-size:8px}}
.illustrated-coast>path:not(.shoreline){fill:#b8b68920;stroke:#c5bb8420;stroke-width:1}.illustrated-coast .shoreline{stroke-width:2.7;opacity:.78}.ring-number{font-size:20px}.bearing-number{font-size:18px}.flight-map-label{font-size:27px}.center-label{font-size:17px}
.illustration-match{margin:5px 0 0;font:italic 10px Georgia,serif;color:var(--muted);min-height:12px}.fleet-actions{display:flex;align-items:center;gap:20px}.album-link{font-size:10px;font-weight:bold;text-transform:uppercase;letter-spacing:.07em;text-underline-offset:4px}
@media(max-width:700px){.fleet-actions{gap:10px}.album-link{font-size:8px}.illustration-match{font-size:9px}.fleet-head{gap:10px}.fleet-head h2{font-size:16px}}
/* A quieter journal masthead leaves the aircraft in focus on small screens. */
:root{--bg:#f1ecdf;--surface:#f6f0e4;--muted:#6d6b60;--accent:#a4412d;--line:#b9ad94;--accent-soft:#ded3bf}
body{background:radial-gradient(ellipse at 40% 30%,#faf6ed,transparent 80%),var(--bg)}
body:before{opacity:.045}
body:after{border:1px solid #aa805025;box-shadow:none}
.topbar{grid-template-columns:auto 1fr;align-items:center;gap:24px;padding-bottom:10px;border-bottom:3px double var(--ink)}
.masthead{background:transparent;color:var(--accent);padding:0;overflow:visible}
.brand{font-size:44px;letter-spacing:-.045em;gap:16px;justify-content:flex-start}
.brand span{font-size:.48em;margin-left:0}
.masthead-sub{text-align:left;font-size:9px;letter-spacing:.28em;margin-top:4px;font-weight:600;color:var(--muted)}
.edition{flex-direction:row;justify-content:flex-end;gap:18px;padding:0;border:0;text-align:right}
.edition>span{font-size:9px;letter-spacing:.12em;line-height:1.45}
.edition svg{width:28px;height:28px;opacity:.65}
.topright{font-size:10px;gap:10px}
.heading{padding:10px 0 8px}
.intro{font-size:17px;color:var(--muted)}
.radar-card:before{opacity:.035}
.radar-card{box-shadow:inset 0 0 0 5px #163734,inset 0 0 0 6px #d4ba7415}
.radar-motto{font-size:clamp(20px,1.7vw,27px);font-weight:400}
.photo-identity,.photo-credit{background:#f4efe4e8}
.aircraft-visual{border-color:#8a938866}
:root[data-theme=dark] .masthead{background:transparent}
:root[data-theme=dark] .masthead-sub{color:var(--muted)}
@media(max-width:700px) and (orientation:portrait){
 body{padding:12px}.topbar{grid-template-columns:auto 1fr;gap:8px;padding-bottom:8px}
 .brand{font-size:29px;gap:7px}.masthead-sub{font-size:7px;letter-spacing:.19em;margin-top:3px}
 .edition>span,.edition svg{display:none}.edition{justify-content:flex-end}.topright{flex-direction:column;align-items:flex-end;gap:4px;font-size:8px}
 .heading{gap:8px;padding-top:9px}.intro{font-size:14px}.controls{gap:6px}.segmented button{font-size:12px;padding:10px 14px}
 .flight-title{font-size:49px}.radar-motto{font-size:23px}
}
@media(orientation:landscape) and (max-height:600px){
 body{padding:8px 14px}.topbar{grid-template-columns:auto 1fr;gap:12px;padding-bottom:6px}
 .brand{font-size:28px;gap:10px}.masthead-sub{font-size:7px;letter-spacing:.23em;margin-top:2px}
 .edition>span,.edition svg{display:none}.topright{font-size:9px}.heading{padding:6px 0}.intro{font-size:13px}
 .segmented button{font-size:11px;padding:8px 16px}.iconbtn,.frame-button{min-height:34px}
 .stage{grid-template-columns:minmax(180px,.82fr) minmax(0,1.8fr);gap:10px}
 .demo-notice{padding-bottom:6px;font-size:9px}.radar-motto{font-size:17px;font-weight:400}
}
@media(orientation:landscape) and (max-width:720px){
 .intro{display:none}.heading{justify-content:flex-end}.controls{width:100%;justify-content:space-between}
 .flight-sheet{grid-template-columns:1fr .65fr;gap:0 8px}.flight-title{font-size:34px}
 .flight-sub,.route-line{font-size:11px}.status-line{font-size:10px}.distance-number{font-size:33px}.distance-row{padding-left:8px}
 .distance-unit{font-size:13px}.metric .value{font-size:21px}.metrics{gap:8px}.metric+.metric{padding-left:8px}
 .feature-chip{font-size:9px}.illustration-match{font-size:8px}.radar-card .name{font-size:13px}
 .radar-motto{font-size:15px}.radar-bottom{letter-spacing:0}.radar-card .label{font-size:8px}
}

/* North-facing top-view airliner, rotated to its actual course. */
.plane{padding:6px;--aircraft-detail:#24433c}
.plane svg{width:27px;height:27px;filter:drop-shadow(0 1px 1px #071c1860)}
.plane.selected svg{width:36px;height:36px}
.aircraft-mark{display:grid;place-items:center;--aircraft-detail:var(--surface)}
.aircraft-mark svg{width:30px;height:30px}

/* Clear instrument scope, without decorative geography. */
.radar{background:radial-gradient(circle,#29473c 0,#1a342e 62%,#152e29 72%,transparent 72.5%)}
.chart-graticule path{opacity:.075;stroke:#d6d6a1}
.radar-sweep{background:conic-gradient(from 0deg,transparent 0deg,#b8cd7308 27deg,#c5d78b1c 40deg,transparent 41deg)}

/* Georeferenced map tiles beneath the instrument markings. */
.radar-map{position:absolute;inset:0;border-radius:50%;overflow:hidden;pointer-events:none;opacity:.7;filter:grayscale(1) invert(1) sepia(1) hue-rotate(45deg) saturate(.4) brightness(1.5)}
.radar-map img{position:absolute;max-width:none}
.radar-chart{z-index:1}.radar-sweep{z-index:2}.radar-reading{z-index:6}
.map-credit{font-size:8px;letter-spacing:0;color:#e0d6b0;text-underline-offset:2px}
.chart-key{flex-wrap:wrap;align-items:center}
.chart-graticule path{opacity:.04}.chart-rings circle{stroke:#dbc787;opacity:.85}
/* Keep geography subdued and the radar readings crisp. */
.radar-map{opacity:.48;filter:grayscale(1) invert(1) sepia(1) hue-rotate(45deg) saturate(.35) brightness(1.15)}
.chart-rings circle{stroke:#ead39a;opacity:.9;stroke-width:2.1}
.chart-rings circle:last-of-type{stroke-width:3}
.chart-axis path{stroke:#ead39a;opacity:.7;stroke-width:1.8}
.chart-tick{stroke:#ead39a;opacity:.7}.chart-tick.major{opacity:1}
.ring-number,.bearing-number{fill:#f0dfb4;opacity:1;paint-order:stroke;stroke:#17352e;stroke-width:3;stroke-linejoin:round}
.chart-cardinal{fill:#fff1ce;paint-order:stroke;stroke:#17352e;stroke-width:4}
.center-label{fill:#fff1ce;paint-order:stroke;stroke:#17352e;stroke-width:4}
.chart-center{stroke:#fff1ce;fill:#16362d}.center-reticle{stroke:#fff1ce}
.plane{color:#fff0c7}.plane svg{filter:drop-shadow(0 0 1px #10251f) drop-shadow(0 2px 2px #10251f)}
.plane.selected{color:#ffe095}.plane.selected svg{filter:drop-shadow(0 0 2px #10251f) drop-shadow(0 2px 3px #10251f)}
.flight-map-label{fill:#fff1cf;stroke:#102c25;stroke-width:8}
.selected-bearing{stroke:#ffe095;opacity:1;stroke-width:2.6}.selected-ring{stroke:#ffe095;stroke-width:2.2}.selected-ring.outer{opacity:.8}
.radar-reading{color:#f0dfb4;opacity:1;background:#112d25dc;padding:5px 7px;border:1px solid #ccb37845}
.radar-reading span:first-child{color:#fff1cf}
.chart-key,.radar-bottom{color:#e2d1a5}.radar-card .section-side{color:#e2d1a5;opacity:1}
@media(orientation:landscape) and (max-height:600px){.radar-reading{padding:3px 4px}}

/* Gentle movement for the background display; transforms avoid costly repaints. */
.aircraft-flight{position:absolute;inset:0;z-index:2;pointer-events:none}
.has-photo .aircraft-flight{animation:scene-enter 1.2s ease-out both}
.has-photo:not(.animated-aircraft) .aircraft-photo{animation:poster-drift 18s ease-in-out infinite alternate}
.animated-aircraft{background:#567b80 url('assets/lisboa-motion.jpg') center/cover no-repeat}
.animated-aircraft .aircraft-photo{position:absolute;width:88%;height:83%;left:6%;top:0;object-fit:contain;animation:aircraft-float 7s ease-in-out infinite}
.animated-aircraft.has-photo:after{content:'';position:absolute;left:-40%;top:8%;width:150%;height:40%;opacity:.18;background:radial-gradient(ellipse at 20% 50%,#fff1d0 0,transparent 25%),radial-gradient(ellipse at 80% 40%,#fff1d0 0,transparent 18%);animation:cloud-drift 42s linear infinite;pointer-events:none;z-index:1}
.plane{transition:left 2.5s ease,top 2.5s ease}.plane svg{transition:transform 2.5s ease}
@keyframes aircraft-float{0%,100%{transform:translate(0,0) rotate(-.25deg)}50%{transform:translate(-.8%,-2%) rotate(.25deg)}}
@keyframes poster-drift{from{transform:scale(1.025) translateX(-.3%)}to{transform:scale(1.055) translateX(.3%)}}
@keyframes scene-enter{from{opacity:0;transform:translateX(3%)}to{opacity:1;transform:translateX(0)}}
@keyframes cloud-drift{from{transform:translateX(0)}to{transform:translateX(35%)}}
@media(prefers-reduced-motion:reduce){.aircraft-flight,.aircraft-photo,.animated-aircraft.has-photo:after{animation:none!important}.plane,.plane svg{transition:none!important}}
