@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;background:#07121a;color:#d9e7eb;font-synthesis:none;font-size:13px;--panel:#0b1a24;--panel2:#0e202b;--line:#203843;--muted:#77939f;--sub:#506e7b;--cyan:#50c8de;--teal:#89e5eb;--amber:#f1bc73;--green:#80cab0}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:radial-gradient(ellipse 70% 27% at 50% -3%,#102735 0,transparent 76%),#07121a}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid #50c8de;outline-offset:3px}a{color:inherit;text-decoration:none}.app-shell{max-width:1540px;margin:0 auto;padding:0 30px 32px}.topbar{height:85px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #19303b;margin-bottom:30px}.brand{display:flex;gap:13px;align-items:center}.brand-icon{position:relative;width:35px;height:35px;border:1px solid #3d7b8c;border-radius:50%;box-shadow:inset 0 0 0 4px #0f2732}.brand-icon:before,.brand-icon:after{content:"";position:absolute;border:1px solid #377185;border-radius:50%;inset:8px}.brand-icon:after{inset:15px;background:#50c8de;border:0}.brand-icon span:nth-child(1){position:absolute;left:50%;top:-6px;width:1px;height:46px;background:#377185;transform:rotate(60deg)}.brand-icon span:nth-child(2){position:absolute;left:-5px;top:50%;width:45px;height:1px;background:#377185}.brand-icon span:nth-child(3){position:absolute;width:12px;height:1px;background:#59ddf0;left:18px;top:13px;transform:rotate(-45deg)}.eyebrow{font-family:"SFMono-Regular",Consolas,"Courier New",monospace;font-size:9px;color:#78a0ac;font-weight:700;letter-spacing:1.7px}.sep{color:#416a7a;padding:0 3px}h1{font-size:23px;line-height:1.18;margin:4px 0 0;letter-spacing:2.3px;font-weight:800}h1 span{color:var(--cyan)}h1 em{font-size:11px;font-style:normal;color:#718f9d;letter-spacing:1.5px;vertical-align:4px}.top-right{display:flex;gap:18px;align-items:center;font:10px Consolas,monospace;letter-spacing:.8px;color:#7897a3}.live{color:#92d8bf}.live i,.pulse-dot{display:inline-block;width:6px;height:6px;background:#83d4b4;border-radius:50%;margin-right:6px;box-shadow:0 0 8px #71d7b66d}.github-link{border-left:1px solid #2b4855;padding-left:17px;color:#b4cbd4}.section-head{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:17px}.section-head p{max-width:410px;font-size:12px;color:var(--muted);line-height:1.6;margin:0}.section-head h2,.section-title-row h2{margin:5px 0 0;font-size:20px;font-weight:650;letter-spacing:-.45px}.muted{color:#65818d;font-weight:400}.panel{background:linear-gradient(148deg,#0d202b,#091923 76%);border:1px solid var(--line);border-radius:6px;box-shadow:0 6px 26px #00000019}.kpi-bar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-bottom:12px}.kpi{padding:13px 15px 12px;min-height:78px;border:1px solid #1d3845;background:linear-gradient(140deg,#0e212c,#0a1b25);border-radius:5px;position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;top:0;left:0;width:25px;height:1px;background:#3aafc9}.kpi-label{font:9px Consolas,"Courier New",monospace;color:#8aa2ac;letter-spacing:1px;white-space:nowrap}.kpi-value{margin:7px 0 2px;color:#eef7fa;font-size:21px;font-weight:720;white-space:nowrap;letter-spacing:-.6px}.kpi-value.small{font-size:17px}.kpi-sub{font-size:10px;color:#658896;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-panel{padding:12px 14px;margin-bottom:25px}.timeline-top{display:flex;justify-content:space-between;align-items:center;gap:12px}.card-head{font:700 10px Consolas,"Courier New",monospace;color:#b6d8e1;letter-spacing:1.2px;display:flex;align-items:center;flex-wrap:wrap;gap:10px}.card-head small{color:#60818e;font-size:9px;font-weight:500;letter-spacing:.5px}.dot-bracket{color:var(--cyan);font-size:14px}.small-action{font:10px Consolas,monospace;color:#7eacbc;background:transparent;border:1px solid #254251;border-radius:3px;padding:7px 10px;white-space:nowrap}.small-action:hover{color:#c9f5ff;border-color:#4ab8cf;background:#0d2a35}.year-strip{display:flex;gap:5px;overflow:auto;scrollbar-color:#2b5260 transparent;scrollbar-width:thin;margin:13px 0 8px;padding-bottom:5px}.year-pill{background:#0b1c27;color:#819ba8;border:1px solid #213a47;border-radius:3px;min-width:51px;padding:7px 10px;text-align:center;font:11px Consolas,monospace;transition:.15s}.year-pill:first-child{min-width:56px}.year-pill:hover{border-color:#54b2c4;color:#b9eff8}.year-pill.active{background:#163a47;border-color:#49aec4;color:#d1fbff;box-shadow:inset 0 -2px 0 #51c1d9}.year-context{display:flex;justify-content:space-between;gap:12px;font:9px Consolas,monospace;color:#6d8d98;letter-spacing:.35px}.section-title-row{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:0 0 14px}.hint,.analytics-hint{font:9px Consolas,monospace;color:#65838f;letter-spacing:.4px}.map-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 11px;margin-bottom:9px}.toolbar-cluster{display:flex;align-items:center;gap:9px}.toolbar-label{font:9px Consolas,monospace;color:#7794a0;white-space:nowrap;letter-spacing:.6px}.segment{display:flex;align-items:center;border:1px solid #25414e;padding:2px;gap:2px;border-radius:4px;background:#071924}.segment button{color:#7692a0;font:10px Consolas,monospace;border:0;background:transparent;padding:7px 11px;border-radius:2px;letter-spacing:.4px}.segment button:hover{color:#ddf7fc}.segment button.active{color:#b9f7ff;background:#194252;box-shadow:inset 0 0 0 1px #316b7b}.segment.subtle button.active{background:#253743;box-shadow:inset 0 0 0 1px #466373}.search-wrap{margin-left:auto;display:flex;align-items:center;gap:8px;border:1px solid #294450;border-radius:3px;background:#071721;padding:0 8px;min-width:240px;height:32px}.search-wrap span{font-size:18px;color:#80b4c4}.search-wrap input{width:100%;min-width:80px;border:0;outline:0;background:transparent;color:#d4e9ee;font:10px Consolas,monospace;letter-spacing:.3px}.search-wrap input::placeholder{color:#64818d}.search-wrap kbd{color:#476a77;font:13px Consolas,monospace}.radar-grid{display:grid;grid-template-columns:minmax(0,1fr) 297px;gap:9px}.map-panel{overflow:hidden}.map-heading{padding:10px 12px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #1c3340;font:10px Consolas,monospace;color:#8ca9b5;letter-spacing:1px;gap:10px}.map-heading-left{display:flex;align-items:center;gap:8px}.map-heading-left strong{font-weight:650;color:#bbdbe2}.map-heading-left small{font-size:9px;color:#698b98}.map-heading>span:last-child{font-size:9px;color:#618995}.map-stage{height:430px;position:relative;overflow:hidden;background:radial-gradient(ellipse 55% 65% at 52% 49%,#142c36 0,#0c202b 65%,#091a24 100%);cursor:grab;touch-action:none}.map-stage.dragging{cursor:grabbing}.map-stage svg{width:100%;height:100%;display:block;user-select:none}.map-control,.map-dot{cursor:pointer}.land{fill:#1b3a46;stroke:#335865;stroke-width:.55;fill-opacity:.9}.coastline{fill:none;stroke:#426472;stroke-width:.45;opacity:.33}.graticule{fill:none;stroke:#2b4553;stroke-width:.65;opacity:.48;stroke-dasharray:2 6}.equator{stroke:#426977;stroke-width:.55;stroke-dasharray:4 8;opacity:.5}.route{fill:none;stroke:#56bfd7;stroke-width:1.15;opacity:.37;pointer-events:none;vector-effect:non-scaling-stroke}.route.future{stroke:#e7b371;stroke-width:1.15;stroke-dasharray:4 5;opacity:.62}.route.selected{stroke:#bafaff;stroke-width:2.4;opacity:1;filter:drop-shadow(0 0 4px #6edcec)}.route.future.selected{stroke:#ffdba4}.route-hit{stroke:transparent;stroke-width:12;fill:none;cursor:pointer;vector-effect:non-scaling-stroke}.airport-dot{fill:#65d1e8;stroke:#d7fcff;stroke-width:.65;cursor:pointer}.airport-dot:hover{fill:#fff;stroke:#56dff8;stroke-width:2}.airport-halo{fill:none;stroke:#72d8e5;stroke-width:.75;opacity:.18}.place-dot{fill:#9ddcaa;stroke:#dbffdb;stroke-width:.65;cursor:pointer;opacity:.92}.place-dot:hover{fill:#fff;stroke:#9ddcaa;stroke-width:2}.map-tooltip{position:absolute;z-index:5;pointer-events:none;background:#071721;border:1px solid #36748a;border-radius:2px;padding:8px 10px;box-shadow:0 6px 26px #0009;font:10px Consolas,monospace;color:#c2eff6;max-width:min(330px,85%);line-height:1.5}.map-tooltip b{color:#d8fcff;font-size:11px}.map-tooltip small{color:#83adba}.hidden{display:none!important}.map-controls{position:absolute;right:13px;bottom:16px;display:flex;flex-direction:column;gap:4px}.map-controls button{height:27px;width:27px;font:17px Consolas,monospace;border:1px solid #325563;color:#a9dfea;background:#081c27;border-radius:2px}.map-controls button:hover{background:#173847}.map-watermark{position:absolute;left:12px;bottom:13px;color:#72909c;font:9px Consolas,monospace;letter-spacing:1px;pointer-events:none}.map-watermark span{color:#47b8cf}.map-footer{min-height:39px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #203a47;padding:9px 12px;gap:10px;font:9px Consolas,monospace;color:#6d95a2}.legend{display:flex;align-items:center;flex-wrap:wrap;gap:14px}.legend span{display:flex;align-items:center;gap:6px}.line-key{width:18px;height:2px;background:#59c0d9}.line-key.future{background:repeating-linear-gradient(to right,#e4b575 0 4px,transparent 4px 7px)}.dot-key{width:7px;height:7px;border-radius:50%;background:#5bc8e0}.dot-key.places{background:#9ed9ac}.intel-panel{display:flex;flex-direction:column;min-height:0;padding:16px 15px;overflow:hidden}.inspector-top{display:flex;justify-content:space-between;align-items:center;font:9px Consolas,monospace;color:#7196a5;letter-spacing:1px}.inspector-icon{font-size:16px;color:#61d1e9}.inspector-code{font:700 28px Consolas,"Courier New",monospace;color:#def7fb;margin:20px 0 4px;line-height:1.15;letter-spacing:.5px;overflow-wrap:anywhere}.inspector-code.small{font-size:19px}.inspector-name{color:#8eaeb9;font-size:12px;line-height:1.5;margin:0 0 12px}.inspector-divider{height:1px;background:#244451;margin:13px 0}.inspector-metric{padding:9px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #1a3440;font:10px Consolas,monospace}.inspector-metric span{color:#73939e}.inspector-metric strong{color:#daf0f6;text-align:right;font-size:11px}.inspector-foot{color:#6c93a0;margin-top:auto;padding-top:15px;font:10px/1.7 Consolas,monospace}.inspector-note{padding:10px;background:#102a35;color:#9abfc9;border-left:2px solid #4ca8bb;font:10px/1.6 Consolas,monospace;margin-top:12px}.inspector-back{padding:6px 0;background:transparent;border:0;color:#83d1dc;font:10px Consolas,monospace;text-align:left;margin-top:12px}.analytics-section,.log-section{margin-top:27px}.charts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.chart-card{min-height:252px;padding:14px}.chart-inner{min-height:188px;margin-top:16px;position:relative}.bar-chart{height:164px;display:flex;align-items:stretch;gap:5px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#244a58 transparent;padding-bottom:3px}.bar-col{flex:1;min-width:19px;display:flex;flex-direction:column;align-items:center;justify-content:end;gap:5px;padding:0 1px;background:transparent;border:0;color:#7e9aa5;position:relative}.bar-col:hover{color:#d6faff}.bar-stack{height:130px;display:flex;flex-direction:column;justify-content:end;width:100%;gap:1px}.bar-past,.bar-future{display:block;width:100%;min-height:0;background:#397a91;transition:background .14s}.bar-future{background:#c9965e}.bar-col:hover .bar-past,.bar-col.active .bar-past{background:#62d5ef}.bar-col.active .bar-future{background:#efc489}.bar-col.active:after{content:"";position:absolute;bottom:22px;width:100%;height:1px;background:#66cfe6}.bar-label{font:9px Consolas,monospace;white-space:nowrap}.bar-label.strong{color:#bcdfeb}.bar-caption{display:flex;justify-content:space-between;color:#678f9c;font:9px Consolas,monospace;margin-top:7px;gap:10px}.svg-chart{width:100%;height:165px;display:block}.chart-grid-line{stroke:#23424f;stroke-width:.75;stroke-dasharray:3 5}.chart-plot{fill:none;stroke:#5dcee7;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart-area{fill:#2b8095;opacity:.11}.chart-dot{fill:#74dded}.axis-label{font:11px Consolas,monospace;fill:#7797a4}.chart-empty{color:#708f9b;font:11px/1.8 Consolas,monospace;padding-top:48px}.top-airports{display:flex;flex-direction:column;gap:12px;margin-top:4px}.airport-rank{display:grid;grid-template-columns:37px 1fr 42px;gap:10px;align-items:center;font:10px Consolas,monospace}.airport-rank strong{color:#bbdce5}.airport-rank .track{height:7px;background:#142f3b;border:1px solid #224351}.airport-rank .fill{height:100%;background:linear-gradient(90deg,#256a84,#5dcce2)}.airport-rank .count{text-align:right;color:#96b9c5}.lower-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:11px}.dna-panel,.records-panel{padding:14px}.dna-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:13px}.dna-unit{border:1px solid #203e4b;background:#0a1c27;border-radius:3px;padding:13px 10px;min-height:107px}.dna-icon{font-size:14px;color:#54c5dc}.dna-value{font:700 21px Consolas,monospace;letter-spacing:-.6px;color:#e1f8ff;margin:10px 0 6px;white-space:nowrap}.dna-label{font:10px Consolas,monospace;color:#93b5be}.panel-foot{font:9px/1.6 Consolas,monospace;color:#658795;margin-top:12px}.panel-foot b{color:#8db8c7;font-weight:500}.records{margin-top:11px}.record{padding:10px 2px;border-bottom:1px solid #203b47;display:flex;align-items:center;justify-content:space-between;gap:14px;font:10px Consolas,monospace}.record:last-child{border:0}.record span{color:#88a4ae}.record strong{color:#d6ecf1;font-size:11px;text-align:right}.log-section{margin-top:29px}.log-count{font:10px Consolas,monospace;color:#85a9b6}.log-panel{overflow:hidden}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:670px}th,td{text-align:left;padding:11px 15px;font:10px Consolas,monospace;border-bottom:1px solid #1a3440;white-space:nowrap}th{color:#7e9dab;letter-spacing:.6px;background:#10252f;font-size:9px}td{color:#b9d5df}tbody tr{cursor:pointer}tbody tr:hover{background:#16313d}.num{text-align:right}.route-id{font-weight:700;color:#c4f4ff}.status-pill{padding:3px 7px;border:1px solid #345e70;border-radius:2px;color:#83cddc;font-size:9px}.status-pill.future{color:#e4ba7e;border-color:#6f593b}.table-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 15px;font:9px Consolas,monospace;color:#688b9a}footer{display:flex;justify-content:space-between;gap:20px;padding:25px 0 0;margin-top:34px;border-top:1px solid #19323f;font:9px Consolas,monospace;letter-spacing:.6px;color:#567988}
@media(max-width:1100px){.app-shell{padding:0 18px 30px}.radar-grid{grid-template-columns:minmax(0,1fr) 255px}.kpi{padding:11px}.kpi-value{font-size:18px}.dna-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:840px){.topbar{height:76px}.top-date{display:none}.section-head p{display:none}.radar-grid{grid-template-columns:1fr}.map-stage{height:380px}.intel-panel{min-height:200px}.inspector-code{margin:9px 0 4px}.inspector-foot{margin-top:8px}.kpi-bar{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi{min-height:70px}.charts-grid{grid-template-columns:1fr 1fr}.lower-grid{grid-template-columns:1fr}.dna-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:620px){.app-shell{padding:0 11px 22px}.topbar{margin-bottom:19px;height:67px}.brand-icon{width:27px;height:27px;flex-shrink:0}.brand-icon span:nth-child(1){height:36px;top:-5px}.brand-icon span:nth-child(2){width:36px;left:-5px}h1{font-size:17px;letter-spacing:1.1px}h1 em{font-size:9px;vertical-align:2px}.eyebrow{font-size:8px;letter-spacing:1px}.top-right{gap:7px}.github-link,.top-date{display:none}.live{font-size:9px}.section-head h2,.section-title-row h2{font-size:18px}.intro-head{margin-bottom:12px}.kpi-bar{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.kpi{padding:10px 8px;min-height:72px}.kpi-label{font-size:8px;letter-spacing:.2px}.kpi-value{font-size:17px;margin:8px 0 3px}.kpi-value.small{font-size:14px}.kpi-sub{font-size:9px}.timeline-panel{padding:11px 9px;margin-bottom:19px}.card-head small{font-size:8px}.year-strip{margin-top:11px}.year-context{font-size:8px}.year-context span:last-child{display:none}.hint,.analytics-hint{display:none}.map-toolbar{padding:9px;gap:8px}.toolbar-cluster{flex-wrap:wrap;flex:1 1 100%;gap:7px}.toolbar-label{min-width:81px}.segment{flex:1}.segment button{flex:1;padding:7px 6px;font-size:9px}.search-wrap{margin-left:0;flex:1;min-width:100%;height:33px}.map-stage{height:325px}.map-heading{font-size:9px;padding:9px}.map-heading>span:last-child{display:none}.legend{gap:9px}.map-footer{font-size:8px;align-items:start;flex-wrap:wrap}.intel-panel{padding:13px}.charts-grid{grid-template-columns:1fr}.chart-card{min-height:238px}.chart-inner{min-height:170px}.lower-grid{gap:8px}.dna-grid{gap:5px;grid-template-columns:repeat(2,1fr)}.dna-unit{min-height:95px}.dna-value{font-size:20px}.log-section{margin-top:23px}footer{flex-direction:column;gap:7px}.section-title-row{margin-bottom:11px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}


/* ------------------------------------------------------------
   Travel Radar v2.1 — MAP FIRST / INTEL CONSOLE
   Dense, technical navigation; full-width vector map; archive below.
   ------------------------------------------------------------ */
:root{--tech:'IBM Plex Mono',Consolas,'Courier New',monospace;--number:'JetBrains Mono',Consolas,monospace;--heading:'Space Grotesk',Inter,Arial,sans-serif}
body{background:#050f16;color:#d5ebf1}
.app-shell{max-width:none;width:100%;padding:0 16px 34px}
.topbar{height:58px;margin-bottom:8px;border-color:#193746}
.topbar h1{font-family:var(--heading);font-size:20px;letter-spacing:1.4px}
.eyebrow,.card-head,.toolbar-label,.small-action,.inspector-top,.kpi-label,.year-context,.year-tick,.map-footer,.map-heading,.map-tooltip,.archive-topline{font-family:var(--tech)}
.timeline-panel{padding:7px 12px 4px;margin-bottom:9px;border-radius:3px;background:#0a1c27}
.timeline-top{min-height:25px}.timeline-top .card-head{font-size:10px}.timeline-top .card-head small{font-size:8px}
.year-strip{margin:2px 0 0;align-items:end;gap:3px;min-height:55px;padding:0 0 2px;scrollbar-width:thin}
.year-pill.year-signal{background:transparent!important;border:1px solid transparent;min-width:45px;flex:1 0 45px;padding:4px 3px 2px;display:flex;align-items:center;justify-content:flex-end;flex-direction:column;gap:4px;height:53px;box-shadow:none!important;border-radius:2px;transition:background .15s ease}
.year-pill.year-signal:hover{background:#0d303d!important;border-color:#305664}
.year-pill.year-signal.active{background:#133240!important;border-color:#4e9eb4!important}
.year-pill .signal-bar{display:flex;align-items:end;justify-content:end;flex-direction:column;background:linear-gradient(0deg,#367f94,#64d1e5);width:20px;min-height:3px;max-height:29px;border-radius:1px 1px 0 0;overflow:hidden}
.year-pill.active .signal-bar{background:linear-gradient(0deg,#3c9db6,#9cf0ff);box-shadow:0 0 12px #3fb2d144}
.signal-future{display:block;width:100%;background:#e6b96e;flex-shrink:0;min-height:0}
.year-tick{color:#8eabb9;font-size:8px;letter-spacing:0;line-height:11px;font-variant-numeric:tabular-nums}
.year-pill.active .year-tick{color:#c3f5ff;font-weight:700}
.year-pill.year-all{min-width:42px;flex:0 0 42px;height:48px;align-self:center;display:flex;align-items:center;justify-content:center;padding:0 4px;font:600 10px var(--tech);background:#09212b}
.year-pill.year-all.active{background:#164050}
.year-context{display:none}
.radar-section{margin-top:0}
.radar-section .section-title-row{margin:0 0 5px;align-items:center}
.radar-section .section-title-row .eyebrow{display:none}
.radar-section .section-title-row h2{font-family:var(--heading);font-size:14px;letter-spacing:1.2px;margin:0;color:#def7fb}
.radar-section .section-title-row h2 .muted{font-size:10px;font-family:var(--tech);letter-spacing:.2px}
.map-toolbar{margin-bottom:5px;padding:5px 9px;gap:7px;background:#081c26;border-radius:3px;min-height:39px}
.map-toolbar .segment button{padding:5px 9px;font-family:var(--tech);font-size:9px;letter-spacing:.3px}
.map-toolbar .toolbar-label{font-size:8px;min-width:auto}
.map-toolbar .search-wrap{height:27px;min-width:192px}
.map-toolbar .search-wrap input{font-family:var(--tech);font-size:9px}
.radar-grid{display:block;position:relative}
.map-panel{position:relative;background:#07151e;border:1px solid #315161;border-radius:4px}
.map-heading{height:28px;min-height:28px;padding:5px 11px;background:#081a23;border-bottom:1px solid #203c49;font:9px var(--tech);letter-spacing:.5px}
.map-stage{height:clamp(450px,calc(100dvh - 218px),950px);cursor:auto!important;touch-action:auto;background:#071621}
.map-stage #worldMap{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.map-stage .maplibregl-map{font-family:var(--tech)!important}
.map-stage .maplibregl-canvas{outline:none}
.map-stage .maplibregl-control-container .maplibregl-ctrl-attrib{font-family:var(--tech);font-size:9px!important;background:#091820a8!important;color:#7d9dac!important}
.map-stage .maplibregl-control-container .maplibregl-ctrl-attrib a{color:#95bdc7!important}
.map-load-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#71b6ca;font:11px var(--tech);letter-spacing:1px;z-index:1;pointer-events:none;text-align:center}
.map-controls{right:12px;bottom:32px;z-index:6}
.map-controls .focus-map{width:51px;font:700 9px var(--tech);color:#91dded;letter-spacing:0;height:26px}
.map-controls button{background:#081e29dc;border-color:#346173}
.map-tooltip{z-index:8;background:#061721ed;border:1px solid #296175;font-family:var(--tech);padding:7px 9px;border-radius:2px;max-width:min(390px,85%);font-size:10px;box-shadow:0 6px 15px #000a}
.map-footer{min-height:28px;padding:6px 11px;background:#081821}
.legend{gap:11px}
/* Drawer overlays the map only when a feature is selected. */
.intel-panel{position:absolute;right:10px;top:39px;bottom:38px;width:min(320px,42%);z-index:10;background:linear-gradient(170deg,#09202cfa,#07151efa);border:1px solid #3a697d;border-radius:3px;box-shadow:0 12px 40px #000b;backdrop-filter:blur(5px);overflow-y:auto;transform:translateX(calc(100% + 16px));opacity:0;visibility:hidden;pointer-events:none;transition:transform .18s ease,opacity .18s ease,visibility .18s}
.intel-panel.visible{transform:translateX(0);opacity:1;visibility:visible;pointer-events:auto}
.intel-panel .inspector-code{font-family:var(--number)}
.inspector-close{position:sticky;top:0;align-self:flex-end;z-index:5;width:24px;height:24px;border:1px solid #345462;background:#0a2632;color:#b1deeb;font:20px var(--tech);border-radius:2px;line-height:19px;margin:0 0 -10px auto}
.inspector-close:hover{background:#153b4a}
.archive-overview{margin-top:8px;padding:0}
.archive-topline{display:flex;justify-content:space-between;align-items:center;margin:0 0 5px;color:#89b3bf;font-size:9px;letter-spacing:1px;font-weight:700}
.archive-topline span:last-child{font-size:8px;color:#648b9b;font-weight:400}
.archive-overview .kpi-bar{margin:0;gap:5px;grid-template-columns:repeat(6,minmax(0,1fr))}
.archive-overview .kpi{min-height:52px;padding:8px 10px;border-radius:2px;background:#0b1d28;border-color:#244452}
.archive-overview .kpi:before{width:10px;background:#50c8de}
.archive-overview .kpi-label{font-size:8px;letter-spacing:.5px}
.archive-overview .kpi-value{font:700 17px var(--number);margin:4px 0 1px}
.archive-overview .kpi-value.small{font-size:14px}
.archive-overview .kpi-sub{font-size:8px}
.analytics-section{margin-top:20px}
.analytics-section .section-title-row h2{font-family:var(--heading)}
@media(max-width:900px){.app-shell{padding:0 10px 24px}.map-stage{height:clamp(430px,65dvh,760px)}.archive-overview .kpi-bar{grid-template-columns:repeat(3,minmax(0,1fr))}.intel-panel{width:min(330px,64%)}}
@media(max-width:620px){.topbar{height:52px;margin-bottom:7px}.app-shell{padding:0 6px 22px}.timeline-panel{padding:5px 6px;margin-bottom:5px}.timeline-top .card-head small{display:none}.year-strip{min-height:54px;gap:2px}.year-pill.year-signal{min-width:37px;flex:0 0 37px;height:49px}.year-tick{font-size:8px}.radar-section .section-title-row{padding:0 3px;min-height:22px}.radar-section .section-title-row .hint{display:none}.map-toolbar{padding:6px;gap:5px}.map-toolbar .toolbar-cluster{flex:1 1 auto;gap:5px;flex-wrap:nowrap}.map-toolbar .toolbar-label{display:none}.map-toolbar .segment button{font-size:9px;padding:6px 4px}.map-toolbar .search-wrap{min-width:100%;margin:0;height:29px}.map-stage{height:clamp(410px,67dvh,710px)}.map-heading{padding:5px 8px}.map-footer{gap:6px;padding:5px 7px}.legend{gap:7px}.map-watermark{font-size:7px}.map-controls{right:7px;bottom:29px}.map-controls button{height:28px}.intel-panel{position:absolute;top:auto;right:5px;left:5px;bottom:33px;width:auto;max-height:min(410px,72%);transform:translateY(calc(100% + 20px));padding:10px 12px}.intel-panel.visible{transform:translateY(0)}.archive-overview .kpi-bar{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.archive-overview .kpi{min-height:54px;padding:8px 7px}.archive-overview .kpi-value{font-size:15px}.archive-overview .kpi-value.small{font-size:12px}.archive-overview .kpi-label{font-size:7px}.archive-overview .kpi-sub{font-size:8px}.archive-topline{padding:0 3px}.archive-topline span:last-child{font-size:7px}.section-title-row h2{font-size:16px}}
@media(prefers-reduced-motion:reduce){.intel-panel{transition:none}}

.map-system-meta{display:flex;align-items:center;gap:14px;font:9px var(--tech);letter-spacing:.4px}
#mapZoomLevel{color:#8fd8e8;font-family:var(--number);white-space:nowrap}
@media(max-width:620px){.map-system-meta #mapLayerLabel{display:none}.map-heading .map-system-meta{display:flex!important}}

/* TRAVEL RADAR v2.2 — clean intel map, dense chart analytics, mobile width */
html,body{max-width:100%;overflow-x:clip}
.app-shell,main,.radar-section,.radar-grid,.map-panel,.charts-grid,.chart-card,.chart-inner,.archive-overview,.log-section{min-width:0;max-width:100%}
.map-stage{isolation:isolate}
.map-stage #worldMap{overflow:hidden}
.map-tooltip{max-width:min(285px,calc(100% - 20px));padding:6px 8px;background:#06151deF;border:1px solid #33748b;box-shadow:0 4px 18px #0008;letter-spacing:.02em}
.intel-panel{z-index:8}
.inspector-subhead{font:600 9px var(--tech);letter-spacing:.1em;color:#81b5c6;margin:13px 0 7px}
.connected-routes{display:grid;gap:3px}
.connected-routes button{display:flex;justify-content:space-between;gap:8px;border:1px solid #1e4654;background:#0b2732;color:#aed8e3;border-radius:2px;padding:8px 7px;font:9px var(--number);text-align:left}
.connected-routes button b{font-size:8px;color:#74cadd;white-space:nowrap}
.connected-routes button:hover{background:#153847;border-color:#3f9ab0}
/* Higher-fidelity, readable and interactive distance chart. */
.distance-chart-wrap{position:relative;width:100%;min-width:0}
.distance-scroll{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#2b5665 transparent}
.distance-svg{display:block;width:100%;height:191px;min-width:450px;overflow:visible;font-family:var(--number)}
.distance-grid{stroke:#244454;stroke-width:.8;stroke-dasharray:3 5}
.distance-axis-y,.distance-axis-x{font:10px var(--number);fill:#81a8b9}
.distance-area{fill:url(#distanceFill)}
.distance-path{fill:none;stroke:#60d8ed;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.distance-marker{fill:#7de6f7;stroke:#08202b;stroke-width:1.3;pointer-events:none}
.distance-target{cursor:pointer;pointer-events:all}
.distance-point:hover .distance-marker,.distance-point:focus-visible .distance-marker,.distance-point.selected .distance-marker{fill:#e4fbff;stroke:#66d8ee;stroke-width:2;r:4.4}
.distance-point:focus-visible{outline:none}
.distance-peak{fill:#b1e9f6;font:700 10px var(--number);letter-spacing:.01em}
.distance-popup{position:absolute;z-index:2;white-space:nowrap;background:#081a23;border:1px solid #377c92;border-radius:2px;padding:6px 8px;color:#d8f8ff;font:700 10px var(--number);pointer-events:none;box-shadow:0 5px 16px #0009}
.direction-tag{display:block;margin-top:3px;color:#668c9b;font:8px var(--tech);letter-spacing:.04em}
@media(max-width:900px){
 .charts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .map-stage{height:clamp(440px,69dvh,850px)}
 .chart-card{min-width:0}
}
@media(max-width:700px){
 .app-shell{width:100%;max-width:100%;padding:0 7px 26px}
 .charts-grid,.lower-grid{grid-template-columns:minmax(0,1fr)}
 .chart-card{padding:11px;min-height:220px}
 .chart-inner{margin-top:10px;min-width:0}
 .map-toolbar{width:100%;min-width:0;display:grid;grid-template-columns:1fr;gap:5px}
 .map-toolbar .toolbar-cluster{min-width:0;display:flex;gap:5px}
 .map-toolbar .segment{min-width:0;max-width:100%}
 .map-toolbar .segment button{min-width:0;white-space:nowrap}
 .map-toolbar .search-wrap{min-width:0;width:100%}
 .year-strip{width:100%;overflow-x:auto;min-width:0}
 .timeline-panel{min-width:0}
 .map-stage{height:clamp(430px,67dvh,740px)}
 .map-footer{overflow:hidden}
 .legend{flex-wrap:nowrap;overflow-x:auto;max-width:100%;white-space:nowrap;padding-bottom:2px}
 .map-footer>#mapCount{display:none}
 .archive-overview .kpi-bar{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
 .archive-overview .kpi-value{font-size:14px}
 .archive-overview .kpi-value.small{font-size:11px}
 .archive-overview .kpi{min-width:0;overflow:hidden}
 .dna-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .log-panel,.table-scroll{min-width:0;max-width:100%;overflow-x:auto}
 .distance-svg{width:580px;min-width:580px;height:193px}
 .distance-scroll{max-width:100%;touch-action:pan-x}
 .bar-caption{font-size:8px;flex-wrap:wrap}
 .intel-panel{left:5px;right:5px;bottom:33px;width:auto;max-width:none}
}
@media(max-width:380px){.app-shell{padding:0 5px 20px}.top-right .live{font-size:8px}.year-pill.year-signal{min-width:32px;flex-basis:32px}.map-toolbar .segment button{padding:6px 4px;font-size:8px}.archive-overview .kpi-sub{font-size:7px}}

/* TRAVEL RADAR v2.3 — flight history details and mobile-first readable flight cards */
.flight-time {color:#9ddbeb;font-weight:700}
.route-flights-list {display:grid;gap:4px;max-height:160px;overflow-y:auto;padding-right:3px}
.route-flight-unit {display:flex;justify-content:space-between;align-items:center;gap:8px;border-bottom:1px solid #203b47;padding:6px 1px;font:9px var(--number);color:#9cbdc9}
.route-flight-unit span:first-child {color:#cff2f9;font-weight:700}
.route-flight-unit span:last-child {white-space:nowrap;text-align:right}
.inspector-metric {align-items:baseline;gap:6px}
.inspector-metric span {min-width:0;max-width:59%;font-size:9px}
.inspector-metric strong {text-align:right;overflow-wrap:anywhere;font-size:10px}
.airport-rank {border:0;background:transparent;color:inherit;width:100%;cursor:pointer;text-align:initial;padding:3px 0;border-radius:2px}
.airport-rank:hover,.airport-rank:focus-visible {background:#163744}
/* On smaller screens, make the flight list cards rather than a wide, scrolling table. */
@media(max-width:700px){
 .log-panel {background:transparent;border:0;box-shadow:none;overflow:visible}
 .log-panel .table-scroll {overflow:visible;max-width:100%}
 .log-panel table {min-width:0;width:100%;display:block}
 .log-panel thead {display:none}
 .log-panel tbody {display:flex;flex-direction:column;gap:8px;width:100%}
 .log-panel tbody tr {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 7px;border:1px solid #25495a;border-radius:4px;background:#0b202b;padding:11px;min-width:0}
 .log-panel tbody tr:active {background:#133a4a}
 .log-panel tbody td {white-space:normal;overflow-wrap:anywhere;min-width:0;border:0;padding:0;font:11px/1.4 var(--number);text-align:left}
 .log-panel tbody td::before {content:attr(data-label);display:block;color:#6d9aad;font:8px/1.25 var(--tech);letter-spacing:.055em;margin-bottom:3px}
 .log-panel tbody td.route-id {grid-column:1 / -1;font-size:14px;font-weight:700;color:#c6f5fc}
 .log-panel tbody td.route-id::before {font-size:8px}
 .log-panel .direction-tag {display:inline;margin-left:8px;font-size:8px;font-weight:400}
 .log-panel tbody td:nth-child(4) {grid-column:1 / -1;color:#8eafbc;font-size:10px}
 .log-panel tbody td:nth-child(5) {grid-column:1 / -1}
 .log-panel tbody td:nth-child(7) {text-align:right}
 .log-panel tbody td:nth-child(7)::before {text-align:right}
 .log-panel .table-footer {padding:9px 3px;line-height:1.5}
 .distance-svg {width:100%;min-width:0;height:auto;max-height:205px;aspect-ratio:680/202}
 .distance-scroll {overflow-x:hidden}
}
@media(max-width:380px){.log-panel tbody tr{padding:9px;gap:7px 5px}.log-panel tbody td{font-size:10px}.distance-svg{max-height:165px}}

@media(max-width:700px){
 .log-panel tbody tr {gap:5px 7px;padding:9px 10px}
 .log-panel tbody td::before {margin-bottom:2px}
 .log-panel tbody td.route-id {font-size:13px}
 .log-panel tbody td:nth-child(5) {grid-column:1 / -1}
 .log-panel tbody td:nth-child(4) {font-size:9px}
 .log-panel .direction-tag {font-size:7px}
}

/* TRAVEL RADAR v2.4 — readable air routes, wheel control and country intelligence */
.country-picker{display:flex;align-items:center;min-width:130px;height:33px}
.country-picker select{max-width:160px;width:100%;height:100%;padding:0 7px;background:#071b26;border:1px solid #2d5463;border-radius:2px;color:#9de4f3;font:700 9px var(--tech);letter-spacing:.04em;cursor:pointer}
.country-picker select:hover,.country-picker select:focus-visible{border-color:#5ac7df}
.country-picker option{background:#0a202b;color:#b9e6ec}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.map-controls .wheel-mode{width:78px;height:29px;padding:3px 2px;font:700 8px var(--tech);white-space:nowrap;color:#9edcf1;letter-spacing:.01em;border-color:#3b778a}
.map-controls .wheel-mode[aria-pressed=false]{border-color:#53727d;color:#a4b6c3}
.map-controls .wheel-mode:disabled{opacity:.6;cursor:default}
.map-page-jump{position:absolute;bottom:34px;left:12px;z-index:5;background:#081c27e6;border:1px solid #367387;padding:7px 10px;border-radius:3px;font:700 9px var(--tech);color:#b1ebf6;letter-spacing:.05em;cursor:pointer}
.map-page-jump:hover{background:#164050;color:#e8ffff}
.country-place-list{display:grid;gap:3px;max-height:190px;overflow-y:auto;padding-right:3px}
.country-place-list button{display:flex;justify-content:space-between;align-items:center;gap:8px;border:0;border-bottom:1px solid #22404e;background:transparent;padding:7px 2px;color:#cceff5;text-align:left;font:10px var(--number);cursor:pointer}
.country-place-list button:hover{background:#14323e}
.country-place-list button b{color:#79c7d9;font:8px var(--tech);white-space:nowrap}
.country-actions{display:flex;gap:7px;margin-top:11px;flex-wrap:wrap}
.country-actions .inspector-back{margin-top:0;padding:7px 8px;border:1px solid #244b5c;border-radius:2px;font-size:9px}
@media(max-width:700px){
 .country-picker{min-width:0;flex:1 1 100%;height:30px}
 .country-picker select{max-width:none;width:100%}
 .map-page-jump{left:7px;bottom:32px;padding:6px 8px}
 .map-controls .wheel-mode{display:none}
 .country-place-list{max-height:145px}
}

/* Keep map controls clear of the open country/route inspector */
.map-controls{left:10px;right:auto;z-index:11}
.map-page-jump{left:78px}
.map-heading .wheel-mode{height:20px;min-width:77px;padding:1px 5px;margin-left:5px;background:#0a2834;color:#9bdeef;font:700 8px var(--tech);border:1px solid #38677a;border-radius:2px;cursor:pointer}
.map-heading .wheel-mode[aria-pressed=false]{color:#b2c7cd;border-color:#345364}
.map-heading .wheel-mode:hover{background:#174154}
@media(max-width:700px){.map-controls{left:7px;right:auto}.map-page-jump{left:70px}.map-heading .wheel-mode{display:none}}


/* TRAVEL RADAR v2.5 — MOBILE WIDTH / COMPACT COMMAND CENTER
   Fix actual phone overflow and bring the map above the fold.
   Desktop styling, map filters and all individual pins are untouched. */
@media (max-width: 620px) {
  html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
  html, body { width:100%; max-width:100%; overflow-x:clip; }
  body { min-width:0; }
  .app-shell {
    width:100%; max-width:100%; min-width:0;
    padding:0 max(6px, env(safe-area-inset-right, 0px)) 22px max(6px, env(safe-area-inset-left, 0px));
    margin:0 auto;
  }
  .app-shell main, .radar-section, .radar-grid, .map-panel,
  .timeline-panel, .map-toolbar, .map-stage { min-width:0; max-width:100%; }

  /* Header — conserve space and prevent name overflow. */
  .topbar { min-height:46px; height:46px; margin-bottom:6px; gap:6px; }
  .brand { min-width:0; gap:7px; }
  .brand-icon { flex:0 0 27px; width:27px; height:27px; transform:scale(.82); transform-origin:left center; }
  .brand > div:last-child { min-width:0; }
  .brand .eyebrow { font-size:7px; letter-spacing:.7px; white-space:nowrap; }
  .brand .archive-id { display:none; }
  .topbar h1 { margin:2px 0 0; font-size:clamp(15px,4.6vw,19px); letter-spacing:.4px; line-height:1.05; white-space:nowrap; }
  .topbar h1 em { font-size:9px; letter-spacing:0; vertical-align:2px; }
  .top-right { flex:0 0 auto; gap:0; }
  .top-right .live, .top-right .top-date, .top-right .github-link { display:none; }
  .top-right::after { content:""; display:block; width:7px; height:7px; border-radius:50%; background:#74d8b7; box-shadow:0 0 6px #64cda57d; }

  /* Timeline — miniature activity sparkline, horizontally scrollable only inside the rail. */
  .timeline-panel { padding:5px 7px 3px; margin:0 0 6px; }
  .timeline-top { min-height:17px; }
  .timeline-top .card-head { font-size:9px; letter-spacing:.6px; gap:4px; }
  .timeline-top .dot-bracket { font-size:12px; }
  .timeline-top .small-action { padding:3px 7px; font-size:8px; }
  .year-strip { display:flex; flex-wrap:nowrap; width:100%; min-width:0; max-width:100%; min-height:41px; margin:1px 0 0;
    padding:0 0 3px; gap:2px; overflow-x:auto; overflow-y:hidden; overscroll-behavior-inline:contain;
    -webkit-overflow-scrolling:touch; scroll-snap-type:x proximity; }
  .year-pill.year-signal { flex:0 0 34px; width:34px; min-width:34px; height:39px; padding:3px 2px 1px; gap:2px; scroll-snap-align:start; }
  .year-pill.year-signal .signal-bar { width:18px; max-height:22px; }
  .year-tick { font-size:8px; line-height:10px; }
  .year-pill.year-all { flex:0 0 38px; width:38px; min-width:38px; height:36px; font-size:9px; scroll-snap-align:start; }

  /* Radar — one-line title and three genuinely fitting control rows. */
  .radar-section .section-title-row { min-width:0; min-height:21px; padding:0 1px; margin-bottom:4px; }
  .radar-section .section-title-row h2 { font-size:14px; line-height:1.1; letter-spacing:.6px; }
  .radar-section .section-title-row h2 .muted { font-size:9px; letter-spacing:0; }
  .radar-section .radar-actions { display:none; }
  .map-toolbar {
    display:grid !important;
    grid-template-columns:minmax(0, 0.43fr) minmax(0, 0.57fr);
    width:100%; max-width:100%; min-width:0;
    padding:5px; gap:4px; margin-bottom:5px;
    align-items:stretch;
  }
  .map-toolbar > .toolbar-cluster { grid-column:1 / -1; display:block; min-width:0; width:100%; max-width:100%; margin:0; }
  .map-toolbar > .toolbar-cluster .toolbar-label { display:none; }
  .map-toolbar .segment, .map-toolbar #layerToggle, .map-toolbar #statusToggle {
    display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr));
    width:100%; max-width:100%; min-width:0;
    height:31px; padding:2px; gap:2px; margin:0;
  }
  .map-toolbar .segment button {
    display:block; width:100%; min-width:0; max-width:100%; height:27px;
    margin:0; padding:4px 1px; font:600 9px/1.2 var(--tech);
    letter-spacing:0; overflow:hidden; text-overflow:clip; white-space:nowrap;
    text-align:center;
  }
  .map-toolbar > .country-picker { grid-column:1; width:100%; min-width:0; height:30px; margin:0; }
  .map-toolbar > .country-picker select { height:30px; min-width:0; width:100%; max-width:100%;
    padding:0 5px; font:600 8px var(--tech); letter-spacing:0; }
  .map-toolbar > .search-wrap { grid-column:2; width:100%; min-width:0; max-width:100%; height:30px; margin:0; padding:0 6px; gap:4px; }
  .search-wrap span { flex:0 0 auto; font-size:16px; }
  .search-wrap input { min-width:0; width:100%; font-size:9px; letter-spacing:0; }
  .search-wrap input::placeholder { color:#7a9dab; opacity:1; }
  .search-wrap kbd { display:none; }

  /* Full-bleed map within the app shell; compact top/footer chrome. */
  .map-panel { width:100%; min-width:0; overflow:hidden; }
  .map-heading { height:25px; min-height:25px; padding:4px 7px; gap:4px; }
  .map-heading-left { min-width:0; gap:5px; }
  .map-heading-left strong { font-size:9px; white-space:nowrap; }
  .map-heading-left small { font-size:8px; white-space:nowrap; }
  .map-heading .map-system-meta { min-width:0; gap:4px; }
  .map-system-meta #mapLayerLabel { display:none; }
  #mapZoomLevel { font-size:8px; }
  .map-stage { width:100%; height:clamp(390px, 61dvh, 660px); overflow:hidden; }
  .map-stage #worldMap { width:100% !important; height:100% !important; }
  .map-stage .maplibregl-canvas-container,
  .map-stage .maplibregl-canvas { max-width:100%; }
  .map-controls { left:6px; bottom:31px; gap:3px; }
  .map-controls button { min-width:29px; width:29px; height:29px; }
  .map-controls .focus-map { width:48px; }
  .map-page-jump { left:64px; bottom:31px; font-size:8px; padding:7px 6px; }
  .map-watermark { display:none; }
  .map-footer { min-height:27px; padding:5px 6px; }
  .legend { gap:8px; font-size:8px; }
  .map-tooltip { max-width:min(240px, calc(100% - 16px)); font-size:9px; }

  /* Mobile country/airport/route intelligence = a bounded bottom sheet. */
  .intel-panel {
    left:5px; right:5px; top:auto; bottom:30px;
    width:auto; max-width:none; max-height:min(54dvh, 410px);
    overflow-y:auto; overscroll-behavior:contain;
    border-radius:5px 5px 2px 2px; padding:9px 11px 12px;
  }
  .intel-panel .inspector-code { font-size:clamp(18px,5vw,22px); }
  .archive-overview { min-width:0; }
  .charts-grid, .lower-grid { min-width:0; }
  .chart-card, .chart-inner, .log-panel { min-width:0; max-width:100%; }
}
@media (max-width: 350px) {
  .brand .eyebrow { font-size:6.6px; }
  .topbar h1 { font-size:15px; }
  .map-toolbar .segment button { font-size:8px; }
  .map-toolbar { grid-template-columns:minmax(0, .44fr) minmax(0, .56fr); }
  .map-toolbar > .country-picker select { font-size:7.4px; }
  .map-toolbar > .search-wrap input { font-size:8px; }
  .legend { font-size:7px; gap:5px; }
}

/* v2.6 — Clear chart drill-down without affecting map position or global filters. */
.analytics-section .section-title-row { align-items:center; gap:8px; }
.analytics-actions { display:flex; align-items:center; justify-content:flex-end; gap:11px; flex:0 0 auto; min-width:0; }
.chart-reset { display:inline-flex; align-items:center; justify-content:center; height:28px; padding:5px 10px; font:700 9px var(--tech); letter-spacing:.045em; background:#0b2430; color:#bceaf4; border-color:#326477; }
.chart-reset:disabled { opacity:.42; cursor:default; background:#0a1c26; box-shadow:none; }
.chart-reset:not(:disabled):hover { background:#174456; border-color:#5fcce1; color:#e2fdff; }
.chart-inner { cursor:default; }
@media(max-width:620px){
  .analytics-section .section-title-row { align-items:center; margin-bottom:8px; }
  .analytics-section .section-title-row h2 { font-size:15px; }
  .analytics-actions { flex:0 0 auto; }
  .analytics-actions .analytics-hint { display:none; }
  .chart-reset { height:27px; min-width:100px; padding:5px 7px; font-size:8px; }
}
@media(max-width:350px){
  .analytics-section .section-title-row h2 { font-size:13px; }
  .analytics-section .section-title-row h2 .muted { display:none; }
  .chart-reset { min-width:92px; font-size:7.6px; }
}

/* V2.7 / PRECISE CHART HITS — Only bars and actual distance points select. */
.bar-col{cursor:default;}
.bar-col:hover{color:#7e9aa5;}
.bar-col.active:after{pointer-events:none;}
.bar-stack{pointer-events:none;}
.bar-hit{display:flex;flex-direction:column;justify-content:flex-end;gap:1px;align-self:stretch;width:100%;min-width:0;max-height:129px;padding:0;background:transparent;border:0;box-shadow:none;color:inherit;cursor:pointer;pointer-events:auto;}
.bar-hit i{pointer-events:none;flex-shrink:0;}
.bar-hit:hover .bar-past,.bar-hit:focus-visible .bar-past{background:#7cddf2;}
.bar-hit:hover .bar-future,.bar-hit:focus-visible .bar-future{background:#f3c98b;}
.bar-hit:focus-visible{outline:1px solid #77d9e9;outline-offset:2px;}
/* Mobile-only interface chrome is hidden completely on desktop. */
.mobile-command,.mobile-bottom-nav,.mobile-sheet-backdrop,.mobile-sheet-heading{display:none;}

/* MOBILE-FIRST SCREEN: separate page architecture / modal filters / persistent navigation. */
@media(max-width:700px){
 html,body{width:100%;max-width:100%;min-width:0;overflow-x:hidden;}
 body.mobile-drawer-open{overflow:hidden;}
 .app-shell{width:100%;max-width:100%;padding:0 0 calc(78px + env(safe-area-inset-bottom, 0px));overflow:clip;}
 main{display:flex;flex-direction:column;width:100%;min-width:0;}
 main > *{min-width:0;max-width:100%;}
 .topbar{height:51px;min-height:51px;margin:0;padding:0 13px;background:#07151e;border-bottom:1px solid #245061;}
 .topbar .brand{gap:8px;min-width:0;}
 .topbar .brand-icon{width:27px;height:27px;flex:0 0 27px;transform:scale(.8);transform-origin:center;}
 .topbar h1{font:700 clamp(17px,5vw,21px)/1.1 var(--heading);margin:2px 0 0;letter-spacing:.25px;}
 .topbar h1 em{font-size:9px;vertical-align:2px;}
 .topbar .eyebrow{font-size:8px;letter-spacing:.65px;white-space:nowrap;}
 .topbar .archive-id,.top-right .live,.top-right .top-date,.top-right .github-link{display:none;}
 .top-right::after{width:7px;height:7px;}
 .mobile-command{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr) auto;gap:5px;min-width:0;background:#091b26;padding:7px 8px;border-bottom:1px solid #244551;}
 .mobile-command button{display:flex;align-items:center;justify-content:center;gap:6px;height:36px;min-width:0;margin:0;background:#0c2835;border:1px solid #2b5363;border-radius:3px;color:#c3eff9;cursor:pointer;padding:0 7px;white-space:nowrap;font:500 11px var(--tech);}
 .mobile-command button:active{background:#154357;}
 .mobile-command button>span:first-child{font:600 8px var(--tech);color:#8dabb9;}
 .mobile-command button strong{min-width:0;overflow:hidden;text-overflow:ellipsis;letter-spacing:.02em;font-size:11px;}
 #mobileFiltersButton{min-width:76px;}
 .radar-section{order:0;margin:0;min-width:0;max-width:100%;}
 .radar-section > .section-title-row{display:none;}
 .radar-grid{display:block;margin:0;width:100%;min-width:0;}
 .map-panel{width:100%;max-width:100%;border:0;border-radius:0;box-shadow:none;margin:0;}
 .map-heading{height:29px;min-height:29px;padding:5px 10px;border-radius:0;}
 .map-heading .map-heading-left strong{font-size:10px;letter-spacing:.05em;}
 .map-heading .map-heading-left small{font-size:9px;}
 #mapZoomLevel{font-size:9px;}
 .map-stage{height:clamp(420px,calc(100dvh - 205px),900px);width:100%;max-width:100%;overflow:hidden;border-radius:0;}
 .map-stage #worldMap,.map-stage .maplibregl-map,.map-stage .maplibregl-canvas-container,.map-stage canvas{max-width:100%;}
 .map-footer{padding:8px 10px;min-height:32px;}
 .map-footer .legend{overflow-x:auto;max-width:100%;gap:12px;white-space:nowrap;}
 .map-footer #mapCount{display:none;}
 .map-controls{left:7px;right:auto;bottom:31px;}
 .map-page-jump{left:69px;bottom:31px;}
 .map-system-meta #mapLayerLabel{display:none;}
 .timeline-panel,.map-toolbar{
   position:fixed!important;z-index:220;left:0;right:0;bottom:calc(63px + env(safe-area-inset-bottom, 0px));top:auto;
   display:flex!important;flex-direction:column;align-items:stretch;
   width:100%;max-width:100%;max-height:min(74dvh,620px);min-width:0;
   padding:13px 13px 18px;margin:0;gap:13px;
   border:1px solid #2e6072;border-bottom:0;border-radius:11px 11px 0 0;
   background:linear-gradient(#0b2531,#071721);box-shadow:0 -14px 45px #000b;
   opacity:0;visibility:hidden;pointer-events:none;transform:translateY(calc(100% + 70px));
   transition:transform .2s ease,opacity .2s ease,visibility .2s;overflow-y:auto;overscroll-behavior:contain;
 }
 .timeline-panel{order:1;}
 body[data-mobile-sheet="years"] .timeline-panel,body[data-mobile-sheet="filters"] .map-toolbar{
   visibility:visible;opacity:1;pointer-events:auto;transform:translateY(0);
 }
 .mobile-sheet-backdrop{position:fixed;inset:0;z-index:210;background:rgba(1,8,13,.7);backdrop-filter:blur(2px);}
 body.mobile-drawer-open .mobile-sheet-backdrop{display:block;}
 .mobile-sheet-heading{display:flex;align-items:center;justify-content:space-between;width:100%;color:#9fdcec;font:700 11px var(--tech);letter-spacing:.08em;}
 .mobile-sheet-heading button{min-width:35px;min-height:35px;background:#0f303e;color:#c7eef8;border:1px solid #3a6778;border-radius:4px;font-size:22px;}
 .timeline-panel .timeline-top{width:100%;min-height:30px;}
 .timeline-panel .timeline-top .card-head{font-size:10px;}
 .year-strip{min-height:90px;max-width:100%;width:100%;padding:10px 0;gap:6px;}
 .year-pill.year-signal{flex:0 0 49px;width:49px;min-width:49px;height:74px;}
 .year-pill.year-signal .signal-bar{width:24px;max-height:38px;}
 .year-pill.year-all{flex:0 0 48px;width:48px;height:74px;}
 .year-tick{font-size:10px;}
 .year-context{display:flex;font-size:9px;}
 .year-context #yearStatus{display:none;}
 .map-toolbar > .toolbar-cluster{width:100%;max-width:100%;display:block;min-width:0;}
 .map-toolbar .toolbar-label{display:block;margin-bottom:7px;font-size:10px;color:#9ac6d2;}
 .map-toolbar .segment,.map-toolbar #layerToggle,.map-toolbar #statusToggle{
   display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;height:42px;
 }
 .map-toolbar .segment button{width:100%;height:38px;font:700 11px var(--tech);padding:5px 3px;}
 .map-toolbar>.country-picker,.map-toolbar>.search-wrap{display:flex;width:100%;min-width:0;max-width:100%;height:42px;}
 .map-toolbar>.country-picker select{width:100%;height:42px;max-width:100%;font:600 11px var(--tech);}
 .map-toolbar>.search-wrap{padding:0 11px;}
 .map-toolbar>.search-wrap input{font-size:12px;min-width:0;}
 .map-toolbar>.search-wrap input::placeholder{font-size:11px;}
 .map-toolbar>.search-wrap kbd{display:none;}
 .intel-panel{left:0;right:0;bottom:0;max-height:min(64dvh,520px);border-radius:12px 12px 0 0;z-index:12;}
 .archive-overview{order:1;margin:0;padding:12px 8px 8px;}
 .archive-topline{padding:0 3px;}
 .archive-overview .kpi-bar{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;}
 .archive-overview .kpi{min-height:57px;padding:8px 6px;}
 .archive-overview .kpi-label{font-size:8px;}
 .archive-overview .kpi-value{font-size:16px;}
 .archive-overview .kpi-sub{font-size:8px;}
 .analytics-section{order:2;margin:0;padding:16px 8px 0;scroll-margin-top:12px;}
 .charts-grid,.lower-grid{grid-template-columns:minmax(0,1fr);gap:9px;}
 .chart-card{padding:13px 11px;min-width:0;overflow:hidden;}
 .chart-card .chart-inner{width:100%;max-width:100%;min-width:0;overflow:hidden;}
 .chart-card .bar-chart{max-width:100%;}
 .distance-scroll{max-width:100%;}
 .distance-svg{min-width:440px;}
 .log-section{order:4;padding:0 8px;margin-top:23px;scroll-margin-top:12px;}
 .lower-grid{order:3;padding:0 8px;}
 footer{order:5;margin:20px 8px 0;padding:15px 0;}
 .mobile-bottom-nav{position:fixed;z-index:240;bottom:0;left:0;right:0;height:calc(62px + env(safe-area-inset-bottom, 0px));padding:5px 4px calc(5px + env(safe-area-inset-bottom, 0px));display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;background:#071722ee;border-top:1px solid #28546a;backdrop-filter:blur(11px);}
 .mobile-bottom-nav button{min-width:0;width:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;color:#8aafbd;border:0;background:none;border-radius:4px;}
 .mobile-bottom-nav button>span{font:500 23px/1 var(--tech);}
 .mobile-bottom-nav button small{font:700 9px var(--tech);letter-spacing:.045em;}
 .mobile-bottom-nav button.active{background:#123543;color:#9be8f4;}
 .mobile-bottom-nav button:active{background:#174758;}
}
@media(max-width:360px){
 .mobile-command{padding:6px 5px;gap:4px;}
 .mobile-command button{padding:0 4px;font-size:10px;}
 .mobile-command button strong{font-size:10px;}
 .topbar{padding:0 9px;}
 .topbar h1{font-size:17px;}
 .map-footer .legend{font-size:8px;}
}
/* A hovering pointer in EMPTY column space must not highlight a bar. */
.bar-col:hover .bar-past { background:#397a91; }
.bar-col.active .bar-past { background:#62d5ef; }
.bar-col.active .bar-future { background:#efc489; }
.bar-col .bar-hit:hover .bar-past,.bar-col .bar-hit:focus-visible .bar-past { background:#7cddf2; }
.bar-col .bar-hit:hover .bar-future,.bar-col .bar-hit:focus-visible .bar-future { background:#f3c98b; }
