:root{--bg:#080c10;--panel:#0c1118;--border:#182030;--accent:#00e5ff;--accent2:#ff7840;--green:#39ff14;--muted:#607080;--text:#aac0d0;--dim:#8090a0;--mono:Verdana,Arial,sans-serif;--sans:Arial,Verdana,sans-serif;--timebar-h:53px}
:root.light{--bg:#f0f4f8;--panel:#ffffff;--border:#c8d4e0;--accent:#0077aa;--accent2:#d05010;--green:#1a7a1a;--muted:#7a8fa0;--text:#1a2e40;--dim:#4a6070;}
*{margin:0;padding:0;box-sizing:border-box}
html{height:100%}
body{background:var(--bg);color:var(--text);font-family:var(--sans);height:100vh;height:-webkit-fill-available;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
header{display:flex;align-items:center;gap:14px;padding:0 18px;height:44px;border-bottom:1px solid var(--border);background:var(--panel);flex-shrink:0}
.logo{font-family:var(--mono);font-size:14px;color:var(--accent);letter-spacing:4px;text-decoration:none}
.logo b{color:var(--accent2);font-weight:normal}
.hsep{flex:1}
.chip{font-family:var(--mono);font-size:11px;padding:2px 8px;letter-spacing:2px;border:1px solid;cursor:default}
.chip.d{color:var(--dim);border-color:var(--border)}
.chip.g{color:var(--green);border-color:rgba(57,255,20,.25);background:rgba(57,255,20,.05)}
.theme-btn{background:transparent;border:1px solid var(--border);color:var(--text);width:30px;height:30px;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;transition:opacity .15s}
.theme-btn:hover{border-color:var(--accent)}
.lang-sel{background:var(--panel);border:1px solid var(--border);color:var(--text);height:30px;padding:0 6px;font-family:var(--mono);font-size:11px;letter-spacing:1px;cursor:pointer}
.lang-sel:hover{border-color:var(--accent)}
.main{display:flex;flex:1;overflow:hidden}
.side{width:260px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;transition:width .22s ease,opacity .22s ease,border .22s ease}
.side.collapsed{width:0;opacity:0;border-right:none;pointer-events:none}
.side-right{border-right:none;border-left:1px solid var(--border)}
.side-right.collapsed{width:0;opacity:0;border-left:none;pointer-events:none}
.article-nav{margin-bottom:14px}
.article-nav-title{margin-bottom:8px}
.article-list{list-style:none;display:flex;flex-direction:column;gap:6px}
.article-link{display:block;padding:8px 10px;font-family:var(--sans);font-size:13px;font-weight:700;line-height:1.4;letter-spacing:.3px;color:var(--text);text-decoration:none;border:1px solid var(--border);transition:all .12s}
.article-link:hover{border-color:var(--accent);color:var(--accent);background:rgba(0,229,255,.06)}
.article-nav-footer{margin-top:4px}
.sb{flex:1;overflow-y:auto;padding:13px;display:flex;flex-direction:column;gap:14px}
.sb::-webkit-scrollbar{width:3px}.sb::-webkit-scrollbar-thumb{background:var(--muted)}
.lbl{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:3px;margin-bottom:6px}
.search-wrap{position:relative}
.search-input{background:var(--panel);border:1px solid var(--border);color:var(--text);height:34px;width:100%;padding:0 10px;font-family:var(--sans);font-size:13px}
.search-input:focus{outline:none;border-color:var(--accent)}
.search-results{position:absolute;top:calc(100% + 2px);left:0;right:0;background:var(--panel);border:1px solid var(--border);max-height:260px;overflow-y:auto;z-index:1100;display:none}
.search-item{padding:8px 10px;font-family:var(--sans);font-size:13px;color:var(--text);cursor:pointer;border-bottom:1px solid var(--border)}
.search-item:last-child{border-bottom:none}
.search-item:hover{background:rgba(0,229,255,.08);color:var(--accent)}
.search-recent{margin-top:6px;font-family:var(--mono);font-size:11px;color:var(--dim);line-height:1.6}
.search-recent-item{background:none;border:none;padding:0;color:var(--text);cursor:pointer;font:inherit}
.search-recent-item:hover{color:var(--accent);text-decoration:underline}
.layer-btn{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:9px 10px;font-family:var(--sans);font-weight:700;font-size:14px;letter-spacing:1px;background:transparent;border:1px solid var(--border);color:var(--dim);cursor:pointer;transition:all .12s;margin-bottom:6px;text-decoration:none}
.layer-btn:last-child{margin-bottom:0}
.layer-btn .sw{width:14px;height:14px;flex-shrink:0;border:1px solid var(--border)}
.layer-btn.on{border-color:var(--accent);color:var(--text);background:rgba(0,229,255,.06)}
.layer-btn:hover:not(.on){color:var(--text);border-color:var(--muted)}
.chk-row{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;font-family:var(--sans);font-weight:700;font-size:14px;letter-spacing:1px;border:1px solid var(--border);color:var(--text);cursor:pointer;background:transparent}
.chk-row input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}
.unit-toggle{display:flex;gap:4px}
.unit-btn{background:transparent;border:1px solid var(--border);color:var(--dim);width:40px;height:30px;cursor:pointer;font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:1px;transition:all .12s}
.unit-btn:hover{border-color:var(--accent);color:var(--text)}
.unit-btn.on{border-color:var(--accent);color:var(--accent);background:rgba(0,229,255,.06)}
.legend{display:flex;flex-direction:column;gap:4px}
.legend-bar{height:14px;width:100%;border:1px solid var(--border)}
.legend-scale{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--dim)}
.runinfo{font-family:var(--mono);font-size:11px;color:var(--dim);line-height:1.8}
.runinfo b{color:var(--text);font-weight:normal}
.map-col{display:flex;flex-direction:column;flex:1;overflow:hidden;position:relative}
#map{flex:1;background:#0a0e14}
.map-hint{flex-shrink:0;text-align:center;font-family:var(--mono);font-weight:700;font-size:11px;letter-spacing:2px;color:var(--dim);background:var(--panel);border-top:1px solid var(--border);padding:6px 10px}
.timebar{background:var(--panel);border-top:1px solid var(--border);padding:10px 14px;display:flex;align-items:center;gap:12px;flex-shrink:0;width:100%}
.tbtn{background:transparent;border:1px solid var(--border);color:var(--text);width:32px;height:32px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .12s}
.tbtn:hover{border-color:var(--accent);color:var(--accent)}
.tbtn.on{border-color:var(--accent);color:var(--accent);background:rgba(0,229,255,.06)}
#timeslider{flex:1;accent-color:var(--accent)}
.timeval{font-family:var(--mono);font-size:13px;color:var(--accent);letter-spacing:1px;white-space:nowrap;min-width:170px;text-align:right}
.loading{position:absolute;top:10px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:11px;letter-spacing:3px;color:var(--accent);background:var(--panel);border:1px solid var(--border);padding:4px 12px;z-index:1000;display:none}
.loading.show{display:block}
.city-label{font-family:var(--mono);white-space:nowrap;pointer-events:none;line-height:1.1;text-align:center;transform:translate(-50%,-100%)}
.city-label .city-dot{display:block;width:4px;height:4px;margin:0 auto 1px;border-radius:50%;background:#fff;box-shadow:0 0 2px #000,0 0 0 1px rgba(0,0,0,.6)}
.city-label .city-temp{display:block;font-size:11px;font-weight:700;color:#000;text-shadow:0 0 2px #fff,0 0 2px #fff,0 0 3px #fff,0 0 3px #fff}
.city-label .city-name{display:block;font-size:8px;color:#fff;opacity:.85;text-shadow:0 0 2px #000,0 0 3px #000}
.point-popup-wrap .leaflet-popup-content-wrapper{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:0;font-family:var(--mono);box-shadow:none}
.point-popup-wrap .leaflet-popup-content{margin:10px 14px;min-width:140px}
.point-popup-wrap .leaflet-popup-tip{background:var(--panel);border:1px solid var(--border)}
.point-popup-wrap .leaflet-popup-close-button{width:30px!important;height:30px!important;font-size:20px!important;line-height:30px!important;text-align:center;top:2px!important;right:2px!important;color:var(--dim)!important}
.point-popup-wrap .leaflet-popup-close-button:hover{color:var(--accent)!important;background:transparent}
.point-popup-time{font-size:11px;letter-spacing:1px;color:var(--dim);padding:0 30px 4px 0;margin-bottom:4px;border-bottom:1px solid var(--border);line-height:1.5}
.point-popup-utc{font-size:10px;color:var(--muted);letter-spacing:.5px}
.point-popup-row{display:flex;justify-content:space-between;gap:14px;font-size:12px;letter-spacing:1px;padding:2px 0}
.point-popup-row span{color:var(--dim)}
.point-popup-row b{color:var(--accent);font-weight:normal}
.wind-arrow{display:inline-block;color:inherit}
.locate-control a{background:var(--panel);color:var(--text);font-size:18px;display:flex;align-items:center;justify-content:center}
.locate-control a:hover{color:var(--accent)}
.locate-control a.loading{opacity:.5;pointer-events:none}
.locate-control a svg{display:block}
.app-modal-overlay{display:none;position:fixed;inset:0;z-index:3000;align-items:center;justify-content:center;background:rgba(0,0,0,.58);padding:18px}
.app-modal-overlay.open{display:flex}
.app-modal{width:min(420px,100%);background:var(--panel);border:1px solid var(--border);color:var(--text);padding:18px;box-shadow:0 18px 45px rgba(0,0,0,.35)}
.app-modal-title{font-family:var(--mono);font-size:12px;letter-spacing:2px;color:var(--accent);margin-bottom:10px;text-transform:uppercase}
.app-modal-message{font-size:14px;line-height:1.45;color:var(--text);margin-bottom:18px}
.app-modal-btn{background:transparent;border:1px solid var(--accent);color:var(--accent);height:32px;min-width:78px;padding:0 14px;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:1px;cursor:pointer}
.app-modal-btn:hover,.app-modal-btn:focus{background:rgba(0,229,255,.08);outline:none}
.forecast-bar{display:none;flex-direction:column;background:var(--panel);border-top:1px solid var(--border);max-height:180px;overflow:hidden}
.forecast-bar.open{display:flex}
.forecast-bar-header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--border);flex-shrink:0}
.forecast-bar-title{font-family:var(--mono);font-size:11px;letter-spacing:2px;color:var(--accent);text-transform:uppercase}
.forecast-bar-close{background:transparent;border:1px solid var(--border);color:var(--dim);width:28px;height:28px;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;transition:all .12s}
.forecast-bar-close:hover{border-color:var(--accent);color:var(--accent)}
.forecast-bar-content{flex:1;overflow-x:auto;overflow-y:hidden;padding:10px 14px;display:flex;gap:0}
.forecast-bar-content::-webkit-scrollbar{height:4px}.forecast-bar-content::-webkit-scrollbar-thumb{background:var(--muted)}
.forecast-bar-loading{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:2px;padding:20px;text-align:center;width:100%}
.forecast-bar-message{font-family:var(--mono);font-size:11px;color:var(--muted);padding:16px 20px;text-align:center;width:100%;line-height:1.5}
.forecast-item{display:flex;flex-direction:column;align-items:center;padding:6px 12px;border-right:1px solid var(--border);min-width:80px;flex-shrink:0;cursor:pointer;transition:background .12s}
.forecast-item:last-child{border-right:none}
.forecast-item:hover{background:rgba(0,229,255,.06)}
.forecast-item.active{background:rgba(0,229,255,.12)}
.forecast-item-time{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:1px;margin-bottom:4px;white-space:nowrap}
.forecast-item-date{font-family:var(--mono);font-size:9px;color:var(--muted);letter-spacing:1px;margin-bottom:6px}
.forecast-item-icon{font-size:20px;margin-bottom:2px;line-height:1}
.forecast-item-temp{font-family:var(--mono);font-size:14px;color:var(--accent);font-weight:700;margin-bottom:2px}
.forecast-item-precip{font-family:var(--mono);font-size:10px;color:var(--text)}
.forecast-item.max-temp{background:rgba(255,180,0,.08);border-left:2px solid #fb0}
.forecast-item.max-temp .forecast-item-time{color:#fb0;font-weight:700}
.forecast-item.min-temp{background:rgba(0,180,255,.08);border-left:2px solid #0bf}
.forecast-item.min-temp .forecast-item-time{color:#0bf;font-weight:700}
.forecast-item-wind{font-family:var(--mono);font-size:9px;color:var(--dim);display:flex;align-items:center;gap:2px}
.forecast-item-wind .wind-arrow{font-size:11px}
@media (max-width:1100px){
  .side-right{display:none}
}
@media (max-width:700px){
  .side{position:fixed;top:44px;bottom:var(--timebar-h);left:0;z-index:1001}
  .timeval{min-width:120px;font-size:11px}
  .point-popup-wrap .leaflet-popup-close-button{width:38px!important;height:38px!important;font-size:24px!important;line-height:38px!important}
  .forecast-bar{max-height:220px}
  .forecast-bar-content{flex-direction:column;overflow-x:hidden;overflow-y:auto;gap:0}
  .forecast-bar-content::-webkit-scrollbar{width:4px;height:auto}
  .forecast-item{flex-direction:row;justify-content:space-between;align-items:center;padding:8px 12px;border-right:none;border-bottom:1px solid var(--border);min-width:0;width:100%}
  .forecast-item:last-child{border-bottom:none}
  .forecast-item-time{margin-bottom:0;margin-right:8px;min-width:44px}
  .forecast-item-date{margin-bottom:0;margin-right:auto;min-width:60px}
  .forecast-item-icon{margin-bottom:0;margin-right:10px;font-size:18px}
  .forecast-item-temp{margin-bottom:0;margin-right:10px;min-width:45px}
  .forecast-item-precip{margin-right:10px;min-width:45px}
}
@media (max-width:480px){
  :root{--timebar-h:49px}
  .timeval{min-width:0;font-size:10px;text-align:center}
  .timebar{padding:8px;gap:8px}
}
.site-footer{border-top:1px solid var(--border);background:var(--panel);padding:14px 20px;text-align:center;font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:1px;flex-shrink:0;display:flex;justify-content:center;align-items:center;gap:6px;flex-wrap:wrap}
.site-footer a{color:var(--accent);text-decoration:none}
.site-footer a:hover{color:var(--text)}
.site-footer .sep{color:var(--muted)}
