/* =============================================================================
 | BIO — o "link na bio" da Publish (nosso Linktree).
 |
 | Arquivo próprio do módulo (não encosta no jarvis.css). É usado em DOIS lugares:
 | na página pública (/bio/{slug}) e no preview de celular dentro do editor.
 | Por isso tudo é escopado em .bio-page e as cores saem de variáveis (--bio-*),
 | escritas inline pelo Blade a partir do tema — trocar o tema só troca variável.
 |
 | Mobile-first: nasce no tamanho do celular e só centraliza no computador.
 ============================================================================ */

.bio-page{
  --bio-fundo:#43E660; --bio-fundo2:#43E660;
  --bio-botao:#FFFFFF; --bio-botao-texto:#0F1B12; --bio-texto:#0F1B12;
  --bio-raio:999px;                 /* formato do botão: pill | round | square */
  min-height:100%;
  background:linear-gradient(165deg,var(--bio-fundo) 0%,var(--bio-fundo2) 100%);
  color:var(--bio-texto);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  -webkit-font-smoothing:antialiased;
}
.bio-page *{box-sizing:border-box}

/* Capa opcional atrás do topo.
 |
 | A foto some por MÁSCARA, não com um véu colorido por cima. Faz diferença: o véu precisava
 | terminar numa cor (a 1ª do fundo), enquanto o fundo da página é um degradê DIAGONAL entre as
 | duas cores — então, sempre que as cores eram diferentes (todo tema personalizado com degradê),
 | a base do véu não batia com a cor da página ali e a emenda aparecia como um corte reto: a foto
 | voltava a parecer quadrada. Com a máscara, a foto vai ficando transparente e quem aparece por
 | baixo é o próprio fundo da página — funciona com QUALQUER cor e com degradê de duas cores. */
.bio-capa{
  height:132px;background-size:cover;background-position:center;position:relative;
  -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 34%,rgba(0,0,0,.45) 74%,transparent 100%);
          mask-image:linear-gradient(to bottom,#000 0%,#000 34%,rgba(0,0,0,.45) 74%,transparent 100%);
}
/* Navegador antigo, sem máscara: cai no véu de antes — some o encaixe perfeito, mas a foto nunca
   fica com o corte seco. */
@supports not ((-webkit-mask-image:linear-gradient(#000,transparent)) or (mask-image:linear-gradient(#000,transparent))){
  .bio-capa::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent,var(--bio-fundo))}
}

.bio-wrap{max-width:580px;margin:0 auto;padding:34px 20px 40px;position:relative;z-index:1}
.bio-capa + .bio-wrap{padding-top:0;margin-top:-56px}

/* ---------- Topo: foto, nome, @ e descrição ---------- */
.bio-topo{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.bio-avatar{width:98px;height:98px;border-radius:50%;object-fit:cover;background:var(--bio-botao);
  border:3px solid var(--bio-texto);box-shadow:0 6px 0 rgba(0,0,0,.14)}
.bio-avatar-vazio{width:98px;height:98px;border-radius:50%;display:grid;place-items:center;
  background:var(--bio-botao);color:var(--bio-botao-texto);border:3px solid var(--bio-texto);
  font-size:34px;font-weight:800;letter-spacing:-1px;box-shadow:0 6px 0 rgba(0,0,0,.14)}
/* Nome e @ podem ter cor própria (--bio-titulo / --bio-arroba), independente do tema. Sem escolha,
   o fallback herda a cor do texto da página — é como a bio sempre foi.
   A opacidade do @ é variável: .72 quando ele herda (fica discreto, como antes) e 1 quando ganha
   cor escolhida, senão a cor selecionada sairia desbotada. */
.bio-nome{font-size:22px;font-weight:800;letter-spacing:-.4px;margin:14px 0 0;line-height:1.2;
  color:var(--bio-titulo,var(--bio-texto))}
.bio-arroba{font-size:14px;font-weight:600;margin:0;
  color:var(--bio-arroba,var(--bio-texto));opacity:var(--bio-arroba-op,.72)}
.bio-desc{font-size:14.5px;line-height:1.5;opacity:.86;margin:8px 0 0;max-width:400px}

/* ---------- Botões ---------- */
.bio-links{display:flex;flex-direction:column;gap:14px;margin-top:26px}
.bio-btn{
  display:flex;align-items:center;gap:12px;width:100%;min-height:60px;
  padding:14px 18px;border-radius:var(--bio-raio);text-decoration:none;
  background:var(--bio-botao);color:var(--bio-botao-texto);
  font-size:15.5px;font-weight:700;line-height:1.3;
  transition:transform .12s ease,box-shadow .12s ease,background .12s ease,color .12s ease;
}
.bio-btn .t{flex:1;min-width:0;word-break:break-word;text-align:center}
.bio-btn .emo{font-size:20px;line-height:1;flex:none}
.bio-btn .thumb{width:44px;height:44px;border-radius:12px;object-fit:cover;flex:none;
  margin:-4px 0 -4px -6px;background:rgba(0,0,0,.06)}
.bio-btn .seta{width:16px;height:16px;flex:none;opacity:.4;stroke:currentColor;fill:none;stroke-width:2.4}

/* Estilo "sombra": a cara do kit — borda marcada e sombra sólida deslocada. */
.bio-page[data-estilo="sombra"] .bio-btn{border:2px solid var(--bio-texto);box-shadow:4px 4px 0 var(--bio-texto)}
.bio-page[data-estilo="sombra"] .bio-btn:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--bio-texto)}
.bio-page[data-estilo="sombra"] .bio-btn:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--bio-texto)}

/* Estilo "sólido": sem borda, sombra suave difusa. */
.bio-page[data-estilo="solido"] .bio-btn{border:2px solid transparent;box-shadow:0 6px 20px rgba(0,0,0,.16)}
.bio-page[data-estilo="solido"] .bio-btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.22)}

/* Estilo "contorno": só a linha, fundo vazado. */
.bio-page[data-estilo="contorno"] .bio-btn{background:transparent;color:var(--bio-texto);
  border:2px solid var(--bio-texto);box-shadow:none}
.bio-page[data-estilo="contorno"] .bio-btn:hover{background:var(--bio-botao);color:var(--bio-botao-texto)}
.bio-page[data-estilo="contorno"] .bio-btn .thumb{background:rgba(255,255,255,.2)}

/* Botão em destaque: pulso discreto para puxar o olho (ex.: promoção do mês). */
.bio-btn.destaque{animation:bio-pulso 2.2s ease-in-out infinite}
@keyframes bio-pulso{0%,100%{transform:scale(1)}50%{transform:scale(1.028)}}
@media (prefers-reduced-motion:reduce){.bio-btn.destaque{animation:none}}

/* Título de seção entre os botões */
.bio-sec{margin:22px 0 -2px;text-align:center;font-size:13px;font-weight:800;letter-spacing:1.4px;
  text-transform:uppercase;opacity:.7}
.bio-links > .bio-sec:first-child{margin-top:0}

/* ---------- Redes sociais ---------- */
.bio-redes{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:28px}
.bio-rede{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  color:var(--bio-texto);text-decoration:none;transition:transform .12s,background .12s}
.bio-rede svg{width:23px;height:23px;fill:currentColor}
.bio-rede:hover{transform:translateY(-2px);background:rgba(0,0,0,.08)}

/* ---------- Compartilhar + rodapé ---------- */
.bio-share{position:absolute;top:14px;right:16px;width:40px;height:40px;border-radius:50%;
  border:2px solid var(--bio-texto);background:var(--bio-botao);color:var(--bio-botao-texto);
  display:grid;place-items:center;cursor:pointer;z-index:3}
.bio-share svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.bio-share:hover{transform:translateY(-1px)}
.bio-copiado{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:#111;color:#fff;
  font-size:13px;font-weight:600;padding:10px 16px;border-radius:999px;opacity:0;pointer-events:none;
  transition:opacity .2s;z-index:9}
.bio-copiado.on{opacity:1}

/* ---------- Onde estamos (mapa) ----------
 | Fecha a página, logo acima da assinatura. O mapa vem do Google dentro de um iframe, então a
 | moldura é nossa: cantos arredondados, mesma borda/sombra dos botões e altura por proporção
 | (nada de altura fixa que achata no celular e sobra no computador). */
.bio-mapa{margin-top:30px}
.bio-mapa-topo{text-align:center;margin-bottom:12px}
.bio-mapa-topo h2{font-size:15px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;margin:0;opacity:.8}
.bio-mapa-topo p{margin:5px 0 0;font-size:13px;line-height:1.4;opacity:.72}

.bio-mapa-frame{position:relative;width:100%;aspect-ratio:4/3;border-radius:16px;overflow:hidden;
  background:rgba(0,0,0,.08)}
.bio-mapa-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
/* O que ocupa o lugar do mapa até ele nascer (ver o script em publico.blade.php). Mostra o
   endereço — que é o dado que a pessoa procura ali — em vez de um "carregando" vazio. */
.bio-mapa-carta{
  position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:8px;padding:18px;text-align:center;
  background:rgba(128,128,128,.14);
}
.bio-mapa-carta .pin{font-size:26px;line-height:1}
.bio-mapa-carta .txt{font-size:12.5px;line-height:1.4;font-weight:600;opacity:.75;max-width:280px}
.bio-mapa-frame.carregado .bio-mapa-carta{display:none}
.bio-page[data-estilo="sombra"] .bio-mapa-frame{border:2px solid var(--bio-texto);box-shadow:4px 4px 0 var(--bio-texto)}
.bio-page[data-estilo="solido"] .bio-mapa-frame{box-shadow:0 6px 20px rgba(0,0,0,.16)}
.bio-page[data-estilo="contorno"] .bio-mapa-frame{border:2px solid var(--bio-texto)}
.bio-mapa-frame .bio-mapa-tap{position:absolute;inset:0;z-index:2;display:block;
  -webkit-tap-highlight-color:transparent}
.bio-mapa-btn{margin-top:14px}

/* Atalhos por app: pílulas discretas embaixo do "Como chegar". */
.bio-mapa-apps{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin-top:10px}
.bio-mapa-apps span{font-size:12px;opacity:.55}
.bio-mapa-apps a{font-size:12px;font-weight:700;padding:7px 13px;border-radius:999px;text-decoration:none;
  color:var(--bio-texto);border:1.5px solid currentColor;opacity:.62}
.bio-mapa-apps a:hover{opacity:1}
.bio-mapa-apps a[hidden]{display:none}

@media (min-width:560px){ .bio-mapa-frame{aspect-ratio:16/10} }

/* ---------- Assinatura do rodapé — a chamada da Publish ----------
 | Era uma letrinha a 62% de opacidade: ninguém via. Virou o MESMO botão que a Publish já usa nas
 | páginas do Canva (referência: rodapé de link.publishdigital.com.br/gugasushi) — repetir a mesma
 | peça em todo lugar é o que faz a marca ser reconhecida.
 |
 | Azul #3C89E2: é o azul da marca, tirado do próprio arquivo da página de referência (o #3557E0
 | que estava aqui antes é o azul do painel do Jarvis, mais roxo — outra coisa).
 | Cor sólida e texto branco de propósito: o fundo da bio muda de cliente para cliente, e o botão
 | precisa funcionar em qualquer tema. */
/* Tamanho: metade do que era (decisão do CEO, 06/08/2026). A assinatura precisa ser vista, não
   disputar a atenção com o conteúdo do cliente — quem manda na página é o negócio dele. */
.bio-pe{margin-top:32px;text-align:center}
.bio-pe .bio-selo{
  --selo-a:#4A93E6; --selo-b:#2A76D0; --selo-luz:60,137,226; --selo-apoio:#06203A;
  position:relative; isolation:isolate; overflow:hidden;
  display:inline-flex; flex-direction:column; align-items:center; gap:3px;
  max-width:min(100%,230px); padding:8px 16px 9px;
  border-radius:13px; border:0;
  background:linear-gradient(135deg,var(--selo-a),var(--selo-b));
  color:#fff; text-decoration:none; line-height:1.1;
  /* a sombra dura deslocada é o que dá o volume do botão da referência; a difusa azul é o brilho */
  box-shadow:3px 3px 0 rgba(6,26,48,.26), 0 10px 20px -12px rgba(var(--selo-luz),.9),
             inset 0 1px 0 rgba(255,255,255,.28);
  transition:transform .22s ease, box-shadow .22s ease;
}
.bio-pe .bio-selo.is-linkaco{--selo-a:#1B9B42; --selo-b:#0B6E2C; --selo-luz:27,155,66; --selo-apoio:#04240F}

/* o brilho que atravessa o botão de tempos em tempos — é o que faz o olho voltar nele */
.bio-pe .bio-selo::after{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.42) 50%,transparent 65%);
  transform:translateX(-120%);
  animation:bio-selo-brilho 5.5s cubic-bezier(.4,0,.2,1) 1.5s infinite;
}
@keyframes bio-selo-brilho{ 0%{transform:translateX(-120%)} 26%,100%{transform:translateX(120%)} }

/* linha de apoio: escura, miúda, muito espaçada — igual à da referência */
.bio-pe .bio-selo-apoio{
  display:flex; align-items:center; justify-content:center; gap:5px;
  font-size:7.5px; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
  color:var(--selo-apoio); white-space:nowrap;
}
.bio-pe .bio-selo-apoio b{font-weight:800;letter-spacing:.16em}

/* a chamada: branca, pesada e inclinada. O skew substitui o itálico — a Inter da página não
   carrega variante itálica, e puxar mais uma fonte por causa de um botão não se paga. */
.bio-pe .bio-selo-chamada{
  position:relative; display:block; padding-bottom:5px;
  font-size:clamp(11px,2.9vw,13px); font-weight:800; letter-spacing:-.01em;
  transform:skewX(-8deg); text-shadow:0 1px 4px rgba(6,26,48,.22); white-space:nowrap;
}
.bio-pe .bio-selo-chamada::after{
  content:""; position:absolute; left:50%; bottom:0; width:46%; height:1.5px;
  transform:translateX(-50%) skewX(8deg); border-radius:2px; background:#fff; opacity:.95;
}

@media (hover:hover){
  .bio-pe .bio-selo:hover{
    transform:translate(-1px,-2px);
    box-shadow:4px 5px 0 rgba(6,26,48,.30), 0 14px 24px -14px rgba(var(--selo-luz),1),
               inset 0 1px 0 rgba(255,255,255,.34);
  }
}
.bio-pe .bio-selo:active{transform:translate(1px,1px);box-shadow:1px 1px 0 rgba(6,26,48,.28),inset 0 1px 0 rgba(255,255,255,.3)}
.bio-pe .bio-selo:focus-visible{outline:2px solid #fff;outline-offset:3px}

/* celular estreito: encolhe mais um pouco para nunca estourar a largura */
@media (max-width:380px){
  .bio-pe .bio-selo{padding:7px 13px 8px;border-radius:11px}
  .bio-pe .bio-selo-apoio{letter-spacing:.12em;font-size:7px}
}

@media (prefers-reduced-motion:reduce){
  .bio-pe .bio-selo::after{animation:none}
  .bio-pe .bio-selo{transition:none}
}
.bio-vazio{margin-top:26px;text-align:center;font-size:14px;opacity:.6}

/* ---------- Vitrine do Vendaço dentro da bio ----------
 | Mesma linguagem dos cards da loja (foto quadrada em cima, nome/preço embaixo, selo de promoção),
 | só que sobre o fundo colorido da bio. Tocar no produto leva para a página dele NA LOJA — quem
 | vende continua sendo o Vendaço; a bio é a vitrine.
 | 2 colunas no celular, 3 no computador. */
.bio-vitrine{margin-top:30px}
.bio-vitrine-topo{margin-bottom:12px;text-align:center}
.bio-vitrine-topo h2{font-size:15px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;margin:0;opacity:.8}

.bio-prods{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
/* vitrine curta (quem não tem loja): 2 por linha em qualquer tela, para os 4 produtos fecharem
   duas linhas iguais em vez de sobrar um card solto na terceira coluna do computador */
.bio-prods.duo{max-width:420px;margin-inline:auto}
.bio-prod{display:flex;flex-direction:column;background:var(--bio-botao);color:var(--bio-botao-texto);
  border-radius:16px;overflow:hidden;text-decoration:none;min-width:0;
  transition:transform .12s ease,box-shadow .12s ease}
.bio-page[data-estilo="sombra"] .bio-prod{border:2px solid var(--bio-texto);box-shadow:4px 4px 0 var(--bio-texto)}
.bio-page[data-estilo="sombra"] .bio-prod:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--bio-texto)}
.bio-page[data-estilo="solido"] .bio-prod{box-shadow:0 6px 20px rgba(0,0,0,.16)}
.bio-page[data-estilo="solido"] .bio-prod:hover{transform:translateY(-2px)}
.bio-page[data-estilo="contorno"] .bio-prod{background:transparent;color:var(--bio-texto);border:2px solid var(--bio-texto)}

.bio-prod-img{position:relative;width:100%;aspect-ratio:1/1;background:rgba(0,0,0,.06)}
.bio-prod-img img{width:100%;height:100%;object-fit:cover;display:block}
.bio-prod-vazio{width:100%;height:100%;display:grid;place-items:center;font-size:30px;opacity:.35}
.bio-prod-tag{position:absolute;top:8px;left:8px;font-size:10px;font-weight:800;letter-spacing:.6px;
  padding:4px 8px;border-radius:999px;background:#E53935;color:#fff}
.bio-prod-tag.destaque{left:auto;right:8px;background:#FFC107;color:#3A2A00}
.bio-prod-body{padding:10px 12px 13px;display:flex;flex-direction:column;gap:3px;flex:1}
.bio-prod-nome{font-size:13.5px;font-weight:700;line-height:1.3;margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bio-prod-desc{font-size:11.5px;line-height:1.35;opacity:.65;margin:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bio-prod-preco{margin-top:auto;padding-top:7px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
/* "Comprar agora" dentro do card. Contorno em currentColor de propósito: o card muda de cor com o
   tema da bio, e a cor do texto dele é a única que se sabe legível ali em qualquer paleta. */
.bio-prod-cta{
  margin-top:9px;display:flex;align-items:center;justify-content:center;gap:5px;
  padding:7px 10px;border-radius:999px;border:1.5px solid currentColor;
  font-size:11.5px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;opacity:.9;
  transition:opacity .12s ease,background-color .12s ease;
}
.bio-prod-cta::after{content:"›";font-size:14px;line-height:1;font-weight:700}
@media (hover:hover){ .bio-prod:hover .bio-prod-cta{opacity:1;background:rgba(128,128,128,.14)} }
.bio-prod-preco .agora{font-size:15px;font-weight:800;letter-spacing:-.3px}
.bio-prod-preco .antes{font-size:11.5px;opacity:.55;text-decoration:line-through}
.bio-prod-preco .de{font-size:10.5px;opacity:.6;font-weight:600}

.bio-loja-btn{margin-top:14px}
.bio-catalogo-off{margin-top:14px;text-align:center;font-size:12.5px;opacity:.6}

@media (min-width:560px){
  .bio-prods{grid-template-columns:repeat(3,1fr)}
  .bio-prods.duo{grid-template-columns:repeat(2,1fr)}
}

/* ---------- Preview dentro do editor ---------- */
/* O MESMO HTML dentro de um "celular": só encolhe as medidas. */
.bio-preview .bio-wrap{padding:26px 16px 30px}
.bio-preview .bio-avatar,.bio-preview .bio-avatar-vazio{width:78px;height:78px;font-size:27px}
.bio-preview .bio-nome{font-size:18px;margin-top:11px}
.bio-preview .bio-arroba{font-size:12.5px}
.bio-preview .bio-desc{font-size:12.5px}
.bio-preview .bio-btn{min-height:50px;padding:11px 14px;font-size:13.5px}
.bio-preview .bio-btn .thumb{width:36px;height:36px}
.bio-preview .bio-links{gap:11px;margin-top:20px}
.bio-preview .bio-rede{width:38px;height:38px}
.bio-preview .bio-rede svg{width:20px;height:20px}
.bio-preview .bio-share{display:none}
.bio-preview .bio-capa{height:96px}
.bio-preview .bio-prods{grid-template-columns:repeat(2,1fr);gap:9px}
.bio-preview .bio-prod-body{padding:8px 9px 10px}
.bio-preview .bio-prod-nome{font-size:11.5px}
.bio-preview .bio-prod-desc{display:none}
.bio-preview .bio-prod-preco .agora{font-size:12.5px}
.bio-preview .bio-prod-cta{font-size:9px;padding:5px 7px;margin-top:7px;border-width:1px}
.bio-preview .bio-vitrine-topo h2{font-size:12.5px}
.bio-preview .bio-vitrine-topo a{font-size:11px}
.bio-preview .bio-mapa-topo h2{font-size:12.5px}
.bio-preview .bio-mapa-topo p{font-size:11.5px}
.bio-preview .bio-mapa-frame{aspect-ratio:4/3}
.bio-preview .bio-mapa-apps a{font-size:11px;padding:5px 10px}
/* No preview o mapa é retrato, não brinquedo: arrastar dentro dele roubaria a rolagem do celular. */
.bio-preview .bio-mapa-frame iframe{pointer-events:none}

@media (min-width:640px){
  .bio-wrap{padding-top:46px}
  .bio-nome{font-size:25px}
}
