/*
 * Páginas Conecta — tokens de design (Figma: amarelo, Syne/Poppins, cards arredondados).
 * Toda tela do frontend consome var(--pc-*) daqui; nunca hardcode cor/fonte no CSS de tela.
 */

:root {
    /* Cores */
    --pc-amarelo: #FCBD0B;
    --pc-grafite: #2B2B2B;
    --pc-cinza-900: #1A1A1A;
    --pc-cinza-700: #4D4D4D;
    --pc-cinza-500: #808080;
    --pc-cinza-300: #B3B3B3;
    --pc-cinza-100: #E6E6E6;
    --pc-cinza-claro: #F5F5F5;
    --pc-branco: #FFFFFF;
    --pc-verde: #2E7D32;
    --pc-vermelho: #C62828;
    /* Figma "Colors/Red" — botões de ação destrutiva sobre card (excluir/denunciar);
       distinto de --pc-vermelho, que é o vermelho de texto/estado do sistema. */
    --pc-vermelho-acao: #FF3B30;
    /* Acentos do Figma que não são o verde/laranja de estado do sistema:
       verde da pill de trial e do check de benefícios, laranja do selo de segurança. */
    --pc-verde-destaque: #34C759;
    --pc-verde-destaque-24: rgba(52, 199, 89, 0.24);
    --pc-verde-check: #00C950;
    --pc-laranja-selo: #F75E34;
    --pc-verde-claro: #DFF5E1;
    --pc-vermelho-claro: #FBE4E4;
    --pc-amarelo-claro: #FCE9B0;
    --pc-amarelo-12: rgba(252, 189, 11, 0.12);
    /* Roxo da marca Vime — só o hover do crédito no rodapé. */
    --pc-roxo-vime: #5C13E6;
    --pc-overlay: rgba(26, 26, 26, 0.55);
    --pc-branco-24: rgba(255, 255, 255, 0.24);
    --pc-cinza-100-60: rgba(230, 230, 230, 0.6);
    --pc-sombra-toast: rgba(26, 26, 26, 0.18);

    /* Estados dos botões — cada variante reage na PRÓPRIA cor, e não sob um véu
       escuro comum: 8% de preto sobre o amarelo saturado quase não muda o pixel,
       e o pouco que muda lê como sujeira. É a mesma razão pela qual a bottom nav
       (amarela) clareia em vez de escurecer.
       Amarelo e vermelho escurecem; grafite e cinza clareiam — escurecer #2B2B2B
       vira quase preto e o estado desaparece. */
    --pc-amarelo-hover: #E3A906;
    --pc-amarelo-active: #C99405;
    --pc-grafite-hover: #3D3D3D;
    --pc-grafite-active: #4A4A4A;
    --pc-vermelho-hover: #B02222;
    --pc-vermelho-active: #991E1E;
    --pc-cinza-500-hover: #8D8D8D;
    --pc-cinza-500-active: #6E6E6E;

    /* Tipografia */
    --pc-fonte-titulo: 'Syne', sans-serif;
    --pc-fonte-corpo: 'Poppins', sans-serif;
    --pc-tamanho-h2: 24px;
    --pc-tamanho-h3: 20px;

    /* Forma */
    --pc-radius-card: 16px;
    --pc-radius-capa: 12px;
    --pc-radius-pill: 999px;
    --pc-sombra-card: 0 2px 12px rgba(26, 26, 26, 0.08);
    --pc-foco-anel: 0 0 0 3px rgba(252, 189, 11, 0.45);

    /* Dobra do dog-ear — path exato do Figma (node 124814:2452), usado como mask
       para preservar o canto inferior-esquerdo arredondado. */
    --pc-dobra-forma: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 62' preserveAspectRatio='none'%3E%3Cpath d='M0 0C2.85123 0 3.80098 0 7.62884 3.55004C25.8383 21.6485 37.1586 32.7087 58.8137 53.8235C62.7192 57.632 63.7147 58.8737 63.7147 61.8672C60.7281 61.8672 24.3619 61.8672 24.3619 61.8672C11.3143 61.8672 0.738697 51.0633 0.738697 37.736C0.738697 37.736 0 8.98073 0 0Z' fill='%23000'/%3E%3C/svg%3E");
}

* {
    box-sizing: border-box;
}

body {
    background: var(--pc-cinza-claro);
    color: var(--pc-grafite);
    font-family: var(--pc-fonte-corpo);
    margin: 0;
}

::selection {
    background: var(--pc-amarelo-claro);
    color: var(--pc-cinza-900);
}

/* Foco: só no teclado (:focus-visible) e desenhado com box-shadow, que acompanha
   o border-radius do elemento — botão redondo ganha anel redondo, pill ganha pill.
   O outline padrão do navegador é sempre um retângulo e por isso sai de cena. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus {
    outline: none;
}

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
    outline: none;
    /* --pc-sombra-propria: quem ja tem sombra (pill branca, FAB) redeclara o
       token no seu escopo para nao perde-la ao focar. */
    box-shadow: var(--pc-foco-anel), var(--pc-sombra-propria, 0 0 #0000);
}

/* Rotulo de acao nao e texto para copiar: sem ele, clicar/arrastar sobre uma aba
   ou botao pinta o realce azul de selecao do navegador dentro da pill.
   O -webkit-tap-highlight tira o flash cinza do toque no mobile. */
:where(a, button, summary, label, [role="tab"], [role="button"], [role="link"]) {
    -webkit-tap-highlight-color: transparent;
}

/* user-select fica so nos rotulos de acao: em <a> de conteudo (card, link de
   texto) selecionar continua valendo. */
:where(
    button,
    summary,
    [role="tab"],
    [role="button"],
    .pc-botao,
    .pc-btn-pill,
    .pc-bottom-nav__link,
    .pc-chip,
    .pc-perfil__item,
    .pc-paginacao__item,
    .pc-cf-abas__item,
    .pc-card-servico__cta,
    .pc-servico__editar-pill,
    .pc-servico__acao-flutuante,
    .pc-card-favorito__coracao,
    .pc-avaliacao__acao
) {
    -webkit-user-select: none;
    user-select: none;
}

/* ------------------------------------------------------------------ */
/* Estados de interação dos clicáveis (hover / active).                */
/* Um véu de brilho por cima da propria superficie, em vez de trocar a  */
/* cor: uma regra só serve a chip, aba, paginação e afins, que são      */
/* superficies claras onde o veu aparece. Input fica de fora — campo    */
/* nao e acao, o feedback dele e o foco.                                */
/* .pc-botao NAO entra aqui: sobre amarelo/grafite/vermelho o veu de 8% */
/* nao muda o pixel o bastante para ser visto. As 5 variantes reagem na */
/* propria cor, em pc-components.css.                                   */
/* ------------------------------------------------------------------ */
:root {
    --pc-hover-veu: rgba(26, 26, 26, 0.08);
    --pc-active-veu: rgba(26, 26, 26, 0.16);
}

:where(
    .pc-chip,
    .pc-cf-abas__item,
    .pc-paginacao__item,
    .pc-perfil__item,
    .pc-card-favorito__coracao,
    .pc-servico__acao-flutuante,
    .pc-avaliacao__acao,
    .pc-busca__local-texto
) {
    transition: box-shadow 0.18s ease, transform 0.18s ease, filter 0.18s ease;
}

@media (hover: hover) {
    :where(
        .pc-chip,
        .pc-cf-abas__item,
        .pc-paginacao__item,
        .pc-perfil__item,
        .pc-card-favorito__coracao,
        .pc-servico__acao-flutuante,
        .pc-avaliacao__acao,
        .pc-busca__local-texto
    ):hover:not(:disabled) {
        box-shadow: inset 0 0 0 999px var(--pc-hover-veu), var(--pc-sombra-propria, 0 0 #0000);
    }
}

/* Pressionado: veu mais forte + o item afunda 1px. Vale no toque tambem,
   porque e o unico retorno tatil que o mobile tem. */
:where(
    .pc-chip,
    .pc-cf-abas__item,
    .pc-paginacao__item,
    .pc-perfil__item,
    .pc-card-favorito__coracao,
    .pc-servico__acao-flutuante,
    .pc-avaliacao__acao,
    .pc-busca__local-texto
):active:not(:disabled) {
    box-shadow: inset 0 0 0 999px var(--pc-active-veu), var(--pc-sombra-propria, 0 0 #0000);
    transform: translateY(1px);
}

/* Cards que sao o link inteiro (<a>): sem veu — a superficie e conteudo, nao um
   controle. So a elevacao, que ja diz "isto vai a algum lugar".
   .pc-card-favorito e .pc-notificacao ficam de fora de proposito: sao <div>, o
   clicavel deles e o botao interno. */
@media (hover: hover) {
    :where(.pc-card-servico, .pc-cat-card):hover {
        transform: translateY(-2px);
    }
}

:where(.pc-card-servico, .pc-cat-card) {
    transition: transform 0.18s ease;
}

@media (prefers-reduced-motion: reduce) {
    :where(.pc-botao, .pc-chip, .pc-card-servico, .pc-cat-card) {
        transition: none;
        transform: none;
    }
}

h1, h2, h3 {
    font-family: var(--pc-fonte-titulo);
    font-weight: 600;
}

h2 {
    font-size: var(--pc-tamanho-h2);
}

h3 {
    font-size: var(--pc-tamanho-h3);
}

/* Largura do shell. O mock do Figma é uma tela de 375px com respiro de 20,5px
   de cada lado (a bottom nav fica em x=20,5 com 334 de largura) => o conteúdo
   ocupa ~89% da tela. A régua aqui é essa RAZÃO, não os 375px literais: o
   shell acompanha a janela até --pc-largura-shell e o conteúdo fica sempre em
   ~89% dela, como no desenho.
   O respiro é proporcional (5,5% de cada lado) com piso de 16px, para não
   virar um fio de cabelo em telas pequenas.
   content-box para o padding NÃO descontar da largura (com o border-box
   global, o padding comia o miolo — era o aspecto "magro" das telas). */
:root {
    /* Teto do shell mobile-first. Acima disso o app continua centrado, mas
       não faz sentido esticar um layout de celular indefinidamente. */
    /* O shell acompanha a janela. O teto de 560px valia para o corpo das telas,
       mas era ele que segurava a coluna estreita enquanto a bottom nav — que usa
       100vw como referencia — enchia a largura: o form ficava magro e a barra
       larga na MESMA tela. Agora os dois partem da mesma base. */
    --pc-largura-shell: min(100vw, 760px);
    /* Razao exata do Figma: shell 375 com conteudo 335 => respiro de 20px por lado
       = 5,333%, e o miolo fica em 89,33% do shell. Teto de 24px para o respiro nao
       virar uma faixa larga quando a janela cresce. */
    --pc-respiro-lateral: clamp(16px, calc(var(--pc-largura-shell) * 0.05333), 24px);
    --pc-largura-conteudo: calc(var(--pc-largura-shell) - var(--pc-respiro-lateral) * 2);
    /* Respiro interno de blocos de largura cheia (hero, CTA, cards de destaque). */
    --pc-hero-respiro: clamp(16px, calc(var(--pc-largura-conteudo) * 0.06), 28px);
}

/* border-box + width no shell inteiro: o padding é o próprio respiro lateral,
   então o miolo resultante é exatamente --pc-largura-conteudo (~89%). */
.pc-container {
    box-sizing: border-box;
    width: var(--pc-largura-shell);
    max-width: 100%;
    margin-inline: auto;
    padding-inline: var(--pc-respiro-lateral);
}

/* O respiro lateral vale uma vez por tela: quem aplica e o .pc-container mais
   externo (<main> do tema). Elementor e o .pc-container aninhado ficam neutros. */
.elementor-element.e-con:has(.pc-container),
.elementor-element.e-con-boxed:has(.pc-container),
.elementor-widget-shortcode:has(.pc-container) {
    --content-width: 100%;
    --container-max-width: 100%;
    --padding-left: 0px;
    --padding-right: 0px;
    --padding-inline-start: 0px;
    --padding-inline-end: 0px;
    --padding-top: 0px;
    --padding-bottom: 0px;
    --padding-block-start: 0px;
    --padding-block-end: 0px;
    padding-inline: 0;
    padding-block: 0;
}

.elementor-element.e-con:has(.pc-container) > .e-con-inner {
    max-width: 100%;
    width: 100%;
    padding-inline: 0;
    padding-block: 0;
}

.pc-container .pc-container,
.elementor .elementor-shortcode > .pc-container,
.elementor .elementor-widget-shortcode .pc-container {
    width: 100%;
    max-width: 100%;
    padding-inline: 0;
}

.pc-card {
    background: var(--pc-branco);
    border-radius: var(--pc-radius-card);
    box-shadow: var(--pc-sombra-card);
}

.pc-btn-pill {
    border-radius: var(--pc-radius-pill);
    font-family: var(--pc-fonte-corpo);
    font-weight: 600;
    border: none;
    cursor: pointer;
}
