/* Shared home and score-report energy orb. */
  /* --orb-size drives every orb detail. --orb-u is a proportional unit (1 = the
     phone-sized orb), so sparks, embers, blurs and bloom keep the exact same
     energy-orb proportions at any breakpoint instead of flattening on desktop. */
  .core-system { --orb-size: clamp(126px, 31vw, 172px); --orb-u: calc(var(--orb-size) / 86); position: relative; z-index: 10; display: flex; align-items: center; justify-content: center; transform-style: preserve-3d; pointer-events: none; animation: coreFloat 7s ease-in-out infinite; }
  @keyframes coreFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(calc(var(--orb-u) * -8)); } }
  .core-ring { position: absolute; width: calc(var(--orb-u) * 104); height: calc(var(--orb-u) * 104); border-radius: 50%; background: radial-gradient(circle at 50% 50%, rgba(80, 205, 255, 0.3) 0%, rgba(20, 150, 255, 0.16) 24%, rgba(0, 120, 255, 0.07) 42%, rgba(0, 100, 255, 0.02) 60%, transparent 82%); filter: blur(calc(var(--orb-u) * 24)); mix-blend-mode: screen; opacity: 0.9; animation: auraPulse 6s ease-in-out infinite; transition: transform 0.8s var(--fluid-curve), opacity 0.8s var(--fluid-curve), background 0.8s var(--fluid-curve); }
  .core-mass { --core-scale: 1; --core-shift-x: 0px; --core-shift-y: 0px; --orb-spin: 0deg; --orb-charge: 0; --core-reset-shadow: 0 0 calc(var(--orb-u) * 70) rgba(0, 160, 255, 0.4), 0 0 calc(var(--orb-u) * 130) rgba(0, 130, 255, 0.2); position: relative; width: var(--orb-size); height: var(--orb-size); border-radius: 50%; box-shadow: 0 0 calc(var(--orb-u) * 60) rgba(90, 210, 255, 0.28), 0 0 calc(var(--orb-u) * 110) rgba(0, 165, 255, 0.42), 0 0 calc(var(--orb-u) * 210) rgba(0, 130, 255, 0.22); transform: translate3d(var(--core-shift-x), var(--core-shift-y), 0) scale(calc(var(--core-scale) + var(--orb-charge) * 0.06)); filter: saturate(calc(1 + var(--orb-charge) * 0.9)) brightness(calc(1 + var(--orb-charge) * 0.25)); transition: transform 0.14s linear, box-shadow 0.5s var(--fluid-curve), filter 0.25s ease; }
  .orb-l { position: absolute; border-radius: 50%; pointer-events: none; will-change: transform, opacity; }
  .orb-glow { inset: -70%; background: radial-gradient(circle at 50% 50%, rgba(120, 225, 255, 0.5) 0%, rgba(40, 160, 255, 0.28) 24%, rgba(0, 120, 255, 0.12) 44%, rgba(0, 100, 255, 0.03) 62%, transparent 82%); filter: blur(calc(var(--orb-u) * 22)); mix-blend-mode: screen; opacity: 0.9; animation: orbBreathe 6.5s ease-in-out infinite; }
  .orb-body { inset: -15%; background: radial-gradient(circle at 50% 50%, rgba(238, 252, 255, 0.82) 0%, rgba(158, 232, 255, 0.64) 20%, rgba(74, 192, 255, 0.44) 38%, rgba(32, 142, 240, 0.26) 54%, rgba(16, 98, 208, 0.12) 70%, rgba(8, 62, 162, 0.035) 82%, transparent 94%); filter: blur(calc(var(--orb-u) * 10)); mix-blend-mode: screen; opacity: 0.95; animation: orbBreathe 7.5s ease-in-out infinite reverse; }
  .orb-plasma { inset: -5%; background: radial-gradient(circle at 40% 42%, rgba(165, 238, 255, 0.5) 0%, rgba(60, 180, 255, 0) 42%), radial-gradient(circle at 63% 60%, rgba(95, 208, 255, 0.42) 0%, rgba(30, 150, 255, 0) 46%); filter: blur(calc(var(--orb-u) * 14)); mix-blend-mode: screen; opacity: 0.8; animation: plasmaDrift1 9s ease-in-out infinite; }
  .orb-plasma2 { inset: 2%; background: radial-gradient(circle at 62% 38%, rgba(205, 246, 255, 0.46) 0%, rgba(80, 190, 255, 0) 44%), radial-gradient(circle at 36% 64%, rgba(125, 216, 255, 0.4) 0%, rgba(40, 160, 255, 0) 48%); filter: blur(calc(var(--orb-u) * 15)); mix-blend-mode: screen; opacity: calc(0.6 + var(--orb-charge) * 0.4); transform: rotate(var(--orb-spin)); }
  .orb-hot { position: absolute; top: 50%; left: 50%; width: 46%; height: 46%; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle, #ffffff 0%, #ffffff 32%, rgba(236, 252, 255, 0.5) 56%, rgba(180, 240, 255, 0.12) 76%, rgba(255, 255, 255, 0) 100%); filter: blur(calc(var(--orb-u) * 2)); mix-blend-mode: screen; z-index: 2; pointer-events: none; animation: coreThrob 2.6s ease-in-out infinite; }
  .orb-flare { position: absolute; top: 50%; left: 50%; width: 165%; height: calc(var(--orb-u) * 3); transform: translate(-50%, -50%) rotate(-28deg); background: linear-gradient(90deg, transparent 0%, rgba(200,245,255,0) 34%, rgba(228,250,255,0.55) 50%, rgba(200,245,255,0) 66%, transparent 100%); filter: blur(calc(var(--orb-u) * 0.8)); mix-blend-mode: screen; opacity: 0; pointer-events: none; z-index: 3; animation: orbFlare 8s ease-in-out infinite; }
  .core-val { position: absolute; top: 50%; left: 50%; width: 54%; height: 54%; border-radius: 50%; transform: translate(-50%, -50%); background: radial-gradient(circle at 50% 50%, #ffffff 0%, #f2feff 14%, #b6f4ff 30%, #6fdcff 48%, rgba(40, 160, 250, 0.5) 70%, rgba(16, 110, 225, 0) 100%); filter: blur(calc(var(--orb-u) * 3)); mix-blend-mode: screen; animation: coreThrob 2.6s ease-in-out infinite; z-index: 1; }
  .core-val::before { content: ''; position: absolute; inset: 8%; border-radius: 50%; background: radial-gradient(circle at 38% 30%, rgba(255,255,255,0.9) 0%, rgba(255,255,255,0.3) 16%, rgba(255,255,255,0) 46%); filter: blur(calc(var(--orb-u) * 2)); mix-blend-mode: screen; animation: coreGlint 5s ease-in-out infinite; }
  .orb-spark { position: absolute; top: 50%; left: 50%; width: calc(var(--orb-u) * 5); height: calc(var(--orb-u) * 5); margin: calc(var(--orb-u) * -2.5) 0 0 calc(var(--orb-u) * -2.5); border-radius: 50%; background: radial-gradient(circle, #ffffff 0%, #9af4ff 45%, rgba(0,180,255,0) 72%); box-shadow: 0 0 calc(var(--orb-u) * 9) rgba(150, 240, 255, 0.9); pointer-events: none; opacity: calc(0.45 + var(--orb-charge) * 0.55); z-index: 3; }
  .orb-spark.s1 { animation: sparkOrbit1 3.1s linear infinite; }
  .orb-spark.s2 { width: calc(var(--orb-u) * 4); height: calc(var(--orb-u) * 4); animation: sparkOrbit2 4.3s linear infinite; }
  .orb-spark.s3 { width: calc(var(--orb-u) * 3.5); height: calc(var(--orb-u) * 3.5); animation: sparkOrbit3 2.4s linear infinite; }
  .orb-spark.s4 { width: calc(var(--orb-u) * 4.5); height: calc(var(--orb-u) * 4.5); animation: sparkOrbit4 3.7s linear infinite; }
  .orb-spark.s5 { width: calc(var(--orb-u) * 3); height: calc(var(--orb-u) * 3); animation: sparkOrbit5 2.9s linear infinite; }
  .orb-spark.s6 { width: calc(var(--orb-u) * 4); height: calc(var(--orb-u) * 4); animation: sparkOrbit6 5.1s linear infinite; }
  .orb-ember { position: absolute; left: 50%; top: 50%; width: calc(var(--orb-u) * 3); height: calc(var(--orb-u) * 3); margin: calc(var(--orb-u) * -1.5) 0 0 calc(var(--orb-u) * -1.5); border-radius: 50%; background: radial-gradient(circle, #ffffff 0%, #a9f6ff 50%, rgba(0,190,255,0) 75%); box-shadow: 0 0 calc(var(--orb-u) * 8) rgba(160, 245, 255, 0.9); pointer-events: none; opacity: 0; z-index: 3; }
  .orb-ember.e1 { animation: ember1 3.4s ease-out infinite; }
  .orb-ember.e2 { animation: ember2 4.1s ease-out infinite; animation-delay: 1.2s; }
  .orb-ember.e3 { animation: ember3 3.8s ease-out infinite; animation-delay: 2.1s; }

  @keyframes orbField { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.16); } }
  @keyframes orbPlasma { to { transform: rotate(360deg); } }
  @keyframes orbPlasmaR { to { transform: rotate(-360deg); } }
  @keyframes orbVortex { to { transform: rotate(360deg); } }
  @keyframes auraPulse { 0%, 100% { transform: scale(1); opacity: 0.75; } 50% { transform: scale(1.1); opacity: 1; } }
  @keyframes coreThrob { 0%, 100% { transform: translate(-50%, -50%) scale(1); filter: brightness(1); } 50% { transform: translate(-50%, -50%) scale(1.09); filter: brightness(1.22); } }
  @keyframes sparkOrbit1 { 0% { transform: rotate(0deg) translateX(calc(var(--orb-u) * 44)) rotate(0deg); } 50% { transform: rotate(180deg) translateX(calc(var(--orb-u) * 62)) rotate(-180deg); } 100% { transform: rotate(360deg) translateX(calc(var(--orb-u) * 44)) rotate(-360deg); } }
  @keyframes sparkOrbit2 { 0% { transform: rotate(120deg) translateX(calc(var(--orb-u) * 58)) rotate(0deg); } 50% { transform: rotate(300deg) translateX(calc(var(--orb-u) * 38)) rotate(-180deg); } 100% { transform: rotate(480deg) translateX(calc(var(--orb-u) * 58)) rotate(-360deg); } }
  @keyframes sparkOrbit3 { 0% { transform: rotate(240deg) translateX(calc(var(--orb-u) * 50)) rotate(0deg); } 50% { transform: rotate(60deg) translateX(calc(var(--orb-u) * 66)) rotate(180deg); } 100% { transform: rotate(-120deg) translateX(calc(var(--orb-u) * 50)) rotate(360deg); } }
  @keyframes sparkOrbit4 { 0% { transform: rotate(60deg) translateX(calc(var(--orb-u) * 52)) rotate(0deg); } 50% { transform: rotate(240deg) translateX(calc(var(--orb-u) * 34)) rotate(-180deg); } 100% { transform: rotate(420deg) translateX(calc(var(--orb-u) * 52)) rotate(-360deg); } }
  @keyframes sparkOrbit5 { 0% { transform: rotate(300deg) translateX(calc(var(--orb-u) * 40)) rotate(0deg); } 50% { transform: rotate(120deg) translateX(calc(var(--orb-u) * 64)) rotate(180deg); } 100% { transform: rotate(-60deg) translateX(calc(var(--orb-u) * 40)) rotate(360deg); } }
  @keyframes sparkOrbit6 { 0% { transform: rotate(180deg) translateX(calc(var(--orb-u) * 60)) rotate(0deg); } 50% { transform: rotate(0deg) translateX(calc(var(--orb-u) * 46)) rotate(180deg); } 100% { transform: rotate(-180deg) translateX(calc(var(--orb-u) * 60)) rotate(360deg); } }
  @keyframes orbBreathe { 0%, 100% { transform: scale(0.94); opacity: 0.55; } 50% { transform: scale(1.08); opacity: 0.85; } }
  @keyframes plasmaFlicker { 0%, 100% { opacity: 0.55; } 50% { opacity: 0.95; } }
  @keyframes coreGlint { 0%, 100% { transform: translate(0, 0); opacity: 0.9; } 50% { transform: translate(7%, 5%); opacity: 1; } }
  @keyframes ember1 { 0% { transform: translate(0, calc(var(--orb-u) * 8)) scale(0.4); opacity: 0; } 22% { opacity: 0.9; } 100% { transform: translate(calc(var(--orb-u) * -14), calc(var(--orb-u) * -46)) scale(1.1); opacity: 0; } }
  @keyframes ember2 { 0% { transform: translate(0, calc(var(--orb-u) * 6)) scale(0.4); opacity: 0; } 25% { opacity: 0.85; } 100% { transform: translate(calc(var(--orb-u) * 18), calc(var(--orb-u) * -50)) scale(1); opacity: 0; } }
  @keyframes ember3 { 0% { transform: translate(0, calc(var(--orb-u) * 10)) scale(0.4); opacity: 0; } 20% { opacity: 0.8; } 100% { transform: translate(calc(var(--orb-u) * 4), calc(var(--orb-u) * -54)) scale(1.15); opacity: 0; } }
  @keyframes orbWisp { 0% { transform: rotate(0deg) scale(1); } 50% { transform: rotate(-180deg) scale(1.06); } 100% { transform: rotate(-360deg) scale(1); } }
  @keyframes orbFlare { 0%, 68%, 100% { opacity: 0; } 80% { opacity: 0.6; } 88% { opacity: 0.18; } }
  @keyframes plasmaDrift1 { 0%, 100% { transform: rotate(0deg) translate(0, 0); } 50% { transform: rotate(180deg) translate(4%, -3%); } }

  /* Orb gradients are unchanged; only the blend mode flips to normal so the
     identical layers stay visible over the white background. */
  body[data-theme="CLASSIC"] .core-ring,
  body[data-theme="CLASSIC"] .orb-glow,
  body[data-theme="CLASSIC"] .orb-body,
  body[data-theme="CLASSIC"] .orb-plasma,
  body[data-theme="CLASSIC"] .orb-plasma2,
  body[data-theme="CLASSIC"] .orb-hot,
  body[data-theme="CLASSIC"] .orb-flare,
  body[data-theme="CLASSIC"] .core-val,
  body[data-theme="CLASSIC"] .core-val::before { mix-blend-mode: normal; }
