/* =========================================================
   TELATIN JOIAS — folha de estilo
   Paleta: ouro e caramelo sobre cacau e neutros quentes
   ========================================================= */

/* O ouro não foi escolhido no chute: #ae8438 é a cor exata das capas dos
   destaques do Instagram @telatin.joias, tirada pixel a pixel. Todo o resto
   — cacau, caramelo, areia, creme — foi construído em volta dele. */
:root{
  --cacau:#2b1b10;     /* cacau profundo — fundo escuro principal */
  --cacau2:#4a2f18;    /* caramelo escuro — variação para gradientes */
  --cacau3:#1a0f07;    /* fundo mais fechado */
  --paper:#f2e9db;     /* areia quente */
  --bone:#fbf6ee;      /* creme — superfícies: cards, formulários */
  --gold:#ae8438;      /* ouro exato da Telatin Joias */
  --gold2:#f0d9a8;     /* ouro claro, para texto sobre fundo escuro */
  --gold3:#7d5c22;     /* ouro fechado, para texto pequeno sobre fundo claro */
  --caramelo:#c98f42;  /* caramelo — realces e brilhos */
  --ink:#2b1b10;       /* texto principal */
  --muted:#6b5744;     /* texto secundário — SÓ sobre fundo claro */
  --line:#ddcdb4;      /* bordas */
  --line2:#4a3218;     /* bordas sobre fundo escuro */
  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --sans:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --resp:112px;        /* respiro vertical entre seções */
  --raio:2px;
  --sombra:0 24px 60px rgba(43,27,16,.13);
  --sombra-forte:0 30px 80px rgba(43,27,16,.28);
}

/* Sem esta regra, qualquer `display` no CSS anula o atributo hidden */
[hidden]{display:none !important;}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16.5px;
  line-height:1.72;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

/* A Cormorant Garamond vem com numerais de estilo antigo: o 0 fica do tamanho
   de um "o", o 1 vira "I" e o 8 desce abaixo da linha. Em preço e em número de
   capítulo isso lê errado. Aplicamos os numerais altos SÓ onde há número —
   ligar a feature no body inteiro mexia no encaixe dos acentos das palavras. */
.stat b,.preco,.cap-num,.page-num,.marca-dagua,.card-colecao .num,.step .num,
.seal b,.badge-anos b,.cc-valor b,.cc-p,.consorcio-lista b,.fer-saida .grande,
.fer-saida .linha b,.chat-peca small,.gp-peca small,.ferramenta label b,
.cmp-tabela td,.modal-box .preco,.contato-item b,.contato-item a{
  font-variant-numeric:lining-nums;
}

/* trilha do controle deslizante: sem isso o Chrome pinta a metade vazia
   de azul, a única cor fria que sobrava no site */
/* Cada pseudo-elemento de fabricante precisa da SUA regra: se o -webkit e o
   -moz forem para a mesma lista, o navegador que não conhece um deles descarta
   a regra inteira. E o seletor sem pseudo não pode dividir lista com um que
   tem — foi assim que a trilha acabou pintando o controle todo de ouro. */
.ferramenta input[type=range],
.fer-tela input[type=range]{
  -webkit-appearance:none;appearance:none;background:transparent;
}
.ferramenta input[type=range]::-webkit-slider-runnable-track,
.fer-tela input[type=range]::-webkit-slider-runnable-track{
  height:4px;border-radius:4px;
  background:linear-gradient(90deg,var(--gold) 0%,var(--gold) var(--preenchido,55%),rgba(240,217,168,.18) var(--preenchido,55%),rgba(240,217,168,.18) 100%);
}
.ferramenta input[type=range]::-moz-range-track,
.fer-tela input[type=range]::-moz-range-track{height:4px;border-radius:4px;background:rgba(240,217,168,.18);}
.ferramenta input[type=range]::-moz-range-progress,
.fer-tela input[type=range]::-moz-range-progress{height:4px;border-radius:4px;background:var(--gold);}
.ferramenta input[type=range]::-webkit-slider-thumb,
.fer-tela input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;
  background:var(--gold2);border:2px solid var(--gold);margin-top:-8px;
  box-shadow:0 3px 10px rgba(26,15,7,.5);cursor:pointer;
}
.ferramenta input[type=range]::-moz-range-thumb,
.fer-tela input[type=range]::-moz-range-thumb{
  width:18px;height:18px;border-radius:50%;background:var(--gold2);
  border:2px solid var(--gold);box-shadow:0 3px 10px rgba(26,15,7,.5);cursor:pointer;
}
/* Quem rola a página é o <html>, não o <body> — travar só o body não
   segurava nada. Vale para o menu-gaveta e também para os modais, que
   usam a mesma classe. */
body.travado{overflow:hidden;}
html:has(body.travado){overflow:hidden;}
img{max-width:100%;display:block;}
a{color:inherit;}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;}
button{cursor:pointer;}
::selection{background:var(--gold);color:#fff;}

h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.08;margin:0;letter-spacing:-.005em;}
h1{font-size:clamp(2.9rem,6.6vw,5.2rem);}
h2{font-size:clamp(2.2rem,4.6vw,3.7rem);}
h3{font-size:clamp(1.5rem,2.6vw,2.2rem);}
h4{font-size:clamp(1.25rem,2vw,1.6rem);}
h1 em,h2 em,h3 em,h4 em{font-style:italic;color:var(--gold);font-weight:600;}
p{margin:0 0 1.05em;}

/* ---------- utilidades ---------- */
.center{max-width:1280px;margin:0 auto;padding:0 40px;}
.pular-para{
  position:absolute;left:-999px;top:0;z-index:9999;
  background:var(--cacau);color:var(--gold2);padding:14px 22px;border-radius:var(--raio);
}
.pular-para:focus{left:12px;top:12px;}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;}

.kicker{
  display:block;font-family:var(--sans);font-size:.66rem;font-weight:600;
  letter-spacing:.24em;text-transform:uppercase;color:var(--gold3);margin-bottom:14px;
}
.chapter-num{
  display:block;font-family:var(--sans);font-size:.6rem;font-weight:600;
  letter-spacing:.3em;text-transform:uppercase;color:var(--muted);margin-bottom:18px;
}
.chapter-num.claro{color:rgba(232,211,166,.72);}
.rule{
  position:relative;width:74px;height:1px;background:var(--gold);margin:26px 0 24px;
}
.rule::before{
  content:'✦';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  background:var(--paper);padding:0 9px;color:var(--gold);font-size:.72rem;line-height:1;
}
.rule-c{margin-left:auto;margin-right:auto;}
.section-title{max-width:760px;}
.section-title p{color:var(--muted);font-size:1.03rem;max-width:60ch;}
.center > .section-title,.manifesto-inner .section-title,.processo-inner .section-title,
.atelie-inner .section-title,.curadoria-inner .section-title{margin-left:auto;margin-right:auto;text-align:center;}
.center > .section-title .rule,.manifesto-inner .section-title .rule,
.processo-inner .section-title .rule,.atelie-inner .section-title .rule,
.curadoria-inner .section-title .rule{margin-left:auto;margin-right:auto;}

section{position:relative;padding:var(--resp) 0;}
section > .page-num,.page-num{
  position:absolute;top:6%;right:5%;font-family:var(--serif);
  font-size:clamp(9rem,22vw,20rem);line-height:.8;color:rgba(43,27,16,.045);
  pointer-events:none;user-select:none;z-index:0;
}
.marca-dagua{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-family:var(--serif);font-size:clamp(12rem,30vw,26rem);line-height:.78;
  color:rgba(43,27,16,.035);pointer-events:none;user-select:none;z-index:0;
}
section.escuro .marca-dagua{color:rgba(232,211,166,.035);}

/* ---------- botões ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:50px;padding:15px 30px;border-radius:var(--raio);
  font-size:.76rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  text-decoration:none;border:1px solid transparent;background:none;
  transition:transform .3s cubic-bezier(.2,.7,.3,1),background .3s,color .3s,border-color .3s,box-shadow .3s;
  position:relative;overflow:hidden;
}
.btn:hover{transform:translateY(-2px);}
.btn-sm{min-height:42px;padding:11px 20px;font-size:.68rem;}
.btn-gold{
  background:linear-gradient(135deg,var(--gold) 0%,#c9a96a 52%,var(--gold) 100%);
  color:#2b1b10;box-shadow:0 12px 30px rgba(174,132,56,.3);
}
.btn-gold:hover{box-shadow:0 18px 42px rgba(174,132,56,.44);}
.btn-outline{border-color:rgba(232,211,166,.5);color:var(--gold2);}
.btn-outline:hover{background:rgba(232,211,166,.1);border-color:var(--gold2);}
.btn-ghost{border-color:var(--line);color:var(--ink);background:rgba(255,255,255,.4);}
.btn-ghost:hover{border-color:var(--gold);color:var(--gold3);background:#fff;}
.btn-cacau{background:var(--cacau);color:var(--gold2);}
.btn-cacau:hover{background:var(--cacau2);}

/* ---------- grão e barra de progresso ---------- */
.grain{
  position:fixed;inset:0;z-index:9998;pointer-events:none;opacity:.5;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");
}
#progress{
  position:fixed;top:0;left:0;height:2px;width:0;z-index:9997;
  background:linear-gradient(90deg,var(--gold3),var(--gold),var(--gold2));
}

/* ---------- preloader ---------- */
.preloader{
  position:fixed;inset:0;z-index:9996;background:var(--cacau);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px;
  transition:opacity .7s ease,visibility .7s;
}
.preloader.done{opacity:0;visibility:hidden;}
.pre-mono{
  font-family:var(--serif);font-size:3.6rem;color:var(--gold2);letter-spacing:.14em;
  animation:pulsa 2s ease-in-out infinite;
}
.pre-bar{width:150px;height:1px;background:rgba(232,211,166,.2);overflow:hidden;}
.pre-bar i{display:block;height:100%;width:40%;background:var(--gold);animation:corre 1.3s ease-in-out infinite;}
@keyframes pulsa{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes corre{0%{transform:translateX(-110%)}100%{transform:translateX(310%)}}

/* ---------- tela de boas-vindas ---------- */
.portao{
  position:fixed;inset:0;z-index:9990;background:var(--cacau3);
  display:none;align-items:center;justify-content:center;text-align:center;padding:40px;
  overflow:hidden;
}
.portao.aberto{display:flex;animation:fadeIn .6s ease both;}
.portao.saindo{animation:fadeOut .7s ease both;}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0;visibility:hidden}}
.portao-inner{position:relative;z-index:3;max-width:640px;}
.portao-mono{
  font-family:var(--serif);font-size:4.4rem;color:var(--gold2);letter-spacing:.14em;
  margin-bottom:26px;text-shadow:0 0 44px rgba(174,132,56,.4);
}
/* a tela de boas-vindas usa <p>, não <h1>: o único <h1> da página é o da capa.
   Dois <h1> confundem o Google e o leitor de tela sobre qual é o título real. */
.portao .portao-titulo{
  color:var(--bone);font-size:clamp(2.6rem,7vw,4.4rem);
  font-family:var(--serif);font-weight:400;line-height:1.05;margin:0;
}
.portao .portao-titulo em{color:var(--gold2);}
.portao p{color:rgba(250,245,236,.74);max-width:46ch;margin:0 auto 34px;}
.portao .kicker{color:var(--gold2);}
.portao .rule{background:rgba(232,211,166,.6);}
.portao .rule::before{background:var(--cacau3);color:var(--gold2);}
.portao-nota{display:block;margin-top:26px;font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;color:rgba(250,245,236,.42);}
.brilhos{position:absolute;inset:0;z-index:1;opacity:.5;}
.brilhos svg{width:100%;height:100%;}
.brilhos .faisca path{animation:cintila 4.4s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
.brilhos .faisca path:nth-child(2n){animation-delay:1.1s}
.brilhos .faisca path:nth-child(3n){animation-delay:2.3s}
.brilhos .faisca path:nth-child(5n){animation-delay:3.1s}
@keyframes cintila{0%,100%{opacity:.15;transform:scale(.7)}50%{opacity:1;transform:scale(1.15)}}

.aurora{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;}
.aurora i{
  position:absolute;border-radius:50%;filter:blur(90px);opacity:.4;
}
.aurora i:nth-child(1){width:52vw;height:52vw;left:-14vw;top:-16vw;background:radial-gradient(circle,rgba(174,132,56,.55),transparent 65%);animation:flutua 20s ease-in-out infinite;}
.aurora i:nth-child(2){width:44vw;height:44vw;right:-12vw;bottom:-18vw;background:radial-gradient(circle,rgba(201,143,66,.42),transparent 68%);animation:flutua 26s ease-in-out infinite reverse;}
@keyframes flutua{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(5%,7%) scale(1.14)}}

/* ---------- cursor ---------- */
.cursor-dot,.cursor-ring{position:fixed;z-index:9995;pointer-events:none;border-radius:50%;top:0;left:0;}
.cursor-dot{width:6px;height:6px;background:var(--gold);margin:-3px 0 0 -3px;}
.cursor-ring{width:34px;height:34px;border:1px solid rgba(174,132,56,.55);margin:-17px 0 0 -17px;transition:width .25s,height .25s,margin .25s,border-color .25s;}
.cursor-ring.grande{width:58px;height:58px;margin:-29px 0 0 -29px;border-color:var(--gold);}
body.sem-cursor,body.sem-cursor *{cursor:none;}
.trail{position:fixed;width:5px;height:5px;border-radius:50%;background:rgba(174,132,56,.5);pointer-events:none;z-index:9994;animation:sumir .7s ease-out forwards;}
@keyframes sumir{to{opacity:0;transform:scale(.2)}}

/* ---------- cortina ---------- */
.wipe{
  position:fixed;inset:0;z-index:9989;pointer-events:none;
  background:linear-gradient(180deg,var(--cacau),var(--cacau2));
  transform:scaleY(0);transform-origin:bottom;
}
.wipe.entra{animation:wipeIn .42s cubic-bezier(.7,0,.3,1) forwards;}
.wipe.sai{animation:wipeOut .42s cubic-bezier(.7,0,.3,1) forwards;}
@keyframes wipeIn{from{transform:scaleY(0);transform-origin:bottom}to{transform:scaleY(1);transform-origin:bottom}}
@keyframes wipeOut{from{transform:scaleY(1);transform-origin:top}to{transform:scaleY(0);transform-origin:top}}

/* ---------- navbar ---------- */
#navbar{
  position:fixed;top:0;left:0;right:0;z-index:900;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:20px 40px;transition:padding .35s,background .35s,box-shadow .35s,border-color .35s;
  border-bottom:1px solid transparent;
}
/* ATENÇÃO AO MEXER AQUI:
   o desfoque (backdrop-filter) NÃO pode ficar no #navbar. O menu-gaveta é
   filho dele e usa position:fixed — e um elemento com backdrop-filter vira
   o bloco de referência dos filhos fixos. Com o desfoque na barra, a gaveta
   deixava de medir a tela inteira e colapsava para a altura da barra: ao
   rolar a página, o menu aparecia cortado com o resto transparente.
   Por isso o vidro vive num ::before, que não cria bloco de referência. */
#navbar::before{
  content:'';position:absolute;inset:0;z-index:-1;
  background:transparent;
  transition:background .35s;
}
#navbar.fixo::before{
  background:rgba(236,229,218,.9);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}
#navbar.fixo{
  padding:12px 40px;
  border-bottom-color:var(--line);box-shadow:0 8px 34px rgba(43,27,16,.07);
}
/* A marca não encolhe: o menu tem nove itens e, sem isto, o flex espremia o
   logotipo até "Telatin Joias" quebrar em duas linhas e o "Ouro 18k · Rio
   Verde GO" em três — o que inflava a barra inteira. */
.logo-wrap{display:flex;align-items:center;gap:13px;text-decoration:none;flex:0 0 auto;}
.logo-text,.logo-text span{white-space:nowrap;}
.logo-mono{
  width:44px;height:44px;flex:0 0 44px;border-radius:50%;
  display:grid;place-items:center;background:var(--cacau);color:var(--gold2);
  font-family:var(--serif);font-size:1.15rem;letter-spacing:.06em;
  border:1px solid rgba(174,132,56,.45);
}
.logo-text{display:flex;flex-direction:column;font-family:var(--serif);font-size:1.32rem;line-height:1.1;}
.logo-text span{
  font-family:var(--sans);font-size:.56rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--muted);margin-top:3px;
}
.menu{display:flex;align-items:center;gap:26px;}
.menu a{
  text-decoration:none;font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);position:relative;padding:6px 0;transition:color .3s;
  /* "A Joalheria" quebrava em duas linhas e ficava 21px mais alto que os
     vizinhos, desalinhando a barra inteira. Item de menu não quebra. */
  white-space:nowrap;
}
/* o risquinho dourado é dos itens de navegação; o WhatsApp e o Entrar são
   botões e não o recebem */
.menu a:not(.cta):not(.tj-entrar)::after{
  content:'';position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--gold);transition:width .34s;
}
.menu a:not(.cta):not(.tj-entrar):hover,.menu a.ativo{color:var(--gold3);}
.menu a:not(.cta):not(.tj-entrar):hover::after,.menu a.ativo::after{width:100%;}
.menu a.cta{
  background:var(--cacau);color:var(--gold2);padding:12px 22px;border-radius:var(--raio);
}
.menu a.cta::after{display:none;}
.menu a.cta:hover{background:var(--gold);color:#2b1b10;}
/* Na página inicial é <button> (abre o painel); na de novidades é <a> que
   leva para a inicial, porque o painel só existe lá. As duas formas têm de
   ficar idênticas na tela. */
.tj-entrar{
  display:flex;align-items:center;gap:9px;background:none;border:1px solid var(--line);
  border-radius:40px;padding:6px 15px 6px 6px;font-size:.7rem;letter-spacing:.13em;
  text-transform:uppercase;transition:border-color .3s,color .3s;min-height:44px;
  text-decoration:none;color:var(--ink);cursor:pointer;font-family:inherit;
}
.tj-entrar:hover{border-color:var(--gold);color:var(--gold3);}
.tj-avatar{
  width:30px;height:30px;border-radius:50%;display:grid;place-items:center;
  background:var(--cacau);color:var(--gold2);font-family:var(--serif);font-size:.82rem;
  overflow:hidden;flex:0 0 30px;
}
.tj-avatar img{width:100%;height:100%;object-fit:cover;}
.burger{display:none;flex-direction:column;gap:5px;background:none;border:0;padding:12px;}
.burger span{display:block;width:24px;height:1.5px;background:var(--ink);transition:transform .3s,opacity .3s;}
.burger.aberto span:nth-child(1){transform:translateY(6.5px) rotate(45deg);}
.burger.aberto span:nth-child(2){opacity:0;}
.burger.aberto span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg);}

/* ---------- hero ---------- */
header{
  position:relative;min-height:100svh;display:flex;align-items:center;
  padding:150px 40px 90px;overflow:hidden;
  background:
    radial-gradient(ellipse at 78% 20%,rgba(174,132,56,.13),transparent 58%),
    linear-gradient(170deg,var(--paper) 0%,#e9dcc4 100%);
}
.hero-inner{
  position:relative;z-index:3;max-width:1280px;margin:0 auto;width:100%;
  display:grid;grid-template-columns:1.08fr .92fr;gap:70px;align-items:center;
}
.hero-text h1{margin-bottom:26px;}
.hero-text .line{display:block;overflow:hidden;}
.hero-text .line > span{display:block;transform:translateY(105%);animation:sobe .95s cubic-bezier(.16,1,.3,1) forwards;}
.hero-text .line:nth-child(1) > span{animation-delay:.18s;}
.hero-text .line:nth-child(2) > span{animation-delay:.32s;}
.hero-text .line:nth-child(3) > span{animation-delay:.46s;}
@keyframes sobe{to{transform:translateY(0)}}
.lead{font-size:1.1rem;color:var(--muted);max-width:52ch;margin-bottom:34px;}
.hero-btns{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:52px;}
.hero-btns .btn-outline{border-color:var(--cacau);color:var(--cacau);}
.hero-btns .btn-outline:hover{background:var(--cacau);color:var(--gold2);}
.hero-stats{display:flex;gap:46px;flex-wrap:wrap;padding-top:30px;border-top:1px solid var(--line);}
.stat b{display:block;font-family:var(--serif);font-size:2.5rem;line-height:1;color:var(--gold3);}
/* filho DIRETO: senão esta regra encolhe também o <span class="counter">
   que fica dentro do <b> e o número sai do tamanho da legenda */
.stat > span{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);}
.hero-visual{position:relative;}
.hero-visual .frame{
  position:relative;overflow:hidden;border-radius:2px;box-shadow:var(--sombra-forte);
  aspect-ratio:4/5;
}
.hero-visual .frame img{width:100%;height:100%;object-fit:cover;transform:scale(1.02);}
.frame::after{
  content:'';position:absolute;inset:0;background:var(--cacau);transform-origin:right;
  transition:transform 1.1s cubic-bezier(.77,0,.18,1);
}
.frame.revelado::after{transform:scaleX(0);}
.hero-visual .caption{
  position:absolute;left:24px;bottom:24px;z-index:3;color:var(--bone);
  font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;line-height:1.7;
  text-shadow:0 2px 14px rgba(0,0,0,.7);
}
.seal{
  position:absolute;right:-26px;top:-26px;width:104px;height:104px;border-radius:50%;
  background:var(--cacau);color:var(--gold2);display:grid;place-content:center;text-align:center;
  border:1px solid rgba(174,132,56,.45);box-shadow:0 16px 40px rgba(43,27,16,.35);z-index:4;
}
.seal b{font-family:var(--serif);font-size:1.9rem;line-height:1;}
.seal small{font-size:.52rem;letter-spacing:.24em;text-transform:uppercase;opacity:.8;}
.particles{position:absolute;inset:0;z-index:1;pointer-events:none;}
.particles div{position:absolute;border-radius:50%;background:rgba(174,132,56,.5);animation:sobeflutua linear infinite;}
@keyframes sobeflutua{0%{transform:translateY(0);opacity:0}12%{opacity:.9}100%{transform:translateY(-120vh);opacity:0}}
.scroll-hint{
  position:absolute;bottom:34px;left:50%;transform:translateX(-50%);z-index:3;
  font-size:.6rem;letter-spacing:.32em;text-transform:uppercase;color:var(--muted);
}
.scroll-hint::after{
  content:'';display:block;width:1px;height:44px;margin:12px auto 0;
  background:linear-gradient(var(--gold),transparent);animation:desce 2.1s ease-in-out infinite;
}
@keyframes desce{0%,100%{opacity:.25;transform:scaleY(.5)}50%{opacity:1;transform:scaleY(1)}}

/* ---------- faixas rolantes ---------- */
.marquee{
  background:var(--cacau);color:var(--gold2);padding:17px 0;overflow:hidden;
  border-top:1px solid var(--line2);border-bottom:1px solid var(--line2);
}
.marquee-content{display:flex;gap:56px;white-space:nowrap;animation:rola 42s linear infinite;width:max-content;}
.marquee-rev{background:var(--cacau2);}
.marquee-rev .marquee-content{animation-direction:reverse;animation-duration:56s;}
.marquee span{font-size:.7rem;letter-spacing:.28em;text-transform:uppercase;display:flex;align-items:center;gap:56px;}
.marquee span::after{content:'✦';color:var(--gold);font-size:.6rem;}
@keyframes rola{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- revelação ---------- */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1);}
.reveal.vis{opacity:1;transform:none;}
.reveal-delay-1{transition-delay:.11s;}
.reveal-delay-2{transition-delay:.22s;}
.reveal-delay-3{transition-delay:.33s;}
.reveal-left{transform:translateX(-40px);}
.reveal-right{transform:translateX(40px);}

/* ---------- manifesto ---------- */
.manifesto{background:var(--bone);}
.grid-3{
  display:flex;flex-wrap:wrap;justify-content:center;gap:28px;margin-top:60px;align-items:stretch;
}
.card-cap{
  flex:0 1 calc((100% - 56px)/3);min-width:270px;
  background:var(--paper);border:1px solid var(--line);padding:44px 36px 40px;position:relative;
  overflow:hidden;transition:transform .45s cubic-bezier(.2,.7,.3,1),box-shadow .45s,border-color .45s;
}
.card-cap:hover{transform:translateY(-7px);box-shadow:var(--sombra);border-color:var(--gold);}
.cap-label{font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;color:var(--gold3);}
.cap-num{
  position:absolute;right:18px;top:2px;font-family:var(--serif);font-size:5.4rem;
  color:rgba(43,27,16,.055);line-height:1;pointer-events:none;
}
.card-cap h3{margin:20px 0 14px;font-size:1.5rem;}
.card-cap p{color:var(--muted);font-size:.95rem;margin:0;}

/* ---------- sobre ---------- */
#joalheria{background:var(--paper);}
.sobre-grid{
  max-width:1280px;margin:0 auto;padding:0 40px;position:relative;z-index:2;
  display:grid;grid-template-columns:.86fr 1.14fr;gap:74px;align-items:center;
}
.sobre-foto{position:relative;}
.sobre-foto .frame{overflow:hidden;box-shadow:var(--sombra-forte);aspect-ratio:4/5;position:relative;}
.sobre-foto .frame img{width:100%;height:100%;object-fit:cover;}
.badge-anos{
  position:absolute;right:-22px;bottom:-22px;width:98px;height:98px;border-radius:50%;
  background:var(--gold);color:#2b1b10;display:grid;place-content:center;text-align:center;
  box-shadow:0 16px 40px rgba(174,132,56,.4);
}
.badge-anos b{font-family:var(--serif);font-size:1.6rem;line-height:1;}
.badge-anos small{font-size:.54rem;letter-spacing:.22em;text-transform:uppercase;}
.sobre-content h3{margin:8px 0 22px;}
.sobre-content p{color:var(--muted);}
.sobre-lista{list-style:none;padding:0;margin:34px 0 30px;border-top:1px solid var(--line);}
.sobre-lista li{
  display:flex;justify-content:space-between;gap:22px;flex-wrap:wrap;
  padding:15px 0;border-bottom:1px solid var(--line);
}
.sobre-lista b{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold3);}
.sobre-lista span{color:var(--muted);font-size:.94rem;text-align:right;}
.sobre-acoes{display:flex;flex-wrap:wrap;gap:14px;}

/* ---------- coleções ---------- */
.curadoria{background:linear-gradient(165deg,var(--cacau) 0%,var(--cacau2) 100%);color:var(--bone);}
.curadoria h2{color:var(--bone);}
.curadoria h2 em{color:var(--gold2);}
.curadoria .section-title p{color:rgba(250,245,236,.72);}
.curadoria .rule{background:var(--gold);}
.curadoria .rule::before{background:var(--cacau2);}
.curadoria-inner{max-width:1280px;margin:0 auto;padding:0 40px;}
.grid-colecao{display:flex;flex-wrap:wrap;justify-content:center;gap:24px;margin-top:62px;}
.card-colecao{
  flex:0 1 calc((100% - 48px)/3);min-width:280px;
  position:relative;aspect-ratio:4/5;overflow:hidden;border-radius:2px;
  border:1px solid rgba(232,211,166,.14);background:var(--cacau3);padding:0;text-align:left;
  transition:transform .5s cubic-bezier(.2,.7,.3,1),border-color .4s;
}
.card-colecao:hover{transform:translateY(-8px);border-color:rgba(174,132,56,.6);}
.card-colecao img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:saturate(.88) brightness(.82);transition:transform 1s cubic-bezier(.2,.7,.3,1),filter .6s;
}
.card-colecao:hover img{transform:scale(1.09);filter:saturate(1) brightness(.95);}
.card-colecao .overlay{
  position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;
  padding:34px 30px;
  background:linear-gradient(to top,rgba(26,15,7,.94) 0%,rgba(26,15,7,.6) 42%,transparent 78%);
}
.card-colecao .num{
  position:absolute;top:22px;left:26px;font-family:var(--serif);font-size:2.5rem;
  color:rgba(232,211,166,.42);line-height:1;
}
.card-colecao .tag{
  display:inline-block;align-self:flex-start;font-size:.56rem;letter-spacing:.22em;
  text-transform:uppercase;color:#2b1b10;background:var(--gold);padding:5px 11px;margin-bottom:14px;
}
.card-colecao .h4{font-family:var(--serif);font-size:2rem;color:var(--bone);display:block;line-height:1.1;}
.card-colecao .p{display:block;color:rgba(250,245,236,.78);font-size:.9rem;margin-top:9px;line-height:1.6;}
.card-colecao.ativa{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold);}

/* ações do card de coleção: filtrar a vitrine ou ir para o destaque no Instagram */
.card-colecao{cursor:pointer;}
.col-acoes{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;}
.col-filtrar,.col-insta{
  font-family:var(--sans);font-size:.6rem;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;padding:10px 16px;border-radius:40px;min-height:44px;
  display:inline-flex;align-items:center;text-decoration:none;cursor:pointer;
  transition:background .3s,color .3s,border-color .3s;
}
.col-filtrar{background:var(--gold);color:#2b1b10;border:1px solid var(--gold);}
.col-filtrar:hover{background:var(--gold2);border-color:var(--gold2);}
.col-insta{background:rgba(18,12,6,.5);color:var(--gold2);border:1px solid rgba(240,217,168,.45);}
.col-insta::after{content:'↗';margin-left:7px;font-size:.85rem;}
.col-insta:hover{background:rgba(240,217,168,.16);border-color:var(--gold2);}
.colecao-nota{
  max-width:64ch;margin:44px auto 0;text-align:center;font-size:.86rem;
  color:rgba(250,246,236,.62);
}

/* ---------- vitrine: filtros ---------- */
#vitrine{background:var(--bone);}
.filtros{max-width:1280px;margin:52px auto 0;padding:0 40px;}
.filtro-linha{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;}
.flabel{
  font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted);
  margin-right:8px;flex:0 0 auto;
}
.fchip{
  min-height:44px;padding:10px 19px;border:1px solid var(--line);background:transparent;
  border-radius:40px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  transition:background .3s,color .3s,border-color .3s,transform .3s;
}
.fchip:hover{border-color:var(--gold);color:var(--gold3);transform:translateY(-1px);}
.fchip.on{background:var(--cacau);color:var(--gold2);border-color:var(--cacau);}
.fchip.fav-chip.on{background:var(--gold);color:#2b1b10;border-color:var(--gold);}
.fchip.acao{border-color:var(--gold);color:var(--gold3);}
.fchip.acao:hover{background:var(--gold);color:#2b1b10;}
.filtro-info{font-size:.8rem;color:var(--muted);margin-top:4px;min-height:1.4em;}

/* ---------- vitrine: grade de joias ---------- */
.grid-joias{
  max-width:1280px;margin:38px auto 0;padding:0 40px;
  display:flex;flex-wrap:wrap;justify-content:center;gap:26px;align-items:stretch;
}
.card-joia{
  flex:0 1 calc((100% - 78px)/4);min-width:250px;max-width:330px;
  background:var(--paper);border:1px solid var(--line);display:flex;flex-direction:column;
  transition:transform .45s cubic-bezier(.2,.7,.3,1),box-shadow .45s,border-color .45s;
  position:relative;overflow:hidden;
}
.card-joia:hover{transform:translateY(-8px);box-shadow:var(--sombra);border-color:var(--gold);}
.card-joia.escondido{display:none;}
.card-joia .foto{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--cacau3);}
.card-joia .foto img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.3,1);}
.card-joia:hover .foto img{transform:scale(1.07);}
.card-joia .selo{
  position:absolute;left:14px;top:14px;z-index:3;background:var(--cacau);color:var(--gold2);
  font-size:.55rem;letter-spacing:.18em;text-transform:uppercase;padding:6px 11px;
}
.card-joia .coracao{
  position:absolute;right:10px;top:10px;z-index:3;width:44px;height:44px;border-radius:50%;
  background:rgba(250,245,236,.92);border:1px solid var(--line);color:#b0a08a;font-size:1.05rem;
  display:grid;place-items:center;transition:color .3s,transform .3s,background .3s;
}
.card-joia .coracao:hover{transform:scale(1.1);color:var(--gold);}
.card-joia .coracao.on{color:#c0392b;background:#fff;border-color:#e0c3bd;}
.card-joia .olho{
  position:absolute;left:0;right:0;bottom:0;z-index:3;min-height:44px;
  background:rgba(43,27,16,.88);color:var(--gold2);border:0;
  font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;
  transform:translateY(100%);transition:transform .38s cubic-bezier(.2,.7,.3,1);
}
.card-joia:hover .olho,.card-joia:focus-within .olho{transform:translateY(0);}
.card-joia .corpo{padding:22px 22px 20px;display:flex;flex-direction:column;flex:1;}
.card-joia .cat{font-size:.56rem;letter-spacing:.24em;text-transform:uppercase;color:var(--gold3);}
.card-joia h4{margin:9px 0 10px;font-size:1.32rem;line-height:1.2;}
.card-joia h4 small{font-family:var(--sans);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);}
.card-joia .specs{font-size:.82rem;color:var(--muted);flex:1;margin-bottom:16px;}
.card-joia .rodape{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding-top:15px;border-top:1px solid var(--line);
}
.card-joia .preco{font-family:var(--serif);font-size:1.5rem;color:var(--gold3);line-height:1;}
.comparar{
  display:flex;align-items:center;gap:7px;font-size:.62rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);cursor:pointer;min-height:44px;
}
.comparar input{width:16px;height:16px;accent-color:var(--gold);cursor:pointer;}
.card-joia.nova{border-color:var(--gold);box-shadow:0 0 0 1px rgba(174,132,56,.35);}

.vitrine-vazia{text-align:center;padding:60px 40px;color:var(--muted);}
.vitrine-vazia p{font-family:var(--serif);font-size:1.5rem;color:var(--ink);}

.colecao-share{
  margin-top:64px;padding:34px 40px;background:var(--paper);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:wrap;
}
.colecao-share b{display:block;font-family:var(--serif);font-size:1.45rem;margin-bottom:6px;}
.colecao-share span{color:var(--muted);font-size:.92rem;max-width:56ch;display:block;}
.colecao-share-btns{display:flex;gap:12px;flex-wrap:wrap;}

/* ---------- painel administrativo ---------- */
.admin-panel{
  max-width:1280px;margin:38px auto 0;padding:38px 40px 34px;
  background:var(--cacau);color:var(--bone);border:1px solid var(--line2);
}
.adm-head{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:flex-start;margin-bottom:26px;}
.adm-head h3{color:var(--bone);}
.adm-head h3 em{color:var(--gold2);}
.adm-sub{color:rgba(250,245,236,.66);font-size:.88rem;margin-top:6px;}
.adm-status{font-size:.78rem;color:var(--gold2);}
.adm-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.adm-full{grid-column:1/-1;}
.adm-field{display:flex;flex-direction:column;gap:7px;}
.adm-field label{font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold2);}
.adm-field input,.adm-field select,.adm-field textarea{
  background:rgba(250,245,236,.06);border:1px solid var(--line2);color:var(--bone);
  padding:13px 15px;border-radius:var(--raio);min-height:48px;
}
.adm-field select option{color:#2b1b10;}
.adm-field input::placeholder,.adm-field textarea::placeholder{color:rgba(250,245,236,.35);}
.adm-field input:focus,.adm-field select:focus,.adm-field textarea:focus{outline:none;border-color:var(--gold);}
.adm-drop{
  position:relative;border:1px dashed rgba(232,211,166,.36);border-radius:var(--raio);
  padding:30px 20px;text-align:center;color:rgba(250,245,236,.66);font-size:.86rem;
  transition:border-color .3s,background .3s;cursor:pointer;
}
.adm-drop:hover,.adm-drop.sobre{border-color:var(--gold);background:rgba(174,132,56,.08);}
.adm-drop input{position:absolute;inset:0;opacity:0;cursor:pointer;}
.drop-ico{display:block;font-size:1.6rem;margin-bottom:8px;}
.adm-preview{margin-top:14px;}
.adm-preview img{max-height:190px;border:1px solid var(--line2);}
.adm-mais summary{cursor:pointer;color:var(--gold2);font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;padding:10px 0;}
.adm-mais summary span{color:rgba(250,245,236,.45);letter-spacing:0;text-transform:none;}
.adm-acoes{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px;}
.admin-panel .btn-ghost{border-color:var(--line2);color:var(--gold2);background:transparent;}
.admin-panel .btn-ghost:hover{border-color:var(--gold);background:rgba(174,132,56,.12);color:var(--gold2);}
.adm-aviso{margin-top:18px;font-size:.78rem;color:rgba(250,245,236,.6);border-left:2px solid var(--gold);padding-left:14px;}
/* Botões de administração dentro do card. Ficam no alto, abaixo do selo e do
   coração: embaixo eles seriam cobertos pela barra "Prévia rápida". */
.adm-remover,.adm-editar{
  position:absolute;top:62px;z-index:5;border-radius:40px;padding:8px 14px;
  font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;min-height:38px;
  transition:background .3s,color .3s,border-color .3s;
}
.adm-remover{right:10px;background:rgba(43,27,16,.92);color:#f3b8b0;border:1px solid rgba(243,184,176,.4);}
.adm-remover:hover{background:#8e3327;color:#fff;border-color:#8e3327;}
.adm-editar{left:10px;background:rgba(23,15,8,.92);color:var(--gold2);border:1px solid rgba(240,217,168,.45);}
.adm-editar:hover{background:var(--gold);color:#2b1b10;border-color:var(--gold);}

.adm-secao{margin-top:36px;padding-top:28px;border-top:1px solid var(--line2);}
.adm-secao h4{color:var(--gold2);font-size:1.3rem;margin-bottom:18px;}
.adm-dica{
  margin:18px 0 0;font-size:.85rem;color:var(--gold2);
  border-left:2px solid var(--gold);padding-left:14px;
}
.adm-lembrar{
  display:flex;align-items:center;gap:9px;min-height:44px;
  font-size:.78rem;color:rgba(251,246,238,.7);cursor:pointer;
}
.adm-lembrar input{width:16px;height:16px;accent-color:var(--gold);cursor:pointer;}
#admPubStatus{margin-top:14px;font-size:.88rem;line-height:1.6;}

/* modo de edição de textos: contorno dourado em tudo que pode ser reescrito */
body.editando [data-edit]{
  outline:1px dashed var(--gold);outline-offset:6px;border-radius:2px;
  cursor:text;transition:background .2s;
}
body.editando [data-edit]:hover{background:rgba(174,132,56,.1);}
body.editando [data-edit]:focus{outline:2px solid var(--gold);background:rgba(174,132,56,.15);}

/* ---------- ateliê ---------- */
.atelie{background:linear-gradient(165deg,var(--cacau2) 0%,var(--cacau) 100%);color:var(--bone);}
.atelie h2{color:var(--bone);}
.atelie h2 em{color:var(--gold2);}
.atelie .section-title p{color:rgba(250,245,236,.72);}
.atelie .rule{background:var(--gold);}
.atelie .rule::before{background:var(--cacau2);}
.atelie-inner{max-width:1280px;margin:0 auto;padding:0 40px;}
.ferramentas{display:flex;flex-wrap:wrap;justify-content:center;gap:26px;margin-top:60px;align-items:stretch;}
.ferramenta{
  flex:0 1 calc((100% - 52px)/3);min-width:290px;
  background:rgba(250,245,236,.045);border:1px solid var(--line2);padding:38px 32px 34px;
  position:relative;display:flex;flex-direction:column;
}
.fer-num{
  position:absolute;right:22px;top:16px;font-family:var(--serif);font-size:3.4rem;
  color:rgba(232,211,166,.12);line-height:1;
}
.ferramenta h3{color:var(--bone);font-size:1.6rem;margin-bottom:12px;}
.fer-sub{color:rgba(250,245,236,.68);font-size:.88rem;margin-bottom:22px;}
.ferramenta label{
  display:block;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gold2);margin:16px 0 8px;
}
.ferramenta label small{letter-spacing:0;text-transform:none;color:rgba(250,245,236,.45);}
.ferramenta label b{float:right;font-family:var(--serif);font-size:1rem;color:var(--bone);letter-spacing:0;}
.fer-toggle{display:flex;gap:8px;margin-bottom:4px;}
.fer-toggle button{
  flex:1;min-height:44px;padding:10px 12px;background:transparent;border:1px solid var(--line2);
  color:rgba(250,245,236,.72);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;
  border-radius:var(--raio);transition:background .3s,color .3s,border-color .3s;
}
.fer-toggle button.on{background:var(--gold);color:#2b1b10;border-color:var(--gold);}
.fer-input{display:flex;align-items:center;gap:0;border:1px solid var(--line2);border-radius:var(--raio);overflow:hidden;background:rgba(250,245,236,.06);}
.fer-input input{flex:1;background:none;border:0;padding:14px 15px;min-height:50px;color:var(--bone);}
.fer-input input:focus{outline:none;}
.fer-un{padding:0 16px;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold2);border-left:1px solid var(--line2);align-self:stretch;display:flex;align-items:center;}
.fer-un.pre{border-left:0;border-right:1px solid var(--line2);}
.ferramenta select{
  width:100%;background:rgba(250,245,236,.06);border:1px solid var(--line2);color:var(--bone);
  padding:14px 15px;min-height:50px;border-radius:var(--raio);
}
.ferramenta select option{color:#2b1b10;}
.ferramenta select:focus,.ferramenta input:focus{outline:none;border-color:var(--gold);}
.ferramenta input[type=range],.fer-tela input[type=range]{width:100%;accent-color:var(--gold);height:44px;}
.fer-btn{width:100%;margin-top:20px;}
.fer-saida{
  margin-top:22px;padding:20px;background:rgba(26,15,7,.5);border:1px solid var(--line2);
  border-left:2px solid var(--gold);min-height:96px;flex:1;
}
.fer-saida .vazio{color:rgba(250,245,236,.42);font-size:.88rem;}
.fer-saida .grande{font-family:var(--serif);font-size:2.4rem;color:var(--gold2);line-height:1.05;display:block;}
.fer-saida .peq{font-size:.8rem;color:rgba(250,245,236,.7);display:block;margin-top:8px;line-height:1.6;}
.fer-saida .linha{display:flex;justify-content:space-between;gap:14px;padding:7px 0;border-bottom:1px solid rgba(232,211,166,.12);font-size:.85rem;}
.fer-saida .linha:last-child{border-bottom:0;}
.fer-saida .linha b{color:var(--gold2);font-weight:600;}
.fer-saida .destaque{color:var(--bone);font-size:.9rem;margin-top:12px;display:block;}
.fer-saida a.fer-link{
  display:inline-block;margin-top:14px;color:var(--gold2);font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;border-bottom:1px solid rgba(232,211,166,.5);text-decoration:none;padding-bottom:2px;
}
.fer-nota{font-size:.74rem;color:rgba(250,245,236,.5);margin:14px 0 0;line-height:1.6;}
/* =========================================================
   MEDIR O ARO NA TELA
   A página não sabe o tamanho físico de um pixel — cada monitor
   é diferente. Por isso a calibração com o cartão: ela converte
   pixels em milímetros de verdade, e só então o círculo pode ser
   desenhado no tamanho real.
   ========================================================= */
/* Fica numa faixa própria, abaixo das três ferramentas: um instrumento de
   medida precisa de largura de verdade — o cartão de calibração tem 8,5 cm
   e não pode ser encolhido para caber numa coluna. */
.fer-tela{
  margin:26px auto 0;max-width:760px;
  border:1px solid var(--line2);background:rgba(250,245,236,.045);
}
.fer-tela > summary{
  cursor:pointer;padding:18px 22px;font-size:.94rem;color:var(--bone);
  list-style:none;display:flex;align-items:center;gap:10px;
  transition:background .3s;
}
.fer-tela > summary::-webkit-details-marker{display:none;}
.fer-tela > summary::before{
  content:'◎';color:var(--gold);font-size:1.15rem;line-height:1;flex:0 0 auto;
}
.fer-tela > summary:hover{background:rgba(250,245,236,.08);}
.fer-tela > summary b{color:var(--gold2);font-weight:600;}
.fer-tela[open] > summary{border-bottom:1px solid var(--line2);}

.tela-passo{display:flex;gap:18px;padding:24px 22px 8px;}
.tela-num{
  flex:0 0 26px;width:26px;height:26px;border-radius:50%;
  display:grid;place-items:center;background:var(--gold);color:#2b1b10;
  font-family:var(--serif);font-size:.9rem;line-height:1;
}
/* só o título do passo vira bloco — os negritos de dentro da frase da medida
   têm de continuar em linha, senão "Aro 16 — diâmetro..." quebra em seis linhas */
.tela-passo > div > b{display:block;font-size:.88rem;color:var(--bone);margin-bottom:6px;}
.tela-passo p{font-size:.84rem;color:var(--gold2);opacity:.72;line-height:1.6;margin:0 0 13px;}
.tela-passo > div{min-width:0;}

/* a barra que imita o cartão: largura em pixels controlada pelo slider */
.tela-cartao{
  height:54px;border-radius:5px;position:relative;
  background:linear-gradient(118deg,var(--cacau),var(--cacau2));
  border:1px solid var(--gold3);box-shadow:inset 0 1px 0 rgba(240,217,168,.28);
  display:flex;align-items:flex-end;justify-content:flex-end;padding:7px 9px;
  margin-bottom:9px;max-width:100%;
}
.tela-cartao span{
  font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold2);
}
#telaCalibra{width:100%;max-width:420px;display:block;margin-bottom:10px;}
.tela-reset{
  background:none;border:0;padding:0;cursor:pointer;
  font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold2);border-bottom:1px solid var(--line2);
}
.tela-reset:hover{color:var(--gold);}

/* o palco do anel: fundo escuro para o ouro aparecer por contraste */
.tela-anel{
  background:var(--cacau);border:1px solid var(--line2);
  display:grid;place-items:center;padding:22px;min-height:150px;margin-bottom:12px;
}
.tela-circulo{
  display:block;border-radius:50%;
  border:2px dashed var(--gold2);
  box-shadow:0 0 0 1px rgba(43,27,16,.5), 0 0 26px rgba(174,132,56,.32);
}
.tela-controle{display:flex;align-items:center;gap:14px;margin-bottom:9px;}
.tela-controle button{
  width:40px;height:40px;border-radius:50%;cursor:pointer;
  border:1px solid var(--line2);background:transparent;color:var(--gold2);
  font-size:1.25rem;line-height:1;transition:background .25s,color .25s,border-color .25s;
}
.tela-controle button:hover{background:var(--gold);color:#2b1b10;border-color:var(--gold);}
.tela-controle output{
  font-family:var(--serif);font-size:2rem;color:var(--gold2);
  min-width:56px;text-align:center;font-variant-numeric:lining-nums;
}
.tela-medida{font-size:.82rem;color:var(--gold2);opacity:.75;margin:0;}
.tela-medida b{color:var(--gold2);opacity:1;}
.tela-aviso{
  font-size:.75rem;color:var(--gold2);opacity:.6;
  padding:6px 22px 20px;margin:0;line-height:1.55;
}
@media (max-width:520px){
  .tela-passo{flex-direction:column;gap:11px;padding:20px 16px 8px;}
  /* o cartão precisa alcançar ~8,5 cm de verdade; num celular isso é quase
     a largura inteira, então ele avança sobre o respiro lateral do bloco */
  .tela-cartao{margin-left:-14px;margin-right:-14px;}
  .tela-aviso{padding:6px 16px 18px;}
}

.fer-ajuda{margin-top:16px;}
.fer-ajuda summary{cursor:pointer;color:var(--gold2);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;padding:8px 0;}
.fer-ajuda ol{color:rgba(250,245,236,.7);font-size:.85rem;padding-left:20px;margin:8px 0 0;line-height:1.7;}
.gp-peca{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid rgba(232,211,166,.12);}
.gp-peca img{width:48px;height:48px;object-fit:cover;flex:0 0 48px;border:1px solid var(--line2);}
.gp-peca b{display:block;color:var(--bone);font-size:.9rem;font-weight:500;font-family:var(--serif);}
.gp-peca small{color:var(--gold2);font-size:.78rem;}

/* ---------- processo ---------- */
.processo{background:var(--paper);}
.processo-inner{max-width:1280px;margin:0 auto;padding:0 40px;}
.timeline{display:flex;flex-wrap:wrap;justify-content:center;gap:26px;margin-top:62px;align-items:stretch;}
.step{
  flex:0 1 calc((100% - 78px)/4);min-width:230px;padding:36px 28px;position:relative;
  background:var(--bone);border:1px solid var(--line);text-align:center;
  transition:transform .4s,border-color .4s,box-shadow .4s;
}
.step:hover{transform:translateY(-6px);border-color:var(--gold);box-shadow:var(--sombra);}
.step .num{
  width:56px;height:56px;margin:0 auto 20px;border-radius:50%;display:grid;place-items:center;
  background:var(--cacau);color:var(--gold2);font-family:var(--serif);font-size:1.3rem;
  border:1px solid rgba(174,132,56,.4);
}
.step h4{margin-bottom:10px;}
.step p{color:var(--muted);font-size:.9rem;margin:0;}

/* ---------- depoimentos ---------- */
#confianca{background:var(--bone);}
.grid-depo{display:flex;flex-wrap:wrap;justify-content:center;gap:26px;margin-top:60px;align-items:stretch;}
.card-depo{
  flex:0 1 calc((100% - 52px)/3);min-width:270px;
  background:var(--paper);border:1px solid var(--line);padding:38px 32px;position:relative;
  display:flex;flex-direction:column;transition:transform .45s,box-shadow .45s,border-color .45s;
}
.card-depo::before{
  content:'“';position:absolute;left:22px;top:-6px;font-family:var(--serif);font-size:5rem;
  color:rgba(174,132,56,.22);line-height:1;
}
.card-depo.destaque{transform:translateY(-8px);border-color:var(--gold);box-shadow:var(--sombra);}
.card-depo .quote{font-family:var(--serif);font-size:1.22rem;line-height:1.55;flex:1;margin-top:16px;}
.card-depo .autor{font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-top:18px;}
.card-depo .stars{color:var(--gold);letter-spacing:.22em;margin-top:8px;font-size:.9rem;}

/* ---------- faixa de convite ---------- */
.cta-band{
  background:linear-gradient(140deg,var(--cacau3) 0%,var(--cacau2) 60%,var(--cacau) 100%);
  color:var(--bone);text-align:center;padding:120px 40px;position:relative;overflow:hidden;
}
.cta-band::before{
  content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:70vw;height:70vw;background:radial-gradient(circle,rgba(201,143,66,.2),transparent 62%);
  pointer-events:none;
}
.cta-band > div{position:relative;z-index:2;max-width:820px;margin:0 auto;}
.cta-band .kicker{color:var(--gold2);}
.cta-band h2{color:var(--bone);margin-bottom:36px;}
.cta-band h2 em{color:var(--gold2);}

/* ---------- contato ---------- */
#contato{background:var(--paper);}
.contato-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:60px;margin-top:60px;align-items:start;}
.contato-item{display:flex;gap:18px;align-items:flex-start;padding:19px 0;border-bottom:1px solid var(--line);}
.contato-item:first-child{border-top:1px solid var(--line);}
.contato-item .icone{
  width:46px;height:46px;flex:0 0 46px;border-radius:50%;display:grid;place-items:center;
  background:var(--bone);border:1px solid var(--line);font-size:1.05rem;color:var(--gold3);
}
.contato-item a{color:var(--ink);text-decoration:none;font-size:1.06rem;transition:color .3s;border-bottom:1px solid transparent;}
.contato-item a:hover{color:var(--gold3);border-bottom-color:var(--gold);}
.contato-item b{font-size:1.06rem;font-weight:500;display:block;}
.contato-item small{display:block;font-size:.76rem;color:var(--muted);margin-top:3px;}
.selo-garantia{
  margin-top:30px;padding:22px 24px;background:var(--cacau);color:var(--bone);border-left:2px solid var(--gold);
}
.selo-garantia b{display:block;font-family:var(--serif);font-size:1.25rem;color:var(--gold2);margin-bottom:6px;}
.selo-garantia span{font-size:.86rem;color:rgba(250,245,236,.74);}

#leadForm{background:var(--bone);border:1px solid var(--line);padding:44px 40px;box-shadow:var(--sombra);}
#leadForm h3{margin-bottom:6px;}
#leadForm .sub{color:var(--muted);font-size:.9rem;margin-bottom:26px;}
#leadForm label{display:block;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold3);margin:18px 0 8px;}
#leadForm label small{letter-spacing:0;text-transform:none;color:var(--muted);}
#leadForm input,#leadForm select,#leadForm textarea{
  width:100%;padding:14px 16px;min-height:50px;border:1px solid var(--line);background:var(--paper);
  border-radius:var(--raio);transition:border-color .3s,background .3s;
}
#leadForm input:focus,#leadForm select:focus,#leadForm textarea:focus{outline:none;border-color:var(--gold);background:#fff;}
#leadForm input.erro,#leadForm select.erro{border-color:#c0392b;}
#leadForm button[type=submit]{
  width:100%;margin-top:28px;min-height:54px;border:0;border-radius:var(--raio);
  background:linear-gradient(135deg,var(--gold) 0%,#c9a96a 52%,var(--gold) 100%);color:#2b1b10;
  font-size:.76rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
  transition:transform .3s,box-shadow .3s;box-shadow:0 12px 30px rgba(174,132,56,.3);
}
#leadForm button[type=submit]:hover{transform:translateY(-2px);box-shadow:0 18px 42px rgba(174,132,56,.44);}
.form-nota{font-size:.74rem;color:var(--muted);margin:14px 0 0;text-align:center;}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;}

/* ---------- rodapé ---------- */
footer{background:var(--cacau);color:var(--bone);padding:80px 40px 34px;}
.footer-inner{
  max-width:1280px;margin:0 auto;display:flex;justify-content:space-between;gap:52px;flex-wrap:wrap;
  padding-bottom:44px;border-bottom:1px solid var(--line2);
}
.foot-mono{
  display:grid;place-items:center;width:58px;height:58px;border-radius:50%;
  background:rgba(232,211,166,.08);border:1px solid rgba(174,132,56,.4);
  color:var(--gold2);font-family:var(--serif);font-size:1.4rem;margin-bottom:20px;
}
.assinatura .nome{font-family:var(--serif);font-size:2.1rem;line-height:1.1;}
.assinatura .nome span{color:var(--gold2);font-style:italic;}
.assinatura p{color:rgba(250,245,236,.6);font-size:.86rem;margin:6px 0 0;}
.social-label{font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;color:var(--gold2);margin-bottom:16px;}
.social{display:flex;flex-direction:column;gap:11px;}
.social a{
  color:rgba(250,245,236,.78);text-decoration:none;font-size:.88rem;transition:color .3s,padding-left .3s;
}
.social a:hover{color:var(--gold2);padding-left:6px;}
.base{
  max-width:1280px;margin:26px auto 0;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;
  font-size:.74rem;color:rgba(250,245,236,.5);letter-spacing:.1em;
}
.base .registro{color:var(--gold2);letter-spacing:.16em;text-transform:uppercase;font-size:.68rem;}

/* ---------- modais ---------- */
.modal{
  position:fixed;inset:0;z-index:9992;background:rgba(26,15,7,.86);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  display:none;align-items:center;justify-content:center;padding:26px;
}
.modal.aberto{display:flex;animation:fadeIn .3s ease both;}
.modal-box{
  background:var(--bone);max-width:520px;width:100%;max-height:90svh;overflow-y:auto;
  position:relative;box-shadow:var(--sombra-forte);border:1px solid var(--line);
  animation:sobeModal .42s cubic-bezier(.16,1,.3,1) both;
}
.modal-largo .modal-box{max-width:960px;}
@keyframes sobeModal{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
.modal-close{
  position:absolute;right:12px;top:12px;z-index:5;width:44px;height:44px;border-radius:50%;
  background:rgba(250,245,236,.94);border:1px solid var(--line);font-size:1rem;
  display:grid;place-items:center;transition:background .3s,transform .3s;
}
.modal-close:hover{background:var(--gold);color:#2b1b10;transform:rotate(90deg);}
/* as fotos das peças são quadradas: cortar para 4:3 comia um quarto da joia */
.modal-box > img{width:100%;aspect-ratio:1/1;object-fit:cover;background:var(--cacau3);}

/* =========================================================
   LUPA DE JOALHEIRO
   O ponteiro sobre a foto abre um círculo com a peça ampliada.
   É a lupa que o joalheiro encosta no olho — aqui serve para ver
   a cravação e o acabamento antes de perguntar o preço.
   ========================================================= */
.lupa-palco{position:relative;display:block;overflow:hidden;background:var(--cacau3);}
.lupa-palco > img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover;}
.lupa-lente{
  position:absolute;width:190px;height:190px;border-radius:50%;
  pointer-events:none;opacity:0;transform:scale(.82);
  transition:opacity .22s ease,transform .28s cubic-bezier(.16,1,.3,1);
  background-repeat:no-repeat;
  border:2px solid var(--gold2);
  box-shadow:0 0 0 1px rgba(43,27,16,.5), 0 18px 44px rgba(43,27,16,.45),
             inset 0 0 26px rgba(43,27,16,.28);
  z-index:3;
}
.lupa-palco.ativa .lupa-lente{opacity:1;transform:scale(1);}
/* o brilho de vidro que faz o círculo parecer uma lente, não um recorte */
.lupa-lente::after{
  content:'';position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:linear-gradient(145deg,rgba(255,255,255,.30),rgba(255,255,255,0) 42%);
}
.lupa-dica{
  position:absolute;left:50%;bottom:14px;transform:translateX(-50%);
  background:rgba(43,27,16,.74);color:var(--gold2);
  font-size:.56rem;letter-spacing:.2em;text-transform:uppercase;
  padding:7px 14px;border-radius:2px;pointer-events:none;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  transition:opacity .3s;z-index:2;
}
.lupa-palco.ativa .lupa-dica{opacity:0;}

/* No toque não existe ponteiro: a lupa vira um toque que amplia no centro,
   e a dica muda de texto. Sem isso, o recurso simplesmente não existiria
   para a maior parte de quem acessa. */
@media (hover:none){
  .lupa-lente{width:150px;height:150px;}
}
@media (prefers-reduced-motion:reduce){
  .lupa-lente{transition:opacity .01s;}
}
.modal-box .body{padding:32px 34px 34px;}
.modal-cat{font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;color:var(--gold3);}
.modal-box h4{margin:10px 0 12px;}
.modal-box .preco{font-family:var(--serif);font-size:2rem;color:var(--gold3);line-height:1;}
.modal-box .specs{color:var(--muted);font-size:.92rem;margin-top:12px;}
.historia-modal{
  margin-top:20px;padding:18px 20px;background:var(--paper);border-left:2px solid var(--gold);
}
.historia-modal b{display:block;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold3);margin-bottom:8px;}
.historia-modal span{font-size:.92rem;color:var(--muted);}
.modal-grama{margin-top:16px;font-size:.8rem;color:var(--muted);}
.modal-actions{display:flex;flex-wrap:wrap;gap:11px;margin-top:26px;}
.modal-actions .btn{flex:1 1 auto;min-width:150px;}

.cmp-sub{color:var(--muted);font-size:.88rem;margin-bottom:22px;}
.cmp-tabela{overflow-x:auto;}
.cmp-tabela table{width:100%;border-collapse:collapse;min-width:520px;}
.cmp-tabela th,.cmp-tabela td{
  padding:14px 12px;text-align:left;border-bottom:1px solid var(--line);font-size:.9rem;vertical-align:top;
}
.cmp-tabela thead th{background:var(--paper);}
.cmp-tabela th.rot{
  font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold3);
  width:150px;font-weight:600;
}
.cmp-tabela img{width:100%;max-width:150px;aspect-ratio:1/1;object-fit:cover;border:1px solid var(--line);}
.cmp-tabela .nome{font-family:var(--serif);font-size:1.15rem;}
.cmp-tabela .melhor{color:var(--gold3);font-weight:600;}

.auth-box{max-width:440px;}
.auth-brand{text-align:center;margin-bottom:26px;}
.tj-mono{
  width:64px;height:64px;margin:0 auto 16px;border-radius:50%;display:grid;place-items:center;
  background:var(--cacau);color:var(--gold2);font-family:var(--serif);font-size:1.5rem;
  border:1px solid rgba(174,132,56,.45);
}
.auth-brand p{color:var(--muted);font-size:.9rem;margin:8px 0 0;}
.auth-msg{font-size:.86rem;color:#a04a3a;margin-bottom:14px;min-height:1em;}
.google-btn{display:flex;justify-content:center;min-height:44px;}
.auth-note{font-size:.8rem;color:var(--muted);text-align:center;margin-top:16px;}
.auth-ou{display:flex;align-items:center;gap:14px;margin:22px 0 18px;color:var(--muted);font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;}
.auth-ou::before,.auth-ou::after{content:'';flex:1;height:1px;background:var(--line);}
.auth-codigo label{display:block;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold3);margin-bottom:8px;}
.auth-codigo input{width:100%;padding:13px 15px;min-height:48px;border:1px solid var(--line);background:var(--paper);border-radius:var(--raio);margin-bottom:12px;}
.auth-codigo input:focus{outline:none;border-color:var(--gold);background:#fff;}
.auth-codigo .btn{width:100%;}
.auth-config{margin-top:22px;border-top:1px solid var(--line);padding-top:16px;}
.auth-config summary{cursor:pointer;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold3);padding:8px 0;}
.auth-config p{font-size:.82rem;color:var(--muted);margin:10px 0;}
.auth-config input{width:100%;padding:13px 15px;min-height:48px;border:1px solid var(--line);background:var(--paper);margin-bottom:12px;}
.auth-user{display:flex;align-items:center;gap:14px;padding:18px;background:var(--paper);border:1px solid var(--line);}
.auth-user img{width:52px;height:52px;border-radius:50%;object-fit:cover;background:var(--cacau);}
.auth-user b{display:block;font-family:var(--serif);font-size:1.2rem;}
.auth-user small{color:var(--muted);font-size:.82rem;}
.auth-papel{margin:16px 0;font-size:.86rem;color:var(--muted);}
.auth-papel b{color:var(--gold3);}

/* ---------- barra de comparação ---------- */
.cmp-barra{
  position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:940;
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:center;
  background:var(--cacau);color:var(--bone);padding:12px 18px;border:1px solid var(--line2);
  box-shadow:var(--sombra-forte);max-width:calc(100vw - 32px);
  animation:sobeModal .34s cubic-bezier(.16,1,.3,1) both;
}
.cmp-label{font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(250,245,236,.72);}
.cmp-label b{color:var(--gold2);}
.cmp-mini{display:flex;gap:8px;}
.cmp-mini img{width:42px;height:42px;object-fit:cover;border:1px solid var(--line2);}
.cmp-limpar{
  background:none;border:0;color:rgba(250,245,236,.6);font-size:.66rem;letter-spacing:.16em;
  text-transform:uppercase;min-height:44px;padding:0 8px;
}
.cmp-limpar:hover{color:var(--gold2);}

/* ---------- assistente virtual ---------- */
.chat-bolha{
  position:fixed;right:24px;bottom:24px;z-index:950;width:64px;height:64px;border-radius:50%;
  background:var(--cacau);border:1px solid rgba(174,132,56,.5);padding:0;overflow:visible;
  box-shadow:0 16px 40px rgba(43,27,16,.34);transition:transform .35s;
}
.chat-bolha:hover{transform:scale(1.07);}
.chat-avatar{display:block;width:100%;height:100%;border-radius:50%;overflow:hidden;}
.chat-avatar svg{width:100%;height:100%;display:block;}
.chat-avatar.sm{width:40px;height:40px;flex:0 0 40px;}
.chat-ping{
  position:absolute;right:2px;top:2px;width:13px;height:13px;border-radius:50%;
  background:var(--gold);border:2px solid var(--cacau);
}
.chat-ping::after{
  content:'';position:absolute;inset:-4px;border-radius:50%;border:1px solid var(--gold);
  animation:ondinha 2s ease-out infinite;
}
@keyframes ondinha{0%{transform:scale(.6);opacity:.9}100%{transform:scale(1.7);opacity:0}}
.chat-convite{
  position:fixed;right:100px;bottom:34px;z-index:949;max-width:270px;
  background:var(--bone);border:1px solid var(--line);padding:16px 34px 16px 18px;
  box-shadow:var(--sombra);animation:sobeModal .45s cubic-bezier(.16,1,.3,1) both;
}
.chat-convite b{display:block;font-family:var(--serif);font-size:1.05rem;margin-bottom:5px;}
.chat-convite span{font-size:.84rem;color:var(--muted);line-height:1.5;}
.chat-convite::after{
  content:'';position:absolute;right:-8px;bottom:22px;width:14px;height:14px;
  background:var(--bone);border-right:1px solid var(--line);border-top:1px solid var(--line);
  transform:rotate(45deg);
}
.chat-convite-fechar{
  position:absolute;right:6px;top:6px;background:none;border:0;color:var(--muted);
  width:32px;height:32px;font-size:.8rem;
}
.chat-box{
  position:fixed;right:24px;bottom:24px;z-index:951;width:370px;max-width:calc(100vw - 32px);
  height:540px;max-height:calc(100svh - 48px);background:var(--bone);border:1px solid var(--line);
  box-shadow:var(--sombra-forte);display:none;flex-direction:column;overflow:hidden;
}
.chat-box.aberto{display:flex;animation:sobeModal .38s cubic-bezier(.16,1,.3,1) both;}
.chat-head{
  display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--cacau);color:var(--bone);
}
.chat-head b{display:block;font-family:var(--serif);font-size:1.1rem;line-height:1.2;}
.chat-head small{font-size:.66rem;color:rgba(250,245,236,.6);letter-spacing:.08em;}
.chat-head > div{flex:1;}
.chat-fechar{background:none;border:0;color:rgba(250,245,236,.7);width:44px;height:44px;font-size:.95rem;}
.chat-fechar:hover{color:var(--gold2);}
.chat-corpo{flex:1;overflow-y:auto;padding:18px 16px;display:flex;flex-direction:column;gap:12px;}
.msg{max-width:84%;padding:12px 15px;font-size:.9rem;line-height:1.55;border-radius:2px;}
.msg.dela{background:var(--paper);border:1px solid var(--line);align-self:flex-start;}
.msg.minha{background:var(--cacau);color:var(--bone);align-self:flex-end;}
.msg b{color:var(--gold3);}
.msg.minha b{color:var(--gold2);}
.msg a{color:var(--gold3);}
.digitando{display:flex;gap:5px;align-self:flex-start;padding:14px 16px;background:var(--paper);border:1px solid var(--line);}
.digitando i{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:pontinho 1.3s ease-in-out infinite;}
.digitando i:nth-child(2){animation-delay:.18s}
.digitando i:nth-child(3){animation-delay:.36s}
@keyframes pontinho{0%,60%,100%{opacity:.28;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}
.chat-peca{display:flex;gap:11px;align-items:center;background:var(--paper);border:1px solid var(--line);padding:9px;margin-top:8px;}
.chat-peca img{width:52px;height:52px;object-fit:cover;flex:0 0 52px;}
.chat-peca b{display:block;font-family:var(--serif);font-size:.98rem;color:var(--ink);}
.chat-peca small{color:var(--gold3);font-size:.82rem;}
.chat-chips{display:flex;flex-wrap:wrap;gap:7px;padding:0 16px 12px;}
.chat-chips button{
  border:1px solid var(--line);background:var(--paper);border-radius:40px;padding:8px 14px;
  font-size:.72rem;min-height:38px;transition:border-color .3s,color .3s,background .3s;
}
.chat-chips button:hover{border-color:var(--gold);color:var(--gold3);background:#fff;}
.chat-form{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line);background:var(--paper);}
.chat-form input{flex:1;border:1px solid var(--line);background:var(--bone);padding:11px 14px;min-height:46px;border-radius:40px;}
.chat-form input:focus{outline:none;border-color:var(--gold);}
.chat-form button{
  width:46px;height:46px;flex:0 0 46px;border-radius:50%;border:0;background:var(--gold);color:#2b1b10;font-size:.95rem;
}

/* ---------- botões flutuantes ---------- */
.whats-float{
  position:fixed;left:24px;bottom:24px;z-index:940;width:56px;height:56px;border-radius:50%;
  background:#25d366;color:#fff;display:grid;place-items:center;box-shadow:0 14px 34px rgba(37,211,102,.4);
  transition:transform .35s;
}
.whats-float:hover{transform:scale(1.08);}
.whats-float svg{width:32px;height:32px;}
.som-toggle{
  position:fixed;left:24px;bottom:92px;z-index:940;display:flex;align-items:center;gap:8px;
  min-height:44px;padding:10px 16px;border-radius:40px;background:var(--cacau);color:var(--gold2);
  border:1px solid var(--line2);font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;
  transition:border-color .3s,background .3s;
}
.som-toggle:hover{border-color:var(--gold);}
.som-toggle[aria-pressed=true]{background:var(--gold);color:#2b1b10;border-color:var(--gold);}
.som-ico{font-size:.9rem;}
.back-top{
  position:fixed;right:24px;bottom:100px;z-index:939;width:46px;height:46px;border-radius:50%;
  background:var(--cacau);color:var(--gold2);border:1px solid var(--line2);
  opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s,transform .35s;
}
.back-top.vis{opacity:1;visibility:visible;}
.back-top:hover{transform:translateY(-3px);border-color:var(--gold);}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:96px;transform:translateX(-50%);z-index:9993;
  background:var(--cacau);color:var(--gold2);padding:14px 24px;border:1px solid var(--line2);
  font-size:.82rem;box-shadow:var(--sombra-forte);max-width:calc(100vw - 40px);text-align:center;
  animation:sobeModal .3s cubic-bezier(.16,1,.3,1) both;
}

/* ---------- logotipo real da marca ---------- */
.logo-img{width:46px;height:46px;flex:0 0 46px;border-radius:50%;object-fit:cover;border:1px solid rgba(174,132,56,.5);}
.pre-logo{width:96px;height:96px;border-radius:50%;object-fit:cover;border:1px solid rgba(174,132,56,.45);animation:pulsa 2s ease-in-out infinite;}
.portao-logo{width:116px;height:116px;border-radius:50%;object-fit:cover;margin:0 auto 26px;border:1px solid rgba(232,207,160,.5);box-shadow:0 0 60px rgba(174,132,56,.45);}
.foot-logo{width:64px;height:64px;border-radius:50%;object-fit:cover;margin-bottom:20px;border:1px solid rgba(174,132,56,.4);}
.auth-logo{width:64px;height:64px;border-radius:50%;object-fit:cover;margin:0 auto 16px;display:block;border:1px solid rgba(174,132,56,.4);}

/* ---------- consórcio ---------- */
.consorcio{background:linear-gradient(160deg,var(--cacau3) 0%,var(--cacau) 62%,var(--cacau2) 100%);color:var(--bone);overflow:hidden;}
.consorcio h2{color:var(--bone);}
.consorcio h2 em{color:var(--gold2);}
.consorcio .rule{background:var(--gold);}
.consorcio .rule::before{background:var(--cacau);}
.consorcio-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:64px;align-items:center;position:relative;z-index:2;}
.consorcio-texto p{color:rgba(251,246,238,.76);max-width:52ch;}
.consorcio-lista{list-style:none;padding:0;margin:32px 0 34px;display:flex;gap:34px;flex-wrap:wrap;}
.consorcio-lista li{display:flex;flex-direction:column;gap:2px;}
.consorcio-lista b{font-family:var(--serif);font-size:2.4rem;line-height:1;color:var(--gold2);}
.consorcio-lista span{font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(251,246,238,.62);}
.consorcio-nota{margin:16px 0 0;font-size:.76rem;color:rgba(251,246,238,.52);}
.consorcio-cartao{
  background:linear-gradient(140deg,#c9a96a 0%,var(--gold) 55%,#8f6b26 100%);
  color:#2b1b10;padding:34px 32px 28px;border-radius:4px;
  box-shadow:0 30px 70px rgba(26,15,7,.5);position:relative;overflow:hidden;
}
.consorcio-cartao::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,transparent 38%,rgba(255,255,255,.3) 50%,transparent 62%);
}
.cc-topo{display:flex;align-items:center;gap:12px;margin-bottom:30px;position:relative;z-index:2;}
.cc-topo img{width:42px;height:42px;border-radius:50%;object-fit:cover;}
.cc-topo span{font-size:.6rem;letter-spacing:.28em;text-transform:uppercase;font-weight:600;}
.cc-valor{position:relative;z-index:2;}
.cc-valor small{display:block;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;opacity:.74;}
.cc-valor b{font-family:var(--serif);font-size:2.9rem;line-height:1.15;display:block;}
.cc-parcelas{display:flex;gap:6px;flex-wrap:wrap;margin:26px 0 18px;position:relative;z-index:2;}
.cc-p{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:.7rem;font-weight:600;border:1px solid rgba(43,27,16,.35);}
.cc-p.on{background:#2b1b10;color:var(--gold2);border-color:#2b1b10;}
.cc-rodape{position:relative;z-index:2;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;border-top:1px solid rgba(43,27,16,.3);padding-top:14px;}

/* =========================================================
   SIMETRIA — tudo equilibrado no mesmo eixo vertical
   ========================================================= */

/* todo título de seção nasce centrado */
.section-title{margin-left:auto;margin-right:auto;text-align:center;}
.section-title .rule{margin-left:auto;margin-right:auto;}
.section-title p{margin-left:auto;margin-right:auto;}
.section-title .chapter-num,.section-title .kicker{text-align:center;}

/* capa: duas metades exatamente iguais, cada uma centrada em si */
.hero-inner{grid-template-columns:1fr 1fr;gap:60px;}
.hero-text{text-align:center;display:flex;flex-direction:column;align-items:center;}
.hero-text h1{margin-left:auto;margin-right:auto;}
.lead{margin-left:auto;margin-right:auto;}
.hero-btns{justify-content:center;}
.hero-stats{justify-content:center;gap:40px;width:100%;}
.stat{text-align:center;}

/* a joalheria */
#joalheria .section-title{margin-bottom:58px;}
.sobre-grid{grid-template-columns:1fr 1fr;gap:58px;align-items:center;max-width:1080px;padding:0;}
.sobre-foto{max-width:420px;margin:0 auto;width:100%;}
.sobre-content{text-align:center;}
.sobre-lista{margin-top:0;}
.sobre-lista li{flex-direction:column;align-items:center;gap:5px;text-align:center;}
.sobre-lista span{text-align:center;}
.sobre-nota{color:var(--muted);font-size:.94rem;margin:26px 0 0;}
.sobre-acoes{justify-content:center;margin-top:52px;}

/* vitrine: filtros centrados */
.filtro-linha{justify-content:center;}
.flabel{margin-right:0;width:100%;text-align:center;margin-bottom:2px;}
.filtro-info{text-align:center;}
.colecao-share{flex-direction:column;text-align:center;align-items:center;gap:22px;}
.colecao-share span{margin:0 auto;}
.colecao-share-btns{justify-content:center;}

/* consórcio */
.consorcio .section-title{margin-bottom:54px;}
.consorcio-grid{grid-template-columns:1fr 1fr;gap:58px;align-items:center;}
.consorcio-texto{text-align:center;}
.consorcio-lista{justify-content:center;margin-top:0;}
.consorcio-cartao{max-width:400px;margin:0 auto;width:100%;}

/* contato */
.contato-grid{grid-template-columns:1fr 1fr;gap:52px;align-items:start;}
.contato-item{flex-direction:column;align-items:center;text-align:center;gap:12px;padding:24px 0;}
.contato-item .icone{margin:0 auto;}
.selo-garantia{text-align:center;border-left:0;border-top:2px solid var(--gold);}
#leadForm label{text-align:center;}
#leadForm h3,#leadForm .sub{text-align:center;}

/* rodapé */
footer{text-align:center;}
.footer-inner{flex-direction:column;align-items:center;gap:44px;}
.assinatura{display:flex;flex-direction:column;align-items:center;}
.foot-logo{margin:0 auto 18px;}
.assinatura .rule{background:rgba(174,132,56,.7);}
.assinatura .rule::before{background:var(--cacau);color:var(--gold2);}
.footer-cols{display:flex;justify-content:center;gap:76px;flex-wrap:wrap;text-align:center;}
.social{align-items:center;}
.social a:hover{padding-left:0;letter-spacing:.06em;}
.base{justify-content:center;gap:8px 26px;text-align:center;}

/* =========================================================
   EFEITOS — brilho, magnetismo e revelação
   ========================================================= */

/* varredura de luz nos botões, como reflexo em metal polido */
.btn::after,#leadForm button[type=submit]::after{
  content:'';position:absolute;top:0;left:-130%;width:60%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.42),transparent);
  transform:skewX(-18deg);pointer-events:none;
}
.btn:hover::after,#leadForm button[type=submit]:hover::after{animation:varredura .9s ease;}
@keyframes varredura{to{left:130%}}
#leadForm button[type=submit]{position:relative;overflow:hidden;}

/* régua dourada que se desenha ao aparecer */
.rule{transform:scaleX(0);transform-origin:center;transition:transform 1.1s cubic-bezier(.16,1,.3,1) .2s;}
.reveal.vis .rule,.rule.desenhada{transform:scaleX(1);}
.section-title .rule{transform-origin:center;}
/* o ornamento ✦ entra por opacidade: se ele acompanhasse o scaleX da régua,
   apareceria achatado no meio da animação */
.rule::before{opacity:0;transition:opacity .5s ease .95s;}
.reveal.vis .rule::before,.rule.desenhada::before{opacity:1;}

/* título revelado palavra a palavra.
   O padding/margin negativo dá folga dentro do overflow: sem ele a caixa
   corta o acento em cima e a perna do "ç" embaixo. */
.palavra{
  display:inline-block;overflow:hidden;vertical-align:top;
  padding:.14em .03em .2em;margin:-.14em -.03em -.2em;
}
.palavra > i{
  display:inline-block;font-style:inherit;transform:translateY(105%);
  /* o leve desfoque que se resolve dá a impressão de foco sendo acertado,
     como quem aproxima a peça do olho até ela ficar nítida */
  filter:blur(7px);opacity:.35;
  transition:transform .95s cubic-bezier(.16,1,.3,1),
             filter .85s cubic-bezier(.16,1,.3,1),
             opacity .7s ease;
}
.reveal.vis .palavra > i{transform:translateY(0);filter:blur(0);opacity:1;}

/* brilho que segue o ponteiro dentro dos cards */
.brilho-card{
  position:absolute;inset:0;z-index:4;pointer-events:none;opacity:0;
  transition:opacity .45s ease;mix-blend-mode:soft-light;
  background:radial-gradient(320px circle at var(--bx,50%) var(--by,50%),rgba(255,255,255,.55),transparent 62%);
}
.card-joia:hover .brilho-card,.card-colecao:hover .brilho-card{opacity:1;}
.card-joia,.card-colecao,.card-cap,.step,.ferramenta,.card-depo{position:relative;}

/* a faixa rolante para quando o ponteiro encosta */
.marquee:hover .marquee-content{animation-play-state:paused;}

/* capa: a foto respira devagar */
.hero-visual .frame img{animation:respira 26s ease-in-out infinite alternate;}
@keyframes respira{from{transform:scale(1.02)}to{transform:scale(1.11)}}

/* faíscas de ouro no lugar das bolinhas */
.particles i{
  position:absolute;display:block;background:var(--gold);
  clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);
  animation:cintilaSobe linear infinite;
}
@keyframes cintilaSobe{
  0%{transform:translateY(0) rotate(0deg) scale(.4);opacity:0}
  10%{opacity:.85}
  50%{transform:translateY(-55vh) rotate(180deg) scale(1);opacity:.5}
  100%{transform:translateY(-115vh) rotate(360deg) scale(.3);opacity:0}
}
.trail{
  background:none;width:8px;height:8px;
  clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);
  background-color:var(--gold2);
}

/* anel de progresso no botão de voltar ao topo */
.back-top{overflow:visible;}
.back-top svg{position:absolute;inset:-5px;width:calc(100% + 10px);height:calc(100% + 10px);transform:rotate(-90deg);pointer-events:none;}
.back-top svg circle{fill:none;stroke-width:1.5;}
.back-top svg .trilho{stroke:rgba(240,217,168,.18);}
.back-top svg .arco{stroke:var(--gold);stroke-linecap:round;transition:stroke-dashoffset .12s linear;}

/* foco visível e elegante */
:focus-visible{outline:2px solid var(--gold);outline-offset:4px;border-radius:2px;}

/* selo da capa gira devagar */
.seal{animation:flutuaSelo 7s ease-in-out infinite;}
@keyframes flutuaSelo{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}

@media (hover:none),(prefers-reduced-motion:reduce){
  .hero-visual .frame img{animation:none;}
  .seal{animation:none;}
  .brilho-card{display:none;}
  .btn::after,#leadForm button[type=submit]::after{display:none;}
}

/* =========================================================
   PÁGINA DE NOVIDADES (novidades.html)
   ========================================================= */
.pagina-novidades{background:var(--bone);}

.capa-novidades{
  /* Esta é uma <header>, e a regra `header{}` da home traz min-height:100svh
     e display:flex. Sem desligar os dois aqui, a capa desta página viraria
     uma tela cheia com o conteúdo esticado no meio. */
  min-height:auto;display:block;
  position:relative;overflow:hidden;
  padding:calc(var(--resp) + 74px) 0 var(--resp);
  background:linear-gradient(165deg,var(--cacau3) 0%,var(--cacau) 62%,var(--cacau2) 100%);
  color:var(--bone);border-bottom:1px solid rgba(174,132,56,.32);
}
/* O título da capa de novidades é <h1> por semântica, mas mantém o tamanho
   de h2: aquela faixa é compacta e o corpo de h1 estouraria o desenho. */
.capa-novidades h1,
.capa-novidades h2{color:var(--bone);font-size:clamp(2.2rem,4.6vw,3.7rem);}
.capa-novidades .section-title p{color:rgba(251,246,238,.74);}
.capa-novidades .rule{background:var(--gold);}
.capa-novidades .rule::before{background:var(--cacau);}
.capa-novidades .center{position:relative;z-index:2;}

/* ---- stories ---- */
.stories-band{background:var(--paper);}
.stories-caixa{
  display:flex;align-items:center;gap:38px;flex-wrap:wrap;justify-content:center;
  max-width:940px;margin:0 auto;text-align:center;
  background:var(--bone);border:1px solid var(--line);padding:44px 40px;
  box-shadow:var(--sombra);
}
/* o anel colorido é a marca visual do story: aqui em ouro, girando devagar */
.stories-anel{
  flex:0 0 108px;width:108px;height:108px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(var(--gold),#e6c78a,var(--gold2),var(--gold),#8f6b26,var(--gold));
  padding:4px;position:relative;
}
.stories-anel::before{
  content:'';position:absolute;inset:4px;border-radius:50%;background:var(--bone);
}
.stories-anel img{
  position:relative;z-index:2;width:86px;height:86px;border-radius:50%;object-fit:cover;
}
.stories-texto{flex:1 1 380px;min-width:280px;}
.stories-texto h3{margin:6px 0 14px;}
.stories-texto p{color:var(--muted);font-size:.96rem;}
.stories-botoes{display:flex;flex-wrap:wrap;gap:13px;justify-content:center;margin-top:24px;}
.stories-botoes .btn-outline{border-color:var(--cacau);color:var(--cacau);}
.stories-botoes .btn-outline:hover{background:var(--cacau);color:var(--gold2);}
.stories-nota{margin:18px 0 0;font-size:.8rem;color:var(--muted);}

/* ---- feed de publicações ---- */
.feed-band{background:var(--bone);}

/* =========================================================
   JANELA DO INSTAGRAM
   O feed é o Instagram de verdade, em iframe. A moldura deixa
   isso explícito: barra de aplicativo em cima, linha do perfil
   embaixo dela, e as publicações dentro. Sem inventar número
   nenhum — quem mostra seguidor e curtida é o próprio embed.
   ========================================================= */
.ig-janela{
  max-width:1180px;margin:56px auto 0;
  background:var(--paper);border:1px solid var(--line);
  border-radius:14px;overflow:hidden;
  box-shadow:0 26px 70px rgba(43,27,16,.13),0 2px 6px rgba(43,27,16,.06);
}
.ig-barra{
  display:flex;align-items:center;gap:14px;
  padding:11px 16px;background:var(--cacau);border-bottom:1px solid var(--line2);
}
.ig-pontos{display:flex;gap:6px;flex:0 0 auto;}
.ig-pontos i{width:9px;height:9px;border-radius:50%;background:rgba(240,217,168,.32);}
.ig-pontos i:first-child{background:rgba(240,217,168,.55);}
.ig-url{
  flex:1;text-align:center;font-size:.62rem;letter-spacing:.13em;
  color:var(--gold2);opacity:.72;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ig-perfil{
  display:flex;align-items:center;gap:14px;
  padding:16px 20px;border-bottom:1px solid var(--line);background:var(--bone);
}
.ig-avatar{
  flex:0 0 auto;width:56px;height:56px;border-radius:50%;padding:2px;display:block;
  background:conic-gradient(from 200deg,var(--gold),var(--caramelo),var(--gold2),var(--gold));
  transition:transform .3s cubic-bezier(.2,.7,.3,1);
}
.ig-avatar:hover{transform:scale(1.05);}
.ig-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;border:2px solid var(--bone);}
.ig-quem{flex:1;min-width:0;}
.ig-quem b{display:block;font-size:.95rem;color:var(--ink);line-height:1.25;}
.ig-quem span{
  display:block;font-size:.76rem;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.ig-seguir{
  flex:0 0 auto;text-decoration:none;
  padding:9px 20px;border-radius:8px;background:var(--gold);color:#2b1b10;
  font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  transition:background .3s,transform .3s;
}
.ig-seguir:hover{background:var(--gold3);color:var(--gold2);transform:translateY(-2px);}

.feed-grid{
  display:flex;flex-wrap:wrap;justify-content:center;gap:2px;
  padding:2px;align-items:flex-start;background:var(--line);
}
/* Célula do feed, não cartão solto: encostadas umas nas outras, com o fio
   de 2px do fundo fazendo a grade — é assim que o Instagram desenha. */
.feed-item{
  flex:1 1 calc((100% - 4px)/3);min-width:280px;
  background:var(--bone);border:0;border-radius:0;
  overflow:hidden;position:relative;
  transition:box-shadow .35s,z-index 0s;
}
.feed-item:hover{box-shadow:0 0 0 2px var(--gold);z-index:2;}
/* O embed traz o próprio cabeçalho com "telatin.joias" e o botão Ver perfil.
   Como a janela já tem a linha do perfil em cima, esse cabeçalho repetido é
   puxado para fora do quadro — sobra a mídia, que é como a grade do perfil
   aparece no aplicativo.

   O corte é um recuo fixo sobre um iframe de outro domínio: se um dia o
   Instagram mudar a altura do cabeçalho dele, é só ajustar --ig-cabecalho. */
/* QUADRADO, como a grade de perfil do Instagram.
   Nenhuma altura fixa serviria: a publicação pode ser foto quadrada, 4:5 ou
   reel 9:16, e o embed muda de altura conforme o caso — o rodapé dele
   aparecia numas células e sumia noutras. Recortando em quadrado, a grade
   fica igual sempre, e o link fica na nossa faixa embaixo.

   O recuo do topo tira o cabeçalho repetido do embed. Se o Instagram mudar
   a altura desse cabeçalho, ajuste --ig-cabecalho. */
.feed-item{--ig-cabecalho:54px;}
.ig-media{
  position:relative;width:100%;aspect-ratio:1;overflow:hidden;
  background:var(--paper);
}
.ig-media iframe{
  position:absolute;left:0;right:0;width:100%;border:0;
  top:calc(var(--ig-cabecalho) * -1);
  height:calc(100% + var(--ig-cabecalho) + 320px);
}
/* fala baixo: é rodapé de célula, não botão de campanha */
.feed-abrir{
  display:block;padding:11px 14px;text-decoration:none;
  font-size:.78rem;color:var(--gold3);background:var(--bone);
  border-top:1px solid var(--line);
  transition:background .3s,color .3s;
}
.feed-abrir::before{content:'↗';margin-right:7px;opacity:.6;font-size:.72rem;}
.feed-abrir:hover{background:var(--cacau);color:var(--gold2);}
/* o botão "ver mais" vive dentro da janela: fica na base, como a barra
   de carregar mais do próprio aplicativo */
.ig-janela .feed-mais{
  margin:0;width:100%;border-radius:0;border:0;
  border-top:1px solid var(--line);
}

/* A amostra da página inicial: mais estreita que a da página de novidades,
   porque ali ela é um convite, não o assunto principal.
   Grade de 3 colunas de verdade — com flex e min-width, as três quebravam
   para duas linhas assim que a janela estreitava, e a última esticava
   sozinha na largura toda. */
.ig-amostra{max-width:900px;margin-top:52px;}
.ig-amostra .feed-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;}
.ig-amostra .feed-item{min-width:0;}
@media (max-width:700px){
  .ig-amostra .feed-grid{grid-template-columns:1fr;}
}
.ig-todas{
  display:block;text-align:center;padding:16px;text-decoration:none;
  font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--gold3);background:var(--bone);border-top:1px solid var(--line);
  transition:background .3s,color .3s;
}
.ig-todas::after{content:' →';opacity:.6;}
.ig-todas:hover{background:var(--cacau);color:var(--gold2);}
.feed-carregando{
  flex:1 1 100%;text-align:center;color:var(--muted);font-size:.95rem;padding:40px 0;
}
.feed-mais{display:block;margin:34px auto 0;}

/* =========================================================
   FAIXA DO CATÁLOGO COMPLETO
   ========================================================= */
.catalogo-band{background:var(--paper);}
.cat-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:26px 22px;margin-top:52px;}
.cat-link{
  flex:0 1 auto;width:132px;display:flex;flex-direction:column;align-items:center;gap:15px;
  text-decoration:none;position:relative;
  transition:transform .35s cubic-bezier(.2,.7,.3,1);
}
/* o anel de destaque: mesmo desenho da bolinha de story do Instagram,
   mas com o ouro da marca em vez do degrade roxo.
   O fio branco e a BORDA DA PROPRIA FOTO — assim ele nunca sai do lugar
   nem corta a imagem, por mais que a foto de origem mude de proporcao. */
.cat-capa{
  width:108px;height:108px;flex:0 0 auto;
  border-radius:50%;padding:3px;
  background:conic-gradient(from 200deg,var(--gold),var(--caramelo),var(--gold2),var(--gold));
  display:block;
  transition:transform .35s cubic-bezier(.2,.7,.3,1),box-shadow .35s;
}
.cat-capa img{
  display:block;width:100%;height:100%;aspect-ratio:1;
  border-radius:50%;border:2px solid var(--paper);
  object-fit:cover;object-position:center;
}
.cat-link:hover{transform:translateY(-4px);}
.cat-link:hover .cat-capa{transform:scale(1.04);box-shadow:0 10px 26px rgba(174,132,56,.34);}
.cat-nome{font-family:var(--serif);font-size:1.16rem;color:var(--ink);line-height:1.1;}
.cat-qtd{font-size:.58rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold3);}
.cat-acoes{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin-top:46px;}
.cat-acoes .btn-outline{border-color:var(--cacau);color:var(--cacau);}
.cat-acoes .btn-outline:hover{background:var(--cacau);color:var(--gold2);}
.cat-nota{max-width:62ch;margin:26px auto 0;text-align:center;font-size:.82rem;color:var(--muted);}

/* foto real da Carla por cima do monograma desenhado */
.convite-foto{
  float:left;width:46px;height:46px;margin:2px 12px 4px 0;border-radius:50%;
  overflow:hidden;border:1px solid rgba(174,132,56,.5);
}
.convite-foto img{width:100%;height:100%;object-fit:cover;object-position:center 22%;}
.chat-avatar{position:relative;}
.chat-foto{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:center 22%;border-radius:50%;
}

/* =========================================================
   REQUINTE — os detalhes que fazem parecer caro
   ========================================================= */

/* Quebra de linha equilibrada: o navegador distribui as palavras para as
   linhas ficarem do mesmo tamanho, em vez de deixar uma órfã no fim. */
h1,h2,h3,h4,.lead,.section-title p,.card-cap p,.step p,.colecao-nota{text-wrap:balance;}

/* destaque em itálico ganha degradê de ouro polido em vez de cor chapada.
   O degradê é mais largo que o texto (200%) para que a varredura de luz
   logo abaixo tenha para onde correr. */
h1 em,h2 em,h3 em,h4 em{
  background:linear-gradient(100deg,var(--gold3) 0%,var(--gold) 46%,#d9b463 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}

/* =========================================================
   LUZ QUE ATRAVESSA O OURO DO TÍTULO
   Quando o título entra na tela, uma faixa clara corre por dentro
   das letras — é o reflexo que o ouro polido dá quando a peça gira
   na mão. Só acontece uma vez, na entrada.
   ========================================================= */
.reveal.vis em{
  background-image:linear-gradient(
    100deg,
    var(--gold3) 0%, var(--gold) 30%,
    #fff3d4 46%, #ffffff 50%, #fff3d4 54%,
    var(--gold) 70%, var(--gold3) 100%
  );
  background-size:280% 100%;
  animation:brilhoOuro 2.1s cubic-bezier(.42,0,.2,1) .35s both;
}
@keyframes brilhoOuro{
  from{background-position:118% 0;}
  to  {background-position:-18% 0;}
}
.curadoria em,.atelie em,.consorcio em,.cta-band em,.portao em{
  background:linear-gradient(100deg,var(--gold) 0%,var(--gold2) 50%,var(--gold) 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}

/* fio de ouro no alto de cada seção escura + vinheta que fecha as bordas */
.curadoria,.atelie,.consorcio,.cta-band{
  border-top:1px solid rgba(174,132,56,.32);
  border-bottom:1px solid rgba(174,132,56,.32);
}
.curadoria::after,.atelie::after,.consorcio::after,.cta-band::after{
  content:'';position:absolute;inset:0;pointer-events:none;z-index:1;
  box-shadow:inset 0 0 190px rgba(15,8,3,.6);
}
/* o :not() é obrigatório: a marca d'água e a aurora são posicionadas em
   absoluto e forçar position:relative nelas quebraria o posicionamento */
.curadoria > *:not(.marca-dagua):not(.aurora),
.atelie > *:not(.marca-dagua):not(.aurora),
.consorcio > *:not(.marca-dagua):not(.aurora),
.cta-band > *:not(.marca-dagua):not(.aurora){position:relative;z-index:2;}

/* botões com brilho interno: a borda de cima clareia, a de baixo fecha —
   é o que dá a impressão de metal com volume, e não de retângulo colorido */
.btn-gold,#leadForm button[type=submit],.col-filtrar{
  box-shadow:0 14px 34px rgba(174,132,56,.3),
             inset 0 1px 0 rgba(255,255,255,.5),
             inset 0 -1px 0 rgba(85,58,12,.3);
}
.btn-gold:hover,#leadForm button[type=submit]:hover{
  box-shadow:0 20px 46px rgba(174,132,56,.45),
             inset 0 1px 0 rgba(255,255,255,.6),
             inset 0 -1px 0 rgba(85,58,12,.3);
}

/* fio de ouro no card quando o ponteiro chega */
.card-joia:hover{box-shadow:var(--sombra),0 0 0 1px rgba(174,132,56,.55);}
.card-cap:hover,.step:hover{box-shadow:var(--sombra),0 0 0 1px rgba(174,132,56,.35);}

/* barra de rolagem na cor da casa */
*{scrollbar-width:thin;scrollbar-color:var(--gold) transparent;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-track{background:rgba(43,27,16,.07);}
::-webkit-scrollbar-thumb{
  background:linear-gradient(var(--gold),var(--gold3));
  border-radius:10px;border:2px solid transparent;background-clip:padding-box;
}
::-webkit-scrollbar-thumb:hover{background:linear-gradient(var(--gold2),var(--gold));background-clip:padding-box;}

/* ---------- Carla IA: a conversa também precisa parecer joalheria ---------- */
.chat-box{border:1px solid rgba(174,132,56,.34);border-radius:4px;}
.chat-head{
  background:linear-gradient(120deg,var(--cacau2) 0%,var(--cacau) 100%);
  border-bottom:1px solid rgba(174,132,56,.4);padding:16px;
}
.chat-head b{font-size:1.15rem;letter-spacing:.01em;}
.chat-badge{
  font-family:var(--sans);font-size:.48rem;font-weight:700;letter-spacing:.18em;
  background:linear-gradient(135deg,var(--gold),#d9b463);color:#2b1b10;
  padding:3px 6px 2px;border-radius:3px;vertical-align:middle;margin-left:7px;
}
.chat-online{
  display:inline-block;width:6px;height:6px;border-radius:50%;background:#5fd08a;
  margin-right:7px;box-shadow:0 0 0 2px rgba(95,208,138,.22);
  animation:pulsaOnline 2.6s ease-in-out infinite;
}
@keyframes pulsaOnline{0%,100%{opacity:1}50%{opacity:.45}}
.chat-avatar{box-shadow:0 0 0 2px rgba(174,132,56,.55);}
.chat-corpo{background:linear-gradient(180deg,var(--bone),var(--paper));}
.msg{border-radius:16px;box-shadow:0 2px 10px rgba(43,27,16,.06);}
.msg.dela{border-top-left-radius:4px;}
.msg.minha{
  border-bottom-right-radius:4px;
  background:linear-gradient(135deg,var(--cacau2),var(--cacau));
  box-shadow:0 6px 18px rgba(43,27,16,.28);
}
.chat-peca{border-radius:14px;transition:border-color .3s,transform .3s;cursor:pointer;}
.chat-peca:hover{border-color:var(--gold);transform:translateX(3px);}
.chat-chips button{border-radius:40px;transition:border-color .3s,color .3s,background .3s,transform .3s;}
.chat-chips button:hover{transform:translateY(-1px);}
.chat-form button{box-shadow:0 6px 18px rgba(174,132,56,.35),inset 0 1px 0 rgba(255,255,255,.45);}
.chat-bolha{box-shadow:0 16px 40px rgba(43,27,16,.4),0 0 0 1px rgba(174,132,56,.5);}
.chat-convite{border-radius:14px;border-color:rgba(174,132,56,.4);}
.chat-convite b{color:var(--ink);}

@media (prefers-reduced-motion:reduce){
  .chat-online{animation:none;}
}

/* =========================================================
   GAVETA DO MENU — o que fica ao lado dela
   A gaveta ocupa parte da tela, não a tela toda. Sem escurecer o
   resto e sem travar a rolagem, a página corria por trás da fresta
   e o menu parecia meio transparente ao arrastar.
   ========================================================= */

/* O escurecido é um ::before do <body>, e não da gaveta: a gaveta rola por
   dentro (overflow), o que recortaria qualquer filho posicionado fora dela.
   Clicar no escurecido tem o <body> como alvo — é assim que o JavaScript
   sabe que foi um clique fora e fecha o menu. */
body::before{
  content:'';position:fixed;inset:0;z-index:940;
  background:rgba(26,15,7,.62);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  opacity:0;pointer-events:none;transition:opacity .4s ease;
}
body.menu-aberto::before{opacity:1;pointer-events:auto;}

/* A gaveta é filha do #navbar, que tem z-index e portanto cria um contexto
   de empilhamento próprio: o z-index do menu só vale DENTRO da barra. Para
   o menu ficar acima do escurecido, quem precisa subir é a barra inteira —
   e ela deve subir mesmo, porque é lá que está o botão de fechar. */
body.menu-aberto #navbar{z-index:970;}

/* Menu comprido em tela baixa precisa rolar por dentro, senão os últimos
   itens ficam inalcançáveis quando a rolagem da página está travada. */
.menu{overscroll-behavior:contain;}

/* Enquanto a gaveta está aberta, os botões flutuantes saem da frente:
   eles têm z-index maior que o menu e apareciam por cima dele. */
body.menu-aberto .whats-float,
body.menu-aberto .chat-bolha,
body.menu-aberto .chat-convite,
body.menu-aberto .som-toggle,
body.menu-aberto .back-top{
  /* visibility além da opacidade porque o balão da Carla entra com
     animação, e animação vence declaração normal: só com opacity ele
     reapareceria por cima do escurecido. */
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .3s ease;
}

/* =========================================================
   RESPONSIVO
   ========================================================= */
@media (max-width:1180px){
  .card-joia{flex:0 1 calc((100% - 26px - 26px)/3);}
  .step{flex:0 1 calc((100% - 26px)/2);}
}
/* Logo acima do ponto em que a gaveta assume, o menu cabe mas fica justo:
   aperta o respiro e a fonte em vez de deixar os itens se tocarem. */
@media (min-width:1201px) and (max-width:1400px){
  #navbar{padding-left:26px;padding-right:26px;gap:16px;}
  .menu{gap:17px;}
  .menu a{font-size:.71rem;letter-spacing:.1em;}
}
/* A BARRA vira menu-gaveta antes do resto do layout: são nove itens, e o
   menu inteiro precisa de ~1170px para caber ao lado do logotipo. Abaixo
   disso ele transbordava. As regras de layout continuam em 1024px, que é
   onde elas realmente precisam mudar. */
@media (max-width:1200px){
  .menu{
    position:fixed;inset:0 0 0 auto;width:min(340px,84vw);flex-direction:column;
    align-items:flex-start;justify-content:center;gap:26px;padding:40px;
    background:var(--cacau);transform:translateX(100%);transition:transform .45s cubic-bezier(.5,0,.2,1);
    /* acima dos flutuantes (o maior é a bolinha da Carla, em 950) */
    z-index:960;
    /* rola por dentro quando não couber, com folga para o polegar embaixo */
    overflow-y:auto;padding-bottom:64px;
  }
  .menu.aberto{transform:translateX(0);}
  .menu a{color:var(--bone);font-size:.92rem;letter-spacing:.14em;}
  .menu a.cta{background:var(--gold);color:#2b1b10;}
  .tj-entrar{color:var(--bone);border-color:var(--line2);}
  .burger{display:flex;z-index:930;position:relative;}
  #navbar.fixo .burger span{background:var(--ink);}
  .menu.aberto ~ .burger span{background:var(--bone);}
}
@media (max-width:1024px){
  :root{--resp:84px;}
  .hero-inner{grid-template-columns:1fr;gap:52px;}
  .hero-visual{max-width:480px;margin:0 auto;width:100%;}
  /* empilhado, a capa fica alta e o "Explore" cairia em cima da foto */
  .scroll-hint{display:none;}
  .seal{right:-10px;top:-10px;width:86px;height:86px;}
  .sobre-grid{grid-template-columns:1fr;gap:52px;}
  .sobre-foto{max-width:460px;}
  .contato-grid{grid-template-columns:1fr;gap:44px;}
  /* o desconto tem que bater com o gap de CADA grade: a .grid-3 usa 28px,
     as outras 26px. Errar 2px aqui joga o segundo card para a linha de baixo. */
  .card-cap{flex:0 1 calc((100% - 28px)/2);}
  .card-depo,.ferramenta{flex:0 1 calc((100% - 26px)/2);}
  .card-colecao{flex:0 1 calc((100% - 24px)/2);}
  .consorcio-grid{grid-template-columns:1fr;gap:44px;}
  .consorcio-cartao{max-width:420px;}
  .feed-item{flex:1 1 calc((100% - 2px)/2);}
  /* em tela estreita o botão de som vira só o ícone: escrito por extenso ele
     cobria duas linhas de texto das seções escuras */
  .som-toggle{left:16px;bottom:78px;width:44px;height:44px;padding:0;border-radius:50%;justify-content:center;}
  .som-toggle #soundLabel{display:none;}
}
@media (max-width:760px){
  :root{--resp:70px;}
  body{font-size:16px;}
  .center,.curadoria-inner,.atelie-inner,.processo-inner,.sobre-grid,.filtros,.grid-joias,.admin-panel{padding-left:22px;padding-right:22px;}
  #navbar{padding:14px 22px;}
  #navbar.fixo{padding:10px 22px;}
  header{padding:126px 22px 70px;}
  footer{padding:60px 22px 28px;}
  .cta-band{padding:82px 22px;}
  .hero-stats{gap:28px;}
  .stat b{font-size:2rem;}
  .card-joia,.card-cap,.card-depo,.ferramenta,.step,.card-colecao{flex:0 1 100%;max-width:420px;}
  .feed-item{flex:1 1 100%;max-width:none;}
  .stories-caixa{padding:32px 24px;gap:26px;}
  .capa-novidades{padding-top:calc(var(--resp) + 64px);}
  .consorcio-lista{gap:24px;}
  .consorcio-lista b{font-size:2rem;}
  .cc-valor b{font-size:2.3rem;}
  .adm-grid{grid-template-columns:1fr;}
  .colecao-share{flex-direction:column;align-items:flex-start;padding:26px 24px;}
  .modal{padding:0;align-items:flex-end;}
  .modal-box{max-height:94svh;}
  .modal-box .body{padding:26px 22px 30px;}
  .modal-actions .btn{flex:1 1 100%;}
  .chat-box{right:0;bottom:0;width:100vw;max-width:100vw;height:100svh;max-height:100svh;border:0;}
  .chat-convite{right:92px;max-width:210px;}
  .whats-float{left:16px;bottom:16px;width:52px;height:52px;}
  /* em tela estreita o botão de som vira só o ícone: escrito por extenso ele
     cobria duas linhas de texto das seções escuras */
  .som-toggle{left:16px;bottom:78px;width:44px;height:44px;padding:0;border-radius:50%;justify-content:center;}
  .som-toggle #soundLabel{display:none;}
  .chat-bolha{right:16px;bottom:16px;}
  .back-top{right:16px;bottom:88px;}
  .cmp-barra{left:16px;right:16px;bottom:16px;transform:none;max-width:none;justify-content:space-between;}
  .base{justify-content:center;text-align:center;}
  .sobre-lista li{flex-direction:column;gap:4px;}
  .sobre-lista span{text-align:left;}
}

/* Sem hover (celular/tablet): desliga os efeitos pesados também no CSS */
@media (hover:none){
  .cursor-dot,.cursor-ring,.particles,.trail{display:none !important;}
  /* no toque o botão fica sempre visível — mas continua ancorado no rodapé
     da foto; com position:static ele era cortado pelo overflow do card */
  .card-joia .olho{transform:translateY(0);min-height:46px;}
  .card-joia:hover,.card-cap:hover,.step:hover,.card-colecao:hover{transform:none;}
  .card-colecao:hover img{transform:none;}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important;
  }
  .reveal{opacity:1;transform:none;}
  .hero-text .line > span{transform:none;}
  /* sem movimento: as palavras entram nítidas e o ouro não varre */
  .palavra > i{filter:none;opacity:1;transform:none;}
  .reveal.vis em{animation:none;background-size:100% 100%;}
}

/* =========================================================
   ANIMAÇÃO LIGADA AO ROLAR DA PÁGINA
   Estas não usam JavaScript nem cronômetro: o próprio navegador
   liga o quadro da animação à posição do elemento na tela
   (animation-timeline: view()). Rodam na camada de composição,
   então não travam a rolagem nem no celular.

   Tudo dentro de @supports: onde o recurso não existe, o site fica
   exatamente como estava — o reveal por IntersectionObserver continua
   fazendo o trabalho. Nada depende disto para funcionar.
   ========================================================= */
@supports (animation-timeline: view()){
  @media (prefers-reduced-motion: no-preference){

    /* 1. PROFUNDIDADE — a foto anda mais devagar que a página.
       É o que dá sensação de vitrine com vidro na frente. */
    /* Só FOTOGRAFIA ganha profundidade. Logotipo e ícone ficam de fora:
       marca que flutua não passa impressão de vidro, passa de erro. */
    .sobre-foto img,
    .card-colecao > img{
      animation:deslizaFundo linear both;
      animation-timeline:view();
      animation-range:entry 0% exit 100%;
      will-change:transform;
    }
    @keyframes deslizaFundo{
      from{transform:scale(1.14) translateY(-3.2%);}
      to  {transform:scale(1.14) translateY(3.2%);}
    }

    /* 2. O NUMERAL DO CAPÍTULO sobe junto, mas fora de compasso —
       a diferença entre as duas velocidades é o efeito.
       Usa `translate` para não brigar com transform de hover. */
    .fer-num,
    .card-colecao .overlay .num,
    .step .num{
      animation:numeroSobe linear both;
      animation-timeline:view();
      animation-range:entry 0% cover 62%;
    }
    @keyframes numeroSobe{
      from{translate:0 34px;opacity:0;}
      to  {translate:0 0;opacity:1;}
    }

    /* 3. CARTA DA VITRINE — sobe e cresce até o tamanho certo.
       Amplitude pequena de propósito: joia não combina com sacudida.

       ATENÇÃO: usa `translate` e `scale` — as propriedades independentes —
       e NÃO `transform`. O brilho que segue o ponteiro escreve
       `card.style.transform` com a inclinação 3D, e animação de CSS vence
       estilo inline: animar `transform` aqui mataria a inclinação para
       sempre, porque o `both` mantém o valor final aplicado. Assim as duas
       coisas se somam em vez de disputar. */
    .card-joia{
      animation:cartaEntra linear both;
      animation-timeline:view();
      animation-range:entry 4% entry 88%;
    }
    @keyframes cartaEntra{
      from{translate:0 42px;scale:.965;opacity:.25;}
      to  {translate:0 0;scale:1;opacity:1;}
    }

    /* 4. OS PASSOS DO PROCESSO entram um a um conforme a linha do tempo passa */
    .timeline .step{
      animation:passoEntra linear both;
      animation-timeline:view();
      animation-range:entry 10% entry 90%;
    }
    @keyframes passoEntra{
      from{translate:0 30px;opacity:.2;}
      to  {translate:0 0;opacity:1;}
    }
  }
}

/* No toque a inclinação das cartas é dispensada: o dedo já rola rápido e o
   efeito vira tremor. A profundidade das fotos fica, que é barata. */
@media (hover:none){
  @supports (animation-timeline: view()){
    .card-joia{animation:none;}
  }
}

/* =========================================================
   IMPRESSÃO — ficha da peça com marca e contatos
   ========================================================= */
@media print{
  @page{margin:16mm;}
  body{background:#fff;color:#000;font-size:11pt;}
  .grain,#progress,#navbar,.preloader,.portao,.cursor-dot,.cursor-ring,.wipe,
  .marquee,.chat-bolha,.chat-box,.chat-convite,.whats-float,.som-toggle,.back-top,
  .cmp-barra,.toast,.scroll-hint,.particles,.aurora,.filtros,.admin-panel,
  .colecao-share,.cta-band,#leadForm,.modal-close,.modal-actions,.seal,.badge-anos{display:none !important;}
  section{padding:0 !important;}
  .modal{position:static;display:block !important;background:#fff;padding:0;backdrop-filter:none;}
  .modal:not(.aberto){display:none !important;}
  .modal-box{box-shadow:none;border:0;max-width:100%;max-height:none;overflow:visible;animation:none;}
  .modal-box > img{max-height:90mm;width:auto;}
  body.imprimindo > *:not(.modal){display:none !important;}
  body.imprimindo .modal.aberto{display:block !important;}
  body.imprimindo .modal.aberto::before{
    content:'TELATIN JOIAS · Ouro 18k com garantia';
    display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:16pt;
    letter-spacing:.14em;border-bottom:1pt solid #000;padding-bottom:6mm;margin-bottom:8mm;
  }
  body.imprimindo .modal.aberto::after{
    content:'WhatsApp (64) 99292-3040 · @telatin.joias · Rio Verde · GO — Valores sujeitos a alteração. Consulte disponibilidade.';
    display:block;margin-top:10mm;padding-top:4mm;border-top:1pt solid #000;font-size:8.5pt;
  }
  .cmp-tabela table{min-width:0;}
  a[href]::after{content:'';}
}
