:root{
  --bg:#8ecae6; --card:rgba(255,255,255,.68); --card2:rgba(255,255,255,.42);
  --line:rgba(15,23,42,.12); --txt:#0f172a; --muted:#475569;
  --acc:#0ea5e9; --acc2:#f59e0b; --warn:#f59e0b; --rain:#2563eb; --wind:#7c3aed; --danger:#dc2626;
  --glow:0 0 18px rgba(14,165,233,.18);
  --chart-txt:#334155; --chart-tick:#475569;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  min-height:100vh;color:var(--txt);
  font-family:"Segoe UI",system-ui,-apple-system,Roboto,sans-serif;
  background:
    radial-gradient(1200px 600px at 15% -10%, rgba(34,211,238,.12), transparent 60%),
    radial-gradient(1000px 500px at 90% 10%, rgba(167,139,250,.12), transparent 60%),
    radial-gradient(800px 600px at 50% 120%, rgba(96,165,250,.08), transparent 60%),
    var(--bg);
  background-attachment:fixed;
}
header{
  padding:1.2rem 1.5rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  border-bottom:1px solid var(--line);
  background:rgba(255,255,255,.55);backdrop-filter:blur(10px);position:sticky;top:0;z-index:10;
}
h1{
  font-size:1.5rem;margin:0;font-weight:300;letter-spacing:.02em;
  background:linear-gradient(90deg,var(--acc),var(--acc2));-webkit-background-clip:text;background-clip:text;color:transparent;
}
header .spacer{flex:1}
.wx-icon{display:flex;align-items:center;filter:drop-shadow(0 0 12px rgba(34,211,238,.4));animation:rise .6s ease backwards}
.wx-icon svg{overflow:visible}
.header-title{display:flex;flex-direction:column;line-height:1.1}
.header-sub{font-size:.72rem;color:var(--muted);margin-top:.15rem;letter-spacing:.03em;opacity:.9}
.wx-hero{display:flex;align-items:center;gap:1.4rem;margin-left:1rem}
.hero-temp{font-size:2.4rem;font-weight:200;line-height:1;color:#0284c7;text-shadow:none;font-variant-numeric:tabular-nums}
.hero-extras{display:flex;flex-direction:column;gap:.25rem}
.hero-item{font-size:1.5rem;font-weight:500;line-height:1;color:#2563eb;font-variant-numeric:tabular-nums}
.hero-item.rain{color:#2563eb}
.hero-item.solar{color:#ca8a04;font-size:1.1rem;font-weight:300}
.hero-unit{font-size:.7rem;color:var(--muted);font-weight:400}
.station-status{display:inline-flex;align-items:center;gap:.4rem;margin-top:.25rem;font-size:.72rem;font-weight:600;letter-spacing:.02em}
.station-status .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.station-status.on .dot{background:#4ade80;box-shadow:0 0 8px #4ade80;animation:pulse 2s infinite}
.station-status.warn .dot{background:#fbbf24;box-shadow:0 0 8px #fbbf24;animation:pulse 1.5s infinite}
.station-status.off .dot{background:#f87171;box-shadow:0 0 8px #f87171}
.station-status.on{color:#4ade80}
.station-status.warn{color:#fbbf24}
.station-status.off{color:#f87171}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.wx-anim-sun{transform-origin:center;animation:wxspin 24s linear infinite}
.wx-anim-rain{animation:wxrain 1.2s linear infinite}
@keyframes wxspin{to{transform:rotate(360deg)}}
@keyframes wxrain{0%{transform:translateY(0)}100%{transform:translateY(6px)}}
.period-label{font-size:.72rem;color:var(--muted);opacity:.8;white-space:nowrap}
.header-datetime{font-size:1.5rem;font-weight:300;color:var(--txt);text-align:left;line-height:1.1;font-variant-numeric:tabular-nums;margin-top:.15rem}
/* Boussole vent */
.wx-compass{width:34px;height:34px;position:relative;margin-left:auto}
.wx-compass svg{width:100%;height:100%}
.wx-compass .needle{transition:transform .6s ease;transform-origin:50% 50%}
/* Barre records */
.records{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;padding:0 1.5rem 1rem}
.period-controls{display:flex;gap:.5rem;padding:0 1.5rem 1rem;flex-wrap:wrap}
.records .box{background:linear-gradient(180deg,var(--card),var(--card2));border:1px solid var(--line);border-radius:14px;padding:1rem;backdrop-filter:blur(8px)}
.records .box h3{margin:0 0 .6rem;font-size:.7rem;color:var(--acc);text-transform:uppercase;letter-spacing:.15em}
.records .box h3 .rec-period{font-size:.6rem;color:var(--muted);text-transform:none;letter-spacing:.02em;font-weight:400}
.records .row{display:flex;justify-content:space-between;padding:.25rem 0;font-size:.85rem;color:var(--muted);border-bottom:1px solid var(--line)}
.records .row b{color:var(--txt);font-weight:600}
@media(max-width:800px){.records{grid-template-columns:1fr}}
button{
  background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:10px;
  padding:.5rem .9rem;cursor:pointer;font-size:.85rem;transition:.2s;backdrop-filter:blur(4px);
}
button:hover{border-color:rgba(34,211,238,.5);box-shadow:var(--glow)}
button.active{background:linear-gradient(135deg,rgba(14,165,233,.18),rgba(124,58,237,.15));border-color:var(--acc);color:var(--txt);box-shadow:var(--glow)}
select,input[type=date]{
  background:var(--card);color:var(--txt);border:1px solid var(--line);border-radius:10px;
  padding:.5rem .6rem;font-size:.85rem;backdrop-filter:blur(4px);color-scheme:dark;
}
.custom-range{display:none;align-items:center;gap:.5rem;padding:.8rem 1.5rem;border-bottom:1px solid var(--line)}
.section{padding:1.6rem 1.5rem .6rem}
.section h2{font-size:.8rem;color:var(--acc);text-transform:uppercase;letter-spacing:.15em;margin:0 0 .9rem}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;padding:0 1.5rem 1rem}
.card{
  position:relative;overflow:hidden;padding:1.1rem 1.2rem;border-radius:14px;
  background:linear-gradient(180deg,var(--card),var(--card2));
  border:1px solid var(--line);backdrop-filter:blur(8px);
  transition:transform .2s, box-shadow .2s, border-color .2s;
  animation:rise .5s ease backwards;
}
.card:hover{transform:translateY(-3px);box-shadow:0 8px 30px rgba(251,191,36,.15);border-color:rgba(251,191,36,.4)}
.card::before{
  content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:var(--warn);opacity:1;
}
.card .label{color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.1em}
.card .value{font-size:1.9rem;font-weight:300;margin-top:.35rem;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--txt);text-shadow:none}
.value-row{display:flex;gap:1.2rem;align-items:center;margin-top:.35rem}
.value-row .value{font-size:1.5rem;font-weight:300;color:var(--txt);text-shadow:none;font-variant-numeric:tabular-nums}
.value-row .unit{font-size:.75rem;color:var(--muted)}
.card .unit{font-size:.85rem;color:var(--muted)}
.card .mini{margin-top:.5rem;padding-top:.45rem;border-top:1px solid var(--line);font-size:.72rem;color:var(--muted);display:flex;gap:.6rem;flex-wrap:wrap}
.card .mini .lo{color:#0369a1}
.card .mini .hi{color:#a21caf}
.card .mini .avg{color:#b45309}
.card .icon{position:absolute;top:.8rem;right:.8rem;opacity:.75;filter:drop-shadow(0 0 6px rgba(34,211,238,.3))}
.charts{display:grid;gap:1rem;padding:0 1.5rem 1.5rem}
.chart-box{
  background:linear-gradient(180deg,var(--card),var(--card2));
  border:1px solid var(--line);border-radius:14px;padding:1rem;backdrop-filter:blur(8px);
}
.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
#alerts{margin:0 1.5rem 1rem;padding:0;list-style:none}
#alerts li{background:rgba(248,113,113,.08);border:1px solid var(--danger);color:#fecaca;border-radius:8px;padding:.6rem .9rem;margin-bottom:.5rem;font-size:.9rem}
#alerts:empty{display:none}
footer{padding:1rem 1.5rem;color:var(--muted);font-size:.8rem;border-top:1px solid var(--line)}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:800px){.chart-grid{grid-template-columns:1fr}}
