/* Ajustes complementares desta cópia estática — não existiam no bundle
   original (que dependia de React) e cobrem apenas comportamento de JS
   que recriamos manualmente: reveal on scroll, grid comunitário automático,
   e o drawer de seleção (adaptado a partir das classes .size-guide-*). */

/* Refino do selo "K / DESIGN PRODUÇÃO IDENTIDADE" (seção KLAN Lab): no
   original ele é um círculo perfeito com texto de 8px espremido contra a
   borda — lia como adesivo colado na foto. Damos mais respiro ao texto,
   uma leve sombra pra descolar da imagem de fundo, e suavizamos a rotação
   pra ler como um selo desenhado, não um clip-art torto. */
.custom-stamp {
  gap: 10px;
  padding: 0 14px;
  box-shadow: 0 14px 34px rgba(0, 0, 0, .35);
  transform: rotate(-5deg);
}
.custom-stamp b {
  font-size: 60px;
}
.custom-stamp span {
  font-size: 10px;
  line-height: 1.75;
  letter-spacing: .13em;
}
@media (width <= 900px) {
  .custom-stamp { padding: 0 10px; }
  .custom-stamp b { font-size: 44px; }
  .custom-stamp span { font-size: 9px; line-height: 1.6; }
}

/* Mesmo tipo de vazamento do bug do nav{} e footer{}: existe um button{}
   genérico no CSS original com color:#fff (pensado pro botão do menu no
   cabeçalho escuro), que também pega os botões de público (Unissex/
   Feminino/Masculino/Infantil) na seção clara da coleção — ficavam quase
   invisíveis (texto branco sobre fundo papel). O hover/active já inverte
   pra fundo escuro + texto branco corretamente; só o estado normal precisa
   do texto escuro, igual aos filtros de categoria ao lado. */
.audience-filters button {
  color: var(--ink);
}

/* Alternância Feminino/Masculino na tabela de medidas — elemento novo,
   sem equivalente no CSS original, estilizado no mesmo tom do modal. */
.size-guide-gender { display: flex; gap: 8px; margin: 4px 0 18px; }
.size-guide-gender button {
  flex: 1; cursor: pointer; background: #fff; border: 1px solid #ddd8ce;
  color: #6d675e; padding: 9px 10px; font-size: 10px; font-weight: 900;
  letter-spacing: .08em; text-transform: uppercase;
}
.size-guide-gender button.active { background: var(--ink); border-color: var(--ink); color: #fff; }

section { opacity: 1; }
section.is-revealed { animation: reveal-in .7s cubic-bezier(.2,.75,.3,1) both; }
@keyframes reveal-in {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

.community-card { transition: opacity .3s; }

/* (a "SELEÇÃO" foi removida — só o carrinho faz o pedido agora) */

.lifestyle-lightbox { display: none; }
.lightbox-caption { display: flex; align-items: center; justify-content: space-between; }
.lightbox-caption span { text-transform: uppercase; letter-spacing: .12em; font-size: 11px; }
.lightbox-close { color: #fff; background: none; border: 0; font-size: 26px; cursor: pointer; }

.product-card[style*="display: none"] { display: none; }

.whatsapp-float { z-index: 80; }

/* Correção de um bug do próprio CSS original: o seletor genérico "nav{}"
   dentro do @media (width<=900px) foi escrito pensando só no menu mobile
   do cabeçalho, mas <nav class="product-breadcrumb"> nas páginas de
   produto também é um <nav>, então herda position:fixed, background
   escuro e flex-direction:column daquela regra — o que criava a barra
   preta sobreposta à foto em telas médias/pequenas. Neutralizamos aqui
   só as propriedades que vazam, sem tocar no menu mobile de verdade.
   v8.3: <nav class="blog-more"> ("Outras publicações", fim dos artigos
   do blog) sofria o mesmo vazamento — e como o próprio .blog-more
   redefine display:grid, o display:none da regra não o escondia: os
   dois cards ficavam fixos a 99px do topo, cobrindo o texto no celular. */
.product-breadcrumb,
.blog-more {
  position: static !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  background: none !important;
  padding: 0 !important;
  flex-direction: row !important;
  border-top: 0 !important; /* mesmo vazamento, propriedade que tinha ficado de fora */
}

/* Mesma causa: .category-footer (fundo amarelo) nunca redefine "border",
   então herdava a borda escura do footer genérico do rodapé principal. */
.category-footer { border-top: 0; }

/* Contraste: .eyebrow.dark (#766e61) foi pensado para o fundo claro/papel
   do site (onde já é uma escolha estética consciente da marca, então não
   mexemos nela ali) — mas a seção "KLAN LAB" usa fundo amarelo sólido, e
   nesse contexto específico o texto quase some (contraste ~2.5:1). Ajuste
   só nesse contexto, sem alterar a cor nas outras 3 seções que usam a
   mesma classe sobre o papel. */
.custom .eyebrow.dark { color: #111; }

/* Textos pequenos (rótulos em caixa alta, legendas, badges) ficavam entre
   7 e 9px no CSS original — ilegível em telas menores. Subimos um pouco
   mantendo a mesma hierarquia (continuam menores que o texto normal),
   sem alterar espaçamento/layout ao redor. */
.product-tag, .editorial-product-link, .selection-share-header > a:last-child,
.category-header > a:last-child, .whatsapp-float small {
  font-size: 9px;
}
.view-hint, .product-index, .product-info > a, .product-card-commerce span,
.lifestyle-series-caption > span, .lifestyle-overlay, .lifestyle-progress,
.quality-images figcaption, .community-card i, .footer-location > span,
.footer-map strong, .lightbox-close, .lightbox-caption, .gallery-main > .gallery-zoom,
.gallery-main > span, .gallery-mode, .size-guide-trigger, .size-guide-dialog > span,
.product-share-sizes > span, .category-product > span, .category-product > b,
.selection-share-info > span, .selection-share-info > b, .editorial-grid figcaption,
.product-breadcrumb {
  font-size: 10px;
}
.announcement, .header-cta, .filters a, .editorial-controls, .lifestyle-intro > div,
.numbers span, .contact-copy small, .footer-location address, .footer-sign,
.lightbox-caption b, .size-guide-dialog thead th, .size-guide-dialog footer b,
.product-share-tag, .hero-counter span {
  font-size: 11px;
}

/* Alvos de toque abaixo do mínimo recomendado (44x44px) em controles-chave
   de conversão (escolher tamanho, fechar modal, navegar a galeria). Ajuste
   pequeno o bastante para não mudar a leitura visual do layout. */
.product-share-sizes button { min-width: 40px; min-height: 40px; }
.size-guide-close { width: 44px; height: 44px; }
.gallery-main > .gallery-prev, .gallery-main > .gallery-next { width: 44px; height: 44px; }
.lightbox-close { width: 44px; height: 44px; display: grid; place-items: center; font-size: 26px; }
.whatsapp-float > b { width: 44px; height: 44px; }

/* Dots do carrossel hero: a barra visual fina (4px) é a escolha de design
   original — em vez de engordar a barra, só ampliamos a área clicável de
   forma invisível, sem alterar nada visualmente. */
.hero-dots button { position: relative; }
.hero-dots button::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  height: 44px;
  transform: translateY(-50%);
}

/* Botão de fechar da página de produto: reaproveita a classe real
   .product-modal-close do CSS original (fundo #111, X branco, 44x44 —
   já pensada pro tema escuro dessas páginas) só trocando position:absolute
   por fixed, já que aqui não é um modal sobre o resto da página, é a
   página inteira — assim o cliente consegue fechar de qualquer ponto do
   scroll, não só no topo. */
.product-modal-close.page-close {
  position: fixed;
  top: 16px;
  right: 16px;
  z-index: 60;
  display: grid;
  place-items: center;
  text-decoration: none;
}
@media (width <= 900px) {
  .product-modal-close.page-close { top: 10px; right: 10px; }
}

/* pequena bandeira indicando que esta é uma cópia local, discreta no rodapé */
.copy-notice { color: #6a665f; text-align: center; font-size: 10px; letter-spacing: .08em; padding: 10px 5vw 26px; background: #efede7; }

/* ---------------------------------------------------------------------
   CARRINHO DE COMPRAS — novo nesta cópia (o site original não tinha).
   Autorizado pelo cliente em 2026-08-27. Botão amarelo no topo (na
   identidade da marca, --yellow #f3aa22), drawer lateral reaproveitando
   .size-guide-layer / .selection-drawer, botão "ADICIONAR AO CARRINHO"
   na página da peça e bloco "COMPRE JUNTO" (P2 · ganho de ticket).
   ------------------------------------------------------------------- */

/* botão do carrinho no cabeçalho (home, categoria e página de produto) */
.cart-button {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--yellow); color: var(--ink);
  border: 0; cursor: pointer; border-radius: 999px;
  padding: 9px 13px; font: inherit; font-size: 10px; font-weight: 900;
  letter-spacing: .1em; line-height: 1;
}
.cart-button svg { display: block; }
.cart-button b {
  display: inline-grid; place-items: center;
  min-width: 18px; height: 18px; padding: 0 4px;
  background: var(--ink); color: var(--yellow);
  border-radius: 999px; font-size: 10px; font-weight: 900;
}
/* nas páginas de produto/categoria o header usa space-between com 2 itens;
   fixamos a marca à esquerda pra o link "voltar" + carrinho ficarem juntos
   à direita, sem mover nós no DOM. */
.product-share-header, .category-header { justify-content: flex-start; }
.product-share-header > .brand, .category-header > .brand { margin-right: auto; }
.product-share-header > a:last-of-type,
.category-header > a:last-of-type { white-space: nowrap; }
/* na página de produto o "X" fixo de fechar fica sobre o canto direito do
   header — abrimos espaço à direita pra não colidir com o carrinho. */
.product-share-header { padding-right: 72px; }
@media (width <= 600px) {
  /* o X fixo (e o logo) já levam de volta — o link textual sai no mobile
     pra o carrinho respirar. */
  .product-share-header > a:last-of-type { display: none; }
  .product-share-header { padding-right: 60px; }
}

/* drawer do carrinho */
.cart-layer .selection-drawer { margin-left: auto; }
.cart-drawer { gap: 0; }
.cart-drawer-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 20px; border-bottom: 1px solid #c8c3b8; padding-bottom: 16px;
}
.cart-drawer-head h2 { margin: 0; font-size: 14px; letter-spacing: .12em; }
.cart-lines { flex: 1 1 auto; overflow-y: auto; padding: 6px 0; }
.cart-empty {
  border-left: 3px solid var(--yellow); background: #fff;
  padding: 22px; font-size: 13px; color: #666;
}
.cart-line {
  display: grid; grid-template-columns: 60px 1fr auto; gap: 12px;
  align-items: start; padding: 14px 0; border-bottom: 1px solid #ddd8ce;
}
.cart-line-thumb { width: 60px; height: 76px; object-fit: cover; background: var(--paper-deep); }
.cart-line-name { margin: 0 0 3px; font-size: 12px; font-weight: 900; text-transform: uppercase; letter-spacing: .03em; }
.cart-line-price { margin: 0 0 9px; font-size: 11px; color: #6d675e; }
.cart-qty { display: inline-grid; grid-template-columns: 28px 34px 28px; align-items: center; }
.cart-qty button {
  height: 28px; border: 1px solid #aaa; background: #fff; color: #111;
  font-size: 13px; font-weight: 900; cursor: pointer;
}
.cart-qty button:hover { background: #111; color: #fff; border-color: #111; }
.cart-qty-n { text-align: center; font-size: 12px; font-weight: 900; }
.cart-line-end { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; white-space: nowrap; }
.cart-line-sub { font-size: 12px; }
.cart-line-remove {
  border: 0; background: none; cursor: pointer; padding: 0;
  font-size: 10px; font-weight: 900; letter-spacing: .06em;
  text-transform: uppercase; color: #a11; text-decoration: underline;
}
/* display:block explícito — o CSS original tem um footer{} genérico
   (display:grid) que também pegava este <footer> do drawer. */
.cart-foot { display: block; border-top: 1px solid #c8c3b8; padding-top: 16px; }

/* calculadora de frete (CEP -> ViaCEP -> tabela por região) */
.cart-ship { margin-bottom: 14px; }
.cart-ship-title { margin: 0 0 8px; font-size: 11px; font-weight: 900; letter-spacing: .12em; }
.cart-ship-row { display: flex; gap: 8px; }
.cart-ship-cep {
  flex: 1 1 auto; min-width: 0; height: 38px; padding: 0 12px;
  border: 1px solid #aaa; background: #fff; color: #111;
  font: inherit; font-size: 12px; font-weight: 700; letter-spacing: .04em;
}
.cart-ship-calc {
  flex: 0 0 auto; height: 38px; padding: 0 16px; cursor: pointer; border: 0;
  background: var(--ink); color: #fff;
  font: inherit; font-size: 10px; font-weight: 900; letter-spacing: .1em;
}
.cart-ship-calc:hover { background: var(--yellow); color: #111; }
.cart-ship-msg { margin: 8px 0 0; font-size: 11px; color: #6d675e; }
.cart-ship-msg:empty { display: none; }
.cart-ship-result { display: grid; gap: 8px; margin-top: 10px; }
.cart-ship-result:empty { display: none; }
.cart-ship-addr { margin: 0; font-size: 11px; font-weight: 700; line-height: 1.4; }
.cart-ship-opt { display: flex; gap: 8px; align-items: flex-start; cursor: pointer; font-size: 11px; line-height: 1.4; }
.cart-ship-opt input { margin-top: 2px; accent-color: var(--yellow); flex: 0 0 auto; }
.cart-ship-help {
  display: inline-block; margin-top: 10px;
  font-size: 10px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: #6d675e;
}

/* resumo (subtotal / frete / total) */
.cart-summary { border-top: 1px solid #c8c3b8; margin-top: 14px; padding-top: 14px; }
.cart-row { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 8px; }
.cart-row span { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: #6d675e; }
.cart-row b { font-size: 13px; }
.cart-row-total { margin: 4px 0 12px; padding-top: 10px; border-top: 1px solid #ddd8ce; }
.cart-row-total span { color: var(--ink); font-weight: 900; }
.cart-row-total b { font-size: 20px; }
.cart-checkout { width: 100%; min-width: 0; }
.cart-checkout.is-disabled { opacity: .4; pointer-events: none; }
.cart-keep {
  width: 100%; margin-top: 12px; border: 0; background: none; cursor: pointer;
  font-size: 10px; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; color: #6d675e;
}
@media (width <= 560px) {
  .cart-line { grid-template-columns: 54px 1fr; }
  .cart-line-end {
    flex-direction: row; align-items: center; justify-content: space-between;
    grid-column: 1 / -1; width: 100%;
  }
}

/* página da peça: "adicionar" é o CTA sólido; "consultar no WhatsApp"
   vira secundário (contorno). A página de produto tem fundo escuro, então
   o contorno é claro. */
.product-share-copy .add-to-cart { margin-bottom: 12px; }
.product-share-copy .button.yellow.is-secondary {
  background: transparent; border: 1px solid rgba(255, 255, 255, .5); color: #fff;
}
.product-share-copy .button.yellow.is-secondary:hover {
  background: var(--yellow); border-color: var(--yellow); color: #111;
}
.add-to-cart-hint { margin: -4px 0 10px; font-size: 11px; font-weight: 700; color: #ffcf7a; }

/* valor total conforme a quantidade — MESMA cor do preço (amarelo) pra
   dar destaque; aparece só quando a quantidade passa de 1. */
.price-total { display: none; color: var(--yellow); font-weight: 900; font-size: 18px; letter-spacing: -.01em; }
.price-total.is-shown { display: inline-flex; align-items: baseline; gap: 6px; }
.price-total i {
  font-style: normal; font-weight: 900; font-size: 9px;
  letter-spacing: .14em; text-transform: uppercase; color: #8d8d8d;
}
.product-share-sizes.nudge { animation: klan-nudge .38s; }
@keyframes klan-nudge {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}

/* bloco COMPRE JUNTO */
.related-strip { margin-top: 34px; border-top: 1px solid #c8c3b8; padding-top: 22px; }
.related-title { margin: 0 0 14px; font-size: 11px; letter-spacing: .16em; }
.related-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; align-items: start; }
.related-item { display: flex; flex-direction: column; gap: 6px; }
.related-item-link { display: flex; flex-direction: column; gap: 6px; text-decoration: none; color: inherit; }
.related-item img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; background: var(--paper-deep); }
.related-item-name { font-size: 10px; font-weight: 900; text-transform: uppercase; letter-spacing: .04em; line-height: 1.3; }
.related-item-price { font-size: 11px; color: #6d675e; }
/* mesmo botão "adicionar" da vitrine, em cada card do COMPRE JUNTO */
.related-add {
  margin-top: 4px; width: 100%; padding: 9px 8px;
  font-size: 10px; letter-spacing: .06em; line-height: 1;
}
.related-add.is-done { background: #2e7d32; border-color: #2e7d32; color: #fff; }

/* ---------------------------------------------------------------------
   GALERIA DE PRODUTO — com muitas fotos a trilha de miniaturas crescia
   sem limite e empurrava a altura da coluna, deixando um vão de branco
   enorme ao lado da imagem principal. Tiramos a trilha do fluxo
   (position:absolute sobre a própria coluna) para a altura da galeria
   passar a ser SÓ a da imagem principal; a trilha recebe essa mesma
   altura e ganha barra de rolagem própria. A imagem principal continua
   object-fit:cover — o crop ocupa todo o quadro, como e-commerce de
   alto padrão.
   ------------------------------------------------------------------- */
@media (width >= 561px) {
  .product-gallery { position: relative; }
  .product-gallery > .gallery-thumbs {
    position: absolute;
    top: 0; bottom: 0; left: 0;
    width: clamp(72px, 7vw, 94px);
    max-height: none;
    /* impede o grid de comprimir as linhas quando a altura é fixa —
       cada miniatura mantém a proporção e a trilha rola de verdade */
    grid-auto-rows: max-content;
    align-content: start;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    scrollbar-color: #b3ad9f transparent;
  }
  .product-gallery > .gallery-thumbs::-webkit-scrollbar { width: 6px; }
  .product-gallery > .gallery-thumbs::-webkit-scrollbar-thumb { background: #b3ad9f; border-radius: 3px; }
  .product-gallery > .gallery-thumbs::-webkit-scrollbar-track { background: transparent; }
}
@media (width <= 900px) and (width >= 561px) {
  /* nesse range o track de miniaturas do CSS original é clamp(68px,11vw,88px) */
  .product-gallery > .gallery-thumbs { width: clamp(68px, 11vw, 88px); }
}

/* todo crop (detalhe, packshot, editorial) preenche o quadro — sem faixa
   branca de contain. */
.gallery-main > img,
.gallery-main > img.is-cutout,
.gallery-main > img.is-detail,
.gallery-main > img.is-editorial {
  object-fit: cover;
  padding: 0;
  background: #fff;
}
/* zoom fino aplicado por trimDetail() (js) só nas fotos de CROP DE
   DETALHE que sobram fundo branco num eixo — a peça passa a ocupar o
   quadro inteiro. --trim-scale = 1 (sem efeito) nas demais. */
.gallery-main > img {
  transform: scale(var(--trim-scale, 1));
  transform-origin: var(--trim-x, 50%) var(--trim-y, 50%);
}
.gallery-main > img.is-zoomed {
  transform: scale(calc(var(--trim-scale, 1) * 1.35));
}

/* ---------------------------------------------------------------------
   OPÇÃO DE CORES na página do produto — ao escolher a cor, a galeria
   (miniaturas + foto principal) mostra só as peças daquela cor.
   Injetada por productPage() em js/main.js, e só aparece quando
   window.PRODUCT.colors tem 2+ cores. Segue o visual escuro do bloco
   de compra (mesmo cinza do rótulo TAMANHOS).
   ------------------------------------------------------------------- */
.product-share-colors {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
}
.product-share-colors > span {
  letter-spacing: .13em; color: #8d8d8d; font-size: 8px; font-weight: 900;
  margin-right: 3px; text-transform: uppercase;
}
.product-share-colors > span .pc-name { color: #fff; font-weight: 900; }
.product-share-colors .pc-swatch {
  width: 26px; height: 26px; padding: 0; border-radius: 50%; cursor: pointer;
  background: var(--sw, #888);
  border: 1px solid #666;
  box-shadow: inset 0 0 0 2px #0d0d0d;
  transition: box-shadow .18s, transform .18s, border-color .18s;
}
.product-share-colors .pc-swatch:hover { transform: translateY(-1px); border-color: #aaa; }
.product-share-colors .pc-swatch.active {
  border-color: var(--yellow);
  box-shadow: inset 0 0 0 2px #0d0d0d, 0 0 0 2px var(--yellow);
}

/* ---------------------------------------------------------------------
   GALERIA "LIFE STYLE" (Photo Archive) — rotativo horizontal com efeito
   de foco interativo:
   - cada foto ocupa um quadro na proporção da própria imagem (retrato
     ou paisagem, detectado no load), sem cortar o assunto;
   - a faixa rola na HORIZONTAL (drag/scroll), com snap; a navegação
     interna (setas + progresso de série) segue igual;
   - dentro de cada quadro: a foto NÍTIDA por baixo, uma cópia DESFOCADA
     por cima cobrindo tudo, e um retângulo que ao passar o mouse
     "abre uma janela" na versão nítida (no touch, a janela passeia
     sozinha devagar). O cursor redondo amarelo some nesta área.
   ------------------------------------------------------------------- */
@property --rx { syntax: "<percentage>"; inherits: true; initial-value: 50%; }
@property --ry { syntax: "<percentage>"; inherits: true; initial-value: 50%; }

.lifestyle-track {
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
  justify-content: flex-start;
  gap: 10px;
  height: auto;
  min-height: 0;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scroll-padding: 0 6vw;
  padding-bottom: 4px;
  scrollbar-width: thin;
  scrollbar-color: #4a4a4a transparent;
}
.lifestyle-track::-webkit-scrollbar { height: 6px; }
.lifestyle-track::-webkit-scrollbar-thumb { background: #4a4a4a; border-radius: 3px; }
.lifestyle-track::-webkit-scrollbar-track { background: transparent; }
/* série curta (1–3 fotos): distribui os quadros e aumenta o tamanho pra
   a faixa não ficar com um lado vazio */
.lifestyle-track.few { justify-content: space-evenly; }
.lifestyle-track.few .lifestyle-frame { height: clamp(380px, 66vh, 640px); }

.lifestyle-track .lifestyle-frame {
  --rw: min(183px, 40vw);
  --rh: min(300px, 60vh);
  flex: 0 0 auto;
  width: auto;
  height: clamp(340px, 56vh, 560px);
  aspect-ratio: 4 / 5;                 /* padrão retrato até o load definir */
  scroll-snap-align: center;
  position: relative;
  overflow: hidden;
  background: #0d0d0d;
  cursor: crosshair; /* mouse visível; sinaliza a área de foco/reveal */
}
.lifestyle-track .lifestyle-frame.is-landscape { aspect-ratio: 16 / 10; }
.lifestyle-track .lifestyle-frame.is-portrait  { aspect-ratio: 4 / 5; }

.lifestyle-frame .ls-blur,
.lifestyle-frame .ls-focus,
.lifestyle-frame .ls-focus img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  pointer-events: none;
  background: #0d0d0d;
}
.lifestyle-frame .ls-blur {
  filter: blur(9px) saturate(.55) brightness(.72);
  transform: scale(1.06);
}
/* janela nítida: a máscara (retângulo) fica fixa; a imagem por dentro é
   que recebe o zoom de 30% ancorado no ponto do mouse — efeito lupa. */
.lifestyle-frame .ls-focus {
  background: none;
  clip-path: inset(
    calc(var(--ry) - var(--rh) / 2)
    calc(100% - var(--rx) - var(--rw) / 2)
    calc(100% - var(--ry) - var(--rh) / 2)
    calc(var(--rx) - var(--rw) / 2)
  );
  transition: clip-path .14s ease-out;
}
.lifestyle-frame .ls-focus img {
  filter: saturate(1.03) contrast(1.04);
  transform: scale(1);
  transform-origin: var(--rx) var(--ry);
  transition: transform .18s ease-out;
}
.lifestyle-frame.is-revealing .ls-focus img { transform: scale(1.3); }
.lifestyle-frame .ls-window {
  position: absolute;
  z-index: 2;
  left: var(--rx);
  top: var(--ry);
  width: var(--rw);
  height: var(--rh);
  transform: translate(-50%, -50%);
  border: 1px solid rgba(255, 255, 255, .7);
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .35), 0 18px 46px rgba(0, 0, 0, .55);
  pointer-events: none;
  transition: left .14s ease-out, top .14s ease-out, border-color .2s;
}
.lifestyle-frame.is-revealing .ls-window { border-color: var(--yellow); }
.lifestyle-frame .lifestyle-overlay { z-index: 3; }
/* o CSS original tem .lifestyle-frame:hover img { filter: ... } que zerava
   o desfoque da camada de fundo ao passar o mouse — reafirmamos os filtros
   das duas camadas no estado hover/focus. */
.lifestyle-frame:hover .ls-blur,
.lifestyle-frame:focus-visible .ls-blur {
  filter: blur(9px) saturate(.55) brightness(.72);
}
.lifestyle-frame:hover .ls-focus img,
.lifestyle-frame:focus-visible .ls-focus img {
  filter: saturate(1.03) contrast(1.04);
}
.lifestyle-frame::after { inset: auto 0 0 0 !important; height: 38% !important; opacity: .55 !important; }

/* no touch (sem hover) a janela passeia devagar pra mostrar o efeito */
@media (hover: none) {
  .lifestyle-track .lifestyle-frame:not(.is-revealing) {
    animation: ls-drift 7s ease-in-out infinite;
  }
}
@keyframes ls-drift {
  0%, 100% { --rx: 30%; }
  50% { --rx: 70%; }
}

.custom-cursor { transition: opacity .18s; }
.custom-cursor.is-off { opacity: 0; }

/* ---------------------------------------------------------------------
   MOUSE REAL SEMPRE VISÍVEL — o CSS original escondia o cursor
   (`cursor:none`) em quase tudo e desenhava uma "bolinha" amarela no
   lugar. Aqui a gente desliga isso: o ponteiro do sistema aparece em
   toda a navegação (seta no geral, mãozinha em links/botões).
   ------------------------------------------------------------------- */
@media (pointer: fine) {
  html, body, input, select, textarea,
  .product-share-page, .selection-share-page { cursor: auto !important; }
  a[href], button, summary, label[for], [role="button"],
  .product-share-page a[href], .selection-share-page a[href],
  .product-card, .product-card a[href], .community-card,
  .related-item-link, .related-add,
  .blog-strip-nav button, .pc-swatch { cursor: pointer !important; }
  .lifestyle-track .lifestyle-frame { cursor: crosshair !important; }
  .custom-cursor { display: none !important; }
}

@media (width <= 560px) {
  .lifestyle-track .lifestyle-frame {
    height: clamp(360px, 66vh, 540px);
    --rw: 96px;
    --rh: 150px;
  }
}

/* lightbox: respeita a orientação real (o JS marca landscape/portrait ao
   carregar) e nunca corta. */
.lightbox-image-frame > img { object-fit: contain; }
.lightbox-image-frame.landscape > img { max-width: min(100%, 1920px); max-height: min(100%, 1120px); }
.lightbox-image-frame.portrait > img { max-width: min(100%, 1180px); max-height: min(92vh, 1920px); }

/* ---------------------------------------------------------------------
   BANNER ROTATIVO DE DEPOIMENTOS — no lugar da imagem fixa (com o
   adesivo) da seção KLAN LAB. Cada slide: foto editorial + depoimento
   do cliente sobreposto, com crossfade e autoplay. O selo "K" continua
   por cima. O cabeçalho da seção (frase + quote) voltou ao normal.
   ------------------------------------------------------------------- */
.custom-visual.is-cbanner { position: relative; }
.custom-visual.is-cbanner .cbanner-slides { position: absolute; inset: 0; }
.cbanner-slide {
  position: absolute;
  inset: 0;
  margin: 0;
  opacity: 0;
  transition: opacity .6s ease;
}
.cbanner-slide.is-on { opacity: 1; }
.cbanner-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.cbanner-slide figcaption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 64px 8% 44px;
  background: linear-gradient(transparent, rgba(0, 0, 0, .3) 35%, rgba(0, 0, 0, .78));
  color: #fff;
}
.cbanner-slide blockquote {
  margin: 0 0 12px;
  max-width: 640px;
  font-size: clamp(15px, 1.5vw, 21px);
  font-weight: 700;
  line-height: 1.32;
  letter-spacing: -.01em;
}
.cbanner-slide cite {
  font-style: normal;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.cbanner-slide cite b {
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.cbanner-slide cite span {
  font-size: 11px;
  letter-spacing: .04em;
  color: #d8c6ab;
}
.cbanner-dots {
  position: absolute;
  left: 8%;
  bottom: 18px;
  z-index: 3;
  display: flex;
  gap: 8px;
}
.cbanner-dots button {
  width: 22px;
  height: 3px;
  padding: 0;
  border: 0;
  cursor: pointer;
  background: rgba(255, 255, 255, .4);
  transition: background .2s;
}
.cbanner-dots button.is-on { background: var(--yellow); }
@media (width <= 700px) {
  .cbanner-slide figcaption { padding: 52px 6% 40px; }
  .cbanner-dots { left: 6%; }
}

/* ---------------------------------------------------------------------
   PÁGINA DE PRODUTO — material da peça, calcular frete, avaliações e
   barra de compra fixa no mobile. Tema escuro da PDP.
   ------------------------------------------------------------------- */
.product-material {
  margin: 14px 0 0;
  font-size: 12px;
  letter-spacing: .02em;
  color: #b9b9b9;
}
.product-material b { color: #fff; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; font-size: 10px; margin-right: 6px; }

.pdp-freight {
  margin: 20px 0 4px;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, .14);
}
.pdp-freight-title { margin: 0 0 8px; font-size: 10px; font-weight: 900; letter-spacing: .12em; color: #fff; }
.pdp-freight-row { display: flex; gap: 8px; max-width: 340px; }
.pdp-freight-cep {
  flex: 1 1 auto; min-width: 0; height: 38px; padding: 0 12px;
  border: 1px solid #555; background: #111; color: #fff;
  font: inherit; font-size: 12px; font-weight: 700; letter-spacing: .04em;
}
.pdp-freight-calc {
  flex: 0 0 auto; height: 38px; padding: 0 16px; cursor: pointer; border: 0;
  background: var(--yellow); color: #111;
  font: inherit; font-size: 10px; font-weight: 900; letter-spacing: .1em;
}
.pdp-freight-calc:hover { filter: brightness(1.06); }
.pdp-freight-out { margin: 10px 0 0; font-size: 12px; line-height: 1.5; color: #cfcfcf; }
.pdp-freight-out:empty { display: none; }
.pdp-freight-out.is-err { color: #ffb4a2; }
.pdp-freight-out.is-ok b { color: #fff; }
.pdp-freight-out span { display: inline-block; color: #9a9a9a; font-size: 11px; }
.pdp-freight-out .pdp-freight-addr {
  display: block; margin-bottom: 4px;
  color: #fff; font-size: 12px; font-weight: 700; line-height: 1.35;
}
.pdp-freight-help {
  display: inline-block; margin-top: 10px;
  font-size: 10px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: #9a9a9a;
}

.pdp-reviews {
  margin-top: 30px;
  padding-top: 22px;
  border-top: 1px solid rgba(255, 255, 255, .14);
}
.rev-title { margin: 0 0 14px; font-size: 11px; letter-spacing: .16em; color: #fff; }
.rev-stars { display: inline-flex; gap: 1px; color: #4a4a4a; font-size: 13px; line-height: 1; }
.rev-stars .on { color: var(--yellow); }
.rev-summary { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; }
.rev-summary b { font-size: 16px; color: #fff; }
.rev-summary span { font-size: 11px; color: #9a9a9a; letter-spacing: .04em; }
.rev-empty { font-size: 13px; color: #9a9a9a; line-height: 1.5; }
.rev-empty a { color: var(--yellow); font-weight: 700; }
.rev-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.rev-list li { border-left: 2px solid rgba(242, 172, 51, .5); padding-left: 14px; }
.rev-text { margin: 6px 0 6px; font-size: 13px; line-height: 1.5; color: #ddd; }
.rev-by { margin: 0; font-size: 11px; color: #9a9a9a; }
.rev-by b { color: #fff; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; font-size: 10px; }

.pdp-sticky {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 82;
  display: none;
  align-items: center; gap: 12px;
  padding: 10px 14px;
  padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
  background: rgba(10, 10, 10, .96);
  border-top: 1px solid #2a2a2a;
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
}
.pdp-sticky.is-shown { display: flex; }
.pdp-sticky-info { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.pdp-sticky-price { font-size: 15px; font-weight: 900; color: #fff; }
.pdp-sticky-size { font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: #9a9a9a; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pdp-sticky-add { flex: 0 0 auto; min-width: 0; padding: 14px 18px; gap: 10px; }
body.has-sticky-buy .whatsapp-float { transform: translateY(-66px); transition: transform .25s; }
@media (width > 760px) {
  .pdp-sticky { display: none !important; }
  body.has-sticky-buy .whatsapp-float { transform: none; }
}

/* ---------------------------------------------------------------------
   BLOG — novo nesta cópia. Páginas blog-*.html + índice blog.html +
   a faixa #blog na home (antes do footer). Tema escuro, coluna de
   leitura estreita, tipografia com respiro. Reaproveita .category-header
   / .category-hero / .category-footer / .eyebrow / .button / .line-link.
   ------------------------------------------------------------------- */
.blog-page { background: #0a0a0a; color: #e9e9e9; min-height: 100vh; }
.blog-page .category-hero { padding: 8vw 6vw 3vw; }
.blog-page .category-hero h1 { color: #fff; }
.blog-page .category-hero h1 em { color: var(--yellow); font-style: normal; }
.blog-page .category-hero p { color: #b7b7b7; max-width: 640px; }

.blog-article { max-width: 780px; margin: 0 auto; padding: 40px 24px 70px; }
.blog-article > .eyebrow { color: var(--yellow); }
/* mesmo estilo display do site (TT Fellows Black, caixa alta, tracking
   apertado; em = amarelo sem itálico) — só numa escala de leitura */
.blog-article h1 {
  margin: 10px 0 12px; color: #fff;
  font-family: Fellows, "Arial Black", system-ui, sans-serif;
  font-weight: 900;
  text-transform: uppercase;
  font-size: clamp(30px, 4.8vw, 50px);
  line-height: .9;
  letter-spacing: -.045em;
}
.blog-article h1 em { color: var(--yellow); font-style: normal; }
.blog-meta { margin: 0 0 26px; font-size: 12px; letter-spacing: .04em; color: #8f8f8f; text-transform: uppercase; }
.blog-hero {
  width: 100%; aspect-ratio: 16 / 9; object-fit: cover;
  display: block; background: #161616; margin-bottom: 34px;
}
.blog-body { font-size: 16px; line-height: 1.75; color: #dcdcdc; }
.blog-lead {
  font-size: clamp(17px, 2vw, 20px); line-height: 1.6; color: #fff;
  border-left: 3px solid var(--yellow); padding-left: 16px; margin: 0 0 30px;
}
.blog-body h2 {
  margin: 40px 0 12px; color: #fff;
  font-family: Fellows, "Arial Black", system-ui, sans-serif;
  font-weight: 900; text-transform: uppercase;
  font-size: clamp(21px, 2.7vw, 28px); line-height: 1.05; letter-spacing: -.02em;
}
.blog-body h2 em { color: var(--yellow); font-style: normal; }
.blog-body p { margin: 0 0 18px; }
.blog-body ul { margin: 0 0 22px; padding-left: 20px; }
.blog-body li { margin: 0 0 10px; }
.blog-body strong { color: #fff; font-weight: 700; }
.blog-body a {
  color: var(--yellow); text-decoration: underline;
  text-underline-offset: 3px; text-decoration-thickness: 1px;
}
.blog-body a:hover { text-decoration-thickness: 2px; }

.blog-faq { margin: 14px 0 0; border-top: 1px solid #262626; }
.blog-faq-item { border-bottom: 1px solid #262626; }
.blog-faq-item > summary {
  cursor: pointer; list-style: none; padding: 16px 28px 16px 0; position: relative;
  font-size: 15px; font-weight: 700; color: #fff;
}
.blog-faq-item > summary::-webkit-details-marker { display: none; }
.blog-faq-item > summary::after {
  content: "+"; position: absolute; right: 2px; top: 14px;
  font-size: 18px; color: var(--yellow); transition: transform .2s;
}
.blog-faq-item[open] > summary::after { transform: rotate(45deg); }
.blog-faq-item > p { margin: 0 0 18px; color: #c4c4c4; font-size: 15px; line-height: 1.65; }

.blog-cta {
  margin: 44px 0 0; padding: 26px; background: #131313; border: 1px solid #262626;
  display: flex; flex-direction: column; align-items: flex-start; gap: 14px;
}
.blog-cta p { margin: 0; font-size: 15px; font-weight: 700; color: #fff; }
.blog-cta .line-link { color: #fff; }

.blog-more { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 46px; }
.blog-more-link {
  display: block; padding: 18px; background: #131313; border: 1px solid #262626;
  text-decoration: none;
}
.blog-more-link span { display: block; font-size: 10px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; color: var(--yellow); margin-bottom: 6px; }
.blog-more-link b {
  font-family: Fellows, "Arial Black", system-ui, sans-serif;
  font-size: 15px; font-weight: 900; text-transform: uppercase;
  letter-spacing: -.01em; color: #fff; line-height: 1.1;
}
.blog-more-link:hover { border-color: #444; }

/* índice blog.html */
.blog-list {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 18px; padding: 20px 6vw 70px; max-width: 1200px; margin: 0 auto;
}
.blog-card { display: block; text-decoration: none; background: #111; border: 1px solid #232323; }
.blog-card:hover { border-color: #454545; }
.blog-card-img { aspect-ratio: 16 / 10; overflow: hidden; background: #161616; }
.blog-card-img img { width: 100%; height: 100%; object-fit: cover; }
.blog-card-tag { display: inline-block; margin: 16px 18px 0; font-size: 10px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; color: var(--yellow); }
.blog-card h2 {
  margin: 8px 18px 8px; color: #fff; line-height: 1.12;
  font-family: Fellows, "Arial Black", system-ui, sans-serif;
  font-size: 18px; font-weight: 900; text-transform: uppercase; letter-spacing: -.015em;
}
.blog-card p { margin: 0 18px 14px; font-size: 13px; line-height: 1.55; color: #a9a9a9; }
.blog-card b { display: inline-block; margin: 0 18px 18px; font-size: 11px; font-weight: 900; letter-spacing: .1em; color: #fff; transition: color .18s; }
.blog-card:hover b { color: var(--yellow); }

/* faixa #blog na home — rotativo horizontal com setas de voltar/avançar */
.blog-strip { background: #0b0b0b; padding: 90px 6vw; }
.blog-strip-head { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 20px 40px; margin-bottom: 40px; }
.blog-strip-head .eyebrow { color: var(--yellow); flex-basis: 100%; }
/* herda o display de .section h2 (caixa alta, peso 900, tracking -.06em,
   em amarelo sem itálico) — só moderamos o tamanho pra faixa. */
.blog-strip-head h2 { margin: 0; color: #fff; flex-basis: 100%; font-size: clamp(42px, 6vw, 92px); line-height: .82; }
.blog-strip-head-actions { margin-left: auto; display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.blog-strip-head .line-link { color: #fff; }
.blog-strip-nav { display: flex; gap: 8px; }
.blog-strip-nav.is-hidden { display: none; }
.blog-strip-nav button {
  width: 40px; height: 40px; border-radius: 50%;
  display: grid; place-items: center;
  background: transparent; color: #fff; border: 1px solid #4a4a4a;
  font-size: 18px; line-height: 1; cursor: pointer;
  transition: background .18s, color .18s, border-color .18s, opacity .18s;
}
.blog-strip-nav button:hover:not(:disabled) { background: var(--yellow); border-color: var(--yellow); color: #111; }
.blog-strip-nav button:disabled { opacity: .3; cursor: default; }
.blog-strip-list {
  display: flex; gap: 16px;
  overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch; scrollbar-width: none;
}
.blog-strip-list::-webkit-scrollbar { display: none; }
.blog-strip-card {
  flex: 0 0 clamp(258px, calc((100% - 32px) / 3), 360px);
  scroll-snap-align: start;
  display: block; text-decoration: none; background: #131313; border: 1px solid #242424;
}
.blog-strip-card:hover { border-color: #4a4a4a; }
.blog-strip-img { aspect-ratio: 16 / 10; overflow: hidden; background: #1a1a1a; }
.blog-strip-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s; }
.blog-strip-card:hover .blog-strip-img img { transform: scale(1.04); }
.blog-strip-card span { display: inline-block; margin: 16px 16px 0; font-size: 10px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; color: var(--yellow); }
.blog-strip-card h3 {
  margin: 8px 16px 12px; color: #fff; line-height: 1.12;
  font-family: Fellows, "Arial Black", system-ui, sans-serif;
  font-size: 15px; font-weight: 900; text-transform: uppercase; letter-spacing: -.015em;
}
.blog-strip-card b { display: inline-block; margin: 0 16px 16px; font-size: 10px; font-weight: 900; letter-spacing: .1em; color: #9a9a9a; transition: color .18s; }
.blog-strip-card:hover b { color: var(--yellow); }
@media (width <= 820px) {
  .blog-strip-card { flex-basis: 78%; }
  .blog-more { grid-template-columns: 1fr; }
  .blog-strip-head-actions { margin-left: 0; }
}

/* --- Blog: compartilhamento + comentários ---------------------------- */
.blog-share {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin: 4px 0 30px;
}
.blog-article > .blog-body + .blog-share,
.blog-body ~ .blog-share { margin: 34px 0 24px; padding-top: 22px; border-top: 1px solid #262626; }
.blog-share > span {
  font-size: 10px; font-weight: 900; letter-spacing: .14em; text-transform: uppercase;
  color: #8f8f8f; margin-right: 4px;
}
.blog-share-btn {
  font: inherit; font-size: 11px; font-weight: 900; letter-spacing: .04em;
  padding: 8px 12px; border: 1px solid #333; background: #131313; color: #e6e6e6;
  text-decoration: none; cursor: pointer; transition: border-color .15s, background .15s;
}
.blog-share-btn:hover { border-color: var(--yellow); color: #fff; }
.blog-share-copy.is-done { border-color: var(--yellow); color: var(--yellow); }

.blog-comments { margin-top: 46px; padding-top: 24px; border-top: 1px solid #262626; }
.blog-comments > h2 {
  margin: 0 0 18px; color: #fff;
  font-family: Fellows, "Arial Black", system-ui, sans-serif;
  font-weight: 900; text-transform: uppercase; letter-spacing: -.02em;
  font-size: clamp(20px, 2.5vw, 26px);
}
.blog-comments-list { display: grid; gap: 16px; margin-bottom: 24px; }
.blog-comments-empty { color: #9a9a9a; font-size: 14px; }
.blog-comment { border-left: 2px solid rgba(242, 172, 51, .45); padding-left: 14px; }
.blog-comment-by { margin: 0 0 4px; font-size: 11px; color: #9a9a9a; }
.blog-comment-by b { color: #fff; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; font-size: 10px; }
.blog-comment-text { margin: 0; font-size: 14px; line-height: 1.6; color: #d7d7d7; }
.blog-comments-cta {
  background: #131313; border: 1px solid #262626; padding: 22px;
  display: flex; flex-direction: column; align-items: flex-start; gap: 12px;
}
.blog-comments-cta p { margin: 0; font-size: 14px; color: #c9c9c9; line-height: 1.5; }

/* ---------------------------------------------------------------------
   "CONTE A IDEIA. A GENTE VESTE." — ao passar o mouse, os trechos em
   amarelo "desdobram" (hinge no rodapé da palavra, com leve profundidade
   3D) e as palavras brancas deslizam um tico. SÓ transform (nada de
   letter-spacing) pra não quebrar linha. Só no hover, só se o usuário
   não pediu menos movimento.
   ------------------------------------------------------------------- */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .contact-phrase { perspective: 760px; }
  .contact-phrase span,
  .contact-phrase em {
    display: inline-block;
    transition: transform .5s cubic-bezier(.2, .8, .2, 1);
    will-change: transform;
    backface-visibility: hidden;
  }
  .contact-phrase em { transform-origin: 0 100%; }
  .contact-phrase:hover em {
    transform: rotateX(-18deg) translateY(-3px) scale(1.02);
    text-shadow: 0 10px 22px rgba(0, 0, 0, .4);
  }
  .contact-phrase:hover em:nth-of-type(2) { transition-delay: .09s; }
  .contact-phrase:hover span { transform: translateX(5px); }
  .contact-phrase:hover span:nth-of-type(2) { transition-delay: .05s; }
}

/* ---------------------------------------------------------------------
   CHECKOUT (checkout.html) — cadastro do cliente antes de mandar o
   pedido pro WhatsApp. Tema escuro, no mesmo tom das paginas de produto.
   ------------------------------------------------------------------- */
body:has(.checkout-page) { background: #080808; }
.checkout-page { background: #080808; color: #e9e9e9; min-height: 100vh; }
.checkout-page .category-header { border-bottom: 1px solid #222; }

.checkout-wrap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: 44px;
  max-width: 1120px;
  margin: 0 auto;
  padding: 44px 6vw 90px;
  align-items: start;
}
.checkout-main .eyebrow { color: var(--yellow); }
.checkout-main h1 {
  margin: 6px 0 12px;
  font-family: Fellows, "Arial Black", system-ui, sans-serif;
  font-weight: 900; text-transform: uppercase; letter-spacing: -.05em;
  line-height: .9; font-size: clamp(34px, 5vw, 56px); color: #fff;
}
.checkout-lead { margin: 0 0 30px; max-width: 52ch; color: #b6b6b6; line-height: 1.55; font-size: 14px; }

.checkout-form { display: grid; gap: 22px; }
.ck-fs { border: 1px solid #262626; padding: 20px 18px 22px; margin: 0; display: grid; gap: 14px; }
.ck-fs legend {
  padding: 0 8px; margin-left: -4px;
  font-size: 10px; font-weight: 900; letter-spacing: .16em; text-transform: uppercase; color: var(--yellow);
}
.ck-field { display: grid; gap: 6px; font-size: 11px; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; color: #8f8f8f; }
.ck-field i { color: var(--yellow); font-style: normal; }
.ck-field input {
  background: #131313; border: 1px solid #333; color: #fff;
  padding: 11px 12px; font-size: 14px; font-family: inherit; letter-spacing: normal; text-transform: none; font-weight: 400;
  width: 100%; border-radius: 0;
}
.ck-field input:focus { outline: none; border-color: var(--yellow); }
.ck-field input[readonly] { background: #0e0e0e; color: #cfcfcf; }
.ck-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ck-uf { max-width: 90px; }

.ck-modes { display: grid; gap: 8px; margin-bottom: 4px; }
.ck-mode { display: flex; align-items: center; gap: 9px; font-size: 13px; color: #ddd; cursor: pointer; }
.ck-mode input { accent-color: var(--yellow); flex: 0 0 auto; }
.ck-pay { padding: 12px 14px; border: 1px solid #2c2c2c; border-radius: 10px; }
.ck-pay:has(input:checked) { border-color: var(--yellow); background: rgba(243, 170, 34, .06); }
.ck-pay b { color: #fff; }
.ck-pay-hint { margin: 8px 0 0; font-size: 11.5px; color: #8a8a8a; }
.ck-cep-row { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: end; }
.ck-cep-btn {
  height: 40px; padding: 0 16px; cursor: pointer;
  background: transparent; border: 1px solid #555; color: #fff;
  font-size: 10px; font-weight: 900; letter-spacing: .1em; text-transform: uppercase;
  transition: background .18s, color .18s, border-color .18s;
}
.ck-cep-btn:hover { background: var(--yellow); border-color: var(--yellow); color: #111; }
.ck-cep-msg { margin: -4px 0 0; font-size: 11px; color: #ffcf7a; min-height: 1em; }
.ck-pickup { display: none; margin: 4px 0 0; font-size: 13px; color: #bdbdbd; line-height: 1.5; }
.checkout-form.is-pickup .ck-addr { display: none; }
.checkout-form.is-pickup .ck-pickup { display: block; }

.ck-consent { display: flex; gap: 10px; align-items: flex-start; font-size: 12.5px; color: #cacaca; line-height: 1.5; cursor: pointer; }
.ck-consent input { accent-color: var(--yellow); margin-top: 2px; flex: 0 0 auto; }
.ck-error { margin: 0; color: #ffb4a2; font-size: 13px; font-weight: 700; min-height: 1em; }
.ck-error:empty { min-height: 0; }
.ck-submit { width: 100%; padding: 15px; font-size: 12px; }
.ck-submit:disabled { opacity: .6; cursor: wait; }
.ck-submit-wa { width: 100%; margin-top: -4px; padding: 12px; background: transparent; border: 1px solid #3a3a3a; border-radius: 999px; color: #d6d6d6; font: inherit; font-size: 12px; font-weight: 700; letter-spacing: .3px; cursor: pointer; }
.ck-submit-wa:hover, .ck-submit-wa:focus-visible { border-color: var(--yellow); color: var(--yellow); }
.ck-note { margin: -6px 0 0; font-size: 11px; color: #7c7c7c; text-align: center; }
.ck-sent { margin: 8px 0 0; font-size: 13px; color: #9ed99e; text-align: center; }
.ck-sent a { color: var(--yellow); text-decoration: underline; }

.checkout-aside {
  position: sticky; top: 20px;
  background: #111; border: 1px solid #242424; padding: 22px 20px;
}
.checkout-aside h2 {
  margin: 0 0 16px;
  font-family: Fellows, "Arial Black", system-ui, sans-serif;
  font-weight: 900; text-transform: uppercase; letter-spacing: -.02em; color: #fff; font-size: 18px;
}
.ck-line { display: grid; grid-template-columns: 46px 1fr auto; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid #202020; }
.ck-line img { width: 46px; height: 58px; object-fit: cover; background: #1a1a1a; }
.ck-line-name { margin: 0 0 2px; font-size: 11px; font-weight: 900; text-transform: uppercase; letter-spacing: .03em; color: #fff; line-height: 1.25; }
.ck-line-name span { display: block; font-size: 10px; color: #9a9a9a; font-weight: 700; }
.ck-line-qty { margin: 0; font-size: 11px; color: #9a9a9a; }
.ck-line b { font-size: 12px; color: #fff; }
.ck-tot { display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; color: #c9c9c9; padding: 7px 0 0; }
.ck-tot b { color: #fff; font-weight: 700; }
.ck-tot-grand { margin-top: 6px; padding-top: 12px; border-top: 1px solid #2a2a2a; font-size: 15px; }
.ck-tot-grand span, .ck-tot-grand b { color: var(--yellow); font-weight: 900; }
.ck-eta { margin: 8px 0 0; font-size: 11px; color: #8f8f8f; }
.ck-empty { margin: 0 0 14px; color: #b6b6b6; font-size: 14px; }

@media (width <= 860px) {
  .checkout-wrap { grid-template-columns: 1fr; gap: 28px; padding: 28px 5vw 70px; }
  .checkout-aside { position: static; order: -1; }
}
@media (width <= 460px) {
  .ck-2col { grid-template-columns: 1fr; }
  .ck-uf { max-width: none; }
}

/* logo da marca leva ao início do site (header já era link; aqui o do
   rodapé virou link também — bloco pra o <a> ocupar a área toda). */
.footer-brand a { display: block; }

/* ====================================================================
   Pedido: confirmação com nº na tela + página de rastreio (etapas)
   ==================================================================== */
.ck-sent { margin: 16px 0 0; padding: 16px 18px; border: 1px solid #2c3a2c;
  background: #0e140e; border-radius: 12px; color: #cfe8cf; font-size: 13px; line-height: 1.5; }
.ck-sent p { margin: 0 0 6px; }
.ck-sent p:last-child { margin-bottom: 0; }
.ck-sent-num { font-size: 15px; color: #e9e9e9; }
.ck-sent-num b { color: var(--yellow); font-weight: 900; letter-spacing: .3px; }
.ck-sent a { color: #9ed99e; }
.ck-sent-track { display: inline-block; margin-top: 4px; font-weight: 800;
  color: var(--yellow) !important; text-decoration: none; }
.ck-sent-track:hover { text-decoration: underline; }

/* --- página rastreio.html ------------------------------------------ */
body:has(.rastreio-page) { background: #080808; }
.rastreio-page { background: #080808; color: #e9e9e9; min-height: 100vh;
  display: flex; flex-direction: column; }
.rastreio-wrap { max-width: 720px; margin: 0 auto; width: 100%;
  padding: 48px 5vw 80px; flex: 1; }
.rastreio-page .eyebrow { color: #8f8f8f; letter-spacing: .18em; font-size: 11px; margin: 0 0 10px; }
.rastreio-page h1 { font-size: clamp(26px, 5vw, 40px); margin: 0 0 12px; color: #fff; }
.rastreio-lead { color: #b6b6b6; font-size: 14px; line-height: 1.6; margin: 0 0 26px; }
.rastreio-lead b { color: var(--yellow); font-weight: 700; }
.rk-form { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap; }
.rk-form .ck-field { flex: 1; min-width: 220px; display: flex; flex-direction: column;
  gap: 6px; font-size: 12px; color: #c9c9c9; }
.rk-input { background: #131313; border: 1px solid #333; color: #fff; border-radius: 10px;
  padding: 12px 14px; font-size: 15px; letter-spacing: .5px; text-transform: uppercase; }
.rk-input:focus { outline: 2px solid var(--yellow); outline-offset: 1px; border-color: var(--yellow); }
.rk-btn { white-space: nowrap; }
.rk-result { margin-top: 26px; }
.rk-loading { color: #9a9a9a; font-size: 14px; }
.rk-empty { border: 1px solid #2a2a2a; background: #111; border-radius: 12px;
  padding: 18px 20px; color: #c2c2c2; font-size: 14px; line-height: 1.6; }
.rk-empty b { color: #fff; }

.rk-card { border: 1px solid #242424; background: #111; border-radius: 14px; padding: 22px 22px 24px; }
.rk-card-head { border-bottom: 1px solid #242424; padding-bottom: 14px; margin-bottom: 18px; }
.rk-card-num { font-size: 16px; color: #e9e9e9; margin: 0 0 4px; }
.rk-card-num b { color: var(--yellow); font-weight: 900; letter-spacing: .3px; }
.rk-card-meta { font-size: 12px; color: #8f8f8f; margin: 0; }
.rk-card-cancel { margin: 8px 0 0; color: #ffb4a2; font-weight: 800; font-size: 13px; }

.rk-steps { list-style: none; margin: 0; padding: 0; }
.rk-step { position: relative; padding: 0 0 22px 34px; }
.rk-step:last-child { padding-bottom: 0; }
.rk-step::before { content: ""; position: absolute; left: 10px; top: 4px; bottom: -4px;
  width: 2px; background: #2c2c2c; }
.rk-step:last-child::before { display: none; }
.rk-step-dot { position: absolute; left: 3px; top: 2px; width: 16px; height: 16px;
  border-radius: 50%; background: #1a1a1a; border: 2px solid #3a3a3a; }
.rk-step.is-done::before { background: var(--yellow); }
.rk-step.is-done .rk-step-dot { background: var(--yellow); border-color: var(--yellow); }
.rk-step.is-current .rk-step-dot { box-shadow: 0 0 0 4px rgba(243, 170, 34, .22); }
.rk-step-t { margin: 0; font-size: 14px; font-weight: 800; color: #6f6f6f; }
.rk-step.is-done .rk-step-t { color: #fff; }
.rk-step-d { margin: 2px 0 0; font-size: 12px; color: #8a8a8a; line-height: 1.5; }
.rk-step-em { margin: 3px 0 0; font-size: 11px; color: var(--yellow); font-weight: 700; }

.rk-track-code { margin: 4px 0 0; font-size: 13px; color: #cfcfcf; }
.rk-track-code b { color: #fff; letter-spacing: .5px; }
.rk-pay { margin: 4px 0 0; padding: 10px 14px; border-radius: 10px; font-size: 13px; font-weight: 700; border: 1px solid; }
.rk-pay.is-ok { color: #9ed99e; border-color: #2f5a2f; background: rgba(158, 217, 158, .07); }
.rk-pay.is-wait { color: var(--yellow); border-color: #5a4a22; background: rgba(243, 170, 34, .07); }
.rk-pay.is-bad { color: #ffb4a2; border-color: #5a2f2f; background: rgba(255, 180, 162, .07); }
.rk-pay-banner { margin: 14px 0 0; }
.rk-pay-again { margin-left: 8px; padding: 5px 12px; border: 0; border-radius: 999px; background: var(--yellow); color: #111; font: inherit; font-size: 12px; font-weight: 800; cursor: pointer; }
.rk-block { margin-top: 18px; border-top: 1px solid #202020; padding-top: 14px; }
.rk-block h3 { margin: 0 0 8px; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: #8f8f8f; }
.rk-itens { list-style: none; margin: 0; padding: 0; }
.rk-itens li { font-size: 13px; color: #d2d2d2; padding: 4px 0; border-bottom: 1px solid #1c1c1c; }
.rk-itens li:last-child { border-bottom: 0; }
.rk-itens b { color: #fff; float: right; }
.rk-block p { font-size: 13px; color: #d2d2d2; margin: 0; line-height: 1.6; }
.rk-eta { margin-top: 4px !important; font-size: 11px !important; color: #8f8f8f !important; }
.rk-src { margin: 16px 0 0; font-size: 11px; color: #7a7a7a; line-height: 1.5; }
.rastreio-help { margin: 24px 0 0; font-size: 13px; color: #9a9a9a; }
.rastreio-help a { color: var(--yellow); }

@media (width <= 560px) {
  .rk-form { flex-direction: column; align-items: stretch; }
  .rk-btn { width: 100%; }
  .rk-itens b { float: none; display: block; margin-top: 2px; }
}

/* ====================================================================
   Aviso de cookies / LGPD (barrinha dispensável, não trava o Pixel)
   ==================================================================== */
.klan-cookie {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1200;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: 10px 22px; padding: 12px clamp(14px, 4vw, 40px);
  background: rgba(9, 9, 9, .96); color: #e7e7e7;
  border-top: 2px solid var(--yellow);
  font-size: 12.5px; line-height: 1.5;
  box-shadow: 0 -8px 24px rgba(0, 0, 0, .35);
}
.klan-cookie p { margin: 0; max-width: 760px; }
.klan-cookie-act { display: flex; align-items: center; gap: 14px; }
.klan-cookie-link { color: #bdbdbd; text-decoration: underline; white-space: nowrap; }
.klan-cookie-link:hover { color: var(--yellow); }
.klan-cookie .klan-cookie-ok {
  padding: 8px 22px; font-size: 12px; letter-spacing: .04em;
}
@media (max-width: 560px) {
  .klan-cookie { justify-content: flex-start; gap: 8px 14px; }
  .klan-cookie-act { width: 100%; justify-content: space-between; }
}

/* ====================================================================
   SEO: só o 1º slide do hero é <h1>; os outros 3 viraram <h2>.
   Replica EXATAMENTE o cascade do .hero h1 do style.css:
     base  -> clamp(66px,8.6vw,138px)
     <=900 -> 16vw
     <=560 -> 17vw
   ==================================================================== */
.hero h2 {
  letter-spacing: -.06em;
  text-transform: uppercase;
  margin: 0;
  font-weight: 900;
  line-height: .76;
  font-size: clamp(66px, 8.6vw, 138px);
}
.hero h2 em { color: var(--yellow); font-style: normal; }
@media (width <= 900px) { .hero h2 { font-size: 16vw; } }
@media (width <= 560px) { .hero h2 { font-size: 17vw; } }

/* ====================================================================
   CORREÇÕES RESPONSIVAS — auditoria 2026-09-04
   Varredura automatizada de 320px a 2560px, retrato e paisagem, com os
   estados interativos abertos (menu, carrinho, guia de medidas, lightbox).
   NENHUMA mudança de design: cada regra abaixo só devolve o comportamento
   que o layout já pretendia ter onde ele quebrava.
   ==================================================================== */

/* (1) A BARRINHA DE COOKIES COBRIA OS BOTÕES DE COMPRA -----------------
   `.klan-cookie` é fixa no rodapé com z-index 1200. Medido no celular
   (360/390/414) e no tablet (768) ela cobria 100% de:
     - `.whatsapp-float`      (56x56 — o botão inteiro)
     - `.pdp-sticky`          (a barra fixa de compra da página de produto)
     - "IR PARA O CHECKOUT"   (dentro da gaveta do carrinho)
   Ou seja: no PRIMEIRO acesso, no celular, não dava para comprar.
   Correção em duas partes:
   a) a barrinha desce para z-index 150 — abaixo das camadas modais
      (`.size-guide-layer` = 160), então gaveta do carrinho e guia de
      medidas passam a aparecer POR CIMA dela;
   b) os elementos flutuantes sobem exatamente a altura da barrinha,
      publicada pelo JS em `--klan-cookie-h` (e zerada ao dispensar). */
:root { --klan-cookie-h: 0px; }
.klan-cookie { z-index: 150; }
.whatsapp-float { bottom: calc(22px + var(--klan-cookie-h, 0px)); }
.pdp-sticky { bottom: var(--klan-cookie-h, 0px); }
@media (width <= 560px) {
  .whatsapp-float { bottom: calc(12px + var(--klan-cookie-h, 0px)); }
}

/* (2) GAVETA DO CARRINHO: O BOTÃO DE CHECKOUT SAÍA DA TELA -------------
   `.selection-drawer` tem `height:100%`, mas a camada usa
   `place-items:center`, então o item NÃO é esticado e o `100%` acaba
   resolvendo pela própria altura do conteúdo. Com 4+ peças no carrinho a
   gaveta crescia para ~1122px e o "IR PARA O CHECKOUT" ficava em y≈965 —
   fora da tela em QUALQUER celular (testado em 640, 844 e 896 de altura),
   sem rolagem possível (a camada é `position:fixed`).
   `.cart-lines` já tinha `overflow-y:auto`, mas nunca encolhia porque
   faltava `min-height:0` (item de flex column não encolhe abaixo do
   conteúdo sem isso) e porque a gaveta não tinha teto de altura.
   Agora a gaveta é limitada à altura da janela (descontando o padding da
   camada: 20px no desktop, 8px no mobile) e a LISTA rola por dentro,
   mantendo cabeçalho e rodapé (frete + total + checkout) sempre visíveis. */
.cart-layer .cart-drawer {
  max-height: calc(100vh - 40px);
  max-height: calc(100dvh - 40px);
  min-height: 0;
}
.cart-drawer .cart-lines { min-height: 0; }
@media (width <= 560px) {
  .cart-layer .cart-drawer {
    max-height: calc(100vh - 16px);
    max-height: calc(100dvh - 16px);
  }
}
/* Tela muito baixa (celular deitado): nem cabeçalho + rodapé cabem, então
   a gaveta inteira passa a rolar em vez de só a lista. */
@media (height <= 560px) {
  .cart-layer .cart-drawer { overflow-y: auto; overscroll-behavior: contain; }
  /* a lista para de encolher: quem rola passa a ser a gaveta inteira,
     senao a lista virava uma faixa de 12px e o rodape saia da tela. */
  .cart-drawer .cart-lines { overflow-y: visible; flex: 0 0 auto; min-height: auto; }
}

/* (3) GUIA DE MEDIDAS INALCANÇÁVEL COM O CELULAR DEITADO ---------------
   `.size-guide-dialog` não tinha teto de altura nem rolagem. Em paisagem
   (740x360, 915x412) o painel media ~620-660px de altura numa janela de
   360-412px: as últimas linhas da tabela e o rodapé ficavam abaixo da
   dobra, sem rolagem (camada fixa). Mesmo remédio: teto pela janela +
   rolagem interna. `overscroll-behavior` evita arrastar a página atrás. */
.size-guide-layer { overflow-y: auto; }
.size-guide-layer .size-guide-dialog {
  max-height: calc(100vh - 40px);
  max-height: calc(100dvh - 40px);
  overflow-y: auto;
  overscroll-behavior: contain;
}
@media (width <= 560px) {
  .size-guide-layer .size-guide-dialog {
    max-height: calc(100vh - 16px);
    max-height: calc(100dvh - 16px);
  }
}

/* (4) LIGHTBOX CORTANDO A FOTO EM PAISAGEM -----------------------------
   O ajuste anterior trocou o `max-height:min(100%,…)` original da foto em
   retrato por `92vh`. Só que a foto vive dentro de `.lightbox-image-frame`,
   que já é menor que a janela (tem cabeçalho e legenda acima/abaixo). Com
   o celular deitado (740x360) 92vh = 331px e a imagem terminava em y=401
   numa janela de 360 — 41px cortados. Volta a medir pelo quadro, que é o
   que o layout original fazia. */
/* A raiz do corte: `.lightbox-image-frame` e um grid com `place-items:center`,
   entao a faixa da imagem se dimensionava pela ALTURA NATURAL da foto — e o
   `max-height:100%` da imagem passava a medir contra ela mesma (circular),
   resolvendo em 665px dentro de um quadro de 220px. Prendendo a faixa em
   `minmax(0,1fr)` ela passa a valer a altura real do quadro e o `100%` da
   imagem finalmente significa "o quadro". */
.lightbox-image-frame {
  grid-template-rows: minmax(0, 1fr);
  grid-template-columns: minmax(0, 1fr);
}
.lightbox-image-frame > img {
  justify-self: center; align-self: center;
  max-width: 100%; max-height: 100%;
}
.lightbox-image-frame.portrait > img { max-height: min(100%, 1920px); }

/* (5) ALVOS DE TOQUE PEQUENOS (WCAG 2.2 AA — 2.5.8, mínimo 24x24) ------
   Vários controles de texto/pontinhos ficavam com 3 a 19px de altura, o
   que no dedo vira erro de toque. A área clicável cresce por `::after`
   ABSOLUTO — nada muda de lugar na tela, o pixel continua igual. */
.klan-cookie-link, .cart-line-remove, .cart-keep,
.pdp-freight-help, .cart-ship-help { position: relative; }
.klan-cookie-link::after, .cart-line-remove::after, .cart-keep::after,
.pdp-freight-help::after, .cart-ship-help::after {
  content: ""; position: absolute; left: 0; right: 0;
  top: 50%; transform: translateY(-50%);
  height: 28px; min-height: 100%;
}
/* Pontinhos do hero: 6px de largura com passo de 10px — dá para crescer
   só na vertical, senão os alvos vizinhos se sobrepõem e o toque erra. */
.hero-dots button { position: relative; }
.hero-dots button::after {
  content: ""; position: absolute; left: -2px; right: -2px;
  top: 50%; transform: translateY(-50%); height: 30px;
}
/* Pontinhos do banner de depoimentos: 22px com passo de 30px — cabe 28px. */
.cbanner-dots button { position: relative; }
.cbanner-dots button::after {
  content: ""; position: absolute; left: 0; right: 0;
  top: 50%; transform: translateY(-50%); height: 28px;
}

/* (6) ALTURA DA JANELA NO CELULAR --------------------------------------
   `100vh` no celular conta a barra de endereço que some ao rolar, criando
   um pedaço de página vazio. `dvh` mede a janela real; o `vh` fica antes
   como reserva para navegador antigo. */
.blog-page, .checkout-page, .rastreio-page { min-height: 100dvh; }

/* ---------------------------------------------------------------------
   LIFE STYLE — foto limpa, sem desfoque          [ajuste de 2026-09-10]

   O efeito anterior tinha três camadas por quadro: a foto nítida embaixo,
   uma cópia desfocada por cima cobrindo tudo, e um retângulo que seguia o
   mouse revelando a parte nítida com zoom de 30% (efeito lupa).

   A pedido, o desfoque sai. Como a janela da lupa só fazia sentido contra
   um fundo borrado, ela sai junto: a fotografia passa a aparecer inteira e
   nítida. O clique continua abrindo a foto ampliada, e a legenda, o número
   e o "AMPLIAR ↗" continuam como estavam.

   Para desfazer, basta apagar deste comentário até o fim do arquivo.
   --------------------------------------------------------------------- */

/* 1. a cópia desfocada que cobria a foto some de vez */
.lifestyle-frame .ls-blur { display: none; }

/* 2. a foto nítida deixa de ser recortada pela janela e aparece inteira */
.lifestyle-frame .ls-focus {
  clip-path: none;
  transition: none;
}

/* 3. sem o zoom de 30% que a lupa aplicava ao passar o mouse */
.lifestyle-frame .ls-focus img,
.lifestyle-frame.is-revealing .ls-focus img {
  transform: none;
  transition: none;
}

/* 4. o retângulo branco da lupa some */
.lifestyle-frame .ls-window { display: none; }

/* 5. o cursor sinalizava "área de foco"; agora o quadro apenas abre a foto.
      O bloco "MOUSE REAL SEMPRE VISÍVEL" crava `crosshair !important` dentro
      de `@media (pointer: fine)`, então a correção precisa do mesmo peso e
      do mesmo media query para valer. */
.lifestyle-track .lifestyle-frame { cursor: pointer; }
@media (pointer: fine) {
  .lifestyle-track .lifestyle-frame { cursor: pointer !important; }
}

/* 6. no touch a janela passeava sozinha pra demonstrar o efeito —
      não há mais janela, então a animação para */
@media (hover: none) {
  .lifestyle-track .lifestyle-frame:not(.is-revealing) { animation: none; }
}

/* =====================================================================
   v8.5 — COMPRE JUNTO: alvo de toque de 44px no botão "ADICIONAR +"
   ---------------------------------------------------------------------
   O botão media ~122×32px, abaixo dos 44px recomendados para toque.
   Só a altura mínima sobe; texto, cor e largura continuam iguais.
   --------------------------------------------------------------------- */
.related-add { min-height: 44px; }

/* =====================================================================
   v8.7 — Identificação legal da loja (Decreto 7.962/2013)
   ---------------------------------------------------------------------
   Razão social, CNPJ e endereço no fim de todas as páginas internas
   (a home já traz isso no .footer-sign e no .footer-location).
   --------------------------------------------------------------------- */
.klan-legal {
  margin: 0;
  padding: 18px 24px 22px;
  background: #090909;
  color: #9a9285;
  font-size: 11px;
  line-height: 1.7;
  letter-spacing: .06em;
  text-align: center;
}
.klan-legal a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.klan-legal a:hover { color: var(--yellow); }
/* não deixar a barrinha de cookies nem a barra fixa de compra (celular)
   cobrirem a linha — mesmo recurso que o resto do site usa */
.klan-legal { padding-bottom: calc(22px + var(--klan-cookie-h, 0px)); }
@media (width <= 760px) {
  body.has-sticky-buy .klan-legal {
    padding-bottom: calc(22px + 72px + var(--klan-cookie-h, 0px) + env(safe-area-inset-bottom, 0px));
  }
}

/* --- página trocas-e-devolucoes.html (v8.8) ------------------------- */
.politica h2 { color: #fff; font-size: clamp(17px, 2.6vw, 21px); margin: 34px 0 12px; }
.politica ul { margin: 0; padding-left: 20px; }
.politica li, .politica > p { color: #c9c9c9; font-size: 14.5px; line-height: 1.65; }
.politica li { margin: 0 0 8px; }
.politica li b, .politica > p b { color: #fff; }
.politica a { color: var(--yellow); text-decoration: underline; text-underline-offset: 2px; }
.politica-tabela { overflow-x: auto; margin: 14px 0 18px; border: 1px solid #242424; border-radius: 12px; }
.politica-tabela table { width: 100%; border-collapse: collapse; font-size: 14px; min-width: 420px; }
.politica-tabela th, .politica-tabela td { padding: 11px 14px; text-align: left; border-bottom: 1px solid #1f1f1f; color: #d6d6d6; }
.politica-tabela th { color: #8f8f8f; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; background: #111; }
.politica-tabela tr:last-child td { border-bottom: 0; }

/* ---------------------------------------------------------------------
   TABELA DE MEDIDAS — nota de rodapé                 [v8.9, 2026-10-09]

   A tabela de colete masculino do fornecedor traz um aviso: os tamanhos
   acima de G3 existem, mas são feitos sob medida. Ele entra como nota
   abaixo da tabela, via `note` no SIZE_CHARTS.
   --------------------------------------------------------------------- */
.size-guide-note {
  margin: 12px 0 0;
  color: #9a9a9a;
  font-size: 12px;
  line-height: 1.5;
}

/* ---------------------------------------------------------------------
   PREÇO POR FAIXA DE TAMANHO — colete            [v8.9, 2026-10-09]

   O colete custa um valor até GG e outro de G1 a G3. O preço grande na
   tela mostra o menor e passa a mudar quando a pessoa escolhe o tamanho;
   esta nota deixa as duas faixas visíveis antes da escolha, para ninguém
   ser surpreendido no carrinho.
   --------------------------------------------------------------------- */
.price-size-note {
  margin: 6px 0 0;
  color: #9a9a9a;
  font-size: 12px;
  letter-spacing: .02em;
}
