@import url("ed-components.css?v=165");
:root{
 --bg:#071018;--panel:#0c1721;--muted:#a9bac1;
 --line:rgba(112,211,229,.20);--max:1180px;
}
*{box-sizing:border-box}
html{color-scheme:dark;scroll-behavior:smooth}
body{margin:0;min-height:100vh;color:var(--text);
 font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
a{color:inherit}.ed-shell{width:min(calc(100% - 2rem),var(--max));margin-inline:auto}

/* ED_CANONICAL_HEADER_V158: static markup; no runtime reconstruction. */
.ed-header{position:sticky;top:0;z-index:1000;background:transparent;border:0;outline:0;box-shadow:none;backdrop-filter:none;transform:none;opacity:1;visibility:visible;pointer-events:auto
}
.ed-header-inner{min-height:68px;display:flex;align-items:center;justify-content:center;gap:clamp(.85rem,1.8vw,1.6rem);column-gap:clamp(.7rem,2.1vw,2rem)
}
.ed-header-title-stack{width:100%;height:clamp(54px,6.2vw,72px);min-width:clamp(210px,23vw,310px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.22rem;text-align:center
}
.ed-header-center,.ed-header-right{display:block;width:100%;margin:0;padding:0;text-align:center;letter-spacing:.015em;white-space:nowrap;text-shadow:0 0 3px rgba(0,0,0,.8)
}
.ed-header-center{color:#fff
}
.ed-header-right{color:#72ff8b;font-weight:720;font-family:"Consolas","Liberation Mono","DejaVu Sans Mono",monospace;font-size:clamp(.74rem,.95vw,.88rem);line-height:1.05
}
html:not([lang="en"]) .ed-header-right [lang="en"],html[lang="en"] .ed-header-right [lang="es"]{display:none
}
@media(max-width:760px){.ed-header-inner{gap:.45rem;column-gap:.55rem}.ed-header-title-stack{min-width:155px;height:52px}.ed-header-right{font-size:.62rem}
}
.ed-brand{display:flex;align-items:center;text-decoration:none;font-weight:750}
.ed-brand img{width:46px;height:46px;object-fit:contain}
.ed-nav{margin-left:auto;display:flex;gap:.85rem;align-items:center}
.ed-nav a{text-decoration:none;color:var(--muted)}.ed-menu-button{display:none;margin-left:auto}

.ed-hero{text-align:center;padding:clamp(1.4rem,4vw,3rem) 0 0}
.ed-hero h1{margin:.25rem 0;font-size:clamp(2.1rem,5vw,4.5rem);font-weight:650}
.ed-universe{position:relative;width:min(94vw,820px);height:min(68vw,570px);min-height:390px;margin:0 auto 2rem;
 overflow:visible;touch-action:none;user-select:none}
.ed-sun{left:50%;top:50%;
 transform:translate(-50%,-50%);display:grid;place-items:center;z-index:20;text-decoration:none}
.ed-sun img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 22px rgba(56,184,214,.30))}
.ed-orbit-guide{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-20deg);
 border:1px solid rgba(112,211,229,.12);border-radius:50%;pointer-events:none}
.ed-orbit{position:absolute;inset:0}
/* Perspective is a desktop presentation only; site.js uses 2D orbital transforms. */
@media (min-width:761px) and (min-height:521px), (min-width:761px) and (pointer:fine){
  .ed-universe{perspective:900px}
  .ed-orbit{transform-style:preserve-3d}
}
.ed-planet{
  left:50%;
  top:50%;
  will-change:transform,opacity;
}
.ed-planet:focus-visible{outline:3px solid var(--cyan);outline-offset:4px}
.ed-contact{border-top:1px solid var(--line);padding:3rem 0;background:rgba(0,0,0,.12)}
.ed-contact-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);gap:2rem}
.ed-contact h2{margin-top:0}.ed-contact form{display:grid;gap:.8rem}
.ed-contact input,.ed-contact textarea{width:100%;padding:.85rem;border-radius:8px;border:1px solid var(--line);
 background:#07131c;color:var(--text)}.ed-contact textarea{min-height:130px;resize:vertical}
.ed-button,.ed-contact button{display:inline-flex;justify-content:center;align-items:center;padding:.8rem 1rem;border-radius:8px;
 border:1px solid var(--cyan);background:transparent;color:var(--text);text-decoration:none;cursor:pointer}
.ed-contact-links{display:grid;gap:.7rem;align-content:start}
@media(max-width:760px){
 .ed-menu-button{display:block}.ed-nav{display:none;position:absolute;left:0;right:0;top:68px;margin:0;padding:1rem;
 background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch}
 .ed-nav[data-open="true"]{display:flex}
 .ed-contact-grid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* ED-UI-003: photographic orbital scene */
.ed-hero-scene{
 isolation:isolate;min-height:clamp(640px,78vh,880px);overflow:hidden;
 
 border-bottom:1px solid rgba(102,220,240,.18);
}
.ed-hero-scene::after{
 content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
 background:radial-gradient(circle at 50% 50%,transparent 0 26%,rgba(0,0,0,.12) 62%,rgba(0,0,0,.62) 100%);
}
.ed-hero-scene .ed-hero{position:relative;z-index:2;text-shadow:0 3px 22px rgba(0,0,0,.8)}
.ed-hero-scene .ed-universe{z-index:2}

.ed-sun::before,.ed-sun::after{
 content:"";position:absolute;inset:-34%;border-radius:50%;z-index:-2;pointer-events:none;
 background:
 radial-gradient(circle at 42% 37%,#fff7c5 0 3%,#ffdc66 9%,#ff9d22 31%,#e84d0c 55%,rgba(255,99,0,.18) 69%,transparent 72%);
 box-shadow:0 0 34px #ffb22f,0 0 80px rgba(255,96,0,.65),0 0 130px rgba(255,156,0,.32);
 animation:edSunPulse 5.8s ease-in-out infinite alternate;
}

.ed-sun img{position:relative;z-index:3;filter:drop-shadow(0 2px 7px rgba(0,0,0,.8))}

.ed-orbit-guide{
 height:35%;border-color:rgba(144,225,239,.16);
 box-shadow:0 0 24px rgba(61,175,201,.06);
}
.ed-planet{
  backdrop-filter:blur(3px);
  
}
.ed-brand{gap:.62rem;white-space:nowrap}
.ed-brand-name{font-size:1.08rem;font-weight:760;letter-spacing:.015em}
.ed-brand-section{
 color:var(--muted);font-size:.91rem;font-weight:520;padding-left:.72rem;
 border-left:1px solid rgba(121,211,228,.26)
}
.ed-hero-scene{padding-top:.35rem}

@media(max-width:760px){
 .ed-brand{gap:.42rem}
 .ed-brand-name{font-size:.98rem}
 .ed-brand-section{font-size:.78rem;padding-left:.48rem}
}
@media(max-width:470px){
 .ed-brand-section{display:none}
}

/* ED-UI-005: centered contact, helium-like prominences, greener electronics */
.ed-contact-grid.ed-contact-centered{
 grid-template-columns:minmax(0,680px);
 justify-content:center;
}
.ed-contact-grid.ed-contact-centered > div{width:100%}
.ed-contact-links{display:none !important}

.ed-sun::before{
 
 box-shadow:0 0 17px #ffc14b,0 0 38px rgba(255,100,0,.56),0 0 62px rgba(255,164,27,.28);
 
}

@keyframes edHeliumFlicker{
 0%{transform:scale(.98) rotate(0deg);filter:blur(2px) brightness(.9)}
 45%{transform:scale(1.02) rotate(2deg);filter:blur(1.3px) brightness(1.1)}
 100%{transform:scale(1.00) rotate(-1deg);filter:blur(2.5px) brightness(1.0)}
}

/* ED-UI-006 */

.ed-orbit-guide{width:76%;height:41%}

/* ED-UI-008 — reuse the previously created visual reference, not a newly generated image */

/* Planet = luminous orb + separate pill label, matching the reference composition. */

/* Replace the old regular pseudo-arcs with irregular independent prominences. */
.ed-sun::before,.ed-sun::after,.ed-solar-prominence,.ed-solar-prominences{animation:none !important;opacity:0 !important}
.ed-random-prominences{position:absolute;inset:0;pointer-events:none;z-index:-1}
.ed-random-prominences i{
  position:absolute;left:50%;top:50%;width:var(--s);height:var(--s);border-radius:50%;
  background:radial-gradient(circle,#fff7b0 0,#ffb12e 38%,#ff641d 68%,transparent 72%);
  box-shadow:0 0 7px #ff8b25,0 0 13px rgba(255,91,18,.55);
  transform:rotate(var(--a)) translateX(var(--r));
  animation:edProminenceRandom var(--d) cubic-bezier(.22,.65,.42,1) var(--delay) infinite;
}
@keyframes edProminenceRandom{
  0%{opacity:0;transform:rotate(var(--a)) translateX(calc(var(--r) - 3px)) scale(.25)}
  18%{opacity:.9}
  53%{opacity:.55;transform:rotate(var(--a)) translateX(calc(var(--r) + var(--drift))) scale(1)}
  100%{opacity:0;transform:rotate(var(--a)) translateX(calc(var(--r) + 18px)) scale(.15)}
}

/* Contact heading and every field caption centered. */
#contactForm,.ed-contact-form{margin-inline:auto}
#contactForm h1,#contactForm h2,#contactForm h3,.ed-contact h1,.ed-contact h2,.ed-contact h3,.ed-contact-title,#contactForm label,.ed-contact-form label{
  text-align:center !important;
}
#contactForm label,.ed-contact-form label{display:block !important;width:100%}

/* ED-UI-009 — restore single-circle planets; keep icon as a watermark behind text */

.ed-planet{
  width:clamp(78px,8vw,108px) !important;
  height:clamp(78px,8vw,108px) !important;
  min-width:0 !important;
  aspect-ratio:1 !important;
  display:grid !important;
  place-items:center !important;
  padding:.55rem !important;
  text-align:center !important;
  
  font-size:clamp(.64rem,.92vw,.82rem) !important;
  font-weight:700 !important;
  line-height:1.08 !important;
  text-decoration:none !important;
  
}
.ed-contact-field-bg{
  background:
    linear-gradient(rgba(2,8,14,.58),rgba(2,8,14,.76)),
    url("../../img/field-reference.jpg") center/cover fixed no-repeat !important;padding-top:clamp(2.5rem,5vw,5rem);padding-bottom:clamp(2.5rem,5vw,5rem);
}

/* Contact title and field captions centered. */
#contactForm h1,#contactForm h2,#contactForm h3,.ed-contact-field-bg h1,.ed-contact-field-bg h2,.ed-contact-field-bg h3,#contactForm label{
  text-align:center !important;
}
#contactForm label{display:block !important;width:100%}

/* Organic/non-linear solar activity; old geometric arcs stay disabled. */
.ed-sun::before,.ed-sun::after,.ed-solar-prominence,.ed-solar-prominences,.ed-random-prominences{animation:none !important;opacity:0 !important}
.ed-organic-prominences{position:absolute;inset:0;pointer-events:none;z-index:-1}
.ed-organic-prominences i{
  position:absolute;left:50%;top:50%;
  width:var(--s);height:var(--s);border-radius:50%;
  background:radial-gradient(circle,#fff7b1 0,#ffc044 30%,#ff7a1c 59%,rgba(255,72,10,.22) 72%,transparent 78%);
  box-shadow:0 0 6px rgba(255,160,48,.9),0 0 14px rgba(255,74,14,.46);
  filter:blur(var(--blur));
  animation:edOrganicFlare var(--d) cubic-bezier(.17,.68,.34,1) var(--delay) infinite;
}
@keyframes edOrganicFlare{
  0%{opacity:0;transform:translate(calc(var(--x) - 2px),calc(var(--y) - 2px)) scale(.15)}
  14%{opacity:.92}
  38%{transform:translate(calc(var(--x) + var(--dx1)),calc(var(--y) + var(--dy1))) scale(1.15)}
  67%{opacity:.48;transform:translate(calc(var(--x) + var(--dx2)),calc(var(--y) + var(--dy2))) scale(.72)}
  100%{opacity:0;transform:translate(calc(var(--x) + var(--dx1)),calc(var(--y) + var(--dy2))) scale(.10)}
}

@media (max-width:760px){
  .ed-planet{
  font-size:.59rem !important;
  padding:.4rem !important;
}
}

/* ED-UI-010 ================================================================ */

/* Scalable space field: CSS gradients + SVG-free stars, so it does not pixelate. */

.ed-hero-scene::before{
  content:"";
  position:absolute;inset:0;
  pointer-events:none;
  background-image:
    radial-gradient(circle,#fff 0 1px,transparent 1.4px),
    radial-gradient(circle,#bcdcff 0 1px,transparent 1.3px),
    radial-gradient(circle,#f4d6ff 0 .8px,transparent 1.1px),
    radial-gradient(circle,#fff 0 .55px,transparent .9px);
  background-size:137px 137px,191px 191px,83px 83px,47px 47px;
  background-position:13px 29px,71px 11px,19px 57px,3px 17px;
  opacity:.72;
  mix-blend-mode:screen;
}

/* Restore the warm solar nucleus behind the original ElectroData logo. */

.ed-sun::before,.ed-sun::after,.ed-solar-prominence,.ed-solar-prominences,.ed-random-prominences,.ed-organic-prominences{
  animation:none !important;
  opacity:0 !important;
}

/* Slow random fade-in/fade-out flares, intentionally non-geometric. */
.ed-soft-prominences{
  position:absolute;inset:0;pointer-events:none;z-index:-1;
}
.ed-soft-prominences i{
  position:absolute;left:50%;top:50%;
  width:var(--s);height:var(--s);
  border-radius:48% 52% 63% 37%;
  background:radial-gradient(circle,#fff4a8 0 8%,#ffbd38 32%,#ff7218 60%,rgba(255,89,17,.08) 76%,transparent 80%);
  box-shadow:0 0 8px rgba(255,172,46,.8),0 0 18px rgba(255,94,20,.38);
  animation:edSoftFlare var(--d) ease-in-out var(--delay) infinite;
}
@keyframes edSoftFlare{
  0%,100%{opacity:0;transform:translate(var(--x),var(--y)) scale(.25)}
  25%{opacity:.22}
  48%{opacity:.80;transform:translate(calc(var(--x) + var(--dx)),calc(var(--y) + var(--dy))) scale(1)}
  72%{opacity:.32}
}

/* Use the original index rural image (the one with the cypress at left). */
.ed-contact-original-rural{
  background:
    linear-gradient(rgba(2,8,14,.61),rgba(2,8,14,.77)),
    url("../../shared/img/hero-rural-clean.jpg") center/cover no-repeat !important;
  position:relative;
  padding-bottom:clamp(4.8rem,8vw,7rem) !important;
}
.ed-terminal-title{
  color:#72ff8b !important;
  font-family:"Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important;
  font-weight:600 !important;
  text-shadow:0 0 8px rgba(74,255,118,.28);
  letter-spacing:.01em;
}

/* ED-UI-011 ================================================================ */
.ed-hero-scene{
  position:relative !important;
}

/* The solar core must be a true circle, never a square. */

/* Planet spheres: textured/terrain-like, not transparent flat circles. */
.ed-planet{
  position:absolute !important;
  border-radius:50% !important;
  isolation:isolate;
  color:#f8fbff !important;
  text-shadow:0 2px 4px rgba(0,0,0,.98),0 0 3px rgba(0,0,0,.95);
}

/* Slow/faded random solar activity. */
.ed-soft-prominences i{
  animation-duration:var(--d) !important;
  animation-timing-function:ease-in-out !important;
}
@keyframes edSoftFlare{
  0%,100%{opacity:0;transform:translate(var(--x),var(--y)) scale(.18)}
  18%{opacity:.08}
  38%{opacity:.34}
  52%{opacity:.72;transform:translate(calc(var(--x) + var(--dx)),calc(var(--y) + var(--dy))) scale(1)}
  68%{opacity:.36}
  84%{opacity:.10}
}

/* ED-UI-012 ================================================================ */

/* Use the exact uploaded space reference as the upper background. */
.ed-hero-scene{
  background:
    linear-gradient(rgba(1,4,14,.15),rgba(1,4,14,.23)),
    url("../../img/space-user-reference.png") center/cover no-repeat !important;
}
.ed-contact-original-rural,
.ed-contact-field-bg{
  background:
    linear-gradient(rgba(2,7,13,.32),rgba(2,7,13,.55)),
    url("../../img/field-user-reference.png") center/cover no-repeat !important;
}

/* Sun only slightly larger than the ED logo. */
.ed-sun{
  
  height:auto !important;
  
  background:
    radial-gradient(circle at 42% 36%,#fff8bd 0 6%,#ffd74b 18%,#ff9b1b 42%,#e84e0f 67%,#761604 100%) !important;
  
}

/* ED-UI-014 ================================================================ */

/* Solar disc just a little larger than the central ED logo. */

/* Random electric storm-like rays, from the solar center to orbiting services. */
.ed-lightning-layer{
  position:absolute;
  inset:0;
  
  pointer-events:none;
  overflow:visible;
}
.ed-bolt-group{
  opacity:0;
  transition:opacity .16s ease-in;
}
.ed-bolt-group.is-live{
  opacity:1;
  animation:edBoltFade .7s ease-in-out forwards;
}
.ed-bolt-glow,
.ed-bolt-core{
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.ed-bolt-glow{
  stroke:rgba(100,190,255,.34);
  stroke-width:6;
  filter:blur(4px);
}
.ed-bolt-core{
  stroke:rgba(205,238,255,.96);
  stroke-width:1.4;
  filter:drop-shadow(0 0 3px rgba(110,205,255,.95));
}
@keyframes edBoltFade{
  0%{opacity:0}
  14%{opacity:1}
  28%{opacity:.45}
  42%{opacity:.95}
  65%{opacity:.34}
  100%{opacity:0}
}

/* ED-UI-015 ================================================================
   One single background for the complete public page.
   All prior section/background artwork is explicitly neutralized below.
   ========================================================================== */

/* Neutralize previously introduced photographic/space section backgrounds. */
body,
main,
section,
.ed-hero,
.ed-hero-scene,
.ed-contact,
.ed-contact-section{
  background-image:none !important;
  background-color:transparent !important;
}

/* Remove old section-level decorative background layers without touching
   interactive/planet pseudo-elements. */
.ed-hero::before,
.ed-hero::after,
.ed-contact::before,
.ed-contact::after,
.ed-contact-section::before,
.ed-contact-section::after{
  background-image:none !important;
  background-color:transparent !important;
}

/* Keep content readable while allowing the unified image to remain visible. */
.ed-contact,
.ed-contact-section{
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}

/* Remove every remaining decorative/grid-like background layer from the old UI.
   The root canvas owns the site background (ED159). */
body::after,
.ed-hero-scene::before,
.ed-hero-scene::after,
.ed-universe::before,
.ed-universe::after,
.ed-space::before,
.ed-space::after{
  content:none !important;
  display:none !important;
  background:none !important;
  background-image:none !important;
  box-shadow:none !important;
}

/* White text: black contour for contrast over the photographic background. */

/* Central logo must sit comfortably inside the solar disc. */
.ed-sun{
  width:clamp(116px,14.8%,140px) !important;
  aspect-ratio:1/1 !important;
  border-radius:50% !important;
}
.ed-sun .ed-sun-logo,
.ed-sun .ed-sun-logo img,
.ed-sun img{
  width:72% !important;
  height:72% !important;
  max-width:72% !important;
  max-height:72% !important;
  object-fit:contain !important;
  margin:auto !important;
}

/* Contact form typography. */
.ed-contact label,
.ed-contact-section label,
.ed-contact h2,
.ed-contact-section h2,
.ed-contact h3,
.ed-contact-section h3{
  font-family:"Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important;
}

/* Compact centered submit button. */
#contactForm button[type="submit"],
.ed-contact button[type="submit"],
.ed-contact-section button[type="submit"]{
  display:block !important;
  width:max-content !important;
  min-width:0 !important;
  max-width:calc(100% - 2rem) !important;
  margin-left:auto !important;
  margin-right:auto !important;
  padding:.62rem 1rem !important;
  white-space:nowrap !important;
}

@media (max-width:760px){

  .ed-sun{
    width:clamp(108px,30vw,126px) !important;
  }
}

.ed-contact,
.ed-contact-section{
  position:relative;
  z-index:2;
}

/* Bright yellow solar aura, coordinated with the existing orange/yellow core. */
.ed-sun{
  
  filter:
    drop-shadow(0 0 8px rgba(255,246,130,.95))
    drop-shadow(0 0 18px rgba(255,205,45,.75));
}
.ed-sun::before{
  content:"" !important;
  display:block !important;
  position:absolute !important;
  inset:-18% !important;
  z-index:-1 !important;
  border-radius:50% !important;
  pointer-events:none !important;
  background:
    radial-gradient(circle,
      rgba(255,252,190,.46) 0 26%,
      rgba(255,228,82,.30) 42%,
      rgba(255,181,35,.16) 58%,
      transparent 74%) !important;
  animation:edSolarAuraPulse 3.8s ease-in-out infinite alternate;
}
@keyframes edSolarAuraPulse{
  from{transform:scale(.96);opacity:.72}
  to{transform:scale(1.08);opacity:1}
}

/* Planet hit by a bolt: fast temporary illumination. */
.ed-planet.ed-planet-ray-hit{
  filter:
    brightness(1.72)
    saturate(1.28)
    drop-shadow(0 0 7px rgba(220,245,255,.98))
    drop-shadow(0 0 17px rgba(105,200,255,.92)) !important;
  box-shadow:
    inset 0 0 20px rgba(255,255,255,.28),
    0 0 10px 3px rgba(205,240,255,.96),
    0 0 26px 8px rgba(90,190,255,.68) !important;
}

/* Desktop hover keeps the service planet illuminated while pointer remains. */
@media (hover:hover) and (pointer:fine){
  .ed-planet:hover{
    filter:
      brightness(1.62)
      saturate(1.22)
      drop-shadow(0 0 7px rgba(245,250,255,.96))
      drop-shadow(0 0 18px rgba(125,210,255,.80)) !important;
    box-shadow:
      inset 0 0 18px rgba(255,255,255,.22),
      0 0 10px 3px rgba(225,245,255,.92),
      0 0 24px 7px rgba(100,195,255,.60) !important;
  }
}

/* Bolt life is synchronized with the target illumination. */
.ed-bolt-ui018.is-live{
  animation:edBoltUI018 var(--bolt-life,700ms) ease-in-out forwards !important;
}
@keyframes edBoltUI018{
  0%{opacity:0}
  10%{opacity:1}
  24%{opacity:.44}
  38%{opacity:1}
  58%{opacity:.35}
  72%{opacity:.9}
  100%{opacity:0}
}

/* Fine black outline: enough separation without making glyphs heavy. */
body :where(
  h1,h2,h3,h4,h5,h6,p,span,label,a,button,
  .ed-planet,.ed-contact,.ed-contact-section
):not(:where(.ed-header *, .ed-footer *)){
  text-shadow:
    -.45px -.45px 0 rgba(0,0,0,.96),
     .45px -.45px 0 rgba(0,0,0,.96),
    -.45px  .45px 0 rgba(0,0,0,.96),
     .45px  .45px 0 rgba(0,0,0,.96),
     0 1px 1px rgba(0,0,0,.72) !important;
}

/* Keep green terminal subtitle green after the global text-outline rule. */

/* Fugitive luminous beam overlay. */

/* Duplicate glyph layer. Only a narrow luminous slice is revealed and swept. */

/* ED-UI-021 ================================================================
   Lighter JPG background + gradient-outline 3D typography + visible white beam.
   ========================================================================== */

/* Gradient-like outline approximation: layered cool-to-warm edge shadows. */

/* White sweep clipped into the letters. */

/* Shared black-gradient shadow/outline.
   The layered shadows progress from tight black edge to softer black depth. */

/* Actual visible sweeping beam: a white luminous bar crossing the yellow text.
   It is not background-position based, so the motion remains obvious. */

/* Solar aura: permanent slow breathing. */
.ed-sun{
  box-shadow:
    0 0 12px rgba(255,238,85,.92),
    0 0 26px rgba(255,202,45,.78),
    0 0 48px rgba(255,145,20,.48) !important;
  
}

.ed-sun::after{
  content:"" !important;
  position:absolute !important;
  inset:-18% !important;
  border-radius:50% !important;
  pointer-events:none !important;
  z-index:-1 !important;
  background:
    radial-gradient(circle,
      rgba(255,255,180,.55) 0%,
      rgba(255,225,70,.34) 34%,
      rgba(255,160,25,.18) 56%,
      rgba(255,115,15,.06) 72%,
      transparent 82%) !important;
  filter:blur(8px) !important;
  opacity:.86 !important;
  transform:scale(1) !important;
  
}

/* Surge tied to lightning: stronger, larger, brighter for bolt lifetime. */
.ed-sun.ed-sun-ray-surge022{
  animation:
    edSunRaySurge022 var(--sun-surge-life022,760ms) ease-out forwards,
    edSunBreath022 3.8s ease-in-out infinite !important;
}

.ed-sun.ed-sun-ray-surge022::after{
  animation:
    edSunAuraRaySurge022 var(--sun-surge-life022,760ms) ease-out forwards,
    edSunAuraBreath022 3.8s ease-in-out infinite !important;
}

@keyframes edSunBreath022{
  0%,100%{
    box-shadow:
      0 0 10px rgba(255,238,85,.88),
      0 0 24px rgba(255,202,45,.72),
      0 0 44px rgba(255,145,20,.42);
  }
  50%{
    box-shadow:
      0 0 16px rgba(255,248,125,1),
      0 0 34px rgba(255,210,55,.90),
      0 0 58px rgba(255,150,20,.58);
  }
}

@keyframes edSunAuraBreath022{
  0%,100%{transform:scale(.96); opacity:.72}
  50%{transform:scale(1.08); opacity:.96}
}

@keyframes edSunRaySurge022{
  0%{
    box-shadow:
      0 0 14px rgba(255,244,110,.96),
      0 0 30px rgba(255,205,45,.82),
      0 0 52px rgba(255,145,20,.50);
  }
  28%{
    box-shadow:
      0 0 24px rgba(255,255,185,1),
      0 0 52px rgba(255,225,70,1),
      0 0 82px rgba(255,170,25,.82),
      0 0 118px rgba(255,120,10,.48);
  }
  100%{
    box-shadow:
      0 0 14px rgba(255,244,110,.94),
      0 0 30px rgba(255,205,45,.80),
      0 0 52px rgba(255,145,20,.48);
  }
}

@keyframes edSunAuraRaySurge022{
  0%{transform:scale(1); opacity:.84}
  28%{transform:scale(1.34); opacity:1}
  100%{transform:scale(1.02); opacity:.82}
}

/* ED-UI-023 ================================================================
   DIRECT bolt-event synchronization.
   ========================================================================== */

/* Neutralize obsolete universal sun animation from UI022. */

/* Keep prior pseudo-elements available to their original flare/prominence
   semantics, but stop the obsolete UI022 aura animation from controlling them. */
.ed-sun::after{
  animation:none !important;
}

/* Dedicated solar aura behind the physical sun. */
.ed-sun .ed-sun-aura023{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:132% !important;
  height:132% !important;
  translate:-50% -50% !important;
  border-radius:50% !important;
  z-index:-1 !important;
  pointer-events:none !important;
  opacity:.78 !important;
  background:
    radial-gradient(circle,
      rgba(255,255,210,.76) 0%,
      rgba(255,244,115,.55) 24%,
      rgba(255,205,45,.33) 46%,
      rgba(255,145,15,.13) 66%,
      transparent 78%) !important;
  box-shadow:
    0 0 14px rgba(255,250,150,.92),
    0 0 30px rgba(255,215,55,.72),
    0 0 52px rgba(255,150,20,.42) !important;
  filter:blur(5px) !important;
  transform:scale(.96) !important;
  animation:edSunAuraBreath023 3.6s ease-in-out infinite !important;
  will-change:transform,opacity,filter,box-shadow;
}

@keyframes edSunAuraBreath023{
  0%,100%{
    transform:scale(.95);
    opacity:.68;
    filter:blur(5px) brightness(1);
  }
  50%{
    transform:scale(1.08);
    opacity:.90;
    filter:blur(6px) brightness(1.14);
  }
}

/* When an ACTUAL bolt is emitted, the dedicated aura temporarily switches to
   a stronger one-shot surge, then resumes breathing when the class is removed. */
.ed-sun .ed-sun-aura023.ed-sun-aura-surge023{
  animation:edSunAuraSurge023 var(--bolt-life023,760ms) ease-out forwards !important;
}

@keyframes edSunAuraSurge023{
  0%{
    transform:scale(1);
    opacity:.82;
    filter:blur(5px) brightness(1.10);
    box-shadow:
      0 0 16px rgba(255,250,160,.95),
      0 0 34px rgba(255,215,60,.78),
      0 0 56px rgba(255,150,20,.46);
  }
  22%{
    transform:scale(1.42);
    opacity:1;
    filter:blur(7px) brightness(1.75);
    box-shadow:
      0 0 28px rgba(255,255,220,1),
      0 0 60px rgba(255,235,90,1),
      0 0 96px rgba(255,175,25,.88),
      0 0 132px rgba(255,115,10,.52);
  }
  55%{
    transform:scale(1.28);
    opacity:.98;
    filter:blur(7px) brightness(1.50);
  }
  100%{
    transform:scale(1.04);
    opacity:.82;
    filter:blur(5px) brightness(1.10);
    box-shadow:
      0 0 16px rgba(255,250,160,.95),
      0 0 34px rgba(255,215,60,.78),
      0 0 56px rgba(255,150,20,.46);
  }
}

.ed-sun.ed-sun-disc-surge023{
  animation:edSunDiscSurge023 var(--bolt-life023,760ms) ease-out forwards !important;
}
@keyframes edSunDiscSurge023{
  0%{filter:brightness(1) saturate(1)}
  22%{filter:brightness(1.42) saturate(1.18)}
  100%{filter:brightness(1) saturate(1)}
}

/* Exact duplicate of the yellow text, but pure white and glowing. */

/* LTR: a narrow white slice travels across the actual letters. */

/* RTL: exact reverse. */

/* Hard centering against containing block, overriding legacy layout rules. */

/* White duplicate of the text. A clip-window sweeps over actual letters. */

/* LTR animations: bar + white letters move together. */

/* RTL animations. */

/* Dedicated solar aura: always present and visible.
   Transform/opacity/filter are controlled directly by requestAnimationFrame. */
.ed-sun{
  position:relative !important;
  overflow:visible !important;
  animation:none !important;
  isolation:isolate !important;
}

.ed-sun .ed-sun-aura025{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  width:150% !important;
  height:150% !important;
  border-radius:50% !important;
  z-index:-1 !important;
  pointer-events:none !important;
  background:
    radial-gradient(circle,
      rgba(255,255,225,.88) 0%,
      rgba(255,248,135,.68) 22%,
      rgba(255,215,60,.44) 42%,
      rgba(255,160,20,.22) 62%,
      rgba(255,110,10,.08) 74%,
      transparent 82%) !important;
  box-shadow:
    0 0 18px rgba(255,250,155,.98),
    0 0 38px rgba(255,220,65,.82),
    0 0 66px rgba(255,160,20,.58),
    0 0 92px rgba(255,110,10,.30) !important;
  opacity:.82;
  transform:translate(-50%,-50%) scale(1);
  transform-origin:center center !important;
  will-change:transform,opacity,filter;
}

/* Neutralize common pseudo-element delimiter lines without changing content. */

@media (max-width:760px){
  .social-bar{
    --contact-icon-size: 42px;
  }
}

/* ED-UI-034 ================================================================
   The globe glyph itself was too small inside the correctly-sized contact
   slot. Keep slot unchanged; enlarge only the visible globe.
   ========================================================================== */

/* 2) Remove every visible divider/line associated with the contact segment. */
#contact,
.contact,
.contact-section,
.ed-contact,
.ed-contact-section,
section[id*="contact" i],
section[class*="contact" i]{
  border-top:0 !important;
  border-bottom:0 !important;
  outline:0 !important;
  box-shadow:none !important;
}
#contact::before,
#contact::after,
.contact::before,
.contact::after,
.contact-section::before,
.contact-section::after,
.ed-contact::before,
.ed-contact::after,
.ed-contact-section::before,
.ed-contact-section::after,
section[id*="contact" i]::before,
section[id*="contact" i]::after,
section[class*="contact" i]::before,
section[class*="contact" i]::after{
  content:none !important;
  display:none !important;
  border:0 !important;
  background:none !important;
  box-shadow:none !important;
}

/* 3) Contact section headings, including "Contacto":
      same black-tending layered/3D shadow treatment used site-wide. */
#contact h1,
#contact h2,
#contact h3,
#contact .title,
#contact .section-title,
.contact h1,
.contact h2,
.contact h3,
.contact .title,
.contact .section-title,
.contact-section h1,
.contact-section h2,
.contact-section h3,
.contact-section .title,
.contact-section .section-title,
.ed-contact h1,
.ed-contact h2,
.ed-contact h3,
.ed-contact-section h1,
.ed-contact-section h2,
.ed-contact-section h3,
section[id*="contact" i] h1,
section[id*="contact" i] h2,
section[id*="contact" i] h3,
section[class*="contact" i] h1,
section[class*="contact" i] h2,
section[class*="contact" i] h3{
  color:#fff !important;
  text-shadow:
    0 1px 0 rgba(255,255,255,.18),
    0 2px 0 rgba(0,0,0,.95),
    0 3px 0 rgba(0,0,0,.9),
    0 5px 8px rgba(0,0,0,.95),
    0 0 12px rgba(0,0,0,.75) !important;
  -webkit-text-stroke:.25px rgba(0,0,0,.88) !important;
  filter:drop-shadow(0 4px 4px rgba(0,0,0,.78)) !important;
}

/* Labels/titles inside the form get the same, slightly softer, 3D treatment. */
#contact label,
.contact label,
.contact-section label,
.ed-contact label,
.ed-contact-section label,
section[id*="contact" i] label,
section[class*="contact" i] label{
  color:#fff !important;
  text-shadow:
    0 1px 0 rgba(255,255,255,.14),
    0 2px 0 rgba(0,0,0,.92),
    0 3px 5px rgba(0,0,0,.9),
    0 0 8px rgba(0,0,0,.7) !important;
}

/* 4) "Enviar consulta": opaque 3D button, not transparent. */
#contact button[type="submit"],
#contact input[type="submit"],
.contact button[type="submit"],
.contact input[type="submit"],
.contact-section button[type="submit"],
.contact-section input[type="submit"],
.ed-contact button[type="submit"],
.ed-contact input[type="submit"],
.ed-contact-section button[type="submit"],
.ed-contact-section input[type="submit"],
section[id*="contact" i] button[type="submit"],
section[id*="contact" i] input[type="submit"],
section[class*="contact" i] button[type="submit"],
section[class*="contact" i] input[type="submit"]{
  appearance:none !important;
  opacity:1 !important;
  background:
    linear-gradient(180deg,#42d96b 0%,#23ad4e 48%,#157736 100%) !important;
  color:#fff !important;
  border:1px solid rgba(0,0,0,.88) !important;
  border-radius:8px !important;
  
  
  transform:translateY(0) !important;
  transition:filter .15s ease, transform .08s ease, box-shadow .08s ease !important;
}
#contact button[type="submit"]:hover,
#contact input[type="submit"]:hover,
.contact button[type="submit"]:hover,
.contact input[type="submit"]:hover,
.contact-section button[type="submit"]:hover,
.contact-section input[type="submit"]:hover,
.ed-contact button[type="submit"]:hover,
.ed-contact input[type="submit"]:hover,
.ed-contact-section button[type="submit"]:hover,
.ed-contact-section input[type="submit"]:hover{
  filter:brightness(1.08) !important;
}
#contact button[type="submit"]:active,
#contact input[type="submit"]:active,
.contact button[type="submit"]:active,
.contact input[type="submit"]:active,
.contact-section button[type="submit"]:active,
.contact-section input[type="submit"]:active,
.ed-contact button[type="submit"]:active,
.ed-contact input[type="submit"]:active,
.ed-contact-section button[type="submit"]:active,
.ed-contact-section input[type="submit"]:active{
  transform:translateY(2px) !important;
  
}

/* Submit button — neutral/black 3D shadow, no green shadow. */
#contact button[type="submit"],
#contact input[type="submit"],
.contact button[type="submit"],
.contact input[type="submit"],
.contact-section button[type="submit"],
.contact-section input[type="submit"],
.ed-contact button[type="submit"],
.ed-contact input[type="submit"],
.ed-contact-section button[type="submit"],
.ed-contact-section input[type="submit"],
section[id*="contact" i] button[type="submit"],
section[id*="contact" i] input[type="submit"],
section[class*="contact" i] button[type="submit"],
section[class*="contact" i] input[type="submit"]{
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.34),
    inset 0 -2px 0 rgba(0,0,0,.48),
    0 3px 0 rgba(0,0,0,.92),
    0 6px 10px rgba(0,0,0,.78),
    0 0 8px rgba(0,0,0,.58) !important;
  text-shadow:
    0 1px 0 rgba(255,255,255,.10),
    0 2px 2px rgba(0,0,0,.95) !important;
}

#contact button[type="submit"]:active,
#contact input[type="submit"]:active,
.contact button[type="submit"]:active,
.contact input[type="submit"]:active,
.contact-section button[type="submit"]:active,
.contact-section input[type="submit"]:active,
.ed-contact button[type="submit"]:active,
.ed-contact input[type="submit"]:active,
.ed-contact-section button[type="submit"]:active,
.ed-contact-section input[type="submit"]:active{
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.22),
    inset 0 -1px 0 rgba(0,0,0,.44),
    0 1px 0 rgba(0,0,0,.95),
    0 3px 6px rgba(0,0,0,.75) !important;
}

/* Orbital guide/ring line — visual aid only; planets/interactions untouched. */
.ed-orbit-ring,
.ed-orbit-line,
.orbit-ring,
.orbit-line,
.ed-orbit-guide,
.orbit-guide,
.ed-orbit-path,
.orbit-path{
  display:none !important;
  visibility:hidden !important;
  opacity:0 !important;
  stroke:transparent !important;
  border-color:transparent !important;
  box-shadow:none !important;
}

/* Common implementation: ring painted as a pseudo-element of orbit wrapper. */
.ed-orbit::before,
.ed-orbit::after,
.orbit::before,
.orbit::after{
  border-color:transparent !important;
  outline:0 !important;
  box-shadow:none !important;
  background:transparent !important;
}

/* ED-UI-038: canonical 10-world architecture.
   Removed worlds are eliminated by JS; this block adds no layout divergence
   between desktop/mobile and lets the existing rebalance logic distribute
   remaining planets symmetrically. */

/* ED-UI-040 — mobile-only readability correction.
   Desktop is intentionally untouched. */
@media (max-width: 760px){

  /* Smaller orbital worlds: preserve their orbital positions/animation while
     reducing visual diameter enough to prevent the dense lower-half overlaps. */
  

  /* Smaller nucleus than UI030. This compounds safely with the existing
     transform without changing orbit geometry or lightning targeting. */
  

  /* Give the orbital system slightly more usable vertical room on phones. */

  body{
    
  }
}

@media (max-width: 760px){

  /* Less reserved space than UI040 so the dock appears lower and closer
     to the phone's bottom edge. */
  body{
    padding-bottom: calc(46px + env(safe-area-inset-bottom)) !important;
  }
}

/* ED-UI-046: mobile concentric symmetric orbit; native runtime owns motion/lightning. */

/* ED-UI-059
   Mobile must expose the same page content as desktop.
   Geometry remains desktop/native via UI058; this block only restores
   document flow + contact form visibility on mobile. */
@media (max-width:760px){

  html,
  body{
    min-height:100% !important;
    height:auto !important;
    overflow-x:hidden !important;
    overflow-y:auto !important;
  }

  body,
  main,
  .ed-page,
  .ed-main,
  .site-main,
  .page-main{
    max-height:none !important;
  }

  main,
  .ed-page,
  .ed-main,
  .site-main,
  .page-main{
    height:auto !important;
    min-height:0 !important;
    overflow:visible !important;
  }

  /* The orbital hero stays a section, not a viewport-locking page. */
  .ed-hero,
  .ed-hero-scene,
  .hero,
  .hero-scene{
    max-height:none !important;
  }

  /* Contact section/form: same content available as desktop. */
  #contact,
  #contacto,
  .contact,
  .contact-section,
  .ed-contact,
  .ed-contact-section,
  .contact-wrap,
  .contact-container,
  .ed-contact-wrap{
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
    position:relative !important;
    width:100% !important;
    max-width:100% !important;
    height:auto !important;
    max-height:none !important;
    overflow:visible !important;
  }

  #contactForm,
  form#contactForm,
  .contact-form,
  .ed-contact-form{
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
    position:relative !important;
    width:min(92vw,560px) !important;
    max-width:560px !important;
    height:auto !important;
    max-height:none !important;
    margin-left:auto !important;
    margin-right:auto !important;
    overflow:visible !important;
  }

  #contactForm fieldset,
  #contactForm label,
  #contactForm input,
  #contactForm textarea,
  #contactForm select,
  #contactForm button{
    visibility:visible !important;
    opacity:1 !important;
  }

  #contactForm button[type="submit"],
  #contactForm input[type="submit"]{
    display:block !important;
  }
  body{
    padding-bottom:max(54px,env(safe-area-inset-bottom)) !important;
  }
}

/* ED-UI-064 — remove obsolete horizontal divider above Contacto. */
.ed-contact,
.ed-contact-section,
#contacto,
#contact{
  border-top:0 !important;
  border-block-start:0 !important;
  box-shadow:none !important;
}

.ed-contact::before,
.ed-contact::after,
.ed-contact-section::before,
.ed-contact-section::after,
#contacto::before,
#contacto::after,
#contact::before,
#contact::after{
  border:0 !important;
  border-top:0 !important;
  height:0 !important;
  box-shadow:none !important;
}

/* Also suppress any dedicated separator immediately before contact. */
.ed-contact-divider,
.ed-contact-separator,
.contact-divider,
.contact-separator{
  display:none !important;
}

/* ED-UI-065
   Restore BlueSpace_Prados after UI062 removed the old UI051-owned background.
   Also remove the actual horizontal seam between hero and Contacto. */

/* ED159: root canvas paints one continuous image across the document. */
html{
  min-height:100%;
  background-color:#020713;
  background-image:url("/img/BlueSpace_Prados.jpg");
  background-position:center center;
  background-size:cover;
  background-repeat:no-repeat;
  background-attachment:scroll;
}

/* All main page surfaces must remain transparent over the one global background. */
.ed-hero-scene,
.ed-contact,
.ed-contact-section,
.ed-contact-field-bg,
.ed-contact-original-rural{
  background-color:transparent !important;
}

/* Preserve only the global BlueSpace background; suppress old sectional images/gradients. */
.ed-hero-scene,
.ed-contact,
.ed-contact-section,
.ed-contact-field-bg,
.ed-contact-original-rural{
  background-image:none !important;
}

/* The visible line is the seam between sections, not just contact's top border. */
.ed-hero-scene,
.ed-hero,
.ed-universe,
.ed-contact,
.ed-contact-section,
.ed-contact-field-bg,
.ed-contact-original-rural,
#contacto,
#contact{
  border-top:0 !important;
  border-bottom:0 !important;
  border-block-start:0 !important;
  border-block-end:0 !important;
  box-shadow:none !important;
}

/* Kill generated separator lines on both sides of the seam. */
.ed-hero-scene::before,
.ed-hero-scene::after,
.ed-contact::before,
.ed-contact::after,
.ed-contact-section::before,
.ed-contact-section::after,
.ed-contact-field-bg::before,
.ed-contact-field-bg::after,
.ed-contact-original-rural::before,
.ed-contact-original-rural::after,
#contacto::before,
#contacto::after,
#contact::before,
#contact::after{
  border:0 !important;
  border-top:0 !important;
  border-bottom:0 !important;
  box-shadow:none !important;
}

@media (max-width:760px){

  .ed-hero-scene,
  .ed-contact,
  .ed-contact-section,
  .ed-contact-field-bg,
  .ed-contact-original-rural{
    background-color:transparent !important;
  }
}

/* ED-UI-066
   Mobile: true circular orbit + exact nucleus center + desktop-equivalent contact. */
@media (max-width:760px){

  /* Use the full viewport width; remove side compression from inherited shell sizing. */
  

  /* Exact common center for sun/logo and the orbit generated by site.js. */
  

  /* Keep the hero in normal document flow so Contacto follows it and can scroll into view. */

  .ed-hero{
    width:100% !important;
    max-width:none !important;
    overflow:visible !important;
  }

  /* Mobile must expose the same Contacto content/form as desktop. */
  #contacto.ed-contact,
  #contacto,
  .ed-contact{
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
    position:relative !important;
    width:100% !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:visible !important;
    padding:2.5rem 4vw 6rem !important;
    box-sizing:border-box !important;
  }

  #contacto .ed-contact-grid,
  .ed-contact-grid{
    display:grid !important;
    grid-template-columns:1fr !important;
    width:min(92vw,560px) !important;
    max-width:560px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    gap:1rem !important;
  }

  #contactForm{
    position:relative !important;
    
    gap:.8rem !important;
  }

  #contactForm label,
  #contactForm input,
  #contactForm textarea,
  #contactForm select,
  #contactForm button{
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
  }

  #contactForm input,
  #contactForm textarea,
  #contactForm select{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
  }

  #contactForm button[type="submit"],
  #contactForm input[type="submit"]{
    width:auto !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
}

/* ED-UI-067
   Mobile: center the orbital container on the viewport, expand the orbit,
   and keep Contacto typographically subordinate to ElectroData. */
@media (max-width:760px){

  /* ElectroData must remain visually dominant over Contacto. */

  #contacto h1,
  #contacto h2,
  #contacto h3,
  .ed-contact h1,
  .ed-contact h2,
  .ed-contact h3,
  .ed-contact-title{
    line-height:1.12 !important;
  }
}

/* ED-UI-068 — deterministic mobile presentation over canonical site.js orbit. */
@media (max-width:760px){

  .ed-hero{
    width:100% !important;
    max-width:none !important;
    height:auto !important;
    max-height:none !important;
    overflow:visible !important;
  }

  .ed-ui068-electrodata{
    font-size:clamp(2.35rem,9vw,3.25rem) !important;
    line-height:1.05 !important;
  }

  .ed-ui068-contact-title{
    font-size:clamp(1.45rem,5.5vw,1.95rem) !important;
    line-height:1.12 !important;
  }

  #contacto.ed-ui068-contact,
  #contact.ed-ui068-contact,
  .ed-contact.ed-ui068-contact{
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
    height:auto !important;
    max-height:none !important;
    overflow:visible !important;
    padding:2.25rem 4vw 7rem !important;
  }

  #contacto .ed-contact-grid,
  #contact .ed-contact-grid,
  .ed-contact .ed-contact-grid{
    display:grid !important;
    grid-template-columns:1fr !important;
    width:min(92vw,560px) !important;
    max-width:560px !important;
    margin-inline:auto !important;
  }

  #contactForm{
    display:grid !important;
    visibility:visible !important;
    opacity:1 !important;
    width:min(92vw,560px) !important;
    max-width:560px !important;
    height:auto !important;
    max-height:none !important;
    overflow:visible !important;
    margin:0 auto !important;
  }
}
/* ED-CANONICAL-TYPOGRAPHY
 * Single source of truth for first-paint title sizing.
 * Loaded from <head> before body markup is parsed.
 */

.ed-contact-title-canonical {
  font-size: clamp(1.20rem, 1.8vw, 1.70rem) !important;
  line-height: 1.02 !important;
}

@media (max-width:760px) {

  .ed-contact-title-canonical {
    font-size: clamp(1.35rem, 4.5vw, 1.75rem) !important;
  }
}

/* ED_CANONICAL_SOLAR_PLASMA_EXTERNAL */
.ed-sun{overflow:visible !important}
.ed-sun>img,.ed-sun .ed-sun-logo,.ed-sun [data-sun-logo]{position:relative;z-index:40}
.ed-solar-plasma-external{position:absolute;inset:0;overflow:visible !important;pointer-events:none;z-index:30}
.ed-external-flare{
 position:absolute;left:var(--x);top:var(--y);width:var(--w);height:var(--h);
 transform:translate(-50%,-50%) rotate(var(--rot)) scale(.55,.75);
 transform-origin:50% 50%;opacity:.12;
 clip-path:polygon(50% 0,64% 17%,58% 31%,78% 46%,62% 60%,75% 76%,58% 100%,42% 100%,25% 76%,38% 59%,22% 45%,43% 30%,36% 16%);
 background:linear-gradient(to bottom,#fff 0%,#ffffd7 22%,#fff46c 52%,rgba(255,215,40,.94) 78%,rgba(255,150,10,.18) 100%);
 filter:drop-shadow(0 0 0.1px rgba(255,255,230,.60)) drop-shadow(0 0 3px rgba(255,240,100,.45)) drop-shadow(0 0 7px rgba(255,205,45,.30));
 animation:edExternalFlare 3s ease-in-out var(--delay) infinite
}
@keyframes edExternalFlare{
 0%,100%{opacity:.01;transform:translate(-50%,-50%) rotate(var(--rot)) scale(.42,.55) skewX(-5deg)}
 18%{opacity:.35}
 46%{opacity:.05;transform:translate(-50%,-50%) rotate(calc(var(--rot) + var(--sway))) scale(.92,0.12) skewX(5deg)}
 66%{opacity:.92;transform:translate(-50%,-50%) rotate(calc(var(--rot) - var(--sway))) scale(.66,1.48) skewX(-4deg)}
 84%{opacity:.24;transform:translate(-50%,-50%) rotate(var(--rot)) scale(.48,.62)}
}
/* ED_CANONICAL_PLANET_IMAGE_ASSETS_V1 START */
[data-universe] [data-planet]{
  position:absolute !important;
  background:transparent !important;
  background-image:none !important;
  border:0 !important;
  box-shadow:none !important;
  outline:0 !important;
  overflow:visible !important;
}
.ed-planet-image-v1{
  display:block !important;
  position:absolute !important;
  left:0 !important;
  top:0 !important;
  width:100% !important;
  height:100% !important;
  max-width:none !important;
  max-height:none !important;
  margin:0 !important;
  padding:0 !important;
  object-fit:contain !important;
  border:0 !important;
  border-radius:50% !important;
  opacity:1 !important;
  visibility:inherit;
  transform:none !important;
  filter:none !important;
  pointer-events:none !important;
  z-index:1 !important;
  user-select:none;
}
/* One owner for decorative icon placement; inherited pointer-events reaches SVG paths. */
.ed-planet-topic-icon-v1{
  position:absolute;left:50%;top:30%;width:32%;height:32%;
  transform:translate(-50%,-50%);z-index:5;pointer-events:none;
  filter:drop-shadow(0 2px 2px rgba(0,0,0,.95)) drop-shadow(0 0 3px rgba(0,0,0,.8));
}
.ed-planet-topic-icon-v1 svg{display:block;width:100%;height:100%;overflow:visible}
.ed-planet-topic-icon-v1 svg *{vector-effect:non-scaling-stroke;stroke:#fff;stroke-width:2.15;stroke-linecap:round;stroke-linejoin:round;fill:none}
.ed-planet-topic-icon-v1 svg .solid{fill:#fff;stroke:none}

.ed-planet-image-light-v1{
  position:absolute !important;
  inset:0 !important;
  border-radius:50% !important;
  pointer-events:none !important;
  z-index:2 !important;
  background:
    radial-gradient(circle at var(--light-x,50%) var(--light-y,50%),
      rgba(255,255,255,.54) 0%,
      rgba(255,255,255,.27) 18%,
      rgba(255,255,255,.08) 36%,
      rgba(255,255,255,0) 58%),
    radial-gradient(circle at var(--shade-x,50%) var(--shade-y,50%),
      rgba(0,0,0,.78) 0%,
      rgba(0,0,0,.58) 22%,
      rgba(0,0,0,.28) 42%,
      rgba(0,0,0,0) 66%) !important;
}
/* ED_CANONICAL_PLANET_IMAGE_ASSETS_V1 END */

/* Final label presentation owner. No JS visibility/style writes target labels.
 * Ancestor visibility is inherited; it is not a non-overridable hiding mechanism.
 * Each isolated planet paints image/light/icon/label in order 1/2/5/7. */
.ed-planet-label{
  display:block;
  visibility:inherit;
  opacity:1;
  pointer-events:none;
  z-index:7;
  color:#fff;
  text-shadow:-1px -1px 1px #000,1px -1px 1px #000,-1px 1px 1px #000,1px 1px 1px #000,0 2px 4px rgba(0,0,0,.95);
  position:absolute;
  left:50%;
  top:62%;
  transform:translate(-50%,-50%);
  width:88%;
  margin:0;
  text-align:center;
  line-height:1.05;
}
/* ED_CANONICAL_CONTACT_MODAL_V142 */

/* ED_CANONICAL_FOOTER_CONTACTBAR_V155
   Single geometry owner. Final classes/DOM exist before JS executes. */
.ed-footer{
 position:fixed !important;left:0 !important;right:0 !important;bottom:58px !important;z-index:90 !important;
 margin:0 !important;padding:0 12px !important;border:0 !important;background:transparent !important;pointer-events:none !important;color:#fff;text-align:center;outline:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
}
.ed-footer .ed-shell{
 width:min(calc(100% - 24px),1100px) !important;margin:0 auto !important;padding:0 !important;text-align:center !important;
 font-size:clamp(13px,1.18vw,18px) !important;line-height:1.22 !important;
}
.ed-footer .ed-shell p{margin:.12em 0 !important;padding:0 !important;font-size:1em !important;line-height:1.22 !important;font-family:inherit;font-weight:800;letter-spacing:.035em;color:#fff;text-align:center;text-shadow:0 0 3px rgba(0,0,0,.8)}
@media(max-width:760px){
 .ed-footer{bottom:58px !important;padding:0 8px !important}
 .ed-footer .ed-shell{width:100% !important;font-size:clamp(11px,2.85vw,14px) !important;line-height:1.18 !important}
 .ed-footer .ed-shell p{margin:.10em 0 !important;line-height:1.18 !important}
}

/* Inline About dialog, matching Contact's backdrop and close control. */
.ed-about-modal[hidden]{display:none !important}
.ed-about-modal{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:20px}
.ed-about-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(3px)}
.ed-about-modal-window{position:relative;z-index:1;width:min(760px,100%);max-height:90vh;max-height:90dvh;overflow:auto;overscroll-behavior:contain;padding:clamp(20px,4vw,36px);border:1px solid var(--line);border-radius:16px;background:rgba(3,12,22,var(--ed-panel-opacity));color:var(--text);line-height:1.65}
.ed-about-modal-window h2{display:flex;align-items:center;gap:12px;margin:0 48px 24px 0;font-size:clamp(1.3rem,4vw,1.75rem);line-height:1.2}
.ed-about-modal-window h2 img{width:48px;height:48px;object-fit:contain;flex-shrink:0}
.ed-about-modal-window p{margin:0 0 1em}
/* ED-ABOUT-CONSOLE-TYPEWRITER
   Match the header's terminal/Console typography and green. */
.ed-about-modal-window h2,
.ed-about-modal-window p{
  font-family:"Consolas","Liberation Mono","DejaVu Sans Mono",monospace;
  color:#72ff8b;
}
.ed-about-modal-window p:last-child{margin-bottom:0}
.ed-about-modal-close{position:absolute;right:12px;top:10px;width:42px;height:42px;border:0;border-radius:50%;background:rgba(0,0,0,.62);color:#fff;font:700 29px/1 Arial;cursor:pointer}
.ed-about-modal-close:focus-visible,.ed-sun[data-about-modal-open]:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
body.ed-about-modal-open{overflow:hidden !important}
@media(max-width:760px){.ed-about-modal{padding:12px}.ed-about-modal-window{max-height:94vh;max-height:94dvh}}

/* About trigger must remain the authoritative hit target above decorative solar layers. */
.ed-sun[data-about-modal-open]{pointer-events:auto !important;cursor:pointer}
.ed-sun[data-about-modal-open]>img{pointer-events:none !important}
/* ED Security modal */
.ed-security-modal[hidden]{display:none !important}.ed-security-modal{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;padding:20px}.ed-security-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.46);backdrop-filter:blur(2px)}.ed-security-modal-window{position:relative;z-index:1;width:min(920px,96vw);max-height:92dvh;overflow:auto;border:1px solid rgba(255,255,255,.18);border-radius:18px;background:rgba(10,17,24,var(--ed-panel-opacity));color:#f5f8fa;box-shadow:0 24px 80px rgba(0,0,0,.46);isolation:isolate}.ed-security-modal-images,.ed-security-modal-shade{position:absolute;inset:0;pointer-events:none}.ed-security-modal-images{z-index:-2;overflow:hidden;border-radius:inherit}.ed-security-image{position:absolute;background-repeat:no-repeat;background-size:cover;background-position:center;filter:saturate(.72) contrast(.9)}.ed-security-image-primary{inset:0 44% 0 0;background-image:url("/img/servicios/serv_inside_security_436x404.jpg");opacity:.58}.ed-security-image-secondary{width:48%;height:52%;right:2%;bottom:2%;background-image:url("/img/servicios/serv_seguridad_235x185.png");background-size:contain;background-position:right bottom;opacity:.48}.ed-security-modal-shade{z-index:-1;border-radius:inherit;background:linear-gradient(100deg,rgba(6,12,18,calc(var(--ed-panel-opacity)*.9)),rgba(8,15,22,calc(var(--ed-panel-opacity)*.73)))}.ed-security-modal-content{padding:clamp(24px,4vw,42px)}.ed-security-modal-content h2{margin:0 52px 10px 0;font-size:clamp(1.55rem,4vw,2.05rem)}.ed-security-lead{margin:0 0 20px;line-height:1.55}.ed-security-list{margin:0;padding-left:1.45rem;display:grid;gap:11px}.ed-security-list li{padding-left:.2rem;line-height:1.42}.ed-security-list strong{margin-right:.4rem;color:#fff}.ed-security-list strong:after{content:":"}.ed-security-list span{color:rgba(255,255,255,.86)}.ed-security-summary{margin:22px 0 0;padding-top:17px;border-top:1px solid rgba(255,255,255,.18);line-height:1.55}.ed-security-modal-close{position:absolute;right:12px;top:10px;z-index:5;width:42px;height:42px;border:0;border-radius:50%;background:rgba(0,0,0,.62);color:#fff;font:700 29px/1 Arial;cursor:pointer}body.ed-security-modal-open{overflow:hidden !important}@media(max-width:760px){.ed-security-modal{padding:8px}.ed-security-modal-window{width:100%;max-height:96dvh}.ed-security-modal-content{padding:22px 18px}.ed-security-image-primary{opacity:.42}.ed-security-image-secondary{opacity:.36}.ed-security-modal-shade{background:rgba(7,14,21,calc(var(--ed-panel-opacity)*.85))}.ed-security-list strong{display:block}.ed-security-list strong:after{content:""}}

/* ED Security modal v175: stationary imagery + slightly stronger presence */
.ed-security-image-primary{opacity:.68}
.ed-security-image-secondary{opacity:.58}
@media(max-width:760px){
  .ed-security-modal-window{overflow:hidden}
  .ed-security-modal-content{position:relative;z-index:1;max-height:96dvh;overflow-y:auto;overscroll-behavior:contain}
  .ed-security-modal-images,.ed-security-modal-shade{position:absolute;inset:0}
  .ed-security-image-primary{inset:0 8% 30% 0;opacity:.52}
  .ed-security-image-secondary{width:68%;height:38%;right:0;bottom:0;opacity:.46}
}

/* ED-DISPLAY-MODE-CANONICAL-189
   Manual nucleus diameter: change ONLY --ed-nucleus-scale.
   1.00 = .ed-sun diameter; 1.15 = 15% larger. */

.ed-sun .ed-mode-nucleus-image,[data-sun] .ed-mode-nucleus-image{position:absolute !important;left:0 !important;top:0 !important;inset:auto !important;width:100% !important;height:100% !important;max-width:none !important;max-height:none !important;transform:scale(var(--ed-nucleus-scale)) !important;transform-origin:50% 50% !important;object-fit:cover !important;clip-path:none !important;border:0 !important;outline:0 !important;border-radius:50% !important;box-shadow:none !important;filter:none !important;z-index:1 !important;pointer-events:none !important}
.ed-sun .ed-sun-ed-logo,[data-sun] .ed-sun-ed-logo{position:relative !important;z-index:20 !important}
.ed-lightning-layer{z-index:100 !important;pointer-events:none !important}
.ed-sun .ed-sun-aura023,.ed-sun .ed-sun-aura025,[data-sun] .ed-sun-aura023,[data-sun] .ed-sun-aura025{z-index:10 !important;pointer-events:none !important}
html.ed-mode-full{background-color:#020713 !important;background-image:url("/img/BlueSpace_Prados.jpg") !important;background-position:center center !important;background-size:cover !important;background-repeat:no-repeat !important;background-attachment:scroll !important}html.ed-mode-full body{background:transparent !important}
html.ed-mode-dark{background-color:#020713 !important;background-image:none !important}html.ed-mode-dark body{background:#020713 !important;background-image:none !important}

html.ed-mode-dark .ed-planet{filter:grayscale(.82) saturate(.28) brightness(.72) !important}
html.ed-mode-dark .ed-planet:hover,html.ed-mode-dark .ed-planet.ed-planet-ray-hit{filter:grayscale(.55) saturate(.4) brightness(1.08) !important}

/* ED-DARK-MODE-CANONICAL-200 */
:root{--ed-nucleus-scale:1;--ed-dark-ray-glow-base:var(--ed-nucleus-scale);--ed-dark-ray-glow-peak:1.06}
html.ed-mode-dark .ed-sun::before,html.ed-mode-dark .ed-sun::after,html.ed-mode-dark .ed-solar-plasma-external,html.ed-mode-dark .ed-solar-prominence,html.ed-mode-dark .ed-solar-prominences,html.ed-mode-dark .ed-random-prominences,html.ed-mode-dark .ed-organic-prominences,html.ed-mode-dark .ed-sun-aura023,html.ed-mode-dark .ed-sun-aura025{display:none !important;visibility:hidden !important;opacity:0 !important;animation:none !important;filter:none !important;box-shadow:none !important}
html.ed-mode-dark .ed-sun{background:transparent !important;background-image:none !important;box-shadow:none !important;filter:none !important;text-shadow:none !important}
html.ed-mode-dark .ed-sun>.ed-mode-nucleus-image,html.ed-mode-dark [data-sun]>.ed-mode-nucleus-image{box-shadow:none !important;filter:none !important;z-index:1 !important}
html.ed-mode-dark .ed-lightning-layer,html.ed-mode-dark .ed-direct-lightning023,html.ed-mode-dark .ed-center-visible-beam024{display:block !important;visibility:visible !important}
html.ed-mode-dark .ed-planet{background-color:#02050a !important;background-image:radial-gradient(circle at var(--light-x,50%) var(--light-y,50%),rgba(224,232,242,.34) 0%,rgba(126,139,155,.18) 18%,rgba(24,31,41,.78) 43%,rgba(2,5,10,.98) 72%) !important;box-shadow:inset 0 0 18px rgba(190,203,218,.12),0 4px 18px rgba(0,0,0,.72) !important;opacity:1 !important;visibility:visible !important}
html.ed-mode-dark .ed-planet-image-v1,html.ed-mode-dark .ed-planet-image-light-v1{display:none !important;opacity:0 !important;visibility:hidden !important}
.ed-sun .ed-dark-ray-glow196,[data-sun] .ed-dark-ray-glow196{position:absolute !important;left:50% !important;top:50% !important;width:100% !important;height:100% !important;transform:translate(-50%,-50%) scale(var(--ed-dark-ray-glow-base)) !important;border-radius:50% !important;pointer-events:none !important;opacity:0 !important;visibility:hidden !important;background:transparent !important;box-shadow:none !important;filter:none !important;z-index:0 !important}
html.ed-mode-dark .ed-sun .ed-dark-ray-glow196.ed-dark-ray-glow196-active,html.ed-mode-dark [data-sun] .ed-dark-ray-glow196.ed-dark-ray-glow196-active{visibility:visible !important;opacity:1 !important;background:rgba(255,255,255,.98) !important;box-shadow:0 0 8px 8px rgba(255,255,255,.98),0 0 24px 15px rgba(225,231,239,.76),0 0 52px 27px rgba(163,173,187,.42) !important;animation:edDarkRayGlow200 var(--ed-dark-glow-life,760ms) ease-out both !important}
@keyframes edDarkRayGlow200{0%{opacity:.38;transform:translate(-50%,-50%) scale(calc(var(--ed-dark-ray-glow-base) * .96))}18%{opacity:1;transform:translate(-50%,-50%) scale(calc(var(--ed-dark-ray-glow-base) * var(--ed-dark-ray-glow-peak)))}62%{opacity:.84;transform:translate(-50%,-50%) scale(calc(var(--ed-dark-ray-glow-base) * 1.02))}100%{opacity:0;transform:translate(-50%,-50%) scale(calc(var(--ed-dark-ray-glow-base) * .98))}}

/* Mobile base geometry. Portrait/landscape below only anchor this reference box.
 * site.js exclusively owns orbital coordinates and motion. */
/* Single mobile layer owner, including wide phone landscape. Coordinates/radii
 * stay exclusively in site.js. No readiness visibility gate. */
@media (max-width:760px), (orientation:landscape) and (max-height:520px) and (pointer:coarse){
  .ed-universe{perspective:none}
  .ed-orbit{transform-style:flat}
}
@media (max-width:760px) {
  .ed-hero-scene {
    scale:.96 !important;
    translate:0 clamp(-92px,-6.5vh,-58px) !important;
    transform-origin:50% 50% !important;
    perspective:none !important;
    transform:none !important;
    transform-style:flat !important;
    width:100% !important;
    max-width:none !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:visible !important;
    padding-left:0 !important;
    padding-right:0 !important;
  }
  .ed-sun {
    scale:.52 !important;
    left:50% !important;
    top:50% !important;
    right:auto !important;
    bottom:auto !important;
    margin:0 !important;
    transform:translate(-50%,-50%) !important;
    transform-origin:50% 50% !important;
  }
  .ed-planet {
    scale:.68 !important;
    transform-origin:50% 50% !important;
    transform-style:flat !important;
  }
  .ed-ui072-contact-flow { position:relative !important; left:auto !important; right:auto !important; top:auto !important; bottom:auto !important; transform:none !important; clear:both !important; }
  .ed-universe { position:relative !important; width:100vw !important; min-width:100vw !important; max-width:100vw !important; height:100vw !important; min-height:100vw !important; max-height:100vw !important; left:50% !important; right:auto !important; margin-left:-50vw !important; margin-right:0 !important; padding:0 !important; box-sizing:border-box !important; overflow:visible !important; }
  [data-universe] [data-planet] { width:82px !important; height:82px !important; min-width:82px !important; max-width:82px !important; box-sizing:border-box !important; font-size:clamp(.82rem,3.6vw,1.02rem) !important; line-height:1.02 !important; padding:.42rem !important; }
}

/* ED-MOBILE-LANDSCAPE-CANONICAL-206
   Phone landscape only. Portrait/tablet/desktop remain governed by their
   existing canonical rules. */
@media (orientation:landscape) and (max-height:520px) and (pointer:coarse){
  html,body{
    min-height:100% !important;
    height:auto !important;
    overflow-x:hidden !important;
    overflow-y:auto !important;
  }

  /* Recover vertical space: descriptive footer copy is redundant in landscape. */
  .ed-footer{
    display:none !important;
  }

  /* The side dock needs no bottom reservation. */
  body{
    padding-bottom:env(safe-area-inset-bottom) !important;
  }

  /* Center in the area below the header and left of the dock. The reference
     box contracts on short screens; every planet retains the same ellipse. */
  .ed-hero-scene{
    width:calc(100% - 84px - env(safe-area-inset-right)) !important;
    min-height:0 !important;
    height:calc(100dvh - 68px) !important;
    padding:0 !important;
    overflow:visible !important;
    translate:none !important;
    scale:none !important;
    transform:none !important;
    transform-origin:50% 50% !important;
  }
  .ed-hero-scene .ed-universe{
    position:absolute !important;
    width:min(820px,calc((100vw - 108px - env(safe-area-inset-right)) / .65)) !important;
    min-width:0 !important;
    max-width:none !important;
    height:min(570px,calc((100dvh - 96px) / .65)) !important;
    min-height:0 !important;
    max-height:none !important;
    
    margin:0 !important;
    padding:0 !important;
    transform-origin:50% 50% !important;
  }
  /* Shared local center with site.js. Diameter, orbit radii and planet scale
     are reduced by .80: .52 -> .416, .65 -> .52, 1.20 -> .96. */
  .ed-sun{
    position:absolute !important;
    left:50% !important;
    top:50% !important;
    right:auto !important;
    bottom:auto !important;
    margin:0 !important;
    translate:-50% -50% !important;
    scale:.60 !important;
    transform:none !important;
    transform-origin:50% 50% !important;
  }
}

/* ED-SECURITY-CONSOLE-TYPEWRITER
   Same terminal typography and green used by "Soluciones Digitales" and About. */
.ed-security-modal-content,
.ed-security-modal-content *{
  font-family:"Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important;
  color:#72ff8b !important;
}
.ed-typewriter,[data-ed-typewriter],.ed-modal .typewriter,.ed-modal [data-typewriter]{
 color:var(--ed-typewriter-color) !important;
 font-family:var(--ed-typewriter-font) !important;
}
/* ED-TYPEWRITER-GLOBAL-END */

/* Service summaries reuse Security geometry, layers and typography. */
.ed-service-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 20px;margin:0 42px 20px 0}
.ed-service-heading h2{margin:0}
.ed-security-modal-content > [data-service-link]{margin-top:20px;font-size:.85rem}
.ed-security-modal-content > [data-service-link][aria-disabled="true"]{opacity:.72;cursor:not-allowed}
.ed-security-modal-content > [data-service-link]:focus-visible{outline:2px solid currentColor;outline-offset:4px}
.ed-security-modal-content,.ed-security-modal-content *{color:var(--ed-typewriter-color) !important;font-family:var(--ed-typewriter-font) !important}

.ed-service-modal .ed-security-modal-window{min-height:280px}
.ed-service-modal .ed-security-modal-images{display:flex;align-items:center;justify-content:space-around;gap:12px;padding:20px}
.ed-service-modal .ed-security-modal-images img{width:45%;height:100%;min-width:0;object-fit:contain;opacity:var(--ed-service-background-opacity);mix-blend-mode:screen;mask-image:radial-gradient(ellipse,black 35%,transparent 72%)}
.ed-service-modal .ed-security-modal-images img:only-child{width:75%}
.ed-service-modal [data-service-copy]{position:relative;line-height:1.65;min-height:8em}
@media(max-width:760px){.ed-service-modal .ed-security-modal-window{min-height:0}.ed-service-modal .ed-security-modal-content{min-height:280px}}

/* ED-PORTRAIT-COORDINATE-SYSTEM-BEGIN */
/*
 * Structural reference box for ED Admin portrait coordinates.
 * Admin remains the sole owner of left/top/scale.
 */
@media (orientation:portrait) and (max-width:760px) and (pointer:coarse){
  .ed-hero-scene{
    position:relative !important;
    height:calc(100dvh - 68px) !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:visible !important;
    transform:none !important;
  }
  .ed-hero-scene .ed-universe{
    position:absolute !important;
    margin:0 !important;
    right:auto !important;
    bottom:auto !important;
    overflow:visible !important;
  }
}
/* ED-PORTRAIT-COORDINATE-SYSTEM-END */

/* ED-ADMIN-MANAGED-BEGIN */
/* QA tuning generated by ED Admin. */
:root{
 --ed-typewriter-speed-ms:5;
 --ed-typewriter-color:#72ff8b;
 --ed-typewriter-font:ui-monospace,Consolas,monospace;
}
@media (orientation:portrait) and (max-width:760px) and (pointer:coarse){
 .ed-hero-scene .ed-universe{left:50%!important;top:50%!important;transform:translate(-50%,-50%) scale(1)!important;transform-origin:50% 50%!important}
 .ed-sun,[data-sun]{scale:0.6!important}
}
@media (orientation:landscape) and (max-height:520px) and (pointer:coarse){
 .ed-hero-scene .ed-universe{left:55%!important;top:55%!important;transform:translate(-50%,-50%) scale(0.65)!important;transform-origin:50% 50%!important}
 .ed-sun,[data-sun]{scale:0.6!important}
}
.ed-sun::before,.ed-sun::after{
 scale:0.7!important;opacity:1!important;animation-duration:3800ms!important}
.ed-sun .ed-sun-aura023,[data-sun] .ed-sun-aura023{
 scale:1!important}
.ed-sun .ed-sun-aura025,[data-sun] .ed-sun-aura025{
 scale:1!important}
.ed-solar-plasma-external{scale:1!important;opacity:1!important}
.ed-solar-plasma-external .ed-plasma-flare,.ed-solar-plasma-external i{animation-duration:2800ms!important}
/* ED-ADMIN-MANAGED-END */

/* ED_035_HIDE_LANDSCAPE_BOTTOM_TEXT */
@media (orientation: landscape) and (max-height: 600px) {
  [data-ed-landscape-bottom-copy] { display: none !important; }
}

/* ED_PROD_045_LANDSCAPE_CANONICAL */
@media (orientation: landscape) {
  .ed-hero,
  .ed-hero-scene,
  .ed-universe,
  .ed-orbit,
  .ed-planet,
  .ed-planet::before,
  .ed-planet::after,
  .ed-planet > * {
    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
    clip: auto !important;
    clip-path: none !important;
    contain: none !important;
    mask: none !important;
    -webkit-mask: none !important;
  }
  .ed-universe,
  .ed-orbit { isolation: auto !important; }
  .ed-sun,
  [data-sun] { position:relative; z-index:20 !important; }
}
/* ED_PROD_045_LANDSCAPE_CANONICAL_END */
@keyframes edSunPulse{to{transform:scale(1.06);filter:saturate(1.2) brightness(1.08)}}
@keyframes edCoronaSpin{to{transform:rotate(360deg)}}

/* ED-CANONICAL-FROM-INDEX-053 START */
/* ED-UI-071 typography consolidated by 052. */
.ed-ui071-brand{
  font-size:clamp(2.30rem,3.4vw,3.30rem) !important;
  line-height:1.02 !important;
}
.ed-ui071-contact{
  font-size:clamp(1.65rem,2.6vw,2.45rem) !important;
  line-height:1.08 !important;
}
@media (max-width:760px){
  .ed-ui071-brand{
    font-size:clamp(2.05rem,7.2vw,2.85rem) !important;
  }
  .ed-ui071-contact{
    font-size:clamp(1.55rem,5.4vw,2.05rem) !important;
  }
}
/* ED-CANONICAL-FROM-INDEX-053 END */

/* ED109 LANDSCAPE VIEWPORT HEIGHT OWNER
   Runtime audit 108B proved body/main/.ed-hero-scene ended at Y=292 in an
   880x360 landscape viewport, while .ed-universe continued below that line.
   This owner only extends the landscape rendering context to the viewport. */
@media (orientation: landscape) and (pointer: coarse) and (max-height: 600px) {
  html.ed-mode-full,
  body.ed-main-page {
    min-height: 100vh !important;
    min-height: 100dvh !important;
  }

  body.ed-main-page > main,
  body.ed-main-page > main > .ed-hero-scene {
    min-height: 100vh !important;
    min-height: 100dvh !important;
  }
}

/* ED Security modal: single canonical centered background image */
.ed-security-modal:not(.ed-service-modal) .ed-security-image-primary{
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  background-image:url("/img/servicios/serv_seguridad_235x185.png") !important;
  background-size:contain !important;
  background-position:center center !important;
  background-repeat:no-repeat !important;
  opacity:var(--ed-service-background-opacity) !important;
}
.ed-security-modal:not(.ed-service-modal) .ed-security-image-secondary{display:none !important;}

/* ED service modal inline imagery preview v189: title -> imagery -> summary */
.ed-service-modal .ed-security-modal-images{position:relative;inset:auto;z-index:auto;display:flex;align-items:center;justify-content:center;gap:clamp(10px,2vw,20px);width:100%;height:auto;min-height:0;padding:0 clamp(18px,4vw,42px) clamp(12px,2vw,20px);overflow:visible;border-radius:0;box-sizing:border-box;pointer-events:none}
.ed-service-modal .ed-security-modal-images img{position:relative;width:auto;max-width:45%;height:auto;max-height:clamp(110px,24vh,220px);min-width:0;object-fit:contain;opacity:var(--ed-service-background-opacity);mix-blend-mode:normal;mask-image:none;-webkit-mask-image:none}
.ed-service-modal .ed-security-modal-images img:only-child{width:auto;max-width:min(72%,520px)}
@media(max-width:760px){.ed-service-modal .ed-security-modal-images{gap:8px;padding:0 16px 12px}.ed-service-modal .ed-security-modal-images img{max-height:150px}}

/* ED Security inline imagery preview v193: neutralize legacy background positioning */
.ed-security-modal:not(.ed-service-modal) .ed-security-modal-images{
  position:relative !important;
  inset:auto !important;
  z-index:auto !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:100% !important;
  height:auto !important;
  min-height:0 !important;
  padding:0 18px 14px !important;
  box-sizing:border-box !important;
  pointer-events:none !important;
}
.ed-security-modal:not(.ed-service-modal) .ed-security-image-primary{
  position:relative !important;
  inset:auto !important;
  left:auto !important;
  right:auto !important;
  top:auto !important;
  bottom:auto !important;
  transform:none !important;
  width:min(72%,301px) !important;
  height:clamp(110px,24vh,200px) !important;
  margin:0 auto !important;
  background-position:center !important;
  background-size:contain !important;
  background-repeat:no-repeat !important;
  opacity:var(--ed-service-background-opacity) !important;
  mix-blend-mode:normal !important;
  -webkit-mask-image:none !important;
  mask-image:none !important;
}
