/* =========================================================================
   CARDÁPIO V3 — as páginas de DOCES e BOLOS na linguagem da home (01/10/2026)
   -------------------------------------------------------------------------
   Carrega depois de lp-brada.css + site-v2.css + v3.css + carrinho.css.
   Geradas por referencia/gerar-cardapio-v3.py. Só acrescenta o que a home
   não tem: a grade de produto, a barra das linhas que acompanha a rolagem,
   a tabela de bolos e os blocos de destaque. Cores fixas, fundo declarado
   no próprio componente (regra 2).
   ========================================================================= */

/* ── os tokens que o carrinho e a ficha esperam (vinham do style.css) ────── */
.cv3{
  --verde:#3B2416; --tinta:#2B1C12; --creme:#F2ECE0; --branco:#FBF8F2;
  --dourado:#A8823C; --dourado-claro:#DFBC4E; --dourado-txt:#7A5D00;
  --marrom:#5C3D28; --cacau:#5C3D28; --bege:#D8CCB4; --vinho:#891B28;
  --texto:'Jost','Segoe UI',system-ui,sans-serif;
  --cv-disp:'Iowan Old Style','Palatino Linotype','Book Antiqua',Palatino,Georgia,'Noto Serif','Times New Roman',serif;
  --titulo:var(--cv-disp);
  --cv-topo:4.45rem;           /* altura do .sv-topo (4.4rem + o filete) */
}
.cv3 .revela{ opacity:0; transform:translateY(16px);
  transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.3,1) }
.cv3 .revela.visivel{ opacity:1; transform:none }
html:not(.js) .cv3 .revela{ opacity:1; transform:none }

/* ── o hero: o .sv-hero da home, um pouco mais baixo (página de cardápio) ── */
.cv-hero{ min-height:min(66svh,560px) }
.cv-hero .emp-t{ max-width:14em }
/* o rótulo dourado mediu 3,96:1 no pior pixel das fotos novas (regra 3):
   creme, como no hero da home (6,2:1 no mesmo ponto) */
.cv-hero .emp-rot{ color:#F2ECE0 }
@media (max-width:700px){ .cv-hero{ min-height:min(72svh,560px) } }

/* ── abertura: texto à esquerda, três fotos à direita ────────────────────── */
.cv-abre{ background:#F2ECE0; display:grid; gap:clamp(2rem,4vw,3.4rem);
  padding:clamp(3rem,7vw,5rem) var(--sv-gut,1.4rem) }
@media (min-width:900px){ .cv-abre{ grid-template-columns:minmax(0,1fr) minmax(0,1.05fr); align-items:center } }
.cv-abre__corpo p{ font-size:1.02rem; line-height:1.7; color:#5C3D28; max-width:34em; margin:0 0 1rem }
.cv-abre__corpo{ margin:1.4rem 0 1.8rem }
.cv-abre__fotos{ display:grid; grid-template-columns:1.2fr 1fr; grid-template-rows:1fr 1fr; gap:4px;
  height:clamp(22rem,42vw,34rem) }
.cv-abre__fotos .v3-foto:first-child{ grid-row:span 2 }

/* ── a seção do cardápio ─────────────────────────────────────────────────── */
.cv-cardapio{ background:#F2ECE0; padding-bottom:clamp(3rem,7vw,5rem) }
.cv-cardapio--cr2,.cv-cardapio--cr2 .v3-cab{ background:#E8E0CE }
.cv-cardapio__in{ padding-inline:var(--sv-gut,1.4rem) }

/* A BARRA DAS LINHAS ACOMPANHA A ROLAGEM (Gustavo, 01/10/2026).
   Gruda logo abaixo do topo; o fundo é opaco de propósito (fotos passando
   por trás borravam os rótulos). Ganha sombra só quando está grudada. */
.cv-filtros{ position:sticky; top:var(--cv-topo); z-index:40; background:#F2ECE0;
  border-bottom:1px solid #D8CCB4; transition:box-shadow .3s }
.cv-filtros.grudada{ box-shadow:0 10px 24px -14px rgba(43,28,18,.35); border-bottom-color:#A8823C }
.cv-filtros__in{ padding-inline:var(--sv-gut,1.4rem) }
.cv3 .filtros-doce{ display:flex; gap:.2rem clamp(1.1rem,2.2vw,2rem); align-items:center;
  padding:0; border:0; margin:0; overflow-x:auto; scrollbar-width:none; flex-wrap:nowrap }
.cv3 .filtros-doce::-webkit-scrollbar{ display:none }
.cv3 .fd{ position:relative; white-space:nowrap; min-height:52px; display:inline-flex; align-items:center;
  font-family:var(--texto); font-weight:500; font-size:max(.75rem,.78rem); letter-spacing:.16em;
  text-transform:uppercase; color:#5C3D28; background:none; border:0; padding:0; cursor:pointer;
  transition:color .3s }
.cv3 .fd em{ font-style:normal; font-size:.7rem; letter-spacing:.06em; color:#7A5D00; margin-left:.45rem }
.cv3 .fd::after{ content:""; position:absolute; left:0; right:100%; bottom:10px; height:1px;
  background:#A8823C; transition:right .35s cubic-bezier(.2,.7,.3,1) }
.cv3 .fd:hover,.cv3 .fd[aria-pressed="true"]{ color:#2B1C12 }
.cv3 .fd[aria-pressed="true"]::after{ right:0 }
.cv3 .fd:focus-visible{ outline:2px solid #7A5D00; outline-offset:2px }
/* a barra das seções dos bolos (02/10): os mesmos rótulos, como âncoras */
.cv3 a.fd{ text-decoration:none }
.cv3 .fd[aria-current="true"]{ color:#2B1C12 }
.cv3 .fd[aria-current="true"]::after{ right:0 }
.cv3 .cv-secoes{ border-top:1px solid #D8CCB4 }
/* o html já tem scroll-padding-top:5rem (site-v2.css, só o topo); na página dos bolos
   ele passa a contar também a barra das seções */
html:has(.cv-secoes){ scroll-padding-top:7.75rem }   /* --cv-topo (4.45rem, definido no body) + a barra (3.3rem) */
/* o título de cada linha na grade, quando o filtro é Todos (02/10) */
.cv3 .cv-sub{ grid-column:1/-1; margin:1.6rem 0 -.4rem; padding-bottom:.6rem; border-bottom:1px solid #D8CCB4;
  font-family:var(--cv-disp); font-weight:400; font-size:clamp(1.35rem,2.4vw,1.7rem); color:#2B1C12 }
.cv3 .cv-sub:first-child{ margin-top:0 }
.cv3 .cv-sub[hidden]{ display:none }
.cv3 .doces-regra{ margin:1.2rem 0 0; font-size:.86rem; letter-spacing:.02em; color:#5C3D28 }

/* ── a grade: o cartão da home (foto, papel, serifada) ──────────────────── */
.cv-grade{ display:grid; grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));
  gap:clamp(1.2rem,2.4vw,1.8rem); margin-top:1.8rem }
@media (max-width:560px){ .cv-grade{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:.8rem } }
.cv3 .doce{ text-align:left; display:flex; flex-direction:column; background:#FBF8F2; padding-bottom:1.05rem;
  transition:box-shadow .45s ease, transform .45s cubic-bezier(.2,.7,.3,1) }
.cv3 .doce.oculto{ display:none }
.cv3 .doce__foto{ display:block; position:relative; aspect-ratio:1; overflow:hidden; background:#E8E0CE }
.cv3 .doce__foto img{ width:100%; height:100%; object-fit:cover; display:block;
  transition:transform 1.1s cubic-bezier(.2,.7,.3,1) }
.cv3 .doce__foto::after{ content:""; position:absolute; inset:0; pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(168,130,60,0); transition:box-shadow .45s }
.cv3 .doce__nome{ margin:0; padding:1rem 1.1rem 0; font-family:var(--cv-disp); font-weight:400;
  font-size:clamp(1.15rem,1.9vw,1.32rem); line-height:1.22; color:#2B1C12; letter-spacing:0 }
.cv3 .doce__resumo{ margin:.45rem 1.1rem 0; max-width:none; font-size:.88rem; line-height:1.5; color:#5C3D28 }
.cv3 .doce .doce__preco{ margin:auto 1.1rem 0; padding:.8rem 0 0; font-size:max(.75rem,.76rem);
  letter-spacing:.14em; text-transform:uppercase; color:#7A5D00 }
.cv3 .doce .doce__preco:empty{ display:none }
@media (hover:hover){
  .cv3 .doce:hover{ box-shadow:0 18px 40px -22px rgba(43,28,18,.45); transform:translateY(-3px) }
  .cv3 .doce:hover .doce__foto img{ transform:scale(1.045) }
}
.cv3 .doce.no-pedido .doce__foto::after{ box-shadow:inset 0 0 0 2px #3B2416 }
@media (max-width:560px){
  .cv3 .doce{ padding-bottom:.8rem }
  .cv3 .doce__nome{ padding:.75rem .75rem 0; font-size:1.02rem }
  .cv3 .doce__resumo{ margin:.3rem .75rem 0; font-size:.8rem;
    -webkit-line-clamp:2; display:-webkit-box; -webkit-box-orient:vertical; overflow:hidden }
  .cv3 .doce .doce__preco{ margin-inline:.75rem; padding:.6rem 0 0; font-size:.68rem; letter-spacing:.08em }
}
.cv3 .aviso-preco{ margin-top:1.4rem; font-size:.88rem; color:#5C3D28 }

/* fecho e ações */
.cv-fecho{ margin-top:clamp(2.6rem,5vw,3.6rem); padding-top:1.8rem; border-top:1px solid #D8CCB4 }
.cv3 .cv-fecho p{ font-size:.95rem; color:#5C3D28; max-width:40em }
.cv-fecho__acoes{ display:flex; flex-wrap:wrap; gap:1rem; margin-top:1.4rem }
.cv-fecho__acoes--centro{ justify-content:center; padding:2rem var(--sv-gut,1.4rem) 0 }

/* ── além dos doces: cartões de texto com filete de bronze ───────────────── */
.cv-alem{ background:#E8E0CE; padding-bottom:clamp(3rem,7vw,5rem) }
.cv-extras{ display:grid; grid-template-columns:repeat(auto-fit,minmax(14rem,1fr)); gap:1.2rem;
  padding-inline:var(--sv-gut,1.4rem) }
.cv-extra{ background:#F2ECE0; border-top:3px solid #A8823C; padding:1.5rem 1.4rem 1.6rem;
  display:flex; flex-direction:column; gap:.6rem }
.cv-extra h3{ margin:0; font-family:var(--cv-disp); font-weight:400; font-size:1.4rem; color:#2B1C12 }
.cv-extra p{ font-size:.92rem; line-height:1.55; color:#5C3D28 }
.cv-extra__preco{ margin-top:auto !important; padding-top:.4rem; font-size:max(.75rem,.78rem) !important;
  letter-spacing:.12em; text-transform:uppercase; color:#7A5D00 !important }
.cv-extra__link{ align-self:flex-start; font-size:max(.78rem,.8rem); letter-spacing:.14em; text-transform:uppercase;
  font-weight:500; color:#3B2416; border-bottom:1px solid #A8823C; padding-bottom:2px; min-height:32px;
  display:inline-flex; align-items:flex-end }

/* ── como encomendar ─────────────────────────────────────────────────────── */
.cv-como{ background:#F2ECE0; padding-bottom:clamp(3rem,7vw,5rem) }
.cv-regras{ display:grid; grid-template-columns:repeat(auto-fit,minmax(16rem,1fr)); gap:0;
  margin-inline:var(--sv-gut,1.4rem); border-top:1px solid #D8CCB4 }
.cv-regra{ padding:1.3rem 1.4rem 1.4rem 0; border-bottom:1px solid #D8CCB4 }
.cv-regra b{ display:block; font-family:var(--cv-disp); font-weight:400; font-size:1.2rem; color:#2B1C12 }
.cv-regra p{ margin-top:.4rem; font-size:.92rem; line-height:1.55; color:#5C3D28 }
.cv3 .cv-aviso{ margin:1.4rem var(--sv-gut,1.4rem) 0; font-size:.84rem; color:#5C3D28 }

/* ═══ BOLOS ═════════════════════════════════════════════════════════════ */
.cv-tabela{ background:#FBF8F2; padding:clamp(1.2rem,2.6vw,1.8rem); max-width:44rem }
.cv-tabela table{ width:100%; border-collapse:collapse; font-family:var(--texto) }
.cv-tabela caption{ caption-side:top; text-align:left; font-size:max(.75rem,.76rem); letter-spacing:.16em;
  text-transform:uppercase; color:#5C3D28; padding-bottom:.9rem; font-weight:500 }
.cv-tabela th,.cv-tabela td{ padding:.85rem .4rem; border-bottom:1px solid #D8CCB4; text-align:right }
.cv-tabela thead th{ font-size:max(.75rem,.76rem); letter-spacing:.14em; text-transform:uppercase;
  color:#7A5D00; font-weight:500 }
.cv-tabela thead th:first-child,.cv-tabela tbody th{ text-align:left }
.cv-tabela tbody th{ font-family:var(--cv-disp); font-weight:400; font-size:1.18rem; color:#2B1C12 }
.cv-tabela tbody th span{ display:block; font-family:var(--texto); font-size:.8rem; color:#5C3D28; margin-top:.1rem }
.cv-tabela td{ font-size:1.02rem; font-weight:500; color:#2B1C12; white-space:nowrap }
.cv3 .cv-nota{ margin-top:.9rem; font-size:.84rem; line-height:1.55; color:#5C3D28; max-width:40em }
.cv-estilos{ list-style:none; margin:2rem 0 0; padding:0; display:grid; gap:1rem;
  grid-template-columns:repeat(auto-fit,minmax(15rem,1fr)) }
.cv-estilos li{ border-left:2px solid #A8823C; padding:.2rem 0 .2rem 1rem }
.cv-estilos b{ display:block; font-family:var(--cv-disp); font-weight:400; font-size:1.2rem; color:#2B1C12 }
.cv-estilos span{ display:block; margin-top:.25rem; font-size:.9rem; line-height:1.5; color:#5C3D28 }
.cv-grade--dec .doce__resumo{ -webkit-line-clamp:3 }

/* destaque: foto grande e texto lado a lado (long cake, bolo de andar) */
.cv-destaque{ display:grid; background:#F2ECE0 }
@media (min-width:900px){
  .cv-destaque{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:stretch }
  .cv-destaque--inv .cv-destaque__foto{ order:2 }
}
.cv-destaque__foto .v3-foto{ height:min(72svh,640px) }
/* a foto não manda na altura da linha: retrato alto esticava o bloco a 1.600px */
@media (min-width:900px){
  .cv-destaque__foto{ position:relative; min-height:36rem }
  .cv-destaque__foto .v3-foto{ position:absolute; inset:0; height:auto }
}
.cv-destaque__txt{ padding:clamp(2.6rem,6vw,4.8rem) var(--sv-gut,1.4rem); align-self:center }
@media (min-width:900px){ .cv-destaque__txt{ padding-inline:clamp(2.4rem,5vw,4.6rem) var(--sv-gut,1.4rem) }
  .cv-destaque--inv .cv-destaque__txt{ padding-inline:var(--sv-gut,1.4rem) clamp(2.4rem,5vw,4.6rem) } }
.cv-destaque--inv{ background:#E8E0CE }
.cv-destaque__txt .emp-sub{ margin:1rem 0 1.6rem }
.cv-long{ list-style:none; margin:0 0 .4rem; padding:0; border-top:1px solid #D8CCB4; max-width:30rem }
.cv-long li{ display:grid; grid-template-columns:auto 1fr auto; gap:.2rem 1rem; align-items:baseline;
  padding:.8rem 0; border-bottom:1px solid #D8CCB4 }
.cv-long b{ font-family:var(--cv-disp); font-weight:400; font-size:1.2rem; color:#2B1C12 }
.cv-long span{ font-size:.86rem; color:#5C3D28 }
.cv-long em{ font-style:normal; font-weight:500; color:#2B1C12 }
/* o "card" do long cake é só o botão: a foto já está ao lado */
.cv3 .doce.cv-oculto{ background:none; margin-top:1.6rem; box-shadow:none !important; transform:none !important }
.cv3 .doce.cv-oculto .doce__foto{ display:none }
.cv3 .doce.cv-oculto .doce__nome{ padding:0 }
.cv3 .doce.cv-oculto .doce__abre::after{ display:none }
.cv3 .doce.cv-oculto .doce__abre{ display:inline-flex; align-items:center; min-height:48px; padding:1rem 2.3rem;
  font:500 max(.75rem,.78rem)/1 var(--texto); letter-spacing:.24em; text-transform:uppercase;
  background:#3B2416; color:#F2ECE0; border:1px solid #3B2416; transition:background .3s }
.cv3 .doce.cv-oculto .doce__abre:hover{ background:#2B1A0F }
.cv3 .doce.cv-oculto .doce__abre:focus-visible{ outline:2px solid #7A5D00; outline-offset:3px }

/* o serviço */
.cv-servico{ background:#E8E0CE; padding-bottom:clamp(3rem,7vw,5rem) }
.cv-servico__in{ display:grid; gap:2rem; padding-inline:var(--sv-gut,1.4rem) }
@media (min-width:900px){ .cv-servico__in{ grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); align-items:start } }
.cv-servico__lista{ list-style:none; margin:0; padding:0; border-top:1px solid #C9BB9F }
.cv-servico__lista li{ padding:1rem 0; border-bottom:1px solid #C9BB9F }
.cv-servico__lista b{ display:block; font-family:var(--cv-disp); font-weight:400; font-size:1.2rem; color:#2B1C12 }
.cv-servico__lista span{ display:block; margin-top:.25rem; font-size:.92rem; line-height:1.5; color:#5C3D28 }
.cv-servico__fotos{ display:grid; grid-template-columns:repeat(3,1fr); gap:4px }
.cv-servico__fotos .v3-foto{ aspect-ratio:4/5 }

/* ═══ a ficha, na roupa da home ═════════════════════════════════════════ */
.cv3 .ficha{ background:#F2ECE0 }
.cv3 .ficha__nome{ font-family:var(--cv-disp); letter-spacing:0; color:#2B1C12 }
.cv3 .ficha__nome::after{ background:#A8823C; height:2px }
.cv3 .ficha__desc{ color:#5C3D28 }
.cv3 .ficha__desc ul{ margin:.2rem 0 0; padding-left:1.1rem }
.cv3 .ficha__desc li{ margin:.2rem 0 }
.cv3 .ficha__mini[aria-current="true"]{ border-color:#A8823C }
/* as escolhas da ficha de bolo */
.ficha__op{ margin:1.2rem 0 0; border:0; padding:0; min-width:0 }
.ficha__op legend{ padding:0; margin-bottom:.55rem; font:500 .74rem/1 var(--texto); letter-spacing:.2em;
  text-transform:uppercase; color:#5C3D28 }
.ficha__chips{ display:flex; flex-wrap:wrap; gap:.45rem }
.ficha__chip{ display:inline-flex; flex-direction:column; align-items:flex-start; justify-content:center;
  min-height:44px; padding:.5rem .85rem; border:1px solid #D8CCB4; background:#FBF8F2; color:#2B1C12;
  font:500 .9rem/1.2 var(--texto); cursor:pointer; text-align:left;
  transition:border-color .25s, background .25s, color .25s }
.ficha__chip small{ font-weight:400; font-size:.74rem; color:#5C3D28; margin-top:.15rem }
.ficha__chip:hover{ border-color:#A8823C }
.ficha__chip[aria-pressed="true"]{ background:#3B2416; border-color:#3B2416; color:#F2ECE0 }
.ficha__chip[aria-pressed="true"] small{ color:#E4D9C4 }
.ficha__chip:focus-visible{ outline:2px solid #7A5D00; outline-offset:2px }
.ficha__ajuda{ margin:.55rem 0 0; font-size:.84rem; line-height:1.5; color:#5C3D28 }
.ficha__valor{ display:flex; justify-content:space-between; align-items:baseline; gap:1rem;
  margin:1.4rem 0 .9rem; padding-top:1rem; border-top:1px solid #D8CCB4 }
.ficha__valor span{ font:500 .74rem/1 var(--texto); letter-spacing:.2em; text-transform:uppercase; color:#7A5D00 }
.ficha__valor b{ font-family:var(--cv-disp); font-weight:400; font-size:1.7rem; color:#2B1C12 }
.ficha__valor small{ display:block; font-family:var(--texto); font-size:.76rem; color:#5C3D28; text-align:right }
.ficha .botao.ficha__pedir{ width:100%; justify-content:center }
.ficha__loja2{ display:block; text-align:center; margin-top:.8rem; min-height:44px; line-height:44px;
  font-size:.86rem; color:#5C3D28; text-decoration:underline; text-underline-offset:3px }

/* a barra do pedido e a gaveta, com a serifada da casa */
.cv3 .carrinho-tela__tit,.cv3 .carrinho-item__nome,.cv3 .carrinho-form__tit{ font-family:var(--cv-disp); letter-spacing:0 }

@media (prefers-reduced-motion:reduce){
  .cv3 .revela{ transition:none; opacity:1; transform:none }
  .cv3 .doce,.cv3 .doce__foto img{ transition:none }
}

/* a ficha de bolo (02/10/2026, refeita): a ordem é escolher → ver o valor → pedir.
   Antes o pé com valor e botão ficava PRESO (sticky) e cobria as escolhas —
   no celular elas sumiam por inteiro. Agora as escolhas vêm logo abaixo do
   nome, o detalhe do bolo fica recolhido e o pé segue o fluxo, sem cobrir nada. */
.cv3 .ficha:has(.ficha__ops){ height:min(calc(100vh - 3rem), 46rem) }
/* o pé (valor + botão) fica à mão, mas compacto e só DEPOIS das escolhas:
   o que ele cobre ao rolar é o detalhe recolhido, nunca o tamanho ou o acabamento */
.cv3 .ficha:has(.ficha__ops) .ficha__compra{ position:sticky; bottom:-2rem; z-index:2; margin-top:1.2rem;
  background:#F2ECE0; padding:1rem 0 2rem; box-shadow:0 -10px 16px -10px rgba(43,28,18,.25) }
.cv3 .ficha:has(.ficha__ops) .ficha__valor{ margin:0 0 .6rem; padding-top:0; border-top:0 }
.cv3 .ficha:has(.ficha__ops) .ficha__loja2{ margin-top:.2rem; min-height:36px; line-height:36px }
.cv3 .ficha:has(.ficha__ops) .ficha__desc{ margin-top:1.1rem }
.ficha__resumo{ margin:.9rem 0 0; font-size:.95rem; line-height:1.6; color:#5C3D28 }
.ficha__resumo:empty{ display:none }
.ficha__op:first-child{ margin-top:1.1rem }
.ficha__data{ min-height:44px; padding:.5rem .8rem; border:1px solid #D8CCB4; background:#FBF8F2;
  color:#2B1C12; font:500 .95rem var(--texto); border-radius:0 }
.ficha__data:focus-visible{ outline:2px solid #7A5D00; outline-offset:2px }
.ficha__mais{ border-top:1px solid #D8CCB4; border-bottom:1px solid #D8CCB4 }
.ficha__mais summary{ cursor:pointer; list-style:none; min-height:44px; display:flex; align-items:center;
  justify-content:space-between; font:500 .74rem/1 var(--texto); letter-spacing:.2em; text-transform:uppercase; color:#5C3D28 }
.ficha__mais summary::-webkit-details-marker{ display:none }
.ficha__mais summary::after{ content:"+"; font-size:1.1rem; color:#A8823C }
.ficha__mais[open] summary::after{ content:"−" }
.ficha__mais > :not(summary){ margin:0 0 .8rem }
@media (max-width:760px){
  .cv3 .ficha:has(.ficha__ops){ height:fit-content }
  .cv3 .ficha:has(.ficha__ops) .ficha__compra{ bottom:0; padding:1rem 0 calc(1rem + env(safe-area-inset-bottom)) }
  .cv3 .ficha:has(.ficha__ops) .botao.ficha__pedir{ position:static; box-shadow:none; padding:.9rem .8rem }
  /* no celular o pé é UMA linha de valor + o botão: a foto baixa um pouco e o
     tamanho e o acabamento cabem na primeira tela. A loja segue no fim da página. */
  .cv3 .ficha:has(.ficha__ops) .ficha__foto{ aspect-ratio:16/10 }
  .cv3 .ficha:has(.ficha__ops) .ficha__compra{ padding-top:.7rem }
  .cv3 .ficha:has(.ficha__ops) .ficha__valor{ align-items:center; margin-bottom:.5rem }
  .cv3 .ficha:has(.ficha__ops) .ficha__valor > div{ display:flex; align-items:baseline; gap:.5rem }
  .cv3 .ficha:has(.ficha__ops) .ficha__valor b{ font-size:1.45rem; white-space:nowrap }
  .cv3 .ficha:has(.ficha__ops) .ficha__valor span{ white-space:nowrap }
  .cv3 .ficha:has(.ficha__ops) .ficha__valor small{ display:none }   /* o tamanho já está marcado logo acima */
  .cv3 .ficha:has(.ficha__ops) .ficha__loja2{ display:none }
}
/* a quebra de linha do título da abertura foi desenhada para o computador */
@media (max-width:899px){ .cv-abre .emp-t br{ display:none } }

/* ═══ 02/10/2026 · ficha do bolo: decoração, carrosséis e o Inspire-se ═══ */
.ficha__comp{ margin:.5rem 0 0; padding-left:1.1rem; font-size:.92rem; line-height:1.55 }
.ficha__comp li{ margin:.15rem 0 }
.ficha__chip--pers{ border-style:dashed }
/* a personalizada da página de bolos e as chamadas para o Inspire-se */
.emp .cv-pers{ margin:2.2rem 0 0; padding:1.6rem clamp(1.2rem,3vw,2rem); border:1px dashed #A8823C; background:#F2ECE0;
  display:grid; gap:.6rem; justify-items:start; max-width:46rem }
.cv-pers__t{ margin:0; font-family:var(--cv-disp); font-size:clamp(1.3rem,2.4vw,1.6rem); color:#2B1C12 }
.cv-pers p{ margin:0; color:#5C3D28; line-height:1.6 }
.cv-pers .botao{ margin-top:.4rem }
.emp .cv-chama{ margin:2rem var(--sv-gut,1.4rem) 0; font-size:.98rem; color:#5C3D28 }
.cv-chama a{ color:#2B1C12; border-bottom:1px solid #A8823C; text-decoration:none; padding-bottom:.1rem }
.cv-chama a:hover{ border-bottom-color:#2B1C12 }
.cv-destaque__txt .cv-fecho__acoes{ display:flex; flex-wrap:wrap; gap:.8rem; justify-content:flex-start; margin-top:1.4rem }

/* o carrossel que troca sozinho (long cake, bolo de andar): esmaece com zoom lento */
.cv-roda{ position:relative; height:100%; min-height:22rem; overflow:hidden; background:#2B1C12 }
.cv-roda__f{ position:absolute; inset:0; margin:0; opacity:0; transition:opacity 1.4s ease }
.cv-roda__f img{ width:100%; height:100%; object-fit:cover; display:block; transform:scale(1.06);
  transition:transform 6.5s ease-out }
.cv-roda__f.ativa{ opacity:1; z-index:1 }
.cv-roda__f.ativa img{ transform:scale(1) }
.cv-roda__pontos{ position:absolute; z-index:2; left:0; right:0; bottom:.9rem; display:flex; justify-content:center; gap:.2rem }
.cv-roda__p{ width:28px; height:28px; border:0; background:none; cursor:pointer; display:grid; place-items:center; padding:0 }
.cv-roda__p::before{ content:""; width:8px; height:8px; border-radius:50%; background:rgba(242,236,224,.55);
  transition:background .3s, transform .3s }
.cv-roda__p[aria-current="true"]::before{ background:#F2ECE0; transform:scale(1.25) }
.cv-roda__p:focus-visible{ outline:2px solid #F2ECE0; outline-offset:-4px }
@media (prefers-reduced-motion:reduce){ .cv-roda__f img{ transform:none; transition:none } .cv-roda__f{ transition:opacity .4s } }

/* ═══ o ÁLBUM do Inspire-se (02/10/2026) ════════════════════════════════
   Grade editorial: a foto em pé ocupa duas linhas, a deitada duas colunas, e
   algumas ganham destaque (2 × 2). Sem legenda na grade — ela vive na foto
   ampliada. Ao rolar, cada foto se revela: a moldura abre de dentro para fora
   e a foto assenta com um zoom lento, em cascata (--i dá o atraso). */
.ins-album{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); grid-auto-rows:clamp(9rem,13vw,12.5rem);
  grid-auto-flow:dense; gap:clamp(.5rem,1.1vw,.9rem); margin-top:2rem }
@media (max-width:899px){ .ins-album{ grid-template-columns:repeat(2,minmax(0,1fr)); grid-auto-rows:clamp(8rem,34vw,13rem) } }
.ins-item{ position:relative; margin:0; overflow:hidden; background:#E8E0CE }
.ins-alta{ grid-row:span 2 }
.ins-larga{ grid-column:span 2 }
.ins-grande{ grid-column:span 2; grid-row:span 2 }
.ins-abre{ position:absolute; inset:0; display:block; width:100%; height:100%; padding:0; border:0; background:none; cursor:zoom-in }
.ins-abre img{ width:100%; height:100%; object-fit:cover; display:block;
  transition:transform 1.4s cubic-bezier(.2,.7,.2,1), filter .6s ease }
.ins-abre::after{ content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(to top, rgba(26,20,16,.35), rgba(26,20,16,0) 45%); opacity:0; transition:opacity .5s ease }
.ins-abre:focus-visible{ outline:2px solid #7A5D00; outline-offset:3px }
@media (hover:hover){
  .ins-abre:hover img{ transform:scale(1.045) }
  .ins-abre:hover::after{ opacity:1 }
}
/* a revelação (só com JS: sem ele, as fotos já aparecem) */
.js .ins-item{ clip-path:inset(7% 7% 7% 7%); opacity:0; transform:translateY(28px);
  transition:clip-path 1.1s cubic-bezier(.2,.7,.2,1), opacity .9s ease, transform 1.1s cubic-bezier(.2,.7,.2,1);
  transition-delay:calc(var(--i,0) * 90ms) }
.js .ins-item img{ transform:scale(1.12) }
.js .ins-item.visto{ clip-path:inset(0); opacity:1; transform:none }
.js .ins-item.visto img{ transform:scale(1) }
@media (prefers-reduced-motion:reduce){
  .js .ins-item{ clip-path:none; transform:none; transition:opacity .4s ease; transition-delay:0s }
  .js .ins-item img,.ins-abre:hover img{ transform:none }
}

/* a foto ampliada: abre CRESCENDO a partir da miniatura (o JS mede e anima),
   troca deslizando para o lado da navegação, e a legenda entra depois da foto */
.ins-luz{ border:0; padding:0; margin:0; width:100vw; height:100vh; height:100dvh; max-width:none; max-height:none;
  background:rgba(20,14,10,0); color:#F2ECE0; overflow:hidden; transition:background .45s ease }
.ins-luz.aberta{ background:rgba(20,14,10,.96) }
.ins-luz::backdrop{ background:rgba(20,14,10,0); transition:background .45s ease }
.ins-luz.aberta::backdrop{ background:rgba(20,14,10,.92) }
.ins-luz[open]{ display:grid; grid-template-rows:minmax(0,1fr) auto }
.ins-luz__palco{ position:relative; min-height:0; display:grid; place-items:center; padding:clamp(3.4rem,6vh,4.4rem) clamp(.6rem,5vw,5rem) .6rem }
.ins-luz__palco img{ width:auto; height:auto; max-width:min(100%, 92vw); max-height:calc(100dvh - 12.5rem); object-fit:contain;
  display:block; box-shadow:0 30px 80px rgba(0,0,0,.45);
  will-change:transform, opacity }
.ins-luz__pe{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:.8rem 1.6rem;
  padding:1rem clamp(1rem,5vw,5rem) calc(1.2rem + env(safe-area-inset-bottom));
  opacity:0; transform:translateY(12px); transition:opacity .5s ease .25s, transform .6s cubic-bezier(.2,.7,.2,1) .25s }
.ins-luz.aberta .ins-luz__pe{ opacity:1; transform:none }
.ins-luz__leg{ margin:0; font-family:var(--cv-disp); font-size:clamp(1.05rem,1.8vw,1.3rem); line-height:1.4; max-width:42rem }
.ins-luz__leg b{ display:block; margin-bottom:.35rem; font:500 .72rem/1 var(--texto); letter-spacing:.22em; color:#DFBC4E }
.ins-luz__leg em{ font-style:normal; font-family:var(--texto); font-size:.78rem; letter-spacing:.12em; color:#CBBFA8; margin-left:.6rem }
.ins-luz .botao{ background:#DFBC4E; color:#1A1410 }
.ins-luz__x,.ins-luz__seta{ position:absolute; z-index:3; width:46px; height:46px; border-radius:50%; cursor:pointer;
  border:1px solid rgba(242,236,224,.35); background:rgba(26,20,16,.45); color:#F2ECE0; font:300 1.6rem/1 var(--texto);
  display:grid; place-items:center; opacity:0; transition:opacity .4s ease .2s, background .25s, transform .25s }
.ins-luz.aberta .ins-luz__x,.ins-luz.aberta .ins-luz__seta{ opacity:1 }
.ins-luz__x{ top:.8rem; right:.8rem }
.ins-luz__seta{ top:calc(50% - 3.5rem) }
.ins-luz__seta--ant{ left:clamp(.4rem,1.5vw,1.2rem) } .ins-luz__seta--prox{ right:clamp(.4rem,1.5vw,1.2rem) }
@media (hover:hover){ .ins-luz__x:hover,.ins-luz__seta:hover{ background:rgba(242,236,224,.16); transform:scale(1.06) } }
.ins-luz__x:focus-visible,.ins-luz__seta:focus-visible{ outline:2px solid #DFBC4E; outline-offset:2px }
@media (max-width:760px){ .ins-luz__seta{ top:calc(50% - 6rem); width:40px; height:40px } }
html.luz-aberta{ overflow:hidden }
.cv-destaque__foto .cv-roda{ height:min(72svh,640px) }
@media (min-width:900px){ .cv-destaque__foto .cv-roda{ position:absolute; inset:0; height:auto } }

/* ═══ MICROINTERAÇÕES (02/10/2026) ═══ (o card já sobe no hover, acima) */
.cv3 .ficha__chip{ transition:border-color .25s, background .25s, color .25s, transform .12s ease }
.cv3 .ficha__chip:active{ transform:scale(.96) }
/* o sublinhado que se desenha na chamada do Inspire-se */
.emp .cv-chama a{ border-bottom:0; padding-bottom:.15rem;
  background:linear-gradient(#A8823C,#A8823C) left bottom / 100% 1px no-repeat; transition:background-size .45s cubic-bezier(.2,.7,.2,1) }
@media (hover:hover){ .emp .cv-chama a:hover{ background-image:linear-gradient(#2B1C12,#2B1C12); background-size:100% 2px } }
@media (prefers-reduced-motion:reduce){ .cv3 .ficha__chip:active{ transform:none } }

/* o carrossel INTEIRO (bolo de andar, 02/10/2026): o bolo aparece todo, sem recorte;
   a mesma foto, desfocada e escurecida, preenche o espaço em volta */
.cv-roda--inteira .cv-roda__fundo{ position:absolute; inset:-6%; width:112%; height:112%; object-fit:cover;
  filter:blur(26px) brightness(.62) saturate(1.1); transform:none !important; transition:none }
.cv-roda--inteira .cv-roda__img{ position:relative; z-index:1; object-fit:contain; box-sizing:border-box; padding:clamp(.8rem,2vw,1.6rem) }
