    /* =============== TICKER / RODAPÉ =============== */
    #ftr {
      height: var(--ftr-h);
      flex-shrink: 0;
      display: flex;
      align-items: center;
      background: rgba(0, 0, 0, 0.28);
      border-top: 1px solid rgba(244, 201, 74, 0.14);
      overflow: hidden;
      position: relative;
    }

    #ftr::before,
    #ftr::after {
      content: '';
      position: absolute;
      top: 0;
      bottom: 0;
      width: 60px;
      z-index: 2;
      pointer-events: none;
    }

    #ftr::before {
      left: 0;
      background: linear-gradient(to right, var(--purple-deep2), transparent);
    }

    #ftr::after {
      right: 0;
      background: linear-gradient(to left, var(--purple-deep2), transparent);
    }

    #ticker-track {
      display: inline-flex;
      white-space: nowrap;
      align-items: center;
      animation: tickerScroll 60s linear infinite;
      will-change: transform;
    }

    #ftr:hover #ticker-track {
      animation-play-state: paused;
    }

    .t-item {
      padding: 0 30px;
      font-size: 0.78rem;
      color: var(--cream-soft);
      display: inline-flex;
      align-items: center;
      gap: 10px;
    }

    .t-sep {
      width: 5px;
      height: 5px;
      border-radius: 50%;
      background: var(--gold);
      opacity: 0.6;
    }

    @keyframes tickerScroll {
      from {
        transform: translateX(0);
      }

      to {
        transform: translateX(-50%);
      }
    }

    /* Aviso de nova versão (Service Worker) */
    #update-banner {
      position: fixed;
      left: 50%;
      bottom: calc(var(--sp-4) + env(safe-area-inset-bottom));
      transform: translate(-50%, 20px);
      width: min(460px, 92vw);
      display: flex;
      align-items: center;
      gap: var(--sp-3);
      background: linear-gradient(135deg, var(--purple-mid), var(--purple-deep2));
      border: 2px solid var(--gold);
      color: var(--cream);
      padding: var(--sp-3) var(--sp-4);
      border-radius: var(--radius-lg);
      box-shadow: var(--shadow-lg);
      opacity: 0;
      pointer-events: none;
      z-index: 2100;
      transition: opacity 0.3s var(--ease), transform 0.3s var(--ease);
    }

    #update-banner.visible {
      opacity: 1;
      transform: translate(-50%, 0);
      pointer-events: auto;
    }

    #update-banner-text {
      flex: 1;
      font-size: var(--text-sm);
      font-weight: 500;
      line-height: 1.4;
    }

    #update-banner button {
      font-family: inherit;
      cursor: pointer;
      border-radius: var(--radius-md);
      border: 1px solid var(--gold);
      background: transparent;
      color: var(--gold-light);
      padding: var(--sp-2) var(--sp-3);
      font-size: var(--text-sm);
      font-weight: 600;
    }

    #update-banner #update-banner-now {
      background: var(--gold);
      color: var(--purple-deep);
    }

    #cycle-toast {
      position: fixed;
      left: 50%;
      bottom: calc(var(--sp-7) + env(safe-area-inset-bottom));
      transform: translate(-50%, 20px);
      width: min(460px, 92vw);
      background: linear-gradient(135deg, var(--purple-mid), var(--purple-deep2));
      border: 2px solid var(--gold);
      color: var(--cream);
      padding: var(--sp-6) var(--sp-8) var(--sp-6) var(--sp-6);
      border-radius: var(--radius-lg);
      box-shadow: var(--shadow-lg), 0 0 0 4px rgba(244, 201, 74, 0.14);
      opacity: 0;
      pointer-events: none;
      z-index: 2000;
      transition: opacity 0.3s var(--ease), transform 0.3s var(--ease);
    }

    #cycle-toast.visible {
      opacity: 1;
      transform: translate(-50%, 0);
      pointer-events: auto;
      animation: cycleTostPulse 1.4s ease-in-out 2;
    }

    @keyframes cycleTostPulse {

      0%,
      100% {
        box-shadow: var(--shadow-lg), 0 0 0 4px rgba(244, 201, 74, 0.14);
      }

      50% {
        box-shadow: var(--shadow-lg), 0 0 0 9px rgba(244, 201, 74, 0.3);
      }
    }

    #cycle-toast-title {
      font-family: var(--serif);
      font-size: var(--text-xl);
      font-weight: 700;
      color: var(--gold-light);
      margin-bottom: var(--sp-1);
      line-height: 1.25;
    }

    #cycle-toast-body {
      font-size: var(--text-base);
      font-weight: 500;
      line-height: 1.45;
      color: var(--cream-soft);
    }

    #cycle-toast-close {
      position: absolute;
      top: var(--sp-3);
      right: var(--sp-3);
      width: 30px;
      height: 30px;
      border-radius: 50%;
      border: 1px solid var(--card-border-hover);
      background: rgba(255, 255, 255, 0.06);
      color: var(--cream);
      font-size: var(--text-base);
      display: flex;
      align-items: center;
      justify-content: center;
    }

    #cycle-toast-close:hover {
      background: rgba(255, 255, 255, 0.12);
    }

    @media (max-width: 480px) {
      #cycle-toast {
        width: 94vw;
        padding: 18px 44px 18px 18px;
        bottom: calc(18px + env(safe-area-inset-bottom));
      }

      #cycle-toast-title {
        font-size: 1.15rem;
      }

      #cycle-toast-body {
        font-size: 0.88rem;
      }
    }

