:root{color-scheme:dark;--bg:#06131b;--bg-radial:#0b3542;--panel:#092631;--panel2:#071d27;--panel3:#0b2c35;--field:#061923;--button:#102d3a;--action:#174d42;--line:#286775;--line2:#397887;--cyan:#49dce7;--mint:#5ae2b7;--gold:#ffd36b;--text:#eefafd;--muted:#9fb7bf;--soft:#b6c9ce;--card:#0a3039;--stat:#0d3540;--shadow:#0005;--canvas:#061b28}
html[data-theme="light"]{color-scheme:light;--bg:#f4fafc;--bg-radial:#d8f3f7;--panel:#ffffff;--panel2:#f7fbfc;--panel3:#eef8fa;--field:#ffffff;--button:#f3fbfd;--action:#dff7ef;--line:#9ccbd3;--line2:#78b7c2;--cyan:#087f91;--mint:#13795b;--gold:#9a6500;--text:#12313a;--muted:#607b83;--soft:#506b73;--card:#f7fcfd;--stat:#eaf7f9;--shadow:#0c3b4a18;--canvas:#dff3f7}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 50% 0,var(--bg-radial),transparent 32rem),var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}.bar,main,footer{width:min(1180px,calc(100% - 28px));margin:auto}.bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:18px 0}.bar a,footer a,.bar button,.controls button,.passes button,.infoGrid a,.operationLinks a,.nextPass button{display:inline-flex;justify-content:center;align-items:center;min-height:44px;padding:9px 13px;border:1px solid var(--line);border-radius:11px;background:var(--button);color:var(--cyan);font:inherit;font-weight:750;text-decoration:none;cursor:pointer}.bar small,.mapHead small,.sectionTitle small,.heroSat small,.nextPass small,.operationPanel small{color:var(--mint);font-weight:800;letter-spacing:.13em}.bar h1{margin:0;font-size:clamp(1.55rem,4vw,2.6rem)}main{display:grid;gap:16px}.heroSat,.controls,.mapPanel,.passes,.operationPanel,.infoGrid article{border:1px solid var(--line);border-radius:20px;background:linear-gradient(145deg,var(--panel3),var(--panel2));box-shadow:0 15px 45px var(--shadow)}.heroSat{display:grid;grid-template-columns:1fr 320px;gap:18px;padding:20px}.heroSat h2{margin:.25rem 0;font-size:clamp(1.5rem,4vw,2.35rem)}.heroSat p{margin:.4rem 0 0;color:var(--soft)}.nextPass{padding:15px;border:1px solid #3a7784;border-radius:15px;background:var(--panel2);display:grid;gap:4px;align-content:center}.nextPass b{font-size:1.3rem}.nextPass span{color:var(--gold);font-weight:800}.nextPass button{margin-top:7px;color:var(--text)}.nextPass button.active{border-color:#42caa5;background:var(--action);color:var(--mint)}.controls{display:grid;grid-template-columns:repeat(4,1fr);align-items:end;gap:10px;padding:16px}.controls label{display:grid;gap:5px;color:var(--text);font-weight:650}.controls select,.controls input{width:100%;min-height:46px;border:1px solid var(--line2);border-radius:10px;background:var(--field);color:var(--text);padding:9px 11px;font:inherit}.locationFields{display:grid;grid-template-columns:1fr 1fr;gap:7px}.satellitePicker{display:grid;grid-template-columns:1fr auto;gap:7px}.favorite{min-width:46px!important;padding:0!important;font-size:1.4rem!important}.favorite.active{color:var(--gold)!important}.controls button,.passes button{border-color:#42caa5;background:var(--action);color:var(--mint)}.controls p{grid-column:1/-1;margin:0;color:var(--muted)}.controls p.error{color:#ff9c88}.quickStrip{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.quickStrip article{padding:11px 13px;border:1px solid #285c68;border-radius:12px;background:var(--card)}.quickStrip small{display:block;color:var(--muted);font-size:.7rem}.quickStrip b{display:block;margin-top:2px;color:var(--text)}.mapPanel{overflow:hidden;padding:16px}.mapHead,.sectionTitle{display:flex;justify-content:space-between;gap:18px;align-items:end;margin-bottom:12px}.mapHead h2,.sectionTitle h2{margin:2px 0 0}.legend{display:flex;flex-wrap:wrap;gap:10px;font-size:.85rem}.legend .past{color:var(--gold)}.legend .future{color:var(--cyan)}canvas{display:block;width:100%;height:auto;aspect-ratio:1200/650;border:1px solid #245462;border-radius:14px;background:var(--canvas);touch-action:pan-y}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:10px}.stats article{padding:10px;border-radius:10px;background:var(--stat)}.stats small{display:block;color:var(--muted);font-size:.7rem}.stats b{font-size:.96rem;color:var(--text)}.passes{padding:16px}.passGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.passGrid article{padding:14px;border:1px solid #285c68;border-radius:13px;background:var(--card)}.passGrid small{color:var(--mint);font-weight:750}.passGrid h3{margin:4px 0}.passGrid dl{display:grid;grid-template-columns:1fr auto;gap:4px;margin:0}.passGrid dt{color:var(--muted)}.passGrid dd{margin:0;font-weight:700}.quality{display:inline-flex;margin-top:8px;padding:4px 8px;border-radius:999px;background:var(--action);color:var(--mint);font-size:.8rem}.operationPanel{padding:18px;display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center}.operationPanel h2{margin:.2rem 0}.operationLinks{display:grid;gap:8px}.dopplerDetail{margin-top:9px;color:var(--gold);font-weight:700}.infoGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.infoGrid article{padding:18px}.infoGrid h2{margin-top:0}.infoGrid p,#frequency{color:var(--soft)}footer{padding:28px 0 55px;color:var(--muted)}
@media(max-width:920px){.heroSat{grid-template-columns:1fr}.controls{grid-template-columns:1fr 1fr}.quickStrip{grid-template-columns:repeat(3,1fr)}.stats{grid-template-columns:repeat(3,1fr)}.passGrid{grid-template-columns:repeat(2,1fr)}.operationPanel{grid-template-columns:1fr}.operationLinks{grid-template-columns:repeat(3,1fr)}.infoGrid{grid-template-columns:1fr}}
@media(max-width:560px){.bar,main,footer{width:calc(100% - 18px)}.bar{grid-template-columns:1fr auto}.bar>a{grid-column:1/-1;justify-self:start}.controls{grid-template-columns:1fr}.mapPanel,.passes,.controls,.heroSat,.operationPanel{padding:12px;border-radius:15px}.mapHead{display:block}.legend{margin-top:8px}.quickStrip{grid-template-columns:repeat(2,1fr)}.stats{grid-template-columns:repeat(2,1fr)}.passGrid{grid-template-columns:1fr}.sectionTitle{align-items:center}.sectionTitle h2{font-size:1.3rem}.operationLinks{grid-template-columns:1fr}.nextPass{padding:12px}}

/* v517 · mapa solar y categorías ampliadas */
.legend .terminator{color:#c9eef7}.mapPanel canvas{box-shadow:inset 0 0 28px rgba(0,0,0,.24)}


/* v520 · acordeones compactos + Meteosat */
.infoGrid.accordions{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.infoGrid.accordions details{border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,var(--panel3),var(--panel2));box-shadow:0 12px 35px var(--shadow);overflow:hidden}
.infoGrid.accordions summary{list-style:none;cursor:pointer;padding:16px 18px;font-size:1.15rem;font-weight:800;display:flex;justify-content:space-between;align-items:center;min-height:58px}
.infoGrid.accordions summary::-webkit-details-marker{display:none}
.infoGrid.accordions summary span{color:var(--cyan);font-size:1.45rem;line-height:1;transition:transform .2s ease}
.infoGrid.accordions details[open] summary span{transform:rotate(45deg)}
.infoGrid.accordions .infoBody{padding:0 18px 17px;color:var(--soft);border-top:1px solid rgba(73,220,231,.12)}
.infoGrid.accordions .infoBody p{margin:.8rem 0}
.miniFreq{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:.8rem 0;padding:10px 12px;border-radius:11px;background:var(--field);border:1px solid var(--line);font-size:.9rem}
.miniFreq b{color:var(--mint)}
.weatherNote{color:var(--gold)!important}
@media(max-width:920px){.infoGrid.accordions{grid-template-columns:1fr}.infoGrid.accordions summary{padding:14px 16px;min-height:54px}.infoGrid.accordions .infoBody{padding:0 16px 14px}}

/* v521 · mapa ampliable dentro de la web + seguimiento 5 s */
.mapHint{margin-top:7px;color:var(--muted);font-size:.78rem}
.mapClose{display:none;position:absolute;top:12px;right:12px;z-index:8;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--panel2);color:var(--cyan);font:700 1.7rem/1 system-ui;cursor:pointer}
.mapPanel.map-expanded{position:fixed;inset:0;z-index:9999;margin:0!important;width:100vw;height:100dvh;border-radius:0;padding:14px;background:linear-gradient(145deg,var(--panel3),var(--panel2));overflow:auto;display:flex;flex-direction:column}
.mapPanel.map-expanded .mapClose{display:block}
.mapPanel.map-expanded .mapHead{padding-right:54px;flex:0 0 auto}
.mapPanel.map-expanded canvas{width:100%;height:auto;max-height:calc(100dvh - 190px);object-fit:contain;flex:1 1 auto;min-height:0;touch-action:none;cursor:zoom-out}
.mapPanel.map-expanded .stats{flex:0 0 auto}
body.map-open{overflow:hidden}
#map{cursor:zoom-in}
@media(max-width:560px){.mapPanel.map-expanded{padding:10px}.mapPanel.map-expanded .mapHead{padding-right:48px}.mapPanel.map-expanded .legend{font-size:.72rem;gap:7px}.mapPanel.map-expanded .mapHint{font-size:.72rem}.mapPanel.map-expanded canvas{max-height:calc(100dvh - 260px)}.mapPanel.map-expanded .stats{grid-template-columns:repeat(3,1fr)}.mapPanel.map-expanded .stats article{padding:7px}.mapPanel.map-expanded .stats b{font-size:.82rem}}


/* v522 · zoom táctil, pellizco y desplazamiento del mapa */
.mapViewport{position:relative;width:100%;overflow:hidden;border-radius:14px;background:var(--canvas);touch-action:none}
.mapViewport canvas{border:0;border-radius:0;transform-origin:50% 50%;will-change:transform;touch-action:none;user-select:none;-webkit-user-select:none}
.mapZoomControls{position:absolute;right:10px;bottom:10px;z-index:7;display:flex;gap:6px;opacity:.9}
.mapZoomControls button{width:42px;height:42px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)e8;color:var(--cyan);font:800 1.25rem/1 system-ui;box-shadow:0 5px 18px #0006;cursor:pointer}
.mapZoomControls button:active{transform:scale(.95)}
.mapPanel:not(.map-expanded) .mapZoomControls{display:none}
.mapPanel.map-expanded .mapViewport{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.mapPanel.map-expanded .mapViewport canvas{width:100%;height:auto;max-height:100%;object-fit:contain;flex:none;cursor:grab}
.mapPanel.map-expanded .mapViewport canvas.is-dragging{cursor:grabbing}
@media(max-width:560px){.mapZoomControls{right:7px;bottom:7px}.mapZoomControls button{width:38px;height:38px;font-size:1.1rem}}

/* v523 · seguimiento visible */
#mapLiveStatus{color:var(--mint);font-weight:800}.mapZoomControls button.flash{outline:2px solid var(--mint);transform:scale(1.08)}

/* v524 · integración real con modo claro/oscuro */
html[data-theme="light"] .heroSat,html[data-theme="light"] .controls,html[data-theme="light"] .mapPanel,html[data-theme="light"] .passes,html[data-theme="light"] .operationPanel,html[data-theme="light"] .infoGrid article,html[data-theme="light"] .infoGrid.accordions details{box-shadow:0 10px 30px rgba(20,72,84,.10)}
html[data-theme="light"] .nextPass{background:#f7fcfd}
html[data-theme="light"] .controls button,html[data-theme="light"] .passes button,html[data-theme="light"] .nextPass button.active{background:#dff7ef;color:#12634e;border-color:#70bda7}
html[data-theme="light"] .bar a,html[data-theme="light"] footer a,html[data-theme="light"] .bar button,html[data-theme="light"] .operationLinks a,html[data-theme="light"] .nextPass button{background:#f7fcfd;color:#087f91}
html[data-theme="light"] .mapPanel.map-expanded{background:#f4fafc}
html[data-theme="light"] .mapClose,html[data-theme="light"] .mapZoomControls button{background:#ffffff;color:#087f91;box-shadow:0 5px 18px rgba(20,72,84,.15)}
html[data-theme="light"] .legend .terminator{color:#42666f}
html[data-theme="light"] input::placeholder{color:#82979d}
html[data-theme="light"] select,html[data-theme="light"] input{color-scheme:light}
html[data-theme="light"] #frequency,html[data-theme="light"] .infoGrid.accordions .infoBody{color:var(--soft)}

/* v565 · compartir satélites grande y accesible */
.satSharePanel{display:flex;justify-content:center}
.satSharePanel button{width:100%;min-height:58px;padding:13px 18px;border:1px solid var(--line2);border-radius:15px;background:linear-gradient(135deg,var(--button),var(--panel3));color:var(--cyan);font:inherit;font-size:1rem;font-weight:850;letter-spacing:.04em;cursor:pointer;box-shadow:0 10px 28px var(--shadow)}
.satSharePanel button:active{transform:scale(.99)}
html[data-theme="light"] .satSharePanel button{background:linear-gradient(135deg,#ffffff,#eef8fa);color:#087f91;box-shadow:0 8px 22px rgba(20,72,84,.10)}
@media(max-width:560px){.satSharePanel button{min-height:62px;font-size:1.04rem;border-radius:14px}}
