:root{--bg:#0d141b;--panel:#141f29;--panel2:#1b2935;--line:#293946;--text:#eef4f7;--muted:#9aabb7;--accent:#f28b24;--green:#70d6a0;--red:#ff7373}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}.topbar{height:76px;padding:0 3.5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#101820}.brand{display:flex;gap:12px;align-items:center}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border:2px solid var(--accent);border-radius:12px;color:#fff;font-weight:900;font-size:24px}.brand strong{letter-spacing:1.3px;font-size:15px}.brand strong b{color:var(--accent)}.brand small{display:block;color:var(--muted);font-size:9px;letter-spacing:2px;margin-top:4px}.top-actions{display:flex;align-items:center;gap:16px}.status,.muted{font-size:12px;color:var(--muted)}button{font:inherit;cursor:pointer}.btn{border:0;border-radius:9px;padding:11px 16px;font-weight:700}.btn-primary{background:var(--accent);color:#161b20}.layout{max-width:1600px;margin:24px auto;padding:0 24px;display:grid;grid-template-columns:minmax(0,1.65fr) minmax(340px,.85fr);gap:20px}.map-panel,.side-panel>section{background:var(--panel);border:1px solid var(--line);border-radius:15px;overflow:hidden}.map-heading{padding:22px 24px 16px;display:flex;justify-content:space-between}.eyebrow{font-size:10px;letter-spacing:1.8px;color:var(--accent);font-weight:800}h1{font-size:24px;margin:7px 0 5px;letter-spacing:-.6px}h2{font-size:17px;margin:5px 0 0}.map-heading p{margin:0;color:var(--muted);font-size:12px}.icon-btn{height:38px;width:38px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--text);font-size:23px}.map-tools{padding:0 24px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.layer-tabs{display:flex;gap:5px}.layer{background:transparent;border:1px solid var(--line);color:var(--muted);padding:8px 12px;border-radius:7px;font-size:11px}.layer.active{background:#293b49;border-color:#526879;color:white}.map-legend{font-size:10px;color:var(--muted)}#map{height:590px;background:#263540;z-index:1}.leaflet-container{background:#25333d}.radar-controls{height:48px;display:flex;align-items:center;gap:12px;padding:0 20px;background:#17232d}.radar-controls input{flex:1;accent-color:var(--accent)}.radar-controls span{font-size:11px;color:var(--muted);min-width:130px;text-align:right}.play-btn{background:var(--accent);border:0;border-radius:50%;width:28px;height:28px;color:#17202a}.map-foot{display:flex;justify-content:space-between;padding:9px 18px;color:#81919c;font-size:10px;border-top:1px solid var(--line)}.side-panel{display:flex;flex-direction:column;gap:16px}.side-panel>section{padding:20px}.section-head{display:flex;justify-content:space-between;align-items:center}.live-dot{font-size:9px;color:var(--green);letter-spacing:1px}.live-dot:before{content:'';display:inline-block;width:6px;height:6px;background:var(--green);border-radius:50%;margin-right:6px;vertical-align:1px}.temperature-row{display:flex;justify-content:space-between;align-items:center;padding:18px 0 14px}.temperature{font-size:55px;line-height:1;font-weight:750;letter-spacing:-3px}.weather-label{display:block;color:var(--muted);font-size:12px;margin-top:5px}.weather-symbol{font-size:42px;color:#b6c7d1}.metrics-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-left:1px solid var(--line)}.metric{padding:12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:83px}.metric span{display:block;font-size:10px;color:var(--muted)}.metric strong{display:block;font-size:20px;margin:5px 0 2px}.metric small{font-size:10px;color:var(--muted)}.advice{padding:12px 14px;border-radius:9px;margin-top:14px;border-left:3px solid #7d9aaa;background:#1b2b36}.advice b{font-size:12px}.advice p{font-size:11px;color:#b6c4cc;line-height:1.5;margin:5px 0 0}.advice-warn{border-color:#f0b34e;background:#382d1b}.advice-danger{border-color:var(--red);background:#3a2225}.forecast{min-height:155px}.hourly{display:flex;gap:8px;overflow-x:auto;padding:16px 0 4px}.hour{flex:0 0 61px;text-align:center;background:var(--panel2);padding:10px 5px;border-radius:8px}.hour small{display:block;color:var(--muted);font-size:10px}.hour b{display:block;font-size:15px;margin:8px 0}.hour em{font-size:10px;color:#79bde8;font-style:normal}.empty{font-size:11px;color:var(--muted)}.route-box .section-head{margin-bottom:14px}.route-icon{font-size:23px;color:var(--accent)}.upload-btn{display:block;text-align:center;padding:12px;border:1px dashed #607584;border-radius:8px;color:#f5a64c;font-size:12px;font-weight:700;cursor:pointer}.route-box p{line-height:1.5}.route-result{padding:9px;margin-top:8px;background:var(--panel2);border-radius:7px;font-size:11px;color:#c9d4da}footer{max-width:1600px;margin:0 auto;padding:0 24px 24px;display:flex;justify-content:space-between;color:#7e909c;font-size:10px}.leaflet-control-attribution{font-size:9px!important}@media(max-width:950px){.layout{grid-template-columns:1fr;margin:12px auto;padding:0 12px}.side-panel{display:grid;grid-template-columns:1fr 1fr}.conditions{grid-row:span 2}#map{height:470px}.map-heading{padding:18px}.map-tools{padding:0 18px 12px}}@media(max-width:620px){.topbar{height:64px;padding:0 13px}.brand-mark{width:35px;height:35px}.brand strong{font-size:12px}.brand small{font-size:8px}.status{display:none}.btn-primary{padding:9px 11px;font-size:11px}.layout{display:flex;flex-direction:column;padding:0 9px;gap:12px}.map-heading{padding:16px 14px 12px}h1{font-size:19px}.map-heading p{font-size:11px}.map-tools{padding:0 14px 10px;display:block}.layer-tabs{overflow:auto}.layer{white-space:nowrap;padding:8px 10px}.map-legend{margin-top:8px}#map{height:52vh;min-height:330px;max-height:490px}.map-foot{font-size:9px;padding:8px 10px}.side-panel{display:flex;gap:12px}.side-panel>section{padding:16px}.temperature{font-size:48px}footer{padding:0 12px 18px;display:block;line-height:1.7}footer span{display:block}}

.wind-marker{background:transparent;border:0}.wind-arrow{width:42px;height:28px;display:flex;align-items:center;justify-content:center;color:#f28b24;font-size:28px;font-weight:900;text-shadow:0 1px 3px #101820}.wind-speed{display:block;text-align:center;color:#fff;background:#17232dcc;border-radius:8px;font-size:9px;padding:1px 3px;margin-top:-4px}

.btn-install{background:#263b49;color:#f5a64c;border:1px solid #526879;border-radius:9px;padding:11px 14px;font-weight:750;white-space:nowrap}
.btn-install:hover{background:#314b5c}
.btn-install:disabled{opacity:.72;cursor:default;color:#70d6a0;border-color:#426b59}
@media(max-width:620px){.top-actions{gap:7px}.btn-install,.btn-primary{padding:9px 9px;font-size:10px}.brand{gap:8px}.brand strong{font-size:10px;letter-spacing:.7px}.brand small{letter-spacing:1px}}

/* Capas meteorológicas Activania Meteo v3 */
#windParticles{position:absolute;inset:0;width:100%;height:100%;z-index:450;pointer-events:none}
.wind-marker{z-index:460!important}
.fog-marker{background:rgba(22,35,48,.92);border:1px solid #9bb8ca;border-radius:10px;color:#e8f4fa;padding:5px 7px;font-size:10px;line-height:1.25;white-space:nowrap;box-shadow:0 2px 8px #0008}
.fog-marker b{display:block;font-size:12px;color:#fff}
.layer[data-layer="fog"].active{background:#344b5b;border-color:#a5c7dc}
.wind-map-readout{position:absolute;z-index:700;left:12px;bottom:12px;background:#14232ddd;color:#f3f7fa;padding:9px 11px;border:1px solid #607584;border-radius:9px;font-size:11px;pointer-events:none;box-shadow:0 2px 10px #0005}
.wind-map-readout strong{font-size:13px;color:#f5a64c}
.fog-legend{display:inline-flex;gap:9px;flex-wrap:wrap}
.fog-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}
@media(max-width:620px){.layer{font-size:10px}.map-tools{overflow:hidden}.layer-tabs{padding-bottom:3px}}

/* Activania Meteo v4: capas de viento y nubosidad visibles */
#map{position:relative;isolation:isolate}
#windParticles{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:100%!important;z-index:650!important;pointer-events:none!important}
.wind-marker{z-index:660!important;background:transparent!important;border:0!important}
.wind-arrow{width:42px;height:28px;display:flex;align-items:center;justify-content:center;color:#ff9e32;font-size:30px;font-weight:900;text-shadow:0 0 4px #101820,0 1px 5px #fff}
.wind-speed{display:block;text-align:center;color:#fff;background:#14232dee;border:1px solid #f0a14c;border-radius:7px;font-size:9px;font-weight:800;padding:2px 4px;margin-top:-3px;white-space:nowrap}
.wind-map-readout{z-index:680!important}

/* Activania Meteo v6: capas atmosféricas difuminadas y no invasivas */
.weather-field-canvas{position:absolute;inset:0;z-index:450;pointer-events:none}
#windParticles{z-index:450!important}


/* Activania Meteo v7: campo continuo de viento y flujo coherente */
#map{position:relative;isolation:isolate}
#windField{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:100%!important;z-index:440!important;pointer-events:none!important;filter:blur(13px);opacity:.88}
#windParticles{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:100%!important;z-index:650!important;pointer-events:none!important}
.wind-marker{display:none!important}
.wind-map-readout{z-index:700!important}

/* Marcadores de análisis GPX */
.gpx-point-label{background:#17232d!important;border:1px solid #f28b24!important;color:#fff!important;border-radius:6px!important;padding:3px 6px!important;font-weight:800!important;font-size:11px!important;box-shadow:0 2px 8px #0008!important}.gpx-point-label:before{border-top-color:#f28b24!important}
