/* Aularis Design System · Mosaico v1.1 — page builder: tenant site blocks and the editor.
 * Our own CSS (translated to English from the v2 package; see docs/DESIGN_SYSTEM.md).
 * Load order is a contract: fonts.css → tokens.css → components.css → layouts.css → builder.css.
 * Names follow the glossary in backend/apps/core/ds_glossary.py; comments may stay pt-BR.
 */
/* =====================================================================
   30. CONSTRUTOR DE PÁGINAS · SITE DO TENANT (page_builder V2)
   O site público é montado só com estas peças: uma por componente do
   registry (component_registry.py). A mesma marcação serve à página
   publicada, ao canvas do editor e à miniatura do catálogo; por isso as
   peças respondem à largura do contêiner "site", e não à da janela.
   ===================================================================== */
.site, .page-editor__page, .thumbnail__scale { container: site / inline-size; }
.site { position: relative; display: flex; flex-direction: column; gap: var(--gap); padding: 0 10px 10px; }

/* ---- bloco: todo componente é um bloco. "Espaçamento" do editor = respiro interno topo/baixo,
        por dispositivo (presets Compacto · Confortável · Aéreo). Entre blocos: sempre --gap. */
.site-block { --pb-t: 60px; --pb-b: 60px; --pb-x: 20px; display: flex; flex-direction: column; gap: 24px; padding: var(--pb-t) var(--pb-x) var(--pb-b); }
.card.site-block { --pb-x: 64px; }
.site-block--center { align-items: center; text-align: center; }
.site-block--right { align-items: flex-end; text-align: right; }
.site-block--center :is(.site-section__head, .site-hero__content) { align-items: center; margin-inline: auto; }
.site-block--right :is(.site-section__head, .site-hero__content) { align-items: flex-end; margin-left: auto; }
.site-block--center > :is(.site-grid, .check-list, .accordion), .site-block--right > :is(.site-grid, .check-list, .accordion) { align-self: stretch; text-align: left; }
.site-block--compact { --pb-t: 24px; --pb-b: 24px; }
.site-block--airy { --pb-t: 120px; --pb-b: 120px; }
@container site (max-width: 1024px) { .site-block { --pb-t: 40px; --pb-b: 40px; --pb-x: 12px; } .card.site-block { --pb-x: 40px; } .site-block--compact { --pb-t: 24px; --pb-b: 24px; } .site-block--airy { --pb-t: 80px; --pb-b: 80px; } }
@container site (max-width: 640px) { .site-block { --pb-t: 24px; --pb-b: 24px; --pb-x: 4px; } .card.site-block { --pb-x: 20px; } .site-block--compact { --pb-t: 16px; --pb-b: 16px; } .site-block--airy { --pb-t: 48px; --pb-b: 48px; } }

/* ---- grade dos itens repetidos (benefícios, etapas, depoimentos, números, galeria): uma só */
.site-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gap); margin: 0; padding: 0; list-style: none; }
.site-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.site-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@container site (max-width: 900px) { .site-grid, .site-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container site (max-width: 560px) { .site-grid, .site-grid--2, .site-grid--4 { grid-template-columns: minmax(0, 1fr); } }

/* ---- cabeçalho de seção (header_simple e o título de todo componente com título) */
.site-section__head { max-width: 720px; display: flex; flex-direction: column; gap: 8px; }

/* ---- herói: uma peça, três layouts (hero_centered · hero_split · banner_image) */
.site-hero { display: grid; gap: var(--gap); }
.site-hero__content { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: flex-start; gap: 20px; max-width: 820px; }
.site-hero--center, .site-hero--image { min-height: 560px; align-content: center; }
.site-hero--center .site-hero__content { align-items: center; text-align: center; margin-inline: auto; }
.site-hero--split { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); }
.site-hero--split > .card { min-height: 460px; }
.site-hero--split > .site-block { justify-content: center; }
.site-hero__art { display: grid; place-items: center; overflow: hidden; }
.site-hero__art .cover-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); width: 100%; }
.site-hero--image { position: relative; overflow: hidden; color: #FFFFFF; --title: #FFFFFF; --text: #FFFFFF; --text-muted: rgb(255 255 255 / .86); }
.site-hero__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.site-hero--image::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgb(0 0 0 / .18), rgb(0 0 0 / .62)); }
.site-hero__chip { padding: 0 .2em; border-radius: 14px; background: var(--accent); color: var(--accent-text); -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.text-highlight { background: none; color: inherit; text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: .16em; text-underline-offset: .1em; text-decoration-skip-ink: none; }
@container site (max-width: 900px) { .site-hero--split { grid-template-columns: minmax(0, 1fr); } .site-hero--split > .card { min-height: 0; } }
@container site (max-width: 640px) { .site-hero--center, .site-hero--image { min-height: 0; } }

/* ---- texto (text_centered): conteúdo rico; tamanho por modificador, alinhamento pelo bloco */
.site-block--center > .prose { margin-inline: auto; }
.site-text--sm .prose { font-size: 15px; }
.site-text--lg .prose { font-size: 20px; }

/* ---- lista com check (list_checkmark): mesma lista do plano, em duas colunas */
.site-checks .check-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 32px; width: 100%; max-width: 860px; margin-inline: auto; }
@container site (max-width: 640px) { .site-checks .check-list { grid-template-columns: minmax(0, 1fr); } }

/* ---- etapas (steps_timeline): número da ordem + título + texto */
.site-steps li { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }

/* ---- perguntas frequentes (faq_accordion) */
.site-faq .accordion { width: 100%; max-width: 820px; margin-inline: auto; }

/* ---- depoimento: citação + pessoa (quote_card, testimonials_grid, testimonials_editable) */
.testimonial { display: flex; flex-direction: column; gap: 16px; margin: 0; }
.testimonial blockquote { margin: 0; font: 500 19px/1.5 var(--font-display); }
.testimonial--featured { width: 100%; max-width: 840px; margin-inline: auto; }
.testimonial--featured blockquote { font-size: 28px; line-height: 1.4; }
@container site (max-width: 640px) { .testimonial--featured blockquote { font-size: 22px; } }
.stars--sm { display: inline-flex; gap: 2px; }
.stars--sm .lucide { width: 16px; height: 16px; stroke-width: 1.6; fill: var(--accent); }

/* ---- selos e parceiros (trust_bar) */
.site-seals { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 12px 24px; }
.site-seals img { height: 32px; width: auto; filter: grayscale(1); opacity: .75; }

/* ---- chamada (cta_banner): o "próximo passo" da página — card--primario, um por página */
.site-cta .t-lead { max-width: 60ch; }

/* ---- botão (button_centered), imagem, galeria, vídeo, divisor */
.site-image figure, .site-video figure { width: 100%; max-width: 720px; margin: 0 auto; display: flex; flex-direction: column; gap: 10px; }
.site-image--sm figure { max-width: 480px; }
.site-image--full figure { max-width: none; }
.site-image img { width: 100%; display: block; border-radius: var(--r-card); }
.site-image figcaption, .site-video figcaption { text-align: center; }
.site-gallery img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; border-radius: var(--r-mini); }
.site-video figure { max-width: 820px; }
.site-divider { align-items: center; }
.site-divider--dots::before { content: ""; display: block; margin: 0; }
.site-divider--line::before { content: ""; width: 64px; height: 4px; border-radius: 99px; background: var(--text-faint); opacity: .5; }

/* ---- TOPO DO SITE (_header_chrome): Clássico · Central · Flutuante; itens texto ou botão; submenu */
.site-header { position: relative; z-index: 20; display: flex; align-items: center; gap: 20px; margin: 0 -10px; padding: 12px 20px; background: color-mix(in srgb, var(--canvas) 86%, transparent); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); }
.site-header--sticky { position: sticky; top: var(--doc-h, 0px); }
.site-header__nav { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.site-header--align-left .site-header__nav { margin-left: 8px; }
.site-header--align-center .site-header__nav { margin-inline: auto; }
.site-header__nav > a:not(.btn), .site-header__item > button { display: inline-flex; align-items: center; gap: 4px; height: 38px; padding: 0 14px; border: 0; border-radius: 99px; background: transparent; text-decoration: none; font: 700 14.5px var(--font-text); color: var(--text-muted); cursor: pointer; white-space: nowrap; transition: background-color var(--d-2), color var(--d-2); }
.site-header__nav > a:not(.btn):hover, .site-header__item > button:hover, .site-header__nav > a[aria-current], .site-header__item > button[aria-expanded="true"] { background: var(--surface-2); color: var(--text); }
.site-header__nav > .btn { margin-left: 8px; }
.site-header__item { position: relative; }
.site-header__item > button .lucide { width: 16px; height: 16px; }
.site-header__item > .menu { top: calc(100% + 6px); left: 0; }
.site-header__menu-btn { display: none; margin-left: auto; }
.site-header--centered { flex-direction: column; gap: 6px; padding-block: 16px 10px; }
.site-header--centered .site-header__nav { margin: 0; }
.site-header--floating { position: absolute; top: 10px; left: 10px; right: 10px; margin: 0; border-radius: var(--r-card); background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none; color: #FFFFFF; --text: #FFFFFF; --text-muted: rgb(255 255 255 / .86); --surface-2: rgb(255 255 255 / .16); }
.site-header--floating .logo { filter: brightness(0) invert(1); }
@container site (max-width: 900px) { .site-header__nav { display: none; } .site-header__menu-btn { display: inline-grid; } .site-header--centered { flex-direction: row; } }
.site-drawer__nav { display: flex; flex-direction: column; gap: 4px; }
.site-drawer__nav > a:not(.btn) { padding: 12px 14px; border-radius: 14px; font-weight: 700; text-decoration: none; color: var(--text); }
.site-drawer__nav > a:not(.btn):hover, .site-drawer__nav > a[aria-current] { background: var(--surface-2); }
.site-drawer__nav > .btn { margin-top: 6px; }
.site-drawer__nav .accordion__panel { display: flex; flex-direction: column; gap: 2px; }
.site-drawer__nav .accordion__panel a { padding: 8px 4px; font-weight: 700; color: var(--text-muted); text-decoration: none; }

/* ---- RODAPÉ DO SITE (_footer_chrome): Clássico · Colunas · Compacto + redes sociais */
.site-footer { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 14px 24px; }
.site-footer__nav { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 14px; }
.site-footer__col { display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.site-footer__nav a, .site-footer__col a { text-decoration: none; color: var(--text-muted); }
.site-footer__nav a:hover, .site-footer__col a:hover { color: var(--text); }
.site-footer__copyright { margin-left: auto; }
.site-footer--columns { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr)); align-items: start; gap: 24px; }
.site-footer--columns .site-footer__copyright { grid-column: 1 / -1; margin: 0; }
.site-footer__columns { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.site-footer--columns > .site-footer__columns { grid-column: 2 / -1; }
.site-footer--compact { flex-direction: column; justify-content: center; text-align: center; }
.site-footer--compact .site-footer__copyright { margin: 0; }
.site-social { display: flex; flex-wrap: wrap; gap: 6px; }
@container site (max-width: 900px) { .site-footer--columns { grid-template-columns: 1fr 1fr; } .site-footer--columns > :first-child, .site-footer--columns > .site-footer__columns { grid-column: 1 / -1; } .site-footer__columns { grid-template-columns: 1fr 1fr; } }
@container site (max-width: 560px) { .site-footer { flex-direction: column; align-items: flex-start; } .site-footer__copyright { margin: 0; } .site-footer--compact { align-items: center; } }

/* ---- EDITOR (page_builder/editor_v2): topo + lista de componentes (2 estados) + canvas. Sem painel à direita. */
.page-editor { display: flex; flex-direction: column; height: calc(100vh - var(--doc-h, 0px)); min-height: 560px; }
.page-editor__top { display: flex; align-items: center; gap: 10px; padding: 10px 12px; }
.page-editor__title { display: inline-flex; align-items: center; gap: 8px; min-width: 0; height: 40px; padding: 0 12px; border: 0; border-radius: 12px; background: transparent; font: 600 17px var(--font-display); color: var(--text); cursor: pointer; }
.page-editor__title span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.page-editor__title .lucide { width: 16px; height: 16px; flex: none; color: var(--text-muted); }
.page-editor__title:hover { background: var(--surface-2); }
.page-editor__body { flex: 1; min-height: 0; display: grid; grid-template-columns: 400px minmax(0, 1fr); gap: var(--gap); padding: 0 10px 10px; }
.page-editor__side { overflow: auto; display: flex; flex-direction: column; gap: 14px; }
.page-editor__side > * { flex-shrink: 0; }   /* a lateral rola; nenhum filho encolhe (abas e segmentados têm rolagem própria) */
.page-editor__stage { border-radius: var(--r-card); background: var(--surface-2); overflow: auto; padding: 18px; display: flex; flex-direction: column; gap: var(--gap); }
.page-editor__page { width: 100%; max-width: 1180px; margin: 0 auto; border-radius: 22px; background: var(--canvas); overflow: clip; }
.canvas-block { position: relative; border-radius: var(--r-card); cursor: pointer; transition: box-shadow var(--d-2); }
.canvas-block:hover { box-shadow: 0 0 0 2px color-mix(in srgb, var(--text) 22%, transparent); }
.canvas-block.selected { box-shadow: 0 0 0 2px var(--text), 0 0 0 6px color-mix(in srgb, var(--accent) 45%, transparent); }
.canvas-block__label { position: absolute; z-index: 3; top: 12px; left: 12px; }
.row--compact { gap: 8px; padding: 8px 8px 8px 4px; }
.row--disabled > :is(.type, .row__body) { opacity: .5; }
@media (max-width: 1440px) { .page-editor__body { grid-template-columns: 340px minmax(0, 1fr); } }
@media (max-width: 900px) { .page-editor__body { grid-template-columns: minmax(0, 1fr); } .page-editor__side { display: none; } .page-editor__stage { padding: 8px; } }
@media (max-width: 900px) { .page-editor__side.open { display: flex; position: fixed; z-index: 40; left: 10px; right: 10px; bottom: 10px; max-height: 72vh; box-shadow: var(--shadow-float); background: var(--surface-solid); } }
@media (max-width: 900px) { .page-editor--stacked { height: auto; } .page-editor--stacked .page-editor__side { display: flex; position: static; max-height: none; box-shadow: none; } .page-editor--stacked .page-editor__stage { overflow: visible; } }
@media (min-width: 901px) { .editor-narrow-only { display: none !important; } }
@media (max-width: 900px) { .hide-narrow { display: none !important; } }

/* ---- catálogo "Adicionar componente": miniatura = o componente real em escala (sem clique, sem foco) */
.modal--wide { width: min(1040px, 100%); }
.catalog-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--gap); }
.catalog-item { display: flex; flex-direction: column; gap: 10px; text-align: left; border: 0; font: inherit; color: inherit; cursor: pointer; }
.thumbnail { position: relative; aspect-ratio: 16 / 10; overflow: hidden; border-radius: 14px; background: var(--canvas); }
.thumbnail__scale { width: 400%; padding: 10px; transform: scale(.25); transform-origin: 0 0; pointer-events: none; display: flex; flex-direction: column; gap: var(--gap); }

/* ---- campos do painel que só o construtor usa: lista de itens (repeater), espaçamento, cores do tema */
.repeater { display: flex; flex-direction: column; gap: 8px; }
.repeater__item { --field-bg: var(--surface-solid); display: flex; flex-direction: column; gap: 12px; padding: 12px; border-radius: var(--r-mini); background: var(--surface-2); }
.repeater__head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.spacing-field__grid { display: grid; grid-template-columns: minmax(0, 1fr) 84px 84px; align-items: center; gap: 6px 8px; font-size: 13.5px; font-weight: 700; color: var(--text-muted); }
.swatches { display: flex; flex-wrap: wrap; gap: 6px; }
.swatch { width: 28px; height: 28px; padding: 0; border: 0; border-radius: 9px; background: var(--color); box-shadow: inset 0 0 0 1px rgb(0 0 0 / .12); cursor: pointer; transition: transform var(--d-2) var(--ease-spring); }
.swatch:hover { transform: scale(1.1); }
.swatch[aria-pressed="true"] { box-shadow: 0 0 0 2px var(--surface-solid), 0 0 0 4px var(--text); }

/* ---- editor de menus (menu_editor): itens em árvore, um nível de subitem */
.menu-items { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.menu-items .menu-items { margin: 6px 0 0 28px; }
.btn-icon[aria-pressed="true"] { background: var(--inverse); color: var(--inverse-text); }
.menu button:disabled { opacity: .6; cursor: not-allowed; }
.menu button:disabled:hover { background: transparent; }
.menu button .badge { margin-left: auto; }
/* ---- nome de cada peça (raiz do componente no template) */
.site-benefits, .site-testimonials, .site-numbers, .site-gallery { background: none; }   /* regra 4: o componente de itens não tem fundo; os itens são os cards */
.site-testimonials .testimonial figcaption { margin-top: auto; }                               /* autores na mesma linha, qualquer tamanho de citação */
.site-text > .prose { width: 100%; }
.site-quote { justify-content: center; }
.site-button .btn { max-width: 100%; }
/* ---- lista do editor e itens do menu: alça só visual, título sem cara de link */
.handle { display: inline-grid; place-items: center; width: 20px; flex: none; cursor: grab; color: var(--text-faint); }
.handle .lucide { width: 16px; height: 16px; }
.row a.row__title { color: inherit; text-decoration: none; }
.row a.row__title:hover { text-decoration: underline; text-underline-offset: 3px; }

