:root{--font-sans:system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;--font-size-base:1.125rem;--line-height:1.6;--measure:72ch;--color-bg:#ffffff;--color-surface:#f4f6f8;--color-text:#15202b;--color-muted:#5b6b7b;--color-primary:#0a5bd3;--color-primary-contrast:#ffffff;--color-border:#dbe2ea;--space-none:0;--space-sm:0.75rem;--space-md:1.5rem;--space-lg:3rem;--space-xl:5rem;--radius:0.5rem;--button-padding:0.7rem 1.4rem;}@media (prefers-color-scheme: dark){:root{--color-bg:#0f1720;--color-surface:#17222e;--color-text:#e7edf3;--color-muted:#9fb0c0;--color-primary:#5aa2ff;--color-primary-contrast:#0b1119;--color-border:#2a3a4a;}}
/* HavCMS default theme — block styles. Driven by custom properties emitted
   from theme.json (brief §8). No JS; lean and semantic. The :root token block
   is prepended by ThemeCssBuilder. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
    margin: 0;
    font-family: var(--font-sans);
    font-size: var(--font-size-base);
    line-height: var(--line-height);
    color: var(--color-text);
    background: var(--color-bg);
}
img, picture, video { max-width: 100%; height: auto; display: block; }
a { color: var(--color-primary); }
main { display: block; }

/* Structure ---------------------------------------------------------------- */
.blk-section { padding-inline: var(--space-md); }
.blk-section > * { max-width: var(--measure); margin-inline: auto; }
.blk-section--pad-none { padding-block: var(--space-none); }
.blk-section--pad-sm   { padding-block: var(--space-sm); }
.blk-section--pad-md   { padding-block: var(--space-md); }
.blk-section--pad-lg   { padding-block: var(--space-lg); }
.blk-section--pad-xl   { padding-block: var(--space-xl); }
.blk-section--bg-surface { background: var(--color-surface); }
.blk-section--bg-primary { background: var(--color-primary); color: var(--color-primary-contrast); }

.blk-columns { display: grid; gap: var(--space-md); }
.blk-columns--gap-none { gap: var(--space-none); }
.blk-columns--gap-sm   { gap: var(--space-sm); }
.blk-columns--gap-md   { gap: var(--space-md); }
.blk-columns--gap-lg   { gap: var(--space-lg); }
.blk-columns--count-2 { grid-template-columns: repeat(2, 1fr); }
.blk-columns--count-3 { grid-template-columns: repeat(3, 1fr); }
.blk-columns--count-4 { grid-template-columns: repeat(4, 1fr); }
.blk-columns--count-5 { grid-template-columns: repeat(5, 1fr); }
.blk-columns--count-6 { grid-template-columns: repeat(6, 1fr); }

/* Text --------------------------------------------------------------------- */
.blk-heading { line-height: 1.2; margin: 0 0 var(--space-sm); }
.blk-heading--start  { text-align: start; }
.blk-heading--center { text-align: center; }
.blk-heading--end    { text-align: end; }
.blk-paragraph { margin: 0 0 var(--space-md); }
.blk-paragraph--center { text-align: center; }
.blk-paragraph--end    { text-align: end; }
.blk-paragraph p:last-child { margin-bottom: 0; }

/* Highlight ---------------------------------------------------------------- */
.blk-button {
    display: inline-block;
    padding: var(--button-padding);
    border-radius: var(--radius);
    text-decoration: none;
    font-weight: 600;
    border: 1px solid transparent;
}
.blk-button--primary   { background: var(--color-primary); color: var(--color-primary-contrast); }
.blk-button--secondary { background: var(--color-surface); color: var(--color-text); border-color: var(--color-border); }
.blk-button--ghost     { background: transparent; color: var(--color-primary); border-color: var(--color-primary); }

.blk-image { margin: 0 0 var(--space-md); }
.blk-image figcaption { color: var(--color-muted); font-size: 0.9rem; margin-top: var(--space-sm); }

.blk-group { display: flex; flex-direction: column; gap: var(--space-md); }
.blk-group--center { align-items: center; text-align: center; }
.blk-group--end { align-items: end; }

.blk-card {
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    background: var(--color-bg);
}
.blk-card--padded { padding: var(--space-md); }

.blk-callout {
    border-inline-start: 4px solid var(--color-primary);
    border-radius: var(--radius);
    padding: var(--space-md);
    background: var(--color-surface);
}
.blk-callout--success { border-color: #1a7f37; }
.blk-callout--warning { border-color: #bf8700; }

.blk-divider { border: 0; border-top: 1px solid var(--color-border); margin-block: var(--space-md); }
.blk-divider--dashed { border-top-style: dashed; }
.blk-divider--dotted { border-top-style: dotted; }

.blk-spacer--sm { height: var(--space-sm); }
.blk-spacer--md { height: var(--space-md); }
.blk-spacer--lg { height: var(--space-lg); }
.blk-spacer--xl { height: var(--space-xl); }

.blk-quote {
    margin: 0 0 var(--space-md);
    padding-inline-start: var(--space-md);
    border-inline-start: 3px solid var(--color-primary);
    font-style: italic;
}
.blk-quote__cite { display: block; margin-top: var(--space-sm); font-style: normal; color: var(--color-muted); }

/* Accessibility & responsiveness ------------------------------------------- */
:where(a, .blk-button):focus-visible { outline: 3px solid var(--color-primary); outline-offset: 2px; }

@media (max-width: 1024px) {
    .blk-columns--count-4, .blk-columns--count-5, .blk-columns--count-6 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
    .blk-columns { grid-template-columns: 1fr !important; }
    .blk-section { padding-inline: var(--space-sm); }
}
@media (prefers-reduced-motion: reduce) {
    * { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }
}

.blk-menu__list { list-style: none; margin: 0; padding: 0; display: flex; gap: var(--space-md); flex-wrap: wrap; }
.blk-menu--vertical .blk-menu__list { flex-direction: column; gap: var(--space-sm); }
.blk-menu__item a { text-decoration: none; font-weight: 600; }
.blk-menu__item .blk-menu__list { gap: var(--space-sm); margin-block-start: var(--space-sm); }
.blk-menu__item .blk-menu__item a { font-weight: 400; }

.blk-form { max-width: 40rem; }
.blk-form__field { margin-bottom: var(--space-md); }
.blk-form__field label { display: block; margin-bottom: 0.3rem; font-weight: 600; }
.blk-form__field input, .blk-form__field textarea {
    width: 100%; padding: 0.6rem; border: 1px solid var(--color-border);
    border-radius: var(--radius); font: inherit; background: var(--color-bg); color: var(--color-text);
}
.blk-form__field textarea { min-height: 8rem; }
.blk-form__consent { margin-bottom: var(--space-md); }
.blk-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Data & interactive blocks */
.blk-table { margin: var(--space-md) 0; overflow-x: auto; }
.blk-table table { border-collapse: collapse; width: 100%; }
.blk-table caption { caption-side: top; text-align: start; color: var(--color-muted); padding-bottom: var(--space-sm); }
.blk-table th, .blk-table td { border: 1px solid var(--color-border); padding: var(--space-sm); text-align: start; vertical-align: top; }
.blk-table thead th { background: var(--color-surface); }

.blk-gallery { display: grid; gap: var(--space-sm); margin: var(--space-md) 0; grid-template-columns: repeat(2, 1fr); }
.blk-gallery--cols-3 { grid-template-columns: repeat(3, 1fr); }
.blk-gallery--cols-4 { grid-template-columns: repeat(4, 1fr); }
.blk-gallery__item { margin: 0; }
.blk-gallery__link { display: block; }
.blk-gallery img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: var(--radius); aspect-ratio: 4 / 3; }
.blk-gallery figcaption { color: var(--color-muted); font-size: 0.9em; margin-top: 0.3rem; }

.blk-lightbox { position: fixed; inset: 0; background: rgba(0,0,0,0.85); display: none; align-items: center; justify-content: center; padding: var(--space-md); z-index: 1000; cursor: zoom-out; }
.blk-lightbox.is-open { display: flex; }
.blk-lightbox img { max-width: 100%; max-height: 100%; object-fit: contain; }

.blk-slider { position: relative; margin: var(--space-md) 0; }
.blk-slider__track { display: flex; gap: var(--space-sm); overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; }
.blk-slider__slide { margin: 0; flex: 0 0 100%; scroll-snap-align: center; }
.blk-slider__slide img { display: block; width: 100%; height: auto; border-radius: var(--radius); }
.blk-slider__slide figcaption { color: var(--color-muted); font-size: 0.9em; margin-top: 0.3rem; text-align: center; }
.blk-slider__nav { position: absolute; top: 50%; transform: translateY(-50%); width: 2.5rem; height: 2.5rem; border: 0; border-radius: 50%; background: var(--color-primary); color: var(--color-primary-contrast); font-size: 1.25rem; line-height: 1; cursor: pointer; opacity: 0.85; }
.blk-slider__nav:hover { opacity: 1; }
.blk-slider__nav--prev { left: var(--space-sm); }
.blk-slider__nav--next { right: var(--space-sm); }
.blk-slider__nav--prev::before { content: "‹"; }
.blk-slider__nav--next::before { content: "›"; }
@media (max-width: 640px) {
    .blk-gallery, .blk-gallery--cols-3, .blk-gallery--cols-4 { grid-template-columns: repeat(2, 1fr); }
}

/* Blog index */
.blog-list { list-style: none; margin: 0; padding: 0; }
.blog-list__item { margin-bottom: var(--space-lg); }
.blog-list__item h2 { margin-bottom: 0.2rem; }
.blog-list__item h2 a { text-decoration: none; }
.blog-list__date { color: var(--color-muted); font-size: 0.9rem; margin: 0 0 0.3rem; }

/* Language switcher */
.lang-switcher { display: flex; gap: var(--space-sm); justify-content: flex-end; padding: var(--space-sm) var(--space-md); font-size: 0.9rem; background: var(--color-surface); }
.lang-switcher a { text-decoration: none; }
.lang-switcher__current { color: var(--color-muted); font-weight: 600; }

/* Internal search */
.search-form { display: flex; gap: var(--space-sm); margin-bottom: var(--space-lg); max-width: 40rem; }
.search-form input { flex: 1; padding: 0.6rem; border: 1px solid var(--color-border); border-radius: var(--radius); font: inherit; }
.search-results { list-style: none; margin: 0; padding: 0; }
.search-results__item { margin-bottom: var(--space-sm); }
.search-results__kind { color: var(--color-muted); font-size: 0.85rem; margin-left: 0.5rem; }

/* LGPD cookie consent banner */
.consent-banner { position: fixed; inset-inline: 0; bottom: 0; z-index: 900; background: var(--color-surface); border-top: 1px solid var(--color-border); padding: var(--space-md); display: flex; flex-wrap: wrap; gap: var(--space-md); align-items: center; justify-content: space-between; }
.consent-banner__text { margin: 0; flex: 1 1 20rem; font-size: 0.95rem; }
.consent-banner__actions { display: flex; gap: var(--space-sm); }
.consent-banner.is-visible { display: flex; }
@media (max-width: 640px) { .consent-banner { flex-direction: column; align-items: stretch; } }
