/* =========================================================
   Modelo 01 — linhagem "ce-" (tema de origem: Contábil Elite / Âncora)

   O que pinta acima da dobra não está aqui: está no partial `critical-css`,
   embutido no <head>. Esta folha carrega sem bloquear e completa o resto.

   Nenhuma cor literal escura ou dourada sobrou solta: tudo deriva dos tokens
   que o partial `tokens` escreve no :root a partir do banco. É isso que
   permite dois clientes deste modelo com paletas diferentes sem fork.
   ========================================================= */

/* ----- Tipografia auxiliar ----- */
.ce-h2 { font-family: var(--ce-font-display); font-optical-sizing: auto; font-weight: 560; font-size: clamp(1.75rem, 3vw, 2.5rem); letter-spacing: -.015em; margin-bottom: .4em; }
.ce-eyebrow { display: inline-block; font-size: .85rem; font-weight: 600; text-transform: uppercase; letter-spacing: .12em; color: var(--ce-brand-on-light); margin-bottom: 14px; }

/* ----- Menu ----- */
.ce-menu { display: flex; gap: 24px; align-items: center; }
.ce-menu li { position: relative; }
.ce-menu > li > a { color: var(--ce-text); font-weight: 500; font-size: .95rem; padding: 6px 0; position: relative; display: inline-block; }
.ce-menu > li > a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px; background: var(--ce-brand-on-light); border-radius: 2px; transform: scaleX(0); transform-origin: center; transition: transform .25s var(--ce-ease); }
.ce-menu > li > a:hover { color: var(--ce-brand-on-light); }
.ce-menu > li > a:hover::after,
.ce-menu > li.is-current > a::after { transform: scaleX(1); }
.ce-menu .is-current > a { color: var(--ce-brand-on-light); }

/*
   Submenu. O tema de origem o abria por :hover com um "hover bridge" — a
   faixa invisível que impede o menu de fechar enquanto o ponteiro atravessa
   o vão entre o item e o painel.
*/
.ce-menu li.has-children > a { display: inline-flex; align-items: center; gap: 6px; }
.ce-menu li.has-children > a::before { content: ""; width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translate(-1px, -2px); transition: transform .25s var(--ce-ease); opacity: .7; order: 2; margin-left: 4px; }
.ce-menu li.has-children:hover > a::before,
.ce-menu li.has-children:focus-within > a::before { transform: rotate(-135deg) translate(-1px, 1px); opacity: 1; }

.ce-menu .ce-submenu { position: absolute; top: calc(100% + 14px); left: 50%; transform: translateX(-50%) translateY(8px); background: var(--ce-bg); box-shadow: 0 20px 50px -10px rgba(15, 23, 42, .18), 0 0 0 1px rgba(15, 23, 42, .05); border-radius: 14px; padding: 8px; min-width: 240px; display: flex; flex-direction: column; gap: 2px; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .22s var(--ce-ease), transform .22s var(--ce-ease), visibility .22s; z-index: 50; list-style: none; margin: 0; }
.ce-menu .ce-submenu::before { content: ""; position: absolute; left: 0; right: 0; top: -14px; height: 14px; }
.ce-menu .ce-submenu::after { content: ""; position: absolute; top: -5px; left: 50%; transform: translateX(-50%) rotate(45deg); width: 10px; height: 10px; background: var(--ce-bg); border-top: 1px solid rgba(15, 23, 42, .05); border-left: 1px solid rgba(15, 23, 42, .05); }
.ce-menu li.has-children:hover > .ce-submenu,
.ce-menu li.has-children:focus-within > .ce-submenu { opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.ce-menu .ce-submenu li { position: relative; }
.ce-menu .ce-submenu a { padding: 10px 14px; border-radius: 10px; display: block; color: var(--ce-text); font-size: .92rem; font-weight: 500; line-height: 1.35; border: 0; transition: background .18s var(--ce-ease), color .18s var(--ce-ease), padding-left .18s var(--ce-ease); }
.ce-menu .ce-submenu a:hover,
.ce-menu .ce-submenu a:focus { background: var(--ce-bg-alt); color: var(--ce-brand-on-light); padding-left: 18px; }
.ce-menu .ce-submenu a::after { display: none; }
.ce-menu .ce-submenu .is-current > a { background: var(--ce-bg-alt); color: var(--ce-brand-on-light); }

.ce-header__toggle { display: none; width: 40px; height: 40px; flex-direction: column; justify-content: center; align-items: center; gap: 5px; border-radius: 8px; }
.ce-header__toggle span { width: 22px; height: 2px; background: var(--ce-text); transition: transform .25s var(--ce-ease), opacity .25s var(--ce-ease); }
.ce-header__toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.ce-header__toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.ce-header__toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 900px) {
    .ce-header__inner { display: flex; justify-content: space-between; }
    .ce-header__toggle { display: flex; }
    .ce-header__nav { position: absolute; top: 100%; left: 0; right: 0; width: auto; justify-self: stretch; max-height: calc(100vh - 72px); overflow-y: auto; -webkit-overflow-scrolling: touch; background: var(--ce-bg); flex-direction: column; align-items: stretch; gap: 0; padding: 16px 24px 24px; box-shadow: var(--ce-shadow); transform: translateY(-10px); opacity: 0; pointer-events: none; transition: opacity .25s var(--ce-ease), transform .25s var(--ce-ease); }
    .ce-header__nav.is-open { transform: translateY(0); opacity: 1; pointer-events: auto; }
    .ce-menu { flex-direction: column; gap: 6px; align-items: stretch; }
    .ce-menu a { display: block; padding: 12px 6px; border-bottom: 1px solid var(--ce-border); }
    .ce-menu > li > a::after { display: none; }
    .ce-header__cta--desktop { display: none; }
    .ce-header__cta--mobile { display: inline-flex; margin-top: 14px; align-self: stretch; }
    .ce-menu li.has-children > a { justify-content: space-between; width: 100%; }
    .ce-menu li.has-children > a::before { margin-left: auto; }

    /*
       No toque, o item-pai recebe foco e dispara o :hover/:focus-within que
       vale no desktop — o que empurrava o submenu para fora da tela pelo
       translateX. Aqui isso é anulado: quem manda é a classe .is-expanded.
    */
    .ce-menu li.has-children:hover > .ce-submenu,
    .ce-menu li.has-children:focus-within > .ce-submenu { transform: none; }
    .ce-menu li.has-children:hover > a::before,
    .ce-menu li.has-children:focus-within > a::before { transform: rotate(45deg) translate(-1px, -2px); opacity: .7; }
    .ce-menu .ce-submenu { position: static; transform: none; opacity: 1; visibility: visible; pointer-events: auto; display: none; box-shadow: none; background: var(--ce-bg-alt); padding: 6px; margin: 6px 0 10px; border-radius: 10px; min-width: 0; border-left: 3px solid var(--ce-brand-on-light); }
    .ce-menu li.has-children.is-expanded > .ce-submenu { display: flex; }
    .ce-menu li.has-children.is-expanded > a::before { transform: rotate(-135deg) translate(-1px, 1px); opacity: 1; }
    .ce-menu .ce-submenu::before,
    .ce-menu .ce-submenu::after { display: none; }
    .ce-menu .ce-submenu a { padding: 10px 12px; border-bottom: 0; font-size: .9rem; }
    .ce-menu .ce-submenu a:hover { background: var(--ce-bg); padding-left: 16px; }

    /*
       O painel do menu tem fundo claro, então os links NÃO podem herdar o
       branco que o header usa quando está transparente sobre o hero escuro —
       herdariam texto invisível sobre branco.
    */
    body.ce-top-dark .ce-header:not(.is-scrolled) .ce-header__nav .ce-menu > li > a { color: var(--ce-text); }
    body.ce-top-dark .ce-header:not(.is-scrolled) .ce-header__nav .ce-menu > li > a:hover,
    body.ce-top-dark .ce-header:not(.is-scrolled) .ce-header__nav .ce-menu > li.is-current > a { color: var(--ce-brand-on-light); }
    body.ce-top-dark .ce-header:not(.is-scrolled) .ce-header__nav .ce-menu .ce-submenu a { color: var(--ce-text); }
    body.ce-top-dark .ce-header:not(.is-scrolled) .ce-header__nav .ce-menu .ce-submenu a:hover,
    body.ce-top-dark .ce-header:not(.is-scrolled) .ce-header__nav .ce-menu .ce-submenu .is-current > a { color: var(--ce-brand-on-light); }
}

/* ----- Hero: texto à esquerda, foto à direita ----- */
.ce-hero__trust { display: flex; flex-wrap: wrap; gap: 10px 24px; margin: 34px 0 0; padding: 0; list-style: none; }
.ce-hero__trust li { display: inline-flex; align-items: center; gap: 8px; color: rgba(255, 255, 255, .78); font-size: .9rem; font-weight: 500; }
.ce-hero__trust li svg { width: 15px; height: 15px; flex: none; color: var(--ce-brand-on-dark); }
/* Com símbolo escolhido, é ele que marca cada linha da lista e o chapéu do
   hero — o mesmo desenho do banner das internas, na cor de realce. */
.ce-com-simbolo .ce-hero__trust li::before,
.ce-com-simbolo .ce-hero__eyebrow::before { content: ""; flex: none; width: 15px; height: 15px; background: var(--ce-brand-on-dark); -webkit-mask: var(--ce-symbol) center / contain no-repeat; mask: var(--ce-symbol) center / contain no-repeat; }
.ce-com-simbolo .ce-hero__eyebrow::before { width: 17px; height: 17px; }
.ce-hero__media { margin: 0 auto; width: 100%; max-width: 420px; }
.ce-hero__frame { position: relative; }
/* A moldura deslocada: um fio da cor de realce, deslocado na diagonal. */
.ce-hero__frame::before { content: ""; position: absolute; inset: 0; transform: translate(16px, 16px); border: 1px solid var(--ce-brand-line); border-radius: 22px; pointer-events: none; }
.ce-hero__photo { position: relative; display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 28%; border-radius: 22px; box-shadow: 0 40px 70px -30px rgba(0, 0, 0, .7); background: rgba(255, 255, 255, .06); }
/* A marca-d'água do símbolo do cliente, quando ele escolheu um. O traço é o
   fino: o do ícone, ampliado a 540px, sairia com o dobro da espessura. */
.ce-hero__mark { position: absolute; z-index: 0; left: -70px; bottom: -90px; width: min(48vw, 540px); height: min(48vw, 540px); opacity: .05; pointer-events: none; background: var(--ce-brand); -webkit-mask: var(--ce-symbol-mark) center / contain no-repeat; mask: var(--ce-symbol-mark) center / contain no-repeat; }
.ce-hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--ce-brand-line-strong), transparent); z-index: 1; }

@media (min-width: 900px) {
    .ce-hero__inner { grid-template-columns: 1.08fr .92fr; gap: 60px; padding: calc(var(--ce-header-h) + 58px) var(--ce-gutter) 96px; }
    .ce-hero__media { max-width: 470px; margin-right: 0; }
    .ce-hero__mark { left: auto; right: 36%; bottom: -130px; opacity: .045; }
}

/* ----- Seções ----- */
.ce-section { padding: 90px 0; }
.ce-section--light { background: var(--ce-bg); }
.ce-section--alt { background: var(--ce-bg-alt); }
.ce-section--logos { background: var(--ce-bg-alt); padding: 60px 0; }
.ce-section--cta { padding: 60px 0; }

.ce-section__head { margin-bottom: 50px; max-width: 680px; }
.ce-section__head--center { text-align: center; margin-left: auto; margin-right: auto; }
.ce-section__subtitle { color: var(--ce-text-soft); font-size: 1.05rem; margin: 0; }
.ce-section__foot { margin-top: 48px; text-align: center; }

/* ----- Grade ----- */
.ce-grid { display: grid; gap: 48px; align-items: center; }
.ce-grid--2 { grid-template-columns: 1fr; }
@media (min-width: 880px) { .ce-grid--2 { grid-template-columns: 1fr 1fr; } }
.ce-about__aside { display: grid; gap: 28px; }
.ce-image-card { border-radius: var(--ce-radius-lg); overflow: hidden; box-shadow: var(--ce-shadow); margin: 0; aspect-ratio: 4 / 3; }
.ce-image-card img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ----- Cartões ----- */
.ce-cards { display: grid; gap: 24px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.ce-card { background: var(--ce-bg); border: 1px solid var(--ce-border); border-radius: var(--ce-radius); padding: 32px; transition: transform .25s var(--ce-ease), box-shadow .25s var(--ce-ease), border-color .25s var(--ce-ease); display: flex; flex-direction: column; color: inherit; }
.ce-card:hover { transform: translateY(-4px); box-shadow: var(--ce-shadow); border-color: transparent; color: inherit; }
a.ce-card { text-decoration: none; }
.ce-card__icon { width: 56px; height: 56px; display: inline-flex; align-items: center; justify-content: center; border-radius: 15px; margin-bottom: 20px; color: var(--ce-primary); background: linear-gradient(140deg, var(--ce-brand-tint-strong), var(--ce-brand-tint)); border: 1px solid var(--ce-brand-line); transition: background .25s var(--ce-ease), border-color .25s var(--ce-ease), transform .25s var(--ce-ease); }
.ce-card__icon svg { width: 26px; height: 26px; display: block; }
a.ce-card:hover .ce-card__icon { background: linear-gradient(140deg, var(--ce-brand-tint-strongest), var(--ce-brand-tint-strong)); border-color: var(--ce-brand-line-strong); transform: translateY(-2px); }
.ce-card__title { font-size: 1.15rem; margin-bottom: 8px; color: var(--ce-text); }
.ce-card__desc { color: var(--ce-text-soft); margin: 0 0 14px; font-size: .95rem; flex: 1; }
.ce-card__desc > *:first-child { margin-top: 0; }
.ce-card__desc > *:last-child { margin-bottom: 0; }
.ce-card__desc p { margin: 0 0 .6em; }
.ce-card__desc ul, .ce-card__desc ol { margin: 0 0 .6em; padding-left: 1.25em; }
.ce-card__more { display: inline-block; font-size: .9rem; font-weight: 600; color: var(--ce-brand-on-light); transition: transform .2s var(--ce-ease); }
.ce-card:hover .ce-card__more { transform: translateX(3px); }

/* ----- Depoimentos ----- */
.ce-testimonial { background: var(--ce-bg); border: 1px solid var(--ce-border); border-radius: var(--ce-radius); padding: 28px; margin: 0; height: 100%; display: flex; flex-direction: column; justify-content: space-between; gap: 18px; }
.ce-testimonial p { font-size: 1rem; color: var(--ce-text); margin: 0; }
.ce-testimonial footer { display: flex; flex-direction: column; }
.ce-testimonial strong { color: var(--ce-text); font-size: 1rem; }
.ce-testimonial span { color: var(--ce-text-soft); font-size: .85rem; }
/* O cartão é <figure> com <blockquote> e <figcaption>, não o <footer> da regra
   acima: sem estas duas, a citação herdava a margem de 40px do navegador e o
   nome saía colado na empresa, na mesma linha. */
.ce-testimonial blockquote { margin: 0; }
.ce-testimonial figcaption { display: flex; flex-direction: column; gap: 2px; }
.ce-testimonial__stars { display: flex; gap: 2px; color: var(--ce-brand-on-light); }
.ce-testimonial__stars svg { width: 16px; height: 16px; }

/* ----- Segmentos ----- */
.ce-segment { background: var(--ce-bg); border: 1px solid var(--ce-border); border-radius: var(--ce-radius); padding: 32px 20px; text-align: center; height: 100%; transition: transform .25s var(--ce-ease), box-shadow .25s var(--ce-ease), border-color .25s var(--ce-ease); }
.ce-segment:hover { transform: translateY(-4px); box-shadow: 0 12px 26px -10px rgba(15, 23, 42, .18); border-color: var(--ce-brand-on-light); }
.ce-segment__icon { margin-bottom: 12px; line-height: 1; color: var(--ce-brand-on-light); }
.ce-segment__icon svg { width: 34px; height: 34px; display: block; margin: 0 auto; }
.ce-segment__name { font-size: 1.05rem; margin: 0; }

/*
   Laço contínuo dos segmentos e dos clientes. A máscara nas pontas evita o
   corte seco; `prefers-reduced-motion` troca a animação por rolagem manual,
   porque movimento infinito é exatamente o que essa preferência pede para
   desligar.
*/
.ce-marquee { position: relative; overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.ce-marquee__track { display: flex; gap: 60px; width: max-content; animation: ce-scroll 32s linear infinite; align-items: center; will-change: transform; }
.ce-marquee__item { font-weight: 700; font-size: 1.4rem; letter-spacing: .06em; color: var(--ce-text-muted); white-space: nowrap; display: inline-flex; align-items: center; text-decoration: none; }
.ce-marquee__item:hover { color: var(--ce-brand-on-light); }
.ce-marquee__logo { max-height: 60px; width: auto; object-fit: contain; filter: grayscale(100%); opacity: .75; transition: filter .2s, opacity .2s; }
.ce-marquee__item:hover .ce-marquee__logo { filter: grayscale(0); opacity: 1; }
.ce-marquee:hover .ce-marquee__track { animation-play-state: paused; }
@keyframes ce-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }

.ce-marquee--segments .ce-marquee__track { gap: 20px; animation-duration: 38s; }
.ce-marquee--segments .ce-marquee__item { flex: 0 0 220px; padding: 8px 0; display: block; }
@media (max-width: 760px) {
    .ce-marquee--segments .ce-marquee__item { flex: 0 0 180px; }
    .ce-marquee--segments .ce-marquee__track { animation-duration: 30s; }
}
@media (prefers-reduced-motion: reduce) {
    .ce-marquee__track { animation: none; }
    .ce-marquee { overflow: auto; mask-image: none; -webkit-mask-image: none; }
}

/* ----- Números ----- */
.ce-numbers { display: grid; gap: 24px; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.ce-number { text-align: center; }
.ce-number__value { font-family: var(--ce-font-display); font-optical-sizing: auto; font-weight: 560; font-size: clamp(2.2rem, 4vw, 3rem); line-height: 1; color: var(--ce-brand-on-light); letter-spacing: -.02em; }
.ce-number__label { margin: 10px 0 0; color: var(--ce-text-soft); font-size: .95rem; }

/* ----- Caixa de chamada ----- */
.ce-cta-box { position: relative; overflow: hidden; color: #fff; text-align: center; border-radius: var(--ce-radius-lg); padding: 64px 32px; box-shadow: 0 34px 64px -32px var(--ce-primary-shadow-strong); background: radial-gradient(85% 120% at 86% 0%, var(--ce-brand-veil), transparent 55%), var(--ce-dark-gradient); }
.ce-cta-box::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--ce-brand-line-strong), transparent); }
.ce-cta-box > * { position: relative; z-index: 1; }
.ce-cta-box h2 { font-family: var(--ce-font-display); font-optical-sizing: auto; font-weight: 560; color: #fff; letter-spacing: -.015em; line-height: 1.1; }
.ce-cta-box p { color: var(--ce-on-dark-soft); margin-bottom: 30px; font-size: 1.08rem; }
.ce-cta-box .ce-btn { max-width: 100%; white-space: normal; line-height: 1.25; border: 0; background: var(--ce-brand-gradient); color: var(--ce-on-brand); box-shadow: 0 16px 34px -14px var(--ce-brand-shadow); }
.ce-cta-box .ce-btn:hover { background: var(--ce-brand-gradient-hover); color: var(--ce-on-brand); }

/* ----- Formulário ----- */
.ce-form { background: var(--ce-bg); border: 1px solid var(--ce-border); border-radius: var(--ce-radius); padding: 32px; box-shadow: var(--ce-shadow-sm); }
.ce-form__row { display: flex; flex-direction: column; gap: 6px; margin-bottom: 18px; }
.ce-form label { font-size: .85rem; font-weight: 600; color: var(--ce-text); }
.ce-form input, .ce-form textarea, .ce-form select { font-family: inherit; font-size: 1rem; color: var(--ce-text); padding: 14px 16px; border: 1px solid var(--ce-border); border-radius: 10px; background: var(--ce-bg); transition: border-color .2s, box-shadow .2s; width: 100%; }
.ce-form input:focus, .ce-form textarea:focus, .ce-form select:focus { outline: none; border-color: var(--ce-brand-on-light); box-shadow: 0 0 0 3px var(--ce-brand-tint-strong); }
.ce-form textarea { resize: vertical; min-height: 120px; }
.ce-form__grid { display: grid; grid-template-columns: 1fr; gap: 0; }
@media (min-width: 680px) { .ce-form__grid { grid-template-columns: 1fr 1fr; gap: 18px; } }
.ce-form__row--full { grid-column: 1 / -1; }
/* Campo-armadilha: invisível para gente, preenchido por robô. */
.ce-form__trap { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.ce-alert { padding: 12px 14px; border-radius: 10px; margin-bottom: 16px; font-size: .92rem; }
.ce-alert--success { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; }
.ce-alert--error { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }

/* ----- Contato ----- */
.ce-contact-grid { display: grid; grid-template-columns: 1fr; gap: 32px; align-items: start; }
@media (min-width: 880px) { .ce-contact-grid { grid-template-columns: 1fr 1fr; gap: 40px; } }
.ce-contact-grid__head { margin-bottom: 28px; }
.ce-contact-grid__head .ce-h2 { margin-bottom: 8px; }
/* Coluna estreita: os campos voltam a uma coluna até haver espaço de verdade. */
@media (max-width: 1100px) and (min-width: 880px) { .ce-contact-grid .ce-form__grid { grid-template-columns: 1fr; gap: 0; } }

.ce-contact-cards { display: grid; gap: 16px; align-content: center; }
.ce-contact-card { display: flex; align-items: flex-start; gap: 16px; padding: 20px 22px; background: var(--ce-bg); border: 1px solid var(--ce-border); border-radius: var(--ce-radius); box-shadow: var(--ce-shadow-sm); transition: transform .2s var(--ce-ease), box-shadow .2s var(--ce-ease), border-color .2s var(--ce-ease); }
.ce-contact-card:hover { transform: translateY(-2px); box-shadow: var(--ce-shadow); border-color: transparent; }
.ce-contact-card__icon { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 12px; background: var(--ce-dark-gradient); color: #fff; }
.ce-contact-card__icon svg { width: 22px; height: 22px; }
.ce-contact-card__body h3 { margin: 0 0 4px; font-size: 1.05rem; color: var(--ce-text); }
.ce-contact-card__body p { margin: 0; font-size: .95rem; color: var(--ce-text-soft); line-height: 1.5; word-break: break-word; }
.ce-contact-card__body a { color: var(--ce-text-soft); text-decoration: none; }
.ce-contact-card__body a:hover { color: var(--ce-brand-on-light); }

.ce-map { margin-top: 24px; border-radius: var(--ce-radius); overflow: hidden; box-shadow: var(--ce-shadow-sm); background: var(--ce-bg); min-height: 350px; }
.ce-map iframe { display: block; width: 100%; height: 100%; min-height: 350px; border: 0; }

/* ----- Banner das páginas internas ----- */
.ce-page-banner { position: relative; overflow: hidden; color: #fff; text-align: center; padding: calc(var(--ce-header-h) + clamp(56px, 6vw, 84px)) 0 clamp(50px, 5vw, 74px); background: radial-gradient(80% 70% at 86% 0%, var(--ce-brand-veil), transparent 55%), var(--ce-dark-gradient); }
.ce-page-banner > .ce-container { position: relative; z-index: 1; }
.ce-page-banner .ce-eyebrow { display: inline-flex; align-items: center; gap: 8px; color: var(--ce-brand-on-dark); letter-spacing: .16em; }
/* O símbolo do cliente antes do chapéu — a âncora da Âncora, quando ele
   escolheu um na variante. É máscara, e não imagem: a cor vem do próprio
   chapéu, então o mesmo desenho acompanha o realce de cada cliente. */
.ce-com-simbolo .ce-page-banner .ce-eyebrow::before { content: ""; width: 15px; height: 15px; flex: none; background: currentColor; -webkit-mask: var(--ce-symbol) center / contain no-repeat; mask: var(--ce-symbol) center / contain no-repeat; }
.ce-page-banner__title { font-family: var(--ce-font-display); font-optical-sizing: auto; font-weight: 560; font-size: clamp(2.1rem, 4.4vw, 3.2rem); color: #fff; margin: 0; line-height: 1.08; letter-spacing: -.015em; }
/* O fio dourado sob o título é a assinatura do modelo. */
.ce-page-banner__title::after,
.ce-page-banner .ce-crumbs::after { content: ""; display: block; width: 56px; height: 2px; margin: 20px auto 0; border-radius: 2px; background: linear-gradient(90deg, transparent, var(--ce-brand-on-dark), transparent); }
/* O fio fecha o bloco do título. Quando a trilha entra logo abaixo do H1, é
   ela quem o carrega — no título ele cortaria o caminho ao meio. */
.ce-page-banner__title:has(+ .ce-crumbs)::after { content: none; }
.ce-page-banner__desc { color: var(--ce-on-dark-soft); margin-top: 18px; max-width: 640px; margin-left: auto; margin-right: auto; font-size: 1.05rem; line-height: 1.6; }
.ce-page-banner__icon { display: flex; align-items: center; justify-content: center; width: 76px; height: 76px; margin: 16px auto 20px; border-radius: 50%; color: var(--ce-brand-on-dark); background: var(--ce-brand-tint); border: 1px solid var(--ce-brand-line); }
.ce-page-banner__icon svg { width: 34px; height: 34px; display: block; }

/* ----- Trilha ----- */
.ce-crumbs { padding: 18px 0 0; font-size: .85rem; color: var(--ce-text-muted); }

/*
   Dentro do banner a trilha vem sob o H1 — é a própria seção que a inclui.

   No fluxo normal ela ficaria nos primeiros pixels da página, que é
   exatamente onde o cabeçalho fixo está: o visitante via a trilha atravessada
   pelo menu. Sob o título ela fica longe do cabeçalho e continua sendo a
   primeira coisa que se lê depois do nome da página.

   O contêiner interno zera porque já está dentro do contêiner do banner —
   dois seguidos somariam a margem lateral duas vezes.
*/
.ce-page-banner .ce-crumbs { padding: 16px 0 0; color: var(--ce-on-dark-soft); }
.ce-page-banner .ce-crumbs .ce-container { max-width: none; padding: 0; }
.ce-page-banner .ce-crumbs a { color: var(--ce-on-dark-soft); }
.ce-page-banner .ce-crumbs a:hover { color: #fff; }
.ce-page-banner .ce-crumbs li + li::before { color: var(--ce-brand-on-dark); }
.ce-page-banner .ce-crumbs [aria-current="page"] { color: #fff; }

@media (max-width: 720px) {
    .ce-page-banner .ce-crumbs { font-size: .8rem; }
}
/* Centralizada para acompanhar o banner, que é centrado neste modelo. */
.ce-crumbs ol { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; justify-content: center; margin: 0; padding: 0; list-style: none; }
.ce-crumbs li { display: inline-flex; align-items: center; gap: 6px; }
.ce-crumbs li + li::before { content: "›"; color: var(--ce-text-muted); }
.ce-crumbs a { color: var(--ce-text-soft); }
.ce-crumbs a:hover { color: var(--ce-brand-on-light); }
.ce-crumbs [aria-current="page"] { color: var(--ce-text); font-weight: 500; }

/* ----- Conteúdo corrido e blog ----- */
.ce-content { max-width: 100%; }
.ce-content--narrow { max-width: 760px; margin-left: auto; margin-right: auto; }
.ce-content h2, .ce-content h3 { margin-top: 1.6em; }
.ce-content p, .ce-content ul, .ce-content ol { margin-bottom: 1.2em; }
.ce-content ul, .ce-content ol { padding-left: 1.4em; }
.ce-content ul { list-style: disc; }
.ce-content ol { list-style: decimal; }
.ce-content blockquote { border-left: 4px solid var(--ce-brand-on-light); padding: 8px 20px; color: var(--ce-text-soft); font-style: italic; margin: 1.6em 0; background: var(--ce-bg-alt); border-radius: 8px; }
/* Proporção fixa pelo mesmo motivo do cartão do institucional: a foto que o
   cliente sobe tem a proporção que ele quiser, e os atributos width/height do
   HTML provocariam salto de layout numa foto de outro formato. */
.ce-content__figure { margin: 32px 0 0; border-radius: var(--ce-radius-lg); overflow: hidden; box-shadow: var(--ce-shadow); aspect-ratio: 4 / 3; }
.ce-content__figure img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ce-content__thumb { margin: 0 auto 36px; width: 100%; max-width: 600px; border-radius: var(--ce-radius-lg); overflow: hidden; box-shadow: var(--ce-shadow); }
.ce-content__thumb img { display: block; width: 100%; height: auto; }
.ce-meta { margin-top: 14px; color: var(--ce-on-dark-soft); display: flex; gap: 8px; justify-content: center; font-size: .9rem; }

.ce-posts { display: grid; gap: 36px; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.ce-posts > .ce-post { max-width: 420px; width: 100%; }
.ce-post { background: var(--ce-bg); border: 1px solid var(--ce-border); border-radius: var(--ce-radius); overflow: hidden; transition: transform .25s, box-shadow .25s; }
.ce-post:hover { transform: translateY(-3px); box-shadow: var(--ce-shadow); }
.ce-post__thumb img { width: 100%; height: 220px; object-fit: cover; }
.ce-post__body { padding: 24px; }
.ce-post__date { font-size: .8rem; color: var(--ce-text-muted); text-transform: uppercase; letter-spacing: .08em; }
.ce-post__title { font-size: 1.2rem; margin: 6px 0 10px; }
.ce-post__title a { color: var(--ce-text); }
.ce-post__title a:hover { color: var(--ce-brand-on-light); }
.ce-post__excerpt { color: var(--ce-text-soft); font-size: .95rem; }
.ce-post__more { font-weight: 600; font-size: .9rem; color: var(--ce-brand-on-light); }

.ce-pagination { margin-top: 50px; display: flex; justify-content: center; }
.ce-pagination a, .ce-pagination span { display: inline-flex; align-items: center; justify-content: center; min-width: 42px; height: 42px; padding: 0 14px; border-radius: 10px; background: var(--ce-bg-alt); color: var(--ce-text); font-weight: 600; margin: 0 4px; }
.ce-pagination .is-current, .ce-pagination a:hover { background: var(--ce-brand-on-light); color: var(--ce-on-brand); }

/* ----- Busca e filtros do arquivo ----- */
.ce-archive__filters { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 40px; padding: 20px; background: var(--ce-bg-alt); border-radius: 14px; }
.ce-archive__cats { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0; }
.ce-archive__cats a { display: inline-block; padding: 8px 16px; border-radius: 999px; background: var(--ce-bg); border: 1px solid var(--ce-border); color: var(--ce-text-soft); font-size: .875rem; font-weight: 500; text-decoration: none; transition: background .2s var(--ce-ease), border-color .2s var(--ce-ease), color .2s var(--ce-ease); }
.ce-archive__cats a:hover,
.ce-archive__cats a.is-active { background: var(--ce-brand-on-light); border-color: var(--ce-brand-on-light); color: var(--ce-on-brand); }
.ce-search-form { display: flex; gap: 8px; }
.ce-search-form input { padding: 10px 14px; border: 1.5px solid var(--ce-border); border-radius: 10px; background: var(--ce-bg); font-size: .9rem; min-width: 220px; font-family: inherit; color: var(--ce-text); }
.ce-search-form input:focus { outline: 0; border-color: var(--ce-brand-on-light); box-shadow: 0 0 0 3px var(--ce-brand-tint-strong); }
.ce-search-form button { padding: 0 16px; border-radius: 10px; border: 0; background: var(--ce-brand-on-light); color: var(--ce-on-brand); font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: background .2s var(--ce-ease); }
.ce-search-form button:hover { background: var(--ce-primary); color: var(--ce-on-primary); }
.ce-archive__empty { text-align: center; padding: 60px 20px; }
.ce-archive__empty h3 { margin-bottom: 8px; }
.ce-archive__empty .ce-btn { margin-top: 18px; }
@media (max-width: 720px) {
    .ce-archive__filters { flex-direction: column; align-items: stretch; }
    .ce-search-form { width: 100%; }
    .ce-search-form input { flex: 1; min-width: 0; }
}

/* ----- Compartilhar ----- */
.ce-share { display: flex; align-items: center; flex-wrap: wrap; gap: 14px; max-width: 760px; margin: 40px auto 0; padding-top: 24px; border-top: 1px solid var(--ce-border); }
.ce-share__label { font-size: .9rem; font-weight: 600; color: var(--ce-text-soft); }
.ce-share__list { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; list-style: none; }
.ce-share__item { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; padding: 0; border-radius: 50%; background: var(--ce-bg-alt); color: var(--ce-text-soft); border: 1px solid var(--ce-border); cursor: pointer; transition: background .25s var(--ce-ease), color .25s var(--ce-ease), transform .25s var(--ce-ease), border-color .25s var(--ce-ease); }
.ce-share__item svg { width: 18px; height: 18px; display: block; }
.ce-share__item:hover { transform: translateY(-2px); color: #fff; border-color: transparent; }

/* A cor de cada canal no hover: o reconhecimento é imediato, sem rótulo. */
.ce-share__item[data-rede="whatsapp"]:hover { background: var(--ce-accent); }
.ce-share__item[data-rede="facebook"]:hover { background: #1877f2; }
.ce-share__item[data-rede="x"]:hover { background: #000; }
.ce-share__item[data-rede="linkedin"]:hover { background: #0a66c2; }
.ce-share__item[data-rede="telegram"]:hover { background: #229ed9; }
.ce-share__item[data-rede="email"]:hover { background: var(--ce-primary); }
.ce-share__item[data-ce-print]:hover { background: var(--ce-primary); }

/* Na impressão, a própria barra não serve para nada. */
@media print {
    .ce-share, .ce-header, .ce-footer, .ce-wa-float, .ce-consent { display: none !important; }
}

/* ----- Perguntas frequentes ----- */
.ce-faq { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.ce-faq__item { border: 1px solid var(--ce-border); border-radius: 12px; background: var(--ce-bg); overflow: hidden; }
.ce-faq__q { position: relative; cursor: pointer; list-style: none; padding: 18px 52px 18px 20px; font-weight: 600; color: var(--ce-text); display: flex; justify-content: space-between; align-items: center; gap: 16px; transition: color .2s var(--ce-ease); }
.ce-faq__q::-webkit-details-marker { display: none; }
/*
   O sinal de + e − é feito de duas barras: a de ::before fica deitada, a de
   ::after gira do vertical para o deitado quando o item abre.
*/
.ce-faq__q::before,
.ce-faq__q::after { content: ""; position: absolute; right: 20px; top: 50%; width: 14px; height: 2px; border-radius: 2px; background: var(--ce-brand-on-light); transition: transform .3s var(--ce-ease), background-color .2s var(--ce-ease); }
.ce-faq__q::before { transform: translateY(-50%); }
.ce-faq__q::after { transform: translateY(-50%) rotate(90deg); }
.ce-faq__item.is-open .ce-faq__q::after { transform: translateY(-50%) rotate(0deg); }
.ce-faq__q:hover { color: var(--ce-brand-on-light); }
.ce-faq__a { overflow: hidden; box-sizing: border-box; padding: 0 20px 18px; }
.ce-faq__a p { margin: 0; color: var(--ce-text-soft); }
@media (prefers-reduced-motion: reduce) {
    .ce-faq__q::before, .ce-faq__q::after { transition: none; }
}

/* ----- Missão, visão e valores ----- */
.ce-mvv { display: grid; gap: 24px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.ce-mvv__item { background: var(--ce-bg); border: 1px solid var(--ce-border); border-radius: var(--ce-radius); padding: 32px; }
.ce-mvv__title { font-size: 1.1rem; margin: 0 0 10px; color: var(--ce-text); }
.ce-mvv__text { margin: 0; color: var(--ce-text-soft); font-size: .95rem; }

/* ----- Equipe ----- */
.ce-team { display: grid; gap: 28px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.ce-team__item { text-align: center; }
.ce-team__photo { width: 100%; max-width: 220px; margin: 0 auto 16px; aspect-ratio: 1; border-radius: 50%; overflow: hidden; box-shadow: var(--ce-shadow-sm); }
.ce-team__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ce-team__name { font-size: 1.05rem; margin: 0 0 4px; color: var(--ce-text); }
.ce-team__role { margin: 0; color: var(--ce-text-soft); font-size: .9rem; }
.ce-team__crc { margin: 6px 0 0; color: var(--ce-text-muted); font-size: .82rem; }

/* ----- 404 ----- */
.ce-404 { text-align: center; max-width: 520px; margin: 0 auto; padding: 40px 0; }
.ce-404__code { font-family: var(--ce-font-display); font-optical-sizing: auto; font-size: clamp(5rem, 12vw, 9rem); font-weight: 600; line-height: 1; color: var(--ce-brand-on-light); margin-bottom: 14px; }

/* ----- Rodapé ----- */
.ce-footer { position: relative; overflow: hidden; background: var(--ce-dark-gradient-flat); color: var(--ce-on-dark-soft); padding: 66px 0 0; margin-top: 0; }
.ce-footer::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--ce-brand-line-strong), transparent); }
.ce-footer > * { position: relative; z-index: 1; }
.ce-footer__grid { display: grid; gap: 48px; grid-template-columns: 1fr; padding-bottom: 48px; }
@media (min-width: 760px) { .ce-footer__grid { grid-template-columns: 1.6fr 1fr 1.2fr; gap: 56px; } }
.ce-footer__title, .ce-footer__heading { color: #fff; font-weight: 700; font-size: 1.05rem; margin: 0 0 18px; }
.ce-footer__heading { text-transform: uppercase; letter-spacing: .08em; font-size: .8rem; color: rgba(255, 255, 255, .6); position: relative; padding-bottom: 10px; }
.ce-footer__heading::after { content: ""; position: absolute; left: 0; bottom: 0; width: 32px; height: 2px; background: var(--ce-brand-on-dark); border-radius: 2px; }
.ce-footer__col--brand { max-width: 420px; }
.ce-footer__logo { margin: 0 0 16px; }
.ce-footer__logo a { display: inline-block; line-height: 0; }
.ce-footer__logo img { max-width: 200px; max-height: 56px; width: auto; height: auto; object-fit: contain; display: block; }
/* Sem logo para fundo escuro, o modelo inverte a principal. */
.ce-footer__logo--invert img { filter: brightness(0) invert(1); }
.ce-footer__tagline { color: #fff; font-weight: 600; font-size: 1rem; margin: 0 0 12px; line-height: 1.4; }
.ce-footer__desc { font-size: .92rem; line-height: 1.7; margin: 0 0 20px; color: var(--ce-on-dark-soft); }
.ce-footer__menu { display: flex; flex-direction: column; gap: 0; margin: 0; padding: 0; list-style: none; }
.ce-footer__menu li { margin: 0; padding: 0; list-style: none; display: block; }
.ce-footer__menu a { display: inline-flex; align-items: center; gap: 8px; padding: 8px 0; color: var(--ce-on-dark-soft); font-size: .95rem; line-height: 1.4; border: 0; transition: color .2s var(--ce-ease), transform .2s var(--ce-ease); }
.ce-footer__menu a::before { content: "›"; color: var(--ce-brand-on-dark); font-weight: 700; font-size: 1.1rem; line-height: 1; transition: transform .2s var(--ce-ease); }
.ce-footer__menu a:hover { color: #fff; }
.ce-footer__menu a:hover::before { transform: translateX(3px); }
.ce-footer__contact { font-style: normal; display: flex; flex-direction: column; gap: 12px; margin: 0; }
.ce-footer__contact-item { display: flex; align-items: flex-start; gap: 10px; margin: 0; font-size: .95rem; line-height: 1.5; color: var(--ce-on-dark-soft); }
.ce-footer__contact-icon { flex: 0 0 auto; display: inline-flex; color: var(--ce-brand-on-dark); }
.ce-footer__contact-icon svg { width: 16px; height: 16px; display: block; }
.ce-footer__contact a { color: var(--ce-on-dark-soft); font-size: .95rem; }
.ce-footer__contact a:hover { color: #fff; }
.ce-footer__crc { margin-top: 12px; font-size: .82rem; opacity: .7; }
.ce-social { display: flex; gap: 10px; margin: 14px 0 0; padding: 0; list-style: none; }
.ce-social a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: rgba(255, 255, 255, .08); color: #fff; border: 1px solid rgba(255, 255, 255, .06); transition: background .25s var(--ce-ease), transform .25s var(--ce-ease), border-color .25s var(--ce-ease), box-shadow .25s var(--ce-ease); }
.ce-social a svg { width: 18px; height: 18px; display: block; }
.ce-social a:hover { transform: translateY(-3px); border-color: transparent; box-shadow: 0 8px 18px -6px rgba(0, 0, 0, .4); }
/* A cor de cada rede no hover — o reconhecimento é imediato e não depende de rótulo. */
.ce-social a[data-rede="instagram"]:hover { background: linear-gradient(135deg, #feda75, #fa7e1e 30%, #d62976 60%, #962fbf 80%, #4f5bd5); }
.ce-social a[data-rede="facebook"]:hover { background: #1877f2; }
.ce-social a[data-rede="linkedin"]:hover { background: #0a66c2; }
.ce-social a[data-rede="youtube"]:hover { background: #ff0000; }
.ce-footer__bottom { border-top: 1px solid rgba(255, 255, 255, .08); padding: 22px 0; font-size: .85rem; color: rgba(255, 255, 255, .6); text-align: center; }
.ce-footer__bottom p { margin: 0; }

/* ----- Botão flutuante do WhatsApp ----- */
.ce-wa-float { position: fixed; right: 22px; bottom: 22px; width: 60px; height: 60px; border-radius: 50%; background: var(--ce-accent); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 12px 24px -8px var(--ce-accent-shadow); z-index: 90; transition: transform .25s var(--ce-ease), box-shadow .25s var(--ce-ease); }
.ce-wa-float svg { width: 30px; height: 30px; display: block; }
.ce-wa-float:hover { transform: translateY(-3px); color: #fff; box-shadow: 0 18px 28px -8px var(--ce-accent-shadow-strong); }

/* ----- Aviso de cookies ----- */
.ce-consent { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 95; max-width: 460px; background: var(--ce-bg); border: 1px solid var(--ce-border); border-radius: var(--ce-radius); box-shadow: var(--ce-shadow-lg); padding: 20px 22px; font-size: .9rem; color: var(--ce-text-soft); }
.ce-consent[hidden] { display: none; }
.ce-consent__actions { display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }

/*
   Revela ao rolar. Só vale com JS ativo (a classe .js-anim entra no <html>)
   e quando ninguém pediu movimento reduzido — sem JS, ou com ele falhando,
   nada fica escondido.
*/
@media (prefers-reduced-motion: no-preference) {
    .js-anim .ce-reveal,
    .js-anim .ce-hero__content,
    .js-anim .ce-hero__media,
    .js-anim .ce-page-banner .ce-eyebrow,
    .js-anim .ce-page-banner__title,
    .js-anim .ce-page-banner .ce-crumbs,
    .js-anim .ce-page-banner__desc,
    .js-anim .ce-page-banner__icon,
    .js-anim .ce-section__head,
    .js-anim .ce-card,
    .js-anim .ce-post,
    .js-anim .ce-cta-box,
    .js-anim .ce-content__figure,
    .js-anim .ce-content__thumb {
        opacity: 0;
        transform: translateY(26px);
        transition: opacity .7s cubic-bezier(.16, 1, .3, 1), transform .7s cubic-bezier(.16, 1, .3, 1);
        will-change: opacity, transform;
    }
    .js-anim .is-visible { opacity: 1 !important; transform: none !important; will-change: auto; }
}

@media (max-width: 600px) {
    .ce-section { padding: 64px 0; }
    .ce-cta-box { padding: 40px 20px; }
    .ce-btn--full { white-space: normal; text-align: center; line-height: 1.25; }
}

/* O nome de quem assina a matéria, no banner escuro. */
.ce-meta a { color: inherit; text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.ce-meta a:hover { color: #fff; }

/*
   O convite do WhatsApp dentro da matéria — no meio do texto e no fim.

   Veio do modelo 02 com as classes certas e sem regra nenhuma aqui: saía
   como texto solto, ocupando a largura inteira, e o botão como link marrom.
   Segue a caixa de chamada deste modelo (degradê escuro, fio dourado no
   topo, botão dourado), mais compacta, na largura da coluna de leitura.
*/
.ce-single__cta { position: relative; overflow: hidden; max-width: 760px; margin: 48px auto; padding: 40px 32px; border-radius: var(--ce-radius-lg); text-align: center; color: #fff; background: radial-gradient(85% 120% at 86% 0%, var(--ce-brand-veil), transparent 55%), var(--ce-dark-gradient); box-shadow: 0 34px 64px -32px var(--ce-primary-shadow-strong); }
.ce-single__cta::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--ce-brand-line-strong), transparent); }
.ce-single__cta > * { position: relative; z-index: 1; }
/* Dentro do texto, as regras de h2 e p da matéria não podem valer aqui. */
.ce-single__cta h2,
.ce-content .ce-single__cta h2 { margin: 0 0 10px; font-family: var(--ce-font-display); font-optical-sizing: auto; font-weight: 560; font-size: clamp(1.35rem, 2.4vw, 1.75rem); line-height: 1.15; letter-spacing: -.01em; color: #fff; }
.ce-single__cta p,
.ce-content .ce-single__cta p { margin: 0 auto 24px; max-width: 520px; color: var(--ce-on-dark-soft); font-size: 1.02rem; }

/* O botão do WhatsApp é o dourado da marca, como o do topo deste modelo. */
.ce-btn--whatsapp,
.ce-content .ce-btn--whatsapp { max-width: 100%; white-space: normal; line-height: 1.25; border: 0; text-decoration: none; background: var(--ce-brand-gradient); color: var(--ce-on-brand); box-shadow: 0 16px 34px -14px var(--ce-brand-shadow); }
.ce-btn--whatsapp:hover,
.ce-content .ce-btn--whatsapp:hover { background: var(--ce-brand-gradient-hover); color: var(--ce-on-brand); }
.ce-btn--whatsapp svg { width: 20px; height: 20px; flex: none; }

@media (max-width: 600px) {
    .ce-single__cta { margin: 36px auto; padding: 32px 20px; }
}

/*
   Carrossel de depoimentos.

   Quem move é o site.js: ele desliza a trilha uma "página" por vez, com
   translateX(-índice × 100%), e decide quantos cartões cabem pela largura da
   janela — 1 abaixo de 760px, 2 até 1023px, 3 a partir de 1024px. O CSS tem de
   repetir exatamente esses pontos: se o slide medir outra fração, o
   deslocamento de 100% para no meio de um cartão.

   O espaço entre os cartões é padding do slide, não `gap` — o gap entraria na
   conta dos 100% e a trilha andaria torta a cada página.
*/
.ce-slider { position: relative; overflow: hidden; margin: 0 -12px; }
.ce-slider__track { display: flex; transition: transform .6s var(--ce-ease); will-change: transform; }
.ce-slider__slide { display: flex; flex: 0 0 100%; max-width: 100%; box-sizing: border-box; padding: 0 12px; }
.ce-slider__slide > * { width: 100%; }
@media (min-width: 760px) {
    .ce-slider__slide { flex-basis: 50%; max-width: 50%; }
}
@media (min-width: 1024px) {
    .ce-slider__slide { flex-basis: 33.3333%; max-width: 33.3333%; }
}

/* Os pontos nascem no site.js. O alvo de toque tem 24px; o ponto visível é menor. */
.ce-slider__dots { display: flex; justify-content: center; gap: 4px; margin-top: 28px; }
.ce-slider__dot { position: relative; width: 24px; height: 24px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.ce-slider__dot::before { content: ""; position: absolute; left: 50%; top: 50%; width: 10px; height: 10px; border-radius: 999px; background: var(--ce-border); transform: translate(-50%, -50%); transition: width .25s var(--ce-ease), background .25s var(--ce-ease); }
.ce-slider__dot:hover::before { background: var(--ce-brand-line-strong); }
.ce-slider__dot.is-active::before { width: 26px; background: var(--ce-brand-on-light); }

@media (prefers-reduced-motion: reduce) {
    .ce-slider__track { transition: none; }
}
