/*
 * Ultrapack Topbar - barra fina site-wide.
 *
 * Paleta e tipografia da loja ultrapackv2.com (extraidas do CSS do
 * painel Avada): azul-acinzentado da marca #4d546c como base, coral
 * #fe8178 como acento, fontes Poppins/Montserrat (ja carregadas pelo
 * tema). Visual enxuto: numeros em destaque, rotulos leves, divisores
 * em hairline (sem "sopa de pontinhos"), um unico ponto coral "ao vivo".
 *
 * Tudo prefixado .up-tb pra nao colidir com o Avada / painel inline.
 */

.up-tb {
    background: #475584;            /* azul-arroxeado, casa com o hero do site */
    color: rgba(255, 255, 255, 0.58);
    font-family: 'Poppins', 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
    font-size: 12px;
    line-height: 1.2;
    -webkit-font-smoothing: antialiased;
    position: relative;
    z-index: 1000;
}

.up-tb__inner {
    /* Barra FLUIDA: usa a largura da janela (com um respiro nas laterais),
       sem cap fixo. Em telas grandes cabe links + 3 numeros + ticker;
       conforme estreita, as camadas responsivas abaixo vao soltando. */
    max-width: none;
    margin: 0 auto;
    padding: 0 30px;
    min-height: 38px;
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0 !important;
}

/* ---- 3 zonas: esquerda (links) | centro (sites/promo) | direita (catalogo+mes+ticker) ----
 * Esquerda e direita com flex:1 (larguras iguais) pra o CENTRO ficar
 * verdadeiramente centralizado na barra, independente do conteudo das
 * pontas. A direita encosta no fim, a esquerda no inicio. */
.up-tb__left {
    flex: 1 1 0;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
}

.up-tb__center {
    flex: 0 1 auto;
    min-width: 0;
    display: flex;
    justify-content: center;
    overflow: hidden;
    /* Folga interna pra o anel de "pulse" da bolinha (box-shadow que cresce
       no fim da animacao) nao ser cortado pelo overflow:hidden desta zona.
       overflow corta na borda do padding-box, entao o padding da o respiro;
       so a esquerda + vertical (onde o anel da bolinha alcanca a borda),
       sem mexer no lado direito. */
    padding: 6px 0 6px 10px;
    /* Preferencia do usuario: o numero de sites (zona central) fica do
       lado DIREITO. order:3 manda essa zona pro fim da linha; a esquerda
       (numeros) cresce e empurra tudo pra direita. Resultado:
       numeros (esquerda) ... ticker ... sites (direita). */
    order: 3;
}

/* ---- Promo de campanha (slot do meio) ---- */
.up-tb__promo {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    max-width: 100%;
    padding: 4px 6px 4px 13px;
    border-radius: 5px;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    /* background e color vem inline (escolha do admin). */
}

.up-tb__promo-text {
    flex: 0 1 auto;
    min-width: 0;            /* deixa o texto encolher e cortar com reticencias */
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 500;
    font-size: 12px;
}

.up-tb__promo-cta {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    padding: 3px 11px;
    border-radius: 4px;
    background: rgba(0, 0, 0, 0.18);   /* contraste sobre qualquer cor de promo */
    color: inherit !important;
    font-weight: 700;
    font-size: 11px;
    text-decoration: none;
    transition: background 0.15s ease;
}

.up-tb__promo-cta:hover,
.up-tb__promo-cta:focus {
    background: rgba(0, 0, 0, 0.30);
    color: inherit;
    text-decoration: none;
}

.up-tb__promo-dismiss {
    flex: 0 0 auto;
    background: transparent;
    border: 0;
    cursor: pointer;
    color: inherit;
    opacity: 0.65;
    font-size: 16px;
    line-height: 1;
    padding: 0 3px;
}

.up-tb__promo-dismiss:hover {
    opacity: 1;
}

/* ---- Links utilitarios (esquerda) ---- */
.up-tb__links {
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
}

.up-tb__link {
    position: relative;
    padding: 0 14px;
    color: rgba(255, 255, 255, 0.66);
    text-decoration: none;
    font-size: 12px;
    transition: color 0.15s ease;
}

.up-tb__links .up-tb__link:first-child {
    padding-left: 0;
}

/* Divisor hairline entre links, em vez de pontinhos. */
.up-tb__link + .up-tb__link::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 1px;
    height: 11px;
    background: rgba(255, 255, 255, 0.18);
}

.up-tb__link:hover,
.up-tb__link:focus {
    color: #ffffff;
    text-decoration: none;
}

/* ---- Bloco direito: numeros + ticker ---- */
.up-tb__right {
    flex: 1 1 0;          /* mesma largura da esquerda -> centro centralizado */
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;  /* catalogo+mes+ticker encostam no fim */
    gap: 20px;
    min-width: 0;
}

.up-tb__stats {
    display: inline-flex;
    align-items: baseline;
    gap: 22px;            /* espaco generoso agrupa os numeros, sem dots */
    white-space: nowrap;
    flex: 0 0 auto;
}

.up-tb__stat {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
}

/* Ponto "ao vivo" quando acompanha um numero (ex.: sites recebendo
   auto-updates): centraliza na vertical em vez de cair na baseline. */
.up-tb__stat .up-tb__live {
    align-self: center;
}

.up-tb__num {
    color: #ffffff;
    font-weight: 700;
    font-size: 13px;
    letter-spacing: 0.2px;
    font-variant-numeric: tabular-nums; /* evita "pulo" de largura no count-up */
}

.up-tb__label {
    color: rgba(255, 255, 255, 0.52);
    font-weight: 400;
}

/* Link "UAU" dentro do rotulo de sites: mais claro que o rotulo (destaca do
   texto apagado), peso medio, sublinha no hover/foco. */
.up-tb__label-link,
.up-tb__label-link:visited {
    color: #ffffff;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}

.up-tb__label-link:hover,
.up-tb__label-link:focus {
    color: #ffffff;
    text-decoration: underline;
}

/* ---- Ticker de frescor (direita) ----
 * Flex row: [ponto] [rotulo] [item]. Ao apertar, SO o nome do item
 * encolhe/corta com reticencias; rotulo, versao, separador e a HORA
 * ficam sempre visiveis (flex: 0 0 auto). Resultado:
 * "Woocommerce Subscripti... 6.4.0 . há 2h". */
.up-tb__ticker {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    white-space: nowrap;
    max-width: 400px;
    min-width: 0;
    flex: 0 1 auto;
    overflow: hidden;
    padding-left: 20px;
    margin-right: 5px;          /* respiro extra: afasta o ticker do vizinho */
    border-left: 1px solid rgba(255, 255, 255, 0.14);  /* hairline separa dos numeros */
    /* Largura animada pelo JS na troca de item (com o item invisivel), pra
       os vizinhos se reposicionarem suave. Linear e curta pra assentar antes
       do slide-in. */
    transition: width 0.28s linear;
}

/* Ponto "ao vivo" coral pulsante - unico elemento animado de acento. */
.up-tb__live {
    flex: 0 0 auto;
    margin-right: 2px;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #fe8178;
    box-shadow: 0 0 0 0 rgba(254, 129, 120, 0.55);
    animation: up-tb-pulse 2.4s ease-out infinite;
}

@keyframes up-tb-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(254, 129, 120, 0.55); }
    70%  { box-shadow: 0 0 0 7px rgba(254, 129, 120, 0); }
    100% { box-shadow: 0 0 0 0 rgba(254, 129, 120, 0); }
}

/* O rotulo "Última atualização:" foi removido do HTML pra liberar
   espaco: o ponto coral pulsante ja sinaliza "atualizacao recente" e o
   title= mostra o texto no hover. Assim sobra largura pro nome + hora. */

/* Item interno (nome + versao + sep + hora): so o nome corta com
   reticencias; versao, separador e HORA ficam sempre visiveis. */
.up-tb__ticker-item {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-width: 0;
    flex: 1 1 auto;
    overflow: hidden;
    color: rgba(255, 255, 255, 0.85);
    /* Troca de item: deslize HORIZONTAL com timing LINEAR (sai pela
       esquerda, entra pela direita) - movimento constante, sem o "pulo"
       vertical que dava a sensacao de subir. */
    transition: opacity 0.28s linear, transform 0.28s linear;
    will-change: opacity, transform;
}

/* Saindo: desliza pra ESQUERDA e some. */
.up-tb__ticker-item.is-leaving {
    opacity: 0;
    transform: translateX(-16px);
}

/* Estado inicial de quem ENTRA: posicionado a direita e invisivel, SEM
   transicao (salta pra ca instantaneamente). Ao remover a classe, desliza
   da direita pro lugar de forma linear. */
.up-tb__ticker-item.is-entering {
    opacity: 0;
    transform: translateX(16px);
    transition: none;
}

/* O NOME e o unico que encolhe e corta quando o item nao cabe. */
.up-tb__ticker-name {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    font-weight: 600;
    color: #ffffff;
    text-decoration: none;   /* quando e link, nao herda sublinhado azul */
}

/* Em vez de "..." (que e binario e piscava na troca), um FADE-OUT suave no
   fim do nome - aplicado so quando ele esta REALMENTE cortado (classe posta
   pelo JS via scrollWidth > clientWidth). Sem suporte a mask, degrada pra
   corte seco (sem reticencias), o que tambem nao pisca. */
.up-tb__ticker-name.is-clipped {
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 26px), transparent);
            mask-image: linear-gradient(to right, #000 calc(100% - 26px), transparent);
}

/* Nome quando e link: mantem a cor branca (inclusive visited) e so
   sublinha + ponteiro no hover/foco, sinalizando que da pra clicar. */
a.up-tb__ticker-name,
a.up-tb__ticker-name:visited {
    color: #ffffff;
    cursor: pointer;
}

a.up-tb__ticker-name:hover,
a.up-tb__ticker-name:focus {
    color: #ffffff;
    text-decoration: underline;
}

.up-tb__ticker-age {
    flex: 0 0 auto;
    white-space: nowrap;
    color: rgba(255, 255, 255, 0.5);
}

/* Separador interno do ticker ("nome versao . há N") - nunca some. */
.up-tb__sep {
    flex: 0 0 auto;
    color: rgba(255, 255, 255, 0.3);
}

/*
 * Degradacao responsiva (barra fluida). Layout:
 *   esquerda = catalogo + atualizacoes do mes | centro = sites | direita = ticker.
 *
 *   >= 1320px : as 3 zonas (numeros | sites | ticker), sites centralizado.
 *   783-1319  : esconde o ticker; numeros + sites agrupados e centralizados.
 *   <= 782px  : so os 2 numeros (catalogo + mes), centralizados.
 *
 * Com promo ativa, ela ocupa o centro (no lugar dos sites) e o ticker some.
 */

/* Abaixo de 1320px nao cabe o layout de 3 zonas com o centro no meio exato
   (a esquerda tem 2 numeros). Esconde o ticker e agrupa numeros + sites
   centralizados. */
@media (max-width: 1319px) {
    .up-tb__ticker {
        display: none;
    }
    .up-tb__inner {
        justify-content: center;
    }
    .up-tb__left,
    .up-tb__center,
    .up-tb__right {
        flex: 0 0 auto;   /* tamanho do conteudo, agrupados ao centro */
    }
}

/* Com promo ativa, ela assume o centro (no lugar dos sites) e o ticker some. */
.up-tb--has-promo .up-tb__ticker {
    display: none;
}

/* Mobile: so os 2 numeros mais fortes (catalogo + mes), centralizados.
   Sites (centro) e ticker (direita) saem. */
@media (max-width: 782px) {
    .up-tb__inner {
        flex-wrap: wrap;
        justify-content: center;
        padding: 6px 14px;
        gap: 6px 14px;
    }
    .up-tb__left {
        width: 100%;
        justify-content: center;
    }
    .up-tb__stats {
        flex-wrap: wrap;
        justify-content: center;
        gap: 4px 18px;
        max-width: 100%;
    }
    /* Sem promo: esconde o centro (sites). Com promo, ela vai pra 1a linha. */
    .up-tb:not(.up-tb--has-promo) .up-tb__center {
        display: none;
    }
    .up-tb--has-promo .up-tb__center {
        width: 100%;
        order: -1;
        justify-content: center;
    }
    .up-tb__right {
        display: none;
    }
    .up-tb__promo {
        max-width: 100%;
    }
}

/* Respeita usuarios que pedem menos movimento. */
@media (prefers-reduced-motion: reduce) {
    .up-tb__ticker-item {
        transition: none;
    }
    .up-tb__ticker {
        transition: none;
    }
    .up-tb__live {
        animation: none;
    }
}
