/* ================================================================
   Lucas Mori • Plasma Star Switch
   CSS isolado do botão/astro. Não inclui estilos de página ou navbar.
================================================================ */

.solar-switch{
  --size:70px;

  --star-a:#3a0101;
  --star-b:#802901;
  --star-c:#de5e03;
  --star-d:#f59f00;
  --star-shadow:rgba(255,72,0,.56);
  --star-deep:#5d0300;

  --horizon:rgba(255,128,24,.38);
  --horizon-soft:rgba(255,179,55,.18);

  --core-border-1:rgba(255,72,0,.35);
  --core-border-2:rgba(0,0,0,.34);
  --core-border-3:rgba(245,0,0,.16);

  --veil-core:rgba(0,0,0,.22);
  --veil-edge:rgba(0,0,0,.88);
  --veil-rim:rgba(0,0,0,.96);

  position:relative;
  width:var(--size);
  height:var(--size);
  border:0;
  padding:0;
  border-radius:50%;
  cursor:pointer;
  background:transparent;
  isolation:isolate;
  outline:none;
  transform-style:preserve-3d;
  -webkit-tap-highlight-color:transparent;
}

.solar-switch[data-star-theme="blue"]{
  --star-a:#003477;
  --star-b:#015c86;
  --star-c:#ffd980;
  --star-d:#a9a7a7;
  --star-shadow:rgba(54,169,255,.62);
  --star-deep:#00113d;

  --horizon:rgba(86,179,255,.46);
  --horizon-soft:rgba(255,213,109,.19);

  --core-border-1:rgba(255,233,145,.35);
  --core-border-2:rgba(0,0,0,.34);
  --core-border-3:rgba(247,222,133,.16);

  --veil-core:rgba(0,0,0,.18);
  --veil-edge:rgba(0,4,14,.84);
  --veil-rim:rgba(0,0,0,.96);
}

.solar-switch::after{
  content:"";
  position:absolute;
  inset:3px;
  border-radius:50%;
  pointer-events:none;
  z-index:8;
  background:
    radial-gradient(circle at 42% 36%, rgba(255,255,255,.05), transparent 18%),
    radial-gradient(circle at 50% 50%, var(--veil-core) 0 32%, rgba(0,0,0,.48) 58%, var(--veil-edge) 78%, var(--veil-rim) 100%);
  box-shadow:
    inset 0 0 18px rgba(0,0,0,.88),
    inset 0 0 42px rgba(0,0,0,.72);
  mix-blend-mode:multiply;
  opacity:.92;
  transition:background .55s ease, opacity .55s ease, transform .35s ease;
}

.solar-switch:hover::after{
  opacity:.84;
  transform:scale(1.01);
}

.solar-switch:focus-visible .solar-switch__horizon{
  outline:2px solid color-mix(in srgb, var(--star-c) 80%, white);
  outline-offset:6px;
}

.solar-switch__horizon{
  position:absolute;
  inset:0;
  border-radius:50%;
  overflow:visible;
  background:
    radial-gradient(circle at 50% 50%, rgba(0,0,0,.10) 0 36%, rgba(0,0,0,.72) 56%, rgba(0,0,0,.98) 74%, transparent 78%),
    conic-gradient(from 90deg, transparent, color-mix(in srgb, var(--horizon) 58%, #000) 22%, transparent 42%, color-mix(in srgb, var(--horizon-soft) 60%, #000) 65%, transparent);
  box-shadow:
    inset 0 0 22px rgba(0,0,0,.98),
    0 0 28px color-mix(in srgb, var(--star-shadow) 50%, transparent),
    0 0 78px color-mix(in srgb, var(--star-shadow) 32%, transparent);
  transition:box-shadow .55s ease, background .55s ease, transform .55s cubic-bezier(.2,.8,.18,1);
  animation:solarHorizonBreath 3.6s ease-in-out infinite;
}

@keyframes solarHorizonBreath{
  0%,100%{ transform:scale(1); filter:saturate(1); }
  50%{ transform:scale(1.025); filter:saturate(1.18); }
}

.solar-switch__field{
  position:absolute;
  inset:-21px;
  overflow:visible;
  border-radius:50%;
  pointer-events:none;
  filter:blur(.35px) saturate(1.25);
}

.solar-switch__flare-svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
}

.solar-switch__flare-aura,
.solar-switch__flare-core{
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
  stroke-dasharray:18 138;
  animation:solarFlareTravel var(--dur, 2.6s) cubic-bezier(.5,0,.3,1) infinite;
  animation-delay:var(--delay, 0s);
  transform-origin:center;
  opacity:0;
}

.solar-switch__flare-aura{
  stroke:var(--star-c);
  stroke-width:7;
  filter:blur(6px);
  opacity:.28;
}

.solar-switch__flare-core{
  stroke:color-mix(in srgb, var(--star-d) 75%, var(--star-b));
  stroke-width:1.8;
  filter:blur(1.4px) drop-shadow(0 0 6px var(--star-c));
  opacity:.62;
}

@keyframes solarFlareTravel{
  0%{ stroke-dashoffset:156; opacity:0; }
  12%{ opacity:.9; }
  58%{ opacity:.72; }
  100%{ stroke-dashoffset:-26; opacity:0; }
}

.solar-switch__orb{
  position:absolute;
  inset:11px;
  border-radius:50%;
  overflow:hidden;
  background:
    radial-gradient(circle at 48% 52%, var(--star-b) 0 18%, var(--star-a) 42%, var(--star-deep) 100%);
  box-shadow:
    inset 0 0 12px var(--core-border-1),
    inset -12px -12px 22px var(--core-border-2),
    inset 10px 8px 24px var(--core-border-3),
    0 0 14px var(--star-c),
    0 0 42px var(--star-shadow),
    0 0 88px color-mix(in srgb, var(--star-shadow) 72%, transparent);
  z-index:3;
  transform:translate3d(var(--orb-x, 0px), var(--orb-y, 0px), 0) scale(var(--orb-scale, 1));
  transition:background .65s ease, box-shadow .65s ease, transform .18s ease-out;
}

.solar-switch__orb::before{
  content:"";
  position:absolute;
  inset:-22%;
  border-radius:50%;
  background:
    radial-gradient(circle at 22% 42%, rgba(255,255,255,.22) 0 1.8%, transparent 8%),
    radial-gradient(circle at 58% 24%, color-mix(in srgb, var(--star-c) 80%, transparent) 0 2%, transparent 10%),
    radial-gradient(circle at 74% 72%, color-mix(in srgb, var(--star-d) 74%, transparent) 0 1.5%, transparent 8%),
    conic-gradient(from 18deg, transparent, color-mix(in srgb, var(--star-c) 35%, transparent), transparent, color-mix(in srgb, var(--star-b) 25%, transparent), transparent);
  mix-blend-mode:screen;
  filter:blur(6px) contrast(1.25);
  opacity:.88;
  animation:solarPlasmaSurface 4.8s linear infinite;
}

.solar-switch__orb::after{
  content:"";
  position:absolute;
  inset:-7%;
  border-radius:50%;
  background:
    radial-gradient(circle at 42% 38%, rgba(255,255,255,.12), transparent 24%),
    radial-gradient(circle at 50% 50%, transparent 54%, rgba(0,0,0,.52) 66%, rgba(0,0,0,.86) 78%, transparent 84%);
  filter:blur(2.2px);
  mix-blend-mode:screen;
  opacity:.72;
  animation:solarRimPulse 2.7s ease-in-out infinite;
}

@keyframes solarPlasmaSurface{
  from{ transform:rotate(0deg) scale(1.06); }
  to{ transform:rotate(360deg) scale(1.06); }
}

@keyframes solarRimPulse{
  0%,100%{ opacity:.62; transform:scale(1); }
  50%{ opacity:.92; transform:scale(1.04); }
}

.solar-switch__spark{
  position:absolute;
  left:var(--x);
  top:var(--y);
  width:var(--s);
  height:var(--s);
  border-radius:50%;
  background:var(--star-d);
  z-index:5;
  opacity:0;
  filter:blur(var(--b, 5px));
  box-shadow:0 0 12px var(--star-c), 0 0 26px var(--star-c);
  animation:solarSparkBlink var(--t, 2.2s) ease-in-out infinite;
  animation-delay:var(--d, 0s);
  transform:translate(-50%, -50%) scale(.6);
}

@keyframes solarSparkBlink{
  0%,100%{ opacity:0; transform:translate(-50%, -50%) scale(.35); }
  18%{ opacity:.25; }
  45%{ opacity:1; transform:translate(-50%, -50%) scale(1.2); }
  72%{ opacity:.38; }
}

.solar-switch.is-pressed .solar-switch__horizon{
  transform:scale(.92);
}

.solar-switch.is-pressed .solar-switch__orb{
  --orb-scale:.84;
  filter:brightness(1.25) saturate(1.35);
}

.solar-switch-ripple{
  --ripple-star-shadow:rgba(255,72,0,.56);

  position:fixed;
  width:20px;
  height:20px;
  left:var(--x);
  top:var(--y);
  border-radius:50%;
  pointer-events:none;
  z-index:9999;
  transform:translate(-50%, -50%) scale(0);
  background:
    radial-gradient(circle, transparent 0 28%, rgba(0,0,0,.82) 35%, color-mix(in srgb, var(--ripple-star-shadow) 48%, rgba(0,0,0,.88)) 54%, transparent 70%);
  filter:blur(10px) saturate(1.4);
  animation:solarRippleCollapse .88s cubic-bezier(.16,.84,.24,1) forwards;
}

@keyframes solarRippleCollapse{
  0%{ transform:translate(-50%, -50%) scale(0); opacity:0; }
  14%{ opacity:1; }
  72%{ opacity:.78; }
  100%{ transform:translate(-50%, -50%) scale(120); opacity:0; }
}

@media (prefers-reduced-motion: reduce){
  .solar-switch,
  .solar-switch *,
  .solar-switch::before,
  .solar-switch::after,
  .solar-switch-ripple{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }

  .solar-switch-ripple{
    display:none;
  }
}

/* ================================================================
   TESTE: botão sem anel / horizonte de eventos
================================================================ */

.solar-switch__horizon,
.event-horizon{
  display:none;
}

.solar-switch{
  filter:none;
}

.solar-switch::after{
  inset:0;
  background:
    radial-gradient(circle at 50% 50%,
      var(--veil-core) 0 36%,
      rgba(0,0,0,.42) 58%,
      var(--veil-edge) 82%,
      var(--veil-rim) 100%
    );
  box-shadow:
    inset 0 0 18px rgba(0,0,0,.82),
    inset 0 0 38px rgba(0,0,0,.68);
}

.solar-switch::after{
  inset:0;
  background:
    radial-gradient(circle at 50% 50%,
      rgba(0,0,0,.08) 0 28%,
      rgba(0,0,0,.24) 56%,
      rgba(0,0,0,.58) 82%,
      rgba(0,0,0,.76) 100%
    );
  box-shadow:
    inset 0 0 14px rgba(0,0,0,.62),
    inset 0 0 28px rgba(0,0,0,.42);
  opacity:.78;
}

/* ================================================================
   TESTE: sem fundo preto / sem véu escuro
================================================================ */

/* .solar-switch::after{
  display:none;
}
.solar-switch__horizon,
.event-horizon{
  display:none;
}

.solar-switch::after{
  display:none;
}
.solar-switch::after{
  inset:0;
  background:
    radial-gradient(circle at 50% 50%,
      transparent 0 58%,
      rgba(0,0,0,.18) 82%,
      rgba(0,0,0,.28) 100%
    );
  box-shadow:none;
  opacity:.7;
  mix-blend-mode:normal;
}
.solar-switch__horizon,
.event-horizon,
.solar-switch::after{
  display:none;
}

.solar-switch__field{
  inset:-10px;
}

.solar-switch__flare-aura{
  stroke-width:4.5;
  filter:blur(4px);
}

.solar-switch__flare-core{
  stroke-width:1.2;
  filter:blur(1px) drop-shadow(0 0 4px var(--star-c));
} */

/* ================================================================
   SOLAR SWITCH • BACKGROUND LENS
   Lente visual fixa atrás do botão solar
================================================================ */

.solar-bg-lens{
  --lens-x:0px;
  --lens-y:0px;
  --lens-size:150px;
  --lens-opacity:.82;
  --lens-color-a:rgba(255,72,0,.28);
  --lens-color-b:rgba(255,180,40,.18);
  --lens-dark:rgba(0,0,0,.52);

  position:fixed;
  left:0;
  top:0;
  width:var(--lens-size);
  height:var(--lens-size);
  border-radius:50%;
  pointer-events:none;

  transform:
    translate3d(
      calc(var(--lens-x) - (var(--lens-size) / 2)),
      calc(var(--lens-y) - (var(--lens-size) / 2)),
      0
    );

  z-index:0;
  opacity:var(--lens-opacity);

  background:
    radial-gradient(circle at 50% 50%,
      transparent 0 24%,
      rgba(255,255,255,.08) 30%,
      transparent 38%,
      var(--lens-color-a) 48%,
      transparent 62%,
      var(--lens-dark) 78%,
      transparent 100%
    ),
    conic-gradient(from var(--lens-rotation, 0deg),
      transparent,
      var(--lens-color-b),
      transparent,
      rgba(255,255,255,.08),
      transparent,
      var(--lens-color-a),
      transparent
    );

  filter:
    blur(7px)
    saturate(1.35)
    contrast(1.18);

  mix-blend-mode:screen;

  -webkit-mask-image:radial-gradient(circle,
    #000 0 58%,
    rgba(0,0,0,.72) 68%,
    transparent 100%
  );

  mask-image:radial-gradient(circle,
    #000 0 58%,
    rgba(0,0,0,.72) 68%,
    transparent 100%
  );

  transition:
    opacity .28s ease,
    width .28s ease,
    height .28s ease,
    filter .28s ease;
}

.solar-bg-lens::before,
.solar-bg-lens::after{
  content:"";
  position:absolute;
  inset:18%;
  border-radius:50%;
  pointer-events:none;
}

.solar-bg-lens::before{
  background:
    radial-gradient(circle at 40% 36%,
      rgba(255,255,255,.22),
      transparent 22%
    ),
    radial-gradient(circle at 62% 58%,
      var(--lens-color-b),
      transparent 24%
    );
  filter:blur(10px);
  opacity:.78;
  animation:solarLensPulse 2.8s ease-in-out infinite;
}

.solar-bg-lens::after{
  inset:8%;
  border:1px solid rgba(255,255,255,.08);
  box-shadow:
    inset 0 0 18px rgba(0,0,0,.42),
    0 0 26px var(--lens-color-a);
  filter:blur(3px);
  opacity:.7;
  animation:solarLensSpin 7s linear infinite;
}

body[data-star-theme="blue"] .solar-bg-lens,
.solar-bg-lens.is-blue{
  --lens-color-a:rgba(54,169,255,.32);
  --lens-color-b:rgba(255,214,112,.20);
  --lens-dark:rgba(0,10,28,.56);
}

.solar-bg-lens.is-hidden{
  opacity:0;
}

@keyframes solarLensPulse{
  0%,100%{
    transform:scale(.94);
    opacity:.58;
  }

  50%{
    transform:scale(1.08);
    opacity:.9;
  }
}

@keyframes solarLensSpin{
  from{
    transform:rotate(0deg) scale(1);
  }

  to{
    transform:rotate(360deg) scale(1.04);
  }
}

@media (prefers-reduced-motion: reduce){
  .solar-bg-lens,
  .solar-bg-lens::before,
  .solar-bg-lens::after{
    animation:none !important;
  }
}
