:root{--doxa-couch:url('/img/site/textura-sofa.webp');--purple:#614468;--purple-dark:#3E2A45;--purple-nav:#614468;--purple-light:#8A7A90;--lavender:#F7F3F8;--lavender-mid:#EDE5EF;--gold:#B58B2D;--gold-light:#D8A94B;--green:#3F694C;--green-light:#4E7A5B;--white:#EDE5EF;--text-dark:#2A1F2D;--text-mid:#5E5363;--text-light:#8A7A90;--border:#DCD0DF;}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%;}
body{font-family:'Roboto',sans-serif;background:var(--white);color:var(--text-dark);overflow-x:hidden;}
.page{display:none;}.page.active{display:block;}
@keyframes fadeUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeLeft{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:translateX(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes floatBlob{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes scaleIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@keyframes drift1{0%,100%{transform:translate(0,0)}50%{transform:translate(15px,-20px)}}
@keyframes drift2{0%,100%{transform:translate(0,0)}50%{transform:translate(-10px,15px)}}
@keyframes shimmer{0%{background-position:-200% center}100%{background-position:200% center}}
@keyframes navIn{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.reveal{opacity:0;transform:translateY(36px);transition:opacity .75s cubic-bezier(.22,1,.36,1),transform .75s cubic-bezier(.22,1,.36,1);}
.reveal.left{transform:translateX(-36px);}.reveal.right{transform:translateX(36px);}
.reveal.visible{opacity:1;transform:none;}
.d1{transition-delay:.08s!important}.d2{transition-delay:.18s!important}.d3{transition-delay:.28s!important}.d4{transition-delay:.40s!important}.d5{transition-delay:.52s!important}.d6{transition-delay:.62s!important}
nav{position:fixed;top:0;left:0;right:0;z-index:200;background:var(--purple-nav);display:flex;align-items:center;justify-content:space-between;padding:.75rem 5%;transition:padding .3s,box-shadow .3s;animation:navIn .6s cubic-bezier(.22,1,.36,1) both;border-bottom:1.5px solid var(--gold);}
.nav-logo{height:70px;width:auto;display:block;}
nav.scrolled{padding:.45rem 5%;box-shadow:0 4px 24px rgba(74,50,114,.35);}
.nav-links{display:flex;gap:2rem;list-style:none;margin-left:auto;}
.nav-links a{font-size:.943rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.92);text-decoration:none;position:relative;padding-bottom:2px;transition:color .2s;cursor:pointer;}
.nav-links a::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .25s;}
.nav-links a:hover,.nav-links a.active-link{color:var(--gold-light);}
.nav-links a:hover::after,.nav-links a.active-link::after{transform:scaleX(1);}
.hero-trust-group{display:flex;flex-direction:column;height:100vh;height:100svh;}
.hero{flex:1;min-height:0;position:relative;overflow:hidden;display:flex;align-items:safe center;background:#000;}
.hero-video-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;z-index:0;opacity:.75;}
.hero-video-overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(10,3,20,.6) 0%,rgba(40,20,70,.4) 60%,rgba(10,3,20,.55) 100%);z-index:1;}
.blob{display:none;}
.blob-1,.blob-2,.blob-3{display:none;}
.blob-1{width:500px;height:500px;background:var(--purple-light);top:-100px;right:-100px;animation:drift1 12s ease-in-out infinite;}
.blob-2{width:350px;height:350px;background:var(--gold);bottom:-80px;left:-80px;animation:drift2 9s ease-in-out infinite;}
.blob-3{width:200px;height:200px;background:var(--purple-light);top:40%;left:30%;animation:drift1 15s ease-in-out 3s infinite;}
/* O bloco de texto ocupa a metade esquerda do vídeo, onde o fundo é liso: a
   personagem e o tablet estão à direita, e antes o parágrafo chegava a passar
   por cima do rosto em telas largas. O topo respeita o menu fixo e a base
   respeita a barra de vantagens; entre os dois, o `align-items:center` do
   .hero distribui a sobra. */
/* O bloco sobe e cresce. O respiro do topo caiu de 13vh para 9,5vh: o texto
   começa mais perto do menu, e o que sobra embaixo vira folga até a barra de
   vantagens em vez de vazio no alto. A coluna foi de 56% para 52% da largura —
   mais estreita, o que empurra a quebra do título para mais cedo e libera o
   rosto da personagem à direita. */
.hero-content{position:relative;z-index:3;padding:clamp(5rem,9.5vh,7.5rem) 7% clamp(3rem,7vh,5rem);max-width:min(920px,52%);width:100%;}
.hero-br-wide{display:inline;}
/* Par do .hero-br-wide, para o outro extremo: quebras que valem SÓ no celular
   (ligado no bloco @media(max-width:640px)). Existe porque o desktop e o
   celular querem cortes em pontos diferentes da mesma frase, e no tablet
   (641–1024px) os dois ficam desligados e o texto flui sozinho.

   ATENÇÃO ao editar o HTML: todo <br> destes dois tipos precisa de um ESPAÇO
   antes dele. Quando a media query desliga o <br> com display:none, é esse
   espaço que separa as palavras — sem ele, "para você," e "agende" viram
   "para você,agende" no aparelho onde a quebra está desligada. Foi exatamente
   esse o bug corrigido em 31/07/2026 no subtítulo do hero. */
.hero-br-mob{display:none;}
/* QUEBRAS DO TÍTULO BRANCO — LIGADAS POR PADRÃO (31/07/2026).

   O desenho aprovado é o mesmo no celular e no desktop: "A DOXA conecta /
   você a psicólogos / qualificados / e confiáveis.". Antes eu dependia do
   tamanho da fonte para o texto quebrar sozinho nesses pontos, e isso nunca
   se sustentou: em monitor largo a linha cabia inteira e virava 3 linhas; ao
   aumentar a fonte para forçar a quebra, o título estourava a altura do hero
   e cortava os botões. Fonte não é o instrumento certo para controlar onde a
   frase quebra — <br> é.

   Ficam DESLIGADAS só na faixa de tablet (641–1024px), onde a coluna tem
   outra largura e o texto se organiza melhor fluindo sozinho. */
.hero-br-h1{display:inline;}
@media(min-width:641px) and (max-width:1024px){ .hero-br-h1{display:none;} }
.hero-tag{display:inline-flex;align-items:center;gap:.5rem;font-size:.82rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:1.25rem;animation:fadeLeft .8s cubic-bezier(.22,1,.36,1) .3s both;}
.hero-h1{font-family:'Roboto',sans-serif;font-size:clamp(2.2rem,5.4vw,4.55rem);font-weight:700;line-height:1.12;color:var(--white);margin-bottom:1.15rem;}
.hero-h1 .gold{color:var(--gold-light);font-style:italic;}
.hero-h1 .line1{display:block;animation:fadeUp .9s cubic-bezier(.22,1,.36,1) .45s both;margin-bottom:.5rem;}
.hero-h1 .line2{display:block;animation:fadeUp .9s cubic-bezier(.22,1,.36,1) .58s both;}
/* Sem teto de largura no desktop: as quebras agora são as do <br>, e um
   `max-width` estreito criaria uma quarta quebra por cima delas. O
   `hero-br-wide` já some abaixo de 1024px, onde o texto volta a fluir. */
.hero-sub{font-size:clamp(1.02rem,1.35vw,1.28rem);color:rgba(255,255,255,.88);max-width:none;margin-bottom:1.4rem;line-height:1.65;animation:fadeUp .9s cubic-bezier(.22,1,.36,1) .72s both;}
.hero-btns{display:flex;gap:1rem;flex-wrap:wrap;animation:fadeUp .9s cubic-bezier(.22,1,.36,1) .86s both;}
.hero-btns-wrap{display:contents;}
.hero-top-group{display:contents;}
.btn-green{background:var(--green);color:var(--white);padding:.85rem 2rem;border-radius:100px;font-size:.82rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;display:inline-block;transition:background .2s,transform .15s,box-shadow .2s;cursor:pointer;border:none;font-family:'Roboto',sans-serif;}
.btn-green:hover{background:var(--green-light);transform:translateY(-2px);box-shadow:0 8px 24px rgba(58,138,79,.35);}
.btn-gold{background:var(--gold);color:var(--text-dark);padding:.85rem 2rem;border-radius:100px;font-size:.82rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;display:inline-block;transition:background .2s,transform .15s;cursor:pointer;border:none;font-family:'Roboto',sans-serif;}
.btn-gold:hover{background:var(--gold-light);transform:translateY(-2px);}
.btn-purple{background:var(--purple-dark);color:var(--white);padding:.65rem 1.4rem;border-radius:100px;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;display:inline-block;transition:background .2s,transform .15s;cursor:pointer;border:none;font-family:'Roboto',sans-serif;}
.btn-purple:hover{background:var(--purple);transform:scale(1.04);}
.btn-dark{background:var(--purple-dark);color:var(--white);padding:.85rem 2.5rem;border-radius:8px;font-size:.9rem;font-weight:700;border:none;cursor:pointer;font-family:'Roboto',sans-serif;transition:background .2s,transform .15s;align-self:flex-start;}
.btn-dark:hover{background:var(--purple);transform:translateY(-1px);}
.trust-strip{background:var(--purple-dark);overflow:hidden;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold);flex-shrink:0;}
.trust-marquee-wrap{overflow:hidden;padding:1rem 0;}
@media(min-width:901px){.trust-marquee-wrap{padding:.8rem 0;}}
.trust-marquee{display:flex;width:max-content;animation:marquee 22s linear infinite;}
.trust-item{display:flex;align-items:center;gap:.65rem;padding:0 2.5rem;font-size:.8rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.75);white-space:nowrap;border-right:1px solid rgba(255,255,255,.12);}
.trust-dot{color:var(--gold);font-size:1.4rem;padding:0 2rem;}
/* ===================== PRIMEIRA VEZ (redução de estigma) =====================
   Fala com quem ainda está hesitando, não com quem já decidiu. Tom factual e
   acolhedor; nada de promessa de resultado nem urgência (limites do CFP).
   Vive num modal (mesmo padrão do quiz), aberto pelo gancho do hero. */
.pv-eyebrow{display:inline-block;color:var(--gold);font-family:'Roboto',sans-serif;font-size:.92rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;line-height:1.3;}
.pv-modal-h{font-family:'Roboto',sans-serif;font-size:1.35rem;color:var(--purple);font-weight:700;margin:.5rem 0 .4rem;line-height:1.3;text-wrap:balance;}
.pv-modal-sub{color:var(--text-mid);font-size:.88rem;line-height:1.65;margin:0 0 1.2rem;text-wrap:pretty;}
.pv-modal-cards{display:flex;flex-direction:column;gap:.8rem;margin:0 0 1.4rem;}
.pv-card{background:var(--lavender);border:1px solid var(--purple);border-radius:18px;padding:1.1rem 1.15rem;text-align:left;display:flex;flex-direction:column;gap:.45rem;}
.pv-card strong{color:var(--purple);font-family:'Roboto',sans-serif;font-size:.92rem;line-height:1.45;}
.pv-card p{font-size:.84rem;color:var(--text-mid);line-height:1.6;margin:0;text-wrap:pretty;}
.pv-cta-nota{font-size:.78rem;color:var(--text-light);}
/* Gancho de uma linha no hero, embaixo dos botões */
.hero-primeira-vez{background:none;border:none;cursor:pointer;color:rgba(255,255,255,.88);font-family:'Roboto',sans-serif;font-size:.85rem;text-decoration:underline;text-underline-offset:4px;margin-top:1rem;min-height:44px;padding:.4rem .8rem;transition:color .2s;}
.hero-primeira-vez:hover{color:#fff;}
/* TABLET (iPad retrato, Android 10"): a coluna de 56% ficaria estreita demais
   e o título quebraria em cinco linhas. Aqui o texto volta a usar a largura
   toda, porque nesta proporção a personagem já sai quase inteira do quadro. */
@media(min-width:641px) and (max-width:1024px){
  .hero-content{max-width:none;padding:clamp(6rem,12vh,8.5rem) 7% clamp(2rem,5vh,3.5rem);}
  .hero-h1{font-size:clamp(2.42rem,5.98vw,3.57rem);line-height:1.14;}
  .hero-sub{font-size:1.17rem;max-width:46ch;line-height:1.6;}
  .hero-btns{gap:.8rem;}
  .hero-br-wide{display:none;}
}
/* Só no desktop de verdade (pedido 31/07/2026).

   PROPORÇÃO ENTRE AS DUAS LINHAS DO TÍTULO. A primeira versão encolhia só a
   dourada (.85em) e deixava a branca em 1em — o efeito colateral era que a
   dourada, que é a promessa da marca, virava a MENOR das duas, invertendo a
   hierarquia em relação ao celular (onde a branca é que é menor, .78em).

   Agora o ajuste é dos dois lados: a dourada volta ao seu tamanho de projeto
   (1em) e quem cede é a branca (.9em). O bloco todo continua mais baixo do
   que era — que é o ganho de espaço que se queria —, mas a ordem de leitura
   passa a ser a mesma nos dois aparelhos: dourada maior, branca menor.

   O parágrafo também fica mais colado nos botões, com o mesmo respiro que já
   existe entre os botões e o gancho "Nunca fez terapia?". */
@media(min-width:1025px){
  /* TAMANHO AMARRADO TAMBÉM À ALTURA DA JANELA (31/07/2026).

     O que aconteceu: com as quebras manuais novas, o título passou a ocupar
     até 7 linhas no desktop (3 da dourada + 4 da branca). Como o hero tem
     altura FIXA (100svh) e `overflow:hidden`, o excedente não gerou rolagem —
     ele CORTOU os botões de CTA, que sumiram da tela.

     O `clamp` antigo só olhava a largura (5.4vw até 4.55rem), e largura não
     diz nada sobre quantas linhas cabem. Agora o valor do meio é
     `min(3.5vw, 6vh)`: em monitor largo mas baixo — notebook de 1366x768, que
     é onde o problema apareceu — quem limita passa a ser a altura, e o texto
     encolhe sozinho até caber. Em tela alta ele volta a crescer até o teto.

     É isto que impede o corte de voltar se alguém acrescentar mais uma quebra
     depois. Não trocar por um clamp só de largura. */
  /* A ESCALA SUBIU DEPOIS QUE A ALTURA FICOU PREVISÍVEL.

     Histórico, porque a razão importa: enquanto as quebras dependiam da
     fonte, cada aumento mudava o número de linhas e a altura era impossível
     de prever — por isso este valor nasceu conservador (6vh), o que deixou o
     texto menor que a referência aprovada. Com as quebras fixas em <br>, o
     título tem SEMPRE 4 linhas brancas e 2 douradas, então a altura vira uma
     conta fechada e a fonte pode crescer até o limite real.

     De 7vh para 7.9vh (~13%). Medi a folga que sobrava entre o gancho
     "Nunca fez terapia?" e a barra de vantagens em ~72px; este aumento
     consome ~41px e deixa ~30px de reserva. É o teto prudente: acima disso a
     reserva some e volta o risco de corte. */
  .hero-h1{font-size:clamp(1.9rem, min(4.2vw, 7.9vh), 4.2rem);}
  .hero-h1 .line2{font-size:.9em;}
  .hero-sub{margin-bottom:1rem;}
}
/* JANELA DE DESKTOP BAIXA: SOLTA AS QUEBRAS.

   Com as quatro linhas fixas, o título ocupa uma altura previsível — e é
   justamente isso que permite calcular se ele cabe. A conta: o conteúdo do
   hero precisa de ~6,3x o tamanho da fonte mais ~220px fixos, contra uma
   altura útil de ~0,9 da janela menos 83px. Abaixo de ~660px de janela essa
   conta não fecha, e o resultado seria o corte dos botões de novo.

   Em vez de encolher mais a fonte (que ficaria pequena demais), aqui as
   quebras são liberadas: o texto volta a fluir e ocupa menos linhas, que é
   exatamente a folga necessária.

   O limite subiu de 660px para 740px junto com o aumento da fonte: texto
   maior come a folga mais cedo, então a faixa de janelas que precisa desta
   liberação ficou maior. Se um dia a fonte subir de novo, este número sobe
   junto — os dois andam sempre na mesma direção. */
@media(min-width:1025px) and (max-height:740px){
  .hero-br-h1{display:none;}
}
/* Monitor grande: sobra espaço vertical de verdade, então o texto cresce em
   vez de ficar uma ilha pequena no meio do vídeo. */
@media(min-width:1600px){
  .hero-content{max-width:min(1020px,50%);padding-top:clamp(8rem,15vh,11rem);}
}
/* iOS: `100vh` no Safari inclui a barra de endereço que some ao rolar, e a
   barra de vantagens ficava cortada na primeira tela. `100svh` já é usado no
   grupo; aqui só garantimos que o conteúdo não force altura maior que ela. */
@supports (height:100svh){
  .hero-trust-group{height:100svh;}
}
@media(max-width:760px){
  .hero-primeira-vez{font-size:.82rem;margin-top:.6rem;}
  .pv-card{padding:1rem .95rem;}
  /* Mesmo respiro de área segura que o modal do quiz tem no celular */
  #primeira-vez-modal-overlay{padding:max(1rem,env(safe-area-inset-top)) 1rem max(1rem,env(safe-area-inset-bottom)) !important;}
}

.find-section{background:var(--lavender);padding:6rem 7%;display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:center;}
.find-h2{font-family:'Roboto',sans-serif;font-size:clamp(1.8rem,3.5vw,2.8rem);font-weight:700;line-height:1.2;color:var(--purple);margin-bottom:1rem;}
.find-text{font-size:1rem;color:var(--text-mid);line-height:1.8;margin-bottom:1rem;}
.price-tag{font-family:'Roboto',sans-serif;font-style:italic;font-size:1.4rem;font-weight:700;color:var(--purple);margin-bottom:1.5rem;display:block;}
.ornament-line{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;color:var(--purple);}
.ornament-line hr{flex:1;min-width:0;margin:0;border:none;border-top:1px solid var(--border);}
.ornament-sym{font-size:1.5rem;}
/* Variante dourada, usada pra abrir e fechar a seção de prova social.
   As linhas usam gradiente que some nas pontas em vez de um traço reto de
   ponta a ponta: o traço reto e uniforme ficava pesado e ao mesmo tempo
   apagado no meio da faixa clara. A largura é limitada aqui (não por style
   inline) pra ficar centralizado sem depender de margin auto no HTML. */
.ornament-gold{max-width:620px;margin:0 auto 2.6rem;gap:1.2rem;}
.ornament-gold hr{border-top:none;height:1px;background:linear-gradient(90deg,transparent,rgba(181,139,45,.55),transparent);}
.ornament-gold .ornament-sym{color:var(--gold);font-size:1.35rem;line-height:1;opacity:.95;}
/* Quando fecha a seção, o respiro vai em cima em vez de embaixo. */
.ornament-fim{margin:3rem auto 0;}
/* -15% na escala (pedido 02/08). A largura é 85% da coluna e a imagem fica
   centrada nela: mexer só na largura basta porque o `aspect-ratio:4/3` faz a
   altura acompanhar sozinha, sem deformar nem cortar nada de novo. */
.illus-wrap{width:85%;margin-left:auto;margin-right:auto;border-radius:24px;overflow:hidden;box-shadow:0 24px 64px rgba(74,50,114,.2);transition:transform .4s cubic-bezier(.22,1,.36,1),box-shadow .4s;aspect-ratio:4/3;}
.illus-wrap:hover{transform:translateY(-6px) rotate(-.5deg);box-shadow:0 36px 80px rgba(74,50,114,.28);}
.illus-wrap img{width:100%;height:100%;object-fit:cover;object-position:center center;display:block;}
.illus-wrap-tall{border-radius:20px 100px 20px 20px;overflow:hidden;box-shadow:0 20px 56px rgba(74,50,114,.18);transition:transform .4s cubic-bezier(.22,1,.36,1);aspect-ratio:3/4;}
.illus-wrap-tall:hover{transform:translateY(-6px);}
.illus-wrap-tall img{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block;}
@media(min-width:901px){.mission-section .illus-wrap-tall{width:80%;margin:0 auto;}}
.pros-section-home{background:var(--lavender-mid);padding:5rem 7%;}
.pros-carousel-wrap{position:relative;display:flex;align-items:center;gap:.75rem;}
.pros-grid-home{display:flex;gap:1.5rem;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scroll-padding-left:.25rem;padding:.5rem .25rem 1.2rem;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex:1;min-width:0;}
.pros-grid-home::-webkit-scrollbar{display:none;}
.pros-grid-home .pro-card-home{flex:0 0 275px;scroll-snap-align:start;}
/* As setas laterais foram removidas: no celular o gesto de arrastar já é
   natural, e no computador os cinco cartões cabem na largura (regra abaixo),
   então elas não tinham mais função em tela nenhuma. */
@media(max-width:768px){
  .pros-grid-home{gap:1rem;scroll-padding-left:5%;padding:.5rem 5% 1.2rem;margin:0 -5%;}
  .pros-grid-home .pro-card-home{flex:0 0 80vw;}
}
/* Faixa de TABLET (769-1024px, cobre iPad em retrato e a maioria dos Android
   de 10"). Antes desta regra existia um vão real entre max-width:768/900px
   (onde o site vira "celular") e min-width:1200px (onde ganha reforços de
   desktop grande): de 769 a 1199px nada era pensado especificamente, e o
   carrossel de profissionais rodava com card de 275px, cabendo só ~2,5 por
   vez visíveis de uma vez - apertado e com sensação de quebra num tablet em
   pé. Cards um pouco menores cabem 3 inteiros sem cortar o quarto pela
   metade. Ver preferências: considerar sempre a faixa de tablet daqui pra
   frente, não só celular/desktop. */
@media(min-width:769px) and (max-width:1024px){
  .pros-grid-home .pro-card-home{flex:0 0 230px;}
  .pro-card-home{padding:2rem 1.4rem;}
}
.pro-card-home{background:var(--white);border-radius:20px;padding:2.4rem 1.8rem;display:flex;flex-direction:column;align-items:center;text-align:center;border:1px solid rgba(107,79,160,.1);box-shadow:0 4px 20px rgba(74,50,114,.07);transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s;cursor:pointer;position:relative;overflow:hidden;}
.pro-card-home:hover{transform:translateY(-8px);box-shadow:0 20px 48px rgba(74,50,114,.15);}
.pro-card-home::before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.3) 50%,transparent 60%);background-size:200%;opacity:0;pointer-events:none;transition:opacity .3s;}
.pro-card-home:hover::before{opacity:1;animation:shimmer .65s ease forwards;}
.pro-card-img-home{width:188px;height:188px;border-radius:50%;overflow:hidden;margin:0 auto 1.2rem;border:2px solid var(--gold);background:var(--foto-luz);}
.pro-card-img-home svg{width:100%;height:100%;}
.pro-info-home{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;}
/* NOME EM DUAS LINHAS, JUNTAS (pedido 02/08): sem line-height explícito o
   navegador usava o padrão (~1.5), e um nome de 4 ou 5 partes quebrava com um
   vão largo no meio, lendo como duas informações. `balance` reparte as
   palavras entre as linhas em vez de deixar uma órfã embaixo.

   NOME COMPRIDO QUEBRA SEMPRE (segunda leva, 02/08). Antes a quebra dependia
   só da largura do cartão: "Olimpio Andre dos Santos Monteiro" estourava e
   quebrava, "Isabella Cristina Ribeiro Souza" cabia raspando numa linha só, e
   os cartões vizinhos ficavam com abordagem, CRP e botão em alturas
   diferentes. O `max-width` de 17ch força a quebra bem antes da borda.

   O 17ch não é chute: o nome mais longo do elenco é "Júlio César Thales
   Santos de Pedro", cujo maior pedaço depois do balanceamento é
   "Júlio César Thales" — que cabe em 17ch. Passar disso deixaria nomes em
   uma linha; ficar abaixo jogaria os mais longos para TRÊS linhas.

   O `min-height` de duas linhas fecha o serviço: mesmo um nome curto, que
   continua numa linha só, ocupa a mesma altura, então tudo que vem depois
   nasce na mesma altura em todos os cartões da fileira. */
.pro-name-home{font-family:'Roboto',sans-serif;font-size:1.2rem;font-weight:700;color:var(--purple-dark);margin-bottom:.16rem;line-height:1.18;min-height:2.36em;max-width:min(100%,17ch);text-wrap:balance;overflow-wrap:break-word;}
/* `max-width:22ch` forçava quebra mesmo quando havia espaço; com uma abordagem
   por linha ele não é mais necessário e só atrapalhava.
   Abordagem e CRP viraram um bloco só (pedido 02/08): o vão entre os dois caiu
   para quase nada, e o conjunto ficou mais perto do NOME (.16rem acima) do que
   do botão (1,15rem abaixo), que é a leitura pedida. */
.pro-spec-home{font-size:.82rem;color:var(--text-mid);font-weight:600;margin-bottom:.04rem;line-height:1.45;max-width:100%;}
/* CRP discreto sob a abordagem: menor e mais claro que ela, mas legivel.
   Ele herda o 1rem de respiro que era da abordagem, para o card nao crescer. */
.pro-crp-home{font-size:.72rem;color:var(--text-light);font-weight:500;letter-spacing:.02em;margin-bottom:1.15rem;line-height:1.3;margin-top:0;}
.abordagem-linha{display:block;}
.abordagem-linha + .abordagem-linha{margin-top:2px;}
.mission-section{background:var(--lavender);padding:6rem 7%;display:grid;grid-template-columns:1fr 1.5fr;gap:5rem;align-items:center;}
.mission-h2{font-family:'Roboto',sans-serif;font-size:clamp(1.8rem,3vw,2.6rem);font-weight:700;line-height:1.2;color:var(--purple);margin-bottom:1.2rem;}
.mission-text-p{font-size:1rem;color:var(--text-mid);line-height:1.85;margin-bottom:.75rem;}
/* Frase sobre formação contínua dos profissionais some em mobile/tablet
   (pedido 31/07/2026): sem problema ético em variar o texto por dispositivo
   aqui, é só uma diferença de quanto detalhe cabe na tela — o essencial da
   missão (acesso simples, seguro e humanizado) continua em todos. */
@media(max-width:1024px){
  .mission-text-extra{display:none;}
}
.mission-link{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--purple);text-decoration:none;border-bottom:1px solid var(--purple);}
.sec-label{font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--purple-light);margin-bottom:.5rem;}
.faq-section{background:var(--white);padding:6rem 7%;display:grid;grid-template-columns:1fr 1.6fr;gap:5rem;align-items:start;}
.faq-label{font-family:'Roboto',sans-serif;font-size:2.2rem;font-weight:700;color:var(--purple-dark);line-height:1.1;}
.faq-label .normal{display:block;font-weight:400;color:var(--text-dark);}
.faq-sub{font-size:.95rem;color:var(--text-mid);margin:.75rem 0 1.5rem;}
.faq-item{border-bottom:1px solid var(--border);}
.faq-q{display:flex;justify-content:space-between;align-items:center;padding:1.4rem 0;cursor:pointer;gap:1rem;transition:color .2s;}
.faq-q:hover{color:var(--purple);}
.faq-q h3{font-size:1.12rem;font-weight:600;}
.faq-chevron{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--purple);transition:transform .3s,background .2s;font-size:.9rem;font-weight:700;}
.faq-chevron.open{transform:rotate(45deg);background:var(--purple);border-color:var(--purple);color:white;}
.faq-answer{font-size:1rem;color:var(--text-mid);line-height:1.8;max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.22,1,.36,1),padding .3s;}
.faq-answer.open{max-height:300px;padding-bottom:1.2rem;}
/* Bloco expansivel: as 4 duvidas que mais pesam na decisao ficam abertas na
   pagina e o resto vem atras de uma seta. Lista longa de sanfonas fechadas
   custa atencao e empurra o contato para baixo da dobra. */
.faq-mais{display:flex;align-items:center;gap:.5rem;margin-top:1.4rem;background:none;border:0;padding:.7rem 0;cursor:pointer;font-family:inherit;font-size:1rem;font-weight:600;color:var(--purple);transition:opacity .2s;}
.faq-mais:hover{opacity:.72;}
.faq-mais-seta{display:inline-block;transition:transform .3s;font-size:.85rem;}
.faq-mais[aria-expanded="true"] .faq-mais-seta{transform:rotate(180deg);}
.faq-extras[hidden]{display:none;}
.contact-section{background:var(--white);padding:6rem 7%;display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:start;}
.contact-h2{font-family:'Roboto',sans-serif;font-size:2rem;font-weight:700;color:var(--purple-dark);margin-bottom:.5rem;}
.contact-sub{font-size:1rem;color:var(--text-mid);margin-bottom:1.5rem;}
.contact-label{font-size:1rem;font-weight:700;color:var(--text-dark);margin-bottom:1rem;}
.contact-form{display:flex;flex-direction:column;gap:1.1rem;}
.contact-form .btn-dark{border-radius:100px;padding:.9rem 2.8rem;margin-top:.4rem;}
.contact-form button[type="submit"]{align-self:center;}
.contact-form input,.contact-form textarea{width:100%;border:none;outline:none;background:#F1EDF8;border-radius:12px;padding:.9rem 1.2rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);transition:background .2s,box-shadow .2s;}
.contact-form input:focus,.contact-form textarea:focus{background:#E8E0F5;box-shadow:0 0 0 2px var(--purple-light);}
.contact-form textarea{min-height:120px;resize:vertical;}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--text-light);}
.contact-imgs{position:relative;}
/* -20% na escala (85% -> 68% da coluna). */
.contact-img-main{width:68%;border-radius:20px;overflow:hidden;box-shadow:0 16px 48px rgba(74,50,114,.18);margin-left:auto;aspect-ratio:4/3;transition:transform .4s;}
.contact-img-main:hover{transform:translateY(-5px);}
.contact-img-main img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
/* -10% na escala (60% -> 54%). A sobreposição com a imagem de cima se
   mantém porque as duas encolheram e as margens negativas continuam iguais. */
/* Sobreposição maior sobre a imagem de cima (pedido 02/08): -3rem virou
   -5.2rem, e a foto andou para a direita (9%) para o encaixe cair sobre o
   canto da imagem principal, que é alinhada à direita, em vez de sobrar
   pendurada no vazio da esquerda. */
.contact-img-secondary{width:54%;border-radius:16px;overflow:hidden;box-shadow:0 12px 32px rgba(74,50,114,.15);margin-top:-5.2rem;margin-left:9%;position:relative;z-index:2;aspect-ratio:4/3;transition:transform .4s;}
.contact-img-secondary:hover{transform:translateY(-4px) rotate(1deg);}
.contact-img-secondary img{width:100%;height:100%;object-fit:cover;display:block;}
footer{background:var(--white);border-top:1px solid var(--border);padding:3rem 7%;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:3rem;align-items:start;}
.footer-brand-name{font-family:'Roboto',sans-serif;font-size:1.3rem;font-weight:700;color:var(--purple-dark);margin-bottom:.5rem;}
.footer-brand-tag{font-size:.8rem;color:var(--text-light);margin-bottom:.75rem;}
footer h4{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-light);margin-bottom:1rem;}
footer ul{list-style:none;display:flex;flex-direction:column;gap:.55rem;}
footer ul a{font-size:.88rem;color:var(--text-mid);text-decoration:none;transition:color .2s;cursor:pointer;}
footer ul a:hover{color:var(--purple);}
.footer-bottom{background:var(--purple);border-top:1.5px solid var(--gold);padding:1rem 7%;display:flex;justify-content:space-between;font-size:.78rem;color:rgba(255,255,255,.5);}
/* AGENDA */
#page-agenda{background:var(--lavender);}
.agenda-hero{position:relative;min-height:400px;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:106px 1.2rem 2.2rem;border-bottom:1px solid var(--gold);}
/* O segundo valor é o eixo vertical. DIMINUIR faz a foto descer (corta menos
   do topo), AUMENTAR faz subir. Estava em 12% e a cabeça dela ficava atrás do
   menu fixo; 4% desce cerca de 45px numa tela de 1440px. O mínimo útil é 0%. */
.agenda-hero-bg{position:absolute;inset:0;background-image:var(--doxa-couch);background-size:cover;background-position:right top;background-repeat:no-repeat;background-color:var(--purple-dark);}
.agenda-hero-overlay{position:absolute;inset:0;background:rgba(97,68,104,.7);}
.agenda-hero-title{position:relative;z-index:2;font-family:'Roboto',sans-serif;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;color:white;text-align:center;text-shadow:0 2px 14px rgba(0,0,0,.55);}
.filters-section{background:var(--lavender);padding:2.5rem 7%;}
.filters-wrap{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:1rem;max-width:880px;margin:0 auto;justify-content:center;align-items:center;}
.filter-input{border:1.5px solid var(--border);border-radius:12px;padding:.75rem 1.1rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);background:var(--white);outline:none;cursor:pointer;transition:border-color .2s,box-shadow .2s;appearance:none;-webkit-appearance:none;width:100%;}
.filter-input:focus{border-color:var(--purple-light);box-shadow:0 0 0 2px rgba(139,107,190,.2);}
.filter-select-wrap{position:relative;}
.filter-select-wrap::after{content:'v';position:absolute;right:1rem;top:50%;transform:translateY(-50%);color:var(--text-light);font-size:.85rem;pointer-events:none;}
.agenda-pros-wrap{padding:1.5rem 7% 4rem;}
.agenda-pros-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:1.5rem;}
.agenda-pro-card{background:var(--white);border-radius:20px;padding:2.2rem;display:flex;align-items:center;gap:1.8rem;border:1px solid rgba(107,79,160,.1);box-shadow:0 4px 16px rgba(74,50,114,.06);transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s;cursor:pointer;position:relative;overflow:hidden;}
.agenda-pro-card:hover{transform:translateY(-5px);box-shadow:0 16px 40px rgba(74,50,114,.14);}
.agenda-pro-card::before{content:'';position:absolute;inset:0;z-index:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.35) 50%,transparent 60%);background-size:200%;opacity:0;pointer-events:none;transition:opacity .3s;}
.agenda-pro-card:hover::before{opacity:1;animation:shimmer .65s ease forwards;}
.agenda-pro-photo{width:176px;height:176px;border-radius:50%;overflow:hidden;flex-shrink:0;border:2px solid var(--gold);background:var(--foto-luz);position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:center;}
/* LUZ DE ESTÚDIO DENTRO DO CÍRCULO.

   As fotos dos profissionais têm fundo transparente, então o `background` do
   próprio <img> aparece ATRÁS da pessoa. Trocando o roxo chapado por um
   gradiente, ganha-se o mesmo efeito do hero do perfil sem elemento extra
   nenhum — e vale para qualquer miniatura que use esta variável.

   A luz não é centrada: o foco fica a 78% da altura, na linha do tronco, e
   levemente à esquerda (46%). Centrada no meio do círculo ela lê como auréola
   atrás da cabeça; embaixo e de lado, lê como luz de estúdio.

   Fotos sem transparência simplesmente ignoram isto, sem prejuízo. */
:root{
  /* Raios 50% maiores: 66%->99% e 52%->78%. As paradas de cor foram junto,
     senão o clarão viraria uma mancha chapada — espalhar a luz sem alongar o
     degradê deixa a borda dura. O foco continua a 78% da altura e a 46% da
     largura: embaixo e levemente de lado, como luz de estúdio. */
  --foto-luz: radial-gradient(ellipse 99% 78% at 46% 78%,
    rgba(255,255,255,.26) 0%,
    rgba(243,230,248,.16) 30%,
    rgba(186,150,199,.085) 56%,
    rgba(130,96,140,.03) 78%,
    rgba(97,68,104,0) 100%), var(--purple);
}
.agenda-pro-photo-img{width:100%;height:100%;object-fit:cover;object-position:center top;border-radius:50%;display:block;background:var(--foto-luz);}
.agenda-pro-photo svg{width:100%;height:100%;}
.agenda-pro-info{flex:1;position:relative;z-index:1;}
.agenda-pro-name{font-family:'Roboto',sans-serif;font-size:1.15rem;font-weight:700;color:var(--purple-dark);margin-bottom:.3rem;}
.agenda-pro-spec{font-size:.85rem;color:var(--text-mid);font-weight:600;line-height:1.4;margin-bottom:.6rem;}
.agenda-pro-audience{display:flex;align-items:center;gap:.4rem;font-size:.78rem;font-weight:600;color:#614468;margin-bottom:.9rem;}
.agenda-pro-audience svg{flex-shrink:0;}
.pro-tags-pills{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;}
.pro-tag-pill{background:var(--lavender);color:var(--purple-dark);font-size:.7rem;font-weight:600;padding:.25rem .65rem;border-radius:100px;white-space:nowrap;border:1px solid var(--border);}
.btn-acessar{background:var(--purple-dark);color:var(--white);padding:.6rem 1.6rem;border-radius:100px;font-size:.8rem;font-weight:700;letter-spacing:.06em;text-decoration:none;display:inline-block;transition:background .2s,transform .15s;cursor:pointer;border:none;font-family:'Roboto',sans-serif;}
.btn-acessar:hover{background:var(--purple);transform:scale(1.04);}
.agenda-info-section{background:var(--white);padding:4rem 7%;text-align:center;}
/* Alinhado à esquerda: o bloco continua centralizado na coluna (margin auto),
   só o texto deixa de ser centralizado. Parágrafo longo centralizado obriga o
   olho a procurar o início de cada linha. */
.agenda-info-text{font-size:1rem;color:var(--text-mid);line-height:1.85;max-width:700px;margin:0 auto 1.5rem;text-align:left;}
.agenda-info-highlight{font-size:1.05rem;font-weight:700;color:var(--text-dark);max-width:700px;margin:0 auto;line-height:1.6;}
.no-results{text-align:center;padding:3rem;color:var(--text-light);font-size:1rem;display:none;grid-column:1/-1;}
#cursor-glow{position:fixed;top:0;left:0;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(139,107,190,.06) 0%,transparent 70%);pointer-events:none;z-index:0;will-change:transform;transform:translate(-9999px,-9999px);}
/* PROFILE PAGE */
#page-profile{background:var(--lavender);}
.profile-hero{position:relative;padding:0 4% 0;background:var(--lavender);}
.profile-hero-inner{position:relative;border-radius:26px;border:1.5px solid var(--gold);background:var(--purple);padding:3.2rem 4% 0;display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:end;min-height:480px;overflow:hidden;}
.profile-info-card{background:transparent;padding:0 0 3.4rem 0;position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-start;animation:fadeLeft .8s cubic-bezier(.22,1,.36,1) both;}
.profile-eyebrow{display:flex;align-items:center;gap:.6rem;margin-bottom:1.3rem;}
.profile-eyebrow-badge{width:30px;height:30px;border:1.5px solid var(--gold);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.profile-eyebrow span:last-child{font-size:.76rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-light);}
.profile-name{font-family:'Roboto',sans-serif;font-size:clamp(2rem,4vw,3.2rem);font-weight:700;color:#fff;margin-bottom:1.1rem;line-height:1.12;}
.profile-name-divider{width:64px;height:2px;background:var(--gold);margin-bottom:1.3rem;}
/* Mesmo princípio do card: CRP, abordagem e público formam um bloco só. */
.profile-crp{font-size:1.1rem;font-weight:700;color:#fff;margin-bottom:.2rem;line-height:1.3;}
.profile-abordagem{font-size:1.03rem;color:rgba(255,255,255,.8);line-height:1.35;margin-bottom:.15rem;}
.profile-audience{display:flex;align-items:center;gap:.45rem;font-size:.92rem;font-weight:700;color:var(--gold-light);margin-top:.3rem;line-height:1.35;}
.profile-audience svg{flex-shrink:0;}
.profile-tags-wrap{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.4rem;}
/* SELO "ATENDE EM LIBRAS".
   Verde (--green) para se separar do dourado, que na Doxa marca credencial de
   registro (CRP). O selo NÃO é certificação oficial de ninguém: é a informação
   de que aquele profissional atende naquela língua, e por isso o texto diz
   exatamente isso. Usar a marca do VLibras ou brasão de governo aqui daria a
   entender endosso oficial, que não existe. */
.selo-libras{display:inline-flex;align-items:center;gap:.4rem;background:var(--green);color:#fff;border-radius:100px;padding:.3rem .72rem;font-family:'Roboto',sans-serif;font-size:.74rem;font-weight:700;letter-spacing:.01em;line-height:1.2;white-space:nowrap;box-shadow:0 2px 8px rgba(63,105,76,.28);}
.selo-libras svg{flex:0 0 auto;}
.selo-libras-lg{font-size:.86rem;padding:.42rem .95rem;}
/* No perfil a linha fica sobre o roxo do cartão, então o verde escuro dos
   cards não serviria: aqui ela vira etiqueta clara, com o mesmo peso visual
   que o selo antigo tinha. */
/* A caixa ocupava a largura toda e o texto quase sumia sobre o roxo: o fundo
   era translúcido (14% de branco) e a cor do texto, um lilás claro.

   Agora: fundo branco a 80% (deixa o roxo do perfil transparecer de leve),
   texto num verde mais escuro (#2F5039) para manter contraste, filete dourado fino.
   `#profile-selo-libras` é um ID, então precisa entrar no seletor — sem ele o
   `display:block` do contêiner continuaria esticando a caixa de ponta a ponta.
   `width:fit-content` fecha a caixa no tamanho do texto. */
#profile-selo-libras .libras-publico-perfil,
.libras-publico-perfil{display:inline-flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.80);border:1px solid var(--gold);border-radius:100px;
  padding:.42rem 1rem;font-size:.88rem;color:#2F5039;font-weight:600;
  width:fit-content;max-width:100%;margin-top:0;
  box-shadow:0 2px 10px -4px rgba(62,42,69,.35);}
.libras-publico-perfil strong{color:#2F5039;font-weight:800;}
#profile-selo-libras{display:block;}
.selo-libras-card{margin:.35rem 0 .1rem;}
@media(max-width:520px){
  .selo-libras{font-size:.7rem;padding:.26rem .6rem;}
  .selo-libras-lg{font-size:.78rem;padding:.36rem .8rem;}
}
.profile-tag{display:inline-block;background:rgba(255,255,255,.12);color:#EFE6F2;padding:.42rem .95rem;border-radius:100px;font-size:.85rem;font-weight:500;border:1px solid rgba(255,255,255,.18);}
.profile-tag-more{cursor:pointer;user-select:none;background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.35);font-weight:700;letter-spacing:.02em;transition:background .15s;}
.profile-tag-more:hover,.profile-tag-more:focus-visible{background:rgba(255,255,255,.34);outline:none;}
.profile-video-iframe{width:100%;height:100%;border:none;}
.video-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.95);display:flex;align-items:center;justify-content:center;z-index:9999;animation:fadeIn 0.3s ease;}
.video-modal-content{position:relative;width:90vw;height:90vh;max-width:1200px;max-height:720px;background:#000;border-radius:12px;overflow:hidden;}
.video-modal-close{position:absolute;top:15px;right:15px;background:rgba(255,255,255,0.9);border:none;width:40px;height:40px;border-radius:50%;font-size:28px;cursor:pointer;color:#000;display:flex;align-items:center;justify-content:center;z-index:10000;transition:background 0.2s;}
.video-modal-close:hover{background:#EDE5EF;}
.video-modal-container{width:100%;height:100%;}
.video-modal-container iframe,.video-modal-container video{width:100%;height:100%;border:none;}
@keyframes fadeIn{from{opacity:0;} to{opacity:1;}}
.agenda-filter-section{display:flex;flex-wrap:wrap;gap:0.6rem;margin-bottom:1.5rem;padding:0 0 1rem;border-bottom:1px solid rgba(107,79,160,0.1);}

.agenda-filter-section{max-width:1100px;margin:1rem auto 0;padding:0 0 1rem;}
#tags-filter-section{max-width:880px;margin:1rem auto 0;justify-content:flex-start;}
#tags-filter-section .tag-search-wrap{margin:-.4rem 0 1.2rem;}
/* HALO DE LUZ ATRÁS DO PROFISSIONAL.

   É um pseudo-elemento do CONTÊINER da foto, não uma imagem: nasce junto com
   qualquer perfil, inclusive os que forem criados depois, sem precisar editar
   arte nenhuma nem mexer no documento do profissional no Firestore.

   Três decisões deliberadas:
   - fica em `z-index:0` contra o `z-index:1` da foto, então a luz passa POR
     TRÁS da pessoa, nunca por cima do rosto;
   - o gradiente termina em alfa 0 na mesma cor roxa do cartão, e não em
     branco transparente, porque um branco esmaecendo sobre roxo cria uma
     borda cinzenta visível na transição;
   - o centro fica a 55% da altura, na linha do tronco, não atrás da cabeça.
     Halo centrado na cabeça lê como auréola; centrado no tronco lê como luz
     de estúdio, que é o efeito da referência.

   O recorte fica por conta do `overflow:hidden` do .profile-hero-inner, então
   a luz nunca vaza para fora do cartão arredondado. */
.profile-photo-wrap{position:relative;align-self:end;height:480px;display:flex;align-items:end;justify-content:center;animation:fadeUp .9s cubic-bezier(.22,1,.36,1) .15s both;background:transparent;}
/* Luz de estúdio atrás do retrato — RESTAURADA em 05/08/2026: foi removida
   por engano numa caçada a manchas brancas que, no fim, estavam na foto (e
   não neste efeito). O clarão é proposital: não é auréola atrás da cabeça, é
   luz de estúdio vindo de baixo. A primeira camada é o corpo da luz, na
   linha do tronco; a segunda é um rasante largo e baixo, quase no chão. */
.profile-photo-wrap::before{
  content:'';position:absolute;z-index:0;pointer-events:none;
  left:50%;bottom:0;transform:translateX(-50%);
  width:126%;height:120%;
  background:
    radial-gradient(ellipse 42% 44% at 50% 76%,
      rgba(255,255,255,.235) 0%,
      rgba(243,230,248,.175) 28%,
      rgba(199,168,211,.10) 52%,
      rgba(139,104,148,.038) 76%,
      rgba(97,68,104,0) 100%),
    radial-gradient(ellipse 47% 24% at 50% 99%,
      rgba(255,255,255,.16) 0%,
      rgba(228,208,236,.095) 32%,
      rgba(152,116,162,.032) 66%,
      rgba(97,68,104,0) 100%);
}
@media(prefers-reduced-transparency:reduce){
  .profile-photo-wrap::before{opacity:.6;}
}

.profile-photo-wrap img{position:relative;z-index:1;max-height:100%;width:auto;object-fit:contain;object-position:bottom;}
.profile-photo-wrap img{height:100%;width:auto;object-fit:contain;object-position:bottom;display:block;mix-blend-mode:normal;transform:scale(1.05);transform-origin:center bottom;}
/* SEM max-width:100% de proposito (removido em 29/07): com ele, uma foto cuja
   POSE e mais larga (braços mais abertos, como Julio e Olimpio, canvas de
   ~950px contra a faixa normal de 580-770px do resto do elenco) era
   OBRIGADA a encolher inteira - altura E largura - para caber na coluna da
   grade, ficando visivelmente menor/mais distante que as demais no mesmo
   viewport. Sem o limite, a foto sempre renderiza na altura cheia (480px
   desktop / 340px mobile) como todo mundo; se ela ultrapassar a largura da
   coluna, o excesso e apenas coberto pelo proprio card de informacoes ao
   lado (que tem fundo solido e vem depois no DOM), entao nunca aparece
   esticado nem cortado - so deixa de mostrar uma fatia de fundo roxo vazio
   que ninguem notaria de qualquer forma. */
/* Recuo lateral MAIOR (correção 01/08/2026: o pedido era aumentar o respiro
   das bordas da tela, não diminuir). O espaço para o calendário crescer vem
   de dentro do cartão — colunas alinhadas e textos menores — e não das
   margens da página. */
.profile-body{display:grid;grid-template-columns:1fr 1fr;background:var(--lavender);gap:0;padding:0 5% 3rem;align-items:start;}
/* O bloco encolheu ~10% cortando SÓ espaço em branco — recheio do cartão,
   margens entre seções e folgas do calendário. As fontes foram no sentido
   contrário, todas para cima. Era essa a combinação pedida: menos área, mais
   legibilidade. Encolher via `zoom` teria sido uma linha só, mas levaria o
   texto junto, que é justamente o que não se quer. */
.profile-schedule{min-width:0;background:var(--lavender);border-radius:20px;padding:1.85rem 1.7rem;margin:1.2rem 1.5rem 0 0;align-self:start;border:1px solid var(--border);
  /* O `zoom` é o único eixo que encolhe a CAIXA sem tocar na proporção interna.
     Precisei dele porque cortar espaço em branco e aumentar fonte se anulam:
     medi 14% de branco a menos contra 12% de texto a mais, e o bloco terminava
     do mesmo tamanho.

     31/07/2026: de .75 para .82, a pedido de aumentar o texto da agenda, o
     calendário e a lista de horários "cuidando das proporções". Subir o zoom
     é justamente o que faz isso de uma vez só — calendário, horários, caixa
     de pacotes e botões crescem todos na mesma medida (~9%), sem que eu
     precise mexer em duas dezenas de font-sizes e correr o risco de
     desalinhar a harmonia que já existia entre eles.

     CUIDADO ao subir mais: zoom maior significa MENOS largura interna em px
     para o mesmo espaço na tela, então o texto passa a ocupar uma fatia maior
     da linha e volta a quebrar. .82 foi escolhido por deixar folga; acima de
     ~.88 as linhas da caixa de pacotes começam a apertar. */
  zoom:.86;}
.schedule-icon-circle{width:47px;height:47px;border-radius:50%;background:var(--purple-dark);display:flex;align-items:center;justify-content:center;margin-bottom:1.1rem;}
/* O texto do profissional é o conteúdo principal desta página e estava um
   ponto abaixo do corpo de texto do resto do site. Com o calendário ao lado
   agora mais discreto, o peso entre as duas colunas se inverte a favor da
   leitura, que é o que se quer aqui. */
/* 1,4rem a pedido (02/08). Só a página do perfil: o card do "Agende agora"
   continua em .92rem. line-height desce junto (1.8 em letra grande abre vãos
   de parágrafo enormes). */
.profile-bio{background:transparent;padding:2.5rem 1.5rem 0 2rem;font-family:'Roboto',sans-serif;font-style:normal;font-size:1.15rem;line-height:1.7;color:var(--text-dark);}
.profile-bio::before{content:'\201C';display:flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:50%;background:var(--lavender-mid);color:var(--purple);font-family:Georgia,serif;font-size:2.2rem;font-weight:700;margin-bottom:1.2rem;line-height:1;padding-top:.5rem;}
.profile-bio p{margin-bottom:1.1rem;}
.profile-bio p{margin-bottom:1.2rem;margin-left:3.6rem;margin-right:1rem;}
/* Convite final do perfil, opção C escolhida (02/08): filete dourado na
   lateral esquerda, como citação, mais a estrela grande em marca d'água da
   opção B — em ROXO e discreta, a pedido. A linha de fecho com a estrelinha
   entra num elemento próprio logo abaixo (.profile-bio-fecho). Fonte
   acompanha o corpo novo do perfil (1,4rem): menor que o texto ao redor,
   o convite parecia nota de rodapé. */
/* O fundo era var(--lavender), EXATAMENTE a mesma cor do fundo do
   `.profile-body` — por isso o bloco sumia. Agora é um véu roxo por cima do
   que estiver atrás, então ele aparece aqui e continuaria aparecendo se o
   fundo da página mudar. */
/* 1,15rem: o mesmo corpo do texto da bio (decisão 02/08) — o destaque fica
   por conta do negrito, do fundo e do filete dourado, não do tamanho. */
.profile-bio-cta{display:flex;align-items:flex-start;gap:.9rem;background:rgba(97,68,104,.12);border-left:4px solid var(--gold);border-radius:0 14px 14px 0;padding:1.5rem 1.7rem;margin-top:1.6rem !important;font-size:1.15rem;text-align:left;font-style:normal;font-weight:700;color:var(--purple-dark);line-height:1.5;position:relative;overflow:hidden;}
.profile-bio-cta::after{content:'\2726';position:absolute;right:-.35rem;bottom:-1.7rem;font-size:5.6rem;line-height:1;color:rgba(97,68,104,.14);pointer-events:none;}
.profile-bio-cta > *{position:relative;}
/* Dobra "Ler mais" da bio: só existe no empilhado. No desktop o texto sai
   inteiro e o botão some — a regra base já nasce assim, e o media de <=900px
   inverte. O botão é um link discreto no tom do site, alinhado com o recuo
   dos parágrafos. */
.bio-ler-mais{display:none;}
.bio-extra{display:block;}
@media(max-width:900px){
  .bio-extra{display:none;}
  .bio-extra.aberta{display:block;}
  .bio-ler-mais{display:inline-flex;align-items:center;gap:.4rem;background:none;border:none;cursor:pointer;
    font-family:'Roboto',sans-serif;font-size:.95rem;font-weight:600;color:var(--purple-dark);
    padding:.2rem 0;margin:.15rem 0 .85rem 1rem;border-bottom:1.5px solid var(--gold);}
  .bio-ler-mais-chev{font-size:.8rem;line-height:1;transition:transform .25s;}
  .bio-ler-mais.aberto .bio-ler-mais-chev{transform:rotate(180deg);}
}
.profile-bio-fecho{display:flex;align-items:center;gap:.7rem;margin:1.5rem 0 .2rem;color:var(--gold);font-size:.95rem;}
.profile-bio-fecho::before,.profile-bio-fecho::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(181,139,45,.55),transparent);}
.profile-bio-cta::before{content:'';flex-shrink:0;width:34px;height:34px;border:1.5px solid var(--gold);border-radius:50%;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23B58B2D' stroke-width='1.8'%3E%3Cpath d='M12 21s-8-4.7-8-11.2C4 6.6 6.6 4 9.6 4c1.6 0 3 .8 3.9 2 1-1.2 2.3-2 3.9-2 3 0 5.5 2.6 5.5 5.8 0 6.5-8 11.2-8 11.2z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center;}
.profile-bio p:last-child{margin-bottom:0;}
.schedule-title{font-family:'Roboto',sans-serif;font-size:2rem;font-weight:700;color:var(--purple-dark);margin-bottom:.08rem;line-height:1.2;}
.schedule-intro{font-size:1.13rem;color:var(--text-mid);line-height:1.45;margin-bottom:0;padding-bottom:0;border-bottom:none;}
.schedule-section-head{display:flex;align-items:baseline;gap:.6rem;padding-bottom:0;margin-bottom:0.45rem;}
.schedule-section-head .passo-limpar{margin-left:auto;}
.schedule-section-head h3{font-family:'Roboto',sans-serif;font-size:1.22rem;font-weight:400;color:var(--purple-dark);display:flex;align-items:center;}
/* TRILHA NUMERADA (V4): círculos roxo-escuro com número dourado guiando as
   três decisões — dia, horário e sessões. São ::before para não tocar no DOM
   que o JS reescreve. O passo 2 só aparece junto com a seção de horários,
   que abre depois de escolher um dia — é o comportamento desejado. */
.schedule-section-head h3::before{content:'1';}
.schedule-day-label::before{content:'2';}
.plano-titulo::before{content:'3';}
.schedule-section-head h3::before,.schedule-day-label::before,.plano-titulo::before{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--purple-dark);color:var(--gold-light);font-size:.85rem;font-weight:700;margin-right:.6rem;flex:none;vertical-align:-6px;font-style:normal;}
.schedule-day-label{display:flex;align-items:center;}
/* Repetições do pacote no calendário: anel dourado + rótulo "2ª","3ª"… */
.calendar-day.cal-rep{box-shadow:inset 0 0 0 2px var(--gold);}
.calendar-day.cal-rep{position:relative;}
/* Dia marcado em sequência pelos chips do passo 3: verde sólido, número da
   repetição em branco, sem o anel (a marcação substitui a sugestão). */
.calendar-day.cal-seq{background:var(--green);color:#fff;box-shadow:none;}
.calendar-day.cal-seq .cal-rep-n{color:#fff;opacity:.9;}
.calendar-day.cal-seq.available::after{background:rgba(255,255,255,.85);}
.cal-rep-n{position:absolute;top:2px;left:50%;transform:translateX(-50%);font-size:.42em;line-height:1;color:#854F0B;font-weight:700;}
.plano-resumo-box{background:var(--lavender);border:1px solid var(--border);border-radius:12px;padding:.7rem .8rem;margin-top:0;}
.plano-resumo-t{display:block;font-size:.9rem;font-weight:700;color:var(--purple-dark);margin-bottom:.4rem;line-height:1.3;}
.plano-resumo-t strong{color:var(--green);}
.plano-resumo-linha{margin-bottom:.3rem;}
.plano-resumo-linha.l1{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;}
.plano-resumo-linha.l1 .plano-resumo-rot{margin:0;}
.plano-resumo-rot{display:block;font-size:.84rem;font-weight:600;color:var(--text-mid);margin-bottom:.25rem;}
.plano-resumo-rot em{font-style:normal;font-weight:400;color:var(--text-light);}
.plano-resumo-chips{display:flex;gap:.28rem;flex-wrap:wrap;}
.plano-resumo-chip{display:inline-flex;align-items:center;gap:.25rem;border-radius:100px;padding:.2rem .62rem;font-size:.81rem;white-space:nowrap;}
/* Chip da 1ª: verde cheio, a única de verdade marcada agora. */
.plano-resumo-chip.primeira{background:var(--green);border:1px solid var(--green);color:#fff;font-weight:700;}
/* Chips de crédito: tracejado dourado; clicáveis para marcar em sequência. */
.plano-resumo-chip.credito{background:#fff;border:1px dashed var(--gold);color:var(--text-mid);cursor:pointer;transition:background .15s,color .15s;}
.plano-resumo-chip.credito:hover{background:#FBF4E4;}
.plano-resumo-chip.credito.marcado{background:var(--green);border:1px solid var(--green);color:#fff;font-weight:700;}
.plano-resumo-chip.credito.rest{background:#FBF4E4;border:1px solid var(--gold);color:var(--purple-dark);font-weight:600;}
.plano-resumo-chip.credito.rest.marcado{background:var(--green);border-color:var(--green);color:#fff;}
.plano-resumo-chip.credito.bloq{opacity:.5;cursor:not-allowed;}
.plano-resumo-nota{display:block;font-size:.77rem;color:var(--text-mid);margin-top:.3rem;line-height:1.45;}
.plano-resumo-nota b{color:var(--purple-dark);}
/* O container #time-slots herda display:flex da classe .time-slots, o que
   punha os rótulos MANHÃ/TARDE-NOITE na mesma linha dos chips (bug visual
   01/08). Como bloco, cada rótulo abre a própria linha e os chips fluem na
   .time-slots-linha logo abaixo. */
#time-slots{display:block;}
.time-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;}
.time-col-chips{display:flex;flex-direction:column;gap:.35rem;align-items:stretch;}
.time-col-chips .time-slot{width:100%;text-align:center;}
.time-col-vazia .time-grupo-rot{opacity:.45;}
.time-grupo-rot{display:block;font-size:.72rem;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .3rem;}
.time-grupo-rot:first-child{margin-top:0;}
.time-slots-linha{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.15rem;}
/* Passo 3 bloqueado: em vez de esmaecer botão a botão, uma TELA translúcida
   cobre a lista inteira com a instrução no meio (pedido 01/08/2026). As
   opções continuam visíveis por baixo; o clique no véu explica o porquê. */
/* Botão "limpar" de cada passo: aparece assim que há algo escolhido naquele
   passo e some quando não há (pedido 01/08/2026). Discreto de propósito, é
   uma saída e não uma ação principal. */
.passo-limpar{background:none;border:1px solid var(--border);border-radius:100px;color:var(--text-mid);font-family:'Roboto',sans-serif;font-size:.72rem;font-weight:600;line-height:1.5;padding:.1rem .55rem;margin-left:.5rem;cursor:pointer;white-space:nowrap;transition:border-color .15s,color .15s;}
.passo-limpar:hover{border-color:var(--purple);color:var(--purple-dark);}
.passo-limpar-ic{flex:none;padding:.05rem .4rem;font-size:.75rem;line-height:1.3;margin-left:.35rem;}
.plano-resumo-topo{display:flex;align-items:flex-start;gap:.2rem;}
.plano-resumo-topo .plano-resumo-t{flex:1;min-width:0;}
.schedule-section-head .passo-limpar{align-self:center;}
.passo2-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.7rem;}
.passo2-head .schedule-day-label{margin-bottom:0;font-size:1.22rem;}
.plano-lista{position:relative;}
.plano-veu{position:absolute;inset:0;z-index:2;background:rgba(247,243,248,.62);display:flex;align-items:center;justify-content:center;border-radius:13px;cursor:not-allowed;}
.plano-veu span{background:#fff;border:1px solid var(--border);border-radius:100px;padding:.5rem 1rem;font-size:.9rem;font-weight:600;color:var(--purple-dark);box-shadow:0 4px 14px rgba(62,42,69,.12);text-align:center;}
.plano-lista-bloq .plano-opcao-bloq{cursor:not-allowed;}
.doxa-toast-cal{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(80px);background:var(--purple-dark);color:#fff;font-size:.85rem;padding:.7rem 1.1rem;border-radius:100px;box-shadow:0 6px 24px rgba(62,42,69,.35);opacity:0;transition:transform .3s,opacity .3s;z-index:9000;max-width:90vw;text-align:center;pointer-events:none;}
.doxa-toast-cal.show{transform:translateX(-50%) translateY(0);opacity:1;}
.passo2-vazio{font-size:.95rem;color:var(--text-mid);background:var(--lavender);border:1px dashed var(--border);border-radius:12px;padding:.7rem .9rem;line-height:1.5;margin:0;}
/* O passo 2 fica AO LADO do calendário no desktop e ACIMA quando empilha
   (<=1100px). O texto acompanha: só um dos dois trechos aparece por vez. */
.p2-dir-cima{display:none;}
@media(max-width:1100px){.p2-dir-lado{display:none;}.p2-dir-cima{display:inline;}}
.timezone{font-size:.74rem;color:var(--text-light);}
/* TIPOGRAFIA DO CALENDÁRIO — ler junto com o `zoom:.8` do .profile-schedule.
   A coluna inteira é reduzida a 80%, e é por isso que os valores aqui pareciam
   grandes demais no código: eles eram inflados para sobreviver ao zoom. Os
   números abaixo já consideram essa conta — o tamanho ENTRE PARÊNTESES é o que
   a pessoa realmente enxerga na tela.
     título do mês  1,25rem (16px)
     dias da semana 0,95rem (12px)
     número do dia  1,15rem (15px)
   Antes eram 18px, 14px e 20px: o número do dia chegava a competir com o
   título da seção, e o bloco todo puxava mais atenção que o texto do perfil. */
.calendar{margin-bottom:1.2rem;}
.calendar-header{display:flex;justify-content:center;align-items:center;gap:.6rem;margin-bottom:.45rem;}
.cal-orn{color:var(--gold);font-size:.98rem;line-height:1;user-select:none;}
/* Cartão dourado: a grade mora num cartão branco de borda dourada fina. */
.calendar-card{background:#fff;border:1px solid var(--gold);border-radius:14px;padding:.75rem .7rem .85rem;max-width:600px;margin-inline:auto;width:100%;}
.calendar-nav{background:transparent;border:none;font-size:1rem;color:var(--purple-dark);cursor:pointer;padding:.35rem .55rem;border-radius:50%;transition:background .15s;font-family:'Roboto',sans-serif;line-height:1;}
.calendar-nav:hover{background:rgba(107,79,160,.1);}
.calendar-title{font-family:'Roboto',sans-serif;font-size:.98rem;font-weight:600;color:var(--text-dark);min-width:118px;text-align:center;}
/* A grade ganhou um teto de largura e ficou centralizada. Sem isso, com os
   dias virando círculos de 46px dentro de colunas de ~85px, sobrariam quase
   40px de vazio entre um dia e o outro — o calendário ficaria esparramado em
   vez de discreto. Com 430px de teto, a coluna cai para ~60px e a folga entre
   círculos fica em torno de 12px. */
/* Teto de 400px em vez de 430: com o círculo em 44px, a coluna cai para
   ~57px e a folga entre dias fica em 13px. Foi por aqui que saiu boa parte do
   branco mal aproveitado — a grade estava larga e os dias, pequenos dentro
   dela. Agora é o contrário: número maior, grade mais justa. */
/* Duas folgas diferentes de propósito: a vertical é quase o triplo da
   horizontal. Com o mesmo valor nos dois eixos, as semanas ficavam grudadas
   e o mês inteiro lia como um bloco achatado — os círculos quase se tocando
   de uma linha para a outra, enquanto sobrava ar entre as colunas. */
/* Vão vertical entre as linhas de dias: .95rem lia como 'recorte' esticado
   no print de 31/07/2026 — cada linha parecia uma faixa solta. .6rem mantém a
   respiração sem alongar a caixa. A largura teto caiu de 530 para 470px junto
   com a célula (74->60px): 7 células + 6 vãos (~449px) cabem com folga. */
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;justify-items:center;max-width:560px;margin-inline:auto;width:100%;}
.calendar-weekdays{gap:.3rem;margin-bottom:.35rem;}
/* Dia que pertence ao mês seguinte dentro da mesma janela de 4 semanas.
   Continua clicável e agendável: o tom mais claro só sinaliza a virada. */
.calendar-day.outro-mes,.multi-cal-day.outro-mes{opacity:.72;}
.calendar-weekdays span{text-align:center;font-size:1.16rem;font-weight:600;color:var(--text-mid);padding:.05rem 0;}
/* O DIA VIRA CÍRCULO DE VERDADE.

   Antes: `aspect-ratio:1.3` (e 1.5 acima de 901px) com `border-radius:50%`.
   Um retângulo 1,3:1 arredondado a 50% não é círculo, é elipse — era isso que
   deixava o dia selecionado com cara de comprimido oval, e quanto mais larga a
   coluna, mais achatado ficava.

   Agora a célula do grid continua ocupando sua fração, mas o alvo clicável é
   limitado a 46px e centralizado com `margin-inline:auto`. Com `aspect-ratio:1`
   sobre uma largura limitada, o resultado é sempre círculo, em qualquer
   largura de coluna. */
.calendar-day{width:min(100%,72px);aspect-ratio:1;margin-inline:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:2.05rem;font-weight:600;line-height:1;color:var(--text-dark);cursor:default;position:relative;border-radius:50%;transition:background .15s,color .15s;user-select:none;padding:0;}
.calendar-day.empty{visibility:hidden;}
.calendar-day.past{color:#C5BBD9;}
.calendar-day.available{cursor:pointer;}
/* MARCADOR DE DISPONIBILIDADE: bolinha VERDE, e no fluxo do flex em vez de
   posicionada de forma absoluta no rodapé da célula. A diferença importa: como
   item do flex, ela entra logo abaixo do número, separada pelo `gap:3px`, e o
   par número+bolinha fica centralizado junto. Absoluta, ela ficava colada na
   borda de baixo do círculo, longe do número e quase invisível. */
/* Dia disponível: sublinhado verde sob o número (escolha 01/08, no lugar do
   ponto). O 1.05em acompanha o corpo do número; o teto evita barra larga
   demais em célula grande. */
.calendar-day.available::after{content:'';position:static;width:1.05em;max-width:34px;height:3px;background:var(--green);border-radius:2px;}
.calendar-day.available:hover{background:rgba(107,79,160,.12);}
.calendar-day.selected{background:var(--purple-dark);color:var(--white);}
/* Sobre o roxo escuro o verde some; o dourado da marca é o que mantém o
   marcador visível no dia selecionado. */
.calendar-day.selected::after{background:var(--gold-light);}
.schedule-times{margin-bottom:1rem;}
.schedule-day-label{font-size:1.22rem;font-weight:400;color:var(--text-dark);margin-bottom:1rem;}
.time-slots{display:flex;flex-wrap:wrap;gap:.4rem;}
.time-slot{background:var(--purple-dark);color:var(--white);padding:.55rem 1.6rem;border-radius:100px;border:none;cursor:pointer;font-family:'Roboto',sans-serif;font-weight:600;font-size:1.05rem;transition:background .2s,transform .15s;}
.time-slot:hover{background:var(--purple);transform:translateY(-1px);}
.time-slot.selected{background:var(--gold);color:var(--text-dark);}
/* A coluna da esquerda tem largura fixa (a da grade); a da direita fica com o
   resto. `minmax(0,1fr)` na direita é obrigatório: sem o mínimo zero, uma
   linha longa de texto empurraria a coluna e quebraria o alinhamento da grade. */
/* A folga entre as duas colunas caiu de 1,9rem para 1,1rem e a divisória
   vertical passou a marcar a separação sozinha — era ela que já fazia esse
   trabalho, o vão largo estava só desperdiçando largura. Os ~13px liberados
   foram inteiros para a coluna da grade, que subiu de 470 para 530px. */
/* As colunas viraram FRAÇÕES (antes 470px fixos): a grade cresce até 560px e
   fica com ~60% da linha; o passo 2 fica com os ~40% restantes — era ali que
   sobrava a área morta marcada em X no print de 01/08. Frações também evitam
   estouro em desktop estreito, onde 470px fixos não caberiam. */
.schedule-cal-row{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);grid-template-rows:auto auto;gap:0 1.1rem;align-items:start;}
/* Os dois cabeçalhos ocupam a mesma linha da grade e esticam à mesma altura,
   então a régua dourada de baixo dos dois fica no MESMO y por construção,
   mesmo que o texto de um deles quebre. */
.schedule-cal-row > .schedule-section-head,
.schedule-cal-row > .passo2-head{align-self:stretch;align-items:center;margin-bottom:var(--respiro-passo,1.15rem);padding-bottom:0;border-bottom:0;}
.schedule-cal-row .calendar{margin-bottom:0;}
/* Passo 2 mora na coluna à direita da grade (pedido 01/08/2026), onde antes
   ficavam os detalhes do serviço. A divisória vertical separa as colunas, e
   os botões de horário ficam um pouco mais compactos aqui porque a coluna é
   mais estreita que o cartão inteiro — cabem 3-4 por fileira. */
.schedule-cal-row .schedule-times{margin-bottom:1rem;
  border-left:1px solid rgba(107,79,160,.18);padding-left:1.5rem;}
/* ZERO, e é isto que põe o título do 2 na mesma linha do título do 1.
   Os dois cabeçalhos são caixas esticadas à mesma altura que centram o
   conteúdo; uma margem embaixo de um deles empurra o texto daquele para
   CIMA metade da margem. Era esse .7rem que deixava o "Horários do dia"
   uns 5px mais alto que o "Selecione uma data e horário". */
.schedule-cal-row .schedule-day-label{margin-bottom:0;}
.schedule-cal-row .time-slots{gap:.35rem;}
.schedule-cal-row .time-slot{padding:.5rem 1.05rem;font-size:1rem;}
/* Cartão estreito (tablet e celular): volta a empilhar, e a divisória
   vertical sai — o passo 2 segue logo abaixo da grade, em largura cheia. */
@media(max-width:1100px){
  .schedule-cal-row{grid-template-columns:1fr;grid-template-rows:none;gap:0;}
  .schedule-cal-row > .schedule-section-head{order:1;}
  .schedule-cal-row > .calendar{order:2;}
  .schedule-cal-row > .passo2-head{order:3;margin-top:var(--respiro-passo,1.15rem);}
  .schedule-cal-row > .schedule-times{order:4;}
  .schedule-cal-row .schedule-times{border-left:0;padding-left:0;}
}
/* Detalhes do serviço viraram uma FAIXA compacta abaixo dos valores (pedido
   01/08/2026): título, tipo e o link "Mostrar detalhes" dividem a mesma
   linha, e o expansível abre por baixo na largura toda. Em tela estreita o
   flex-wrap deixa o link cair para a linha de baixo em vez de espremer. */
/* Fechado, a faixa é uma linha só e não precisa do respiro cheio dos passos;
   o espaço de leitura do conteúdo ABERTO continua vindo do padding do
   .service-info.open, que não mudou. */
.service-details{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.6rem;row-gap:.1rem;padding-top:.25rem;margin-bottom:.15rem;}
.service-details h3{font-family:'Roboto',sans-serif;font-size:1rem;font-weight:400;color:var(--purple-dark);margin-bottom:0;}
.service-type{font-size:.95rem;color:var(--text-dark);margin-bottom:0;}
.service-type::before{content:'·';margin-right:.6rem;color:var(--purple-light);}
.service-toggle{display:flex;align-items:center;gap:.4rem;margin-left:auto;cursor:pointer;font-size:.92rem;color:var(--purple-dark);padding:.15rem 0;}
.service-toggle .chev{transition:transform .25s;font-weight:700;}
.service-toggle.open .chev{transform:rotate(180deg);}
.service-info{flex-basis:100%;align-self:flex-start;max-height:0;overflow:hidden;transition:max-height .35s cubic-bezier(.22,1,.36,1);font-size:.9rem;color:var(--text-mid);line-height:1.65;}
/* Agora o expansível guarda só a explicação dos créditos (Duração e Pagamento
   saíram): é um parágrafo, então bloco normal — não o inline-flex que servia
   às duas linhas curtas de antes, e que cortava o texto longo. O teto sobe
   para caber o parágrafo inteiro em qualquer largura. */
.service-info.open{max-height:400px;padding-top:.55rem;padding-bottom:.35rem;}
.service-info-credito{display:block;margin:0;}
.service-info-credito strong{color:var(--purple-dark);}
/* Cantos de 100px faziam uma cápsula: numa coluna estreita a curva come as
   pontas e o rótulo fica espremido no meio. 12px mantém a forma de botão. */
.btn-next{width:100%;background:var(--purple-dark);color:var(--white);padding:.8rem .85rem;border-radius:12px;border:none;font-size:1.02rem;font-weight:600;letter-spacing:.05em;cursor:pointer;font-family:'Roboto',sans-serif;transition:background .2s,transform .15s;}
.btn-next:hover{background:var(--purple);transform:translateY(-1px);}
.schedule-next-row{display:flex;gap:.8rem;flex-wrap:wrap;}
.schedule-next-row .btn-next{flex:1;width:auto;min-width:200px;}
.btn-next-secondary{background:var(--white) !important;color:var(--purple-dark) !important;border:1.5px solid var(--purple-dark) !important;}
.btn-next-secondary:hover{background:var(--lavender-mid) !important;}
@media(max-width:480px){.schedule-next-row{flex-direction:column;}.schedule-next-row .btn-next{min-width:0;}
  /* Celular estreito: um embaixo do outro, largura cheia nos dois. */
  .schedule-acoes-row .schedule-next-row{grid-template-columns:1fr;gap:.6rem;}}
.btn-next:disabled{background:#B8AAD0;cursor:not-allowed;transform:none;}
.profile-confirmation{display:none;background:var(--green);color:var(--white);padding:1rem 1.4rem;border-radius:12px;margin-top:1rem;font-size:.92rem;text-align:center;animation:fadeUp .4s ease both;}
.profile-back{display:inline-block;margin:0 7% .7rem;color:var(--purple-dark);font-size:.85rem;text-decoration:none;font-weight:600;letter-spacing:.05em;cursor:pointer;padding-top:.7rem;}
/* Trilha de navegação do perfil. Alvos de toque de 44px no celular sem
   engordar a linha no desktop: o padding vertical do link é o que cresce. */
/* A trilha ocupa o respiro que o hero deixava para o menu fixo: o
   `padding-top` daqui é o antigo `calc(80px + 2.2rem)` do hero repartido —
   o menu continua coberto pelos mesmos 80px e o resto virou o vão em que a
   trilha mora. Discreta de propósito: letra pequena, sem fundo, separadores
   dourados que já são a linguagem do site. */
/* RECUOS DA TRILHA (rodada 60): ela vive no vão entre o menu fixo de 80px e
   o cartão do profissional, e estava espremida contra os dois. Agora o vão é
   dividido de forma parecida em cima e embaixo, e o recuo lateral segue o
   mesmo 4% do `.profile-hero`, então o "Início" nasce na mesma vertical da
   borda do cartão. Mexer no padding-top e no margin-bottom juntos é o que
   mantém o cartão no mesmo lugar da página. */
.profile-bc{display:flex;align-items:center;flex-wrap:wrap;gap:.15rem .5rem;margin:0 0 .9rem;padding:calc(80px + 1.05rem) 4% 0;font-size:.82rem;font-weight:600;letter-spacing:.02em;}
.profile-bc-link{color:var(--purple-dark);text-decoration:none;cursor:pointer;padding:.25rem 0;border-bottom:1px solid transparent;transition:border-color .18s;}
.profile-bc-link:hover{border-bottom-color:var(--gold);}
.profile-bc-link:focus-visible{outline:2px solid var(--purple);outline-offset:3px;border-radius:3px;}
.profile-bc-sep{color:var(--gold);font-size:1em;line-height:1;}
.profile-bc-atual{color:var(--text-mid);font-weight:500;min-width:0;overflow-wrap:anywhere;}
@media(max-width:640px){
  .profile-bc{font-size:.8rem;gap:.1rem .35rem;}
  .profile-bc-link{padding:.55rem 0;}
}
.profile-back:hover{color:var(--purple);}
/* BOOKING FORM PAGE */
#page-booking{background:var(--lavender);min-height:100vh;padding-top:80px;}
.booking-wrap{max-width:1200px;margin:0 auto;padding:3rem 5% 5rem;}
.booking-back{display:inline-flex;align-items:center;gap:.4rem;color:var(--text-mid);font-size:.95rem;text-decoration:none;cursor:pointer;margin-bottom:2rem;transition:color .15s;}
.booking-back:hover{color:var(--purple-dark);}
.booking-title{font-family:'Roboto',sans-serif;font-weight:400;font-size:clamp(1.8rem,3.5vw,2.6rem);color:var(--purple-dark);margin-bottom:3rem;}
.booking-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:3rem;align-items:start;}
.booking-form-section h3{font-family:'Roboto',sans-serif;font-weight:400;font-size:1.3rem;color:var(--text-dark);margin-bottom:1.5rem;}
.bk-credito-aviso{background:#E8F5E9;border:1px solid var(--green);border-radius:12px;padding:1rem 1.2rem;font-size:.9rem;line-height:1.6;color:#1B4332;margin-bottom:1.4rem;}
.bk-credito-aviso strong{color:#14532d;}
@media(max-width:640px){
  .bk-credito-aviso{padding:.9rem 1rem;font-size:.86rem;border-radius:10px;}
}
.booking-login-strip{background:#EFE9F5;padding:1.2rem 1.5rem;border-radius:8px;font-size:.95rem;color:var(--text-dark);margin-bottom:2.5rem;}
.booking-login-strip a{color:var(--purple-dark);font-weight:600;text-decoration:underline;cursor:pointer;}
.booking-fields{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem 1.5rem;}
.booking-field{display:flex;flex-direction:column;}
.booking-field.full{grid-column:1 / -1;}
.booking-field label{font-size:.9rem;color:var(--text-dark);margin-bottom:.5rem;}
.booking-field label .req{color:var(--purple-dark);}
.booking-field input,.booking-field textarea{border:1px solid var(--purple-dark);background:transparent;padding:.9rem 1rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);border-radius:2px;outline:none;transition:border-color .15s,box-shadow .15s;}
.booking-field input:focus,.booking-field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(212,164,80,.15);}
.booking-field textarea{resize:vertical;min-height:120px;}
.booking-field input.invalid,.booking-field textarea.invalid{border-color:#C0392B;}
.booking-field .error-msg{color:#C0392B;font-size:.8rem;margin-top:.3rem;display:none;}
.booking-field.invalid .error-msg{display:block;}
.phone-wrap{display:flex;align-items:center;gap:.6rem;border:1px solid var(--purple-dark);padding:0 1rem;border-radius:2px;transition:border-color .15s,box-shadow .15s;}
.phone-wrap:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px rgba(212,164,80,.15);}
.phone-wrap .globe{color:var(--text-mid);font-size:1rem;}
.phone-wrap input{border:none !important;padding:.85rem 0 !important;flex:1;box-shadow:none !important;}
.booking-summary{background:#F5F0FA;padding:2rem;border-radius:8px;position:sticky;top:100px;}
.booking-summary h3{font-family:'Roboto',sans-serif;font-weight:400;font-size:1.2rem;color:var(--text-dark);padding-bottom:1.2rem;border-bottom:1px solid rgba(107,79,160,.18);margin-bottom:1.5rem;}
.summary-pro{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem;}
.summary-pro img{width:42px;height:42px;border-radius:50%;object-fit:cover;background:var(--foto-luz);}
.summary-pro-name{font-weight:600;color:var(--text-dark);font-size:.95rem;}
.summary-modality{font-size:1.05rem;color:var(--text-dark);font-weight:600;margin-bottom:.3rem;}
.summary-datetime{font-size:1rem;color:var(--text-mid);margin-bottom:1rem;}
.summary-online-tag{display:inline-flex;align-items:center;gap:.4rem;background:transparent;border:1px solid var(--purple-dark);color:var(--purple-dark);padding:.4rem 1rem;border-radius:100px;font-size:.85rem;margin-bottom:1.5rem;}
.summary-show-more{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-top:1px solid rgba(107,79,160,.18);border-bottom:1px solid rgba(107,79,160,.18);font-size:.95rem;color:var(--text-dark);cursor:pointer;margin-bottom:1.5rem;}
.summary-show-more .chev{font-weight:700;transition:transform .25s;}
.summary-show-more.open .chev{transform:rotate(180deg);}
.summary-more-info{max-height:0;overflow:hidden;transition:max-height .35s cubic-bezier(.22,1,.36,1);font-size:.88rem;color:var(--text-mid);line-height:1.7;}
.summary-more-info.open{max-height:200px;padding-bottom:1rem;}
.summary-payment-title{font-family:'Roboto',sans-serif;font-weight:400;font-size:1.1rem;color:var(--text-dark);margin-bottom:1rem;}
.summary-total{display:flex;justify-content:space-between;align-items:baseline;font-size:1rem;color:var(--text-dark);padding-bottom:1.5rem;border-bottom:1px solid rgba(107,79,160,.18);margin-bottom:1.5rem;}
.summary-total .value{font-weight:700;}
.summary-disclaimer{font-size:.78rem;color:var(--text-mid);line-height:1.6;margin-bottom:1.5rem;}
.btn-agendar{width:100%;background:#2F2F2F;color:var(--white);padding:1.1rem;border-radius:4px;border:none;font-size:1rem;font-weight:600;cursor:pointer;font-family:'Roboto',sans-serif;letter-spacing:.05em;transition:background .2s,transform .15s;}
.btn-agendar:hover{background:#1F1F1F;transform:translateY(-1px);}
.btn-agendar:disabled{background:#888;cursor:not-allowed;transform:none;}
/* CONFIRMATION PAGE */
#page-confirmation{background:var(--lavender);min-height:100vh;padding-top:80px;align-items:center;justify-content:center;}
.confirmation-card{background:var(--white);max-width:560px;width:90%;margin:4rem auto;padding:3.5rem 3rem;border-radius:20px;box-shadow:0 20px 60px rgba(61,37,96,.18);text-align:center;animation:fadeUp .6s cubic-bezier(.22,1,.36,1) both;}
.confirmation-check{width:90px;height:90px;border-radius:50%;background:linear-gradient(135deg,var(--green) 0%,#7FA869 100%);margin:0 auto 1.5rem;display:flex;align-items:center;justify-content:center;color:var(--white);font-size:3rem;font-weight:bold;box-shadow:0 8px 24px rgba(141,168,108,.35);animation:popIn .55s cubic-bezier(.34,1.56,.64,1) .2s both;}
@keyframes popIn{from{opacity:0;transform:scale(.3);}to{opacity:1;transform:scale(1);}}
.confirmation-card h1{font-family:'Roboto',sans-serif;font-weight:400;font-size:2rem;color:var(--purple-dark);margin-bottom:.6rem;}
.confirmation-card .lead{font-size:1rem;color:var(--text-mid);margin-bottom:2.2rem;line-height:1.6;}
.confirmation-resume{background:var(--lavender);border-radius:12px;padding:1.5rem;text-align:left;margin-bottom:2rem;}
.confirmation-row{display:flex;justify-content:space-between;align-items:center;padding:.6rem 0;border-bottom:1px solid rgba(107,79,160,.15);font-size:.95rem;}
.confirmation-row:last-child{border-bottom:none;}
.confirmation-row .label{color:var(--text-mid);}
.confirmation-row .value{color:var(--text-dark);font-weight:600;text-align:right;}
.confirmation-row .value img{width:28px;height:28px;border-radius:50%;object-fit:cover;background:var(--foto-luz);vertical-align:middle;margin-right:.5rem;}
.confirmation-actions{display:flex;gap:.8rem;flex-wrap:wrap;}
.confirmation-actions button{flex:1;min-width:140px;padding:.95rem;border-radius:100px;border:none;font-size:.92rem;font-weight:600;letter-spacing:.05em;cursor:pointer;font-family:'Roboto',sans-serif;transition:transform .15s,background .2s;}
.btn-primary{background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:.85rem 1.8rem;font-family:'Roboto',sans-serif;font-size:.92rem;font-weight:700;cursor:pointer;transition:background .2s,transform .15s;}
.btn-primary:hover{background:var(--purple);transform:translateY(-1px);}
.btn-secondary{background:transparent;color:var(--purple-dark);border:1.5px solid var(--purple-dark) !important;}
.btn-secondary:hover{background:var(--purple-dark);color:var(--white);transform:translateY(-1px);}
/* NAV AUTH (botão Entrar / usuário logado) */
.nav-auth{margin-left:3rem;display:flex;align-items:center;gap:.6rem;}
.nav-auth-btn{background:var(--gold);color:var(--purple-dark);padding:.55rem 1.32rem;border-radius:100px;border:none;font-size:.86rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;font-family:'Roboto',sans-serif;transition:background .2s,transform .15s;}
.nav-auth-btn:hover{background:var(--gold-light);transform:translateY(-1px);}
.nav-signup-link{font-family:'Roboto',sans-serif;color:var(--gold);font-size:.86rem;font-weight:700;letter-spacing:.05em;text-decoration:none;cursor:pointer;white-space:nowrap;transition:color .2s;}
.nav-signup-link:hover{color:var(--gold-light);}
.nav-signup-mobile{display:none;font-family:'Roboto',sans-serif;color:var(--gold);font-size:.92rem;font-weight:700;letter-spacing:.02em;text-decoration:none;cursor:pointer;white-space:nowrap;margin-left:auto;margin-right:1rem;transition:color .2s;}
.nav-signup-mobile:hover{color:var(--gold-light);}
.nav-user{position:relative;}
.nav-user-trigger{background:transparent;border:1.5px solid var(--gold);color:var(--gold-light);padding:.5rem 1rem;border-radius:100px;cursor:pointer;font-size:.82rem;font-weight:600;font-family:'Roboto',sans-serif;display:flex;align-items:center;gap:.5rem;transition:background .2s;}
.nav-user-trigger:hover{background:rgba(212,164,80,.12);}
.nav-user-avatar{width:24px;height:24px;border-radius:50%;background:var(--gold);color:var(--purple-dark);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.78rem;}
.nav-user-menu{position:absolute;top:calc(100% + .5rem);right:0;background:var(--white);border-radius:12px;box-shadow:0 12px 40px rgba(61,37,96,.25);min-width:220px;padding:.5rem 0;display:none;z-index:1000;animation:fadeUp .2s ease both;}
.nav-user-menu.open{display:block;}
.nav-user-menu .menu-header{padding:.75rem 1.2rem;border-bottom:1px solid rgba(107,79,160,.12);}
.nav-user-menu .menu-name{font-weight:700;color:var(--text-dark);font-size:.92rem;}
.nav-user-menu .menu-email{font-size:.78rem;color:var(--text-mid);word-break:break-all;}
.nav-user-menu .menu-item{display:block;padding:.7rem 1.2rem;color:var(--text-dark);font-size:.88rem;cursor:pointer;background:transparent;border:none;width:100%;text-align:left;font-family:'Roboto',sans-serif;transition:background .15s;}
.nav-user-menu .menu-item:hover{background:var(--lavender);}
.nav-user-menu .menu-item.danger{color:#C0392B;border-top:1px solid rgba(107,79,160,.12);}
/* LOGIN PAGE */
#page-login{min-height:100vh;padding-top:128px;align-items:center;justify-content:center;position:relative;overflow:hidden;}.login-bg{position:fixed;inset:0;z-index:0;background:linear-gradient(rgba(97,68,104,.7),rgba(97,68,104,.7)),var(--doxa-couch);background-size:cover;background-position:center;pointer-events:none;}
#page-login.active{display:flex;}
#page-confirmation.active{display:flex;}
#page-login::before,#page-login::after{content:'';position:absolute;width:500px;height:500px;border-radius:50%;filter:blur(80px);opacity:.4;pointer-events:none;}
#page-login::before{background:var(--purple);top:-100px;left:-100px;animation:floatBlob 14s ease-in-out infinite;}
#page-login::after{background:var(--purple);bottom:-100px;right:-100px;animation:floatBlob 18s ease-in-out infinite reverse;}
.login-card{background:var(--white);max-width:460px;width:92%;padding:1.75rem 2rem;border-radius:20px;box-shadow:0 20px 60px rgba(0,0,0,.3);position:relative;z-index:1;margin:2rem auto;animation:fadeUp .5s cubic-bezier(.22,1,.36,1) both;}
.login-logo{text-align:center;margin-bottom:.9rem;}
.login-logo .doxa-text{font-family:'Roboto',sans-serif;font-size:1.4rem;color:var(--purple-dark);letter-spacing:.05em;}
.login-tabs{display:flex;border-bottom:1.5px solid rgba(107,79,160,.18);margin-bottom:1rem;}
.login-tab{flex:1;padding:.85rem 0;background:transparent;border:none;font-family:'Roboto',sans-serif;font-size:.92rem;font-weight:600;color:var(--text-mid);cursor:pointer;position:relative;letter-spacing:.05em;transition:color .2s;}
.login-tab.active{color:var(--purple-dark);}
.login-tab.active::after{content:'';position:absolute;bottom:-1.5px;left:0;right:0;height:2.5px;background:var(--purple-dark);border-radius:2px;}
.login-form{display:none;flex-direction:column;gap:.6rem;}
.login-form.active{display:flex;animation:fadeUp .3s ease both;}
.login-field{display:flex;flex-direction:column;}
.login-field label{font-size:.82rem;color:var(--text-mid);margin-bottom:.35rem;font-weight:600;}
.login-field input{border:1.5px solid #D5C9E6;background:#faf8fd;padding:.85rem 1rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);border-radius:10px;outline:none;transition:border-color .15s,box-shadow .15s;width:100%;box-sizing:border-box;-webkit-appearance:none;}
.login-field input:focus{border-color:var(--purple-dark);box-shadow:0 0 0 3px rgba(94,62,103,.12);background:var(--white);}
.login-field input.invalid{border-color:#C0392B;}
.login-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;}
.login-row .login-field{min-width:0;}
.login-submit{background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:1rem;font-family:'Roboto',sans-serif;font-size:1rem;font-weight:700;cursor:pointer;transition:background .2s,transform .15s,opacity .2s;letter-spacing:.03em;width:100%;margin-top:.25rem;}
.login-submit:hover:not(:disabled){background:var(--purple);transform:translateY(-1px);}
.login-submit:disabled{opacity:.65;cursor:not-allowed;transform:none;}
.login-message{font-size:.86rem;font-weight:600;text-align:center;min-height:0;border-radius:10px;padding:.65rem .9rem;margin-bottom:.6rem;display:none;}
.login-message.error{background:#fdecea;color:#b71c1c;display:block;}
.login-message.success{background:#e8f5e9;color:#1b5e20;display:block;}
.login-hint{font-size:.82rem;color:var(--text-mid);text-align:center;margin:.1rem 0;}
.login-hint a{color:var(--purple-dark);font-weight:700;cursor:pointer;text-decoration:none;}
.login-hint a:hover{text-decoration:underline;}
.login-back-link{display:block;text-align:center;margin-top:1.2rem;font-size:.82rem;cursor:pointer;color:var(--text-mid);}
.login-back-link:hover{color:var(--purple-dark);}
.login-divider{text-align:center;font-size:.78rem;color:var(--text-light);margin:.25rem 0;}
@media(max-width:480px){
  .login-card{padding:1.5rem 1.3rem;width:95%;border-radius:16px;}
  .login-row{grid-template-columns:1fr;}
  .login-field input{font-size:16px;}
}

/* ===== OTIMIZAÇÕES MOBILE GLOBAIS ===== */
@media(max-width:640px){

  /* Navbar */
  nav{padding:.55rem 4%;}
  .nav-logo{height:50px;}

  /* Hero — ocupa a tela inteira sozinho no mobile (trust-strip fica abaixo, fora do 1º scroll) */
  .hero-trust-group{height:auto;display:block;}
  /* O hero cede espaço para a barra de vantagens caber na primeira tela.
     NÃO devolver min-height aqui: ele empurraria a barra para fora. */
  .hero{flex:1;min-height:0;align-items:stretch;}
  .hero-content{
    padding:0 6%;
    display:flex;flex-direction:column;justify-content:flex-start;
    /* Sem min-height: o conteúdo preenche o hero por `align-items:stretch`.
       Exigir uma tela inteira aqui empurrava a barra de vantagens. */
    box-sizing:border-box;
    padding-top:max(6rem, env(safe-area-inset-top, 0px) + 5rem);
    padding-bottom:max(2.5rem, env(safe-area-inset-bottom, 0px) + 2rem);
  }
  /* Grupo do topo: tag + título + subtexto, todos juntos, no terço superior */
  .hero-top-group{display:flex;flex-direction:column;}
  /* MARGEM LATERAL MENOR: 4% em vez dos 6-7% herdados. São ~16px de cada lado
     num celular de 390px — o texto passa a alcançar mais para a direita e cabe
     mais palavra por linha, o que reduz o número de linhas e, com isso, o véu
     escuro sobre o rosto. */
  .hero-content{padding-left:4%;padding-right:4%;}
  /* A tarja "PLATAFORMA DE SAÚDE MENTAL" precisa de ar embaixo do menu fixo:
     colada nele, some visualmente dentro da barra roxa. */
  /* Menor que o resto do texto de propósito (pedido 02/08): é um rótulo, e
     no tamanho antigo disputava com o título. O ornamento (a estrela) é o
     primeiro caractere do próprio texto, então encolhe junto. */
  .hero-tag{font-size:.7rem;letter-spacing:.13em;margin-top:.6rem;margin-bottom:.95rem;}
  /* Título +15% (pedido 31/07/2026). A entrelinha fechou de 1.14 para 1.1 para
     a caixa não crescer na mesma proporção da fonte — o hero é uma tela FIXA
     (100svh) dividida com a barra de vantagens logo abaixo, então cada linha
     a mais de altura tem que sair de algum outro respiro do bloco. */
  .hero-h1{font-size:clamp(2.1rem,9vw,2.85rem);margin-bottom:0;line-height:1.1;}
  /* A quebra do celular passou a ser a MESMA do desktop (pedido 02/08): as
     quebras próprias do mobile partiam a frase em "na agenda dele e cuide da
     sua saúde mental de / onde estiver.", com o "de" pendurado. As três
     linhas do desktop (para você, / na agenda dele / e cuide...) cabem na
     largura do celular com a fonte atual, e leem melhor. */
  .hero-br-wide{display:inline;}
  .hero-br-mob{display:none;}
  .line1{margin-bottom:.7rem;display:block;}
  /* A LINHA BRANCA: DE QUATRO LINHAS PARA TRÊS, COM QUEBRA ESCOLHIDA.

     Medi antes de decidir. Com 330px de largura útil num celular de 390px, a
     frase de 59 caracteres só caberia em DUAS linhas com o corpo em 21px —
     menor que o subtítulo cinza logo abaixo, o que inverteria a hierarquia da
     tela. Três linhas é o mínimo que preserva a leitura.

     A economia vem do corpo (.9em → .78em) e da entrelinha (1.18 → 1.08):
     menos véu escuro sobre o rosto da personagem, sem contar o que o
     subtítulo e os botões sobem junto.

     Só UM `&nbsp;`, em "e confiáveis." — o mínimo para a frase não terminar
     com "e" pendurado sozinho. Testei prender mais grupos e o resultado piorou:
     um par fixo que não cabe na linha força a quebra ANTES dele, e sobra uma
     linha curta no meio. Fora essa amarra, quem reparte é o `text-wrap:balance`,
     que se adapta à largura real em vez de apostar numa só. */
  .line2{display:block;font-size:.78em;line-height:1.08;text-wrap:balance;}
  /* Subtexto +15%, entrelinha um pouco mais fechada pelo mesmo motivo do
     título acima. */
  .hero-sub{font-size:1.07rem;max-width:100%;margin-bottom:0;line-height:1.55;padding:1.15rem 0 0;}
  /* Os três chamados viram um grupo só: 0,55rem entre os botões e 1,1rem
     acima. Antes eram 0,85 e 1,8 — o suficiente para os três parecerem itens
     separados e para empurrar tudo contra a barra de vantagens. */
  /* OS TRÊS CHAMADOS COMO UM BLOCO SÓ.

     Entre eles: 0,5rem e 0,3rem — quase colados, então leem como um grupo.
     Acima deles: 1,9rem — bem mais que a folga interna, o que separa o grupo
     do parágrafo e faz a leitura ir "texto ... ação" em vez de cinco itens
     soltos descendo a tela.

     A regra é a mesma que usei nos cards: o que é do mesmo grupo fica junto, e
     o espaço grande mora entre grupos. */
  /* Respiros maiores entre os blocos (pedido 02/08): a tela fixa do hero
     estava sobrando embaixo, então o espaço que sobrava desceu para DENTRO
     do bloco — mais ar antes dos botões, entre eles e antes do link. */
  .hero-btns{flex-direction:column;align-items:stretch;gap:.62rem;margin-top:2.5rem;margin-bottom:0;}
  .hero-btns a,.hero-btns button{width:100%;text-align:center;justify-content:center;font-size:.92rem;padding:.95rem 1rem;}
  /* O link de texto encosta nos botões: os três são a mesma oferta em graus
     diferentes de compromisso. */
  /* O "Nunca fez terapia?" foi o que mais ganhou ar (pedido explícito). */
  .hero-primeira-vez{margin-top:.85rem;padding:.45rem .9rem;min-height:42px;font-size:.92rem;}
  /* Folga do grupo até a barra de vantagens: maior que a folga interna dos
     botões, pelo mesmo motivo — o grupo precisa respirar dos dois lados. */
  .hero-content{padding-bottom:clamp(2.2rem,5.5vh,3.2rem);}
  .hero-video-overlay{background:linear-gradient(160deg,rgba(10,3,20,.72) 0%,rgba(40,18,65,.55) 60%,rgba(10,3,20,.65) 100%);}
  /* Luz atrás da psicóloga no vídeo do Hero (pedido 31/07/2026): no recorte
     largo do desktop esse brilho aparece maior porque sobra mais quadro ao
     redor dela; no recorte alto do celular (object-position:center top) ele
     fica mais compacto. Aqui a gente amplia e intensifica só essa camada de
     vídeo — não mexe no poster de outras miniaturas do site, só nesta. */
  .hero-video-bg{transform:scale(1.14);filter:brightness(1.16) contrast(1.05) saturate(1.08);}

  /* Trust strip */
  .trust-strip{padding:0;}

  /* Seção "Encontre seu profissional" */
  .find-section{grid-template-columns:1fr;gap:2rem;padding:3.5rem 5%;}

  /* Seção profissionais home (carrossel) */
  .pros-section-home{padding:3rem 5%;}
  .pro-card-home{padding:1.8rem 1.4rem;}

  /* Seção missão */
  .mission-section{grid-template-columns:1fr;gap:2rem;padding:3.5rem 5%;}

  /* FAQ */
  .faq-section{grid-template-columns:1fr;gap:2rem;padding:3.5rem 5%;}

  /* Contato */
  .contact-section{grid-template-columns:1fr;gap:2rem;padding:3.5rem 5%;}

  /* Topo da agenda: mais enxuto para o primeiro card aparecer antes.
     O padding de cima precisa ser maior que a altura da nav (~69px aqui),
     senão volta a sobrar faixa sem fundo embaixo do menu. */
  .agenda-hero{padding:100px 1.1rem 1.7rem;min-height:300px;}
  /* No celular a caixa é quase quadrada e o enquadramento pede outro ponto
     da foto. No computador a caixa é larga e o corte original já funciona,
     por isso esta regra fica só aqui.
     O primeiro valor é o eixo horizontal. DIMINUIR empurra a mulher para a
     direita (corta menos do lado esquerdo da foto), AUMENTAR puxa para a
     esquerda. Estava em "right" (100%), que é justamente onde ela fica mais
     ao centro do recorte, embaixo dos botões. */
  .agenda-hero-bg{background-position:70% top;}
  /* Overlay em gradiente no celular: o texto e centralizado e precisa de
     contraste, mas a direita e onde esta a mulher - deixar chapado a 70%
     apagava ela. Escuro ate o meio, leve na direita. */
  .agenda-hero-overlay{background:linear-gradient(100deg,rgba(97,68,104,.82) 0%,rgba(97,68,104,.74) 46%,rgba(97,68,104,.44) 100%);}
  .agenda-hero-title{text-shadow:0 2px 16px rgba(0,0,0,.7);}

  /* Filtros da agenda */
  .filters-section{padding:1.5rem 6%;}
  .filters-wrap{grid-template-columns:1fr;gap:.5rem;}
  .agenda-filter-section{padding:0 0 .5rem;}

  /* Cards de profissionais */
  /* Círculo 15% menor (176px -> 150px) para sobrar espaço para as tags não
     cortarem nas laterais do card. A foto em si mantém o tamanho original
     (176px) "por baixo" do círculo (centralizada pelo flex do wrapper), então
     ela não fica menor/mais distante - só é vista por uma janela circular
     um pouco menor. flex-shrink:0 impede o flex de espremer a imagem. */
  .agenda-pro-photo{width:150px;height:150px;}
  .agenda-pro-photo-img{width:176px;height:176px;max-width:none;flex-shrink:0;object-position:center top;}
  /* Rede de segurança: se alguma tag longa ainda passar da largura disponível,
     ela quebra a linha em vez de ser cortada pela borda do card. */
  .pro-tag-pill{white-space:normal;font-size:.68rem;padding:.22rem .55rem;max-width:100%;overflow-wrap:anywhere;}

  /* Perfil do profissional (novo design) */
  .profile-hero{padding:1.2rem 3% 0;}
  .profile-hero-inner{grid-template-columns:1fr;padding:0;min-height:auto;gap:0;border-radius:20px;overflow:hidden;}
  .profile-photo-wrap{height:340px;}
  .profile-info-card{margin:0;padding:1.8rem 6% 4.5rem;z-index:2;position:relative;}
  /* Sem override de photo-wrap aqui — configurado no segundo bloco 640px
     mais abaixo (após o bloco 900px) para vencer a cascata. */
  .profile-eyebrow{margin-bottom:1rem;}
  /* Nome longo quebra em DUAS linhas equilibradas também aqui no perfil
     (pedido 02/08): "Isabella Cristina / Ribeiro Souza". O 17ch é a mesma
     medida provada nos cartões da home (r65): o maior pedaço do elenco depois
     do balanceamento cabe nela, então nenhum nome vai para três linhas. Nome
     curto continua numa linha só — o teto de largura não obriga a quebrar. */
  .profile-name{font-size:clamp(1.6rem,6.5vw,2.2rem);margin-bottom:.9rem;max-width:min(100%,17ch);text-wrap:balance;}
  .profile-name-divider{margin-bottom:1rem;}
  .profile-crp{font-size:.92rem;}
  .profile-abordagem{font-size:.88rem;}
  .profile-audience{font-size:.78rem;margin-top:.25rem;}
  .profile-tags-wrap{gap:.4rem;margin-top:1.1rem;}
  .profile-tag{font-size:.72rem;padding:.32rem .75rem;}
  .month-hours-panel{margin:0 0 1rem;}

  /* Agenda + bio do profissional */
  .profile-body{grid-template-columns:1fr;padding:0 4% 3rem;}
  .profile-schedule{padding:1.8rem 1.4rem;margin:1.8rem 0 0;zoom:1;}
  /* A faixa roxa do cabeçalho sangra até as bordas: margens = padding do card
     NESTE breakpoint (1.8/1.4rem, diferente do desktop). */
  .schedule-head-row{margin:-1.8rem -1.4rem .55rem;padding:.75rem 1.1rem;}
  /* No celular o botão verde quebra para baixo do título e ocupa a largura
     toda da faixa roxa (mesmo desenho de antes da mudança). */
  /* Justificado à direita e do tamanho do texto (pedido 02/08): esticado na
     largura toda, sobrava um vão enorme entre o horário e a setinha. */
  .schedule-head-row .next-slot-cta{flex:0 1 auto;width:auto;max-width:100%;margin:.4rem 0 0 auto;}
  .profile-schedule{--respiro-passo:.45rem;}
  .schedule-day-label{font-size:1.05rem;}
  .schedule-section-head h3::before,.schedule-day-label::before,.plano-titulo::before{width:23px;height:23px;font-size:.78rem;margin-right:.5rem;}
  /* Textos da agenda menores e mais harmoniosos no mobile (pedido 31/07/2026):
     sem o zoom:.8 do desktop, esses elementos usavam o tamanho "cru" do CSS e
     ficavam grandes demais na tela pequena. A quebra depois de "?" separa a
     pergunta da instrução, em vez de as duas correrem juntas numa frase só. */
  .schedule-intro{font-size:.98rem;line-height:1.35;}
  .schedule-intro-l2{display:block;margin-top:.08rem;}
  .schedule-section-head h3{font-size:1.05rem;}
  /* O fuso ao lado do título espremia os dois e o "horário" caía sozinho na
     linha de baixo (pedido 02/08). O fuso vira uma linha própria, alinhada
     com o texto do título (23px da bolinha + o vão). */
  .schedule-section-head{flex-wrap:wrap;row-gap:.05rem;}
  .schedule-section-head .timezone{flex-basis:100%;padding-left:calc(23px + .5rem);font-size:.7rem;}
  .plano-titulo{font-size:1.05rem;}
  .calendar-title{font-size:1.18rem;min-width:118px;}
  /* A coluna de leitura estava estreita à toa: 2rem de recuo à esquerda
     num celular de 390px comia 13% da linha (pedido 02/08). */
  .profile-bio{padding:2rem 1.35rem 0;}
  .profile-bio p{margin-left:1rem;margin-right:.35rem;}
  .calendar-grid{gap:.28rem;}
  /* `height:36px` fixo brigava com o aspect-ratio e voltava a achatar o dia no
     celular. Aqui vale a mesma regra da versão larga, só com o teto menor. */
  /* Reequilíbrio 31/07/2026: com os textos da coluna maiores, o dia de
     1.1rem/40px tinha ficado o menor elemento da tela. 1.2rem/44px também
     devolve a área de toque mínima recomendada (44px). */
  .calendar-day{font-size:1.2rem;font-weight:600;width:min(100%,44px);height:auto;aspect-ratio:1;padding:0;}
  .calendar-day.available::after{width:.95em;height:2.5px;}
  .time-slots-grid{gap:.4rem;}
  .time-slot{padding:.5rem 1.2rem;font-size:.95rem;}
  /* Botões de valor sem cortes (pedido 02/08): "4 sessões" partia em duas
     linhas porque o corpo era espremido pela coluna de preço. O nome não
     quebra mais e o corpo tem piso maior; o detalhe encolhe um ponto para as
     duas linhas dele caberem na altura do botão. */
  .plano-corpo{min-width:96px;}
  .plano-nome{white-space:nowrap;font-size:1rem;}
  .plano-detalhe{font-size:.78rem;line-height:1.25;}
  .plano-por{font-size:.7rem;}

  /* Meus agendamentos (pedido 02/08): ar entre as duas caixas, embaixo do
     botão "Ver profissionais" e acima do "Conhece alguém...". */
  .appts-empty{padding:2.8rem 1.5rem 3rem;margin-bottom:1.35rem;}
  .indicacao-box{padding-top:1.55rem;}
  .appt-actions{grid-column:1 / -1;}
  .appt-actions button,.appt-actions a{width:100%;text-align:center;justify-content:center;}

  /* Booking */
  .booking-wrap{padding:2rem 4% 3rem;}
  .booking-fields{grid-template-columns:1fr;}
  .booking-grid{grid-template-columns:1fr;}
  .booking-summary{position:static;border-radius:14px;}

  /* Painel admin */
  .admin-card-head{flex-direction:column;}

  /* Painel terapeuta */

  /* Chat */
  .chat-input-area{padding-bottom:calc(.85rem + env(safe-area-inset-bottom));}

  /* Match modal */

  /* Login */
  .login-card{padding:1.4rem 1.2rem;}
  .login-row{grid-template-columns:1fr;}

  /* Trabalhe conosco */

  /* Footer (pedido 02/08): tudo justificado à esquerda e mais compacto; a
     ÚNICA parte centralizada é a assinatura da marca (nome + "Saúde mental
     para todos."). Os títulos das divisões escurecem para o negrito que já
     têm aparecer de verdade — no cinza-claro antigo o peso 700 não lia. */
  footer{grid-template-columns:1fr;gap:1.35rem;text-align:left;padding:2.4rem 7% 2.6rem;}
  footer ul{align-items:flex-start;gap:.4rem;}
  footer h4{color:var(--text-mid);font-weight:700;margin-bottom:.5rem;}
  .footer-brand-name,.footer-brand-tag{text-align:center;}
  footer>div>p{text-align:left;}

  /* Painel terapeuta - semana editor */
  .week-add-row{flex-wrap:wrap;}

  /* Confirmação */
  .confirmation-card{padding:2rem 1.2rem;}
  .confirmation-actions{flex-direction:column;}
  .confirmation-actions button{width:100%;}

  /* PIX */
  .pix-code-box{font-size:.7rem;word-break:break-all;}

  /* Página 404 */
  .notfound-actions{flex-direction:column;}
  .notfound-actions button{width:100%;}

  /* Questionário match */

  /* Avaliação */

  /* Seção missão */
}
@media(max-width:390px){
  .hero-h1{font-size:clamp(1.78rem,9.2vw,2.3rem);line-height:1.08;}
  .hero-sub{font-size:.97rem;line-height:1.48;padding-top:.75rem;}
  .hero-btns{gap:.45rem;margin-top:.9rem;}
  .btn-green,.btn-gold{padding:.72rem 1.2rem;font-size:.82rem;}
  .hero-primeira-vez{margin-top:.25rem;min-height:36px;}
  .pros-section-home{padding:2.5rem 4%;}
  .find-section{padding:2.8rem 4%;}
  .mission-section{padding:2.8rem 4%;}
  .faq-section{padding:2.8rem 4%;}
  .contact-section{padding:2.8rem 4%;}
}
.login-submit{background:var(--purple-dark);color:var(--white);padding:.95rem;border-radius:100px;border:none;font-size:.92rem;font-weight:700;letter-spacing:.05em;cursor:pointer;font-family:'Roboto',sans-serif;margin-top:.5rem;transition:background .2s,transform .15s;text-transform:uppercase;}
.login-submit:hover:not(:disabled){background:var(--purple);transform:translateY(-1px);}
.login-submit:disabled{background:#B8AAD0;cursor:not-allowed;transform:none;}
.login-message{padding:.8rem 1rem;border-radius:8px;font-size:.85rem;line-height:1.5;display:none;margin-top:.5rem;}
.login-message.error{background:#FDEBE9;color:#C0392B;border:1px solid #F5C6CB;display:block;}
.login-message.success{background:#E8F5E2;color:#3D6E1F;border:1px solid #C3E6B5;display:block;}
.login-hint{text-align:center;font-size:.82rem;color:var(--text-mid);margin-top:1rem;}
.login-hint a{color:var(--purple-dark);font-weight:600;cursor:pointer;text-decoration:underline;}
.login-back-link{display:block;text-align:center;margin-top:1.5rem;color:rgba(255,255,255,.7);font-size:.82rem;text-decoration:none;cursor:pointer;}
.login-back-link:hover{color:var(--gold-light);}
/* MEUS AGENDAMENTOS */
#page-meus-agendamentos{background:var(--lavender);min-height:100vh;padding-top:80px;}
.appts-wrap{max-width:980px;margin:0 auto;padding:106px 5% 5rem;}
@media(max-width:640px){.appts-wrap{padding:78px 5% 3.5rem;}}
.appts-header{margin-bottom:2rem;}
.appts-title{font-family:'Roboto',sans-serif;font-weight:400;font-size:clamp(1.8rem,3.5vw,2.6rem);color:var(--purple-dark);margin-bottom:.5rem;}
.appts-subtitle{font-size:1rem;color:var(--text-mid);}
/* ===================== CRÉDITOS DE SESSÃO ===================== */
.creditos-box{background:var(--lavender);border:1px solid var(--purple);border-radius:18px;padding:1.4rem 1.5rem;margin-bottom:1.6rem;display:none;}
/* Proxima sessao: a informacao que o paciente vem buscar. Fica acima de tudo,
   com o botao da sala sempre visivel. A sala e derivada do id DA CONSULTA
   (doxa-<id>), entao cada atendimento tem endereco proprio e ninguem entra
   na sessao de outra pessoa. O link some 1h depois do inicio, como na lista. */
.pend-pgto{display:none;background:#FFF6E6;border:1.5px solid #E0B25C;border-radius:16px;padding:1.1rem 1.2rem;margin-bottom:1.2rem;}
.pend-pgto.show{display:block;}
.pend-pgto-tit{font-family:'Roboto',sans-serif;font-weight:700;font-size:1.02rem;color:#8A5A00;margin:0 0 .25rem;}
.pend-pgto-sub{font-size:.86rem;color:var(--text-mid);margin:0 0 .9rem;line-height:1.45;}
.pend-pgto-item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.7rem;background:#fff;border:1px solid #EFE0C4;border-radius:12px;padding:.7rem .85rem;}
.pend-pgto-item + .pend-pgto-item{margin-top:.6rem;}
.pend-pgto-info{display:flex;flex-direction:column;gap:.12rem;min-width:0;}
.pend-pgto-info strong{font-size:.95rem;color:var(--text-dark);}
.pend-pgto-info span{font-size:.82rem;color:var(--text-mid);}
.pend-pgto-resta{color:#8A5A00;font-weight:600;}
.pend-pgto-venc{color:#C0392B;font-weight:600;}
.pend-pgto-acoes{display:flex;gap:.5rem;flex-wrap:wrap;}
@media(max-width:640px){
  .pend-pgto-item{flex-direction:column;align-items:stretch;}
  .pend-pgto-acoes{width:100%;}
  .pend-pgto-acoes button{flex:1;}
}
.prox-sessao{display:none;gap:2rem;align-items:center;background:var(--purple);color:var(--white);border-radius:20px;padding:2rem 2.2rem;margin-bottom:1.4rem;}
.prox-sessao.show{display:flex;}
.prox-foto{width:144px;height:144px;flex:0 0 144px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--foto-luz);border:2px solid var(--gold);}
.prox-corpo{flex:1;min-width:0;}
.prox-rotulo{font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--gold-light);margin:0 0 .55rem;}
.prox-quando{font-family:'Roboto',sans-serif;font-size:1.6rem;font-weight:700;line-height:1.25;margin:0 0 .45rem;}
.prox-com{font-size:1rem;opacity:.92;margin:0 0 .4rem;}
.prox-obs{font-size:.82rem;opacity:.72;margin:0;line-height:1.5;max-width:44ch;}
.prox-acoes{display:flex;flex-direction:column;gap:.65rem;flex:0 0 auto;min-width:200px;}
.prox-btn-sala{background:var(--gold);color:var(--purple-dark);border:none;border-radius:12px;padding:.85rem 1.4rem;font-family:'Roboto',sans-serif;font-size:.95rem;font-weight:700;cursor:pointer;text-decoration:none;text-align:center;min-height:44px;display:flex;align-items:center;justify-content:center;transition:filter .15s;}
.prox-btn-sala:hover{filter:brightness(1.07);}
.prox-btn-sec{background:transparent;color:var(--white);border:1.5px solid rgba(255,255,255,.45);border-radius:12px;padding:.6rem 1.4rem;font-size:.85rem;font-weight:600;cursor:pointer;min-height:44px;}
/* ARMADILHA REGISTRADA: a regra `nav{position:fixed;top:0;...}` no topo deste
   arquivo e de ELEMENTO, nao de classe. Qualquer <nav> novo vira uma segunda
   barra fixa em cima da barra real. Foi o que aconteceu com a trilha do
   perfil (02/08): virou <div role="navigation">. Se um dia voltar a ideia de
   um menu da area logada, usar <div>, nunca <nav>. */
.creditos-box.show{display:block;}
.creditos-vencidos{background:var(--lavender);border:1px solid var(--border);border-left:4px solid var(--gold);border-radius:14px;padding:.9rem 1.1rem;margin-bottom:1.4rem;font-size:.86rem;color:var(--text-dark);line-height:1.55;text-wrap:pretty;max-width:60ch;}
.creditos-titulo{font-family:'Roboto',sans-serif;font-size:1.08rem;font-weight:700;color:var(--purple-dark);margin:0 0 .35rem;line-height:1.35;}
.creditos-detalhe{font-size:.86rem;color:var(--text-mid);line-height:1.6;margin:0 0 1rem;text-wrap:pretty;}
.creditos-aviso{display:inline-block;background:#FFF3CD;color:#7A5B00;border-radius:8px;padding:.4rem .7rem;font-size:.8rem;line-height:1.45;margin:0 0 1rem;}
.creditos-box .btn-green{min-height:44px;}
.appt-selo-pacote{display:inline-flex;align-items:center;gap:.3rem;background:rgba(97,68,104,.12);color:var(--purple-dark);border-radius:100px;padding:.2rem .6rem;font-size:.72rem;font-weight:700;letter-spacing:.02em;}
@media(max-width:640px){
  .creditos-box{padding:1.15rem 1.1rem;border-radius:16px;}
  /* Celular: foto e texto continuam lado a lado (a foto ancora a leitura),
     e os botoes viram uma faixa de largura cheia embaixo, com alvo de toque
     inteiro. Empilhar tudo faria o cartao passar de 400px de altura. */
  .prox-sessao{flex-wrap:wrap;gap:1rem;padding:1.3rem 1.2rem;border-radius:16px;}
  .prox-foto{width:104px;height:104px;flex:0 0 104px;}
  .prox-corpo{flex:1 1 55%;min-width:150px;}
  .prox-quando{font-size:1.3rem;}
  .prox-com{font-size:.92rem;}
  .prox-obs{font-size:.78rem;}
  .prox-acoes{flex-direction:row;flex-wrap:wrap;width:100%;min-width:0;gap:.55rem;}
  .prox-acoes>*{flex:1 1 140px;}
  .creditos-box .btn-green{width:100%;}
}
.appts-tabs{display:flex;gap:0;border-bottom:1.5px solid rgba(107,79,160,.18);margin-bottom:2.5rem;}
.appts-tab{background:transparent;border:none;padding:.9rem 1.5rem;font-family:'Roboto',sans-serif;font-size:.95rem;font-weight:600;color:var(--text-mid);cursor:pointer;position:relative;letter-spacing:.03em;transition:color .2s;}
.appts-tab.active{color:var(--purple-dark);}
.appts-tab.active::after{content:'';position:absolute;bottom:-1.5px;left:0;right:0;height:2.5px;background:var(--purple-dark);border-radius:2px;}
.appts-tab .count{display:inline-block;background:rgba(107,79,160,.15);color:var(--purple-dark);font-size:.72rem;padding:.1rem .55rem;border-radius:100px;margin-left:.4rem;font-weight:700;}
.appts-tab.active .count{background:var(--purple-dark);color:var(--white);}
.appts-list{display:flex;flex-direction:column;gap:1rem;}
.appt-card{background:var(--white);border-radius:12px;padding:1.5rem;display:grid;grid-template-columns:auto 1fr auto;gap:1.5rem;align-items:center;box-shadow:0 2px 12px rgba(61,37,96,.06);transition:transform .15s,box-shadow .15s;}
.appt-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(61,37,96,.1);}
.appt-card.past{opacity:.7;}
.appt-card.cancelled{opacity:.55;background:#F5F0F2;}
.appt-card.cancelled .appt-status{background:#FDEBE9;color:#C0392B;}
.appt-photo{width:128px;height:128px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--foto-luz);border:2px solid var(--gold);}
.appt-photo-placeholder{width:128px;height:128px;border-radius:50%;background:var(--purple-dark);color:var(--white);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:2.2rem;font-family:'Roboto',sans-serif;border:2px solid var(--gold);}
.appt-info{display:flex;flex-direction:column;gap:.3rem;min-width:0;}
.appt-pro-name{font-weight:700;color:var(--text-dark);font-size:1.05rem;}
.appt-abordagem{font-size:.85rem;color:var(--text-mid);}
.appt-datetime{font-size:.95rem;color:var(--purple-dark);font-weight:600;margin-top:.3rem;}
.appt-meta{display:flex;gap:1rem;font-size:.82rem;color:var(--text-mid);margin-top:.2rem;flex-wrap:wrap;}
.appt-meta span::before{content:'•';margin-right:.5rem;color:rgba(107,79,160,.4);}
.appt-meta span:first-child::before{display:none;}
.appt-actions{display:flex;flex-direction:column;gap:.5rem;align-items:end;}
.appt-status{padding:.3rem .8rem;border-radius:100px;font-size:.75rem;font-weight:700;background:#E8F5E2;color:#3D6E1F;letter-spacing:.03em;text-transform:uppercase;}
.appt-status.past{background:rgba(107,79,160,.12);color:var(--purple-dark);}
/* Com "Pagar agora" e "Cancelar" no mesmo cartão, o segundo não pode competir
   com o primeiro: contorno contra preenchimento. O empilhamento e o espaço
   entre eles já vêm do `.appt-actions`, que é flex em coluna com gap. */
.btn-cancel-appt{background:transparent;color:#C0392B;border:1.5px solid #C0392B;padding:.5rem 1rem;border-radius:100px;font-size:.78rem;font-weight:600;cursor:pointer;font-family:'Roboto',sans-serif;transition:background .15s,color .15s;letter-spacing:.03em;}
.btn-cancel-appt:hover{background:#C0392B;color:var(--white);}
.btn-cancel-appt:disabled{border-color:#C0BAD0;color:#A8A0B5;cursor:not-allowed;}
.btn-cancel-appt:disabled:hover{background:transparent;color:#A8A0B5;}
.appts-empty{background:var(--white);border-radius:16px;padding:4rem 2rem;text-align:center;}
.appts-empty-icon{font-size:3.5rem;margin-bottom:1rem;opacity:.4;}
.appts-empty h3{font-family:'Roboto',sans-serif;font-weight:400;font-size:1.6rem;color:var(--purple-dark);margin-bottom:.5rem;}
.appts-empty p{color:var(--text-mid);margin-bottom:1.5rem;font-size:.95rem;}
.appts-empty button{background:var(--purple-dark);color:var(--white);border:none;padding:.85rem 2rem;border-radius:100px;font-weight:600;cursor:pointer;font-family:'Roboto',sans-serif;font-size:.92rem;letter-spacing:.05em;transition:background .2s;}
.appts-empty button:hover{background:var(--purple);}
.appts-loading{text-align:center;padding:3rem;color:var(--text-mid);font-size:.95rem;}
.appts-loading::before{content:'';display:inline-block;width:16px;height:16px;border:2px solid rgba(107,79,160,.3);border-top-color:var(--purple-dark);border-radius:50%;animation:spin 0.8s linear infinite;vertical-align:middle;margin-right:.5rem;}
@keyframes spin{to{transform:rotate(360deg);}}
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:5000;align-items:center;justify-content:center;padding:2rem;}
.modal-overlay.open{display:flex;animation:fadeUp .2s ease both;}
.modal-card{background:var(--white);border-radius:16px;padding:2.5rem 2rem;max-width:420px;width:100%;text-align:center;}
.modal-card h3{font-family:'Roboto',sans-serif;font-weight:400;font-size:1.5rem;color:var(--purple-dark);margin-bottom:.75rem;}
.modal-card p{color:var(--text-mid);font-size:.95rem;line-height:1.6;margin-bottom:1.8rem;}
.modal-actions{display:flex;gap:.7rem;}
.modal-actions button{flex:1;padding:.85rem;border-radius:100px;font-weight:600;cursor:pointer;font-family:'Roboto',sans-serif;font-size:.88rem;letter-spacing:.03em;border:none;transition:transform .15s,background .2s;}
.modal-actions .btn-cancel-modal{background:transparent;color:var(--purple-dark);border:1.5px solid var(--purple-dark) !important;}
.modal-actions .btn-cancel-modal:hover{background:var(--lavender);}
.modal-actions .btn-confirm-modal{background:#C0392B;color:var(--white);}
.modal-actions .btn-confirm-modal:hover{background:#A0291B;}
.login-required-msg{background:#FFF3E0;border:1px solid #FFD7A8;color:#8B4513;padding:1rem 1.2rem;border-radius:8px;margin-bottom:1.5rem;font-size:.92rem;display:flex;align-items:center;gap:.6rem;}
.login-required-msg a{color:var(--purple-dark);font-weight:700;text-decoration:underline;cursor:pointer;}
/* PAGAMENTO PIX */
#page-payment{background:var(--lavender);min-height:100vh;padding-top:80px;}
.payment-wrap{max-width:520px;margin:0 auto;padding:3rem 5% 5rem;}
.payment-back{display:inline-flex;align-items:center;gap:.4rem;color:var(--text-mid);font-size:.92rem;text-decoration:none;cursor:pointer;margin-bottom:1.5rem;transition:color .15s;}
.payment-back:hover{color:var(--purple-dark);}
.payment-card{background:var(--white);border-radius:20px;padding:2.5rem 2rem;box-shadow:0 8px 32px rgba(61,37,96,.08);}
.payment-banner{background:linear-gradient(135deg,#FFF3CD,#FFE69C);border-radius:12px;padding:1rem 1.2rem;display:flex;align-items:center;gap:.8rem;margin-bottom:2rem;font-size:.9rem;color:#7A5A1A;}
.payment-banner .icon{font-size:1.4rem;}
.payment-banner strong{color:#5A4500;}
.payment-title{font-family:'Roboto',sans-serif;font-weight:400;font-size:1.8rem;color:var(--purple-dark);text-align:center;margin-bottom:.4rem;}
.payment-subtitle{text-align:center;color:var(--text-mid);font-size:.95rem;margin-bottom:1.5rem;}
.payment-amount{text-align:center;font-size:2.4rem;font-weight:700;color:var(--purple-dark);font-family:'Roboto',sans-serif;margin-bottom:.5rem;}
.payment-amount small{font-size:1rem;font-weight:400;color:var(--text-mid);}
.payment-timer{text-align:center;font-size:.9rem;color:var(--text-mid);margin-bottom:1.5rem;}
.payment-timer .timer-value{color:#C0392B;font-weight:700;font-family:'Roboto',sans-serif;}
.payment-timer.expired .timer-value{color:#C0392B;}
.qr-container{display:flex;justify-content:center;margin:1.5rem 0;padding:1rem;background:var(--white);}
.qr-container canvas,.qr-container img{width:240px;height:240px;border:1px solid rgba(107,79,160,.15);border-radius:12px;padding:8px;background:white;}
.pix-key-row{display:flex;gap:.5rem;background:var(--lavender);padding:.8rem 1rem;border-radius:8px;align-items:center;margin-bottom:1rem;}
.pix-key-row .label{font-size:.75rem;color:var(--text-mid);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.2rem;}
.pix-key-row .key-text{font-size:.9rem;color:var(--text-dark);font-family:'Roboto',sans-serif;word-break:break-all;font-weight:600;}
.pix-key-row .key-info{flex:1;min-width:0;}
.btn-copy{background:var(--purple-dark);color:var(--white);border:none;padding:.55rem 1rem;border-radius:8px;cursor:pointer;font-family:'Roboto',sans-serif;font-weight:600;font-size:.82rem;letter-spacing:.03em;white-space:nowrap;transition:background .2s,transform .15s;}
.btn-copy:hover{background:var(--purple);transform:translateY(-1px);}
.btn-copy.copied{background:var(--green);}
.payment-instructions{background:#F5F0FA;padding:1rem 1.2rem;border-radius:8px;font-size:.85rem;color:var(--text-mid);line-height:1.6;margin-bottom:1.5rem;}
.payment-instructions strong{color:var(--text-dark);}
.payment-instructions ol{margin:.5rem 0 0 1.2rem;padding:0;}
.payment-instructions ol li{margin-bottom:.3rem;}
.btn-already-paid{width:100%;background:var(--green);color:var(--white);padding:1rem;border-radius:100px;border:none;font-size:.95rem;font-weight:700;letter-spacing:.05em;cursor:pointer;font-family:'Roboto',sans-serif;transition:background .2s,transform .15s;}
.btn-already-paid:hover{background:#7FA869;transform:translateY(-1px);}
.btn-already-paid:disabled{background:#B8AAD0;cursor:not-allowed;transform:none;}
.payment-pay-later{display:block;text-align:center;margin-top:1rem;color:var(--text-mid);font-size:.85rem;text-decoration:underline;cursor:pointer;}
.payment-pay-later:hover{color:var(--purple-dark);}
.payment-expired{background:#FDEBE9;color:#A0291B;padding:1rem 1.2rem;border-radius:8px;text-align:center;margin-bottom:1.5rem;font-size:.92rem;}
.payment-expired strong{display:block;font-size:1rem;margin-bottom:.3rem;}
/* Status badges no Meus Agendamentos (estende os existentes) */
.appt-status.pending-payment{background:#FFF3CD;color:#7A5A1A;}
.appt-status.payment-submitted{background:#E1F0FF;color:#1A4D7A;}
.appt-status.payment-expired{background:#FDEBE9;color:#A0291B;}
.btn-pay-now{background:var(--gold);color:var(--purple-dark);border:none;padding:.5rem 1rem;border-radius:100px;font-size:.78rem;font-weight:700;cursor:pointer;font-family:'Roboto',sans-serif;letter-spacing:.03em;transition:background .15s,transform .15s;}
.btn-pay-now:hover{background:var(--gold-light);transform:translateY(-1px);}
/* PAINEL ADMIN */
#page-admin{background:var(--lavender);min-height:100vh;padding-top:80px;}
.admin-wrap{max-width:1100px;margin:0 auto;padding:3rem 5% 5rem;}
.admin-header{margin-bottom:2rem;}
.admin-title{font-family:'Roboto',sans-serif;font-weight:400;font-size:clamp(1.8rem,3.5vw,2.4rem);color:var(--purple-dark);margin-bottom:.3rem;}
.admin-subtitle{color:var(--text-mid);font-size:.95rem;}
/* Manutenção: painel recolhível (fica fechado por padrão) */
.admin-maint-panel{margin:0 0 1.5rem;background:var(--lavender-mid);border:1px solid var(--border);border-radius:12px;overflow:hidden;}
.admin-maint-summary{padding:.85rem 1.1rem;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:700;color:var(--purple-dark);cursor:pointer;list-style:none;user-select:none;}
.admin-maint-summary::-webkit-details-marker{display:none;}
.admin-maint-summary::after{content:'⌄';float:right;font-size:1.1rem;line-height:1;transition:transform .2s;}
.admin-maint-panel[open] .admin-maint-summary::after{transform:rotate(180deg);}
.admin-maint-grid{display:flex;flex-direction:column;gap:.7rem;padding:0 1.1rem 1.1rem;}
.admin-maint-row{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;}
.admin-maint-btn{background:var(--white);border:1.5px solid var(--purple-dark);color:var(--purple-dark);border-radius:100px;padding:.5rem 1.1rem;font-family:'Roboto',sans-serif;font-size:.8rem;font-weight:700;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap;min-height:44px;}
.admin-maint-btn:hover{background:var(--purple-dark);color:var(--white);}
.admin-maint-btn:disabled{opacity:.55;cursor:not-allowed;}
.admin-maint-status{font-size:.82rem;color:var(--text-mid);}
/* Navegação do admin: grade de botões agrupados por seção */
.admin-nav{display:flex;flex-wrap:wrap;gap:1.4rem 1.8rem;margin-bottom:2rem;padding-bottom:1.4rem;border-bottom:1.5px solid rgba(107,79,160,.18);}
.admin-nav-group{display:flex;flex-direction:column;gap:.5rem;}
.admin-nav-label{font-size:.68rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--text-light);padding-left:.15rem;}
.admin-nav-btns{display:flex;flex-wrap:wrap;gap:.5rem;}
/* Alerta de sessoes de pacote presas (rodada 28/07): visivel em QUALQUER aba do
   admin, nao so na aba "Usando pacote". Existia sem isso porque a confirmacao
   de pacote e manual e fica escondida numa aba que so quem lembra de abrir vê -
   foi exatamente o caso da sessao da Bruna com a Vitoria, presa e invisivel
   pro repasse ate alguem entrar naquela aba especifica e clicar. */
.admin-pacote-alerta{display:flex;align-items:center;gap:.7rem;background:#FFF4E0;border:1.5px solid var(--gold);border-radius:12px;padding:.75rem 1rem;margin-bottom:1rem;cursor:pointer;font-size:.86rem;color:#6B4E12;transition:background .15s;}
.admin-pacote-alerta:hover{background:#FCEBC8;}
.admin-pacote-alerta strong{color:#4A3600;}
/* Aviso de telefone/e-mail ausente no perfil do PACIENTE (rodada 28/07). Mesmo
   tom visual do alerta do admin (dourado, chama atenção sem parecer erro),
   porque é lembrete, não falha. */
.contato-incompleto-aviso{display:flex;align-items:center;gap:.7rem;background:#FFF4E0;border:1.5px solid var(--gold);border-radius:12px;padding:.8rem 1.1rem;margin:0 0 1.3rem;font-size:.86rem;color:#6B4E12;line-height:1.5;}
.contato-incompleto-aviso a{color:#4A3600;font-weight:700;text-decoration:underline;cursor:pointer;white-space:nowrap;}
/* "Saiba mais" reutilizavel (rodada 28/07) pra textos explicativos longos na
   area logada do psicologo e do paciente. clamped = 2 linhas visiveis; o JS
   (initSaibaMais) esconde o botao sozinho se o texto nem chegar a 2 linhas,
   entao e seguro aplicar essa classe em qualquer paragrafo, curto ou longo. */
.saiba-mais-texto{overflow:hidden;transition:max-height .25s ease;}
.saiba-mais-texto.sm-clamped{max-height:2.9em;}
.saiba-mais-link{display:inline-block;margin-top:.4rem;font-size:.8rem;font-weight:700;color:var(--purple-dark);cursor:pointer;text-decoration:underline;background:none;border:none;padding:0;font-family:'Roboto',sans-serif;}
.saiba-mais-link:hover{color:var(--purple);}
.admin-tab{display:inline-flex;align-items:center;gap:.45rem;background:var(--white);border:1.5px solid var(--border);border-radius:100px;padding:.55rem 1rem;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:600;color:var(--text-mid);cursor:pointer;transition:background .15s,color .15s,border-color .15s;min-height:44px;white-space:nowrap;}
.admin-tab:hover{border-color:var(--purple);color:var(--purple-dark);}
.admin-tab-ico{font-size:.95rem;line-height:1;}
.admin-tab.active{background:var(--purple-dark);border-color:var(--purple-dark);color:var(--white);}
.admin-tab .count{display:inline-flex;align-items:center;justify-content:center;min-width:1.15rem;height:1.15rem;background:rgba(107,79,160,.15);color:var(--purple-dark);font-size:.7rem;padding:0 .35rem;border-radius:100px;font-weight:800;}
.admin-tab.active .count{background:var(--white);color:var(--purple-dark);}
@media(max-width:768px){
  .admin-nav{gap:1.1rem 1.2rem;}
  .admin-tab{font-size:.8rem;padding:.5rem .85rem;}
  .admin-tab-ico{font-size:.9rem;}
}
.admin-list{display:flex;flex-direction:column;gap:1rem;}
.admin-appts-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem;}
.admin-search-wrap{position:relative;flex:1;min-width:240px;max-width:420px;}
.admin-search-input{width:100%;border:1.5px solid var(--border);border-radius:100px;padding:.7rem 1.1rem .7rem 2.6rem;font-family:'Roboto',sans-serif;font-size:.88rem;color:var(--text-dark);background:#fff;outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box;}
.admin-search-input:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(97,68,104,.1);}
.admin-search-icon{position:absolute;left:1rem;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--text-light);pointer-events:none;}
.admin-month-header{font-family:'Roboto',sans-serif;font-size:.82rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--purple-dark);padding:1.4rem 0 .5rem;border-bottom:1px solid rgba(107,79,160,.15);margin-bottom:.3rem;}
.admin-month-header:first-child{padding-top:0;}
.admin-pagination{display:flex;justify-content:center;align-items:center;gap:.6rem;margin-top:1.8rem;flex-wrap:wrap;}
.admin-page-btn{width:40px;height:40px;border-radius:50%;border:1.5px solid rgba(107,79,160,.2);background:var(--white);color:var(--purple-dark);font-family:'Roboto',sans-serif;font-size:.88rem;font-weight:700;cursor:pointer;transition:background .2s,border-color .2s,color .2s;}
.admin-page-btn:hover{border-color:var(--purple);}
.admin-page-btn.active{background:var(--purple-dark);border-color:var(--purple-dark);color:var(--white);}
.admin-card{background:var(--white);border-radius:12px;padding:1.5rem;box-shadow:0 2px 12px rgba(61,37,96,.06);}
.admin-card-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid rgba(107,79,160,.1);gap:1rem;flex-wrap:wrap;}
.admin-card-id{font-size:.75rem;color:var(--text-mid);font-family:monospace;}
.admin-card-amount{font-size:1.4rem;font-weight:700;color:var(--purple-dark);font-family:'Roboto',sans-serif;}
.admin-card-body{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:1.2rem;}
.admin-section h4{font-size:.78rem;color:var(--text-mid);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem;}
.admin-section p{margin:.2rem 0;font-size:.92rem;color:var(--text-dark);}
.admin-section .strong{font-weight:700;}
.admin-card-actions{display:flex;gap:.7rem;}
.admin-card-actions button{flex:1;padding:.7rem;border-radius:100px;border:none;font-weight:600;cursor:pointer;font-family:'Roboto',sans-serif;font-size:.85rem;letter-spacing:.03em;transition:background .2s,transform .15s;}
.btn-confirm-pay{background:var(--green);color:var(--white);}
.btn-confirm-pay:hover{background:#7FA869;transform:translateY(-1px);}
.btn-reject-pay{background:transparent;color:#C0392B;border:1.5px solid #C0392B !important;}
.btn-reject-pay:hover{background:#C0392B;color:var(--white);}
.admin-card-meta{font-size:.78rem;color:var(--text-mid);}
.admin-no-access{text-align:center;padding:4rem 2rem;background:var(--white);border-radius:16px;}
.admin-no-access .icon{font-size:3.5rem;margin-bottom:1rem;opacity:.4;}
.admin-no-access h3{font-family:'Roboto',sans-serif;font-weight:400;font-size:1.4rem;color:var(--purple-dark);margin-bottom:.5rem;}
.admin-no-access p{color:var(--text-mid);font-size:.95rem;}
/* BLOQUEIOS DE HORARIO */
.blocks-toolbar{display:flex;justify-content:flex-end;margin-bottom:1.2rem;}
.btn-new-block{background:var(--purple-dark);color:var(--white);border:none;padding:.7rem 1.4rem;border-radius:100px;font-size:.85rem;font-weight:600;cursor:pointer;font-family:'Roboto',sans-serif;letter-spacing:.03em;transition:background .2s,transform .15s;}
.btn-new-block:hover{background:var(--purple);transform:translateY(-1px);}
.block-card{background:var(--white);border-radius:12px;padding:1.2rem 1.5rem;display:grid;grid-template-columns:auto 1fr auto;gap:1.2rem;align-items:center;box-shadow:0 2px 12px rgba(61,37,96,.06);border-left:4px solid var(--gold);}
.block-card.expired{opacity:.55;border-left-color:#B8AAD0;}
.block-card .block-icon{font-size:1.8rem;}
.block-card .block-info{display:flex;flex-direction:column;gap:.2rem;min-width:0;}
.block-pro{font-weight:700;color:var(--text-dark);}
.block-when{color:var(--purple-dark);font-weight:600;font-size:.92rem;}
.block-reason{color:var(--text-mid);font-size:.85rem;font-style:italic;}
.block-meta{color:var(--text-mid);font-size:.78rem;}
.btn-remove-block{background:transparent;color:#C0392B;border:1.5px solid #C0392B;padding:.45rem 1rem;border-radius:100px;font-size:.78rem;font-weight:600;cursor:pointer;font-family:'Roboto',sans-serif;letter-spacing:.03em;transition:background .15s,color .15s;}
.btn-remove-block:hover{background:#C0392B;color:var(--white);}
/* Modal de criar bloqueio */
.block-modal-card{max-width:480px;width:100%;text-align:left;}
.block-modal-card h3{text-align:center;}
.block-form{display:flex;flex-direction:column;gap:1rem;margin-top:1rem;}
.block-form label{font-size:.82rem;color:var(--text-mid);margin-bottom:.35rem;font-weight:600;display:block;}
.block-form select,.block-form input,.block-form textarea{border:1.5px solid #D5C9E6;background:transparent;padding:.75rem .9rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);border-radius:8px;outline:none;width:100%;box-sizing:border-box;transition:border-color .15s,box-shadow .15s;}
.block-form select:focus,.block-form input:focus,.block-form textarea:focus{border-color:var(--purple-dark);box-shadow:0 0 0 3px rgba(107,79,160,.12);}
.block-form textarea{resize:vertical;min-height:60px;}
.block-form-row{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;}
.block-type-tabs{display:flex;gap:.4rem;background:var(--lavender);padding:.3rem;border-radius:100px;}
.block-type-tab{flex:1;padding:.55rem;background:transparent;border:none;border-radius:100px;font-size:.82rem;font-weight:600;color:var(--text-mid);cursor:pointer;font-family:'Roboto',sans-serif;transition:all .15s;}
.block-type-tab.active{background:var(--white);color:var(--purple-dark);box-shadow:0 1px 4px rgba(61,37,96,.1);}
.block-time-warn{background:#FFF3CD;color:#7A5A1A;padding:.7rem 1rem;border-radius:8px;font-size:.82rem;margin-top:.5rem;display:none;}
.block-time-warn.show{display:block;}
/* Estado "indisponivel" no calendario do paciente */
.calendar-day.blocked{color:var(--text-mid);opacity:.35;cursor:not-allowed;position:relative;}
.calendar-day.blocked::after{content:'×';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.4rem;color:#C0392B;}
.time-slot.blocked{opacity:.35;cursor:not-allowed;text-decoration:line-through;color:var(--text-mid);}
.time-slot.blocked:hover{background:var(--white);transform:none;}
.block-notice-bar{background:#FFF3CD;border-radius:8px;padding:.6rem .9rem;color:#7A5A1A;font-size:.85rem;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem;}
/* ===== PAINEL TERAPEUTA ===== */
#page-terapeuta{background:var(--lavender);min-height:100vh;padding-top:80px;}
.terapeuta-wrap{max-width:860px;margin:0 auto;padding:106px 1rem 4rem;}
@media(max-width:640px){.terapeuta-wrap{padding:78px 4% 3rem;}}
.terapeuta-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;}
.terapeuta-title{font-size:1.6rem;font-weight:800;color:var(--purple-dark);margin:0;}
.terapeuta-subtitle{color:var(--text-mid);font-size:.9rem;margin:.2rem 0 0;}
.terapeuta-tabs{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.5rem;}
.terapeuta-tab{background:var(--white);border:2px solid transparent;border-radius:100px;padding:.5rem 1.1rem;font-size:.82rem;font-weight:700;color:var(--purple-dark);cursor:pointer;transition:all .2s;}
.terapeuta-tab:hover{border-color:var(--purple-dark);}
.terapeuta-tab.active{background:var(--purple-dark);color:var(--white);}
.terapeuta-panel{display:none;}
.terapeuta-panel.active{display:block;}
.terapeuta-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;}
.terapeuta-section-head h3{font-size:1rem;font-weight:700;color:var(--purple-dark);margin:0;}
.btn-refresh{background:none;border:1.5px solid var(--purple-dark);border-radius:100px;padding:.3rem .9rem;font-size:.78rem;font-weight:700;color:var(--purple-dark);cursor:pointer;transition:all .15s;}
.btn-refresh:hover{background:var(--purple-dark);color:var(--white);}
.terapeuta-list{display:flex;flex-direction:column;gap:.75rem;}
.terapeuta-loading{color:var(--text-light);font-size:.88rem;padding:1rem 0;}
.terapeuta-card{background:var(--white);border-radius:14px;padding:1rem 1.2rem;box-shadow:0 2px 8px rgba(107,79,160,.08);}
.terapeuta-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;}
.terapeuta-card h4{font-size:.92rem;font-weight:700;color:var(--purple-dark);margin:0 0 .2rem;}
.terapeuta-card p{font-size:.82rem;color:var(--text-mid);margin:.15rem 0;}
.terapeuta-card-badge{font-size:.72rem;font-weight:700;border-radius:100px;padding:.2rem .7rem;white-space:nowrap;}
.badge-pending{background:#FFF3CD;color:#7A5A1A;}
.badge-confirmed{background:#D4EDDA;color:#155724;}
.badge-cancelled{background:#F8D7DA;color:#721C24;}
.terapeuta-card-actions{display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap;}
.btn-confirm{background:#28a745;color:var(--white);border:none;border-radius:100px;padding:.35rem .9rem;font-size:.78rem;font-weight:700;cursor:pointer;transition:background .15s;}
.btn-confirm:hover{background:#218838;}
.btn-cancel-appt{background:#dc3545;color:var(--white);border:none;border-radius:100px;padding:.35rem .9rem;font-size:.78rem;font-weight:700;cursor:pointer;transition:background .15s;}
.btn-cancel-appt:hover{background:#c82333;}
.btn-remove-block{background:none;border:1.5px solid #dc3545;border-radius:100px;padding:.3rem .8rem;font-size:.75rem;font-weight:700;color:#dc3545;cursor:pointer;transition:all .15s;}
.btn-remove-block:hover{background:#dc3545;color:var(--white);}
.block-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;}
.block-card{background:var(--white);border-radius:14px;padding:1.2rem;box-shadow:0 2px 8px rgba(107,79,160,.08);display:flex;flex-direction:column;gap:.4rem;}
.block-card-icon{font-size:1.8rem;}
.block-card h4{font-size:.92rem;font-weight:700;color:var(--purple-dark);margin:0;}
.block-card p{font-size:.78rem;color:var(--text-light);margin:0 0 .3rem;}
.block-label{font-size:.76rem;font-weight:700;color:var(--text-mid);}
.block-input{width:100%;border:1.5px solid #ddd;border-radius:8px;padding:.6rem .7rem;font-size:1rem;box-sizing:border-box;margin-top:.1rem;}
.block-input:focus{outline:none;border-color:var(--purple-dark);}
.btn-block{background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:.5rem 1rem;font-size:.82rem;font-weight:700;cursor:pointer;margin-top:.5rem;transition:background .15s;}
.btn-block:hover{background:var(--purple);}
.week-editor-row{background:var(--white);border-radius:12px;padding:.9rem 1rem;margin-bottom:.6rem;box-shadow:0 1px 4px rgba(107,79,160,.07);}
.week-editor-day{font-size:.82rem;font-weight:700;color:var(--purple-dark);margin-bottom:.5rem;}
.week-editor-slots{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.5rem;}
.week-slot-tag{display:flex;align-items:center;gap:.25rem;background:var(--lavender);border-radius:100px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;color:var(--purple-dark);}
.week-slot-remove{cursor:pointer;font-size:.85rem;color:var(--text-light);transition:color .15s;}
.week-slot-remove:hover{color:#dc3545;}
.week-add-row{display:flex;gap:.4rem;align-items:center;}
.week-add-input{border:1.5px solid #ddd;border-radius:8px;padding:.45rem .5rem;font-size:1rem;width:100px;}
.week-add-input:focus{outline:none;border-color:var(--purple-dark);}
.week-add-btn{background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:.3rem .8rem;font-size:.78rem;font-weight:700;cursor:pointer;}
.terapeuta-empty{color:var(--text-light);font-size:.85rem;font-style:italic;padding:.5rem 0;}
/* ---- Aba Meus atendimentos (extrato mensal do profissional) ---- */
.atend-head{flex-wrap:wrap;gap:.6rem;}
.atend-controles{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}
.atend-mes{background:var(--white);border:1.5px solid var(--border);border-radius:100px;padding:.38rem .95rem;font-size:.82rem;font-weight:700;color:var(--purple-dark);cursor:pointer;min-height:34px;}
.atend-mes:focus{outline:none;border-color:var(--purple-dark);}
.atend-resumo{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem;margin-bottom:1rem;}
.atend-resumo-item{background:var(--white);border-radius:14px;padding:1rem 1.2rem;box-shadow:0 2px 8px rgba(107,79,160,.08);}
.atend-resumo-num{font-family:'Roboto',sans-serif;font-size:1.5rem;font-weight:800;color:var(--purple-dark);margin:0;line-height:1.15;}
.atend-resumo-rotulo{font-size:.78rem;color:var(--text-mid);margin:.2rem 0 0;line-height:1.45;text-wrap:pretty;}
.atend-resumo-item.alerta{background:#FFF8E6;}
.atend-resumo-item.alerta .atend-resumo-num{color:#7A5A1A;}
.atend-lista{background:var(--white);border-radius:14px;box-shadow:0 2px 8px rgba(107,79,160,.08);overflow:hidden;}
.atend-row{display:flex;align-items:center;gap:1rem;padding:.9rem 1.2rem;border-bottom:1px solid var(--border);}
.atend-row:last-child{border-bottom:none;}
.atend-row.pendente{background:#FFFBEF;}
.atend-data{flex:0 0 96px;display:flex;flex-direction:column;gap:.1rem;}
.atend-data strong{font-size:.95rem;color:var(--purple-dark);}
.atend-data span{font-size:.75rem;color:var(--text-light);}
.atend-quem{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem;}
.atend-quem strong{font-size:.9rem;color:var(--text-dark);font-weight:700;overflow-wrap:anywhere;}
.atend-quem span{font-size:.76rem;color:var(--text-mid);}
.atend-valor{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:.2rem;text-align:right;}
.atend-valor strong{font-size:.95rem;color:var(--purple-dark);}
.atend-selo-pendente{background:#FFF3CD;color:#7A5A1A;border-radius:100px;padding:.15rem .6rem;font-size:.68rem;font-weight:700;white-space:nowrap;}
.atend-total{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;background:var(--purple);color:var(--white);border-radius:20px;padding:1.6rem 2rem;margin-top:1rem;}
.atend-total-rotulo{font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--gold-light);margin:0 0 .35rem;}
.atend-total-valor{font-family:'Roboto',sans-serif;font-size:1.9rem;font-weight:800;line-height:1.15;margin:0 0 .4rem;}
.atend-total-obs{font-size:.8rem;opacity:.75;margin:0;line-height:1.5;max-width:52ch;text-wrap:pretty;}
.atend-copiar{background:transparent;color:var(--white);border:1.5px solid rgba(255,255,255,.45);border-radius:12px;padding:.6rem 1.3rem;font-size:.85rem;font-weight:600;cursor:pointer;min-height:44px;flex:0 0 auto;transition:background .15s;}
.atend-copiar:hover{background:rgba(255,255,255,.12);}
.atend-row.pendente .atend-valor strong{color:var(--text-light);}
.atend-quebra{background:var(--white);border-radius:16px;padding:1.1rem 1.3rem;margin-bottom:1rem;box-shadow:0 2px 8px rgba(107,79,160,.08);}
.atend-quebra-tit{font-size:.72rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--purple-dark);margin:0 0 .7rem;}
.atend-quebra-row{display:grid;grid-template-columns:1fr auto auto;gap:.25rem 1.1rem;align-items:baseline;padding:.45rem 0;border-bottom:1px solid rgba(107,79,160,.10);}
.atend-quebra-row:last-child{border-bottom:none;}
.atend-quebra-nome{font-size:.86rem;color:var(--text-dark);text-wrap:pretty;}
.atend-quebra-conta{font-size:.76rem;color:var(--text-mid);white-space:nowrap;}
.atend-quebra-val{font-size:.9rem;font-weight:700;color:var(--purple-dark);text-align:right;min-width:5.5rem;}
.atend-quebra-row.total{border-top:1.5px solid var(--purple);border-bottom:none;margin-top:.45rem;padding-top:.65rem;}
.atend-quebra-row.total .atend-quebra-nome{font-weight:700;}
.atend-quebra-row.total .atend-quebra-val{font-size:1.05rem;}
@media(max-width:640px){
  .atend-resumo{grid-template-columns:1fr 1fr;gap:.6rem;}
  /* Com 3 cartões, o terceiro sozinho deixaria meia linha vazia no celular. */
  .atend-resumo-item.wide{grid-column:1 / -1;}
  /* Três colunas não caberiam: o "por sessão" desce para a segunda linha. */
  .atend-quebra{padding:.95rem 1rem;}
  .atend-quebra-row{grid-template-columns:1fr auto;row-gap:.15rem;}
  .atend-quebra-nome{grid-column:1;grid-row:1;}
  .atend-quebra-val{grid-column:2;grid-row:1;min-width:0;}
  .atend-quebra-conta{grid-column:1 / -1;grid-row:2;white-space:normal;}
  .atend-resumo-item{padding:.85rem .9rem;}
  .atend-mes{min-height:44px;padding:.5rem 1rem;}
  .atend-controles .btn-refresh{min-height:44px;padding:.5rem 1rem;}
  .atend-row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"data valor" "quem quem";row-gap:.4rem;column-gap:.8rem;padding:.85rem 1rem;}
  .atend-data{grid-area:data;flex-direction:row;align-items:baseline;gap:.45rem;flex:none;}
  .atend-quem{grid-area:quem;}
  .atend-valor{grid-area:valor;}
  .atend-total{flex-wrap:wrap;gap:1rem;padding:1.3rem 1.2rem;border-radius:16px;}
  .atend-total-valor{font-size:1.6rem;}
  .atend-copiar{flex:1 1 100%;}
}
/* ---- Aba Perfil público (solicitações de alteração) ---- */
.solic-preview-card{display:flex;align-items:center;gap:1.2rem;background:var(--white);border-radius:14px;padding:1.1rem 1.3rem;box-shadow:0 2px 8px rgba(107,79,160,.08);}
.solic-preview-foto{width:88px;height:88px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--foto-luz);border:2px solid var(--gold);flex-shrink:0;}
.solic-preview-info{display:flex;flex-direction:column;gap:.15rem;min-width:0;}
.solic-preview-info strong{font-size:1rem;color:var(--purple-dark);}
.solic-preview-info span{font-size:.8rem;color:var(--text-mid);}
.solic-preview-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem;}
.solic-tag{background:var(--lavender);color:var(--purple-dark);border-radius:100px;padding:.2rem .7rem;font-size:.72rem;font-weight:600;}
.solic-preview-bio{background:var(--white);border-radius:14px;padding:1rem 1.3rem;margin-top:.75rem;box-shadow:0 2px 8px rgba(107,79,160,.08);}
.solic-preview-bio p{font-size:.84rem;color:var(--text-dark);line-height:1.6;margin:0 0 .6rem;}
.solic-preview-bio p:last-child{margin-bottom:0;}
.solic-form{background:var(--white);border-radius:14px;padding:1.2rem 1.3rem;box-shadow:0 2px 8px rgba(107,79,160,.08);}
.solic-label{display:block;font-size:.8rem;font-weight:700;color:var(--purple-dark);margin-bottom:.35rem;}
.solic-select{width:100%;max-width:320px;border:1.5px solid var(--border);border-radius:10px;padding:.55rem .8rem;font-size:.86rem;color:var(--text-dark);background:var(--white);min-height:44px;}
.solic-dica{font-size:.78rem;color:var(--text-mid);margin:.5rem 0 .6rem;line-height:1.5;}
.solic-texto{width:100%;border:1.5px solid var(--border);border-radius:10px;padding:.7rem .9rem;font-size:.88rem;font-family:'Roboto',sans-serif;color:var(--text-dark);resize:vertical;min-height:110px;box-sizing:border-box;}
.solic-texto:focus{outline:none;border-color:var(--purple-dark);}
.solic-form-rodape{display:flex;align-items:center;gap:.9rem;margin-top:.7rem;flex-wrap:wrap;}
.solic-enviar{background:var(--green);color:var(--white);border:none;border-radius:12px;padding:.65rem 1.5rem;font-size:.88rem;font-weight:700;cursor:pointer;min-height:44px;transition:filter .15s;}
.solic-enviar:hover{filter:brightness(1.06);}
.solic-enviar:disabled{opacity:.6;cursor:default;}
.solic-msg{font-size:.8rem;color:var(--text-mid);}
.solic-msg.ok{color:var(--green);font-weight:600;}
.solic-msg.erro{color:#C0392B;font-weight:600;}
.solic-nota{font-size:.75rem;color:var(--text-light);margin:.8rem 0 0;line-height:1.5;}
.solic-item{background:var(--white);border-radius:14px;padding:1rem 1.2rem;box-shadow:0 2px 8px rgba(107,79,160,.08);margin-bottom:.75rem;}
.solic-item-topo{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;}
.solic-item-topo strong{font-size:.9rem;color:var(--purple-dark);}
.solic-status{border-radius:100px;padding:.2rem .75rem;font-size:.7rem;font-weight:700;white-space:nowrap;}
.solic-status.aberta{background:#FFF3CD;color:#7A5A1A;}
.solic-status.atendida{background:#E4F0E7;color:var(--green);}
.solic-status.recusada{background:#FADBD8;color:#C0392B;}
.solic-item-prof{font-size:.8rem;font-weight:700;color:var(--text-dark);margin:.35rem 0 0;}
.solic-item-conteudo{font-size:.84rem;color:var(--text-dark);line-height:1.55;margin:.45rem 0 0;white-space:pre-wrap;overflow-wrap:anywhere;}
.solic-item-motivo{font-size:.8rem;color:#C0392B;margin:.45rem 0 0;line-height:1.5;}
.solic-item-data{font-size:.72rem;color:var(--text-light);margin:.45rem 0 0;}
.solic-item-acoes{display:flex;gap:.6rem;margin-top:.7rem;flex-wrap:wrap;}
@media(max-width:640px){
  .solic-preview-card{align-items:flex-start;}
  .solic-preview-foto{width:72px;height:72px;}
  .solic-select{max-width:none;}
  .solic-item-acoes .btn-confirm,.solic-item-acoes .btn-cancel-appt{min-height:44px;flex:1 1 45%;}
}
.atend-falta-area{margin-top:.25rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}
.atend-falta-btn{background:none;border:none;color:var(--text-mid);font-size:.72rem;text-decoration:underline;cursor:pointer;padding:.15rem 0;font-family:'Roboto',sans-serif;}
.atend-falta-btn:hover{color:var(--purple-dark);}
.atend-selo-falta{background:#EFE3E1;color:#8A3B2E;border-radius:100px;padding:.15rem .6rem;font-size:.68rem;font-weight:700;white-space:nowrap;}
.creditos-compras{margin:.35rem 0 .2rem;}
.creditos-compra-linha{font-size:.78rem;color:var(--text-mid);margin:.15rem 0;line-height:1.5;}
.creditos-compra-linha strong{color:var(--purple-dark);}
.upgrade-pop-titulo{font-size:1.25rem;color:var(--purple-dark);margin:0 0 .6rem;}
.upgrade-pop-texto{font-size:.9rem;color:var(--text-dark);margin:0 0 .9rem;line-height:1.55;}
.upgrade-pop-faixas{display:flex;gap:.7rem;margin-bottom:.9rem;}
.upgrade-pop-faixa{flex:1;background:var(--lavender);border-radius:14px;padding:.85rem .9rem;display:flex;flex-direction:column;gap:.15rem;align-items:center;text-align:center;}
.upgrade-pop-faixa strong{font-size:.85rem;color:var(--purple-dark);}
.upgrade-pop-faixa span{font-size:1rem;font-weight:800;color:var(--text-dark);}
.upgrade-pop-faixa.destaque{background:var(--purple);}
.upgrade-pop-faixa.destaque strong{color:var(--gold-light);}
.upgrade-pop-faixa.destaque span{color:var(--white);}
.upgrade-pop-nota{font-size:.78rem;color:var(--text-mid);margin:0 0 1.1rem;line-height:1.55;}
.upgrade-pop-cta{display:block;max-width:320px;margin:0 auto;min-height:48px;font-size:.95rem;}
.upgrade-pop-depois{display:block;margin:.7rem auto 0;background:none;border:none;color:var(--text-mid);font-size:.82rem;text-decoration:underline;cursor:pointer;font-family:'Roboto',sans-serif;min-height:44px;}
.multi-cart-bar{display:none;position:fixed;left:.75rem;right:.75rem;bottom:calc(.75rem + env(safe-area-inset-bottom));background:var(--purple);color:var(--white);border-radius:100px;padding:.8rem 1.3rem;z-index:150;box-shadow:0 10px 30px rgba(20,10,40,.35);cursor:pointer;align-items:center;justify-content:space-between;gap:.8rem;}
.multi-cart-bar-info{font-size:.88rem;font-weight:700;}
.multi-cart-bar-cta{font-size:.8rem;color:var(--gold-light);font-weight:700;white-space:nowrap;}
@media(max-width:640px){
  #page-multi.active .multi-cart-bar.show{display:flex;}
  .upgrade-pop-faixas{flex-direction:column;gap:.5rem;}
}
.indicacao-box{display:none;background:var(--white);border-radius:16px;padding:1.2rem 1.4rem;box-shadow:0 2px 10px rgba(107,79,160,.1);margin-bottom:1.5rem;border:1.5px dashed var(--gold);}
.indicacao-box.show{display:block;}
.indicacao-titulo{font-size:1.05rem;font-weight:800;color:var(--purple-dark);margin:0 0 .35rem;}
.indicacao-texto{font-size:.9rem;color:var(--text-mid);margin:0 0 .9rem;line-height:1.6;max-width:62ch;}
.indicacao-acoes{display:flex;gap:.6rem;align-items:stretch;flex-wrap:wrap;}
.indicacao-whats{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:var(--green);color:#fff;border:none;border-radius:10px;padding:.6rem 1.3rem;font-size:.9rem;font-weight:700;cursor:pointer;min-height:44px;white-space:nowrap;}
.indicacao-whats:hover{filter:brightness(1.08);}
.indicacao-copiar{background:transparent;color:var(--purple);border:1.5px solid var(--purple);border-radius:10px;padding:.6rem 1.3rem;font-size:.9rem;font-weight:700;cursor:pointer;min-height:44px;white-space:nowrap;}
.indicacao-copiar:hover{background:var(--purple);color:var(--white);}
.indicacao-regra{font-size:.78rem;color:var(--text-light);margin:.7rem 0 0;line-height:1.5;}
.indicacao-status{font-size:.8rem;color:var(--green);font-weight:600;margin:.5rem 0 0;}
@media(max-width:640px){
  .indicacao-whats,.indicacao-copiar{flex:1 1 100%;}
}
/* ---- Conversas (lista de convites e chats) ---- */
.conversas-box{display:none;background:var(--white);border-radius:16px;padding:1.3rem 1.4rem;box-shadow:0 2px 10px rgba(107,79,160,.1);margin-bottom:1.5rem;}
.conversas-box.show{display:block;}
.conv-titulo{font-size:1rem;font-weight:800;color:var(--purple-dark);margin:0 0 .3rem;}
.conv-sub{font-size:.82rem;color:var(--text-mid);margin:0 0 1rem;line-height:1.55;max-width:62ch;text-wrap:pretty;}
.conv-vazio{font-size:.85rem;color:var(--text-light);font-style:italic;line-height:1.6;margin:0;max-width:60ch;}
.conv-item{display:flex;align-items:flex-start;gap:1rem;padding:.95rem 0;border-bottom:1px solid var(--border);}
.conv-item:last-child{border-bottom:none;}
.conv-item:first-child{padding-top:0;}
.conv-avatar{width:44px;height:44px;border-radius:50%;background:var(--purple);color:var(--white);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.05rem;flex-shrink:0;border:2px solid var(--gold);}
.conv-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem;}
.conv-info strong{font-size:.95rem;color:var(--purple-dark);overflow-wrap:anywhere;}
.conv-papel{font-size:.76rem;color:var(--text-light);}
.conv-aviso{font-size:.8rem;color:var(--text-mid);margin:.4rem 0 0;line-height:1.5;}
.conv-previa{font-size:.84rem;color:var(--text-dark);background:var(--lavender);border-radius:12px;padding:.6rem .85rem;margin:.5rem 0 0;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;}
.conv-acao{flex-shrink:0;display:flex;align-items:center;}
.conv-acoes-par{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.6rem;}
.conv-btn{border-radius:100px;padding:.55rem 1.2rem;font-family:'Roboto',sans-serif;font-size:.82rem;font-weight:700;cursor:pointer;min-height:44px;white-space:nowrap;transition:filter .15s,background .15s,color .15s;}
.conv-btn-abrir{background:var(--purple-dark);color:var(--white);border:none;display:inline-flex;align-items:center;gap:.4rem;}
.conv-btn-abrir:hover{background:var(--purple);}
.conv-btn-convidar{background:transparent;color:var(--purple-dark);border:1.5px solid var(--purple-dark);}
.conv-btn-convidar:hover{background:var(--purple-dark);color:var(--white);}
.conv-btn-aceitar{background:var(--green);color:var(--white);border:none;}
.conv-btn-aceitar:hover{filter:brightness(1.08);}
.conv-btn-recusar{background:transparent;color:var(--text-mid);border:1.5px solid var(--border);}
.conv-btn-recusar:hover{border-color:var(--text-mid);}
.conv-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.15rem;height:1.15rem;background:var(--gold-light);color:var(--purple-dark);border-radius:100px;font-size:.7rem;font-weight:800;padding:0 .3rem;}
/* Modal de convite */
.convite-modal{max-width:520px;}
.convite-titulo{font-size:1.2rem;color:var(--purple-dark);margin:0 0 .6rem;}
.convite-texto{font-size:.88rem;color:var(--text-dark);margin:0 0 1rem;line-height:1.6;}
.convite-label{display:block;font-size:.8rem;font-weight:700;color:var(--purple-dark);margin-bottom:.4rem;}
.convite-textarea{width:100%;border:1.5px solid var(--border);border-radius:12px;padding:.75rem .9rem;font-family:'Roboto',sans-serif;font-size:.9rem;color:var(--text-dark);resize:vertical;min-height:96px;box-sizing:border-box;}
.convite-textarea:focus{outline:none;border-color:var(--purple-dark);}
.convite-nota{font-size:.76rem;color:var(--text-light);margin:.7rem 0 0;line-height:1.55;}
.convite-rodape{display:flex;align-items:center;gap:.9rem;margin-top:1.1rem;flex-wrap:wrap;}
.convite-enviar{background:var(--green);color:var(--white);border:none;border-radius:12px;padding:.7rem 1.6rem;font-size:.9rem;font-weight:700;cursor:pointer;min-height:48px;}
.convite-enviar:hover{filter:brightness(1.06);}
.convite-enviar:disabled{opacity:.6;cursor:default;}
.convite-msg{font-size:.8rem;color:var(--text-mid);}
.convite-msg.erro{color:#C0392B;font-weight:600;}
@media(max-width:640px){
  .conversas-box{padding:1.1rem 1rem;border-radius:14px;}
  .conv-item{flex-wrap:wrap;gap:.75rem;}
  .conv-acao{flex:1 1 100%;}
  .conv-btn{width:100%;justify-content:center;}
  .conv-acoes-par{flex:1 1 100%;}
  .conv-acoes-par .conv-btn{flex:1 1 45%;width:auto;}
  .convite-enviar{flex:1 1 100%;}
}
.menu-terapeuta-btn{display:none;}
/* ===== MATCH MODAL ===== */
.btn-match{position:relative;z-index:3;margin-top:1.2rem;background:rgba(255,255,255,.15);border:2px solid rgba(255,255,255,.6);color:var(--white);border-radius:100px;padding:.65rem 1.6rem;font-family:'Roboto',sans-serif;font-size:.88rem;font-weight:700;cursor:pointer;backdrop-filter:blur(8px);transition:all .2s;}
.btn-match:hover{background:rgba(255,255,255,.25);transform:translateY(-1px);}
.match-modal{background:var(--white);border-radius:28px;padding:2.5rem 2rem;max-width:500px;width:100%;position:relative;box-shadow:0 24px 64px rgba(20,10,40,.28);}
.match-modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;font-size:1.1rem;color:var(--text-light);cursor:pointer;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.match-modal-close:hover{background:var(--lavender);}
.match-modal.match-wide{max-width:660px;}
#match-options{max-height:48vh;overflow-y:auto;padding-right:2px;}
.agenda-hero-alt{position:relative;z-index:3;color:rgba(255,255,255,.88);font-size:.85rem;margin-top:.7rem;padding:0 1.5rem;max-width:38ch;text-align:center;line-height:1.5;text-wrap:pretty;text-shadow:0 1px 6px rgba(20,10,40,.45);}
/* Precisa vir DEPOIS da regra base: em CSS, com a mesma especificidade,
   quem é declarado por último vence, e um @media não muda isso. */
@media(max-width:640px){.agenda-hero-alt{margin-top:.55rem;font-size:.82rem;}}
.match-privacy{font-size:.72rem;color:var(--text-light);margin-top:.9rem;text-align:center;line-height:1.4;}
/* Seletor de Libras da tela de abertura do quiz. Discreto quando
   desligado, verde cheio quando ligado, para a pessoa ter certeza de que
   a escolha foi registrada. Verde e nao dourado porque na Doxa o dourado
   marca credencial de CRP. min-height de 44px pelo alvo de toque. */
.match-libras-toggle{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;min-height:44px;margin:0 0 .9rem;padding:.6rem .9rem;background:transparent;border:1.5px dashed rgba(107,79,160,.4);border-radius:100px;font-family:'Roboto',sans-serif;font-size:.82rem;font-weight:600;line-height:1.3;color:var(--text-mid);cursor:pointer;transition:all .18s;}
/* O texto pode quebrar em duas linhas num aparelho de 320px. O icone nao
   encolhe junto, senao vira um risco no meio da frase. */
.match-libras-toggle svg{flex:0 0 auto;}
.match-libras-toggle span{min-width:0;}
.match-libras-toggle:hover{border-color:var(--green);color:var(--green);}
.match-libras-toggle:focus-visible{outline:3px solid var(--purple);outline-offset:2px;}
.match-libras-toggle[aria-pressed="true"]{background:var(--green);border-style:solid;border-color:var(--green);color:#fff;box-shadow:0 2px 10px rgba(63,105,76,.3);}
.match-next-btn{width:100%;margin-top:.9rem;}
.match-next-btn[disabled]{opacity:.45;cursor:not-allowed;}
.match-multi-hint{font-size:.75rem;color:var(--text-mid);margin:.1rem 0 .7rem;text-align:center;line-height:1.45;}
.match-reco-list{display:flex;flex-direction:column;gap:.9rem;margin-top:1rem;max-height:56vh;overflow-y:auto;padding-right:2px;}
.match-reco-card{display:flex;gap:.9rem;background:var(--lavender);border-radius:16px;padding:1rem;align-items:flex-start;text-align:left;position:relative;}
.match-reco-pos{display:inline-block;background:var(--gold);color:#fff;font-size:.66rem;font-weight:700;border-radius:999px;padding:.18rem .6rem;letter-spacing:.04em;margin-bottom:.35rem;}
.match-reco-photo{width:150px;height:150px;border-radius:50%;object-fit:cover;object-position:center top;flex:0 0 150px;border:2px solid var(--gold);background:var(--foto-luz);}
.match-reco-body{flex:1;min-width:0;}
.match-reco-name{font-weight:700;color:var(--purple);font-size:1rem;line-height:1.2;}
.match-reco-crp{font-size:.7rem;color:var(--text-mid);margin-top:.1rem;}
.match-reco-spec{font-size:.76rem;color:var(--text-mid);margin:.2rem 0 .35rem;}
.match-reco-why{font-size:.79rem;color:var(--text-dark);background:#fff;border-left:3px solid var(--gold);padding:.5rem .6rem;border-radius:8px;margin:.45rem 0;line-height:1.45;}
.match-reco-meta{display:flex;gap:.8rem;flex-wrap:wrap;font-size:.74rem;color:var(--text-mid);margin-top:.15rem;}
.match-reco-meta strong{color:var(--purple);font-weight:700;}
.match-reco-actions{margin-top:.6rem;}
.match-reco-btn{background:var(--green);color:#fff;border:none;border-radius:10px;padding:.55rem 1rem;font-size:.82rem;font-weight:600;cursor:pointer;transition:filter .15s;}
.match-reco-btn:hover{filter:brightness(1.08);}
.match-empty{background:var(--lavender);border-radius:16px;padding:1.4rem 1.1rem;text-align:center;font-size:.85rem;color:var(--text-dark);margin-top:1rem;line-height:1.5;}
.match-result-note{font-size:.7rem;color:var(--text-light);text-align:center;margin-top:.8rem;}
@media(min-width:521px) and (max-width:639px){.match-reco-photo{width:130px;height:130px;flex:0 0 130px;}}
@media(max-width:520px){.match-reco-card{flex-direction:column;align-items:center;text-align:center;}.match-reco-why{text-align:left;}.match-reco-meta{justify-content:center;}.match-reco-photo{width:150px;height:150px;flex:0 0 150px;}}
.quiz-section-home{padding:4.5rem 8% 3.2rem;background:var(--white);text-align:center;scroll-margin-top:110px;}
.quiz-home-inner{max-width:900px;margin:0 auto;}
.quiz-home-eyebrow{display:inline-block;color:var(--gold);font-family:'Roboto',sans-serif;font-size:1.25rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;line-height:1.3;}
/* No celular o aumento é menor: o mesmo dobro do computador ocuparia
   quase toda a largura e competiria com o título logo abaixo. */
@media(max-width:760px){.quiz-home-eyebrow{font-size:1.05rem;letter-spacing:.16em;}}
.quiz-home-h2{font-family:'Roboto',sans-serif;font-size:clamp(1.55rem,3.4vw,2.35rem);color:var(--purple);font-weight:700;margin:.8rem 0 1rem;line-height:1.28;text-wrap:balance;text-align:center;}
.quiz-home-sub{color:var(--text-mid);font-size:.97rem;line-height:1.75;max-width:58ch;margin:0 0 2.3rem;text-wrap:pretty;text-align:left;}
.quiz-home-sub-linha2{display:block;margin-top:.55rem;font-weight:700;color:var(--text-dark);}
.quiz-home-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;margin:0 0 2.3rem;}
/* 1,15rem de folga lateral era pouco para um parágrafo de três linhas: o texto
   chegava quase encostado na borda arredondada. Com 1,55rem, e a descrição
   limitada a 34ch, cada linha respira dos dois lados. */
.quiz-home-step{background:var(--lavender);border:1px solid var(--purple);border-radius:18px;padding:1.55rem 1.55rem 1.65rem;display:flex;flex-direction:column;gap:.5rem;align-items:center;}
.quiz-home-step-num{width:36px;height:36px;border-radius:50%;background:var(--gold);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:.95rem;font-family:'Roboto',sans-serif;}
.quiz-home-step strong{color:var(--purple);font-size:.95rem;font-family:'Roboto',sans-serif;line-height:1.3;text-wrap:balance;}
.quiz-home-step-desc{font-size:.82rem;color:var(--text-mid);line-height:1.6;text-wrap:pretty;max-width:34ch;margin-inline:auto;}
.quiz-home-cta{display:flex;gap:1.1rem;align-items:center;justify-content:center;flex-wrap:wrap;margin-bottom:1.7rem;}
.quiz-home-alt-link{background:none;border:none;color:var(--purple);font-size:.85rem;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px;font-family:'Roboto',sans-serif;transition:color .15s;}
.quiz-home-alt-link:hover{color:var(--gold);}
.quiz-home-trust{display:flex;gap:.6rem 1.6rem;justify-content:center;flex-wrap:wrap;font-size:.78rem;color:var(--text-mid);}
.quiz-home-trust span{display:inline-flex;align-items:flex-start;gap:.35rem;text-align:left;line-height:1.5;}
.pro-avail-home{display:inline-flex;align-items:center;gap:.4rem;background:rgba(63,105,76,.1);color:var(--green);font-size:.76rem;font-weight:700;border-radius:100px;padding:.3rem .75rem;margin-bottom:.45rem;line-height:1.3;}
.pro-avail-dot{width:6px;height:6px;border-radius:50%;background:var(--green);flex:none;}
.pros-carousel-wrap{margin-top:2.5rem;}
@media(min-width:1200px){
  /* Breakpoint alinhado ao maior já usado no site (1200px, ja empregado em
     outras 2 regras). Cheguei a testar 901px, mas nessa largura o iPad
     paisagem (1024px de tela) ainda cabia so 4 colunas no auto-fit e sobrava
     1 cartao sozinho na ultima linha - a mesma "quebra" relatada, so que mais
     sutil. Só empurrando pra 1200px (nenhum tablet comum, retrato ou
     paisagem, chega la) o carrossel de rolagem horizontal - que nunca quebra,
     porque nao depende de quantas colunas cabem - cobre toda a faixa de
     tablet. Só telas de desktop de verdade usam o grid fixo. */
  .pros-grid-home{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:1.2rem;overflow:visible;padding:.5rem 0 0;margin:0;}
  .pros-grid-home .pro-card-home{flex:none;padding:1.7rem 1.1rem;}
  .pros-grid-home .pro-card-img-home{width:min(188px,86%);height:auto;aspect-ratio:1/1;margin-bottom:1rem;}
  .pros-grid-home .pro-spec-home{max-width:100%;}
}
.quiz-home-dots{display:none;align-items:center;justify-content:center;gap:.75rem;margin:-1rem 0 2rem;}
.quiz-home-dots-marks{display:flex;gap:.4rem;}
.quiz-home-dot{width:8px;height:8px;border-radius:50%;background:var(--border);border:none;padding:0;cursor:pointer;transition:width .25s,background .25s;}
.quiz-home-dot.active{background:var(--gold);width:22px;border-radius:100px;}
.quiz-home-dots-count{font-size:.75rem;font-weight:700;color:var(--text-light);letter-spacing:.04em;font-variant-numeric:tabular-nums;}
@media(max-width:760px){
  .quiz-section-home{padding:3.2rem 6% 2.4rem;}
  .quiz-home-cta{flex-direction:column;gap:.8rem;}
  /* Carrossel: os 3 passos deslizam para o lado, um de cada vez */
  .quiz-home-steps{display:flex;grid-template-columns:none;gap:.9rem;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:none;margin:0 -6% 1.1rem;padding:.2rem 6% 1rem;}
  .quiz-home-steps::-webkit-scrollbar{display:none;}
  .quiz-home-step{flex:0 0 84%;scroll-snap-align:center;min-height:100%;}
  .quiz-home-dots{display:flex;}
  .quiz-home-trust{flex-direction:column;align-items:flex-start;text-align:left;gap:.55rem;max-width:32ch;margin:0 auto;}
}
/* ===== Blindagem mobile do modal do quiz =====
   - max-height com dvh (iOS Safari: 100vh inclui a área atrás das barras;
     100dvh acompanha a barra dinâmica — o vh fica como fallback p/ browsers antigos)
   - safe-area: respeita o entalhe do iPhone e a barra de gestos do Android
   - overscroll-behavior:contain: impede a rolagem de "vazar" para a página atrás */
.match-modal{max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}
#match-modal-overlay{padding:max(1rem,env(safe-area-inset-top)) 1rem max(1rem,env(safe-area-inset-bottom)) !important;}
#match-options{overscroll-behavior:contain;}
.match-reco-list{overscroll-behavior:contain;}
@media(max-width:639px){
  /* No celular, UMA única área de rolagem: os scrolls internos somem e o
     modal inteiro rola — evita o "scroll dentro de scroll" no dedo */
  #match-options{max-height:none;overflow-y:visible;padding-right:0;}
  .match-reco-list{max-height:none;overflow-y:visible;padding-right:0;}
  /* Continuar sempre à vista enquanto a lista de opções rola */
  .match-next-btn{position:sticky;bottom:calc(env(safe-area-inset-bottom,0px) + .15rem);z-index:2;}
}
.match-intro-label{display:inline-block;background:var(--lavender);color:var(--purple-dark);font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;border-radius:100px;padding:.3rem .9rem;margin-bottom:1rem;}
.match-title{font-family:'Roboto',sans-serif;font-size:1.4rem;font-weight:700;color:var(--purple-dark);margin:0 0 .5rem;line-height:1.3;}
.match-sub{font-size:.88rem;color:var(--text-mid);margin:0 0 1.5rem;line-height:1.6;}
.match-progress-dots{display:flex;gap:.4rem;margin-bottom:1.5rem;}
.match-dot{width:8px;height:8px;border-radius:50%;background:var(--border);transition:all .3s;}
.match-dot.active{background:var(--purple-dark);width:24px;border-radius:100px;}
.match-dot.done{background:var(--purple-light);}
.match-question-label{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-light);margin-bottom:.6rem;}
.match-question-text{font-family:'Roboto',sans-serif;font-size:1.15rem;font-weight:700;color:var(--purple-dark);margin:0 0 1.2rem;line-height:1.4;}
.match-options{display:flex;flex-direction:column;gap:.5rem;}
.match-option{background:var(--lavender);border:2px solid transparent;border-radius:14px;padding:.85rem 1.1rem;font-family:'Roboto',sans-serif;font-size:.88rem;font-weight:600;color:var(--text-dark);cursor:pointer;text-align:left;transition:all .18s;line-height:1.4;}
.match-option:hover{border-color:var(--purple-dark);background:var(--lavender-mid);}
.match-option.selected{border-color:var(--purple-dark);background:var(--purple-dark);color:var(--white);}
.match-result-card{background:var(--lavender);border-radius:16px;padding:1.1rem 1.2rem;margin-top:1rem;display:flex;align-items:center;gap:1rem;}
.match-result-photo{width:56px;height:56px;border-radius:50%;object-fit:cover;object-position:top;flex-shrink:0;border:2px solid var(--white);background:var(--foto-luz);}
.match-result-name{font-weight:700;color:var(--purple-dark);font-size:1rem;}
.match-result-spec{font-size:.78rem;color:var(--text-mid);margin-top:.15rem;}
.match-result-reason{margin-top:.9rem;font-size:.85rem;color:var(--text-mid);line-height:1.65;padding:.75rem 1rem;border-left:3px solid var(--purple-light);background:var(--lavender);border-radius:0 10px 10px 0;}
@keyframes spin{to{transform:rotate(360deg);}}
/* ===== AGENDAMENTO MÚLTIPLO ===== */
.multi-wrap{max-width:1180px;margin:0 auto;padding:7rem 5% 3.5rem;}
@media(max-width:900px){.multi-wrap{padding:7rem 6% 3rem;}}
@media(max-width:640px){.multi-wrap{padding:6.5rem 6% 2.5rem;}}
.multi-back{display:inline-flex;align-items:center;gap:.4rem;background:var(--white);border:1.5px solid var(--border);border-radius:100px;color:var(--purple-dark);font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:700;letter-spacing:.02em;text-align:left;cursor:pointer;margin:0 0 1rem;padding:.5rem 1.1rem;min-height:40px;box-shadow:0 2px 8px rgba(74,50,114,.06);transition:background .2s,border-color .2s,transform .15s;}
.multi-back:hover{background:var(--lavender);border-color:var(--purple);transform:translateX(-2px);}
.multi-title{font-family:'Roboto',sans-serif;font-size:1.8rem;color:var(--purple-dark);margin:0 0 .4rem;text-wrap:balance;}
.multi-subtitle{color:var(--text-mid);font-size:.92rem;margin:0 0 .3rem;line-height:1.6;max-width:60ch;text-wrap:pretty;}
.multi-layout{display:grid;grid-template-columns:1.22fr 1fr;gap:1.6rem;align-items:start;}
.multi-add-card,.multi-cart-card{background:var(--white);border-radius:20px;padding:2rem;box-shadow:0 4px 16px rgba(74,50,114,.08);border:1px solid rgba(107,79,160,.1);}
.multi-add-card h3,.multi-cart-card h3{font-size:1rem;color:var(--purple-dark);margin:0 0 1rem;display:flex;align-items:center;gap:.5rem;}
.multi-label{display:block;font-size:.78rem;font-weight:700;color:var(--text-mid);margin:.9rem 0 .35rem;}
.multi-select{width:100%;border:1.5px solid var(--border);border-radius:10px;padding:.65rem .8rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);background:var(--white);}
.multi-calendar-header{display:flex;align-items:center;justify-content:space-between;margin-top:.5rem;}
.multi-calendar-header button{background:none;border:none;font-size:1.1rem;color:var(--purple-dark);cursor:pointer;padding:.3rem .6rem;border-radius:50%;}
.multi-calendar-header button:hover{background:var(--lavender);}
.multi-calendar-header span{font-weight:700;color:var(--purple-dark);font-size:.88rem;}
.multi-calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:.7rem;color:var(--text-light);margin-top:.6rem;}
.multi-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;margin-top:.3rem;}
.multi-cal-day{aspect-ratio:1;min-height:38px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:.8rem;cursor:pointer;color:var(--text-dark);background:transparent;position:relative;transition:background .15s,color .15s;}
.multi-cal-day:hover{background:var(--lavender-mid);}
.multi-cal-day.disabled{opacity:.3;cursor:not-allowed;color:var(--text-light);}
.multi-cal-day.selected{background:var(--purple-dark);color:var(--white);font-weight:700;}
.multi-cal-day.empty{visibility:hidden;}
.multi-times-grid{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem;}
.multi-time-btn{background:var(--purple-dark);border:none;border-radius:100px;padding:.5rem 1.1rem;min-height:40px;font-family:'Roboto',sans-serif;font-size:.82rem;font-weight:600;color:var(--white);cursor:pointer;transition:background .2s,transform .15s;}
.multi-time-btn:hover{background:var(--purple);transform:translateY(-1px);}
.multi-time-btn.selected{background:var(--gold);color:var(--text-dark);}
.multi-recur-check{display:flex;align-items:center;gap:.5rem;margin-top:1.1rem;font-size:.85rem;color:var(--text-mid);cursor:pointer;}
.btn-multi-add{width:100%;background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:.75rem;font-size:.88rem;font-weight:700;cursor:pointer;margin-top:1.2rem;transition:background .15s;}
.btn-multi-add:hover:not(:disabled){background:var(--purple);}
.btn-multi-add:disabled{opacity:.5;cursor:not-allowed;}
.multi-add-hint{display:none;margin-top:.5rem;font-size:.78rem;line-height:1.5;color:var(--text-mid);text-align:center;}
/* CRÉDITOS AVULSOS COMPRADOS JUNTO COM AS CONSULTAS (pedido 02/08/2026).
   Fica DEPOIS do botão "+ Adicionar à lista" de propósito: a caixinha vale
   para a compra inteira, não para o horário que está sendo adicionado. Se
   ficasse acima do botão, ela pareceria fazer parte do que aquele clique
   adiciona, que é justamente o que ela NÃO é. A régua de cima separa os dois
   assuntos sem precisar de mais um título. */
.multi-creditos-bloco{border-top:1px solid var(--border);margin-top:1.15rem;padding-top:.35rem;}
.multi-creditos-bloco .multi-recur-check{margin-top:.75rem;}
.multi-creditos-qtd{width:100%;max-width:150px;}
.multi-creditos-hint{margin-top:.55rem;font-size:.78rem;line-height:1.55;color:var(--text-mid);text-wrap:pretty;}
.multi-creditos-hint strong{color:var(--purple-dark);}
.multi-cart-count{background:var(--lavender);color:var(--purple-dark);border-radius:100px;padding:.15rem .55rem;font-size:.75rem;}
.multi-cart-list{display:flex;flex-direction:column;gap:.7rem;max-height:420px;overflow-y:auto;}
.multi-cart-empty{color:var(--text-light);font-size:.85rem;font-style:italic;padding:1rem 0;}
.multi-cart-item{background:var(--lavender);border-radius:12px;padding:.85rem 1rem;display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem;}
.multi-cart-item-info{font-size:.85rem;}
.multi-cart-item-prof{font-weight:700;color:var(--purple-dark);}
.multi-cart-item-date{color:var(--text-mid);font-size:.8rem;margin-top:.15rem;}
.multi-cart-item-recur{display:inline-block;background:var(--gold-light);color:#7A5A1A;border-radius:100px;padding:.1rem .5rem;font-size:.68rem;font-weight:700;margin-top:.3rem;}
.multi-cart-item-remove{background:none;border:none;color:#dc3545;cursor:pointer;font-size:.9rem;padding:.2rem;flex-shrink:0;}
.multi-cart-total{display:flex;justify-content:space-between;align-items:center;border-top:1.5px solid var(--border);margin-top:1.2rem;padding-top:1rem;font-size:.95rem;color:var(--text-dark);}
.multi-cart-total strong{font-size:1.3rem;color:var(--purple-dark);}
.multi-cart-fechamento .btn-primary{margin-top:1.15rem;}
/* O botão de pagamento estava encostado no total. Um valor em dinheiro e um
   botão irreversível não devem dividir a mesma borda. */
.multi-cart-total + .btn-primary{margin-top:1.15rem;}
/* Compactação só no desktop largo, DEPOIS das bases (ordem CSS decide) */
@media(min-width:1200px){
  .multi-cart-list{gap:.45rem;}
  .multi-cart-item{padding:.55rem .8rem;gap:.4rem;}
  .multi-cart-item-info{font-size:.8rem;}
  .multi-cart-item-date{font-size:.74rem;margin-top:.05rem;}
  .multi-cart-item-recur{font-size:.64rem;margin-top:.2rem;}
}
.multi-reassurance{font-size:.8rem;color:var(--text-light);margin:0 0 1.3rem;line-height:1.55;max-width:66ch;text-wrap:pretty;}
.multi-prof-chip{display:none;gap:1.1rem;align-items:center;background:var(--lavender);border-radius:14px;padding:1rem 1.1rem;margin:.65rem 0 1.1rem;}
.multi-prof-chip img{width:118px;height:118px;border-radius:50%;object-fit:cover;object-position:center top;flex:0 0 118px;background:var(--foto-luz);border:2px solid var(--gold);}
.multi-prof-chip-name{font-weight:700;color:var(--purple-dark);font-size:1.05rem;line-height:1.3;}
.multi-prof-chip-meta{font-size:.8rem;color:var(--text-mid);margin-top:.25rem;line-height:1.45;}
.multi-recur-block{margin-top:1.2rem;padding-top:1rem;border-top:1.5px solid var(--border);}
.multi-recur-lead{font-size:.8rem;color:var(--text-mid);line-height:1.5;margin:0 0 .7rem;}
.multi-recur-chips{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.6rem;align-items:stretch;}
.multi-recur-chip{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;background:var(--white);border:1.5px solid var(--border);border-radius:14px;padding:.85rem .9rem;font-family:'Roboto',sans-serif;text-align:left;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;}
.mrc-title{font-size:.84rem;font-weight:700;color:var(--purple-dark);line-height:1.3;}
.mrc-price{font-size:1.02rem;font-weight:700;color:var(--purple);line-height:1.25;}
.mrc-price em{display:block;font-style:normal;font-size:.72rem;font-weight:600;color:var(--text-mid);}
.mrc-note{font-size:.72rem;color:var(--text-mid);line-height:1.45;margin-top:.15rem;text-wrap:pretty;}
.mrc-save{font-size:.72rem;font-weight:700;color:var(--green);margin-top:.2rem;}
.mrc-badge{align-self:flex-start;background:var(--gold);color:#fff;font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border-radius:999px;padding:.15rem .5rem;margin-bottom:.15rem;}
.mrc-badge-promo{align-self:flex-start;background:var(--green);color:#fff;font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border-radius:999px;padding:.15rem .5rem;margin-bottom:.15rem;}
.mrc-antes{text-decoration:line-through;opacity:.75;}
.multi-recur-nota{font-size:.73rem;color:var(--text-light);line-height:1.5;margin:.7rem 0 0;text-wrap:pretty;}
.multi-pricing-resumo{display:none;border-top:1.5px solid var(--border);margin-top:1.1rem;padding-top:.9rem;}
.multi-pricing-linha{display:flex;justify-content:space-between;gap:.8rem;font-size:.8rem;color:var(--text-mid);margin-bottom:.3rem;}
.multi-pricing-linha strong{color:var(--purple-dark);}
.multi-pricing-economia{font-size:.8rem;font-weight:700;color:var(--green);line-height:1.5;margin-top:.3rem;text-wrap:pretty;}
.multi-pricing-divisao{opacity:.75;font-size:.78rem;}
.multi-pricing-nota{font-size:.72rem;color:var(--text-light);line-height:1.5;margin-top:.4rem;text-wrap:pretty;}
.multi-recur-chip:hover{border-color:var(--purple);}
.multi-recur-chip.selected{background:var(--lavender);border-color:var(--purple-dark);box-shadow:0 0 0 1.5px var(--purple-dark) inset;}
@media(max-width:760px){.multi-recur-chips{grid-template-columns:1fr;}}
.multi-recur-other-link{display:inline-block;background:none;border:none;color:var(--purple-dark);font-size:.75rem;font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer;margin-top:.6rem;padding:0;font-family:'Roboto',sans-serif;}
.multi-vacation-notice{display:none;background:#FFF8E8;border:1.5px solid var(--gold-light);border-radius:12px;padding:.85rem 1rem;margin-top:1rem;font-size:.79rem;color:var(--text-dark);line-height:1.55;}
.multi-cart-empty{display:flex;flex-direction:column;align-items:center;gap:.3rem;color:var(--text-light);font-size:.85rem;padding:2.6rem 1rem;text-align:center;}
.multi-cart-empty-icon{font-size:2.1rem;margin-bottom:.2rem;}
.multi-cart-empty-sub{font-size:.78rem;color:var(--text-light);}
.multi-checkout-layout{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;align-items:start;}
.multi-checkout-summary,.multi-checkout-form{background:var(--white);border-radius:16px;padding:1.6rem;box-shadow:0 4px 16px rgba(74,50,114,.08);}
.multi-checkout-summary h3,.multi-checkout-form h3{font-size:1rem;color:var(--purple-dark);margin:0 0 1rem;}
.multi-checkout-form input{width:100%;border:1.5px solid var(--border);border-radius:10px;padding:.8rem .9rem;font-family:'Roboto',sans-serif;font-size:1rem;margin-bottom:.7rem;box-sizing:border-box;}
@media(max-width:768px){.multi-layout,.multi-checkout-layout{grid-template-columns:1fr;}}
/* Telas de celular: menos moldura, mais conteúdo. O dedo precisa de alvo
   maior no calendário (44px é o mínimo recomendado por Apple e Google),
   e o rodapé respeita a faixa do iPhone com barra de gestos. */
@media(max-width:640px){
  .multi-wrap{padding:5.6rem 5% calc(2rem + env(safe-area-inset-bottom, 0px));}
  .multi-title{font-size:1.45rem;}
  .multi-subtitle{font-size:.88rem;margin-bottom:.25rem;}
  .multi-reassurance{margin-bottom:1rem;}
  .multi-back{margin-bottom:.85rem;}
  .multi-layout{gap:1.1rem;}
  .multi-add-card,.multi-cart-card{padding:1.15rem 1.1rem;border-radius:16px;}
  .multi-add-card h3,.multi-cart-card h3{margin-bottom:.7rem;}
  .multi-label{margin:.7rem 0 .3rem;}
  .multi-cal-day{min-height:44px;font-size:.85rem;}
  .multi-calendar-grid{gap:.15rem;}
  .multi-recur-chip{padding:.7rem .8rem;}
  /* A foto grande ancora quem e o profissional, mas nao pode comer o texto:
     92px deixa ~150px para nome, CRP e abordagem numa tela de 375px. */
  .multi-prof-chip{gap:.9rem;padding:.85rem .9rem;}
  .multi-prof-chip img{width:92px;height:92px;flex:0 0 92px;}
  .multi-prof-chip-name{font-size:.98rem;}
  .multi-prof-chip-meta{font-size:.76rem;}
  .multi-recur-lead{margin-bottom:.6rem;}
  .multi-cart-list{max-height:none;}
}

/* Telas largas: as duas caixas crescem e se afastam para as laterais, em vez
   de ficarem espremidas numa faixa central. Os textos do cabeçalho seguem com
   max-width própria, então continuam com largura de leitura confortável e não
   viram linhas de ponta a ponta. */
/* TELAS LARGAS, EM ESCADA. Tudo num lugar só e DEPOIS das regras base, senão
   a regra base venceria por vir depois no arquivo (armadilha já registrada).
   Cada degrau só entra quando o espaço realmente cabe:
     1200px  área útil maior e cartões com mais respiro
     1400px  o fechamento do carrinho vira uma linha: valor à esquerda,
             botão à direita, com folga entre os dois
     1600px  a caixa de montar a consulta se divide em duas colunas,
             calendário de um lado e pacotes do outro. Abaixo disso a coluna
             ficaria com menos de 300px e a célula do calendário cairia para
             ~35px, apertado demais para ler e tocar. */
@media(min-width:1200px){
  .multi-wrap{max-width:1320px;}
  .multi-layout{gap:2rem;}
  .multi-add-card,.multi-cart-card{padding:2.2rem 2.4rem;}
}
@media(min-width:1400px){
  .multi-wrap{max-width:1460px;}
  .multi-layout{grid-template-columns:1.3fr 1fr;gap:2.2rem;}
  .multi-cart-fechamento{display:flex;align-items:center;gap:1.5rem;
    border-top:1.5px solid var(--border);margin-top:1.2rem;padding-top:1.2rem;}
  .multi-cart-fechamento .multi-cart-total{flex:1;margin-top:0;padding-top:0;border-top:none;}
  .multi-cart-fechamento .btn-primary{width:auto !important;flex:0 0 auto;margin-top:0;padding:.9rem 2.1rem;}
}
@media(min-width:1600px){
  .multi-wrap{max-width:1560px;}
  .multi-layout{gap:2.4rem;}
  .multi-add-cols{display:grid;grid-template-columns:1fr 1fr;gap:1.8rem;align-items:start;}
  /* A linha que separava os pacotes deixa de ser horizontal e vira a divisa
     vertical entre as duas colunas. */
  .multi-add-cols .multi-recur-block{margin-top:0;padding-top:0;border-top:none;
    padding-left:1.8rem;border-left:1.5px solid var(--border);}
}
/* VLIBRAS: NAO POSICIONAMOS MAIS O WIDGET. O plugin cuida disso sozinho.

   HISTORICO, para ninguem refazer nenhum dos erros:
   1a tentativa: empilhar por CSS com !important em seletor do plugin.
   2a tentativa: revezar o canto, escondendo o VLibras quando o botao do
      WhatsApp aparecesse. Isso escondeu o widget em quase todo o site.
   3a tentativa: forcar `position:fixed` no [vw-access-button] por JS.
   AS TRES PARTIAM DE UMA PREMISSA FALSA: que o VLibras nasce no canto
   inferior direito, em cima do botao do WhatsApp. Lendo o codigo do plugin
   em 26/07/2026, a posicao padrao e "R", que o proprio plugin aplica no
   container externo `div[vw]` como `right:0; top:50%` com
   `translateY(calc(-50% - 10px))`, ou seja MEIO da borda direita. Nunca
   houve colisao com o FAB, que mora no canto de baixo.
   Alem disso o botao e `position:absolute` DENTRO do `div[vw]`, que e o
   elemento fixo. Forcar `fixed` no filho arrancava o botao do container e
   era justamente o que o jogava para cima do WhatsApp.

   REGRA: quem posiciona o VLibras e o VLibras. Se um dia for preciso mudar,
   o caminho e o parametro `position` do construtor (TL, T, TR, L, R, BL, B,
   BR), nunca CSS nem style inline por cima. */
/* RECUO DO VLIBRAS (pedido de 30/07): o widget mora no meio da borda direita
   e, parado ali em opacidade cheia, cobre conteúdo enquanto a pessoa navega.

   O QUE ESTA REGRA FAZ E O QUE ELA NÃO FAZ. Ela mexe em UMA propriedade:
   `opacity`. Não usa `display`, `visibility`, `pointer-events` nem `transform`.
   Cada uma dessas teria um custo:
     - display/visibility tirariam o botão da árvore de acessibilidade e da
       ordem de tabulação. Quem depende de Libras perderia a ferramenta, que é
       exatamente o contrário do objetivo.
     - pointer-events:none deixaria o botão sem hover, e aí não haveria como
       trazê-lo de volta com o mouse.
     - transform brigaria com o `translateY(calc(-50% - 10px))` que o próprio
       plugin aplica no `div[vw]` para centralizar na borda. É a mesma armadilha
       descrita no bloco VLIBRAS acima: quem posiciona o VLibras é o VLibras.

   Desbotado ele continua clicável, tabulável e anunciado por leitor de tela;
   só para de disputar atenção. Ao receber foco ou mouse, volta inteiro — e o
   seletor com :hover/:focus-within já tem especificidade maior que a da
   classe, então não precisa de !important. */
div[vw]{transition:opacity .5s ease;}
div[vw].doxa-vlibras-recuado{opacity:.35;}
div[vw].doxa-vlibras-recuado:hover,
div[vw].doxa-vlibras-recuado:focus-within{opacity:1;}
@media(prefers-reduced-motion:reduce){
  div[vw]{transition:none;}
}
.support-chat-fab{position:fixed;bottom:1.5rem;right:1.5rem;z-index:500;background:var(--purple);border:1.5px solid var(--gold);color:var(--white);border-radius:50%;padding:0;width:56px;height:56px;justify-content:center;font-family:'Roboto',sans-serif;cursor:pointer;display:none;align-items:center;gap:0;box-shadow:0 4px 16px rgba(74,50,114,.35);transition:background .2s,transform .15s;}
.support-chat-fab svg{width:26px;height:26px;}
.support-chat-fab:hover{background:var(--purple);transform:translateY(-2px);}
.support-chat-fab.visible{display:flex;}
.support-chat-fab .fab-badge{background:#dc3545;color:var(--white);border-radius:50%;width:18px;height:18px;font-size:.65rem;display:inline-flex;align-items:center;justify-content:center;font-weight:700;}
.support-chat-modal{position:fixed;bottom:5rem;right:1.5rem;z-index:501;width:340px;max-width:calc(100vw - 2rem);background:var(--white);border-radius:20px;box-shadow:0 12px 48px rgba(74,50,114,.25);display:none;flex-direction:column;max-height:520px;}
.support-chat-modal.open{display:flex;}
.support-chat-modal-header{background:var(--purple-dark);border-radius:20px 20px 0 0;padding:.9rem 1.2rem;display:flex;align-items:center;justify-content:space-between;}
.support-chat-modal-title{color:var(--white);font-weight:700;font-size:.92rem;}
.support-chat-modal-close{background:none;border:none;color:rgba(255,255,255,.7);font-size:1.2rem;cursor:pointer;padding:.2rem;}
.support-chat-modal-close:hover{color:var(--white);}
.support-chat-messages{flex:1;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.5rem;min-height:200px;background:#F8F5FD;}
.admin-msg-layout{display:grid;grid-template-columns:280px 1fr;gap:0;background:var(--white);border-radius:16px;overflow:hidden;box-shadow:0 2px 12px rgba(61,37,96,.08);min-height:520px;}
.admin-msg-list{border-right:1px solid var(--border);display:flex;flex-direction:column;}
.admin-msg-list-head{padding:.9rem 1.2rem;font-weight:700;font-size:.85rem;color:var(--purple-dark);border-bottom:1px solid var(--border);background:var(--lavender);}
#admin-conversations-list{flex:1;overflow-y:auto;}
.admin-conv-item{padding:.85rem 1.2rem;border-bottom:1px solid rgba(107,79,160,.08);cursor:pointer;transition:background .15s;}
.admin-conv-item:hover{background:var(--lavender);}
.admin-conv-item.active{background:var(--lavender-mid);}
.admin-conv-name{font-weight:700;font-size:.88rem;color:var(--text-dark);margin-bottom:.2rem;}
.admin-conv-preview{font-size:.75rem;color:var(--text-light);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.admin-conv-unread{display:inline-flex;align-items:center;justify-content:center;background:var(--purple-dark);color:var(--white);border-radius:50%;width:18px;height:18px;font-size:.65rem;font-weight:700;float:right;margin-top:.1rem;}
.admin-msg-chat{display:flex;flex-direction:column;position:relative;}
.admin-msg-chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-light);gap:.5rem;font-size:.9rem;}
.admin-chat-header{padding:.85rem 1.2rem;border-bottom:1px solid var(--border);font-weight:700;color:var(--purple-dark);font-size:.9rem;background:var(--lavender);}
@media(max-width:640px){.admin-msg-layout{grid-template-columns:1fr;}.admin-msg-list{min-height:200px;max-height:220px;}.support-chat-modal{width:calc(100vw - 2rem);right:1rem;}}
#page-chat{background:var(--lavender);min-height:100vh;padding-top:80px;}
.chat-wrap{max-width:700px;margin:0 auto;padding:1.5rem 1rem 0;display:flex;flex-direction:column;height:calc(100vh - 95.5px);height:calc(100svh - 95.5px);height:calc(100dvh - 95.5px);}
.chat-header{background:var(--white);border-radius:16px 16px 0 0;padding:1rem 1.4rem;display:flex;align-items:center;gap:.85rem;box-shadow:0 2px 8px rgba(107,79,160,.08);flex-shrink:0;}
.chat-back{background:none;border:none;color:var(--purple-dark);font-size:1.2rem;cursor:pointer;padding:.2rem .5rem;border-radius:8px;transition:background .15s;}
.chat-back:hover{background:var(--lavender);}
.chat-avatar{width:40px;height:40px;border-radius:50%;background:var(--purple-dark);color:var(--white);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem;flex-shrink:0;}
.chat-header-info{flex:1;}
.chat-header-name{font-weight:700;color:var(--purple-dark);font-size:.95rem;}
.chat-header-sub{font-size:.75rem;color:var(--text-light);}
.chat-messages{flex:1;overflow-y:auto;padding:1rem .5rem;display:flex;flex-direction:column;gap:.6rem;background:var(--lavender);}
.chat-msg{max-width:75%;padding:.65rem 1rem;border-radius:18px;font-size:.9rem;line-height:1.5;word-break:break-word;}
.chat-msg.mine{background:var(--purple-dark);color:var(--white);align-self:flex-end;border-bottom-right-radius:4px;}
.chat-msg.theirs{background:var(--white);color:var(--text-dark);align-self:flex-start;border-bottom-left-radius:4px;box-shadow:0 1px 4px rgba(107,79,160,.08);}
.chat-msg-time{font-size:.65rem;opacity:.65;margin-top:.3rem;text-align:right;}
.chat-msg.theirs .chat-msg-time{text-align:left;}
.chat-input-area{background:var(--white);border-radius:0 0 16px 16px;padding:.85rem 1rem;display:flex;gap:.6rem;align-items:flex-end;flex-shrink:0;box-shadow:0 -2px 8px rgba(107,79,160,.06);}
.chat-input{flex:1;border:1.5px solid var(--border);border-radius:22px;padding:.6rem 1rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);outline:none;resize:none;max-height:100px;line-height:1.4;transition:border-color .15s;}
.chat-input:focus{border-color:var(--purple-dark);}
.chat-send{background:var(--purple-dark);color:var(--white);border:none;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,transform .1s;font-size:1.1rem;}
.chat-send:hover{background:var(--purple);transform:scale(1.08);}
.chat-send:disabled{background:#B8AAD0;cursor:not-allowed;transform:none;}
.chat-empty{text-align:center;color:var(--text-light);font-size:.88rem;padding:2rem 1rem;font-style:italic;}
.chat-loading{text-align:center;color:var(--text-light);font-size:.85rem;padding:1rem;}
/* Badge de chat não lido */
.chat-badge{display:inline-flex;align-items:center;justify-content:center;background:#dc3545;color:var(--white);border-radius:50%;width:18px;height:18px;font-size:.65rem;font-weight:700;margin-left:.35rem;vertical-align:middle;}
.btn-open-chat{background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:.4rem 1rem;font-size:.78rem;font-weight:700;cursor:pointer;transition:background .15s;display:inline-flex;align-items:center;gap:.3rem;}
.btn-open-chat:hover{background:var(--purple);}
/* Atalho: agendar o próximo horário livre do profissional */
/* Opção 2 (escolha 01/08/2026): pílula verde compacta de UMA linha, sem a
   borda dourada e sem o rótulo em duas alturas — mais discreta dentro da
   faixa roxa, sem perder o verde da ação. */
.next-slot-cta{display:none;width:100%;align-items:center;gap:.5rem;background:var(--green);color:#fff;border:none;border-radius:100px;padding:.5rem .95rem;margin:0 0 .55rem;cursor:pointer;font-family:'Roboto',sans-serif;text-align:left;min-height:38px;transition:filter .15s,transform .15s;}
.next-slot-cta:hover{filter:brightness(1.07);transform:translateY(-1px);}
.next-slot-icn{font-size:1.1rem;line-height:1;}
.next-slot-txt{flex:1;font-size:.88rem;font-weight:500;line-height:1.3;white-space:nowrap;}
.next-slot-txt strong{display:inline;font-size:.88rem;font-weight:700;}
.next-slot-chev{font-size:1.35rem;line-height:1;opacity:.85;}
@media(max-width:640px){.next-slot-cta{padding:.5rem .85rem;gap:.5rem;}.next-slot-txt{font-size:.84rem;white-space:normal;}.next-slot-txt strong{font-size:.84rem;}
  /* Celular: sem largura para ficar ao lado do título, o botão quebra para a
     linha de baixo e retoma a largura cheia — o mesmo desenho de antes de ele
     mudar de lugar no HTML. */
  .schedule-head-row .next-slot-cta{flex:0 1 auto;width:auto;max-width:100%;margin:.3rem 0 0 auto;}}
/* Desktop (31/07/2026): texto maior dentro do botão e um filete dourado fino,
   o mesmo recurso que já marca o cartão de perfil e a etiqueta "Em Libras".
   O filete é 1px de propósito — no verde cheio, qualquer coisa mais grossa
   vira moldura e o botão perde a leitura de "ação", virando caixa. */
@media(min-width:901px){
  /* ~12% menor (pedido 31/07/2026): dentro da faixa roxa ele estava do
     tamanho do título e disputava a atenção com ele. */
  .next-slot-cta{padding:.45rem .9rem;min-height:36px;}
  .next-slot-txt{font-size:.85rem;}
  .next-slot-txt strong{font-size:.85rem;}
  .next-slot-icn{font-size:.95rem;}
}

/* Painel de horários do mês */
.month-hours-panel{margin-bottom:var(--respiro-passo,1.15rem);padding-bottom:.4rem;border-bottom:1px solid rgba(107,79,160,.18);}
.month-hours-toggle{display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-size:1.05rem;font-weight:600;color:var(--purple-dark);padding:.66rem .95rem;user-select:none;background:#fff;border:1px solid var(--border);border-radius:12px;transition:border-color .2s;}
.month-hours-toggle:hover{border-color:var(--purple);}
.month-hours-toggle .chev{transition:transform .25s;font-size:.75rem;}
.month-hours-toggle.open .chev{transform:rotate(180deg);}
.month-hours-body{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.22,1,.36,1);}
/* O teto subiu de 1200px para 2200px junto com o aumento das linhas abaixo:
   este valor é o alvo da transição de abertura e, se ficar menor que o
   conteúdo, o fim da lista some sem aviso. */
.month-hours-body.open{max-height:2200px;}
.month-hours-table{width:100%;border-collapse:collapse;font-size:.92rem;margin-top:.7rem;}
.month-hours-table tr{border-bottom:1px solid rgba(107,79,160,.08);}
.month-hours-table tr:last-child{border-bottom:none;}
.month-hours-table td{padding:.5rem .25rem;vertical-align:top;}
.month-hours-table .mh-date{color:var(--text-mid);white-space:nowrap;width:82px;font-weight:600;}
.month-hours-table .mh-day{color:var(--text-light);width:64px;white-space:nowrap;}
.month-hours-table .mh-slots{display:flex;flex-wrap:wrap;gap:.3rem;}
/* Em tela muito estreita a tabela pode passar da largura do painel; rolagem
   horizontal própria em vez de empurrar o cartão para fora da tela. */
.month-hours-body{overflow-x:auto;-webkit-overflow-scrolling:touch;}
/* iOS antigo (Safari <15) não suporta aspect-ratio: sem isto os dias do
   calendário colapsariam para altura zero. */
@supports not (aspect-ratio:1/1){
  .calendar-day{height:72px;}
  @media(max-width:640px){.calendar-day{height:60px;}}
}
.mh-slot{background:var(--purple-dark);color:var(--white);border-radius:100px;padding:.18rem .55rem;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .15s,transform .1s;}
.mh-slot:hover{background:var(--purple);transform:scale(1.06);}
.mh-slot.blocked{background:#C5BBD9;color:var(--white);cursor:not-allowed;opacity:.6;}
.mh-empty{color:var(--text-light);font-size:.75rem;font-style:italic;}
.join-section{background:var(--lavender-mid);padding:6rem 7%;display:grid;grid-template-columns:1fr 1.1fr;gap:5rem;align-items:start;}
.join-h2{font-family:'Roboto',sans-serif;font-size:clamp(1.8rem,3.5vw,2.8rem);font-weight:700;line-height:1.15;color:var(--text-dark);margin-bottom:1.2rem;}
.join-h2 em{color:var(--gold);font-style:italic;font-weight:700;}
.join-intro{font-size:1rem;color:var(--text-mid);line-height:1.75;margin-bottom:2rem;max-width:46ch;}
.join-perks{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1rem;}
.join-perks li{display:flex;align-items:flex-start;gap:.85rem;font-size:.95rem;color:var(--text-dark);line-height:1.5;}
.join-perks li svg{flex-shrink:0;width:24px;height:24px;color:var(--green);margin-top:1px;}
.join-form-card{background:var(--white);border-radius:20px;padding:2.2rem 2rem;box-shadow:0 8px 32px rgba(74,50,114,.08);}
.join-form-card h3{font-family:'Roboto',sans-serif;font-size:1.3rem;font-weight:700;color:var(--purple-dark);margin-bottom:.4rem;}
.join-form-card .join-form-sub{font-size:.9rem;color:var(--text-mid);margin-bottom:1.4rem;}
.join-form{display:flex;flex-direction:column;gap:.75rem;}
.join-form input,.join-form select,.join-form textarea{width:100%;border:none;outline:none;background:#F1EDF8;border-radius:12px;padding:.9rem 1.2rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);transition:background .2s,box-shadow .2s;}
.join-form input:focus,.join-form select:focus,.join-form textarea:focus{background:#E8E0F5;box-shadow:0 0 0 2px var(--purple-light);}
.join-form textarea{min-height:100px;resize:vertical;font-family:'Roboto',sans-serif;}
.join-form input::placeholder,.join-form textarea::placeholder{color:var(--text-light);}
.join-form-row{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;}
.join-form-row-3{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:.75rem;}
.join-submit{margin-top:.6rem;align-self:center;}
.join-success{background:#E8F5EC;color:#2A6A3F;padding:.95rem 1.2rem;border-radius:12px;font-size:.92rem;font-weight:600;margin-top:.5rem;display:none;border:1px solid rgba(58,138,79,.2);}
.join-success.show{display:block;animation:fadeUp .35s cubic-bezier(.22,1,.36,1) both;}
.join-error{background:#FDECEA;color:#B23A2A;padding:.85rem 1.2rem;border-radius:12px;font-size:.9rem;margin-top:.5rem;display:none;}
.join-error.show{display:block;}
.join-form-disclaimer{font-size:.75rem;color:var(--text-light);margin-top:.6rem;line-height:1.5;}
.candidaturas-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.2rem;flex-wrap:wrap;gap:1rem;}
.candidaturas-filter{display:flex;gap:.4rem;background:rgba(255,255,255,.6);padding:.3rem;border-radius:100px;}
.cand-filter-btn{background:transparent;border:none;padding:.5rem 1.1rem;border-radius:100px;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:600;color:var(--text-mid);cursor:pointer;transition:all .15s;}
.cand-filter-btn.active{background:var(--purple-dark);color:var(--white);}
.cand-filter-btn .count{display:inline-block;background:rgba(212,164,80,.25);color:inherit;font-size:.7rem;padding:.05rem .45rem;border-radius:100px;margin-left:.35rem;font-weight:700;}
.cand-filter-btn.active .count{background:rgba(255,255,255,.25);}
.cand-card{background:var(--white);border-radius:14px;padding:1.4rem 1.6rem;box-shadow:0 2px 12px rgba(61,37,96,.06);border-left:4px solid var(--gold);display:flex;flex-direction:column;gap:1rem;}
.cand-card.contacted{border-left-color:#9bc7a5;opacity:.78;}
.cand-card-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:.8rem;}
.cand-name{font-family:'Roboto',sans-serif;font-size:1.2rem;font-weight:700;color:var(--purple-dark);margin-bottom:.2rem;}
.cand-meta{font-size:.78rem;color:var(--text-light);}
.cand-status{font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.25rem .75rem;border-radius:100px;}
.cand-status.new{background:#FFF3CD;color:#7A5A1A;}
.cand-status.contacted{background:#E8F5EC;color:#2A6A3F;}
.cand-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem .8rem;}
.cand-field{font-size:.88rem;color:var(--text-dark);}
.cand-field h5{font-size:.7rem;color:var(--text-light);text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:.2rem;}
.cand-field a{color:var(--purple-dark);text-decoration:none;font-weight:600;}
.cand-field a:hover{text-decoration:underline;}
.cand-message{background:var(--lavender);padding:.85rem 1.1rem;border-radius:10px;font-size:.9rem;color:var(--text-dark);line-height:1.55;white-space:pre-wrap;font-style:italic;}
.cand-actions{display:flex;gap:.55rem;flex-wrap:wrap;}
.cand-actions button,.cand-actions a{padding:.55rem 1.1rem;border-radius:100px;border:none;font-family:'Roboto',sans-serif;font-size:.82rem;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:.4rem;transition:transform .15s,background .2s,box-shadow .2s;}
.btn-cand-email{background:var(--purple-dark);color:var(--white);}
.btn-cand-email:hover{background:var(--purple);transform:translateY(-1px);}
.btn-cand-whats{background:#25D366;color:var(--white);}
.btn-cand-whats:hover{background:#1FBE5C;transform:translateY(-1px);}
.btn-cand-mark{background:transparent;color:var(--green);border:1.5px solid var(--green) !important;}
.btn-cand-mark:hover{background:var(--green);color:var(--white);}
.btn-cand-undo{background:transparent;color:var(--text-mid);border:1.5px solid var(--border) !important;}
.btn-cand-undo:hover{background:var(--lavender);}
.btn-cand-delete{background:transparent;color:#C0392B;border:1.5px solid transparent !important;margin-left:auto;}
.btn-cand-delete:hover{background:#FDECEA;}
#page-missao{background:var(--lavender);min-height:100vh;padding-top:80px;}
.missao-hero{position:relative;min-height:65vh;display:flex;align-items:center;justify-content:center;padding:5rem 7%;overflow:hidden;}
.missao-hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;}
.missao-hero-overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(74,50,114,.78) 0%,rgba(61,37,96,.72) 100%);z-index:1;}
.missao-hero-card{position:relative;z-index:2;background:var(--white);border-radius:24px;padding:3.5rem 4rem;max-width:720px;width:100%;text-align:center;box-shadow:0 12px 48px rgba(0,0,0,.18);}
.missao-hero-card h1{font-family:'Roboto',sans-serif;font-size:clamp(2rem,4.2vw,3.2rem);color:var(--purple-dark);margin-bottom:1.5rem;font-weight:700;line-height:1.1;}
.missao-hero-card p{font-size:1.1rem;color:var(--text-mid);line-height:1.8;}
.missao-content{padding:5rem 7% 4rem;}
.missao-text{max-width:820px;margin:0 auto;display:flex;flex-direction:column;gap:1.9rem;}
.missao-text p{font-size:1.08rem;color:var(--text-mid);line-height:1.85;margin:0;}
.missao-thanks{text-align:center;margin:5rem auto 2.2rem;font-family:'Roboto',sans-serif;font-size:clamp(1.2rem,2.2vw,1.6rem);color:var(--purple-dark);font-weight:700;}
.missao-cta{text-align:center;padding-bottom:3rem;margin-top:.5rem;}
/* Hamburger menu (mobile) */
.nav-hamburger{display:none;background:transparent;border:none;cursor:pointer;padding:.5rem;width:44px;height:44px;flex-direction:column;justify-content:center;align-items:center;gap:5px;z-index:101;}
.nav-hamburger span{display:block;width:24px;height:2.5px;background:var(--white);border-radius:2px;transition:transform .3s,opacity .25s;transform-origin:center;}
.nav-hamburger.open span:nth-child(1){transform:translateY(7.5px) rotate(45deg);}
.nav-hamburger.open span:nth-child(2){opacity:0;}
.nav-hamburger.open span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg);}
.nav-mobile-overlay{display:none;position:fixed;inset:0;background:rgba(15,8,30,.96);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);z-index:99;opacity:0;transition:opacity .3s;overflow-y:auto;}
.nav-mobile-overlay.open{display:flex;opacity:1;flex-direction:column;align-items:center;justify-content:flex-start;padding:6.5rem 2rem 3rem;}
.nav-mobile-overlay ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:1.4rem;text-align:center;width:100%;}
.nav-mobile-overlay a{font-family:'Roboto',sans-serif;font-size:1.45rem;font-weight:700;color:var(--white);text-decoration:none;cursor:pointer;letter-spacing:.02em;transition:color .2s;display:block;padding:.75rem 0;}
.nav-mobile-overlay a:hover{color:var(--gold);}
.nav-mobile-overlay a.active-link{color:var(--gold-light);}
.nav-mobile-cta{margin-top:2.5rem;}
/* Menu de conta dentro do overlay mobile. Espelha os mesmos destinos do menu
   suspenso do desktop (inclusive Sair, que antes não existia no celular). */
.nav-mobile-conta{display:flex;flex-direction:column;align-items:stretch;gap:.55rem;width:100%;max-width:320px;margin:0 auto;}
.nav-mobile-ola{color:rgba(255,255,255,.85);font-size:.9rem;text-align:center;margin-bottom:.35rem;}
.nav-mobile-conta-item{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:var(--white);font-family:'Roboto',sans-serif;font-size:1rem;font-weight:600;border-radius:12px;padding:.85rem 1rem;cursor:pointer;text-align:left;min-height:48px;transition:background .18s,border-color .18s;}
.nav-mobile-conta-item:hover,.nav-mobile-conta-item:focus-visible{background:rgba(255,255,255,.16);border-color:var(--gold);}
.nav-mobile-conta-item.sair{margin-top:.5rem;color:#F3B0B0;border-color:rgba(243,176,176,.35);text-align:center;}

/* CTA dourado ao lado do menu hambúrguer (só mobile) */
.nav-agenda-mobile{display:none;font-family:'Roboto',sans-serif;color:var(--gold);font-size:.92rem;font-weight:700;letter-spacing:.02em;text-decoration:none;cursor:pointer;white-space:nowrap;margin-left:auto;margin-right:1rem;transition:color .2s;}
.nav-agenda-mobile:hover,.nav-agenda-mobile:focus{color:var(--gold-light);}

/* ===================== PÁGINAS LEGAIS ===================== */
#page-privacidade,#page-termos{background:var(--lavender);min-height:100vh;padding:7rem 7% 4rem;}
.legal-wrap{max-width:880px;margin:0 auto;background:var(--white);border-radius:20px;padding:3rem 3.5rem;box-shadow:0 8px 32px rgba(74,50,114,.08);}
.legal-wrap h1{font-family:'Roboto',sans-serif;font-size:clamp(1.8rem,3.5vw,2.6rem);color:var(--purple-dark);margin-bottom:.4rem;font-weight:700;}
.legal-updated{font-size:.85rem;color:var(--text-light);margin-bottom:2rem;}
.legal-draft-warning{background:#FFF8E1;border:1px solid #F0D060;border-left:4px solid #D4A450;color:#7A5A1A;padding:1rem 1.2rem;border-radius:10px;font-size:.88rem;line-height:1.55;margin-bottom:2.2rem;}
.legal-draft-warning strong{display:block;margin-bottom:.3rem;color:#5A4015;}
.legal-wrap h2{font-family:'Roboto',sans-serif;font-size:1.35rem;color:var(--purple-dark);margin:2rem 0 .8rem;font-weight:700;}
.legal-wrap h2:first-of-type{margin-top:1rem;}
.legal-wrap h3{font-family:'Roboto',sans-serif;font-size:1rem;color:var(--purple);margin:1.3rem 0 .5rem;font-weight:700;}
.legal-wrap p{font-size:.96rem;color:var(--text-mid);line-height:1.75;margin-bottom:1rem;}
.legal-wrap ul{margin:0 0 1rem 1.2rem;padding-left:.6rem;}
.legal-wrap li{font-size:.95rem;color:var(--text-mid);line-height:1.7;margin-bottom:.5rem;}
.legal-wrap strong{color:var(--text-dark);}
.legal-wrap a{color:var(--purple);text-decoration:underline;font-weight:600;}
.legal-back{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--border);text-align:center;}
.legal-back a{color:var(--purple);cursor:pointer;font-weight:600;text-decoration:none;}
.legal-back a:hover{text-decoration:underline;}
@media(max-width:640px){.legal-wrap{padding:2rem 1.5rem;}#page-privacidade,#page-termos{padding:6rem 4% 3rem;}}
/* Acessibilidade: foco visivel para navegacao por teclado */
*:focus{outline:none;}
*:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:4px;}
button:focus-visible,a:focus-visible,[role="button"]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--gold);outline-offset:3px;}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:1px;}
.nav-auth-btn:focus-visible,.btn-green:focus-visible,.btn-purple:focus-visible{outline:3px solid var(--white);outline-offset:3px;box-shadow:0 0 0 6px var(--gold);}

#page-404{background:var(--lavender);min-height:100vh;padding:7rem 7% 4rem;align-items:center;justify-content:center;}
#page-404.active{display:flex;}
.notfound-wrap{max-width:540px;text-align:center;background:var(--white);border-radius:24px;padding:3.5rem 2.5rem;box-shadow:0 8px 32px rgba(74,50,114,.08);}
.notfound-code{font-family:'Roboto',sans-serif;font-size:clamp(5rem,12vw,8rem);font-weight:700;color:var(--purple-dark);line-height:1;letter-spacing:-.02em;margin-bottom:.5rem;background:linear-gradient(135deg,var(--purple-dark) 0%,var(--gold) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.notfound-title{font-family:'Roboto',sans-serif;font-size:clamp(1.4rem,2.6vw,1.8rem);color:var(--purple-dark);margin-bottom:.8rem;font-weight:700;}
.notfound-text{font-size:1rem;color:var(--text-mid);line-height:1.7;margin-bottom:2.2rem;}
.notfound-actions{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap;}
.notfound-actions button{padding:.85rem 1.8rem;font-size:.92rem;}
@media(max-width:540px){.notfound-wrap{padding:2.5rem 1.5rem;}.notfound-actions{flex-direction:column;}.notfound-actions button{width:100%;}}
.btn-meet-card{display:inline-flex;align-items:center;gap:.5rem;margin-top:.85rem;padding:.65rem 1.1rem;background:var(--purple-dark);color:var(--white);border-radius:100px;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:600;text-decoration:none;transition:transform .15s,background .2s,box-shadow .2s;border:none;cursor:pointer;}
.btn-meet-card:hover{background:var(--purple);transform:translateY(-1px);box-shadow:0 4px 12px rgba(74,50,114,.25);}
.btn-meet-soon{background:var(--green);animation:meetPulse 2s ease-in-out infinite;box-shadow:0 0 0 0 rgba(58,138,79,.6);}
.btn-meet-soon:hover{background:#2D6E3E;}
@keyframes meetPulse{0%,100%{box-shadow:0 0 0 0 rgba(58,138,79,.5);}50%{box-shadow:0 0 0 10px rgba(58,138,79,0);}}
.btn-rebook{display:inline-flex;align-items:center;gap:.4rem;margin-top:.85rem;padding:.6rem 1.1rem;background:transparent;color:var(--purple-dark);border:1.5px solid var(--purple-dark);border-radius:100px;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .2s,color .2s,transform .15s;}
/* Avaliar é uma ação de destaque, não um link de rodapé: fundo verde da marca,
   estrelas à esquerda para dizer o que o clique faz antes de ler o texto. */
.btn-avaliar{display:inline-flex;align-items:center;gap:.55rem;background:var(--green);color:#fff;border:none;border-radius:12px;padding:.8rem 1.3rem;font-family:'Roboto',sans-serif;font-size:.92rem;font-weight:700;cursor:pointer;min-height:44px;margin:0 .6rem .6rem 0;transition:filter .15s;}
.btn-avaliar:hover{filter:brightness(1.1);}
.btn-avaliar-estrelas{color:var(--gold-light);font-size:.9rem;letter-spacing:.06em;}
.appt-avaliada{display:inline-block;font-size:.82rem;color:var(--green);font-weight:600;margin:0 .6rem .6rem 0;}
.btn-rebook:hover{background:var(--purple-dark);color:var(--white);transform:translateY(-1px);}
.appt-contact-fallback{margin-top:.5rem;font-size:.78rem;color:var(--text-light);line-height:1.5;}
.appt-contact-fallback a{color:var(--purple);text-decoration:underline;font-weight:600;}
.appt-contact-fallback a:hover{color:var(--purple-dark);}
/* === Sistema de avaliacao pos-consulta === */
/* Modal de avaliacao */
.review-modal-overlay{position:fixed;inset:0;background:rgba(15,8,30,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:1000;display:none;align-items:center;justify-content:center;padding:1rem;animation:fadeIn .3s ease both;}
.review-modal-overlay.open{display:flex;}
.review-modal{background:var(--white);border-radius:24px;padding:2.5rem 2.2rem;max-width:480px;width:100%;box-shadow:0 12px 48px rgba(0,0,0,.25);animation:scaleIn .35s cubic-bezier(.22,1,.36,1) both;max-height:90vh;overflow-y:auto;}
.profile-multi-modal{max-width:560px;position:relative;}
.profile-multi-modal-close{position:absolute;top:1.2rem;right:1.2rem;background:none;color:var(--purple-dark);font-size:1.6rem;}
.profile-multi-add-card,.profile-multi-cart-card{background:var(--lavender-mid);border-radius:16px;padding:1.4rem;margin-top:1rem;}
.profile-multi-cart-card{background:var(--white);border:1px solid rgba(107,79,160,.18);}
.profile-multi-cart-card h3{font-family:'Roboto',sans-serif;font-size:1.05rem;color:var(--purple-dark);margin-bottom:.8rem;}
.review-modal h3{font-family:'Roboto',sans-serif;font-size:1.4rem;color:var(--purple-dark);margin-bottom:.4rem;font-weight:700;}
.review-modal-sub{font-size:.92rem;color:var(--text-mid);margin-bottom:1.8rem;}
.review-section{margin-bottom:1.5rem;}
.review-section label{display:block;font-size:.88rem;color:var(--text-dark);font-weight:600;margin-bottom:.7rem;}
.review-stars{display:flex;gap:.4rem;justify-content:flex-start;}
.review-star{background:transparent;border:none;font-size:2.1rem;cursor:pointer;padding:0;line-height:1;color:#D9D2E5;transition:transform .1s,color .15s;}
.review-star:hover{transform:scale(1.15);}
.review-star.filled{color:var(--gold-light);}
.review-acolhimento{display:flex;gap:.5rem;flex-wrap:wrap;}
.review-acolhimento button{flex:1;min-width:90px;padding:.7rem 1rem;background:#F1EDF8;color:var(--text-dark);border:2px solid transparent;border-radius:12px;font-family:'Roboto',sans-serif;font-size:.88rem;font-weight:600;cursor:pointer;transition:all .15s;}
.review-acolhimento button:hover{background:#E8E0F5;}
.review-acolhimento button.selected{background:var(--purple-dark);color:var(--white);border-color:var(--purple-dark);}
.review-textarea{width:100%;border:none;outline:none;background:#F1EDF8;border-radius:12px;padding:.9rem 1.2rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);min-height:90px;resize:vertical;}
.review-textarea:focus{background:#E8E0F5;box-shadow:0 0 0 2px var(--purple-light);}
.review-actions{display:flex;gap:.8rem;align-items:center;margin-top:.5rem;}
.review-submit{background:var(--green);color:var(--white);border:none;border-radius:100px;padding:.9rem 1.8rem;font-family:'Roboto',sans-serif;font-size:.92rem;font-weight:700;cursor:pointer;letter-spacing:.04em;flex:1;transition:transform .15s,background .2s;}
.review-submit:hover:not(:disabled){background:#2D6E3E;transform:translateY(-1px);}
.review-submit:disabled{opacity:.5;cursor:not-allowed;}
.review-skip{background:transparent;border:none;color:var(--text-light);font-family:'Roboto',sans-serif;font-size:.85rem;cursor:pointer;text-decoration:underline;padding:.5rem;}
.review-skip:hover{color:var(--text-mid);}
.review-error{color:#B23A2A;font-size:.85rem;margin-top:.5rem;display:none;}
.review-error.show{display:block;}

/* Card "Avalie sua consulta" no meus-agendamentos */
.appt-card.needs-review{border-left:4px solid var(--gold);}
.appt-review-prompt{margin-top:.85rem;padding:.85rem 1.1rem;background:#FFF8E1;border-radius:10px;display:flex;justify-content:space-between;align-items:center;gap:.8rem;flex-wrap:wrap;}
.appt-review-prompt-text{font-size:.85rem;color:#7A5A1A;flex:1;}
.appt-review-prompt button{background:var(--gold);color:var(--purple-dark);border:none;border-radius:100px;padding:.5rem 1.1rem;font-family:'Roboto',sans-serif;font-size:.8rem;font-weight:700;cursor:pointer;letter-spacing:.04em;transition:transform .15s,background .2s;}
.appt-review-prompt button:hover{background:#C49640;transform:translateY(-1px);}
.appt-review-done{margin-top:.85rem;font-size:.82rem;color:var(--green);display:inline-flex;align-items:center;gap:.4rem;}

/* Proposta de remarcacao no cartao do paciente. Fica no TOPO do cartao,
   antes ate da foto: e a decisao mais importante ali, nao um detalhe a
   mais entre outros. Fundo em dourado claro por ser aviso, nao erro. */
.appt-proposta{grid-column:1/-1;background:#FFF8E8;border:1.5px solid var(--gold-light);border-radius:14px;padding:1.1rem 1.3rem;margin-bottom:.3rem;}
.appt-proposta-tit{font-size:.92rem;font-weight:700;color:var(--purple-dark);margin:0 0 .4rem;}
.appt-proposta-txt{font-size:.86rem;color:var(--text-dark);line-height:1.6;margin:0 0 .9rem;text-wrap:pretty;}
.appt-proposta-acoes{display:flex;gap:.6rem;flex-wrap:wrap;}
.appt-proposta-aceitar{background:var(--green);color:#fff;border:none;border-radius:100px;padding:.7rem 1.3rem;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:700;cursor:pointer;min-height:44px;transition:filter .15s;}
.appt-proposta-aceitar:hover{filter:brightness(1.07);}
.appt-proposta-recusar{background:transparent;color:var(--purple-dark);border:1.5px solid var(--purple-dark);border-radius:100px;padding:.7rem 1.3rem;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:700;cursor:pointer;min-height:44px;}
.appt-proposta-recusar:hover{background:var(--lavender);}
@media(max-width:640px){
  .appt-proposta-aceitar,.appt-proposta-recusar{flex:1 1 100%;}
}

/* Credito manual no admin: destaque dourado, pra nao ser confundido com
   as outras acoes neutras do cartao. */
.btn-conceder-credito{display:inline-flex;align-items:center;gap:.5rem;margin-top:.6rem;padding:.6rem 1rem;background:var(--gold);color:var(--purple-dark);border:none;border-radius:100px;font-family:'Roboto',sans-serif;font-size:.8rem;font-weight:700;cursor:pointer;transition:background .15s;}
.btn-conceder-credito:hover{background:var(--gold-light);}

/* Cards de avaliacao no painel admin */
.rev-card{background:var(--white);border-radius:14px;padding:1.4rem 1.6rem;box-shadow:0 2px 12px rgba(61,37,96,.06);border-left:4px solid var(--purple-light);display:flex;flex-direction:column;gap:.85rem;}
.rev-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;}
.rev-pro{font-family:'Roboto',sans-serif;font-size:1.1rem;font-weight:700;color:var(--purple-dark);}
.rev-meta{font-size:.78rem;color:var(--text-light);}
.rev-rating{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;}
.rev-stars{color:var(--gold-light);font-size:1.2rem;letter-spacing:.1em;}
.rev-acolhimento{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:.25rem .7rem;border-radius:100px;}
.rev-acolhimento.sim{background:#E8F5EC;color:#2A6A3F;}
.rev-acolhimento.parcialmente{background:#FFF3CD;color:#7A5A1A;}
.rev-acolhimento.nao{background:#FDECEA;color:#B23A2A;}
.rev-comment{font-size:.92rem;color:var(--text-mid);line-height:1.55;background:var(--lavender);padding:.85rem 1.1rem;border-radius:10px;font-style:italic;white-space:pre-wrap;}
.rev-moderacao{background:#FFF8E1;border:1px solid var(--gold);border-radius:10px;padding:.75rem .9rem;margin:.6rem 0;}
.rev-moderacao.recusada{background:#FDECEA;border-color:#dc3545;color:#8a1c1c;}
.rev-moderacao-txt{margin:0 0 .55rem;font-size:.82rem;color:var(--text-dark);}
.rev-btn-ok,.rev-btn-no{border:none;border-radius:9px;padding:.5rem 1rem;font-size:.82rem;font-weight:700;cursor:pointer;min-height:44px;margin-right:.5rem;}
.rev-btn-ok{background:var(--green);color:#fff;}
.rev-btn-no{background:transparent;color:#8a1c1c;border:1.5px solid #dc3545;}
.rev-paciente{font-size:.82rem;color:var(--text-light);}
.rev-paciente strong{color:var(--text-mid);}

/* Filtros do admin de avaliacoes */
.rev-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.2rem;flex-wrap:wrap;gap:1rem;}
.rev-filter{display:flex;gap:.4rem;background:rgba(255,255,255,.6);padding:.3rem;border-radius:100px;flex-wrap:wrap;}
.rev-filter-btn{background:transparent;border:none;padding:.5rem 1.1rem;border-radius:100px;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:600;color:var(--text-mid);cursor:pointer;transition:all .15s;}
.rev-filter-btn.active{background:var(--purple-dark);color:var(--white);}
@media(max-width:900px){.find-section,.mission-section,.faq-section,.contact-section,.join-section{grid-template-columns:1fr;gap:2.5rem;}.mission-section .illus-wrap-tall{width:90%;margin:0 auto;}.missao-hero-card{padding:2.5rem 1.8rem;}.missao-hero{min-height:55vh;padding:3rem 5%;}.missao-content{padding:3rem 5%;}.join-form-row,.join-form-row-3{grid-template-columns:1fr;}footer{grid-template-columns:1fr 1fr;}.nav-links{display:none;}.filters-wrap{grid-template-columns:1fr 1fr;}.profile-hero{padding:2rem 0 0;}.profile-hero-inner{grid-template-columns:1fr;gap:0;min-height:auto;}.profile-info-card{margin:0 5% -2rem;clip-path:none;border-radius:20px 20px 0 0;padding:2.5rem 2rem;}.profile-body{grid-template-columns:1fr;}.profile-schedule,.profile-bio{padding:3rem 5%;}.booking-grid{grid-template-columns:1fr;}.booking-summary{position:static;}.booking-fields{grid-template-columns:1fr;}.confirmation-card{padding:2.5rem 1.8rem;}.appt-card{grid-template-columns:auto 1fr;gap:1rem;}.appt-actions{grid-column:1 / -1;flex-direction:row;justify-content:space-between;align-items:center;}.admin-card-body{grid-template-columns:1fr;}.admin-card-head{flex-direction:column;align-items:flex-start;}.nav-hamburger{display:flex;}.nav-auth{display:none;}.hero{min-height:0;/* 0 e não auto: `auto` num item flex significa "nunca menor que o conteúdo" e empurraria a barra de vantagens para fora da primeira tela */}.hero-content{padding:8rem 7% 3.5rem;}.missao-hero{min-height:50vh;padding:7rem 5% 2.5rem;}.missao-hero-card{padding:2.2rem 1.5rem;}.missao-hero-card h1{font-size:1.9rem;margin-bottom:1rem;}.missao-hero-card p{font-size:1rem;}.profile-photo-wrap{height:300px;}}
/* Abaixo de 900px o padding do .profile-schedule é 3rem 5% (regra logo acima,
   que vence a do bloco de 640px por vir depois no arquivo). As margens da
   faixa roxa precisam espelhar ESSE padding — em porcentagem — senão sobra um
   fio de lavanda entre a faixa e a borda do card. Esta regra vive aqui, depois
   daquele bloco, pelo mesmo motivo de ordem. */
@media(max-width:900px){
  .schedule-head-row{margin:-3rem -5% .55rem;}
}
@media(min-width:901px){/* Este bloco esticava o dia para 1,5:1 — era a origem da elipse. Agora ele só
   deixa o círculo um pouco maior, sem deformar. */.calendar-day{width:min(100%,60px);aspect-ratio:1;font-size:1.8rem;padding:0;}.calendar-weekdays span{font-size:1.1rem;padding:.05rem 0;}.calendar-title{font-size:1.02rem;}.calendar-header{gap:.6rem;margin-bottom:.45rem;}.schedule-title{font-size:1.85rem;margin-bottom:0;}.schedule-intro{font-size:1.08rem;margin-bottom:0;padding-bottom:0;line-height:1.35;}.schedule-section-head{padding-bottom:.35rem;margin-bottom:.5rem;}.schedule-section-head h3{font-size:1.22rem;}.time-slot{padding:.45rem 1.15rem;font-size:1.08rem;}.time-slots{gap:.35rem;}.schedule-times{margin-bottom:.55rem;}/* Detalhes do serviço no celular (pedido 02/08, segunda leva): letra menor
   para "Detalhes do serviço" e "Consulta online por videochamada" ficarem na
   MESMA linha (a .78rem os dois somam ~320px e cabem até num celular de
   360px), e o "Mostrar detalhes" recuado à direita — o recuo (margin-right)
   é o mesmo que o tira de baixo do botão flutuante do WhatsApp. O recuo fica
   no BOTÃO, e não na caixa, de propósito: na caixa ele roubaria largura da
   primeira linha e derrubaria a videochamada para baixo. */
.service-details{padding-top:.2rem;margin-bottom:.1rem;padding-right:0;column-gap:.5rem;}
.service-details h3{font-size:.78rem;margin-bottom:0;white-space:nowrap;}
.service-type{font-size:.78rem;margin-bottom:0;white-space:nowrap;}
.service-type::before{margin-right:.45rem;}
.service-toggle{font-size:.82rem;margin-left:auto;margin-right:3.2rem;padding:.15rem 0;}}
@media(max-width:540px){footer{grid-template-columns:1fr;gap:1.35rem;text-align:left;}footer>div>p{max-width:none !important;margin-left:0 !important;margin-right:0 !important;text-align:left;}footer ul{align-items:flex-start;}.footer-brand-name,.footer-brand-tag{text-align:center;}.filters-wrap{grid-template-columns:1fr;}.hero-content{padding:6.5rem 6% 3rem;}.hero-btns{flex-direction:column;align-items:stretch;}.hero-btns a,.hero-btns button{width:100%;text-align:center;}.appt-actions{flex-direction:column;align-items:stretch;}.appt-actions button{width:100%;}.join-submit{align-self:center;}}

/* Correção: as regras de .hero-content acima (900px e 540px) sobrescreviam por engano
   o padding com safe-area definido no bloco mobile de 640px, fazendo a tag "Plataforma
   de saúde mental" renderizar por trás do menu fixo em celulares com notch/Dynamic Island.
   Esta regra, por vir depois, garante que o cálculo com env(safe-area-inset-top) prevaleça.
   Valores aumentados para acomodar a logo maior (.nav-logo).
   Também restaura o hero e a barra de vantagens (trust-strip) como uma coluna flex, para
   que a barra em movimento já apareça na primeira tela ao abrir o link, em vez de ficar
   empurrada para fora do viewport inicial.
   IMPORTANTE (bug do Safari/iOS): aqui usamos min-height (não height) no container, e
   NÃO zeramos o min-height do .hero. Uma versão anterior usava height:100svh fixo no
   container junto com min-height:0 no .hero, forçando os dois a caber à força num
   único "retrato" de tela. Em iPhones isso: (1) espremia o hero a um tamanho menor do
   que o conteúdo precisava, cortando/deslocando o vídeo e a foto de fundo (object-fit
   cobre a caixa espremida, não a tela real); e (2) podia deixar o botão "Como funciona"
   embaixo do hero encostando ou ficando atrás da barra de vantagens. Com min-height, o
   hero cresce para caber seu conteúdo quando precisa (empurrando a barra para baixo, o
   que exige um pequeno scroll em telas muito baixas) em vez de cortar ou sobrepor. */
@media(max-width:640px){
  /* Altura FIXA de uma tela, e a unidade importa muito aqui.

     `dvh` era o valor final desta regra e ERA A CAUSA da travada no celular
     (relatada com print em 26/07): dvh é a altura DINÂMICA da janela, ou seja,
     ela cresce no instante em que a barra de endereço do navegador se recolhe
     durante a rolagem. O grupo inteiro crescia junto no meio do gesto, a barra
     de vantagens descolava do texto e a tela dava um solavanco. No desktop não
     acontecia porque não existe barra de endereço que se recolhe.

     Agora o valor final é `svh`, a altura da janela COM a barra do navegador
     visível. É o menor dos três e, principalmente, NÃO MUDA durante a rolagem:
     a barra de vantagens fica colada embaixo do hero o tempo todo. De quebra
     reforça a regra firme do projeto, porque svh é a medida conservadora e
     garante a barra visível já na abertura, mesmo com a barra do navegador
     ocupando espaço.

     NÃO recolocar `dvh` aqui. */
  .hero-trust-group{display:flex;flex-direction:column;height:100vh;height:100svh;}
  .hero{flex:1;align-items:stretch;}
  .hero-content{
    padding-left:6%;
    padding-right:6%;
    padding-top:max(6.75rem, env(safe-area-inset-top, 0px) + 6rem);
    /* Este padding É a distância entre o último elemento do hero (o gancho
       "Nunca fez terapia?") e a borda de cima da barra de vantagens, porque a
       barra encosta na base do hero. Reduzido de 3rem/2.25rem para
       2.35rem/1.7rem em 31/07/2026, a pedido: com o texto 15% maior, os
       botões precisavam descer um pouco mais para o conjunto (tag → título →
       botões) ocupar melhor a tela, em vez de sobrar ar embaixo. */
    padding-bottom:max(2.35rem, env(safe-area-inset-bottom, 0px) + 1.7rem);
    min-height:0;
    height:100%;
    justify-content:space-between;
  }
  /* A LARGURA DO TEXTO VOLTA A SER A TELA INTEIRA.

     `max-width:min(880px,56%)` foi criado para o desktop, onde 56% mantém o
     parágrafo na metade lisa do vídeo, longe do rosto da personagem. No
     celular não existe metade lisa: o vídeo ocupa a tela toda, e 56% de 390px
     dá 218px — foi isso que espremeu o título numa coluna estreita, quebrando
     "Cuidar da / mente deve / ser simples". A regra do desktop continua
     valendo lá; aqui ela é anulada. */
  .hero-content{max-width:none;}
  /* .85rem em vez de 1.1rem: com o título 15% maior, esse respiro específico
     abaixo da tarja foi quem cedeu espaço primeiro (31/07/2026). */
  .hero-tag{margin-bottom:1.05rem;}
  .hero-sub{padding-top:1.15rem;}

  /* Respiro entre o menu fixo e a tarja "PSICÓLOGA CLÍNICA": 2rem deixava o
     cartão quase encostado no menu. */
  .profile-hero{padding-top:3.2rem;}
  .profile-info-card{padding-top:2.6rem;}

  /* Centraliza os botões verticalmente no espaço livre entre o bloco de texto
     (topo) e a borda inferior do hero (que encosta na barra de vantagens abaixo).
     margin-top:auto empurra os botões para longe do texto e margin-bottom:auto os
     puxa para longe da barra — o resultado é uma centralização harmônica. */
  .hero-btns{margin-top:1.5rem;margin-bottom:.4rem;}
  /* Barra de vantagens um pouco mais compacta no mobile, para caber
     confortavelmente junto com o conteúdo do hero na primeira tela. */
  .trust-marquee-wrap{padding:.8rem 0;}
  /* 15% mais rápido que os 22s do desktop (22 * 0,85 = 18,7s), a pedido. */
  .trust-marquee{animation-duration:18.7s;}
  .trust-item{font-size:.72rem;padding:0 1.4rem;gap:.5rem;}
  .trust-item svg{width:14px;height:14px;}
  .trust-dot{font-size:1.05rem;padding:0 1rem;}
  /* Foto do profissional no mobile: sem o zoom padrão (transform:scale(1.15))
     que faz o topo da cabeça extravasar para cima do contêiner e "encostar"
     no card de tags acima. Também adiciona um respiro superior generoso. */
  .profile-photo-wrap{height:340px;padding-top:1.25rem;box-sizing:border-box;}
  .profile-photo-wrap img{transform:none;}
}

/* Acessibilidade: respeita preferencia de movimento reduzido */
@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 !important;transform:none !important;}
  #cursor-glow{display:none !important;}
}
/* ===== MEU PERFIL ===== */
#page-meu-perfil{background:var(--lavender);}
.perfil-hero{background:var(--purple-nav);padding:3.5rem 5% 2.5rem;border-bottom:1.5px solid var(--gold);display:flex;align-items:center;gap:1.8rem;margin-top:80px;}
.perfil-avatar{width:72px;height:72px;border-radius:50%;background:var(--gold);display:flex;align-items:center;justify-content:center;font-family:'Roboto',sans-serif;font-size:1.7rem;font-weight:700;color:var(--purple-dark);flex-shrink:0;border:3px solid rgba(255,255,255,.25);letter-spacing:-.02em;}
.perfil-hero-info{display:flex;flex-direction:column;gap:.25rem;}
.perfil-title{font-family:'Roboto',sans-serif;font-weight:700;font-size:1.5rem;color:var(--white);margin:0;}
.perfil-subtitle{font-size:.9rem;color:rgba(255,255,255,.65);margin:0;}
.perfil-body{max-width:680px;margin:0 auto;padding:2.5rem 5% 5rem;}
.perfil-section{background:var(--white);border-radius:14px;padding:1.8rem 2rem;box-shadow:0 2px 12px rgba(61,37,96,.07);border:1px solid rgba(107,79,160,.1);margin-bottom:1.4rem;}
.perfil-section-title{font-size:.75rem;font-weight:700;color:var(--purple);text-transform:uppercase;letter-spacing:.1em;margin-bottom:1.4rem;display:flex;align-items:center;gap:.55rem;}
.perfil-section-title::after{content:'';flex:1;height:1px;background:var(--border);}
.perfil-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem 1.2rem;}
.perfil-field{display:flex;flex-direction:column;gap:.3rem;}
.perfil-field.full{grid-column:1 / -1;}
.perfil-field label{font-size:.8rem;font-weight:600;color:var(--text-mid);}
.perfil-field input,.perfil-field textarea{border:1.5px solid #D5C9E6;background:#faf8fd;padding:.82rem 1rem;font-family:'Roboto',sans-serif;font-size:.97rem;color:var(--text-dark);border-radius:10px;outline:none;transition:border-color .15s,box-shadow .15s;width:100%;box-sizing:border-box;}
.perfil-field input:focus,.perfil-field textarea:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(97,68,104,.1);}
.perfil-field textarea{resize:vertical;min-height:88px;}
.perfil-email-row{display:flex;gap:.7rem;align-items:flex-end;}
.perfil-email-row input{flex:1;}
.perfil-email-change-btn{background:transparent;border:1.5px solid var(--purple-dark);color:var(--purple-dark);border-radius:100px;padding:.55rem 1rem;font-family:'Roboto',sans-serif;font-size:.78rem;font-weight:700;letter-spacing:.05em;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s;flex-shrink:0;}
.perfil-email-change-btn:hover{background:var(--purple-dark);color:var(--white);}
.perfil-footer{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;}
.perfil-save-btn{background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:.78rem 2.2rem;font-family:'Roboto',sans-serif;font-size:.88rem;font-weight:700;letter-spacing:.06em;cursor:pointer;transition:background .2s,transform .15s;}
.perfil-save-btn:hover{background:var(--purple);}
.perfil-save-btn:disabled{opacity:.5;cursor:not-allowed;}
.perfil-msg{font-size:.9rem;font-weight:600;}
.perfil-msg.ok{color:var(--green);}
.perfil-msg.err{color:#C0392B;}
/* modal de troca de email */
#email-change-modal .modal-card{text-align:left;}
#email-change-modal .modal-card h3{margin-bottom:.5rem;}
#email-change-modal .modal-card p{font-size:.9rem;color:var(--text-mid);margin-bottom:1.2rem;}
#email-change-modal .login-field{margin-bottom:.9rem;}
#email-change-modal .login-field label{font-size:.8rem;font-weight:600;color:var(--text-mid);display:block;margin-bottom:.3rem;}
#email-change-modal .login-field input{border:1.5px solid #D5C9E6;background:#faf8fd;padding:.82rem 1rem;font-family:'Roboto',sans-serif;font-size:.97rem;color:var(--text-dark);border-radius:10px;outline:none;width:100%;box-sizing:border-box;transition:border-color .15s;}
#email-change-modal .login-field input:focus{border-color:var(--purple);}
.email-modal-msg{font-size:.85rem;font-weight:600;min-height:1.2rem;margin-bottom:.5rem;}
.email-modal-msg.ok{color:var(--green);}
.email-modal-msg.err{color:#C0392B;}
@media(max-width:640px){
  .perfil-grid{grid-template-columns:1fr;}
  .perfil-hero{padding:1.8rem 5% 1.6rem;gap:1rem;margin-top:68px;}
  .perfil-avatar{width:52px;height:52px;font-size:1.2rem;}
  .perfil-title{font-size:1.25rem;}
  .perfil-body{padding:1.8rem 4% 4rem;}
  .perfil-section{padding:1.4rem 1.2rem;}
  .perfil-email-row{flex-direction:column;align-items:stretch;}
  .perfil-email-change-btn{align-self:flex-start;}
  .perfil-footer{flex-direction:column;align-items:flex-start;}
}

@media(max-width:640px){
  .hero{position:relative;}
}
/* ===== Uploader de foto (admin) ===== */
.pf-photo-uploader{display:flex;align-items:center;gap:1rem;margin-top:.3rem;}
.pf-photo-preview-box{width:72px;height:72px;border-radius:50%;background:var(--lavender-mid);border:2px dashed var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.pf-photo-preview-box img{width:100%;height:100%;object-fit:cover;}
.pf-photo-preview-box::after{content:'👤';font-size:1.5rem;opacity:.35;}
.pf-photo-preview-box.has-img::after{display:none;}
.pf-photo-btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:.7rem 1.4rem;font-family:'Roboto',sans-serif;font-size:.88rem;font-weight:700;letter-spacing:.03em;cursor:pointer;transition:background .2s;}
.pf-photo-btn:hover{background:var(--purple);}
.pf-photo-btn svg{flex-shrink:0;}

.agenda-pagination{display:flex;justify-content:center;align-items:center;gap:.6rem;margin-top:2.5rem;flex-wrap:wrap;}
.agenda-page-btn{width:42px;height:42px;border-radius:50%;border:1.5px solid rgba(107,79,160,.2);background:var(--white);color:var(--purple-dark);font-family:'Roboto',sans-serif;font-size:.92rem;font-weight:700;cursor:pointer;transition:background .2s,border-color .2s,color .2s;}
.agenda-page-btn:hover{border-color:var(--purple);}
.agenda-page-btn.active{background:var(--purple-dark);border-color:var(--purple-dark);color:var(--white);}

/* ===== Busca de tags com autocomplete ===== */
/* A barra tinha teto de 420px enquanto a linha de filtros acima tem 880px:
   ficava uma faixa curta e solta à esquerda, sem relação com o resto. Agora
   acompanha a mesma largura. */
.tag-search-wrap{position:relative;width:100%;max-width:880px;margin:0 0 1.2rem;}
/* CAMPOS DE FILTRO NÃO SÃO CAMPOS DE FORMULÁRIO.

   O Chrome ignora `autocomplete="off"` em input de texto solto e preenche pelo
   que ele acha que o campo é — daí o e-mail aparecendo na busca por tag. O que
   funciona é a combinação: `type="search"` (diz ao navegador que é filtro, não
   dado pessoal), um `name` que não parece nome de campo conhecido, e as marcas
   que LastPass e 1Password respeitam.

   `::-webkit-search-cancel-button` some porque o X nativo do Chrome apareceria
   por cima do desenho arredondado do campo. */
.tag-search-input::-webkit-search-cancel-button,
.filter-input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;}
.tag-search-input,.filter-input{-webkit-appearance:none;appearance:none;}
.tag-search-input{width:100%;border:1.5px solid var(--border);border-radius:100px;padding:.78rem 1.2rem .78rem 2.7rem;font-family:'Roboto',sans-serif;font-size:.9rem;color:var(--text-dark);background:#fff;outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box;}
.tag-search-input:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(97,68,104,.1);}
.tag-search-icon{position:absolute;left:1.05rem;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-light);pointer-events:none;}
.tag-search-suggestions{position:absolute;top:calc(100% + 8px);left:0;right:0;background:#fff;border-radius:14px;border:1px solid var(--border);box-shadow:0 14px 32px rgba(74,50,114,.16);max-height:340px;overflow-y:auto;z-index:60;display:none;}
/* LISTA DE TAGS EM COLUNAS.

   São mais de 60 tags. Uma embaixo da outra, numa lista de 320px de altura, a
   pessoa rola muito e nunca vê o conjunto — e escolher tag é justamente uma
   tarefa de VARREDURA, não de leitura linha a linha.

   `auto-fill` com mínimo de 210px reparte sozinho: quatro colunas num monitor
   largo, três num menor, duas em tablet. Não precisa de ponto de corte
   escrito à mão para cada tamanho.

   O botão "pronto" continua grudado embaixo, e por isso ele sai do grid com
   `grid-column:1/-1`. */
.tag-search-suggestions.grade{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:2px 6px;padding:.5rem;align-content:start;}
.tag-search-suggestions.grade .tag-search-suggestion-item{border-radius:10px;padding:.5rem .7rem;min-width:0;}
.tag-search-suggestions.grade .tag-search-suggestion-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tag-search-suggestions.grade .tag-search-suggestion-empty,
.tag-search-suggestions.grade .tag-search-done-btn{grid-column:1 / -1;}
.tag-search-suggestions.grade .tag-search-done-btn{border-radius:10px;margin-top:.35rem;position:sticky;bottom:-.5rem;}
@media(max-width:640px){
  /* No celular volta a ser uma coluna: 210px de mínimo não cabem duas vezes,
     e o grid viraria uma coluna só de qualquer jeito — melhor ser explícito. */
  .tag-search-suggestions.grade{padding:0;}
}
/* `.show` só liga e desliga a visibilidade; QUEM decide o formato é `.grade`.

   Era aqui o defeito: esta regra dizia `display:block` e mora DEPOIS da regra
   `.grade{display:grid}` no arquivo. Com a mesma especificidade, quem vem por
   último ganha — então, no instante em que o JS acrescentava `show` para abrir
   a lista, o grid morria e tudo voltava para uma coluna.

   A lista só aparecia em grade no primeiro clique porque naquele momento ela
   ainda não tinha recebido `show`; a partir da primeira seleção, a re-renderização
   readicionava a classe e o formato quebrava de vez. */
.tag-search-suggestions{display:none;}
.tag-search-suggestions.show{display:block;}
.tag-search-suggestions.grade.show{display:grid;}
@media(max-width:640px){
  .tag-search-suggestions.grade.show{display:block;}
}
.tag-search-suggestion-item{display:flex;align-items:center;gap:.7rem;padding:.65rem 1.15rem;font-size:.88rem;color:var(--text-dark);cursor:pointer;transition:background .15s;}
.tag-search-suggestion-item input[type="checkbox"]{width:16px;height:16px;flex-shrink:0;accent-color:#614468;cursor:pointer;}
.tag-search-suggestion-item.audience{margin:.25rem .5rem;border:1.5px solid #614468;border-radius:8px;}
.tag-search-suggestion-item:hover,.tag-search-suggestion-item.highlighted{background:var(--lavender);}
.tag-search-suggestion-item.checked{background:var(--lavender-mid);}
.tag-search-suggestion-empty{padding:.7rem 1.15rem;font-size:.85rem;color:var(--text-light);}
.tag-search-done-btn{position:sticky;bottom:0;width:100%;background:var(--purple-dark);color:#fff;border:none;padding:.75rem;font-size:.85rem;font-weight:700;letter-spacing:.03em;cursor:pointer;border-radius:0 0 14px 14px;}
.tag-active-chips{display:none;flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.9rem;max-width:880px;}
.tag-active-chip{display:inline-flex;align-items:center;gap:.4rem;background:var(--lavender);color:var(--purple-dark);font-size:.78rem;font-weight:600;padding:.35rem .5rem .35rem .8rem;border-radius:100px;border:1px solid var(--border);}
.tag-active-chip.audience{border:1.5px solid #614468;}
.tag-active-chip button{background:rgba(107,79,160,.14);color:var(--purple-dark);border:none;width:18px;height:18px;border-radius:50%;font-size:.9rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;}
.tag-clear-all-btn{background:none;border:none;color:var(--text-mid);font-size:.78rem;font-weight:700;text-decoration:underline;cursor:pointer;padding:.35rem 0;}
@media(max-width:640px){
  .tag-search-wrap{max-width:100%;}
}

/* ===== Busca de profissional em "Agendar várias consultas" ===== */
.multi-prof-search-wrap{position:relative;}
.multi-prof-search-input{width:100%;border:1.5px solid var(--border);border-radius:10px;padding:.65rem 2.7rem .65rem 2.5rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);background:var(--white);outline:none;box-sizing:border-box;transition:border-color .2s,box-shadow .2s;}
.multi-prof-search-input:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(97,68,104,.1);}
.multi-prof-search-icon{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--text-light);pointer-events:none;}
/* X para limpar. Só aparece quando há algo escrito, senão vira enfeite que
   ocupa espaço do texto. Mesmo vermelho do X que remove item do carrinho. */
.multi-prof-clear{display:none;position:absolute;right:.3rem;top:50%;transform:translateY(-50%);
  width:36px;height:36px;align-items:center;justify-content:center;
  background:none;border:none;border-radius:50%;cursor:pointer;
  color:#dc3545;font-size:1.05rem;line-height:1;padding:0;
  transition:background .15s,transform .12s;}
.multi-prof-clear.show{display:flex;}
.multi-prof-clear:hover{background:rgba(220,53,69,.1);}
.multi-prof-clear:active{transform:translateY(-50%) scale(.92);}
.multi-prof-clear:focus-visible{outline:2px solid #dc3545;outline-offset:1px;}
/* No celular o alvo cresce para os 44px recomendados por Apple e Google. */
@media(max-width:640px){
  .multi-prof-clear{width:44px;height:44px;right:.15rem;font-size:1.15rem;}
}
.multi-prof-suggestions{position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border-radius:12px;border:1px solid var(--border);box-shadow:0 12px 28px rgba(74,50,104,.16);max-height:220px;overflow-y:auto;z-index:80;display:none;}
.multi-prof-suggestions.show{display:block;}
.multi-prof-suggestion-item{padding:.65rem 1rem;font-size:.9rem;color:var(--text-dark);cursor:pointer;transition:background .15s;}
.multi-prof-suggestion-item:hover,.multi-prof-suggestion-item.highlighted{background:var(--lavender);}
.multi-prof-suggestion-empty{padding:.65rem 1rem;font-size:.85rem;color:var(--text-light);}
.pf-vacation-box{background:#FFF8E8;border:1.5px solid var(--gold-light);border-radius:12px;padding:1rem 1.1rem;margin:.2rem 0;}
.pf-vacation-clear{margin-top:.6rem;background:none;border:none;color:var(--purple-dark);font-family:'Roboto',sans-serif;font-size:.78rem;font-weight:700;text-decoration:underline;cursor:pointer;padding:0;}
/* ===== Selo de avaliacao publica ===== */
.rating-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;font-weight:700;color:var(--text-dark);margin:.25rem 0;}
.rating-badge .rating-star{color:var(--gold);font-size:.95rem;line-height:1;}
.rating-badge .rating-count{font-weight:400;color:var(--text-light);}
.profile-rating-badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.92rem;font-weight:700;color:#fff;margin-bottom:.9rem;}
.profile-rating-badge .rating-star{color:var(--gold-light);font-size:1.05rem;line-height:1;}
.profile-rating-badge .rating-count{font-weight:400;color:rgba(255,255,255,.68);}
.rev-recalc-box{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;background:var(--lavender);border-radius:14px;padding:1.1rem 1.3rem;margin-bottom:1.2rem;}
.rev-recalc-box strong{color:var(--purple-dark);font-size:.92rem;}
.rev-recalc-box p{font-size:.8rem;color:var(--text-mid);margin:.25rem 0 0;max-width:520px;}
.rev-recalc-btn{background:var(--purple-dark);color:var(--white);border:none;border-radius:100px;padding:.65rem 1.3rem;font-family:'Roboto',sans-serif;font-size:.82rem;font-weight:700;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background .2s;}
.rev-recalc-btn:hover{background:var(--purple);}
.rev-recalc-btn:disabled{opacity:.6;cursor:default;}
/* ===== Login com Google ===== */
.google-signin-btn{display:flex;align-items:center;justify-content:center;gap:.7rem;width:100%;background:var(--white);border:1.5px solid var(--border);border-radius:100px;padding:.75rem 1rem;font-family:'Roboto',sans-serif;font-size:.9rem;font-weight:600;color:var(--text-dark);cursor:pointer;transition:background .2s,box-shadow .2s;margin-bottom:.5rem;}
.google-signin-btn:hover{background:var(--lavender);box-shadow:0 2px 8px rgba(0,0,0,.08);}
.google-signin-btn:disabled{opacity:.6;cursor:default;}
.login-divider{display:flex;align-items:center;gap:.8rem;margin:.2rem 0 .6rem;color:var(--text-light);font-size:.8rem;}
.login-divider::before,.login-divider::after{content:'';flex:1;height:1px;background:var(--border);}
/* [MERGE] refinamentos multi-consulta do 54 */
.multi-cal-day::after{content:'';position:absolute;bottom:3px;width:4px;height:4px;background:var(--purple-dark);border-radius:50%;opacity:0;}
.multi-cal-day:not(.disabled):not(.empty)::after{opacity:1;}
.multi-cal-day:not(.disabled):hover{background:rgba(107,79,160,.12);}
.multi-cal-day.disabled::after{display:none;}
.multi-cal-day.selected::after{background:var(--gold-light);}
.multi-card-icon-circle{width:44px;height:44px;border-radius:50%;background:var(--purple-dark);display:flex;align-items:center;justify-content:center;margin-bottom:1rem;}

/* Telas de baixa altura (celulares com barra do navegador): comprime o hero
   pra os botões nunca encostarem na barra de vantagens, mantendo ritmo simétrico. */
/* Estas duas faixas (altura curta + paisagem) ficam FORA do aumento de 15%
   pedido em 31/07/2026: são o piso de segurança para telas muito baixas, e
   crescer a fonte aqui é o cenário onde mais arriscaria estourar a tela. */
@media (max-height: 700px) and (orientation:landscape){
  .hero-content{ padding-top: max(3.6rem, env(safe-area-inset-top, 0px) + 2rem); }
  .hero-tag{ margin-bottom:.7rem; }
  .hero-h1{ font-size: clamp(1.5rem, 6.2vw, 2rem); line-height:1.16; }
  .hero-sub{ font-size:.86rem; line-height:1.55; padding-top:.95rem; }
  .hero-btns{ margin-top:1rem; margin-bottom:1.1rem; }
}
@media (max-height: 620px) and (orientation:landscape){
  .hero-h1{ font-size: clamp(1.35rem, 5.6vw, 1.75rem); }
  .hero-sub{ font-size:.82rem; padding-top:.8rem; }
  .hero-content{ padding-top: max(3.2rem, env(safe-area-inset-top, 0px) + 1.7rem); }
  .hero-btns{ margin-top:.85rem; }
}
/* ===== CELULAR BAIXO, EM PÉ: A REDE DE SEGURANÇA QUE FALTAVA =====
   (31/07/2026)

   As duas faixas de emergência acima só valem em `orientation:landscape`.
   Celular pequeno EM PÉ — iPhone SE/8 com 667px, Androids de 640 a 720px —
   não tinha nenhuma proteção, e agora dois pedidos somam altura no hero: o
   texto ficou 15% maior e as quebras manuais levaram o título a 4 linhas e o
   subtítulo a 3.

   Por que isso é perigoso AQUI e não em outras seções: o .hero-trust-group
   tem altura FIXA (100svh) e o .hero tem `overflow:hidden`. Se o conteúdo
   passar da altura disponível, ele não gera rolagem — ele é CORTADO. Era
   exatamente o risco que precisava ser eliminado antes de manter o aumento.

   Aqui o texto recua para perto do tamanho anterior ao aumento, o suficiente
   para caber. Em celular de altura normal nada disso entra e o aumento de
   15% continua valendo. */
@media(max-width:640px) and (max-height:740px) and (orientation:portrait){
  .hero-tag{font-size:.66rem;margin-bottom:.7rem;}
  .hero-h1{font-size:clamp(1.85rem,8.2vw,2.5rem);}
  .hero-sub{font-size:.93rem;line-height:1.45;padding-top:.65rem;}
  .hero-btns{margin-top:1.05rem;}
}
@media(max-width:640px) and (max-height:660px) and (orientation:portrait){
  .hero-tag{font-size:.62rem;margin-bottom:.55rem;}
  .hero-h1{font-size:clamp(1.65rem,7.4vw,2.15rem);}
  .hero-sub{font-size:.86rem;line-height:1.4;padding-top:.5rem;}
  .hero-btns{margin-top:.8rem;}
  .hero-btns a,.hero-btns button{padding:.7rem 1rem;}
}
/* ===== GANCHO "NUNCA FEZ TERAPIA?" NO DESKTOP =====
   Hero e barra de vantagens dividem exatamente uma tela (`height:100vh` no
   grupo, `overflow:hidden` no hero). Qualquer coisa acrescentada ao conteúdo
   é cortada na borda de baixo, e foi o que acontecia com este gancho.
   A saída é pagar o espaço dele com o respiro vazio que o hero já reservava:
   6rem viram 2rem, liberando 64px para um elemento de ~60px.
   Só a partir de 901px: abaixo disso o hero usa min-height e pode crescer. */
/* ===== A BARRA DE VANTAGENS FICA SEMPRE NA PRIMEIRA TELA =====
   Regra firme do projeto. Hero + barra ocupam exatamente uma tela: o grupo
   tem altura FIXA, o hero fica com o espaço que sobra e a barra nunca
   encolhe. Nenhuma regra abaixo pode trocar essa altura fixa por mínima nem
   dar `min-height:auto` ao hero, porque as duas coisas fazem o hero crescer
   e empurram a barra para fora da tela.
   Este bloco vem depois de todas as regras do hero de propósito: é o último
   a falar, então é o que vale. */
@media(min-width:901px){
  /* Sem os 6rem de respiro vazio que ninguém usava, o conteúdo respira dentro
     da tela sem disputar espaço com a barra. */
  .hero-content{padding-bottom:2.5rem;}
  /* MEDIDO NO PRINT (tela de 1900px): os dois botões ocupam 444px e a caixa
     de texto tinha 614px, sobrando 153px para um gancho de 187px. Faltavam
     34px, então ele quebrava para a linha de baixo e a barra o cortava.
     A caixa passa de 880 para 980px: a sobra vai a 253px e ele cabe.
     Acima de 2000px a regra mais abaixo leva a caixa a 1180px. */
  .hero-content{max-width:980px;}
  /* Alinhado ao centro dos botões. E `nowrap` no GRUPO é a garantia dura:
     mesmo que um dia o texto cresça, ele nunca vira uma segunda linha, então
     nunca pode ser cortado pela barra. No pior caso avança para a área vazia
     do vídeo à direita, que é espaço sobrando. */
  .hero-btns{align-items:center;flex-wrap:nowrap;}
  /* +0,05rem (pedido 31/07/2026): mantive o aumento pequeno de propósito — o
     comentário acima mediu a folga exata (253px) para esse gancho caber ao
     lado dos botões sem quebrar linha; um salto maior arriscaria estourar
     essa conta de novo. */
  .hero-primeira-vez{margin-top:0;padding:.2rem .1rem;min-height:0;
    font-size:.85rem;white-space:nowrap;}
}
/* Entre 641 e 900px a linha fica curta demais para os dois botões mais o
   gancho. Em vez de deixar ele quebrar no meio da linha por acaso, mando ele
   para a linha de baixo de propósito. Continua sem custar altura extra
   relevante e o resultado é previsível. */
@media(min-width:641px) and (max-width:900px){
  .hero-primeira-vez{flex-basis:100%;margin-top:.4rem;}
}
/* O respiro lateral do hero é em PORCENTAGEM, então quanto maior o monitor
   mais estreita fica a caixa de texto: 678px num notebook de 1440, mas só
   522px num monitor de 2560. O título quebra em mais linhas justamente onde
   há mais espaço sobrando, e a linha dos botões deixa de caber. A partir de
   2000px a caixa cresce para acompanhar. */
@media(min-width:2000px){
  .hero-content{max-width:1180px;}
}
.home-cta-card{background:linear-gradient(155deg,var(--purple) 0%,var(--purple-dark) 100%);align-items:center;justify-content:center;text-align:center;color:var(--white);gap:.85rem;}
.home-cta-card::before{display:none;}
.home-cta-card:hover{transform:translateY(-8px);box-shadow:0 20px 48px rgba(74,50,114,.28);}
.home-cta-orn{font-size:1.9rem;color:var(--gold-light);line-height:1;}
/* QUEBRAS DE LINHA DESTE CARTÃO.

   O título quebrava como "Tem mais gente pronta pra / te conhecer", deixando
   "pra" pendurado no fim da linha, e o parágrafo terminava com "você." sozinho
   na última linha. São dois problemas diferentes:

   - `text-wrap:balance` no título distribui as palavras entre as linhas em vez
     de encher a primeira até estourar.
   - `text-wrap:pretty` no parágrafo evita a palavra órfã na última linha.
   - Os espaços rígidos (&nbsp;) no HTML garantem os dois casos mesmo em
     navegador que ainda não suporte essas propriedades: "pra te conhecer" não
     se separa, e "com você." também não.

   O `padding-inline` afasta o texto da borda arredondada do cartão, que é o
   ponto onde ele encostava. */
.home-cta-title{font-family:'Roboto',sans-serif;font-weight:700;font-size:1.14rem;line-height:1.32;text-wrap:balance;padding-inline:.4rem;}
.home-cta-text{font-family:'Roboto',sans-serif;font-size:.9rem;line-height:1.6;color:rgba(255,255,255,.85);margin:0;text-wrap:pretty;padding-inline:.5rem;max-width:27ch;}
.home-cta-btn{margin-top:.5rem;}

/* ===== HARMONIZAÇÃO MOBILE — LANDING ===== */
@media(max-width:640px){
  /* Quebra de texto mais equilibrada nos títulos e parágrafos */
  .hero-h1,.find-h2,.mission-h2,.faq-label,.contact-h2{text-wrap:balance;overflow-wrap:break-word;}
  .hero-sub,.find-text,.mission-text-p,.faq-sub,.contact-sub{text-wrap:pretty;overflow-wrap:break-word;}
  /* Login: encosta no topo em telas altas -> ancora abaixo do menu e rola */
  #page-login{align-items:flex-start;padding-top:96px;}
  /* Imagens da seção Contato: empilhadas e proporcionais (sem sobreposição apertada) */
  .contact-imgs{display:flex;flex-direction:column;align-items:stretch;gap:1rem;}
  .contact-img-main{width:80%;margin-left:0;}
  .contact-img-secondary{width:65%;margin:0;align-self:flex-end;}
  /* Imagem da seção Encontre: mantém proporção e não estica demais */
  .illus-wrap{max-width:560px;margin-left:auto;margin-right:auto;}
}
@media(max-width:390px){
  .contact-img-secondary{width:72%;}
}
@media(max-width:900px){
  /* Remove as imagens da seção "Conte com a gente" apenas no mobile */
  .contact-imgs{display:none;}
  /* Ao lado do menu hambúrguer no mobile fica o CTA dourado de agendamento.
     O "Crie sua conta" saiu daqui e passou para dentro do menu (nav-mobile-cta).
     A partir de 31/07/2026 ele só aparece depois que o leitor rola até o
     carrossel de psicólogos (abaixo do quiz, ver revealNavAgendaMobile() no
     JS) — a classe .nav-agenda-visivel é quem libera o display aqui. */
  .nav-agenda-mobile.nav-agenda-visivel{display:inline-block;}
}

/* ===== Novo card da pagina "Agende agora" ===== */
.agenda-pros-grid{display:flex;flex-direction:column;gap:24px;max-width:1300px;margin:0 auto;grid-template-columns:none;}
/* A coluna da foto foi de 272px para 292px porque a foto cresceu 10%
   (202 -> 222px). Sem isso a conta estourava: 272 - 46 de padding esquerdo -
   24 do direito dava exatamente 202px de espaço útil, então a foto maior
   comeria a margem em vez de crescer. */
.agenda-pro-card{background:#fff;border:1px solid #DDD0E1;border-radius:24px;padding:0;display:grid;grid-template-columns:292px 1fr 304px;align-items:stretch;gap:0;overflow:hidden;
  box-shadow:0 3px 10px -6px rgba(62,42,69,.18),0 20px 44px -22px rgba(62,42,69,.34);cursor:default;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;}
.agenda-pro-card::before{display:none !important;}
.agenda-pro-card:hover{transform:translateY(-4px);border-color:#D3BE8C;box-shadow:0 10px 24px -10px rgba(62,42,69,.26),0 30px 60px -26px rgba(62,42,69,.44);}

/* --- coluna da foto --- */
.apc-media{padding:38px 24px 34px 46px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;}
.apc-avatar{position:relative;width:222px;height:222px;flex:none;cursor:pointer;border-radius:50%;background:var(--foto-luz);
  box-shadow:0 0 0 4px #fff,0 0 0 6px var(--gold),0 10px 22px -10px rgba(62,42,69,.45);}
.agenda-pro-card .agenda-pro-photo-img{width:222px;height:222px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--foto-luz);display:block;border:0;}

.agenda-pro-card .rating-badge{display:inline-flex;align-items:center;gap:4px;font-size:.86rem;font-weight:700;color:var(--purple-dark);background:transparent;padding:0;border:0;}
.agenda-pro-card .rating-badge .rating-star{color:var(--gold-light);}
.agenda-pro-card .rating-badge .rating-count{font-weight:400;color:var(--text-light);font-size:.74rem;}

/* --- coluna do texto (espacamentos reduzidos) --- */
/* RITMO VERTICAL. Antes os blocos estavam grudados uns nos outros com
   margens de 2 a 9px sem relação entre si, e o botão no fim empurrava tudo
   para cima com `margin-top:auto`. Com o botão fora daqui, o texto passa a
   ser centralizado na altura do card e os espaços seguem uma escala única —
   5, 10, 12, 14 — que cresce conforme a separação semântica: nome e
   abordagem quase colados, tags e biografia mais soltas. */
/* O `padding-right` de 34px é o que impede a fila de tags de encostar na
   divisória da coluna da agenda — foi ali que a pílula aparecia fatiada. */
.apc-body{padding:32px 34px 42px 32px;min-width:0;display:flex;flex-direction:column;justify-content:center;}
/* O CRP saiu de dentro do .apc-head.

   Ali ele era empurrado para a direita com `margin-left:auto`, e isso só
   funciona enquanto o nome é curto. Com "Priscila Segatelli de Castro Souza"
   o nome ocupa a linha inteira, o CRP quebra para a linha de baixo e aparece
   sozinho encostado na margem direita, longe de tudo a que se refere —
   parecendo legenda de outra coisa.

   Agora ele é uma linha própria logo abaixo da abordagem, que é a informação
   com que tem parentesco: os dois dizem O QUE a pessoa é e sob qual registro
   atua. O nome fica livre para ocupar quantas linhas precisar, e o resultado
   é igual em todo card, com nome curto ou longo. */
.apc-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
/* A ESTRELA ESTAVA DESCOLANDO EM NOMES LONGOS.

   Com `display:inline-flex` + `align-items:center`, o nome inteiro vira UM
   item de flex. Quando ele quebra em duas linhas, a caixa fica mais alta e a
   estrela, centralizada verticalmente, escorrega para o meio das duas linhas
   — em vez de ficar ao lado da primeira palavra.

   Como texto inline comum, ela flui junto da primeira linha e acompanha o
   nome onde quer que ele quebre, sem regra nenhuma de alinhamento. O
   `text-wrap:balance` é o complemento: reparte um nome longo entre as linhas
   em vez de encher a primeira e deixar uma palavra órfã embaixo. */
.agenda-pro-card .agenda-pro-name{font-size:32px;font-weight:700;color:var(--purple);line-height:1.12;cursor:pointer;margin:0;letter-spacing:-.01em;display:block;text-wrap:balance;overflow-wrap:break-word;}.agenda-pro-card .agenda-pro-name::before{content:"\2726";color:var(--gold);font-size:.5em;margin-right:.4em;font-weight:400;vertical-align:.18em;}
.agenda-pro-card .agenda-pro-name:hover{color:var(--purple);}
.apc-crp{margin-top:1px;line-height:1.25;font-size:.82rem;font-weight:500;color:var(--text-light);letter-spacing:.01em;}
/* A ENTRELINHA É O QUE ESTAVA AFASTANDO, NÃO A MARGEM.

   As margens já estavam em 2 e 3px, mas o espaço aparente era bem maior: cada
   linha carrega metade da sua entrelinha acima e metade abaixo. Com
   `line-height:1.55` na linha do público-alvo, por exemplo, sobravam ~7px de
   ar invisível de cada lado — mais que a margem inteira.

   Por isso o ajuste desta rodada mexe principalmente em `line-height`. Nas
   abordagens vale duas vezes: quem tem duas linhas de abordagem ganha o
   aperto entre elas também. */
.agenda-pro-card /* Bloco de identificação do profissional (abordagem, CRP e público) tratado
   como UM parágrafo só: os três se referem à mesma coisa e a distância entre
   eles fazia ler como três informações soltas (pedido 02/08). O respiro de
   verdade fica ANTES do bloco e DEPOIS dele, não entre as linhas. */
.agenda-pro-spec{margin-top:6px;font-size:.98rem;font-weight:600;color:var(--purple);line-height:1.25;}
.agenda-pro-card .agenda-pro-spec div{margin:0;}
.agenda-pro-card .agenda-pro-spec div + div{margin-top:1px;}
.agenda-pro-card .agenda-pro-audience{display:flex;align-items:center;gap:6px;margin-top:0;font-size:.9rem;color:var(--text-mid);line-height:1.25;}
.agenda-pro-card .agenda-pro-audience svg{color:var(--purple-light);flex:none;}
/* As duas linhas de tags são o bloco mais denso do card. Pílula um ponto
   menor e com folga interna menor deixa mais delas caberem por linha, o que
   reduz a chance de o "(...)" aparecer cedo demais; o `row-gap` maior que o
   `column-gap` separa as duas linhas sem afastar as pílulas vizinhas. */
/* RESPIRO E LINHA ÚNICA DAS TAGS.

   ERRO QUE EU COMETI E ESTOU DESFAZENDO AQUI: pus `flex-wrap:nowrap` achando
   que reforçaria a linha única. Ele fez o contrário — com nowrap TODAS as
   pílulas ficam na mesma linha, e o `offsetTop` de todas passa a ser igual.
   A função que corta mede exatamente esse `offsetTop` para saber quem caiu na
   segunda linha; com todos iguais, ela nunca cortava nada, e o `overflow`
   fatiava a última pílula no meio, encostada na borda do cartão.

   Com `wrap`, as pílulas quebram de verdade, os `offsetTop` diferem e a
   medição volta a funcionar. A altura travada em uma linha (`max-height`)
   evita o pulo de layout: mesmo no instante antes de o JS rodar, o cartão já
   mostra uma linha só — a diferença é que agora o excedente fica escondido
   ABAIXO do corte, e não cortado ao meio na lateral.

   Respiro: 15px acima, 42px abaixo (padding do corpo). A diferença entre os
   dois é proposital — a folga inferior precisa ser visivelmente maior, senão
   o bloco parece encostado na borda. */
/* `align-content:flex-start` NÃO É DETALHE — é o que conserta o card que saía
   só com a pílula de continuação e nenhuma tag.

   Num container flex com `flex-wrap:wrap` E altura limitada, o valor padrão de
   `align-content` é `stretch`: as linhas são ESPREMIDAS para caber na altura
   disponível. Com 30px de altura e três linhas de 28px, elas se sobrepõem, e o
   `offsetTop` de todas fica praticamente igual. A função que corta usa
   exatamente esse `offsetTop` para saber quem caiu na segunda linha — com os
   valores embaralhados, ela escondia tudo.

   Com `flex-start`, as linhas mantêm a altura natural e empilham a partir do
   topo; o excedente transborda e é cortado pelo `overflow`. As medidas voltam
   a ser verdadeiras. */
.agenda-pro-card .pro-tags-pills{display:flex;flex-wrap:wrap;align-content:flex-start;gap:6px;margin-top:15px;max-height:2rem;overflow:hidden;}
/* No celular as tags podem ocupar duas linhas (regra 01/08/2026). */
@media(max-width:640px){.agenda-pro-card .pro-tags-pills{max-height:4.1rem;}}
/* Pílulas um pouco menores (31/07/2026): corpo de .78 para .71rem e respiro
   interno de 4x11 para 3x9px. O motivo é o "..." — em vários perfis ele era o
   único a sobrar para a segunda linha, e encolher a caixa é o que faz o
   conjunto inteiro caber numa linha só com mais frequência. */
.agenda-pro-card .pro-tag-pill{font-size:.71rem;font-weight:500;color:var(--purple-dark);background:var(--lavender-mid);border:1px solid #E4D7E7;padding:3px 9px;border-radius:999px;white-space:nowrap;line-height:1.45;}
/* DEVE SER DIFERENTE DAS OUTRAS? SÓ UM POUCO.

   Minha primeira versão usou contorno tracejado. Errado: em interface, borda
   tracejada carrega significado próprio — campo desabilitado, área de soltar
   arquivo, elemento em rascunho. Nada disso se aplica aqui, e o resultado foi
   a pílula parecer quebrada em vez de discreta.

   O que ela é: o último item da MESMA fila, dizendo que a fila continua. Então
   mantém a forma, o tamanho e o fundo das outras, e muda só a cor e o peso do
   texto. Fica reconhecível como parte do conjunto e ainda assim distinta o
   suficiente para não ser lida como uma especialidade chamada "Mais". */
.agenda-pro-card .pro-tag-more-inline{color:var(--purple);font-weight:700;border-color:var(--purple-light);}
/* A apresentação agora vem ANTES das tags. A ordem importa: o texto é a voz
   do profissional e as tags são um índice do que ele atende — índice depois do
   texto funciona como resumo; antes, atrasava a leitura do que interessa.
   Os 18px acima marcam a virada de bloco; os 8px abaixo (na regra das tags)
   mantêm texto e índice como um par. */
.apc-bio{margin-top:17px;margin-bottom:0;font-size:.92rem;color:var(--text-mid);line-height:1.55;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;}
/* .apc-link saiu: o botão "Ver perfil completo" deixou a coluna de texto e
   virou .apc-perfil, no pé da coluna da agenda, logo abaixo do "Agendar". */

/* --- coluna da agenda --- */
.apc-book{border-left:1px solid #E7DBEA;background:linear-gradient(180deg,#FAF7FC,#FFFFFF);padding:34px 24px 34px 32px;display:flex;flex-direction:column;}
.apc-book-label{font-size:.72rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-light);font-weight:700;margin-bottom:10px;}
/* Mesma identidade do CTA verde de dentro do perfil (.next-slot-cta): fundo no
   verde da marca e texto branco, para a pessoa reconhecer o mesmo elemento nos
   dois lugares. O que NÃO acompanha é a escala — aqui ele é um selo informativo
   dentro de um card de lista, não o botão principal da tela, então segue
   pequeno e sem sombra.

   UMA LINHA SEMPRE (31/07/2026): o `nowrap` é a regra, e o corpo em .74rem é o
   que a torna possível. Medi o pior caso — "Próximo horário: ter 14/12 às
   09:00", com dia e mês de dois dígitos — em ~207px de texto; somando ícone,
   vão e respiro interno dá ~246px, dentro dos 248px úteis da coluna. Se um dia
   o rótulo ficar mais longo que isso, é o corpo que precisa cair junto, senão
   o `overflow:hidden` do card corta a ponta. */
.apc-next{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;color:#fff;font-weight:600;background:var(--green);padding:7px 10px;border-radius:10px;align-self:flex-start;margin-bottom:15px;line-height:1.3;white-space:nowrap;}
.apc-next svg{flex:none;}
/* A CONTA QUE ESTOURAVA (corrigida em 31/07/2026).

   A coluna .apc-book tem 304px com 24px+32px de padding, sobrando 248px úteis.
   Com `min-width:44px`, os cinco dias pediam 220px, mais quatro vãos de 8px =
   252px. Faltavam 4px, e como aqui há `overflow-x:auto` com a barra escondida
   (`scrollbar-width:none`), o excedente não virava barra de rolagem visível —
   o último dia simplesmente aparecia cortado pela metade.

   Com 40px de piso a conta fecha: 200 + 32 = 232, dentro dos 248. Na prática
   os botões nem chegam a 40px de largura mínima, porque `flex:1 1 0` divide o
   espaço e cada um fica com ~43px. O piso menor só existe para a soma nunca
   estourar de novo. Em telas menores a coluna ocupa a largura toda e sobra
   espaço de sobra. */
.apc-week{display:flex;gap:8px;overflow-x:auto;padding-bottom:3px;scrollbar-width:none;}
.apc-week::-webkit-scrollbar{display:none;}
.apc-day{flex:1 1 0;min-width:40px;border:1px solid #E0D4E3;border-radius:13px;background:#fff;padding:9px 0;cursor:pointer;font-family:inherit;transition:.15s;display:flex;flex-direction:column;align-items:center;gap:2px;}
.apc-dow{font-size:.6rem;letter-spacing:.05em;text-transform:uppercase;color:var(--text-light);font-weight:700;}
.apc-dnum{font-size:1.08rem;font-weight:700;color:var(--purple-dark);line-height:1.05;}
.apc-day:hover:not(.off){border-color:var(--purple-light);box-shadow:0 3px 10px -6px rgba(62,42,69,.4);}
.apc-day.off{opacity:.34;cursor:not-allowed;}
.apc-day.sel{background:var(--purple);border-color:var(--purple);box-shadow:0 6px 14px -6px rgba(97,68,104,.6);}
.apc-day.sel .apc-dow,.apc-day.sel .apc-dnum{color:#fff;}
.apc-slots{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px;}
.apc-slot{border:1px solid #E0D4E3;background:#fff;border-radius:9px;padding:5px 12px;font-size:.84rem;font-weight:600;color:var(--purple-dark);font-family:inherit;cursor:pointer;transition:.15s;}.apc-slot:hover{border-color:var(--purple-light);}.apc-slot.sel{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:0 4px 10px -5px rgba(97,68,104,.6);}
.apc-hint{font-size:.78rem;color:var(--text-light);margin-top:9px;}
/* Os dois botões vivem juntos no pé da coluna. `margin-top:auto` no grupo
   (e não no botão) encosta o par na base do cartão sem separar um do outro,
   e o `padding-top` garante o afastamento da dica mesmo quando não sobra
   espaço para o `auto` agir — no celular, onde esta coluna vira uma faixa
   dimensionada pelo conteúdo, `auto` vale zero. */
.apc-cta{margin-top:auto;padding-top:16px;display:flex;flex-direction:column;gap:9px;}
.apc-btn{border:0;border-radius:13px;padding:13px;font-family:inherit;font-size:.94rem;font-weight:700;cursor:pointer;transition:.18s;}
.apc-agendar{background:var(--purple);color:#fff;box-shadow:0 8px 20px -10px rgba(97,68,104,.7);}
.apc-agendar:hover{background:var(--purple-dark);}
.apc-agendar:disabled{background:var(--lavender-mid);color:var(--text-light);cursor:not-allowed;box-shadow:none;}
/* Ação secundária: mesma forma e mesma largura do "Agendar", peso visual
   menor. Contorno em vez de preenchimento é o que impede os dois de
   disputarem o clique — agendar é o que o cartão quer que aconteça. */
.apc-perfil{background:var(--purple);color:var(--lavender);border:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:.9rem;transition:gap .18s,background .18s,color .18s;}
.apc-perfil svg{flex:none;}
.apc-perfil:hover{gap:12px;background:var(--purple-dark);color:#fff;}
.apc-perfil:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}

/* TABLET DEITADO e notebook pequeno: a agenda desce para a largura toda e
   sobram duas colunas em cima. A foto continua no tamanho novo, então a
   coluna acompanha os mesmos 292px. */
@media(max-width:900px){
  .agenda-pro-card{grid-template-columns:292px 1fr;}
  .agenda-pro-card .agenda-pro-name{font-size:28px;}
  .apc-body{padding:30px 28px 28px 26px;}
  .apc-book{grid-column:1 / -1;border-left:0;border-top:1px solid #E7DBEA;}
  /* Coluna cheia: os dois botões lado a lado aproveitam a largura em vez de
     virarem duas barras empilhadas ocupando meia tela. */
  .apc-cta{flex-direction:row;gap:10px;}
  .apc-cta .apc-btn{flex:1 1 0;}
  /* Abordagem, CRP e público NÃO precisam de regra aqui: nesta faixa o corpo
     do card não é centralizado, então eles já herdam alinhamento à esquerda,
     que é o pedido (31/07/2026). Houve uma tentativa de alinhá-los à direita
     nesta mesma data; foi um mal-entendido e a regra saiu. */
}
/* TABLET EM PÉ (iPad 768, Android 800): largura suficiente para manter foto e
   texto lado a lado, mas não para a foto de 222px sem apertar o texto. */
@media(max-width:820px) and (min-width:561px){
  .agenda-pro-card{grid-template-columns:238px 1fr;}
  .apc-media{padding:32px 18px 30px 28px;}
  .apc-avatar,.agenda-pro-card .agenda-pro-photo-img{width:192px;height:192px;}
  .agenda-pro-card .agenda-pro-name{font-size:25px;}
  .apc-body{padding:28px 24px 26px 22px;}
  .apc-bio{-webkit-line-clamp:3;}
}
/* CELULAR (iOS e Android): coluna única, tudo centralizado, foto também 10%
   maior (150 -> 165px). Os botões voltam a empilhar porque lado a lado, em
   360px de largura, "Ver perfil completo" quebraria em duas linhas dentro do
   botão. */
@media(max-width:560px){
  .agenda-pro-card{grid-template-columns:1fr;}
  .apc-media{padding:26px 20px 0;gap:12px;}
  .apc-avatar,.agenda-pro-card .agenda-pro-photo-img{width:165px;height:165px;}
  .apc-body{padding:14px 22px 20px;align-items:center;text-align:center;justify-content:flex-start;}
  .apc-head{flex-direction:column;align-items:center;gap:3px;width:100%;}
  .agenda-pro-card .agenda-pro-name{font-size:clamp(22px,6.5vw,26px);text-align:center;}
  /* ESQUERDA, não centro (pedido 31/07/2026), só para estes três campos — o
     nome e a foto seguem centralizados.

     O `width:100%` não é decoração: o .apc-body é flex column com
     `align-items:center`, então uma caixa sem largura declarada encolhe até o
     conteúdo e fica centralizada — `text-align:left` dentro dela não moveria
     nada. Esticando a caixa, o alinhamento passa a valer de verdade.

     O público atendido não entra aqui: ele é `inline-flex` dentro do
     .apc-meta-row, então quem o posiciona é o `text-align` do PAI. A regra
     dele está no bloco de .apc-meta-row mais abaixo no arquivo. */
  .agenda-pro-card .agenda-pro-spec{text-align:left;width:100%;}
  .apc-crp{margin-top:1px;text-align:left;width:100%;}
  .agenda-pro-card .pro-tags-pills{justify-content:center;margin-top:13px;}
  .apc-bio{text-align:left;margin-top:13px;}
  .apc-book{padding:22px 18px 26px;}
  .apc-cta{flex-direction:column;gap:9px;padding-top:14px;}
  .apc-cta .apc-btn{flex:none;width:100%;}
  .apc-perfil{font-size:.88rem;}
}
/* CABEÇALHO ROXO (design aprovado 31/07/2026, combinação V2+V4 do protótipo).
   As margens negativas espelham o padding do .profile-schedule em cada
   breakpoint, para a faixa sangrar até as bordas do card; o raio de 19px é o
   raio do card (20px) menos a borda de 1px. Se o padding do card mudar, estas
   margens mudam junto. */
/* Trilha nos tamanhos menores: o respiro total até o card segue o que cada
   breakpoint já tinha; só é repartido entre "acima da trilha" e "abaixo".
   Este bloco vem DEPOIS dos media antigos de propósito, para vencer por
   ordem os paddings que o hero tinha em ≤900 e ≤640. */
@media(max-width:900px){
  .profile-bc{padding:1.7rem 5% 0;margin-bottom:.8rem;}
  .profile-hero{padding:0;}
}
@media(max-width:640px){
  .profile-bc{padding:2.4rem 5% 0;font-size:.78rem;margin-bottom:.7rem;}
}
/* No DESKTOP a trilha recua até a mesma vertical do NOME do profissional
   (pedido 02/08). A conta: o `.profile-hero` afasta 4% da tela e o
   `.profile-hero-inner`, que ocupa os 92% restantes, afasta mais 4% da
   PRÓPRIA largura — ou seja 3,68% da tela. 4 + 3,68 = 7,68%. Escrito assim,
   com a conta à vista, para quem mexer num dos dois paddings depois saber
   que este número acompanha. O respiro acima também subiu um pouco. */
@media(min-width:901px){
  .profile-bc{padding-left:7.68%;padding-top:calc(80px + 1.5rem);}
}
.schedule-head-row{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;background:var(--purple);margin:-1.85rem -1.7rem .6rem;padding:.85rem 1.35rem;border-radius:19px 19px 0 0;border-bottom:1.5px solid var(--gold);}
.schedule-head-row .schedule-title{color:#fff;}
.schedule-head-row .schedule-intro{color:rgba(255,255,255,.78);}
.schedule-head-row .schedule-icon-circle{border:1px solid rgba(216,169,75,.5);}.schedule-head-row .schedule-icon-circle{margin-bottom:0;margin-left:.4rem;flex:none;}.schedule-head-text{flex:1;min-width:0;}
/* O BOTÃO VERDE MORA NO CABEÇALHO (31/07/2026).

   Ele saiu da faixa própria de largura cheia e passou a ser o terceiro item
   desta linha, encostado à direita do "Agende agora!". Dois ganhos: a ação
   mais direta da tela fica na altura do título, onde o olho chega primeiro, e
   a faixa que ele ocupava sozinha vira espaço para o calendário — que é o
   que permitiu aumentá-lo na mesma rodada.

   O `flex-wrap` na linha é o que sustenta o celular: lá o botão não cabe ao
   lado do texto, então ele quebra para baixo e volta à largura cheia (regra
   no bloco de 640px), que é como ele já era. A ordem do HTML mudou, mas o
   resultado no celular continua o mesmo de antes. */
.schedule-head-row .next-slot-cta{flex:0 0 auto;width:auto;max-width:46%;margin:0;text-align:left;}
@media(max-width:640px){.schedule-head-row .next-slot-cta{flex:0 0 100%;width:100%;max-width:none;margin:.35rem 0 0;}}
@media(max-width:374px){
  .calendar-title{min-width:0;font-size:.92rem;}
  /* Nos aparelhos de 360px a linha "Detalhes do serviço · Consulta online por
     videochamada" a .78rem soma ~330px e a largura útil é ~324px: um ponto a
     menos garante a linha única também aqui. */
  .service-details h3,.service-type{font-size:.73rem;}
  .cal-orn{font-size:.78rem;}
  .calendar-header{gap:.4rem;}
  .calendar-weekdays span{font-size:.92rem;}
  .calendar-card{padding:.6rem .45rem .7rem;}
}
/* SELETOR DE PLANO na agenda do perfil (1 / 4 / 8 sessões).
   Escada de preço lida de cima para baixo, do menor para o maior compromisso.
   O selecionado ganha borda roxa cheia e fundo lavanda: contraste de forma,
   não só de cor, para não depender de enxergar cor. */
/* A folga de 0,25rem embaixo colava as opções de preço no "Próximo": dois
   alvos grandes encostados, e o de cima parecendo parte do de baixo. Subiu
   para 1,1rem. Em cima, o caminho foi o oposto — 1,25rem viraram 1rem. */
/* PREÇOS À ESQUERDA, AÇÃO À DIREITA.

   Empilhados, os dois botões ocupavam a largura toda do cartão e sobrava um
   vão enorme dentro de cada um — texto curto no meio de um alvo larguíssimo.
   Numa coluna de 250px eles ficam com a proporção de botão de verdade, e a
   sobra horizontal que existia ao lado dos preços deixa de existir.

   `justify-content:flex-end` alinha os botões com a BASE da última opção de
   preço, em vez de deixá-los flutuando no alto ao lado do título. Isso é o
   que dá a leitura de "escolhi, agora avanço". */
/* SEM RÉGUAS DENTRO DO AGENDAMENTO (pedido 02/08, segunda leva). As linhas
   que separavam os passos saíram: o que separa um passo do outro agora é só
   o espaço em branco.

   Por isso o espaço virou UM número só, aqui. Todos os respiros do bloco
   (painel do mês → passo 1, cabeçalho → conteúdo, calendário → passo 3,
   título do 3 → botões de valor, botões → linha de ações, ações → detalhes
   do serviço) leem esta variável. Sem a régua para marcar a divisão, um
   respiro maior num lugar e menor no outro faz os passos parecerem tortos —
   e mudar o ritmo do bloco inteiro passa a ser trocar este valor. */
.profile-schedule{--respiro-passo:.5rem;}
.schedule-cal-row .schedule-times{margin-bottom:0;}
.schedule-plano-row{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:1.1rem;align-items:stretch;margin:var(--respiro-passo,1.15rem) 0 0;}
/* A coluna do quadro não entra na conta da altura da linha: o quadro fica
   ancorado no rodapé dela e cresce PARA CIMA, ocupando o espaço livre acima
   (pedido 01/08/2026). Assim escolher 4 ou 8 sessões não estica o cartão nem
   empurra os botões, que agora moram na linha de baixo. */
/* O quadro de créditos ancora no RODAPÉ da coluna, colado na linha dos
   botões logo abaixo; ao trocar de 4 para 8 sessões ele cresce PARA CIMA
   (pedido 01/08 noite). */
.schedule-plano-side{position:relative;min-width:0;}
.schedule-plano-side #plano-resumo{position:absolute;left:0;right:0;bottom:0;}

.schedule-plano-row .plano-box{margin:0;}
.schedule-plano-row .valor-extra-box{margin:0;padding:.85rem .9rem;}
/* Botões lado a lado na largura toda, mesma espessura (o secundário desconta
   a própria borda do padding) e flechinha na margem direita — a do "Agendar
   mais" na mesma cor do botão Próximo (pedido 01/08 noite). */
/* Os dois botões deixam de dividir 50/50 e passam a repetir EXATAMENTE as
   colunas da linha de cima (1.55fr / 1fr, mesmo gap de 1.1rem). Assim o
   "Agendar mais consultas" termina no mesmo x em que terminam os botões de
   valor, por construção: se a proporção das colunas mudar um dia, os botões
   acompanham sozinhos, sem número mágico para manter sincronizado. */
.schedule-plano-row .schedule-next-row{flex-direction:row;gap:.6rem;}
.schedule-acoes-row .schedule-next-row{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:1.1rem;}
.schedule-acoes-row .schedule-next-row .btn-next{width:100%;min-width:0;flex:none;}
.schedule-acoes-row{display:grid;grid-template-columns:1fr;margin:var(--respiro-passo,1.15rem) 0 .7rem;}
.schedule-acoes-row > div[aria-hidden]{display:none;}
.schedule-acoes-row .btn-next{position:relative;padding-right:2rem;}
.schedule-acoes-row .btn-next-secondary{padding-top:calc(.8rem - 1.5px);padding-bottom:calc(.8rem - 1.5px);}
.btn-seta{position:absolute;right:.9rem;top:50%;transform:translateY(-50%);font-size:1.15em;line-height:1;}
.btn-next .btn-seta{color:#fff;}
.btn-next-secondary .btn-seta{color:var(--purple-dark);}
@media(max-width:1100px){
  .schedule-plano-row{grid-template-columns:1fr;gap:1rem;}
  /* Empilhado, o quadro volta ao fluxo normal (não há coluna ao lado). */
  .schedule-plano-side #plano-resumo{position:static;}
  .schedule-acoes-row{grid-template-columns:1fr;gap:0;}
  /* Empilhado não há coluna de cima para acompanhar: volta a dividir igual. */
  .schedule-acoes-row .schedule-next-row{grid-template-columns:1fr 1fr;gap:.6rem;}
}
.plano-box{margin:1rem 0 1.1rem;min-width:0;}
/* O respiro embaixo do "3" é o MESMO de cima: antes eram .3rem embaixo
   contra o dobro disso em cima, e o título ficava colado nos botões de
   valor. */
/* Sem negrito, como os títulos do 1 e do 2 (rodada 60): os três passos são
   a mesma hierarquia e um deles em peso 700 quebrava a leitura da escada. */
.plano-titulo{font-size:1.22rem;display:flex;align-items:center;font-weight:400;color:var(--purple-dark);margin:0 0 var(--respiro-passo,1.15rem);}
.plano-sub{font-size:.93rem;color:var(--text-mid);margin:0 0 .7rem;line-height:1.4;}
.plano-lista{display:flex;flex-direction:column;gap:.45rem;}
/* Mais altura a pedido (02/08); a opção COM o selo verde de economia cresce
   um pouco mais que as outras — é a que a casa quer que a pessoa veja.
   O :has() é progressivo: navegador antigo ignora e a opção fica igual às
   irmãs, sem quebrar nada. */
.plano-opcao{display:flex;align-items:center;gap:.65rem;width:100%;text-align:left;background:var(--white);border:2px solid rgba(107,79,160,.22);border-radius:14px;padding:.82rem .85rem;font-family:'Roboto',sans-serif;cursor:pointer;min-height:52px;transition:border-color .18s,background .18s;}
.plano-opcao:has(.plano-economia){min-height:60px;padding-top:.95rem;padding-bottom:.95rem;}
.plano-opcao:hover{border-color:var(--purple);}
.plano-opcao:focus-visible{outline:3px solid var(--purple);outline-offset:2px;}
.plano-opcao[aria-checked="true"]{border-color:var(--purple-dark);background:var(--lavender);}
.plano-marca{flex:0 0 auto;width:20px;height:20px;border-radius:50%;border:2px solid rgba(107,79,160,.45);position:relative;}
.plano-opcao[aria-checked="true"] .plano-marca{border-color:var(--purple-dark);}
.plano-opcao[aria-checked="true"] .plano-marca::after{content:'';position:absolute;inset:3px;border-radius:50%;background:var(--purple-dark);}
/* .plano-corpo e .plano-valor viram CONTAINERS flex-column (nao so items):
   os spans de dentro (.plano-nome/.plano-detalhe/.plano-economia e
   .plano-total/.plano-por) sao gerados em JS colados um no outro sem espaco no
   HTML (ex.: '</span>'+'<span'), entao sem isso ficam INLINE e o texto roda
   junto na mesma linha, tipo "4 sessõesUm pagamento só, 4 sessões de 50
   minutos". flex-direction:column forca cada span pra sua propria linha e o
   gap cuida do respiro, sem depender de margin em cada span individualmente.
   Este e o padrao a repetir sempre que textos empilhados vierem de spans
   concatenados por JS: container flex-column + gap, nao spans soltos. */
/* Nome e descrição da opção são a MESMA informação; colados, leem como um
   bloco só, e a distância que sobra passa a separar uma opção da outra. */
/* Piso: o nome do plano nunca é esmagado pela coluna de valores. */
.plano-corpo{flex:1;min-width:78px;display:flex;flex-direction:column;gap:0;}
.plano-nome{display:block;font-size:1.08rem;font-weight:700;color:var(--text-dark);line-height:1.3;}
.plano-detalhe{display:block;font-size:.82rem;color:var(--text-light);line-height:1.22;margin-top:0;}
.plano-valor{flex:0 1 auto;min-width:0;text-align:right;display:flex;flex-direction:column;gap:.08rem;align-items:flex-end;}
.plano-total{font-size:1.12rem;font-weight:700;color:var(--purple-dark);white-space:nowrap;line-height:1.3;}
.plano-por{font-size:.74rem;color:var(--text-light);white-space:nowrap;}
.plano-economia{display:inline-block;background:var(--green);color:#fff;border-radius:100px;padding:.12rem .45rem;font-size:.68rem;font-weight:700;white-space:nowrap;}
.plano-valor-linha{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;row-gap:.15rem;column-gap:.35rem;}
.plano-promo{display:inline-block;background:var(--gold);color:#fff;border-radius:100px;padding:.14rem .5rem;font-size:.68rem;font-weight:700;margin-left:.35rem;}
.plano-aviso{font-size:.82rem;color:var(--text-mid);background:var(--lavender);border-radius:12px;padding:.6rem .8rem;margin-top:.7rem;line-height:1.45;}
/* ESCOLHA DE PACOTE NO CELULAR — bloco DEPOIS das regras base de propósito.

   A primeira tentativa colocou isto junto das outras correções de 640px, lá
   em cima, e não valeu nada: as regras base de .plano-* aparecem DEPOIS no
   arquivo e, com a mesma especificidade, quem vem por último ganha. Estar
   dentro de uma media query não dá prioridade nenhuma.

   O que muda: os dois textos acima das opções de preço estavam com folga de
   desktop e, na tela estreita, viravam um vão grande entre o título e o
   primeiro botão. As margens de cima encolhem e a de baixo ABRE — a distância
   que faltava era entre o último preço e o "Próximo", porque dois botões
   grandes colados um no outro convidam ao toque errado. */
@media(max-width:640px){
  .plano-box{margin:.85rem 0 1.5rem;}
  .plano-titulo{margin-bottom:var(--respiro-passo,1.15rem);}
  .plano-sub{margin-bottom:.55rem;line-height:1.4;}
  .plano-lista{gap:.5rem;}
}
/* Valor extra pro profissional (rodada 28/07): so aparece a partir da 4a
   consulta com o MESMO profissional (3 ja realizadas). Fica logo abaixo do
   seletor de pacote, mesmo respiro visual, pra nao competir com o preco
   principal da sessao. */
.valor-extra-box{margin:1.1rem 0 .25rem;background:var(--lavender-mid);border:1.5px solid rgba(107,79,160,.25);border-radius:16px;padding:1rem 1.1rem;}
.valor-extra-titulo{font-size:.88rem;font-weight:700;color:var(--purple-dark);margin:0 0 .3rem;}
.valor-extra-sub{font-size:.78rem;color:var(--text-mid);margin:0 0 .8rem;line-height:1.5;}
.valor-extra-linha{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;}
.valor-extra-input{width:110px;padding:.55rem .7rem;border:1.5px solid var(--border);border-radius:10px;font-family:'Roboto',sans-serif;font-size:.9rem;}
.valor-extra-ativo{display:flex;justify-content:space-between;align-items:center;gap:.8rem;flex-wrap:wrap;}
.valor-extra-ativo-valor{font-weight:700;color:var(--purple-dark);font-size:.95rem;}
.admin-card-extra{background:var(--lavender);border-radius:8px;padding:.5rem .8rem;margin:.5rem 0 0;font-size:.78rem;color:var(--purple-dark);line-height:1.5;}

/* CARTAO DE RETORNO na pagina "Agende agora".
   Verde `--green` porque na Doxa o dourado marca credencial de CRP e o roxo
   e a marca; o verde ja e a cor de acao afirmativa do site. */
.retorno-card{display:flex;align-items:center;gap:1.25rem;background:linear-gradient(135deg,var(--green) 0%,#345a40 100%);color:#fff;border-radius:24px;padding:1.5rem 1.75rem;margin-bottom:24px;box-shadow:0 6px 24px rgba(63,105,76,.28);}
.retorno-foto{width:78px;height:78px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--foto-luz);border:2px solid var(--gold);flex:0 0 auto;}
.retorno-texto{flex:1;min-width:0;}
.retorno-selo{display:inline-block;background:rgba(255,255,255,.18);border-radius:100px;padding:.22rem .7rem;font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin-bottom:.45rem;}
.retorno-texto h3{font-size:1.15rem;font-weight:700;margin:0 0 .35rem;color:#fff;}
.retorno-texto p{font-size:.88rem;line-height:1.5;margin:0;color:rgba(255,255,255,.9);max-width:58ch;}
.retorno-btn{background:#fff;color:var(--green);border:none;border-radius:100px;padding:.8rem 1.6rem;font-family:'Roboto',sans-serif;font-size:.9rem;font-weight:700;cursor:pointer;flex:0 0 auto;min-height:44px;transition:transform .15s,box-shadow .2s;}
.retorno-btn:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.18);}

/* POP-UP DA SESSAO IMINENTE. z-index acima dos modais (600) porque ele so
   aparece quando a pessoa tem uma consulta comecando, e nesse momento e a
   coisa mais importante da tela. */
.pop-sessao-overlay{position:fixed;inset:0;background:rgba(62,42,69,.72);z-index:700;display:flex;align-items:center;justify-content:center;padding:1.25rem;}
.pop-sessao{position:relative;background:var(--white);border-radius:24px;padding:2rem 1.75rem 1.5rem;max-width:380px;width:100%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.3);}
.pop-sessao-fechar{position:absolute;top:.7rem;right:.9rem;background:none;border:none;font-size:1.5rem;line-height:1;color:var(--text-light);cursor:pointer;min-height:44px;min-width:44px;}
.pop-sessao-foto{width:88px;height:88px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--foto-luz);border:2px solid var(--gold);margin:0 auto .9rem;display:block;}
.pop-sessao-chamada{font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--green);margin:0 0 .3rem;}
.pop-sessao-nome{font-size:1.25rem;font-weight:700;color:var(--purple-dark);margin:0 0 .2rem;}
.pop-sessao-quando{font-size:.92rem;color:var(--text-mid);margin:0 0 1.35rem;}
.pop-sessao-btn{display:block;background:var(--green);color:#fff;text-decoration:none;border-radius:100px;padding:.9rem 1.5rem;font-weight:700;font-size:.95rem;min-height:44px;}
.pop-sessao-depois{display:block;width:100%;background:none;border:none;color:var(--text-light);font-family:'Roboto',sans-serif;font-size:.85rem;cursor:pointer;margin-top:.7rem;min-height:44px;}

/* =====================================================================
   AJUSTES DE CELULAR QUE ESTAVAM SENDO IGNORADOS (rodada 21).
   POR QUE ESTE BLOCO EXISTE E POR QUE ELE FICA NO FIM DO CSS:
   estas declaracoes moravam num @media escrito ANTES da regra base do
   mesmo seletor. Em CSS, com especificidade igual, vence quem vem
   DEPOIS no arquivo, e estar dentro de um @media nao muda isso. Ou
   seja: elas nunca chegaram a valer, o celular sempre usou o valor de
   computador. Movidas para ca, passam a valer de verdade.
   NAO MOVER ESTE BLOCO PARA CIMA. Se precisar mexer em algum destes
   seletores, mexa aqui, nao no @media la de cima.
   Rode o detector de ordem de CSS antes de entregar qualquer rodada.
   ===================================================================== */
@media(max-width:640px){
  /* Home e quiz */
  .btn-match{font-size:.8rem;padding:.55rem 1.2rem;}
  .match-modal{padding:1.8rem 1.3rem;border-radius:20px;}
  .match-title{font-size:1.05rem;}
  /* min-height mantem o alvo de toque em 44px: o padding menor sozinho
     deixaria o botao com cerca de 39px, abaixo do minimo do projeto. */
  .match-option{padding:.7rem .9rem;font-size:.85rem;min-height:44px;}
  .match-progress-dots{gap:.3rem;}
  .match-dot{width:6px;height:6px;}
  .match-dot.active{width:18px;}
  .mh-slot{font-size:.68rem;padding:.15rem .45rem;}

  /* Meus agendamentos */
  .appt-card{padding:1rem;}
  .appt-photo,.appt-photo-placeholder{width:96px;height:96px;font-size:1.7rem;}
  .appt-pro-name{font-size:.95rem;}
  .appt-datetime{font-size:.88rem;}

  /* Pagamento */
  .payment-wrap{padding:2rem 4% 3rem;}

  /* Avaliacao */
  .review-stars{gap:.5rem;}
  .review-star{font-size:1.8rem;}

  /* Painel do profissional */
  .terapeuta-tabs{gap:.3rem;}
  /* mesma razao do .match-option: sem o min-height a aba ficaria com
     cerca de 31px de altura de toque. */
  .terapeuta-tab{font-size:.75rem;padding:.4rem .8rem;min-height:44px;}
  .week-editor-row{padding:.7rem .8rem;}
  .week-add-input{width:80px;}
  .block-form-grid{grid-template-columns:1fr;}

  /* Admin */
  .admin-wrap{padding:1.5rem 4% 3rem;}
  .admin-card{padding:1rem;}
  .admin-card-head{gap:.5rem;}

  /* Chat.
     A altura desconta a nav REAL do celular (69,1px), nao a de
     computador (95,5px), que sobrava 26px e cortava a conversa.
     A escada vh > svh > dvh e proposital, para iOS antigo. */
  .chat-wrap{padding:.75rem .5rem 0;height:calc(100vh - 69.1px);height:calc(100svh - 69.1px);height:calc(100dvh - 69.1px);}
  .chat-messages{padding:.75rem .5rem;}
  .chat-msg{max-width:88%;}

  /* Botao flutuante do WhatsApp e a janelinha dele.
     Estes numeros ja nao sao espelhados em lugar nenhum: o VLibras deixou
     de ser posicionado por nos em 26/07/2026 e agora se posiciona sozinho
     no meio da borda direita, longe deste canto. */
  .support-chat-fab{width:52px;height:52px;bottom:1.2rem;right:1.2rem;}
  .support-chat-modal{bottom:4.5rem;}

  /* Selo de preço da home: o texto ganhou a parte dos pacotes em 27/07 e,
     em 1.4rem itálico, quebrava em 3 linhas pesadas no celular. */
  .price-tag{font-size:1.12rem;}

  /* Popup de upgrade: no desktop o botao virou largura fixa (ver regra
     base) porque esticava demais dentro do modal de 500px. No celular
     volta a ser largura cheia, como todo outro CTA de modal do site. */
  .upgrade-pop-cta{max-width:none;width:100%;}
}

/* Desktop apenas: quando as Duvidas frequentes passaram de 7 para 10 perguntas
   (27/07), a coluna do titulo ficou pequena diante da lista. Titulo entra no
   padrao de clamp dos outros titulos de secao; subtitulo e botao acompanham.
   O botao e escopado a secao para nao alterar os .btn-green do resto do site. */
@media(min-width:641px){
  .faq-label{font-size:clamp(2.4rem,3.6vw,3.2rem);}
  .faq-sub{font-size:1.05rem;margin:1rem 0 2rem;}
  .faq-section .btn-green{font-size:.92rem;padding:1rem 2.4rem;}
}

/* Linha de informacao do card da agenda: publico atendido e selo de Libras
   dividem a MESMA linha. Antes o selo era filho direto de `.apc-body`, que e
   flex column com align-items:stretch, entao ele esticava de ponta a ponta e
   ainda gastava uma linha so dele. Aqui ele volta ao tamanho do conteudo e o
   card fica mais baixo do que era. */
/* IDENTIFICAÇÃO É UM BLOCO SÓ: nome, abordagem, CRP e público-alvo colados
   entre si (3, 2 e 6px). As quatro linhas respondem à mesma pergunta — quem é
   esta pessoa — e lidas juntas viram um parágrafo, não quatro itens soltos.
   O espaço grande da coluna passa a existir num lugar só: entre esse bloco e
   a apresentação escrita pelo profissional. */
.apc-meta-row{margin-top:2px;line-height:1.25;}
.apc-meta-row:empty{display:none;}
/* inline-flex, nao display:flex no container: assim os dois se comportam
   como "palavras" que fluem juntas no texto. Antes, cada um virava sua
   propria LINHA DE FLEX quando nao cabiam lado a lado (o que acontece toda
   vez que o publico atendido tem 5+ tags), e o selo pousava sozinho, colado
   na margem esquerda, bem abaixo. Em fluxo de texto normal, se nao houver
   espaco na linha o selo so desce pertinho de onde o texto terminou. */
.apc-meta-row .agenda-pro-audience{display:inline-flex;vertical-align:middle;margin:0 .5rem .25rem 0;}
.apc-meta-row /* O selo trazia .25rem de margem embaixo, que empurrava tudo o que vem
   depois. Quem manda no espaço agora é a linha, não o selo. */
.selo-libras-card{display:inline-flex;vertical-align:middle;margin:0;}
/* Menor e em verde, abaixo da linha do público geral: lê como ressalva
   daquela linha, não como item de mesmo peso. */
.libras-publico{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:.82rem;color:var(--green);line-height:1.3;}
.libras-publico svg{flex:none;}
.libras-publico strong{font-weight:700;}
@media(max-width:560px){ .libras-publico{justify-content:center;} }
.apc-meta-row .selo-libras{font-size:.7rem;padding:.24rem .62rem;box-shadow:none;}
@media(max-width:560px){
  /* ALINHAMENTO À ESQUERDA (pedido 31/07/2026). Esta linha carrega o público
   atendido, que é `inline-flex` — logo, quem decide onde ele fica é o
   `text-align` DESTA caixa, não um `justify-content` no próprio selo. Ele
   acompanha abordagem e CRP, que também foram para a esquerda.
   A entrelinha apertada continua: em coluna estreita, o público-alvo com o
   selo de Libras quase sempre quebra em duas linhas, e sem isso a quebra
   abriria um vão no meio do bloco de identificação.
   Esta regra mora AQUI, e não junto das outras de celular lá em cima, porque
   a regra base de .apc-meta-row aparece depois daquele bloco no arquivo — e,
   com a mesma especificidade, quem vem por último ganha. */
.apc-meta-row{text-align:left;line-height:1.4;}
  .apc-meta-row .agenda-pro-audience{margin-right:0;}
}

/* Remarcar consulta */
.btn-remarcar{background:transparent;color:var(--purple-dark);border:1.5px solid var(--purple-dark);border-radius:100px;padding:.35rem .9rem;font-family:'Roboto',sans-serif;font-size:.78rem;font-weight:700;cursor:pointer;transition:background .15s,color .15s;}
.btn-remarcar:hover{background:var(--purple-dark);color:var(--white);}
.admin-card-actions .btn-remarcar{border:1.5px solid var(--purple-dark);background:transparent;color:var(--purple-dark);}
.admin-card-actions .btn-remarcar:hover{background:var(--purple-dark);color:var(--white);}

/* Envio de imagem na aba Perfil publico. O input nativo de arquivo e feio e
   inconsistente entre navegadores, entao ele fica escondido e quem aparece e
   o <label>, que dispara o mesmo clique com aparencia da marca. */
.solic-foto{margin-top:.9rem;border-top:1px solid var(--border);padding-top:.9rem;}
.solic-foto-topo{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;}
.solic-foto-btn{display:inline-flex;align-items:center;justify-content:center;background:var(--purple-dark);color:var(--white);border-radius:100px;padding:.6rem 1.3rem;font-family:'Roboto',sans-serif;font-size:.85rem;font-weight:700;cursor:pointer;min-height:44px;transition:background .15s;}
.solic-foto-btn:hover{background:var(--purple);}
#solic-foto-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;}
#solic-foto-input:focus-visible + .solic-foto-nome{outline:3px solid var(--gold);}
.solic-foto-nome{font-size:.8rem;color:var(--text-mid);min-width:0;overflow-wrap:anywhere;}
.solic-foto-previa{display:flex;align-items:center;gap:1rem;margin-top:.9rem;flex-wrap:wrap;}
.solic-foto-previa img{width:104px;height:104px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--purple);border:2px solid var(--gold);}
.solic-foto-remover{background:none;border:none;color:#C0392B;font-family:'Roboto',sans-serif;font-size:.82rem;font-weight:700;text-decoration:underline;cursor:pointer;min-height:44px;padding:0;}
.solic-foto-dica{font-size:.76rem;color:var(--text-light);line-height:1.55;margin:.7rem 0 0;text-wrap:pretty;}
.solic-item-foto{display:flex;align-items:center;gap:.9rem;margin:.6rem 0 0;flex-wrap:wrap;}
.solic-item-foto img{width:88px;height:88px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--purple);border:2px solid var(--gold);}
.solic-item-foto a{font-size:.82rem;font-weight:700;color:var(--purple-dark);text-decoration:underline;}
@media(max-width:640px){
  .solic-foto-btn{width:100%;}
  .solic-foto-previa{justify-content:center;}
}
.remarcar-modal{max-width:460px;}
.remarcar-titulo{font-size:1.25rem;color:var(--purple-dark);margin:0 0 .5rem;}
.remarcar-sub{font-size:.88rem;color:var(--text-mid);margin:0 0 1.1rem;line-height:1.6;text-wrap:pretty;}
.remarcar-atual{background:var(--lavender);border-radius:14px;padding:.85rem 1rem;margin-bottom:1.1rem;display:flex;flex-direction:column;gap:.15rem;}
.remarcar-atual-rot{font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-light);}
.remarcar-atual strong{font-size:1.02rem;color:var(--purple-dark);}
.remarcar-atual-quem{font-size:.82rem;color:var(--text-mid);}
.remarcar-atual-aviso{font-size:.78rem;color:#8A3B2E;font-weight:600;margin-top:.2rem;}
/* Card de consulta cancelada no painel do profissional: mesma estrutura das
   outras, so com uma borda de aviso pra nao ser confundida com uma sessao
   normal a caminho. */
.terapeuta-card.cancelada{border-left:3px solid #dc3545;}
.badge-cancelled{background:#F8D7DA;color:#721C24;}
.remarcar-campos{display:flex;gap:.8rem;}
.remarcar-campo{flex:1;min-width:0;display:flex;flex-direction:column;}
.remarcar-label{font-size:.8rem;font-weight:700;color:var(--purple-dark);margin-bottom:.35rem;}
.remarcar-input{width:100%;border:1.5px solid var(--border);border-radius:12px;padding:.75rem .9rem;font-family:'Roboto',sans-serif;font-size:1rem;color:var(--text-dark);background:var(--white);box-sizing:border-box;min-height:48px;}
.remarcar-input:focus{outline:none;border-color:var(--purple-dark);}
.remarcar-nota{font-size:.76rem;color:var(--text-light);line-height:1.55;margin:.7rem 0 0;text-wrap:pretty;}
.remarcar-salvar{width:100%;background:var(--green);color:var(--white);border:none;border-radius:12px;padding:.85rem 1.4rem;font-family:'Roboto',sans-serif;font-size:.95rem;font-weight:700;cursor:pointer;min-height:50px;margin-top:1.1rem;transition:filter .15s;}
.remarcar-salvar:hover{filter:brightness(1.07);}
.remarcar-salvar:disabled{opacity:.6;cursor:default;}
.remarcar-msg{font-size:.85rem;color:var(--text-mid);margin:.8rem 0 0;line-height:1.5;min-height:1.2em;}
.remarcar-msg.ok{color:var(--green);font-weight:600;}
.remarcar-msg.erro{color:#C0392B;font-weight:600;}
.remarcar-aviso{background:#FFF8E8;border:1.5px solid var(--gold-light);border-radius:14px;padding:1rem 1.1rem;margin-top:1rem;}
.remarcar-aviso-tit{font-size:.9rem;font-weight:700;color:var(--purple-dark);margin:0 0 .3rem;}
.remarcar-aviso-txt{font-size:.8rem;color:var(--text-mid);line-height:1.55;margin:0 0 .8rem;text-wrap:pretty;}
.remarcar-aviso-acoes{display:flex;gap:.6rem;flex-wrap:wrap;}
.remarcar-whats{flex:1;min-width:150px;display:inline-flex;align-items:center;justify-content:center;background:var(--green);color:#fff;border-radius:12px;padding:.7rem 1.1rem;font-size:.88rem;font-weight:700;text-decoration:none;min-height:44px;}
.remarcar-copiar{flex:1;min-width:130px;background:transparent;color:var(--purple-dark);border:1.5px solid var(--purple-dark);border-radius:12px;padding:.7rem 1.1rem;font-family:'Roboto',sans-serif;font-size:.88rem;font-weight:700;cursor:pointer;min-height:44px;}
@media(max-width:640px){
  .remarcar-campos{flex-direction:column;gap:.7rem;}
  .remarcar-whats,.remarcar-copiar{flex:1 1 100%;}
}

/* ===== PROVA SOCIAL (rodada 28/07) =====
   Nota Técnica CFP 1/2022: depoimento de paciente NAO pode ser usado na
   publicidade do psicologo, mesmo com consentimento por escrito ("permitido,
   mas nao recomendado"). Por isso este espaco e de estatistica/selo/midia
   institucional da Doxa, NUNCA de depoimento clinico atrelado a um paciente
   ou a um profissional especifico. O tipo "depoimento" nao existe no seletor
   do admin de proposito; ver aviso fixo no formulario. */
.btn-reenviar-email{background:none;border:1.5px solid var(--border);border-radius:8px;padding:.4rem .8rem;font-size:.78rem;font-weight:600;color:var(--purple-dark);cursor:pointer;font-family:'Roboto',sans-serif;}
.btn-reenviar-email:hover{background:var(--lavender);}
.prova-social-section{padding:4.5rem 7%;background:var(--lavender);}
/* Alinhado a ESQUERDA e na mesma largura das grades (1040px), para a
   primeira letra do titulo cair na mesma vertical da borda esquerda dos
   cartoes. Centralizado ficava destoando do resto dos corpos de texto. */
.prova-social-head{text-align:left;max-width:1040px;margin:0 auto 2.4rem;}
.prova-social-sub{max-width:62ch;}
.prova-social-h2{font-size:clamp(1.5rem,3vw,2rem);color:var(--purple);margin:0 0 .6rem;}
.prova-social-sub{color:var(--text-mid);margin:0;}
/* DUAS GRADES SEPARADAS, de propósito. Antes depoimentos e selos dividiam a
   MESMA grade `auto-fit`: com 3 selos + 2 depoimentos davam 5 itens, o que
   rendia 4 numa linha e 1 órfão embaixo, e ainda esticava a altura dos selos
   (a linha da grade se iguala pelo item mais alto, e o depoimento tem
   min-height). Separando, cada bloco tem a própria altura e a própria
   contagem de colunas, e nenhum órfão é possível. */
/* As DUAS grades usam a MESMA largura máxima de propósito: assim a borda
   externa dos depoimentos alinha com a da faixa de selos logo abaixo, e os
   dois blocos leem como um conjunto só. Antes os depoimentos iam a 1220px e
   os selos a 1000px, então os de cima "vazavam" 110px de cada lado e a
   seção ficava desalinhada. */
.prova-depo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;max-width:1040px;margin:0 auto;}
/* Faixa de selos (pedido 02/08): cartões mais QUADRADOS, com mais respiro
   lateral e quebra de texto equilibrada. `auto-fit` em vez de 3 colunas fixas
   porque a faixa passou a ter 4 itens: numa tela estreita ele desce sozinho
   para 2x2 em vez de espremer 4 numa linha. O `aspect-ratio` só vale como
   piso, junto do `min-height`, para o cartão não achatar quando o texto é
   curto (era exatamente o que deixava os três com cara de barra). */
.prova-selos-faixa{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:1rem;max-width:1040px;margin:2.6rem auto 0;padding-top:2.2rem;border-top:1px solid rgba(107,79,160,.18);}
.prova-card{background:#fff;border:1.5px solid var(--border);border-radius:16px;padding:1.6rem 1.55rem;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.55rem;min-height:158px;}
.prova-card-emoji{font-size:1.6rem;line-height:1;}
/* `balance` reparte as palavras entre as linhas: sem ele, "Conformidade com a
   LGPD e Códigos de Ética" deixava "Ética" sozinha na segunda linha. */
.prova-card-titulo{font-weight:800;color:var(--purple-dark);font-size:.95rem;line-height:1.35;text-wrap:balance;max-width:22ch;}
.prova-card-texto{font-size:.8rem;color:var(--text-mid);line-height:1.5;margin:0;text-wrap:pretty;}
/* Tablet: depoimentos empilham em 1 coluna (3 colunas de texto corrido ficam
   estreitas demais para ler), mas os selos, que são curtos, seguem em 3. */
@media(max-width:1024px){
  .prova-depo-grid{grid-template-columns:1fr;max-width:620px;}
}
/* CELULAR — quem rola de lado agora são os SELOS, não os depoimentos.

   A troca tem motivo: o depoimento é o texto que a pessoa precisa LER inteiro,
   e num carrossel ele só aparecia cortado em seis linhas, com o resto
   escondido; ainda por cima os três cartões já se revezam sozinhos, então
   arrastar de lado competia com a rotação automática. Empilhados, os três
   ficam legíveis e a rotação faz o trabalho.

   Os selos são o oposto: três frases curtas, equivalentes entre si, em que
   nenhuma precisa ser lida antes da outra. Aí o carrossel serve — ocupa uma
   faixa só de altura em vez de três blocos.

   O padding lateral negativo faz a trilha sangrar até a borda da tela e o
   `scroll-padding` mantém o primeiro cartão alinhado com o texto da seção. */
@media(max-width:640px){
  .prova-depo-grid{display:grid;grid-template-columns:1fr;gap:1rem;max-width:none;
    overflow:visible;margin:0;padding:0;}
  .prova-card-depoimento{min-height:0;aspect-ratio:auto;justify-content:space-between;}
  .prova-depo-texto{margin:.2rem 0 1rem;}
  .prova-depo-rodape{margin-top:auto;}
  .prova-depo-aviso{margin-top:.9rem;}
  /* No desktop as duas frases são blocos, e a quebra depois do ";" organiza a
     leitura numa linha larga. No celular a linha já é curta e o texto quebra
     sozinho várias vezes: forçar mais uma quebra ali criava uma linha final
     picada no meio do parágrafo. Aqui elas voltam a ser um texto corrido. */
  .prova-depo-aviso-txt{text-wrap:pretty;}
  .prova-depo-aviso-txt>span{display:inline;}
  .prova-depo-aviso-txt>span+span{margin-top:0;}
  .prova-social-section{padding:3.2rem 6%;}
  .prova-selos-faixa{display:flex;grid-template-columns:none;gap:.9rem;max-width:none;
    overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:6%;
    margin:2rem -6% 0;padding:1.8rem 6% .8rem;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .prova-selos-faixa::-webkit-scrollbar{display:none;}
  .prova-selos-faixa>.prova-card{flex:0 0 76vw;max-width:320px;scroll-snap-align:start;}
}
/* Card de DEPOIMENTO real (rodada 28/07, correção do escopo anterior; refinado
   depois com fade escalonado e mais identidade visual). Aspas grandes em
   dourado, avatar circular roxo com a inicial do paciente e rodapé separado
   por linha fina, no mesmo espírito do resto do site (cards de perfil, caixa
   de resposta rápida dos artigos). Consentimento por escrito é condição
   obrigatória no formulário do admin antes de existir aqui (ver NT CFP 1/2022:
   permitido com consentimento expresso, ainda que não recomendado pela
   exposição da pessoa atendida). */
.prova-card-depoimento{align-items:flex-start;text-align:left;background:var(--lavender-mid);border:1.5px solid rgba(107,79,160,.16);position:relative;padding-top:2.1rem;justify-content:space-between;transition:opacity var(--prova-fade-ms,.9s) ease,transform var(--prova-fade-ms,.9s) ease;min-height:230px;}
.prova-card-depoimento.prova-depo-fade{opacity:0;transform:translateY(8px);}
.prova-depo-quote{position:absolute;top:.3rem;left:1.1rem;font-size:3rem;color:var(--gold);opacity:.4;font-family:Georgia,'Times New Roman',serif;line-height:1;}
.prova-depo-estrelas{color:var(--gold);font-size:.85rem;letter-spacing:.16em;margin-bottom:.4rem;}
.prova-depo-texto{font-size:.92rem;color:var(--text-dark);line-height:1.7;margin:.2rem 0 1rem;font-style:italic;}
.prova-depo-rodape{display:flex;align-items:center;gap:.65rem;width:100%;margin-top:auto;padding-top:.8rem;border-top:1px solid rgba(107,79,160,.16);}
.prova-depo-avatar{width:34px;height:34px;border-radius:50%;background-color:var(--purple);background-size:56%;background-repeat:no-repeat;background-position:center;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;flex-shrink:0;font-family:'Roboto',sans-serif;}
.prova-depo-quem{display:flex;flex-direction:column;min-width:0;}
.prova-depo-nome{font-size:.82rem;font-weight:700;color:var(--purple-dark);line-height:1.35;}
.prova-depo-quem small{font-size:.74rem;color:var(--text-mid);line-height:1.4;}
.prova-depo-aviso{max-width:1040px;margin:1rem auto 0;font-size:.78rem;color:var(--text-mid);line-height:1.6;display:flex;gap:.45rem;align-items:flex-start;}
/* `flex-shrink:0` valia para TODOS os spans, inclusive o do texto — e um item
   flex que não encolhe simplesmente transborda a tela no celular. Era essa a
   causa do aviso saindo para fora do quadro. Agora a regra vale só para o
   cadeado, e o texto ganha `min-width:0`, sem o qual um item flex ainda se
   recusa a quebrar linha abaixo da largura do conteúdo. */
.prova-depo-aviso>span:first-child{color:var(--purple);flex-shrink:0;}
/* QUEBRAS DESTE AVISO.

   O `<br/>` que separava as duas frases virou duas caixas de bloco. A troca
   não é cosmética: `text-wrap:pretty` — que é o que evita a última linha com
   uma palavra só — atua por bloco. Com as duas frases num bloco só, separadas
   por <br>, a segunda frase não ganhava esse tratamento.

   O `&nbsp;` antes de "escrito;" e de "expostos." é a rede de segurança para
   navegador sem suporte a `text-wrap`. Sem ele, num Android de 360px a
   primeira frase terminava com "escrito;" sozinho numa linha. Simulei de 39 a
   95 caracteres por linha: prendendo essas duas palavras, nenhuma largura
   produz linha de uma palavra só.

   E `overflow-wrap` voltou de `anywhere` para `break-word`. `anywhere` autoriza
   partir a palavra em qualquer letra, mesmo quando ela caberia na linha
   seguinte inteira — era um risco desnecessário num texto com palavras longas
   como "identificação". `break-word` só parte quando a palavra sozinha não
   cabe, que é o caso real que eu queria cobrir. */
.prova-depo-aviso-txt{flex:1 1 auto;min-width:0;color:inherit;overflow-wrap:break-word;}
.prova-depo-aviso-txt>span{display:block;text-wrap:pretty;}
.prova-depo-aviso-txt>span+span{margin-top:.12rem;}
/* CORREÇÃO DE ORDEM (31/07/2026): a regra ">span{display:inline}" lá em cima,
   dentro de @media(max-width:640px), NUNCA vencia no celular. Motivo: como as
   duas regras têm a MESMA especificidade, quem decide é a ordem no arquivo —
   e a regra geral ">span{display:block}" (logo acima) vem DEPOIS dela no
   texto do CSS, então sempre ganhava, mesmo dentro da media query certa. Na
   prática, a quebra forçada depois de "escrito;" nunca tinha sumido do
   celular. Repetindo a mesma regra AQUI, depois da geral, ela passa a valer
   de verdade — sem precisar mexer na regra lá em cima. */
@media(max-width:640px){
  .prova-depo-aviso-txt>span{display:inline;}
  .prova-depo-aviso-txt>span+span{margin-top:0;}
}

#doxa-consent{position:fixed;left:0;right:0;bottom:0;z-index:99999;display:none;
  background:#3E2A45;color:#EDE5EF;box-shadow:0 -6px 24px rgba(0,0,0,.28);
  font-family:'Roboto',system-ui,sans-serif;animation:doxaConsentUp .35s ease both;}
@keyframes doxaConsentUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
#doxa-consent.show{display:block;}
#doxa-consent .dc-in{max-width:1100px;margin:0 auto;padding:1rem 1.25rem;
  display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap;}
#doxa-consent p{flex:1;min-width:260px;margin:0;font-size:.9rem;line-height:1.5;}
#doxa-consent a{color:#D8A94B;text-decoration:underline;}
#doxa-consent .dc-btns{display:flex;gap:.6rem;flex-shrink:0;}
#doxa-consent button{font:inherit;font-weight:600;font-size:.88rem;cursor:pointer;
  border-radius:999px;padding:.6rem 1.4rem;border:1px solid transparent;transition:opacity .2s;}
#doxa-consent button:hover{opacity:.85;}
#doxa-consent .dc-no{background:transparent;color:#EDE5EF;border-color:rgba(237,229,239,.45);}
#doxa-consent .dc-yes{background:#B58B2D;color:#fff;}
@media(max-width:640px){#doxa-consent .dc-in{flex-direction:column;align-items:stretch;padding:1rem;}
  #doxa-consent .dc-btns{justify-content:stretch;}#doxa-consent button{flex:1;}}

/* ===== Monograma Doxa: as tres ordens de coluna + a estrela, ladrilhado =====
   O arquivo /img/site/monograma-doxa.webp ja vem com o dourado atenuado no
   proprio alfa, entao nao precisa de opacity aqui e funciona igual em
   pseudo-elemento e em background de <img>. */
.perfil-hero,
.pro-card-img-home{position:relative;}
.profile-hero-inner::before,
.perfil-hero::before,
.pro-card-img-home::before,
.agenda-pro-photo::before{
  content:'';position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:url('/img/site/monograma-doxa.webp');
  background-repeat:repeat;
}
.profile-hero-inner::before{background-size:300px auto;}
.perfil-hero::before{background-size:260px auto;}
.pro-card-img-home::before,
.agenda-pro-photo::before{background-size:120px auto;}
.profile-hero-inner>*,
.perfil-hero>*,
.pro-card-img-home>*,
.agenda-pro-photo>*{position:relative;z-index:1;}
/* miniaturas que sao <img> e nao aceitam pseudo-elemento */
.prox-foto,
.appt-photo{
  background-image:url('/img/site/monograma-doxa.webp');
  background-repeat:repeat;
  background-size:110px auto;
}

/* ==================== PÁGINA /creditos (rodada 71) ==================== */
.creditos-page{max-width:640px;margin:0 auto;padding:calc(80px + 2.2rem) 5% 3.5rem;}
.creditos-h1{font-family:'Roboto',sans-serif;font-size:2rem;font-weight:700;color:var(--purple-dark);margin-bottom:.4rem;}
.creditos-sub{color:var(--text-mid);margin-bottom:1.6rem;line-height:1.55;}
.creditos-planos{display:flex;flex-direction:column;gap:.7rem;margin-bottom:1.4rem;}
.cred-op{display:flex;align-items:center;gap:.8rem;width:100%;text-align:left;background:var(--white);border:2px solid var(--border);border-radius:16px;padding:.95rem 1.1rem;cursor:pointer;font-family:inherit;transition:border-color .2s, box-shadow .2s;}
.cred-op.sel{border-color:var(--purple-dark);box-shadow:0 6px 20px rgba(62,42,69,.12);}
.cred-op-radio{width:22px;height:22px;border-radius:50%;border:2.5px solid var(--text-light);flex:0 0 auto;position:relative;}
.cred-op.sel .cred-op-radio{border-color:var(--purple-dark);}
.cred-op.sel .cred-op-radio::after{content:'';position:absolute;inset:4px;border-radius:50%;background:var(--purple-dark);}
.cred-op-corpo{min-width:0;}
.cred-op-nome{font-weight:700;color:var(--text-dark);font-size:1.05rem;white-space:nowrap;}
.cred-op-sub{font-size:.8rem;color:var(--text-light);}
.cred-op-valor{margin-left:auto;text-align:right;flex:0 0 auto;}
.cred-op-preco{font-family:'Roboto',sans-serif;font-weight:800;color:var(--purple-dark);font-size:1.15rem;}
.cred-op-por{font-size:.72rem;color:var(--text-light);}
.cred-op-economia{display:inline-block;background:var(--green);color:#fff;border-radius:100px;padding:.1rem .55rem;font-size:.68rem;font-weight:700;margin-top:.2rem;}
.creditos-qtd-row{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.1rem;}
.creditos-qtd-label{color:var(--text-mid);}
.creditos-stepper{display:flex;align-items:center;gap:.55rem;}
.creditos-step{width:44px;height:44px;border-radius:12px;border:1.5px solid var(--border);background:var(--lavender);color:var(--purple);font-size:1.4rem;font-weight:700;cursor:pointer;line-height:1;}
.creditos-qtd-input{width:72px;height:44px;text-align:center;font-family:'Roboto',sans-serif;font-size:1.25rem;font-weight:700;color:var(--text-dark);border:1.5px solid var(--border);border-radius:12px;background:var(--white);}
.creditos-resumo{background:var(--white);border:1.5px solid var(--gold);border-radius:14px;padding:.95rem 1.15rem;margin-bottom:1.15rem;line-height:1.6;color:var(--text-dark);}
.creditos-resumo strong{color:var(--purple-dark);}
.creditos-cta{width:100%;font-size:1.05rem;padding:1rem;}
.creditos-nota{font-size:.82rem;color:var(--text-light);margin-top:.7rem;line-height:1.5;}
.creditos-pay{margin-top:1.8rem;background:var(--white);border:1.5px solid var(--border);border-radius:18px;padding:1.5rem 1.3rem;text-align:center;}
.creditos-pay-tit{font-family:'Roboto',sans-serif;color:var(--purple-dark);font-size:1.3rem;margin-bottom:.3rem;}
.creditos-pay-info{color:var(--text-mid);font-size:.9rem;margin-bottom:.2rem;}
.creditos-pay-valor{font-family:'Roboto',sans-serif;font-size:1.7rem;font-weight:800;color:var(--purple-dark);margin:.3rem 0 .8rem;}
.creditos-pix-qr{margin:0 auto .8rem;display:block;}
.creditos-pix-code{font-family:monospace;font-size:.72rem;word-break:break-all;background:var(--lavender);border-radius:10px;padding:.7rem .8rem;margin-bottom:.8rem;text-align:left;max-height:96px;overflow:auto;}
.creditos-pay-depois{font-size:.82rem;color:var(--text-mid);margin-top:.9rem;line-height:1.55;text-align:left;}
.creditos-box-acoes{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;}
.btn-comprar-creditos{background:none;border:1.5px solid var(--purple);color:var(--purple-dark);border-radius:100px;padding:.7rem 1.3rem;font-weight:700;cursor:pointer;font-family:inherit;}
.appts-empty-creditos{margin-top:1rem;font-size:.86rem;color:var(--text-mid);}
.appts-empty-creditos a{color:var(--purple-dark);font-weight:700;}
@media(max-width:640px){
  .creditos-page{padding:calc(70px + 1.6rem) 5% 2.6rem;}
  .creditos-h1{font-size:1.55rem;}
}


/* ==================== Rodada 73: revisão dos painéis ==================== */
/* Formulário de profissional: UID com botão de busca ao lado */
.pf-uid-row{display:flex;gap:.5rem;align-items:stretch;}
.pf-uid-row .block-input{flex:1;min-width:0;}
.pf-uid-buscar{flex:0 0 auto;background:var(--lavender);border:1.5px solid var(--purple);color:var(--purple-dark);border-radius:12px;padding:.55rem .9rem;font-family:inherit;font-size:.8rem;font-weight:700;cursor:pointer;white-space:nowrap;}
.pf-uid-buscar:hover{background:var(--purple-dark);border-color:var(--purple-dark);color:var(--white);}
.pf-uid-msg{font-size:.8rem;margin-top:.35rem;line-height:1.45;}

/* Cartão da aba Usuários: a grade era estilo inline 1fr 1fr e no celular
   espremia e-mail comprido em meia coluna. Vira classe com colapso. */
.admin-user-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:.8rem;}
.admin-user-grid .valor{font-size:.95rem;color:var(--text-dark);word-break:break-word;}
.admin-user-uid{display:flex;align-items:center;gap:.45rem;min-width:0;}
.admin-user-uid code{font-size:.78rem;color:var(--text-mid);background:var(--lavender);border-radius:8px;padding:.18rem .5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.btn-copiar-uid{flex:0 0 auto;background:none;border:1.2px solid var(--border);border-radius:8px;padding:.2rem .55rem;font-size:.72rem;color:var(--purple-dark);cursor:pointer;font-family:inherit;font-weight:700;}
.btn-copiar-uid:hover{border-color:var(--purple);}
.badge-terapeuta{display:inline-block;background:var(--purple-dark);color:var(--white);border-radius:100px;padding:.14rem .6rem;font-size:.68rem;font-weight:800;letter-spacing:.03em;vertical-align:middle;margin-left:.45rem;}
@media(max-width:640px){
  .admin-user-grid{grid-template-columns:1fr;gap:.7rem;}
  /* Botões de manutenção: com nowrap, os textos longos ("Tirar os e-mails
     dos profissionais...") estouravam a tela de 360px. */
  .admin-maint-btn{white-space:normal;text-align:left;border-radius:18px;line-height:1.35;}
  /* Formulário do profissional: no celular o botão de buscar UID desce
     para a linha de baixo em largura cheia, senão o campo fica um fiapo. */
  .pf-uid-row{flex-direction:column;}
  .pf-uid-buscar{width:100%;padding:.7rem;}
}


/* ==================== Rodada 74: aba Documentos do terapeuta ==================== */
.tdoc-grupo{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-light);margin:1.3rem 0 .55rem;}
.tdoc-grupo:first-of-type{margin-top:0;}
.tdoc-lista{display:flex;flex-direction:column;gap:.6rem;}
.tdoc-item{display:flex;align-items:center;gap:.85rem;background:var(--white);border:1.5px solid var(--border);border-radius:14px;padding:.9rem 1.05rem;text-decoration:none;transition:border-color .15s, box-shadow .15s;}
.tdoc-item:hover{border-color:var(--purple);box-shadow:0 4px 14px rgba(62,42,69,.08);}
.tdoc-ico{font-size:1.25rem;flex:0 0 auto;}
.tdoc-corpo{min-width:0;display:block;}
.tdoc-nome{display:block;font-weight:700;color:var(--purple-dark);font-size:.95rem;}
.tdoc-desc{display:block;font-size:.8rem;color:var(--text-mid);line-height:1.45;margin-top:.15rem;}
.tdoc-baixar{margin-left:auto;flex:0 0 auto;background:var(--lavender);color:var(--purple-dark);border:1.5px solid var(--purple);border-radius:100px;padding:.45rem 1rem;font-size:.78rem;font-weight:700;white-space:nowrap;}
.tdoc-item:hover .tdoc-baixar{background:var(--purple-dark);border-color:var(--purple-dark);color:var(--white);}
@media(max-width:640px){
  .tdoc-item{flex-wrap:wrap;padding:.85rem .95rem;}
  .tdoc-corpo{flex:1 1 calc(100% - 2.2rem);}
  .tdoc-baixar{margin-left:2.2rem;}
}


/* ==================== Rodada 77: documentos assinados na plataforma ==================== */
.docas-form{background:var(--white);border-radius:14px;padding:1.2rem 1.3rem;box-shadow:0 2px 8px rgba(107,79,160,.08);}
.docas-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;}
@media(max-width:640px){.docas-grid{grid-template-columns:1fr;}}
.docas-card{border:1.5px solid var(--border);border-radius:14px;padding:.95rem 1.05rem;margin-bottom:.7rem;background:var(--white);display:flex;gap:.9rem;align-items:center;flex-wrap:wrap;}
.docas-card-corpo{min-width:0;flex:1;}
.docas-card-tit{font-weight:700;color:var(--purple-dark);}
.docas-card-sub{font-size:.8rem;color:var(--text-mid);margin-top:.15rem;line-height:1.45;}
.docas-status{border-radius:100px;padding:.2rem .7rem;font-size:.72rem;font-weight:800;white-space:nowrap;}
.docas-status.aguardando{background:#FFF3D6;color:#7A5A1A;}
.docas-status.assinado{background:#E3F4E6;color:#1b5e20;}
.docs-paciente-box{background:var(--white);border:1.5px solid var(--gold);border-radius:18px;padding:1.4rem 1.5rem;margin-bottom:1.35rem;}
.doc-modal{max-width:680px;position:relative;max-height:88vh;overflow-y:auto;}
.doc-modal-titulo{color:var(--purple-dark);font-family:'Roboto',sans-serif;margin-bottom:.2rem;padding-right:2rem;}
.doc-modal-sub{font-size:.82rem;color:var(--text-mid);margin-bottom:1rem;}
.doc-modal-texto{border:1px solid var(--border);border-radius:12px;padding:1rem 1.1rem;background:var(--lavender);max-height:44vh;overflow-y:auto;font-size:.9rem;line-height:1.6;color:var(--text-dark);}
.doc-modal-texto p{margin-bottom:.75rem;}
.doc-modal-texto p:last-child{margin-bottom:0;}
.doc-modal-assinaturas{margin:.9rem 0;font-size:.82rem;line-height:1.55;color:var(--text-dark);}
.doc-modal-assinaturas .ass-linha{padding:.5rem .7rem;border-left:3px solid var(--purple);background:rgba(97,68,104,.05);border-radius:0 8px 8px 0;margin-bottom:.45rem;}
.doc-assinar-nome-label{display:block;font-size:.8rem;font-weight:700;color:var(--text-mid);margin:.6rem 0 .3rem;}
.doc-assinar-check{display:flex;gap:.55rem;align-items:flex-start;font-size:.85rem;color:var(--text-dark);margin-top:.7rem;line-height:1.5;cursor:pointer;}
.doc-assinar-check input{margin-top:.2rem;width:18px;height:18px;flex:0 0 auto;}
.doc-assinar-aviso{font-size:.76rem;color:var(--text-light);margin-top:.55rem;line-height:1.5;}
.doc-modal-rodape{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;margin-top:.9rem;}
.doc-msg{font-size:.82rem;}
#doc-print-area{display:none;}
@media print{
  body > *{display:none !important;}
  #doc-print-area{display:block !important;font-family:Georgia,'Times New Roman',serif;color:#000;font-size:12pt;line-height:1.6;}
  #doc-print-area h1{font-size:16pt;margin-bottom:2pt;}
  #doc-print-area .pr-marca{font-size:9pt;color:#555;margin-bottom:18pt;}
  #doc-print-area p{margin-bottom:9pt;}
  #doc-print-area .pr-ass{margin-top:22pt;border-top:1px solid #999;padding-top:10pt;font-size:10pt;}
}

/* ==================== Rodada 86: esconder perfil no admin ==================== */
.pf-ocultar-linha{display:flex;gap:.65rem;align-items:flex-start;background:var(--lavender);border-radius:12px;padding:.85rem 1rem;cursor:pointer;line-height:1.5;font-size:.88rem;color:var(--text-dark);}
.pf-ocultar-linha input{width:20px;height:20px;flex:0 0 auto;margin-top:.15rem;}
.pf-ocultar-ajuda{font-size:.78rem;color:var(--text-mid);display:block;margin-top:.25rem;}
.pf-selo-oculto{display:inline-block;background:var(--text-light);color:var(--white);border-radius:100px;padding:.1rem .55rem;font-size:.68rem;font-weight:800;margin-left:.5rem;vertical-align:middle;letter-spacing:.02em;}


/* ==================== Rodada 88: aba Todos por psicólogo ==================== */
.admin-todos-controles{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;margin-bottom:1rem;}
.admin-todos-titulo{font-weight:800;color:var(--purple-dark);font-size:1.05rem;margin:-.2rem 0 1rem;}
.admin-profs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.8rem;margin-bottom:1rem;}
.admin-prof-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;background:var(--white);border:1.5px solid var(--border);border-radius:16px;padding:1.1rem .8rem;cursor:pointer;transition:border-color .15s, box-shadow .15s, transform .15s;font-family:inherit;text-align:center;}
.admin-prof-card:hover{border-color:var(--purple);box-shadow:0 6px 18px rgba(62,42,69,.10);transform:translateY(-2px);}
.admin-prof-card img{width:72px;height:72px;border-radius:50%;object-fit:cover;object-position:center top;background:var(--purple);}
.admin-prof-sem-foto{width:72px;height:72px;border-radius:50%;background:var(--lavender);display:flex;align-items:center;justify-content:center;font-size:1.8rem;}
.admin-prof-nome{font-weight:700;color:var(--text-dark);font-size:.88rem;line-height:1.3;}
.admin-prof-nome .pf-selo-oculto{margin-left:.35rem;}
.admin-prof-qtd{font-size:.76rem;font-weight:700;color:var(--purple-dark);background:var(--lavender);border-radius:100px;padding:.25rem .7rem;}
.admin-prof-card.sem-movimento{opacity:.55;}
.admin-prof-card.sem-movimento .admin-prof-qtd{background:var(--bg);color:var(--text-mid);}
@media(max-width:640px){
  .admin-profs-grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:.6rem;}
  .admin-prof-card img,.admin-prof-sem-foto{width:60px;height:60px;}
}


/* ==================== Rodada 90: app instalável ==================== */
.doxa-app-convite{position:fixed;left:1rem;right:1rem;bottom:1rem;z-index:1200;background:var(--white);border:1.5px solid var(--purple);border-radius:18px;padding:1rem 1.1rem;box-shadow:0 12px 34px rgba(20,10,40,.22);display:none;flex-direction:column;gap:.8rem;max-width:440px;margin:0 auto;}
.app-convite-corpo{display:flex;gap:.9rem;align-items:flex-start;}
.app-convite-corpo img{border-radius:12px;flex:0 0 auto;}
.app-convite-tit{font-weight:800;color:var(--purple-dark);font-size:.95rem;margin:0 0 .15rem;}
.app-convite-txt{font-size:.82rem;color:var(--text-mid);line-height:1.45;margin:0;}
.app-convite-acoes{display:flex;gap:.6rem;justify-content:flex-end;}
.app-convite-acoes .btn-green{padding:.55rem 1.3rem;font-size:.85rem;}
.doxa-app-atualizar{position:fixed;left:50%;transform:translateX(-50%);bottom:1rem;z-index:1250;background:var(--purple-dark);color:var(--white);border-radius:100px;padding:.6rem .7rem .6rem 1.2rem;display:none;align-items:center;gap:.8rem;font-size:.85rem;box-shadow:0 10px 28px rgba(20,10,40,.3);}
.doxa-app-atualizar .btn-green{padding:.4rem 1rem;font-size:.8rem;}
@media(max-width:480px){
  .doxa-app-convite{left:.7rem;right:.7rem;bottom:.7rem;padding:.9rem 1rem;}
  .app-convite-acoes .btn-refresh,.app-convite-acoes .btn-green{flex:1;text-align:center;justify-content:center;}
}
