html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#111;color:#eee;font-family:Arial,Helvetica,sans-serif}.iw-map-shell{position:relative;width:100%;height:100vh;display:flex;flex-direction:column;overflow:hidden;background:#111;border:1px solid #444;box-sizing:border-box}.iw-toolbar{height:42px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;background:#202020;border-bottom:1px solid #555;box-sizing:border-box}.iw-toolbar strong{color:#fff}.iw-toolbar span{margin-left:14px;color:#d7d7d7;font-size:12px}.iw-toolbar button{background:#333;color:#fff;border:1px solid #777;border-radius:3px;padding:5px 10px;cursor:pointer}#map{height:auto;min-height:0;flex:1 1 auto;background:#050505}.iw-status{display:flex;gap:18px;flex-wrap:wrap;padding:6px 10px;background:#202020;border-top:1px solid #555;font-size:12px}.leaflet-control-layers{background:#222;color:#eee;border:1px solid #666}.leaflet-control-layers-separator{border-top-color:#555}.metar-temp{background:transparent;border:0}.metar-temp span{display:block;min-width:26px;text-align:center;font-weight:700;font-size:13px;color:#fff;text-shadow:-1px -1px 1px #000,1px -1px 1px #000,-1px 1px 1px #000,1px 1px 1px #000}.alert-popup{max-width:380px}.alert-popup h3{margin:0 0 6px}.alert-popup .meta{font-size:12px;color:#555;margin-bottom:6px}.leaflet-container{font-family:Arial,Helvetica,sans-serif}@media(max-width:700px){#map{height:auto;min-height:0}.iw-toolbar span{display:none}.iw-status{gap:8px;font-size:11px}}

/* v1.0.1 - dark treatment for keyless OpenStreetMap base tiles */
.iw-dark-tiles { filter: grayscale(1) invert(.88) brightness(.70) contrast(1.20); }
.leaflet-tile-pane { background:#17191b; }


/* v1.0.2 - map clarity */
.leaflet-pane.iw-boundaries-pane { pointer-events:none; }
.metar-temp span{font-size:14px;text-shadow:-2px -2px 2px #000,2px -2px 2px #000,-2px 2px 2px #000,2px 2px 2px #000,0 0 4px #000;}


/* v1.0.3 - brighter independent city/state reference labels */
.leaflet-pane.iw-labels-pane{pointer-events:none;}

/* v1.1.0 weather imagery opacity control */
.iw-opacity{background:rgba(24,24,24,.94);color:#eee;padding:8px 10px;min-width:185px;border:1px solid #555!important;border-radius:4px;font:12px Arial,sans-serif}.iw-opacity div{margin-bottom:5px}.iw-opacity label{display:grid;grid-template-columns:58px 1fr;align-items:center;gap:5px;margin:4px 0}.iw-opacity input{width:110px;accent-color:#ff5a2a}.leaflet-image-layer{image-rendering:auto}

/* v1.1.1 - keep weather opacity controls clear of the status bar */
.iw-opacity{margin-bottom:18px!important;}

/* v1.1.2 - desktop/mobile weather-control positioning cleanup */
@media (min-width:701px){
  .iw-opacity{margin-bottom:62px!important;padding:10px 12px;}
}
@media (max-width:700px){
  .iw-opacity{margin-bottom:30px!important;min-width:170px;padding:7px 9px;}
  .iw-opacity input{width:96px;}
}
/* v1.2.0 alert interaction */
.iw-alert-drawer{position:absolute;z-index:1200;top:48px;right:10px;width:min(430px,calc(100vw - 20px));max-height:calc(100% - 70px);overflow:auto;background:rgba(20,22,24,.97);border:1px solid #68717a;border-radius:4px;color:#eee;padding:14px 16px;box-shadow:0 4px 18px rgba(0,0,0,.55);display:none}.iw-alert-drawer.open{display:block}.iw-alert-close{float:right;background:#333;color:#fff;border:1px solid #666;border-radius:3px;font-size:22px;line-height:24px;width:30px;height:30px;cursor:pointer}.iw-alert-drawer h2{font-size:18px;margin:0 36px 4px 0}.iw-alert-drawer .iw-event{font-weight:700}.iw-alert-drawer .iw-meta{font-size:12px;color:#c8cdd2;margin:6px 0 12px}.iw-alert-drawer .iw-alert-text{white-space:pre-wrap;font-family:monospace;font-size:12px;line-height:1.35;background:#0e0f10;border:1px solid #3b4045;padding:10px;max-height:360px;overflow:auto}.iw-alert-drawer .iw-areas{font-size:13px;margin:8px 0}.iw-alert-drawer .iw-archive-tag{font-size:11px;color:#8ee58e;margin-top:7px}.iw-alert-list-marker{background:transparent;border:0}.iw-alert-badge{display:inline-block;padding:2px 6px;border-radius:3px;color:#111;font-weight:700;font-size:11px}
@media(max-width:700px){.iw-alert-drawer{top:44px;right:5px;width:calc(100vw - 10px);max-height:calc(100% - 55px)}}
/* v1.2.1 - alert panel polish */
.iw-alert-drawer{background:#141618;box-shadow:0 6px 24px rgba(0,0,0,.72)}
.iw-alert-drawer .iw-alert-text{max-height:430px;background:#0b0c0d}
@media(max-width:700px){.iw-alert-drawer .iw-alert-text{max-height:52vh}}

/* v1.3.0 - interactive METAR detail cards */
.iw-metar-card{font:13px Arial,Helvetica,sans-serif;color:#222}.iw-metar-card h3{margin:0 0 4px;font-size:16px}.iw-metar-big{font-size:25px;font-weight:800;margin-bottom:8px;text-shadow:0 1px 1px #fff}.iw-metar-grid{display:grid;grid-template-columns:88px 1fr;gap:4px 8px;border-top:1px solid #ccc;padding-top:7px}.iw-metar-grid b{color:#444}.iw-raw-metar{margin-top:9px;padding:7px;background:#1b1d1f;color:#eee;border-radius:3px;font:11px/1.35 monospace;white-space:normal;overflow-wrap:anywhere}.leaflet-popup-content{margin:11px 13px}

/* v1.4.1 - refined zoom-aware METAR wind barbs */
.iw-metar-symbol{position:relative;width:58px;height:48px;overflow:visible}.iw-metar-symbol .iw-temp-value{position:absolute;left:0;top:14px;display:block;min-width:28px;text-align:center;font-weight:700;font-size:14px;text-shadow:-2px -2px 2px #000,2px -2px 2px #000,-2px 2px 2px #000,2px 2px 2px #000,0 0 4px #000}.iw-wind-barb{position:absolute;left:25px;top:9px;width:26px;height:30px;transform-origin:13px 26px;overflow:visible}.iw-wind-barb line,.iw-wind-barb polygon{stroke:#f5f5f5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;fill:#f5f5f5;filter:drop-shadow(0 0 1px #000)}

/* v1.5.0 - optional full METAR station model */
.iw-opacity select{margin-left:8px;background:#25282c;color:#eee;border:1px solid #777;border-radius:3px;padding:2px 4px;font-size:11px}
.iw-station-model{position:relative;width:72px;height:58px;overflow:visible;font:700 11px Arial,Helvetica,sans-serif;text-shadow:-1px -1px 2px #000,1px -1px 2px #000,-1px 1px 2px #000,1px 1px 2px #000}
.iw-station-model .iw-wind-barb{left:27px;top:12px}
.iw-sm-temp{position:absolute;left:2px;top:5px;font-size:12px}
.iw-sm-dew{position:absolute;left:2px;bottom:5px;color:#74d9ff;font-size:12px}
.iw-sm-pressure{position:absolute;right:0;top:5px;color:#f4f4f4}
.iw-sm-wx{position:absolute;right:0;bottom:5px;color:#f4f4f4;max-width:34px;white-space:nowrap;overflow:hidden}
.iw-sm-sky{position:absolute;left:31px;top:25px;width:8px;height:8px;border:1.5px solid #fff;border-radius:50%;background:#222;box-shadow:0 0 2px #000}

/* v1.5.1 - conventional station-model layout and decluttering */
.iw-station-model{width:78px;height:62px;font-size:10px}
.iw-station-model .iw-wind-barb{left:29px;top:13px;width:24px;height:28px;opacity:.9}
.iw-sm-temp{left:4px!important;top:5px!important;font-size:12px!important}
.iw-sm-dew{left:4px!important;bottom:6px!important;font-size:12px!important}
.iw-sm-pressure{right:2px!important;top:6px!important;font-size:10px;color:#ddd!important;font-weight:600}
.iw-sm-wx{left:7px!important;right:auto!important;bottom:auto!important;top:25px!important;width:22px;max-width:22px!important;text-align:right;font-size:9px;color:#eee!important}
.iw-sm-sky{left:33px!important;top:27px!important;width:6px!important;height:6px!important;border-width:1px!important}

/* v1.5.2 - final station-model visual polish */
.iw-station-model .iw-sm-pressure{font-size:9px!important;font-weight:500!important;color:#bfc4c9!important;text-shadow:-1px -1px 1px #000,1px 1px 1px #000}
.iw-station-model .iw-sm-sky{left:34px!important;top:27px!important;width:5px!important;height:5px!important;border:1px solid #e8e8e8!important;background:#16181a!important;z-index:3}
.iw-station-model .iw-wind-barb{left:28px!important;top:11px!important;width:23px!important;height:27px!important;transform-origin:11.5px 23px!important;opacity:.88}
.iw-station-model .iw-wind-barb line,.iw-station-model .iw-wind-barb polygon{stroke-width:1.15!important}

/* v1.5.3 viewport cleanup */
.iw-toolbar{flex:0 0 42px}.iw-status{flex:0 0 auto;box-sizing:border-box}.leaflet-container{min-height:0}

/* v1.6.0 - optional METAR flight-category visualization */
.iw-flightcat{position:relative;display:flex;align-items:center;gap:3px;height:22px;padding:0 4px;border-radius:4px;background:rgba(8,10,12,.78);white-space:nowrap;font:700 10px Arial,Helvetica,sans-serif;text-shadow:0 1px 2px #000;box-sizing:border-box}
.iw-fc-dot{display:inline-block;width:9px;height:9px;border:2px solid currentColor;border-radius:50%;box-sizing:border-box;background:currentColor;box-shadow:0 0 2px #000}
.iw-fc-code{color:inherit}.iw-fc-id{font-size:8px;color:#ddd;font-weight:600}
.iw-fc-vfr{color:#32e66b}.iw-fc-mvfr{color:#36a9ff}.iw-fc-ifr{color:#ff4b4b}.iw-fc-lifr{color:#e34cff}
.iw-fc-—{color:#aaa}

/* v1.6.1 compact flight categories */
.iw-flightcat{display:flex!important;align-items:center;justify-content:center;width:20px!important;height:20px!important;padding:0!important;border-radius:50%!important;border:2px solid rgba(255,255,255,.92);box-sizing:border-box;background:#666;font:700 11px/16px Arial,Helvetica,sans-serif!important;color:#fff!important;text-shadow:0 1px 2px #000;box-shadow:0 1px 3px rgba(0,0,0,.9)}
.iw-fc-vfr{background:#169b3b!important}.iw-fc-mvfr{background:#1677d2!important}.iw-fc-ifr{background:#d52222!important}.iw-fc-lifr{background:#b51bc4!important}.iw-fc-unknown{background:#666!important}
.iw-flightcat .iw-fc-dot,.iw-flightcat .iw-fc-code,.iw-flightcat .iw-fc-id{display:none!important}

/* v1.6.2 dew-point display */
.iw-dew-value{font-weight:700;font-size:13px;line-height:18px;text-shadow:-1px -1px 1px #000,1px -1px 1px #000,-1px 1px 1px #000,1px 1px 1px #000;white-space:nowrap}

/* v1.6.3 relative-humidity display */
.iw-rh-value{font-weight:700;font-size:12px;line-height:18px;text-shadow:-1px -1px 1px #000,1px -1px 1px #000,-1px 1px 1px #000,1px 1px 1px #000;white-space:nowrap}

/* v1.6.4 apparent-temperature display */
.iw-feels-value{font-weight:700;font-size:13px;line-height:18px;text-shadow:-1px -1px 1px #000,1px -1px 1px #000,-1px 1px 1px #000,1px 1px 1px #000;white-space:nowrap}

/* v1.7.0 collapsible dynamic weather legend */
.iw-legend{background:rgba(25,25,25,.94);color:#eee;border:1px solid #555;border-radius:4px;font:12px/1.25 Arial,Helvetica,sans-serif;box-shadow:0 1px 5px rgba(0,0,0,.55)}
.iw-legend-toggle{background:#252525;color:#fff;border:0;border-radius:3px;padding:7px 11px;font-weight:700;cursor:pointer}
.iw-legend-body{display:none;width:220px;padding:9px 10px}.iw-legend-open .iw-legend-body{display:block}.iw-legend-open .iw-legend-toggle{width:100%;text-align:left;border-bottom:1px solid #555;border-radius:3px 3px 0 0}
.iw-legend-title{font-weight:700;font-size:13px;margin-bottom:7px}.iw-legend-section{border-top:1px solid #444;padding-top:7px;margin-top:7px}.iw-legend-section:first-child{border-top:0;margin-top:0;padding-top:0}.iw-legend-section b{display:block;margin-bottom:5px}
.iw-legend-row{display:flex;align-items:center;gap:7px;margin:3px 0}.iw-legend-swatch{display:inline-block;width:24px;height:4px;border:1px solid rgba(255,255,255,.75);box-sizing:border-box}
.iw-legend-note{font-size:10px;color:#bbb;margin-top:5px}.iw-legend-scale,.iw-radar-key{display:flex;height:9px;margin-top:5px;border:1px solid #777}.iw-legend-scale span,.iw-radar-key span{flex:1}.iw-legend-scale-labels{display:flex;justify-content:space-between;color:#bbb;font-size:10px;margin-top:2px}
.iw-radar-key .r1{background:#66b5ff}.iw-radar-key .r2{background:#37d7d7}.iw-radar-key .r3{background:#28c941}.iw-radar-key .r4{background:#08a318}.iw-radar-key .r5{background:#ffe21a}.iw-radar-key .r6{background:#ff8b00}.iw-radar-key .r7{background:#e62929}

/* v1.7.1 expanded alert legend */
.iw-legend-subtitle{font-weight:700;font-size:11px;color:#ddd;margin:7px 0 4px;padding-top:5px;border-top:1px dotted #555}


/* v1.8.0 point-weather drawer */
.iw-point-drawer{position:absolute;z-index:1190;top:48px;left:10px;width:min(390px,calc(100vw - 20px));max-height:calc(100% - 70px);overflow:auto;background:rgba(20,22,24,.98);border:1px solid #68717a;border-radius:4px;color:#eee;padding:14px 16px;box-shadow:0 6px 24px rgba(0,0,0,.72);display:none;font:13px Arial,Helvetica,sans-serif}.iw-point-drawer.open{display:block}.iw-point-drawer h2{font-size:18px;margin:0 36px 2px 0}.iw-point-coords{font-size:11px;color:#aeb6be;margin-bottom:9px}.iw-point-section{border-top:1px solid #444;padding-top:9px;margin-top:9px}.iw-point-section h3{font-size:13px;margin:0 0 7px;color:#f2f2f2}.iw-point-station{display:flex;justify-content:space-between;gap:8px;color:#ddd}.iw-point-station>div{display:flex;flex-direction:column;gap:2px}.iw-point-station small{font-size:10px;color:#8f979f;font-weight:400}.iw-point-station span{font-size:11px;color:#aaa;white-space:nowrap}.iw-point-temp{font-size:25px;font-weight:800;margin:5px 0 7px;text-shadow:0 1px 2px #000}.iw-point-grid{display:grid;grid-template-columns:82px 1fr;gap:4px 8px;font-size:12px}.iw-point-grid b{color:#bbb}.iw-point-count{display:inline-block;background:#3b4147;border-radius:10px;padding:1px 6px;font-size:10px;margin-left:3px}.iw-point-alerts{display:grid;gap:6px}.iw-point-alert{display:block;width:100%;text-align:left;background:#101214;color:#eee;border:1px solid #444;border-left:5px solid #00ffff;border-radius:3px;padding:7px 8px;cursor:pointer}.iw-point-alert:hover{background:#202428}.iw-point-alert b,.iw-point-alert span{display:block}.iw-point-alert span{font-size:11px;color:#c7cbd0;margin-top:2px;line-height:1.25}.iw-point-loading,.iw-point-none,.iw-point-empty{font-size:12px;color:#bbb}.iw-point-empty{padding:5px 0}
@media(max-width:700px){.iw-point-drawer{top:44px;left:5px;width:calc(100vw - 10px);max-height:calc(100% - 55px)}}
/* v1.8.2 NWS point forecast */
.iw-forecast-list{display:grid;gap:7px}.iw-forecast-period{background:#101214;border:1px solid #3e444a;border-radius:3px;padding:7px 8px}.iw-forecast-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.iw-forecast-head b{color:#f2f2f2}.iw-forecast-head strong{font-size:14px;color:#ffd84d;white-space:nowrap}.iw-forecast-short{font-weight:700;color:#dfe5ea;margin-top:3px}.iw-forecast-wind{font-size:11px;color:#aeb6be;margin-top:3px}.iw-forecast-detail{font-size:11px;line-height:1.35;color:#c7cbd0;margin-top:5px}


/* v1.9.0 regional forecast visualization */
.iw-fc-wrap{background:transparent;border:0}
.iw-fc-marker{background:rgba(10,12,14,.88);border:1px solid rgba(255,255,255,.5);border-radius:5px;padding:4px 7px;min-width:46px;text-align:center;box-shadow:0 1px 4px #000;text-shadow:0 1px 2px #000;white-space:nowrap}
.iw-fc-marker b{display:block;font-size:16px;line-height:18px}
.iw-fc-marker small{display:block;color:#ddd;font-size:10px;line-height:12px;font-weight:600}
.iw-fc-weather{max-width:150px;white-space:normal}
.iw-fc-weather b{font-size:12px;line-height:14px}
.iw-fc-note{background:rgba(10,12,14,.9);color:#fff;border:1px solid #777;border-radius:4px;padding:5px 8px;text-align:center;font-size:12px}

/* v2.0.0 outlook overlay tooltip */
.leaflet-tooltip{background:rgba(15,17,19,.94);color:#fff;border-color:#666;box-shadow:0 1px 5px #000}

/* v2.0.1: expanded legend stays inside viewport */
.iw-legend.iw-legend-open .iw-legend-body{
 max-height:calc(100vh - 105px);
 overflow-y:auto;
 overflow-x:hidden;
 scrollbar-width:thin;
}
.iw-legend.iw-legend-open .iw-legend-body::-webkit-scrollbar{width:7px}

/* v2.0.3 geographic water label */
.iw-water-label-icon{background:transparent!important;border:0!important}
.iw-water-label{width:150px;text-align:center;color:#28b9ee;font-size:12px;font-weight:700;font-style:italic;line-height:14px;text-shadow:0 1px 2px #000,1px 0 2px #000,-1px 0 2px #000,0 -1px 2px #000;pointer-events:none;white-space:nowrap}

/* v2.0.4 legend usability */
.iw-legend{margin-bottom:28px!important}
.iw-legend-title{display:flex;align-items:center;justify-content:space-between;gap:16px}
.iw-legend-close{margin-left:12px;padding:0 6px;border:1px solid #666;border-radius:3px;background:#292929;color:#fff;font-size:20px;line-height:22px;cursor:pointer}
.iw-legend-close:hover{background:#444}

/* Hide the obsolete reference-layer waterbody label area while keeping the
   application-owned Gulf of America label above it. */
.iw-water-label{position:relative;z-index:1000}

/* v2.0.6 supplemental city labels */
.iw-city-label-icon{background:transparent!important;border:0!important;pointer-events:none!important}
.iw-city-label{width:120px;text-align:center;color:#e8dfc0;font-size:10px;font-weight:600;
 line-height:12px;white-space:nowrap;text-shadow:0 1px 2px #000,1px 0 2px #000,-1px 0 2px #000,0 -1px 2px #000;
 pointer-events:none}

/* v2.0.7 city-label hierarchy */
.iw-city-label{letter-spacing:.05px}
.iw-city-label.iw-city-p1{font-size:9px;font-weight:500;color:#d8d1ba;opacity:.88}
.iw-city-label.iw-city-p2{font-size:10px;font-weight:600;color:#e9e0c2;opacity:.96}
.iw-city-label.iw-city-p3{font-size:11px;font-weight:700;color:#fff0c8;opacity:1;
 text-shadow:0 1px 3px #000,1px 0 3px #000,-1px 0 3px #000,0 -1px 3px #000}

/* v2.0.8 deterministic reference labels */
.iw-ref-label{width:130px;text-align:center;white-space:nowrap;pointer-events:none;text-shadow:0 1px 3px #000,1px 0 3px #000,-1px 0 3px #000,0 -1px 3px #000}
.iw-ref-major{font-size:11px;font-weight:700;color:#f2e5bd}
.iw-ref-city{font-size:10px;font-weight:600;color:#ded6bc}
.iw-ref-state{font-size:11px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:#aaaeb6;opacity:.72}

/* v2.0.9: METAR interaction target follows the visible station label only.
   Empty icon-box area does not intercept map clicks. */
.leaflet-marker-icon.iw-metar-icon{pointer-events:none!important}
.leaflet-marker-icon.iw-metar-icon .iw-metar-label,
.leaflet-marker-icon.iw-metar-icon .iw-metar-temp,
.leaflet-marker-icon.iw-metar-icon .iw-station-model{pointer-events:auto!important;cursor:pointer}

/* v2.0.11 Help */
.iw-header-btn{margin-left:6px}
.iw-help-modal{display:none;position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.58);align-items:center;justify-content:center;padding:18px}
.iw-help-modal.iw-help-open{display:flex}
.iw-help-panel{width:min(720px,94vw);max-height:86vh;background:#202020;color:#eee;border:1px solid #666;border-radius:5px;box-shadow:0 8px 28px rgba(0,0,0,.65);display:flex;flex-direction:column}
.iw-help-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid #555}
.iw-help-head h2{margin:0;font-size:17px;color:#fff}
.iw-help-close{border:1px solid #666;border-radius:3px;background:#292929;color:#fff;font-size:22px;line-height:24px;padding:0 7px;cursor:pointer}
.iw-help-close:hover{background:#444}
.iw-help-body{overflow-y:auto;padding:12px 15px 16px;font-size:13px;line-height:1.45}
.iw-help-body h3{margin:15px 0 4px;color:#fff;font-size:14px}
.iw-help-body h3:first-of-type{margin-top:8px}
.iw-help-body p{margin:4px 0 8px}

/* v2.0.12 grouped header actions */
.iw-header-actions{display:flex!important;align-items:center;gap:6px;margin-left:auto}
.iw-header-actions .iw-header-btn,.iw-header-actions button{position:static!important;right:auto!important;left:auto!important;top:auto!important;margin:0!important}
