:root{--primary:252 100% 72%;--vokira-aura-2:188 92% 58%}
.vokira-core-mark {
  display: block;
  position: relative;
  flex: none;
  /* Il simbolo scala CON l'orb: lo stage detta la taglia via variabile
     (≈55% del globo, le proporzioni storiche), il fallback resta l'88px. */
  width: var(--vokira-core-mark-size, 5.5rem);
  height: var(--vokira-core-mark-size, 5.5rem);
}

.vokira-core-orb-mobile .vokira-core-mark {
  width: var(--vokira-core-mark-size, 4.75rem);
  height: var(--vokira-core-mark-size, 4.75rem);
}

/* the same mark lives inside the auth form orbit, at its own scale */
.vokira-auth-form-core-orb .vokira-core-mark {
  width: 5.6rem;
  height: 5.6rem;
}

.vokira-auth-form-orbit-stage[data-auth-compact="true"] .vokira-auth-form-core-orb .vokira-core-mark {
  width: 3.7rem;
  height: 3.7rem;
}

/* dual-layer halo behind the ring — tight ring-hug glow + wide
   soft bloom. Static gradients (zero filters) so the rotating
   ring above stays compositor-cheap. Muted at rest, lit on
   hover/focus/orbit-active. */
.vokira-core-mark::before {
  content: "";
  position: absolute;
  inset: -19%;
  border-radius: 50%;
  pointer-events: none;
  background:
    radial-gradient(circle, transparent 0 27%, hsl(var(--primary) / 0.46) 36%, hsl(var(--primary) / 0.12) 44%, transparent 53%),
    radial-gradient(circle, hsl(var(--vokira-aura-2) / 0.18) 0 18%, hsl(var(--vokira-aura-2) / 0.06) 42%, transparent 68%);
  opacity: 0.55;
  transform: scale(1);
  transition: opacity 340ms ease, transform 480ms cubic-bezier(0.22, 1, 0.36, 1);
}

.vokira-core-orb:hover .vokira-core-mark::before,
.vokira-core-orb:focus-visible .vokira-core-mark::before,
.vokira-orbit-stage[data-orb-hovered="true"] .vokira-core-mark::before,
.vokira-auth-orbit-trigger:hover .vokira-core-mark::before,
.vokira-auth-orbit-trigger:focus-within .vokira-core-mark::before,
.vokira-auth-orbit-stage[data-auth-orbit-active="true"] .vokira-core-mark::before {
  opacity: 1;
  transform: scale(1.07);
}

/* gradient ring around the disc — five theme-bound stops, slow
   orbit (transform-only animation; the glow lives on ::before).
   LAUNCHER ANATOMY: the ring paints ABOVE the black disc (z 2 over
   z 1) and the disc extends under the stroke, so the ring/disc
   junction is black by construction at any scale — no transparent
   gap showing the orb glass behind. */
.vokira-core-mark-ring {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  transform: rotate(-90deg);
  pointer-events: none;
  animation: vokira-core-mark-orbit 16s linear infinite;
}

@keyframes vokira-core-mark-orbit {
  from { transform: rotate(-90deg); }
  to { transform: rotate(270deg); }
}

.vokira-core-mark-stop-a { stop-color: hsl(var(--primary)); }
.vokira-core-mark-stop-b { stop-color: hsl(var(--primary) / 0.9); }
.vokira-core-mark-stop-c { stop-color: hsl(var(--vokira-aura-2)); }
.vokira-core-mark-stop-d { stop-color: hsl(var(--vokira-aura-2) / 0.78); }
.vokira-core-mark-stop-e { stop-color: hsl(var(--primary)); }

/* breathing hairline at the disc edge (like the launcher) — sits
   just outside the disc, above the ring (z 3), breathing outward */
.vokira-core-mark::after {
  content: "";
  position: absolute;
  inset: calc(4.2% - 1px);
  z-index: 3;
  border-radius: 50%;
  pointer-events: none;
  border: 1px solid hsl(var(--primary) / 0.55);
  animation: vokira-core-mark-breathe 4s cubic-bezier(0.22, 1, 0.36, 1) infinite;
}

@keyframes vokira-core-mark-breathe {
  0% { transform: scale(1); opacity: 0.35; }
  70% { opacity: 0.12; }
  100% { transform: scale(1.15); opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .vokira-core-mark::after { animation: none; opacity: 0.25; }
  .vokira-core-mark-ring { animation: none; }
}

/* glossy black disc — brand-black in every theme, chiselled
   double hairline (white line + dark counter-line) and a deep
   bottom shade for sphere depth. LAUNCHER ANATOMY: inset 4.2%
   puts the disc edge at the ring-stroke centerline (45.8% radius
   vs stroke 43.8–47.8%), so the black slides under the ring and
   the junction never shows the backdrop. */
.vokira-core-mark-dot {
  position: absolute;
  inset: 4.2%;
  z-index: 1;
  display: block;
  border-radius: 50%;
  overflow: hidden;
  background: radial-gradient(circle at 50% 46%, hsl(254 22% 10%) 0%, hsl(255 24% 5%) 62%, hsl(260 28% 2%) 100%);
  box-shadow:
    0 10px 26px hsl(var(--primary) / 0.34),
    inset 0 1px 0 hsl(0 0% 100% / 0.22),
    inset 0 0 0 1px hsl(0 0% 100% / 0.16),
    inset 0 0 0 2.5px hsl(260 30% 2% / 0.6),
    inset 0 -12px 20px hsl(260 30% 2% / 0.5);
}

/* glass top-light (launcher finish: 18%/14% white .42, brighter
   than the old 31%/20% .24) + specular crescent + theme reflection */
.vokira-core-mark-dot::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
  background:
    radial-gradient(120% 120% at 18% 14%, hsl(0 0% 100% / 0.42), hsl(0 0% 100% / 0) 46%),
    linear-gradient(168deg, hsl(0 0% 100% / 0.08), transparent 30%),
    radial-gradient(80% 46% at 50% 102%, hsl(var(--primary) / 0.12), transparent 64%);
}

/* V kept at its previous perceived size: the disc grew from 80%
   to 91.6% of the box, so the icon scales by 80/91.6 ≈ .873 */
.vokira-core-mark-icon {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: cover;
  transform: scale(0.873);
}

/* --- scalable variants (VokiraRoundMark component) — the same
   recipe re-scaled for app chrome: sidebar, drawer, topbar, boot
   shell, wizard, tiny chat avatars. Size comes inline from the
   component; ring stroke is compensated there so the ring stays
   readable at small sizes. Halo is muted (quiet) or removed
   (none) so chrome never ignites. Colors stay token-bound; the
   disc stays brand-black. --- */
.vokira-core-mark--scalable {
  width: var(--vokira-mark-size, 2.75rem);
  height: var(--vokira-mark-size, 2.75rem);
}

/* quiet halo — very discreet at rest, tiny lift on lockup hover */
.vokira-core-mark--quiet::before {
  opacity: var(--vokira-mark-halo, 0.3);
}

.vokira-brand-lockup:hover .vokira-core-mark--quiet::before,
.vokira-brand-lockup:focus-visible .vokira-core-mark--quiet::before,
.vokira-mobile-drawer-brand:hover .vokira-core-mark--quiet::before {
  opacity: calc(var(--vokira-mark-halo, 0.3) + 0.18);
  transform: scale(1.04);
}

.vokira-core-mark--no-halo::before,
.vokira-core-mark--no-halo::after {
  display: none;
}

/* compact shadow tuning below ~3rem — the px shadows tuned for
   the 70px hero disc would swallow a 28-38px disc */
.vokira-core-mark--compact .vokira-core-mark-dot {
  box-shadow:
    0 3px 10px hsl(var(--primary) / 0.32),
    inset 0 1px 0 hsl(0 0% 100% / 0.22),
    inset 0 0 0 1px hsl(0 0% 100% / 0.15),
    inset 0 0 0 1.5px hsl(260 30% 2% / 0.55),
    inset 0 -5px 9px hsl(260 30% 2% / 0.5);
}

/* theme-bound text wordmark beside the mark in brand lockups —
   gradient from the same tokens as the ring, adapts to all
   presets and light/dark */
.vokira-brand-wordmark {
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1;
  background: linear-gradient(132deg, hsl(var(--primary)) 8%, hsl(var(--primary) / 0.85) 52%, hsl(var(--vokira-aura-2)) 125%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
