/* =========================================================
   Meteo Ultra — main.css
   ========================================================= */
:root{
  --accent:#38e8ff;
  --accent2:#ffb347;
  --hot:#ff5d73;
  --ok:#3ddc97;
  --warn:#ffd34d;
  --txt:#eaf3ff;
  --muted:#93a8c8;
  --glass:rgba(16,28,56,.46);
  --glass-b:rgba(140,190,255,.14);
  --radius:22px;
  --sky1:#030817; --sky2:#0b1a3d; --sky3:#1a2b5c;
  --font-h:"Commissioner",system-ui,sans-serif;
  --font:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{
  margin:0;color:var(--txt);font-family:var(--font);font-size:16px;line-height:1.5;
  background:linear-gradient(180deg,var(--sky1) 0%,var(--sky2) 45%,var(--sky3) 100%) fixed;
  background-color:var(--sky1);min-height:100vh;overflow-x:hidden;
  transition:background 1.5s ease;
  -webkit-font-smoothing:antialiased;
}
/* sky palettes */
body[data-sky="day-clear"]{--sky1:#0b4d9c;--sky2:#2b86d6;--sky3:#7cc4ff}
body[data-sky="day-cloudy"]{--sky1:#2c3e5a;--sky2:#4d6584;--sky3:#8aa0ba}
body[data-sky="day-rain"]{--sky1:#18233a;--sky2:#2d3d58;--sky3:#4b5d78}
body[data-sky="day-storm"]{--sky1:#0d0f1f;--sky2:#24233f;--sky3:#3d3a5e}
body[data-sky="day-snow"]{--sky1:#5a6f8f;--sky2:#9cb3cf;--sky3:#d9e6f4}
body[data-sky="day-fog"]{--sky1:#566173;--sky2:#808b9c;--sky3:#b3bcc8}
body[data-sky="dawn"]{--sky1:#1b2050;--sky2:#8a4a7a;--sky3:#ff9a6b}
body[data-sky="night-clear"]{--sky1:#01030c;--sky2:#071232;--sky3:#14214d}
body[data-sky="night-cloudy"]{--sky1:#05070f;--sky2:#141b2c;--sky3:#252f45}
body[data-sky="night-rain"],body[data-sky="night-storm"]{--sky1:#020309;--sky2:#0c1020;--sky3:#1a2036}
body[data-sky="night-snow"],body[data-sky="night-fog"]{--sky1:#0b0f1a;--sky2:#1f2738;--sky3:#3a4558}

a{color:var(--accent)}
img{max-width:100%;height:auto}
button{font:inherit;color:inherit;cursor:pointer}
.mu-muted{color:var(--muted)}
.glass{
  background:var(--glass);border:1px solid var(--glass-b);border-radius:var(--radius);
  backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);
  box-shadow:0 10px 40px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.06);
}

/* canvas & flash */
#mu-sky{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.mu-flash{position:fixed;inset:0;z-index:1;pointer-events:none;background:#dfe9ff;opacity:0;mix-blend-mode:screen}
.mu-flash.on{animation:flash .6s ease-out}
@keyframes flash{0%{opacity:0}8%{opacity:.55}16%{opacity:.08}24%{opacity:.4}100%{opacity:0}}
.mu-bg-static{position:fixed;inset:0;z-index:0;background:radial-gradient(1200px 600px at 20% -10%,rgba(56,232,255,.18),transparent 60%),radial-gradient(900px 500px at 100% 10%,rgba(255,179,71,.12),transparent 60%)}

/* top bar */
.mu-top{position:sticky;top:0;z-index:50;background:rgba(3,8,23,.55);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--glass-b)}
.mu-top-in{max-width:1400px;margin:0 auto;display:flex;align-items:center;gap:20px;padding:10px 20px}
.mu-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--txt);font-family:var(--font-h);font-weight:800;letter-spacing:.2px;white-space:nowrap}
.mu-logo,.mu-logo-mark{width:34px;height:34px;color:var(--accent2)}
.mu-logo-mark svg{width:100%;height:100%}
.mu-live-dot{width:8px;height:8px;border-radius:50%;background:#ff3b5c;box-shadow:0 0 0 0 rgba(255,59,92,.7);animation:live 1.6s infinite}
@keyframes live{70%{box-shadow:0 0 0 10px rgba(255,59,92,0)}100%{box-shadow:0 0 0 0 rgba(255,59,92,0)}}
.mu-nav{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;margin-left:auto}
.mu-nav::-webkit-scrollbar{display:none}
.mu-nav a{color:var(--muted);text-decoration:none;padding:7px 12px;border-radius:999px;font-size:14px;white-space:nowrap;transition:.2s}
.mu-nav a:hover,.mu-nav a.on{color:#001018;background:var(--accent)}
.mu-nav li{list-style:none;display:inline-flex}

/* layout */
.mu{position:relative;z-index:2;max-width:1400px;margin:0 auto;padding:16px 20px 40px}
.block{margin-top:56px}
.block-head{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin:0 4px 16px}
.block-head h2{font-family:var(--font-h);font-weight:800;font-size:clamp(22px,3vw,32px);margin:0;letter-spacing:-.3px}
.block-head p{margin:0}
.block-head .ico{filter:drop-shadow(0 0 12px rgba(56,232,255,.5))}
.mt{margin-top:28px}

/* hero */
.hero{padding:22px 4px 8px;min-height:62vh;display:flex;flex-direction:column}
.hero-bar{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.loc{position:relative;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.loc-btn{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.08);border:1px solid var(--glass-b);padding:9px 16px;border-radius:999px;font-family:var(--font-h);font-weight:700;font-size:18px}
.loc-btn:hover{background:rgba(255,255,255,.14)}
.loc-pop{position:absolute;top:52px;left:0;z-index:30;width:min(360px,90vw);padding:12px}
.loc-pop input{width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--glass-b);background:rgba(0,0,0,.35);color:var(--txt);font:inherit;outline:none}
.loc-pop input:focus{border-color:var(--accent)}
.loc-pop ul{list-style:none;margin:8px 0;padding:0;max-height:260px;overflow:auto}
.loc-pop li button{width:100%;text-align:left;background:none;border:0;padding:10px 12px;border-radius:12px}
.loc-pop li button:hover{background:rgba(255,255,255,.08)}
.loc-pop li small{color:var(--muted);display:block}
.loc-actions{display:flex;gap:8px}
.loc-actions button{flex:1;padding:10px;border-radius:12px;border:1px solid var(--glass-b);background:rgba(255,255,255,.06)}
.clock{display:flex;flex-direction:column;line-height:1.15}
#clock-time{font-family:var(--font-h);font-weight:700;font-size:22px;font-variant-numeric:tabular-nums}
#clock-date{color:var(--muted);font-size:13px;text-transform:capitalize}
.hero-tools{display:flex;gap:8px}
.tool{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.08);border:1px solid var(--glass-b);border-radius:14px;padding:9px 13px;font-size:15px;transition:.2s}
.tool:hover{background:var(--accent);color:#001018}
.tool span{font-size:13px}
.hero-main{display:flex;align-items:center;gap:clamp(12px,3vw,40px);margin:auto 0;padding:24px 0;flex-wrap:wrap}
.hero-icon{width:clamp(120px,18vw,220px);height:clamp(120px,18vw,220px);filter:drop-shadow(0 20px 40px rgba(0,0,0,.35))}
.hero-icon svg{width:100%;height:100%}
.hero-temp{font-family:var(--font-h);font-weight:300;font-size:clamp(96px,17vw,220px);line-height:.85;letter-spacing:-6px;display:flex;align-items:flex-start;
  background:linear-gradient(180deg,#fff 30%,rgba(255,255,255,.55));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-temp .deg{font-size:.45em;margin-top:.1em;letter-spacing:0}
.hero-meta{display:flex;flex-direction:column;gap:6px;font-size:18px}
.hero-meta .cond{font-family:var(--font-h);font-weight:700;font-size:clamp(24px,3vw,36px)}
.hl{display:flex;gap:16px}.hi b{color:#ffb38a}.lo b{color:#8ad0ff}
.summary{max-width:900px;font-size:clamp(16px,1.6vw,19px);color:#d6e4fb;margin:0 0 18px;line-height:1.6}
.hero-strip{display:grid;grid-template-columns:repeat(12,minmax(64px,1fr));gap:6px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.hs{background:rgba(255,255,255,.06);border:1px solid var(--glass-b);border-radius:16px;padding:10px 6px;text-align:center;font-size:14px}
.hs .ic{width:36px;height:36px;margin:2px auto}
.hs b{font-size:16px}
.hs .pp{color:#7fc8ff;font-size:12px;min-height:16px}
.updated{margin-top:14px;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px}
.pulse{width:8px;height:8px;border-radius:50%;background:var(--ok);animation:live 1.6s infinite;box-shadow:0 0 0 0 rgba(61,220,151,.7)}

/* alerts */
.alerts{display:flex;flex-direction:column;gap:10px;margin-top:20px}
.alert{display:flex;gap:14px;align-items:flex-start;padding:14px 18px;border-radius:18px;border:1px solid;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:slidein .5s ease}
.alert .ai{font-size:24px;line-height:1}
.alert b{display:block}
.alert small{color:var(--muted)}
.alert.yellow{background:rgba(255,211,77,.12);border-color:rgba(255,211,77,.5)}
.alert.orange{background:rgba(255,140,40,.15);border-color:rgba(255,140,40,.6)}
.alert.red{background:rgba(255,59,92,.18);border-color:rgba(255,59,92,.7);animation:slidein .5s ease,redglow 2s infinite}
@keyframes redglow{50%{box-shadow:0 0 30px rgba(255,59,92,.45)}}
@keyframes slidein{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin-top:28px}
.card{padding:18px;position:relative;overflow:hidden;min-height:190px;display:flex;flex-direction:column;transition:transform .3s, border-color .3s}
.card:hover{transform:translateY(-3px);border-color:rgba(56,232,255,.4)}
.card h3{margin:0 0 8px;font-size:13px;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);display:flex;gap:8px;align-items:center}
.card .big{font-family:var(--font-h);font-size:40px;font-weight:700;line-height:1.05}
.card .big small{font-size:16px;font-weight:500;color:var(--muted);margin-left:4px}
.card .sub{color:var(--muted);font-size:14px;margin-top:auto}
.card.wide{grid-column:span 2}
.gauge{width:100%;max-width:200px;margin:4px auto 0;display:block}
.gauge .trk{stroke:rgba(255,255,255,.1)}
.gauge .val{transition:stroke-dashoffset 1.4s cubic-bezier(.2,.8,.2,1)}
.compass{width:160px;height:160px;margin:0 auto;display:block}
.compass .needle{transition:transform 1.4s cubic-bezier(.2,.8,.2,1);transform-origin:80px 80px}
.bar{height:8px;border-radius:99px;background:rgba(255,255,255,.1);overflow:hidden;margin:6px 0}
.bar i{display:block;height:100%;border-radius:99px;transition:width 1.2s ease}
.uvscale{height:10px;border-radius:99px;background:linear-gradient(90deg,#3ddc97,#ffd34d,#ff9a3d,#ff4d4d,#b25cff);position:relative;margin:14px 0 8px}
.uvscale i{position:absolute;top:-5px;width:20px;height:20px;border-radius:50%;background:#fff;border:3px solid #0b1a3d;transform:translateX(-50%);transition:left 1.2s ease;box-shadow:0 0 12px rgba(255,255,255,.6)}
.trend-up{color:var(--hot)}.trend-down{color:#7fc8ff}

/* storm */
.storm-grid{display:grid;grid-template-columns:320px 1fr;gap:16px}
.storm-risk{padding:22px;display:flex;flex-direction:column;gap:14px}
.risk-ring{width:180px;height:180px;margin:0 auto;display:block}
.risk-lvl{font-family:var(--font-h);font-size:26px;font-weight:800;text-align:center}
.risk-rows div{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:14px}
.risk-rows div:last-child{border:0}

/* maps */
.map-wrap{position:relative;overflow:hidden;padding:0}
.map{width:100%;height:540px;border:0;display:block;background:#0b1428}
.map.tall{height:600px}
.tabs{display:flex;gap:6px;padding:10px;flex-wrap:wrap;border-bottom:1px solid var(--glass-b);align-items:center}
.tabs button{background:rgba(255,255,255,.06);border:1px solid var(--glass-b);border-radius:999px;padding:7px 14px;font-size:14px}
.tabs button.on{background:var(--accent);color:#001018;border-color:transparent;font-weight:600}
.tab-link{margin-left:auto;font-size:14px;text-decoration:none}
.radar-ctl{position:absolute;left:12px;right:12px;bottom:12px;z-index:500;display:flex;gap:12px;align-items:center;background:rgba(3,8,23,.75);backdrop-filter:blur(10px);border:1px solid var(--glass-b);border-radius:16px;padding:8px 14px}
.radar-ctl button{width:38px;height:38px;border-radius:50%;border:0;background:var(--accent);color:#001018;font-weight:800}
.radar-ctl input{flex:1;accent-color:var(--accent)}
#rad-time{font-variant-numeric:tabular-nums;min-width:96px;text-align:right;font-weight:600}
.legend-rain{position:absolute;top:12px;right:12px;z-index:500;display:flex;gap:8px;align-items:center;font-size:12px;background:rgba(3,8,23,.75);padding:6px 10px;border-radius:12px}
.legend-rain i{width:90px;height:8px;border-radius:9px;background:linear-gradient(90deg,#88ddee,#0099cc,#ffee00,#ff8800,#ff0000,#c000c0)}
.mu-marker{width:18px;height:18px;border-radius:50%;background:var(--accent);border:3px solid #fff;box-shadow:0 0 0 0 rgba(56,232,255,.7);animation:mk 1.8s infinite}
@keyframes mk{70%{box-shadow:0 0 0 18px rgba(56,232,255,0)}100%{box-shadow:0 0 0 0 rgba(56,232,255,0)}}
.leaflet-container{background:#0b1428;font-family:var(--font)}
.leaflet-control-attribution{background:rgba(3,8,23,.7)!important;color:#9ab!important}
.leaflet-control-attribution a{color:#cde!important}

/* hourly */
.hourly{display:flex;gap:8px;overflow-x:auto;padding:14px;scroll-snap-type:x mandatory;scrollbar-width:thin}
.hc{flex:0 0 78px;text-align:center;padding:10px 4px;border-radius:16px;scroll-snap-align:start;transition:.2s}
.hc:hover{background:rgba(255,255,255,.06)}
.hc.now{background:linear-gradient(180deg,rgba(56,232,255,.22),rgba(56,232,255,.04));border:1px solid rgba(56,232,255,.35)}
.hc .t{font-size:13px;color:var(--muted)}
.hc .ic{width:42px;height:42px;margin:4px auto}
.hc b{font-size:18px;display:block}
.hc .pp{font-size:12px;color:#7fc8ff;min-height:16px}
.hc .w{font-size:12px;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:3px}
.hc .w svg{width:12px;height:12px}
.hc.daysep{border-left:1px dashed rgba(255,255,255,.2);border-radius:0 16px 16px 0}
.chart-box{padding:16px;margin-top:16px;height:330px}
.chart-box canvas{width:100%!important;height:100%!important}

/* daily */
.daily{padding:6px 14px}
.dr{display:grid;grid-template-columns:110px 46px 56px 44px 1fr 44px 90px 64px;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid rgba(255,255,255,.06);cursor:pointer}
.dr:last-child{border:0}
.dr:hover{background:rgba(255,255,255,.03)}
.dr .d b{display:block;text-transform:capitalize}
.dr .d small{color:var(--muted)}
.dr .ic{width:42px;height:42px}
.dr .pp{color:#7fc8ff;font-size:14px}
.dr .lo{color:#8ad0ff;text-align:right}
.dr .hi{color:#ffb38a}
.rng{position:relative;height:8px;border-radius:99px;background:rgba(255,255,255,.08)}
.rng i{position:absolute;top:0;bottom:0;border-radius:99px;background:linear-gradient(90deg,#4fb3ff,#7ff0c0,#ffd34d,#ff7a45)}
.dr .wnd,.dr .uv{font-size:13px;color:var(--muted)}
.dr .wnd svg{width:12px;height:12px;vertical-align:-1px}

/* air */
.air-grid{display:grid;grid-template-columns:320px 1fr 1fr;gap:16px}
.air-grid .glass{padding:20px}
.aqi-big{font-family:var(--font-h);font-size:58px;font-weight:800;line-height:1;text-align:center}
.aqi-lbl{text-align:center;font-weight:700;font-size:20px;margin-top:6px}
.pol{display:grid;grid-template-columns:110px 1fr 70px;gap:10px;align-items:center;font-size:14px;margin:8px 0}
.pol span:last-child{text-align:right;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:8px 12px;border-radius:14px;background:rgba(255,255,255,.06);border:1px solid var(--glass-b);font-size:14px}
.chip b{display:block;font-size:18px}
.chip.l1{border-color:rgba(61,220,151,.6)}.chip.l2{border-color:rgba(255,211,77,.7)}.chip.l3{border-color:rgba(255,140,40,.8)}.chip.l4{border-color:rgba(255,59,92,.9)}

/* sea */
.sea-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.sea-grid .glass{padding:20px}
.wave-svg{width:100%;height:60px;margin-top:8px}
.wave-svg path{animation:wave 4s linear infinite}
@keyframes wave{to{transform:translateX(-60px)}}

/* astro */
.astro-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}
.astro-grid .glass{padding:20px}
.sunarc{width:100%;height:auto;display:block}
.moon{width:150px;height:150px;margin:0 auto;display:block;filter:drop-shadow(0 0 30px rgba(255,255,230,.35))}
.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-top:12px}
.kv div{background:rgba(255,255,255,.05);border-radius:14px;padding:10px 12px}
.kv small{display:block;color:var(--muted);font-size:12px}
.kv b{font-size:18px}

/* cams */
.cams{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.cam{position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:16/10;background:#0b1428;border:1px solid var(--glass-b);cursor:pointer;padding:0;text-align:left}
.cam img,.cam iframe{width:100%;height:100%;object-fit:cover;border:0;display:block;transition:transform .6s}
.cam:hover img{transform:scale(1.05)}
.cam .cap{position:absolute;left:0;right:0;bottom:0;padding:30px 14px 12px;background:linear-gradient(transparent,rgba(0,0,0,.8));font-weight:600}
.cam .cap small{display:block;font-weight:400;color:#cbd6e8}
.cam .badge{position:absolute;top:10px;left:10px;background:#ff3b5c;color:#fff;font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px;letter-spacing:1px}
.cam .ph{display:flex;align-items:center;justify-content:center;height:100%;font-size:48px;opacity:.6}
.cams-empty{padding:24px}

/* models */
.models-table{margin-top:16px;padding:8px 14px;overflow-x:auto}
.models-table table{width:100%;border-collapse:collapse;font-size:14px;min-width:620px}
.models-table th,.models-table td{padding:9px 8px;text-align:center;border-bottom:1px solid rgba(255,255,255,.06)}
.models-table th:first-child,.models-table td:first-child{text-align:left}
.models-table th{color:var(--muted);font-weight:600;text-transform:capitalize}
.agree{display:inline-block;padding:2px 8px;border-radius:8px;font-size:12px}

/* posts */
.mu-posts{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.mu-post-card{display:block;padding:16px;text-decoration:none;color:var(--txt);transition:transform .3s}
.mu-post-card:hover{transform:translateY(-4px)}
.mu-post-card img{border-radius:14px;width:100%;aspect-ratio:16/9;object-fit:cover;margin-bottom:10px}
.mu-post-card h2,.mu-post-card h3{font-family:var(--font-h);margin:6px 0}
.mu-post-card p{color:var(--muted);margin:0}
.mu-blog{padding-top:32px}
.mu-h1{font-family:var(--font-h);font-size:clamp(28px,4vw,46px);margin:0 0 20px}
.mu-pad{padding:0 4px}
.mu-article{padding:clamp(18px,4vw,44px);max-width:900px;margin:0 auto 20px}
.mu-content{font-size:18px;line-height:1.75}
.mu-content img{border-radius:14px}
.mu-hero-img{border-radius:18px;margin:10px 0 20px;width:100%}
.mu-pager{margin-top:20px;text-align:center}
.mu-pager .page-numbers{padding:6px 12px;border-radius:10px;background:var(--glass);margin:2px;text-decoration:none;display:inline-block}

/* modal */
.modal{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;padding:20px}
.modal[hidden]{display:none}
.modal-in{width:min(1100px,100%);max-height:92vh;overflow:auto;padding:20px;position:relative}
.modal-in h3{margin:0 0 12px;font-family:var(--font-h)}
.modal-x{position:absolute;top:12px;right:12px;width:38px;height:38px;border-radius:50%;border:0;background:rgba(255,255,255,.12)}
.modal-media{width:100%;aspect-ratio:16/9;border:0;border-radius:14px;background:#000;display:block;object-fit:contain}

/* skeleton */
.skeleton{min-height:160px;background:linear-gradient(90deg,rgba(255,255,255,.04),rgba(255,255,255,.1),rgba(255,255,255,.04));background-size:200% 100%;animation:sk 1.4s infinite}
@keyframes sk{to{background-position:-200% 0}}

/* footer */
.mu-foot{position:relative;z-index:2;border-top:1px solid var(--glass-b);background:rgba(3,8,23,.6);margin-top:60px}
.mu-foot-in{max-width:1400px;margin:0 auto;padding:26px 20px;display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;font-size:14px}
.mu-credits{color:var(--muted);max-width:620px}
.mu-credits a{color:#bcd}

/* weather icons animation */
.wi-spin{animation:wispin 18s linear infinite;transform-box:fill-box;transform-origin:center}
.wi-float{animation:wifloat 5s ease-in-out infinite}
.wi-drop{animation:widrop 1.1s linear infinite}
.wi-flake{animation:wiflake 2.6s linear infinite}
.wi-bolt{animation:wibolt 2.4s steps(1) infinite}
.wi-fog{animation:wifog 3s ease-in-out infinite alternate}
.wi-twinkle{animation:witw 2.2s ease-in-out infinite}
@keyframes wispin{to{transform:rotate(360deg)}}
@keyframes wifloat{50%{transform:translateX(2px)}}
@keyframes widrop{0%{transform:translateY(-4px);opacity:0}30%{opacity:1}100%{transform:translateY(10px);opacity:0}}
@keyframes wiflake{0%{transform:translate(0,-4px);opacity:0}30%{opacity:1}100%{transform:translate(2px,10px);opacity:0}}
@keyframes wibolt{0%,100%{opacity:1}10%{opacity:.2}14%{opacity:1}50%{opacity:.85}}
@keyframes wifog{to{transform:translateX(4px)}}
@keyframes witw{50%{opacity:.3}}

/* reveal on scroll */
.rv{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}
.rv.in{opacity:1;transform:none}

/* kiosk */
body.kiosk .mu-top,body.kiosk .mu-foot{display:none}

/* responsive */
@media (max-width:1100px){
  .air-grid{grid-template-columns:1fr 1fr}
  .air-grid>:first-child{grid-column:span 2}
}
@media (max-width:860px){
  .storm-grid,.astro-grid,.air-grid{grid-template-columns:1fr}
  .air-grid>:first-child{grid-column:auto}
  .card.wide{grid-column:auto}
  .dr{grid-template-columns:88px 40px 40px 1fr 40px;gap:8px}
  .dr .pp,.dr .uv{display:none}
  .dr .wnd{display:none}
  .map{height:420px}.map.tall{height:460px}
  .hero{min-height:auto}
  .tool span{display:none}
  .mu-top-in{padding:8px 14px}
  .mu-brand-txt{display:none}
}
@media (max-width:520px){
  .mu{padding:12px 14px 30px}
  .cards{grid-template-columns:1fr 1fr;gap:10px}
  .card{padding:14px;min-height:170px}
  .card .big{font-size:30px}
  .compass{width:120px;height:120px}
  .hero-temp{letter-spacing:-3px}
  .dr{grid-template-columns:74px 36px 36px 1fr 36px}
  .cams{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .rv{opacity:1;transform:none}
}

/* =========================================================
   History
   ========================================================= */
.hist-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:14px 14px 0}
.hist-stats div{background:rgba(255,255,255,.05);border:1px solid var(--glass-b);border-radius:16px;padding:10px 14px}
.hist-stats small{display:block;color:var(--muted);font-size:12px}
.hist-stats b{font-family:var(--font-h);font-size:22px}
.hist-stats em{font-style:normal;font-size:12px;color:var(--muted);display:block}
.hist-stats .rec b{color:#ffb38a}.hist-stats .recl b{color:#8ad0ff}
.chart-box.flat{margin:0;background:none;border:0;box-shadow:none;backdrop-filter:none}

/* =========================================================
   App shell (mobile)
   ========================================================= */
html{-webkit-tap-highlight-color:transparent}
body{overscroll-behavior-y:contain}
.tabbar{display:none}
.sheet{position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.5);display:flex;align-items:flex-end;justify-content:center;animation:fadein .2s}
.sheet[hidden]{display:none}
.sheet-in{width:min(560px,100%);border-radius:26px 26px 0 0;padding:10px 16px calc(18px + env(safe-area-inset-bottom));animation:sheetup .3s cubic-bezier(.2,.8,.2,1)}
.sheet-grab{width:44px;height:5px;border-radius:9px;background:rgba(255,255,255,.3);margin:4px auto 14px}
.sheet-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.sheet-grid a{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;border-radius:16px;background:rgba(255,255,255,.06);text-decoration:none;color:var(--txt);font-size:12px;text-align:center}
.sheet-grid a span{font-size:24px}
.install-btn{width:100%;margin-top:14px;padding:14px;border-radius:16px;border:0;background:var(--accent);color:#001018;font-weight:700;font-size:16px}
.ios-hint{font-size:14px;text-align:center;margin:12px 0 0}
@keyframes sheetup{from{transform:translateY(100%)}to{transform:none}}
@keyframes fadein{from{opacity:0}}
.ptr{position:fixed;top:0;left:50%;z-index:90;width:44px;height:44px;margin-left:-22px;border-radius:50%;background:var(--glass);border:1px solid var(--glass-b);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;font-size:22px;transform:translateY(-60px);transition:transform .2s;pointer-events:none}
.ptr.go span{animation:wispin .8s linear infinite;display:inline-block}
.toast{position:fixed;left:50%;bottom:calc(90px + env(safe-area-inset-bottom));transform:translate(-50%,30px);opacity:0;z-index:130;background:rgba(8,16,36,.92);border:1px solid var(--glass-b);padding:10px 18px;border-radius:999px;font-size:14px;transition:.3s;pointer-events:none;white-space:nowrap}
.toast.on{opacity:1;transform:translate(-50%,0)}

@media (max-width:860px){
  .mu-nav{display:none}
  .mu-top{padding-top:env(safe-area-inset-top)}
  .mu-top-in{justify-content:space-between}
  .mu-brand-txt{display:inline;font-size:16px}
  body{padding-bottom:calc(74px + env(safe-area-inset-bottom))}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:80;justify-content:space-around;
    padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:rgba(5,11,26,.82);
    backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);border-top:1px solid var(--glass-b)}
  .tabbar a,.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;color:var(--muted);text-decoration:none;font-size:11px;background:none;border:0;border-radius:14px;transition:color .2s}
  .tabbar svg{width:24px;height:24px}
  .tabbar .on{color:var(--accent)}
  .tabbar .on svg{filter:drop-shadow(0 0 8px var(--accent))}
  .tabbar .tb-bolt.on{color:var(--warn)}
  .block{margin-top:36px}
  .block-head{margin-bottom:12px}
  .block-head p{font-size:13px;width:100%}
  .hero{padding-top:10px}
  .hero-bar{gap:10px}
  .loc{gap:12px;width:100%;justify-content:space-between}
  .hero-tools{width:100%}
  .hero-tools .tool{flex:1;justify-content:center}
  .hero-main{padding:10px 0;gap:6px;justify-content:center;text-align:center}
  .hero-meta{align-items:center;width:100%}
  .hero-icon{width:110px;height:110px}
  .hero-temp{font-size:120px;justify-content:center}
  .summary{text-align:center;font-size:15px}
  .updated{justify-content:center}
  .hero-strip{grid-template-columns:repeat(12,64px)}
  .card:hover,.mu-post-card:hover{transform:none}
  .chart-box{height:260px;padding:10px}
  .radar-ctl{left:8px;right:8px;bottom:8px}
  .hist-stats{grid-template-columns:1fr 1fr}
  .tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tabs button{white-space:nowrap}
  .tab-link{white-space:nowrap}
  .modal{padding:0;align-items:flex-end}
  .modal-in{border-radius:26px 26px 0 0;max-height:94vh;padding:16px 12px calc(16px + env(safe-area-inset-bottom))}
  .mu-foot-in{padding-bottom:20px}
}
@media (display-mode:standalone){
  .mu-top{padding-top:env(safe-area-inset-top)}
  .install-btn{display:none}
}
.tool.busy{pointer-events:none;opacity:.6}.tool.busy:first-letter{display:inline-block}
