/* JTWeatherNow radiosondes 1.4.0. Map placement belongs to Leaflet. */
:root{
  --brand:#007bff;--brand-dark:#0056b3;--blue:#0969d7;--ink:#173953;--muted:#526d82;
  --line:#d9e4ee;--surface:#fff;--ascent:#11836d;--descent:#7251be;--stale:#7b8792;
  --shadow:0 8px 28px #183c591c;--radius:14px
}
*{box-sizing:border-box}
html{height:100%;background:#eaf0f6}
body{height:100vh;height:var(--app-height,100dvh);margin:0;overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto;color:var(--ink);background:#eaf0f6;font:14px/1.45 system-ui,-apple-system,"Segoe UI",Arial,sans-serif}
button,input,select{font:inherit;color:inherit}
button,select,input{min-height:40px;border:1px solid #c7d7e5;border-radius:8px;background:#fff}
button{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 12px;font-weight:650;cursor:pointer;touch-action:manipulation}
button:hover{background:#f0f7ff;border-color:#91b7dc}
button:disabled{cursor:default;opacity:.42}
button[aria-pressed=true],button[aria-expanded=true]:not(.sheet-grip):not(.icon-btn){background:#eaf3ff;color:#0758b6;border-color:#92b7df}
input,select{padding:8px 10px;min-width:0;max-width:100%}
input[type=checkbox]{width:19px;height:19px;min-height:0;margin:0;accent-color:var(--blue);flex:none}
input[type=range]{min-height:40px;height:40px;padding:0;border:0;background:transparent;accent-color:var(--blue);cursor:pointer}
input[type=range]::-webkit-slider-runnable-track{height:4px;background:#c8dcf0;border-radius:8px}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;margin-top:-7px;border-radius:50%;background:#0969d7;border:2px solid white;box-shadow:0 0 0 1px #0969d7}
input[type=range]{-webkit-appearance:none;appearance:none}
input[type=range]::-moz-range-track{height:4px;background:#c8dcf0;border-radius:8px}
input[type=range]::-moz-range-progress{height:4px;background:#0969d7;border-radius:8px}
input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#0969d7;border:2px solid #fff}
a{color:#0865c3}
:focus-visible{outline:3px solid #e7a521;outline-offset:3px}
[hidden]{display:none!important}
.icon-sprite{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.icon{width:20px;height:20px;flex:none;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;top:-100px;left:12px;z-index:5000;background:white;padding:12px;border-radius:8px}
.skip:focus{top:10px}
header{position:relative;z-index:1000;background:var(--brand);color:#fff;min-width:0;padding-top:env(safe-area-inset-top)}
.banner{display:flex;align-items:center;gap:12px;padding:4px 12px;height:56px;min-width:0}
.logo-container{flex:none;align-self:center}
.logo-container img{display:block;width:64px;height:46px;object-fit:contain}
.title-container{min-width:0;flex:1}
.banner-kicker,.datetime{display:none}
.banner h1{font:700 21px/1.1 Georgia,serif;margin:0;color:#fff}
.map-hint{margin:3px 0 0;font-size:10px;line-height:1.15;color:#e8f2ff;max-height:24px;overflow:hidden}
.weather-search{display:flex;gap:7px;align-items:center}
.weather-search input{width:198px}
.weather-search button{color:#0758b6}
.mobile-menu{display:inline-flex;min-width:44px;min-height:44px;color:#0758b6;flex:none}
#siteNav{display:none;position:absolute;right:8px;top:calc(100% + 6px);width:min(520px,calc(100vw - 16px));background:var(--brand-dark);border-radius:12px;box-shadow:var(--shadow);max-height:calc(var(--app-height,100dvh) - 76px);overflow-y:auto;overscroll-behavior:contain}
#siteNav.open{display:block}
#siteNav ul{list-style:none;display:flex;justify-content:center;flex-wrap:wrap;padding:0;margin:0}
#siteNav a{display:block;padding:12px 15px;font-size:13px;color:#fff;text-decoration:none;min-height:44px}
#siteNav a:hover,#siteNav a[aria-current]{background:#003f85}
.toolbar{position:relative;z-index:800;display:flex;align-items:center;gap:6px;min-height:44px;min-width:0;color:var(--ink)}
.toolbar-primary,.toolbar-secondary{display:flex;align-items:center;gap:7px;min-width:0}
.toolbar button{white-space:nowrap;font-size:12px;min-height:44px;padding:6px 10px}
.toolbar-primary>button{min-width:44px}
.toolbar-secondary{position:absolute;right:0;top:calc(100% + 9px);width:310px;max-width:calc(100vw - 16px);display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:12px;border:1px solid #c8dbe9;border-radius:12px;background:white;box-shadow:var(--shadow);max-height:calc(var(--app-height,100dvh) - 76px);overflow-y:auto;overscroll-behavior:contain}
.toolbar-secondary .inline-label{justify-content:space-between}
.toolbar-secondary select{min-height:44px}
.selection-copy{display:flex;flex-direction:column;min-width:0;max-width:154px;text-align:left;line-height:1.25}
.selection-copy>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selection-copy small{display:block;color:#56758e;font-size:9px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.selection-control[data-replay=true],#dockSelected[data-replay=true]{background:#fff5dd;color:#855e1b;border-color:#d5b370}
.inline-label{display:flex;gap:7px;align-items:center;font-size:11px;color:var(--muted)}
.inline-label select{min-width:76px}
.count{padding:2px 7px;border-radius:99px;color:#0c5db5;background:#e5f1ff;font:700 11px/1.6 system-ui,sans-serif}
.connection{display:flex;align-items:center;gap:6px;margin:0 4px;min-width:0;max-width:110px;font-size:10px;color:#fff;line-height:1.25}
.connection #connectionText{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.status-dot{width:8px;height:8px;border-radius:50%;background:#73e1b7;flex:none;box-shadow:0 0 0 2px #ffffff30}
.status-dot.waiting{background:#d79220}.status-dot.offline{background:#b34d39}
.phone-control{display:none}
#tracker{--flight-width:0px;--detail-width:0px;position:relative;display:grid;grid-template-columns:var(--flight-width) minmax(0,1fr) var(--detail-width);grid-template-rows:minmax(0,1fr) auto;min-height:0;min-width:0;overflow:hidden;isolation:isolate}
body[data-flight-open=true] #tracker{--flight-width:320px}
body[data-detail-open=true] #tracker,body[data-layers-open=true] #tracker{--detail-width:340px}
.map-canvas{grid-column:2;grid-row:1;position:relative;min-height:0;min-width:0;overflow:hidden;isolation:isolate;z-index:0;background:#e5edf2}
#map{position:absolute;inset:0;width:100%;height:100%;min-height:0;min-width:0;z-index:0;background:#e5edf2}
.leaflet-container{font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif}
.leaflet-control-zoom{border:1px solid #b6ccdf!important;box-shadow:var(--shadow)!important;border-radius:9px!important;overflow:hidden}
.leaflet-control-zoom a{width:40px!important;height:40px!important;line-height:40px!important;color:#24577c!important}
.leaflet-bottom.leaflet-right{width:100%;max-width:100%}
.leaflet-control-attribution{font-size:9px!important;line-height:1.35!important;max-width:calc(100% - 16px);white-space:normal}
.leaflet-control-attribution a{color:#2b6289}
.leaflet-control-scale{margin-bottom:4px!important}
.panel{position:relative;min-height:0;min-width:0;display:flex;flex-direction:column;background:var(--surface);overflow:hidden;z-index:20}
.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line);flex:none;background:#fff}
.panel-heading>div{min-width:0}
.panel h2{font-size:20px;line-height:1.2;letter-spacing:-.4px;margin:5px 0 0;overflow-wrap:anywhere}
.eyebrow{font-size:9px;font-weight:750;letter-spacing:1.2px;color:#5d7a92}
.icon-btn{flex:none;border:0;background:transparent;min-width:40px;width:40px;height:40px;padding:0;font:25px/1 system-ui,sans-serif;color:#506d84}
.panel-close{flex:none;min-width:50px;min-height:44px;padding:6px 9px;color:#0758b6;background:#f2f7fc;font-size:12px}
.panel-body{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.flight-panel{grid-column:1;grid-row:1;border-right:1px solid var(--line)}
.flight-body{display:flex;flex-direction:column;flex:1;overflow:hidden}
.flight-filters{flex:none}.filter-toggle,.filter-apply{display:none}
.serial-form{display:flex;gap:7px;margin:15px 14px 12px;flex:none}
.serial-form input{flex:1;width:100%;font-size:13px}
.serial-form button{color:#0758b6;background:#f0f6ff}
.filters{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:9px;padding:0 14px 12px;flex:none}
.filters label{min-width:0;font-size:10px;font-weight:600;color:var(--muted)}
.filters select{display:block;width:100%;margin-top:5px;padding:7px 6px;font-size:12px}
.list-options{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:9px 14px;background:#f6f9fc;border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex:none}
.list-options label{display:flex;align-items:center;gap:6px;font-size:11px}
.list-options select{font-size:11px;width:130px;min-height:36px;padding:6px}
.flight-list{overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1;scrollbar-width:thin}
.flight-card{display:block;width:100%;text-align:left;border:0;border-radius:0;border-bottom:1px solid #e6edf4;background:white;padding:14px 17px;min-height:92px;font-weight:400}
.flight-card.selected{background:#eaf4ff;box-shadow:inset 3px 0 #0969d7}
.flight-card:hover{background:#f2f7fc}
.flight-card-top{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:750}
.flight-card-top time{margin-left:auto;white-space:nowrap;color:var(--muted);font-size:10px;font-weight:400}
.flight-card-sub{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0 0 16px;color:var(--muted);font-size:11px}
.flight-card-sub strong{color:#284f70;font-weight:700}
.flight-card-site{display:block;margin:5px 0 0 16px;color:#607b92;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--stale);flex:none}
.ascent{background:var(--ascent)}.descent{background:var(--descent)}.stale,.lost{background:var(--stale)}.level,.unknown{background:#2580c9}
.list-footer{padding:10px 14px;background:#f7fafc;border-top:1px solid var(--line);color:var(--muted);font-size:10px;line-height:1.8;flex:none}
.list-footer .legend-dot{height:6px;width:6px;margin:0 3px 0 6px}.list-footer .legend-dot:first-child{margin-left:0}
#asOf{display:block;margin-top:3px;font-size:9px}
.empty{font-size:13px;line-height:1.7;color:var(--muted);padding:24px 18px}
.detail-panel{grid-column:3;grid-row:1;border-left:1px solid var(--line)}
.detail-summary{font-size:11px;color:#466a87;margin:6px 0 0;font-variant-numeric:tabular-nums}
.detail-scroll{padding:17px 18px 24px;flex:1}
.status-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.phase{border-radius:6px;padding:5px 8px;font-size:11px;font-weight:700;background:#edf4f9;color:#32536c}
.phase.ascent{background:#e3f5ed;color:#096d55}.phase.descent{background:#eee7fa;color:#6343a0}
.phase.stale,.phase.lost{background:#f4eee1;color:#765725}
.phase.level,.phase.unknown{background:#e9f2fb;color:#1e608f}
.hint{font-size:11px;line-height:1.65;color:var(--muted);margin:8px 0}
.instrument-type{font-size:11px;color:#607c92;margin:9px 0}
.detail-actions{display:flex;gap:6px;margin:13px 0 17px}
.detail-actions button{flex:1;min-width:0;font-size:12px}
.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.metric{border:1px solid #e0e9f2;border-radius:10px;background:#f6f9fc;padding:12px 10px;min-width:0}
.metric span{display:block;color:var(--muted);font-size:9px;letter-spacing:.4px;text-transform:uppercase;margin-bottom:5px}
.metric strong{font-size:21px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.7px;overflow-wrap:anywhere}
.metric small{display:inline-block;margin-left:4px;font-size:10px;letter-spacing:0;font-weight:400;white-space:nowrap}
.coordinates{font:11px/1.7 ui-monospace,monospace;color:#456a86;margin:15px 0 6px;overflow-wrap:anywhere}
.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-top:18px}
.tabs button{flex:1;border:0;border-radius:0;background:transparent;font-size:12px;min-height:44px}
.tabs button[aria-selected=true]{color:#075fc1;box-shadow:inset 0 -3px #0969d7}
h3{font-size:12px;margin:19px 0 9px}
.chart{width:100%;margin-top:15px;min-height:110px}
.chart svg{display:block;width:100%;height:auto;border-radius:9px;background:#f8fbfd}
.chart text{font:11px Arial,sans-serif;fill:#597184}.chart .grid{stroke:#dfe8ef;stroke-width:1}
.chart .plot{fill:none;stroke:#1477cc;stroke-width:2.5;stroke-linejoin:round}.chart .cursor{stroke:#d18a15;stroke-width:1.5;stroke-dasharray:3 3}
.chart text.title{font-size:12px;font-weight:700;fill:#274b68}
.chart-empty{padding:18px;background:#f4f8fc;border-radius:9px;font-size:12px;line-height:1.7;color:var(--muted)}
.prediction-info{padding:11px 12px;background:#fff8eb;border-left:3px dashed #cf942a;font-size:11px;line-height:1.8;border-radius:0 8px 8px 0}
.prediction-info strong{display:block}.radio-metrics{font-size:12px;line-height:2;margin:14px 0}
.receiver-row{padding:9px 0;border-bottom:1px solid var(--line)}.receiver-row strong{display:block;overflow-wrap:anywhere}.receiver-row small{font-size:10px}
.exports{display:flex;gap:8px;margin-top:20px}.exports button{flex:1;min-width:0;font-size:11px}
.callout{padding:11px 12px;background:#fff3db;color:#70521b;border:1px solid #e5c88b;border-radius:8px;font-size:11px;line-height:1.7;margin:10px 0}
.layers-panel{grid-column:3;grid-row:1;border-left:1px solid var(--line)}
.layer-body{padding:0 16px 16px;flex:1}
.field{display:block;font-size:11px;font-weight:600;color:var(--muted);margin:16px 0}
.field select,.field input[type=range]{display:block;width:100%;margin-top:6px}
.check{display:flex;align-items:center;gap:10px;min-height:44px;padding:9px 0;border-bottom:1px solid #edf2f7;font-size:12px;cursor:pointer}
.check span{min-width:0}.check small{display:block;margin-top:2px;color:var(--muted);font-size:10px}
.layer-heading{font-size:9px;letter-spacing:1px;text-transform:uppercase;color:#6a8296;margin-top:21px}
.layer-note{padding:12px;border-radius:9px;background:#f2f7fc;font-size:10px}
.sheet-grip{display:none}
.timeline{grid-column:1/4;grid-row:2;position:relative;z-index:60;min-width:0;height:48px;padding:1px 8px 2px;border-top:1px solid #cfdeeb;background:#fff}
.playback-controls{height:44px;max-width:1040px;margin:auto}
.playback-row{display:flex;align-items:center;gap:5px;height:44px;min-width:0}
.playback-row button{min-height:44px;min-width:44px;height:44px;padding:4px 9px;font-size:11px;flex:none}
#play{color:#075fc1;min-width:72px;gap:6px}
#play .icon{width:18px;height:18px}
#replayToggle{width:44px;font-size:25px;line-height:1;border:0;background:transparent;color:#526f86}
#replayOptionsToggle{min-width:48px;background:#f4f8fc;color:#3f6482}
#goLive{min-width:62px;color:#096d55;background:#edf8f3;border-color:#b6dece;white-space:nowrap}
#goLive[aria-pressed=true]{background:#e1f3e9;color:#096d55}
.scrubber-label{display:block;position:relative;flex:1;min-width:64px;height:44px}
.playback-caption{position:absolute;top:1px;left:0;right:0;display:flex;align-items:center;gap:6px;min-width:0;pointer-events:none;white-space:nowrap}
.playback-caption strong{font:10px/12px ui-monospace,monospace;overflow:hidden;text-overflow:ellipsis;color:#476782}
.replay-state{padding:1px 3px;border-radius:3px;color:#0c785d;background:#e3f4ec;font-size:8px;line-height:12px;font-weight:750;flex:none}
.replay-state.history{color:#855e1b;background:#fff1cf}
.timeline input[type=range]{display:block;width:100%;margin:0;height:44px;min-height:44px;padding:14px 0 0}
.playback-options{position:absolute;right:8px;bottom:calc(100% + 8px);width:340px;max-width:calc(100% - 16px);max-height:min(260px,calc(var(--app-height,100dvh) - 170px));overflow-y:auto;overscroll-behavior:contain;border:1px solid #bed2e2;border-radius:12px;padding:14px;background:white;box-shadow:var(--shadow)}
.playback-options h3{font-size:14px;margin:0 0 5px}
.playback-options .hint{font-size:11px;line-height:1.5;margin:8px 0 0;overflow-wrap:anywhere}
.playback-steps{display:grid;grid-template-columns:1fr 1fr .9fr;align-items:end;gap:8px;margin:12px 0}
.playback-steps button{min-height:44px;font-size:11px;padding:6px}
.speed-label{display:flex;flex-direction:column;gap:4px;font-size:11px;color:#526d82}
.speed-label select{width:100%;min-height:44px;padding:6px 8px}
.replay-flight,.clear-selection{width:100%;min-height:44px;font-size:12px;margin:0 0 14px}
.replay-flight{color:#0758b6;background:#f0f7ff}
.clear-selection{margin:12px 0 0;color:#526d82;background:transparent}
.timeline[data-expanded=false] .playback-controls{display:none}
.map-legend{position:absolute;bottom:82px;right:12px;z-index:20;max-width:min(340px,calc(100% - 24px));display:flex;gap:7px 11px;flex-wrap:wrap;padding:9px 11px;border:1px solid #cadbe8;border-radius:9px;background:#fffffff2;box-shadow:0 2px 10px #193e5714;color:#35546b;font-size:10px;pointer-events:none}
.map-legend>span{white-space:nowrap}.map-legend .legend-dot{width:7px;height:7px;margin-right:4px}
.map-legend strong{font-size:10px}.map-legend .altitude-ramp{height:6px;width:100%;border-radius:5px;background:linear-gradient(90deg,#099a93,#258ed2,#6458d2,#b34cbd,#ea9639,#e35767)}
.map-inspector{position:absolute;left:9px;bottom:32px;z-index:20;max-width:calc(100% - 18px);padding:5px 7px;border-radius:5px;background:#ffffffed;color:#35556e;font:10px/1.3 ui-monospace,monospace;pointer-events:none}
.focus-exit{position:absolute;right:max(10px,env(safe-area-inset-right));top:calc(10px + env(safe-area-inset-top));z-index:80;min-height:44px;box-shadow:var(--shadow);color:#0758b6;font-size:12px}
.notice,.measure-readout{position:absolute;left:62px;right:12px;top:12px;z-index:40;border-radius:9px;padding:11px 13px;font-size:12px;line-height:1.6;box-shadow:var(--shadow)}
.notice{background:#fffbef;border:1px solid #debe76;color:#70561b}
.measure-readout{background:#f7fcff;border:1px solid #82afd0;color:#215b88;pointer-events:none}
.measure-exit{position:absolute;right:12px;top:108px;z-index:45;min-height:44px;background:#fff;color:#0758b6;font-size:12px;box-shadow:var(--shadow)}
#map.measuring,.measuring .leaflet-interactive{cursor:crosshair}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);max-width:min(540px,calc(100% - 24px));z-index:3000;padding:13px 18px;background:#163b56;color:white;border-radius:10px;box-shadow:var(--shadow);font-size:13px;line-height:1.6}
dialog{border:1px solid #c3d4e1;border-radius:16px;max-width:660px;width:calc(100% - 28px);max-height:85vh;max-height:85dvh;overflow-y:auto;overscroll-behavior:contain;padding:23px 25px;color:var(--ink);font-size:13px;line-height:1.8;box-shadow:0 24px 70px #102b4955}
dialog::backdrop{background:#18344c80}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.dialog-heading h2{font-size:23px;line-height:1.2;margin:0}.dialog-heading button{font-size:25px;border:0;min-width:44px;min-height:44px}
.mobile-dock{display:none}
noscript{position:absolute;top:190px;left:12px;z-index:5000;padding:20px;background:white}
/* The outer Leaflet marker MUST stay absolute. Child art is positioned inside it. */
.leaflet-marker-icon.sonde-marker{position:absolute;background:transparent;border:0}
.sonde-marker{filter:drop-shadow(0 2px 3px #14375270)}
.sonde-symbol{position:relative;left:3px;top:3px;width:42px;height:56px;display:block;z-index:2;overflow:visible}
.sonde-halo{position:absolute;display:none;width:62px;height:62px;left:-7px;top:-9px;border-radius:50%;border:2px solid #1279ce;background:#1b8bd718;z-index:0}
.sonde-marker.selected .sonde-halo{display:block}
.sonde-marker.selected.live-report:not(.replay-marker) .sonde-halo{animation:sondePulse 2.4s ease-out infinite}
.sonde-marker.replay-marker .sonde-halo{border-color:#c18a25;border-style:dashed;background:#f6c45918}
.sonde-marker.old-report{opacity:.74}.sonde-marker.old-report .sonde-symbol{filter:saturate(.15)}
.sonde-heading{position:absolute;left:-8px;top:-11px;width:64px;height:64px;z-index:3;pointer-events:none}.sonde-heading svg{display:block;width:64px;height:64px}
@keyframes sondePulse{0%{box-shadow:0 0 0 0 #1677ce55}70%,100%{box-shadow:0 0 0 14px #1677ce00}}
.leaflet-tooltip.telemetry-label{background:#fffffff8;border:1px solid #bfd2e0;border-radius:7px;padding:6px 8px;box-shadow:0 2px 8px #0f335923;color:#173953;white-space:nowrap;pointer-events:none}
.telemetry-label strong{display:block;font-size:11px;letter-spacing:.2px;line-height:1.3}.telemetry-label .label-alt{display:block;font-size:10px;font-weight:500;margin-top:3px;color:#355872}
.telemetry-label i{font-size:9px;font-style:normal;font-weight:700;margin-left:5px}
.leaflet-tooltip.selected-label{border-color:#2378c6;border-left:3px solid #2378c6;box-shadow:0 3px 14px #115fa839}.leaflet-tooltip.selected-label strong{font-size:12px}
.sonde-group{display:flex;flex-direction:column;align-items:center;justify-content:center;border:3px solid white;border-radius:50%;background:#175b8d;color:white;box-shadow:0 0 0 2px #75a6c3,0 3px 10px #173b5740;line-height:1;cursor:pointer}
.sonde-group strong{font-size:18px;letter-spacing:-.7px}.sonde-group span{font-size:6px;font-weight:700;letter-spacing:.8px;margin-top:3px}
.sonde-group:hover{background:#0a78ba}.sonde-group.inactive-group{background:#718392;box-shadow:0 0 0 2px #b6c0c8,0 3px 10px #173b5740}
.group-tooltip{font-size:11px;text-align:center;line-height:1.5}.group-choice{display:block;width:100%;font-size:12px;text-align:left;margin-top:7px;white-space:normal;min-height:44px}
.site-icon{background:#fff;border:2px solid #547b97;width:10px!important;height:10px!important;border-radius:2px;box-shadow:0 1px 4px #1235}
.receiver-icon{font-size:15px;background:#fff;border:1px solid #618aa6;border-radius:50%;display:grid;place-items:center;width:24px!important;height:24px!important}
.landing-icon{background:#fff6df;color:#8f6113;border:2px dashed #ba8121;border-radius:50%;font-size:18px;width:28px!important;height:28px!important;text-align:center;line-height:23px}
.state-caption{background:transparent;border:0;color:#3e5c76;font:700 12px/20px Arial,sans-serif;letter-spacing:1.5px;text-align:center;text-shadow:0 1px 2px white,1px 0 2px white,-1px 0 2px white,0 -1px 2px white;opacity:.75}
body[data-map-theme=dark] .state-caption{color:#c4d7e8;text-shadow:0 1px 2px #123,1px 0 2px #123,-1px 0 2px #123,0 -1px 2px #123}
.peak-marker{font-size:19px;line-height:20px;color:#e6a125;text-align:center;text-shadow:0 1px 1px white,1px 0 1px white,-1px 0 1px white;filter:drop-shadow(0 1px 3px #1225);background:transparent;border:0}
.track-arrow{background:transparent;border:0;pointer-events:none}.track-arrow svg{width:18px;height:18px}
.leaflet-popup-content{font-size:12px;line-height:1.65;max-width:min(280px,calc(100vw - 76px));overflow-wrap:anywhere}
.leaflet-popup-content h3{margin:0 0 5px}.leaflet-popup-content button{margin-top:7px}.leaflet-container a.leaflet-popup-close-button{font-size:23px;width:32px;height:32px;line-height:32px}
/* Panels are opt-in. Every screen starts with the full-width map. */
body[data-layout=tablet] .banner{gap:8px}
body[data-layout=tablet] .banner h1{font-size:18px}
body[data-layout=tablet] #focusMap .action-text,body[data-layout=tablet] #selectedReading{display:none}
body[data-layout=tablet] .toolbar-primary .icon,body[data-layout=tablet] #replayOpen .icon,body[data-layout=tablet] #toolsToggle .icon,body[data-layout=tablet] .quick-help .icon,body[data-layout=tablet] .mobile-menu .icon{display:none}
body[data-layout=tablet] .toolbar button,body[data-layout=tablet] .mobile-menu{font-size:11px;padding:6px 8px}
body[data-layout=tablet] .connection #connectionText{display:none}
body[data-layout=tablet][data-detail-open=true] #tracker,body[data-layout=tablet][data-layers-open=true] #tracker{--detail-width:310px}
body[data-layout=phone] .banner{height:52px;padding:4px max(8px,env(safe-area-inset-right)) 4px max(8px,env(safe-area-inset-left));gap:5px}
body[data-layout=phone] .logo-container img{width:44px;height:38px}
body[data-layout=phone] .banner h1{font-size:15px;line-height:1.08}
body[data-layout=phone] .title-live{display:none}
body[data-layout=phone] .map-hint{font-size:9px;line-height:1.1;margin-top:2px}
body[data-layout=phone] .toolbar{gap:4px;position:static}
body[data-layout=phone] .toolbar-primary,body[data-layout=phone] .toolbar .action-text,body[data-layout=phone] .desktop-control,body[data-layout=phone] .mobile-menu .action-text{display:none}
body[data-layout=phone] .toolbar>button,body[data-layout=phone] .mobile-menu{width:44px;min-width:44px;min-height:44px;padding:8px}
body[data-layout=phone] #toolsToggle .action-text,body[data-layout=phone] .mobile-menu .action-text{display:inline}
body[data-layout=phone] #toolsToggle .icon,body[data-layout=phone] .quick-help .icon,body[data-layout=phone] .mobile-menu .icon{display:none}
body[data-layout=phone] #toolsToggle,body[data-layout=phone] .quick-help,body[data-layout=phone] .mobile-menu{font-size:10px;padding:4px}

body[data-layout=phone] .connection{max-width:8px;margin:0 2px}
body[data-layout=phone] .connection #connectionText{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
body[data-layout=phone] .toolbar-secondary{right:8px;top:calc(100% + 6px)}
body[data-layout=phone] .toolbar-secondary>button{min-height:44px}
body[data-layout=phone] #siteNav ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
body[data-layout=phone] #siteNav a{font-size:12px}
body[data-layout=phone] #tracker{--flight-width:0px;--detail-width:0px;grid-template-columns:minmax(0,1fr)}
body[data-layout=phone] .map-canvas,body[data-layout=phone] .timeline{grid-column:1}
body[data-layout=phone] .panel{grid-column:1;grid-row:1;align-self:end;justify-self:center;position:relative;inset:auto;width:calc(100% - 16px);max-width:620px;height:50%;max-height:calc(100% - 12px);min-height:min(250px,calc(100% - 12px));margin:0 0 6px;border:1px solid #c6d9e7;border-radius:17px;box-shadow:0 -5px 25px #12334c28;z-index:40}
body[data-layout=phone] .panel[data-sheet=full]{height:calc(100% - 12px)}
body[data-layout=phone] .panel[data-sheet=peek]{height:116px;min-height:min(116px,calc(100% - 12px))}
body[data-layout=phone] .panel[data-sheet=peek] .panel-body{display:none}
body[data-layout=phone] .panel-heading{padding:7px 13px 10px;min-height:68px;gap:8px}
body[data-layout=phone] .panel h2{font-size:18px;margin-top:2px}
body[data-layout=phone] .eyebrow{font-size:8px;letter-spacing:1px}
body[data-layout=phone] .icon-btn{min-width:44px;width:44px;height:44px}
body[data-layout=phone] .sheet-grip{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:44px;height:44px;border:0;border-radius:0;padding:7px 12px 3px;color:#53748f;background:#f8fbfe;cursor:ns-resize;touch-action:none;flex:none}
.grip-line{display:inline-block;width:34px;height:4px;border-radius:6px;background:#a9c0d3}
.sheet-size-label{font-size:10px;font-weight:600}
body[data-layout=phone] input:not([type=checkbox]):not([type=range]),body[data-layout=phone] select{font-size:16px;min-height:44px}
body[data-layout=phone] .serial-form{margin:11px 12px 10px}
body[data-layout=phone] .serial-form button{min-width:55px;min-height:44px}
body[data-layout=phone] .serial-form .filter-toggle{display:inline-flex;min-width:55px;width:auto;padding:6px;font-size:11px}
body[data-layout=phone] .flight-panel[data-filters-open=true] .flight-filters{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain}
body[data-layout=phone] .flight-panel[data-filters-open=true] .flight-list{display:none}
body[data-layout=phone] .filter-apply{display:flex;margin:12px;width:calc(100% - 24px);min-height:44px;color:#075fc1;background:#eaf3ff}
body[data-layout=phone] .filters{padding:0 12px 10px;gap:9px}
body[data-layout=phone] .filters select{font-size:16px}
body[data-layout=phone] .list-options{padding:8px 12px}
body[data-layout=phone] .list-options select{font-size:16px;width:150px}
body[data-layout=phone] .list-options label{font-size:11px;min-height:44px}
body[data-layout=phone] .flight-card{padding:12px 15px;min-height:86px}
body[data-layout=phone] .list-footer{font-size:9px;padding:7px 12px}
body[data-layout=phone] .detail-scroll{padding:12px 13px 20px}
body[data-layout=phone] .detail-actions button,body[data-layout=phone] .exports button{min-height:44px}
body[data-layout=phone] .metric{padding:10px 9px}
body[data-layout=phone] .metric strong{font-size:21px}
body[data-layout=phone] .layer-body{padding:0 14px 18px}
body[data-layout=phone] .check{min-height:48px;font-size:13px;padding:10px 0}
body[data-layout=phone] .timeline{padding:1px 4px 2px}
body[data-layout=phone] .playback-row{gap:2px}
body[data-layout=phone] .playback-row button{min-width:44px;padding:4px 5px}
body[data-layout=phone] #play{min-width:44px;width:44px}
body[data-layout=phone] #playLabel{display:none}
body[data-layout=phone] #replayOptionsToggle{min-width:44px}
body[data-layout=phone] #goLive{min-width:56px}
body[data-layout=phone] .playback-caption{gap:3px}
body[data-layout=phone] .playback-caption strong{font-size:9px}
body[data-layout=phone] .mobile-dock{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:3px max(6px,env(safe-area-inset-right)) calc(3px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));border-top:1px solid #cfdfeb;background:white;z-index:700}
body[data-layout=phone] .mobile-dock button{display:flex;align-items:center;justify-content:center;flex-direction:row;gap:5px;min-width:0;min-height:44px;padding:3px 4px;border:0;border-radius:8px;background:transparent;color:#56758e;font-size:10px}
body[data-layout=phone] .mobile-dock button[aria-current=page]{background:#eaf3ff;color:#075fc1}
body[data-layout=phone] .mobile-dock .icon{width:18px;height:18px}
body[data-layout=phone] .mobile-dock .selection-copy{font-size:10px;max-width:100%}
body[data-layout=phone] .mobile-dock #dockSelected .icon{display:none}
body[data-layout=phone] .mobile-dock .selection-copy small{font-size:8px}
.dock-icon{position:relative;display:inline-flex}
.dock-count{position:absolute;left:12px;top:-6px;padding:1px 3px;border-radius:9px;border:1px solid white;background:#095fbf;color:white;font-size:8px;line-height:1.3;font-weight:700}
body[data-layout=phone][data-panel-open=true] .map-legend,body[data-layout=phone][data-panel-open=true] .map-inspector{visibility:hidden}
body[data-layout=phone] .map-legend{font-size:9px;padding:7px 9px;gap:5px 9px}
body[data-layout=phone] .map-inspector{font-size:9px;bottom:38px}
body[data-layout=phone] .leaflet-control-attribution{font-size:8px!important;max-width:calc(100% - 16px)}
body[data-layout=phone] .leaflet-control-zoom a{width:44px!important;height:44px!important;line-height:44px!important}
body[data-layout=phone] .toast{bottom:calc(62px + env(safe-area-inset-bottom));font-size:12px}
body[data-layout=phone] dialog{padding:18px 17px;max-height:calc(var(--app-height,100dvh) - 24px);font-size:13px}
body[data-layout=phone] .telemetry-label i{display:none}
body[data-layout=phone] .telemetry-label strong{font-size:10px}
body[data-layout=phone] .telemetry-label .label-alt{font-size:9px}
body[data-layout=phone] .sonde-marker{filter:drop-shadow(0 2px 2px #14375250)}
/* Short landscape sheets sit beside the map only after the user opens one. */
body[data-layout=phone][data-landscape=true] .panel{justify-self:end;align-self:stretch;width:min(390px,58%);height:calc(100% - 10px);max-height:calc(100% - 10px);min-height:0;margin:5px;border-radius:12px}
body[data-layout=phone][data-landscape=true] .panel[data-sheet=peek]{width:220px;height:116px;align-self:end}
body[data-layout=phone][data-landscape=true] .sheet-grip{display:none}
body[data-layout=phone][data-landscape=true] .panel-heading{min-height:56px;padding:8px 10px}
body[data-layout=phone][data-landscape=true] .serial-form{margin:7px 10px}
body[data-layout=phone][data-landscape=true] .list-footer{display:none}
body[data-layout=phone][data-landscape=true] .mobile-dock{max-width:520px;width:100%;justify-self:center;border-radius:8px 8px 0 0}
body[data-layout=phone][data-keyboard=true] .toolbar,body[data-layout=phone][data-keyboard=true] .mobile-dock,body[data-layout=phone][data-keyboard=true] .timeline{display:none}
body[data-layout=phone][data-keyboard=true] .sheet-grip,body[data-layout=phone][data-keyboard=true] .list-footer{display:none}
body[data-layout=phone][data-keyboard=true] .panel-heading{min-height:52px;padding:8px 12px}
#siteNav .weather-search{display:flex;padding:12px;gap:8px;max-width:540px;margin:auto}
#siteNav .weather-search input{flex:1;width:0;font-size:16px;min-height:44px}
#siteNav .weather-search button{min-height:44px}
body[data-focus=true]{grid-template-rows:minmax(0,1fr)}
body[data-focus=true] .timeline{height:calc(48px + env(safe-area-inset-bottom));padding-bottom:calc(2px + env(safe-area-inset-bottom))}
body[data-focus=true] header,body[data-focus=true] .mobile-dock,body[data-focus=true] .map-legend,body[data-focus=true] .map-inspector{display:none}
body[data-focus=true] .leaflet-top{top:env(safe-area-inset-top)}
body[data-focus=true] .leaflet-bottom{bottom:env(safe-area-inset-bottom)}
body[data-focus=true] .leaflet-left{left:env(safe-area-inset-left)}
.quick-start{padding-left:21px}.quick-start li{margin:10px 0}
@media(max-width:1450px){body[data-layout=desktop] .connection #connectionText,body[data-layout=desktop] #focusMap .action-text{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.sonde-marker .sonde-halo{animation:none!important}.leaflet-zoom-animated{transition:none!important}}
