
  * { box-sizing: border-box; }
  html, body { margin: 0; padding: 0; background: #fff; }
  body { font-family: var(--font-body); color: var(--fg); -webkit-font-smoothing: antialiased; }
  a { color: inherit; }
  @keyframes toastIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
  ::selection { background: var(--yellow-200); }
  @keyframes mascotFloat { 0% { transform: translateY(6px) rotate(-1.3deg); } 100% { transform: translateY(-20px) rotate(1.3deg); } }
  @keyframes mascotGlow { 0%,100% { filter: drop-shadow(0 14px 30px rgba(8,14,30,0.55)) drop-shadow(0 0 26px rgba(74,111,181,0.5)) drop-shadow(0 0 60px rgba(246,137,51,0.18)); } 50% { filter: drop-shadow(0 14px 30px rgba(8,14,30,0.55)) drop-shadow(0 0 40px rgba(107,135,188,0.8)) drop-shadow(0 0 80px rgba(246,137,51,0.34)); } }
  @keyframes ringPulse { 0% { transform: translate(-50%,-50%) scale(0.45); opacity: 0.5; } 100% { transform: translate(-50%,-50%) scale(1.9); opacity: 0; } }
  @keyframes twinkle { 0%,100% { opacity: 0.18; } 50% { opacity: 0.95; } }
  @keyframes driftUp { from { transform: translateY(0); } to { transform: translateY(-46px); } }
  @keyframes auroraDrift { 0% { transform: translate(0,0) rotate(0); } 50% { transform: translate(34px,-22px) rotate(8deg); } 100% { transform: translate(0,0) rotate(0); } }
  @keyframes fiboEnter {
    0%   { transform: translateX(140%) translateY(28px) rotate(14deg) scale(0.76); opacity: 0; filter: blur(5px); }
    48%  { opacity: 1; filter: blur(0); }
    64%  { transform: translateX(-7%) translateY(-10px) rotate(-4deg) scale(1.05); }
    79%  { transform: translateX(3%) translateY(5px) rotate(2deg) scale(0.97); }
    91%  { transform: translateX(-1%) translateY(-2px) rotate(-1deg) scale(1.01); }
    100% { transform: translateX(0) translateY(0) rotate(0deg) scale(1); filter: blur(0); }
  }
  @keyframes textReveal {
    from { opacity: 0; transform: translateY(22px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  @keyframes speedLine {
    0%   { transform: translateX(110%) scaleX(0.2); opacity: 0; }
    22%  { opacity: 1; }
    100% { transform: translateX(-110%) scaleX(1); opacity: 0; }
  }
  @keyframes fiboPoses {
    0%,   27%  { background-position-x: -319px; }
    27.1%,54%  { background-position-x: -678px; }
    54.1%,100% { background-position-x: 0px;    }
  }
  @keyframes pulse { 0%,100% { opacity:1; } 50% { opacity:0.4; } }
  @media (prefers-reduced-motion: reduce) { [data-anim] { animation: none !important; } }
  .if-carousel::-webkit-scrollbar { display: none; }
