/* BestYou·AI — the mark and the orb. */

/* ── the mark, in place of the old "BY" square ─────────────────────────── */
.brand-mark.by-mark-wrap{background:none!important;padding:0;overflow:visible;
 display:grid;place-items:center}
.by-mark{width:100%;height:100%;display:block;
 filter:drop-shadow(0 1px 2px rgba(10,33,69,.28))}
:root[data-theme="dark"] .by-mark{filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}

/* ── the orb ───────────────────────────────────────────────────────────── */
.byorb{position:fixed;left:22px;bottom:22px;z-index:94;cursor:pointer;
 line-height:0;border-radius:50%;
 transition:width .3s cubic-bezier(.2,.8,.3,1),height .3s cubic-bezier(.2,.8,.3,1),
            filter .4s ease,transform .2s ease}
.byorb[data-size="s"]{width:38px;height:38px}
.byorb[data-size="m"]{width:56px;height:56px}
.byorb[data-size="l"]{width:82px;height:82px}
.byorb:hover{transform:scale(1.07)}
.byorb svg{width:100%;height:100%;display:block;overflow:visible}
@media(max-width:640px){.byorb{left:16px;bottom:16px}
 .byorb[data-size="l"]{width:62px;height:62px}}
.byorb:focus-visible{outline:2px solid #96762a;outline-offset:4px;border-radius:50%}

/* THE HEARTBEAT — a real cardiac rhythm, not a sine pulse: a firm beat, a
   lighter second beat, then rest. On standby this is all the orb does, and it
   is what makes it read as alive rather than as a spinner. */
@keyframes byBeat{
  0%   {transform:scale(1)}
  8%   {transform:scale(1.075)}   /* lub */
  16%  {transform:scale(1.005)}
  24%  {transform:scale(1.045)}   /* dub */
  34%  {transform:scale(1)}
  100% {transform:scale(1)}
}
@keyframes byHalo{
  0%   {opacity:.28;transform:scale(.92)}
  8%   {opacity:.6;transform:scale(1.04)}
  24%  {opacity:.42;transform:scale(1)}
  100% {opacity:.28;transform:scale(.92)}
}
.byorb .orb-body{transform-origin:50% 50%;animation:byBeat 2.6s ease-in-out infinite}
.byorb .orb-halo{transform-origin:50% 50%;animation:byHalo 2.6s ease-in-out infinite}
.byorb .orb-spark{transform-origin:50% 50%;animation:byBeat 2.6s ease-in-out infinite}

/* filaments drift slowly at rest, quicken when it is working */
@keyframes byDrift{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
.byorb .orb-fil{transform-origin:50% 50%;animation:byDrift 34s linear infinite;opacity:.75}
.byorb.busy .orb-fil{animation-duration:9s;opacity:1}

/* while speaking the beat quickens and the glow lifts — the orb is listening
   to the same thing you are */
.byorb.busy .orb-body,
.byorb.busy .orb-spark{animation-duration:1.25s}
.byorb.busy .orb-halo{animation-duration:1.25s}
.byorb.busy{filter:drop-shadow(0 0 14px var(--orb-mid,#2f7fc4))}
.byorb{filter:drop-shadow(0 0 7px rgba(47,127,196,.34))}

@media(prefers-reduced-motion:reduce){
 .byorb .orb-body,.byorb .orb-halo,.byorb .orb-spark,.byorb .orb-fil{animation:none}
}
