/*
Theme Name: Portal Taboão Seguro
Theme URI: https://www.camarataboao.sp.gov.br/
Author: Câmara Municipal de Taboão da Serra
Description: Tema institucional reescrito com foco em segurança, acessibilidade e compatibilidade com os dados legados.
Version: 1.5.0
Requires at least: 6.8
Requires PHP: 8.2
Text Domain: portal-taboao-seguro
*/

:root {
    --color-brand: #a51c30;
    --color-brand-dark: #741322;
    --color-accent: #f2c94c;
    --color-ink: #242126;
    --color-muted: #625d64;
    --color-line: #e3dee1;
    --color-surface: #f7f5f6;
    --color-white: #fff;
    --shadow: 0 12px 34px rgba(70, 18, 29, .12);
    --radius: .75rem;
    --content: 1400px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    color: var(--color-ink);
    background: var(--color-white);
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 1rem;
    line-height: 1.65;
}
img { max-width: 100%; height: auto; }
a { color: var(--color-brand); text-underline-offset: .18em; }
a:hover { color: var(--color-brand-dark); }
button, input, select, textarea { font: inherit; }
:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }

.container { width: min(calc(100% - 2rem), var(--content)); margin-inline: auto; }
.screen-reader-text {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.screen-reader-text:focus {
    position: fixed; z-index: 100000; top: 1rem; left: 1rem; width: auto; height: auto;
    clip: auto; padding: .75rem 1rem; margin: 0; color: #000; background: #fff;
}
.skip-link { font-weight: 700; }

.site-header { position: relative; z-index: 100; margin-bottom: 30px; background: var(--color-white); border-bottom: 1px solid var(--color-line); box-shadow: 0 6px 12px rgba(0,0,0,.175); }
.utility-bar { height: 40px; color: #fff; background: #1b1b1b url("assets/images/header-strip.png") center / 100% 100% no-repeat; font-family: Georgia, "Times New Roman", serif; font-size: 14px; }
/* header-strip.png termina numa diagonal branca seguida de vermelho: a área
   escura utilizável acaba em 98,3% da largura no topo da faixa e 99,6% na
   base. Com o recuo padrão os links paravam a 8px dessa borda. */
.utility-bar .container { position: relative; display: flex; width: 100%; min-height: 40px; align-items: center; justify-content: flex-end; gap: 1rem; padding: 0 clamp(20px, 5.2%, 75px) 0 20px; }
.utility-date { position: absolute; left: 50%; font-weight: 700; transform: translateX(-50%); white-space: nowrap; }
.utility-links { display: flex; gap: 1rem; }
.utility-bar a { color: #fff; text-decoration: none; }
.utility-bar a:hover, .utility-bar a:focus-visible { text-decoration: underline; }
.site-header .branding-row {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    width: min(calc(100% - 2rem), 1400px);
    min-height: 106px;
    align-items: center;
    gap: 12px;
    padding: 8px 30px;
    overflow: visible;
}
.site-branding { display: flex; flex: 0 0 auto; align-items: center; gap: .9rem; justify-self: start; color: var(--color-brand-dark); text-decoration: none; }
.site-branding img, .custom-logo { width: auto; max-width: min(270px, 50vw); height: 60px; object-fit: contain; }
.site-title { display: block; font-size: clamp(1.05rem, 2vw, 1.4rem); font-weight: 800; line-height: 1.2; }
.site-description { display: block; color: var(--color-muted); font-size: .88rem; }
.menu-toggle { display: none; border: 1px solid var(--color-line); border-radius: .5rem; padding: .6rem .8rem; background: #fff; }
.site-header .primary-navigation { justify-self: center; min-width: 0; overflow: visible; }
.site-header .primary-navigation > ul {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    gap: 4px;
    padding: 0;
    margin: 0;
    list-style: none;
}
.primary-navigation > ul > li { position: relative; flex: 0 0 auto; }
.primary-navigation > ul > li > a {
    display: flex;
    min-height: 60px;
    align-items: center;
    justify-content: center;
    padding: 0 10px;
    border-radius: 6px;
    color: #333;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.2;
    white-space: nowrap;
    text-decoration: none;
    text-transform: uppercase;
}
.primary-navigation > ul > li > a:hover,
.primary-navigation > ul > .current-menu-item > a,
.primary-navigation > ul > .current-menu-ancestor > a {
    color: var(--color-brand);
    background: rgba(165, 28, 48, .05);
}
.primary-navigation .menu-item-has-children > a::after { margin-left: .35rem; content: "\f107"; font-family: "Font Awesome 5 Free"; font-weight: 900; font-size: .85rem; }
.primary-navigation .sub-menu {
    position: absolute;
    z-index: 30;
    top: 100%;
    left: 0;
    display: block;
    min-width: 258px;
    padding: 0;
    margin: 0;
    list-style: none;
    overflow: hidden;
    border: 1px solid rgba(165, 28, 48, .12);
    border-radius: 14px;
    opacity: 0;
    visibility: hidden;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 14px 40px rgba(0, 0, 0, .1), 0 4px 12px rgba(165, 28, 48, .07);
    transform: translateY(12px);
    transition: opacity .18s ease, transform .18s ease, visibility .18s ease;
}
.primary-navigation .sub-menu li { display: block; }
.primary-navigation .sub-menu a {
    display: block;
    min-height: 0;
    padding: .65rem .9rem;
    border-bottom: 1px solid var(--color-line);
    color: #333;
    font-size: .78rem;
    font-weight: 600;
    line-height: 1.35;
    text-transform: none;
    text-decoration: none;
    white-space: normal;
}
.primary-navigation .sub-menu a:hover,
.primary-navigation .sub-menu .current-menu-item > a {
    color: var(--color-brand);
    background: rgba(165, 28, 48, .05);
}
.primary-navigation .sub-menu li:last-child a { border-bottom: 0; }
.primary-navigation li:hover > .sub-menu,
.primary-navigation li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.menu-principal--missing { margin: 0; padding: .75rem 1rem; color: var(--color-brand-dark); font-size: .82rem; line-height: 1.4; background: #fff5f6; border: 1px dashed rgba(165, 28, 48, .35); border-radius: .5rem; }
.site-header .access-info-seal { justify-self: end; margin-left: 0; }
.access-info-seal { display: flex; flex: 0 0 auto; align-items: center; justify-content: center; }
.access-info-seal img { width: 123px; height: 45px; object-fit: contain; image-rendering: auto; }

.site-main { min-height: 55vh; }
.page-hero { padding-block: clamp(2.25rem, 6vw, 4.5rem); color: #fff; background: linear-gradient(125deg, var(--color-brand-dark), var(--color-brand)); }
.page-hero h1 { max-width: 900px; margin: 0; font-size: clamp(2rem, 5vw, 3.5rem); line-height: 1.08; }
.page-hero p { max-width: 760px; margin: .9rem 0 0; font-size: 1.12rem; }
.content-section { padding-block: clamp(2rem, 5vw, 4rem); }
.content-section--muted { background: var(--color-surface); }
.entry-content { max-width: 860px; }
.entry-content > *:first-child { margin-top: 0; }
.entry-content h2, .entry-content h3 { line-height: 1.25; }
.entry-content h2 { margin-top: 2.2rem; color: var(--color-brand-dark); }
.entry-content table { width: 100%; border-collapse: collapse; }
.entry-content th, .entry-content td { padding: .65rem; border: 1px solid var(--color-line); text-align: left; }

.grid { display: grid; gap: 1.25rem; }
.grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.card { overflow: hidden; padding: 1.25rem; border: 1px solid var(--color-line); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow); }
.card > :first-child { margin-top: 0; }
.card > :last-child { margin-bottom: 0; }
.card__image { width: calc(100% + 2.5rem); max-width: none; height: 220px; margin: -1.25rem -1.25rem 1rem; object-fit: cover; }
.card__meta { color: var(--color-muted); font-size: .9rem; }
.card__title { margin: .25rem 0 .7rem; font-size: 1.25rem; line-height: 1.25; }
.card__title a { color: var(--color-brand-dark); text-decoration: none; }
.button, button[type="submit"] {
    display: inline-flex; align-items: center; justify-content: center; min-height: 44px;
    border: 0; border-radius: .45rem; padding: .65rem 1rem; color: #fff;
    background: var(--color-brand); font-weight: 750; text-decoration: none; cursor: pointer;
}
.button:hover, button[type="submit"]:hover { color: #fff; background: var(--color-brand-dark); }
.button--light { color: var(--color-brand-dark); background: #fff; }
.button--secondary { color: var(--color-brand-dark); background: #f3e8eb; }

.home-hero { padding-block: clamp(3.5rem, 8vw, 7rem); color: #fff; background: linear-gradient(115deg, rgba(78, 13, 24, .97), rgba(165, 28, 48, .87)); }
.home-hero h1 { max-width: 850px; margin: 0; font-size: clamp(2.3rem, 6vw, 4.5rem); line-height: 1.04; }
.home-hero p { max-width: 720px; font-size: 1.18rem; }
.quick-links { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-top: -2.2rem; position: relative; }
.quick-link { padding: 1.2rem; border-radius: var(--radius); color: var(--color-brand-dark); background: #fff; box-shadow: var(--shadow); font-weight: 800; text-decoration: none; }

.document-list, .event-list { padding: 0; margin: 1.5rem 0; list-style: none; }
.document-list li, .event-list li { padding: 1rem 0; border-bottom: 1px solid var(--color-line); }
.document-list li:first-child, .event-list li:first-child { border-top: 1px solid var(--color-line); }

.agenda-page { padding-block: 40px; background: var(--color-surface); }

.agenda-calendar {
    overflow: hidden;
    border: 1px solid #ddd;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .06);
}
.agenda-calendar__toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.1rem 1.25rem;
    border-bottom: 1px solid #e8e8e8;
}
.agenda-calendar__month { margin: 0; color: #333; font-size: 1.45rem; font-weight: 700; text-transform: lowercase; }
.agenda-calendar__nav { display: flex; align-items: center; gap: .65rem; }
.agenda-calendar__today {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: .35rem .95rem;
    border: 1px solid #ccc;
    border-radius: 6px;
    color: #333;
    background: #f5f5f5;
    font-size: .9rem;
    font-weight: 600;
    text-decoration: none;
}
.agenda-calendar__today:hover { background: #eee; }
.agenda-calendar__arrows { display: flex; overflow: hidden; border-radius: 6px; }
.agenda-calendar__arrow {
    display: grid;
    width: 40px;
    min-height: 36px;
    place-items: center;
    color: #fff;
    background: #3d4f63;
    font-size: 1.35rem;
    line-height: 1;
    text-decoration: none;
}
.agenda-calendar__arrow + .agenda-calendar__arrow { border-left: 1px solid rgba(255, 255, 255, .25); }
.agenda-calendar__arrow:hover { background: #2f3e4f; }
.agenda-calendar__weekdays {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    border-bottom: 1px solid #e8e8e8;
    background: #fafafa;
}
.agenda-calendar__weekday {
    padding: .55rem .35rem;
    color: #666;
    font-size: .78rem;
    font-weight: 600;
    text-align: center;
    text-transform: lowercase;
}
.agenda-calendar__grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    grid-auto-rows: minmax(110px, auto);
}
.agenda-calendar__cell {
    display: flex;
    min-height: 110px;
    flex-direction: column;
    padding: .35rem .4rem .45rem;
    border-right: 1px solid #eee;
    border-bottom: 1px solid #eee;
    background: #fff;
}
.agenda-calendar__cell:nth-child(7n) { border-right: 0; }
.agenda-calendar__cell.is-outside { background: #fcfcfc; }
.agenda-calendar__cell.is-outside .agenda-calendar__daynum { color: #bbb; }
.agenda-calendar__cell.is-today { background: #fff9fa; }
.agenda-calendar__cell.is-today .agenda-calendar__daynum {
    display: inline-flex;
    width: 1.65rem;
    height: 1.65rem;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: #fff;
    background: var(--color-brand);
}
.agenda-calendar__cell-head { display: flex; justify-content: flex-end; margin-bottom: .2rem; }
.agenda-calendar__daynum { color: #444; font-size: .82rem; font-weight: 600; line-height: 1.2; }
.agenda-calendar__events { flex: 1 1 auto; padding: 0; margin: 0; list-style: none; overflow: auto; }
.agenda-calendar__event { margin-bottom: .25rem; font-size: .72rem; line-height: 1.25; }
.agenda-calendar__event-btn {
    width: 100%;
    padding: .2rem .25rem;
    border: 0;
    border-radius: 4px;
    color: inherit;
    background: transparent;
    font: inherit;
    text-align: left;
    cursor: pointer;
}
.agenda-calendar__event-btn:hover { background: rgba(165, 28, 48, .08); }
.agenda-calendar__event-btn:focus-visible { outline: 2px solid var(--color-brand); outline-offset: 1px; }
.agenda-calendar__event-time { display: block; color: var(--color-brand-dark); font-weight: 700; }
.agenda-calendar__event-title { display: block; color: #333; }
.agenda-calendar__empty { margin-top: 1.25rem; text-align: center; }

body.agenda-modal-open { overflow: hidden; }
.agenda-modal { position: fixed; inset: 0; z-index: 100000; display: grid; place-items: center; padding: 1rem; }
.agenda-modal[hidden] { display: none !important; }
.agenda-modal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, .55); }
.agenda-modal__dialog {
    position: relative;
    display: flex;
    width: min(920px, 100%);
    max-height: min(90vh, 900px);
    flex-direction: column;
    overflow: hidden;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 20px 50px rgba(0, 0, 0, .25);
}
.agenda-modal__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.15rem;
    border-bottom: 1px solid var(--color-line);
}
.agenda-modal__title { margin: 0; color: var(--color-brand-dark); font-size: 1.15rem; line-height: 1.35; }
.agenda-modal__time { margin: .35rem 0 0; color: var(--color-muted); font-size: .92rem; }
.agenda-modal__close {
    width: 36px;
    min-height: 36px;
    padding: 0;
    border: 0;
    border-radius: 50%;
    color: #666;
    background: #f0f0f0;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
}
.agenda-modal__close:hover { background: #e4e4e4; }
.agenda-modal__body { flex: 1 1 auto; min-height: 280px; background: #525659; }
.agenda-modal__pdf { display: block; width: 100%; height: min(58vh, 620px); border: 0; background: #fff; }
.agenda-modal__no-pdf { padding: 2rem 1.25rem; margin: 0; color: #eee; text-align: center; }
.agenda-modal__footer {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .65rem;
    padding: .85rem 1.15rem;
    border-top: 1px solid var(--color-line);
    background: #fafafa;
}
.agenda-modal__gcal { text-decoration: none; }
.agenda-modal__pdf-open { color: var(--color-brand); font-weight: 650; }
.agenda-modal__dismiss { margin-left: auto; }

@media (max-width: 900px) {
    .agenda-calendar__grid { grid-auto-rows: minmax(88px, auto); }
    .agenda-calendar__cell { min-height: 88px; }
    .agenda-calendar__event { font-size: .66rem; }
}

@media (max-width: 640px) {
    .agenda-calendar__month { font-size: 1.15rem; }
    .agenda-calendar__grid { grid-auto-rows: minmax(72px, auto); }
    .agenda-calendar__cell { min-height: 72px; padding: .25rem; }
    .agenda-calendar__event-title {
        display: -webkit-box;
        overflow: hidden;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
    }
}
.document-links { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: .65rem; }
.file-unavailable { color: #7c2d12; font-size: .9rem; font-weight: 650; }
.notice { padding: 1rem 1.2rem; border-left: 5px solid var(--color-accent); background: #fff8dc; }
.notice--success { border-color: #16834f; background: #e8f8ef; }
.notice--error { border-color: #b42318; background: #fff0ee; }

.form { max-width: 760px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.form-field { margin-bottom: 1rem; }
.form-field--full { grid-column: 1 / -1; }
.form label { display: block; margin-bottom: .25rem; font-weight: 750; }
.form input:not([type="checkbox"]), .form select, .form textarea {
    width: 100%; min-height: 46px; border: 1px solid #91a199; border-radius: .4rem; padding: .65rem .75rem; background: #fff;
}
.form textarea { min-height: 150px; resize: vertical; }
.form-honeypot { position: absolute !important; left: -10000px !important; }
.form-help { color: var(--color-muted); font-size: .9rem; }

.pagination { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 2rem; }
.pagination .page-numbers { padding: .4rem .7rem; border: 1px solid var(--color-line); border-radius: .35rem; text-decoration: none; }

/* Botões flutuantes — medidas e comportamento do portal anterior: pílula vinho
   com ícone pulsante, que depois de cinco segundos encolhe para um círculo
   vazado. O texto não some de vez como no original: fica só para leitor de
   tela, senão o botão perde o nome acessível. */
.float-action { position: fixed; z-index: 1000; bottom: 15px; display: flex; align-items: center; gap: 15px; border: 0; border-radius: 50px; padding: 15px 25px; color: #fff; background: var(--color-brand); box-shadow: 0 4px 15px rgba(165,28,48,.4); font: inherit; text-align: left; text-decoration: none; cursor: pointer; transition: background .3s ease, box-shadow .3s ease, padding .3s ease, transform .3s ease; }
.float-action--ouvidoria { left: 25px; }
.float-action--agenda { right: 25px; }
.float-action:hover { color: #fff; background: var(--color-brand-dark); text-decoration: none; transform: scale(1.05); }
.float-action:focus-visible { outline: 3px solid var(--color-brand-dark); outline-offset: 3px; }
.float-action__icon { display: grid; width: 40px; height: 40px; flex: 0 0 auto; place-items: center; border: 2px solid transparent; border-radius: 50%; background: rgba(255,255,255,.2); color: #fff; font-size: 20px; animation: cmtb-pulsa 2s infinite; transition: background .3s ease, border-color .3s ease, color .3s ease, font-size .3s ease, width .3s ease, height .3s ease; }
.float-action__text { display: flex; flex-direction: column; }
.float-action__text strong { font-size: 14px; line-height: 1.2; text-transform: uppercase; }
.float-action__text small { font-size: 12px; opacity: .9; }
.float-action.is-compact { padding: 0; background: transparent; box-shadow: none; }
.float-action.is-compact:hover { background: transparent; transform: scale(1.1); }
.float-action.is-compact .float-action__icon { width: 45px; height: 45px; border-color: rgba(165,28,48,.2); background: transparent; color: var(--color-brand); font-size: 25px; }
.float-action.is-compact:hover .float-action__icon { border-color: rgba(165,28,48,.4); }
.float-action.is-compact .float-action__text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* Abaixo de 700px as duas pílulas abertas não cabem lado a lado: no portal
   anterior elas se sobrepõem durante os cinco segundos iniciais, e a 390px uma
   cobre a outra por inteiro. Aqui já nascem recolhidas nessa faixa. */
@media (max-width: 700px) {
    .float-action { padding: 0; background: transparent; box-shadow: none; }
    .float-action:hover { background: transparent; transform: scale(1.1); }
    .float-action .float-action__icon { width: 45px; height: 45px; border-color: rgba(165,28,48,.2); background: transparent; color: var(--color-brand); font-size: 25px; }
    .float-action:hover .float-action__icon { border-color: rgba(165,28,48,.4); }
    .float-action .float-action__text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}

@keyframes cmtb-pulsa {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.1); }
}

/* Janela da Ouvidoria — o original é um modal montado à mão; aqui é <dialog>,
   que já traz foco preso, Esc e fundo escuro. O desenho é o de lá. */
.ouvidoria-dialog { width: min(90%, 800px); max-height: calc(100vh - 100px); border: 0; border-radius: 15px; padding: 0; color: var(--color-ink); box-shadow: 0 5px 25px rgba(0,0,0,.2); }
.ouvidoria-dialog::backdrop { background: rgba(0,0,0,.5); }
.ouvidoria-dialog__header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 20px 30px; border-radius: 15px 15px 0 0; color: #fff; background: var(--color-brand); }
.ouvidoria-dialog__header h2 { display: flex; align-items: center; gap: 10px; margin: 0; color: #fff; font-size: 24px; }
.ouvidoria-dialog__header button { border: 0; padding: 0 4px; color: #fff; background: none; font-size: 28px; font-weight: 700; line-height: 1; cursor: pointer; transition: opacity .3s ease; }
.ouvidoria-dialog__header button:hover { opacity: .8; }
.ouvidoria-dialog__body { padding: 30px; }
.ouvidoria-dialog__intro { margin: 0 0 30px; color: #666; font-size: 16px; text-align: center; }
.ouvidoria-options { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-bottom: 30px; }
.ouvidoria-option { display: flex; align-items: center; gap: 15px; padding: 20px; border-radius: 10px; color: #333; background: #f8f9fa; text-decoration: none; transition: background .3s ease, color .3s ease, transform .3s ease; }
.ouvidoria-option:hover { color: #fff; background: var(--color-brand); text-decoration: none; transform: translateY(-3px); }
.ouvidoria-option__icon { display: grid; width: 50px; height: 50px; flex: 0 0 auto; place-items: center; border-radius: 50%; color: #fff; background: var(--color-brand); font-size: 20px; transition: background .3s ease, color .3s ease; }
.ouvidoria-option:hover .ouvidoria-option__icon { color: var(--color-brand); background: #fff; }
.ouvidoria-option__text { display: flex; min-width: 0; flex-direction: column; }
.ouvidoria-option__text strong { margin-bottom: 5px; font-size: 16px; }
.ouvidoria-option__text small { font-size: 13px; opacity: .8; overflow-wrap: anywhere; }
.ouvidoria-dialog__info { padding: 20px; border-radius: 10px; background: #f8f9fa; }
.ouvidoria-dialog__info section + section { margin-top: 20px; }
.ouvidoria-dialog__info h3 { display: flex; align-items: center; gap: 10px; margin: 0 0 10px; color: var(--color-brand); font-size: 18px; }
.ouvidoria-dialog__info p { margin: 0; color: #666; line-height: 1.6; }

/* Aviso de cookies — medidas do banner do portal anterior. */
.cmtb-cookie-banner { position: fixed; right: 16px; bottom: 16px; left: 16px; z-index: 10050; max-width: 720px; margin: 0 auto; border: 1px solid #e5e5e5; border-radius: 14px; background: #fff; color: #333; box-shadow: 0 10px 40px rgba(0,0,0,.22); }
.cmtb-cookie-banner[hidden] { display: none; }
.cmtb-cookie-banner__inner { padding: 22px 24px; }
.cmtb-cookie-banner__title { margin: 0 0 10px; color: var(--color-brand); font-size: 1.2rem; font-weight: 700; }
.cmtb-cookie-banner__text, .cmtb-cookie-banner__prefs-intro { margin: 0 0 16px; color: #555; font-size: .95rem; line-height: 1.55; }
.cmtb-cookie-banner__text a { color: var(--color-brand); font-weight: 600; }
.cmtb-cookie-banner__actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.cmtb-cookie-btn { border: 0; border-radius: 8px; padding: 10px 16px; font: inherit; font-size: .92rem; font-weight: 600; line-height: 1.2; cursor: pointer; transition: background .2s ease, color .2s ease, transform .15s ease; }
.cmtb-cookie-btn:hover { transform: translateY(-1px); }
.cmtb-cookie-btn:focus-visible { outline: 3px solid var(--color-brand); outline-offset: 2px; }
.cmtb-cookie-btn--primary { color: #fff; background: var(--color-brand); }
.cmtb-cookie-btn--primary:hover { background: var(--color-brand-dark); }
.cmtb-cookie-btn--secondary { color: #333; background: #f1f1f1; }
.cmtb-cookie-btn--secondary:hover { background: #e4e4e4; }
.cmtb-cookie-btn--link { padding-right: 8px; padding-left: 8px; color: var(--color-brand); background: transparent; }
.cmtb-cookie-option { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 10px; padding: 12px; border: 1px solid #eee; border-radius: 10px; background: #fafafa; cursor: pointer; }
.cmtb-cookie-option input { width: 18px; height: 18px; margin-top: 4px; flex-shrink: 0; }
.cmtb-cookie-option strong { display: block; margin-bottom: 4px; color: #222; }
.cmtb-cookie-option small { display: block; color: #666; line-height: 1.4; }

@media (max-width: 640px) {
    .cmtb-cookie-banner { right: 10px; bottom: 10px; left: 10px; }
    .cmtb-cookie-banner__actions { flex-direction: column; align-items: stretch; }
    .cmtb-cookie-btn { width: 100%; text-align: center; }
}

/* Rodapé — medidas do portal anterior: coluna de 1200px com 20px de recuo,
   rótulo vertical em degradê separado do cartão por 15px, cartão com borda
   branca de 1px e faixa de 4px na cor do rótulo. */
.site-footer { margin-top: 80px; padding: 40px 0; color: #fff; background: #1a1a1a; }
.site-footer .container { --content: 1200px; padding-inline: 20px; }
.site-footer a { color: #fff; }
.official-footer-grid { display: grid; grid-template-columns: 1fr 2fr 1fr; gap: 30px; align-items: start; }
.official-footer-brand img { width: auto; max-width: none; height: 80px; margin-top: 95px; margin-left: -100px; }
.official-footer-column { display: flex; flex-direction: column; gap: 20px; }
.official-footer-card { display: flex; align-items: flex-start; gap: 15px; }
.official-footer-card > h2 { display: flex; align-items: center; gap: 5px; padding: 8px 12px; margin: 0; border-radius: 4px; line-height: 1.5; color: #fff; background: linear-gradient(135deg, var(--footer-card-color) 0%, var(--footer-card-color-2) 100%); font-size: 12px; font-weight: 700; white-space: nowrap; text-transform: uppercase; writing-mode: vertical-rl; transform: rotate(180deg); }
.official-footer-card > h2 span { transform: rotate(180deg); }
.official-footer-card > h2 i { font-size: 14px; }
.official-footer-card > div { flex: 1; padding: 20px; border: 1px solid #fff; border-left: 4px solid var(--footer-card-color); border-radius: 8px 8px 0 8px; background: rgba(42,42,62,.18); }
.official-footer-card h3 { display: flex; align-items: center; gap: 10px; margin: 0 0 15px; padding-bottom: 10px; border-bottom: 1px solid rgba(255,255,255,.1); color: #fff; font-size: 16px; font-weight: 600; line-height: 1.2; }
.official-footer-card h3 > i { color: var(--color-brand); font-size: 20px; }
.official-footer-card p { margin: 0 0 8px; font-size: 14px; line-height: 1.4; }
.official-footer-card p:last-child { margin-bottom: 0; }
.official-footer-card p > i { width: 16px; margin-right: 8px; color: var(--color-brand); }
.official-footer-card a { text-decoration: none; }
.official-footer-card a:hover { text-decoration: underline; }
.official-footer-card--location { --footer-card-color: #28a745; --footer-card-color-2: #20c997; }
.official-footer-card--contact { --footer-card-color: #007bff; --footer-card-color-2: #0056b3; }
.official-footer-card--social { --footer-card-color: #e83e8c; --footer-card-color-2: #dc3545; }
.official-footer-card--news { --footer-card-color: #fd7e14; --footer-card-color-2: #ffc107; }
.official-social-icons { display: flex; flex-wrap: wrap; gap: 10px; }
.official-social-link { display: flex; width: 40px; height: 40px; align-items: center; justify-content: center; border-radius: 6px; font-size: 18px; text-decoration: none; transition: transform .3s ease, box-shadow .3s ease; }
.official-social-link--youtube { color: #fff; background: #ff0000; }
.official-social-link:hover { box-shadow: 0 4px 12px rgba(255,255,255,.2); transform: translateY(-2px); }
.official-news-buttons { display: flex; gap: 10px; margin-top: 15px; }
.official-news-link { display: inline-flex; align-items: center; gap: 5px; padding: 8px 16px; line-height: 1.5; border-radius: 6px; color: #fff; background: linear-gradient(135deg, #fd7e14 0%, #ffc107 100%); font-size: 12px; font-weight: 500; text-decoration: none; transition: transform .3s ease, box-shadow .3s ease; }
.official-news-link:hover { box-shadow: 0 4px 12px rgba(253,126,20,.3); text-decoration: none; transform: translateY(-2px); }
.site-footer .official-footer-bottom { --content: 1160px; padding-inline: 0; }
.official-footer-bottom { display: flex; flex-wrap: wrap; justify-content: center; gap: 30px; margin-top: 30px; padding-top: 20px; border-top: 1px solid rgba(255,255,255,.1); }
.official-footer-bottom a, .official-footer-bottom .cmtb-cookie-manage { display: flex; font-family: inherit; cursor: pointer; align-items: center; gap: 8px; padding: 8px 16px; border: 1px solid rgba(255,255,255,.1); border-radius: 6px; background: rgba(255,255,255,.05); color: #9CA3AF; font-size: 14px; font-weight: 500; line-height: 1.5; text-decoration: none; transition: color .3s ease, background .3s ease, border-color .3s ease, transform .3s ease; }
.official-footer-bottom a:hover, .official-footer-bottom .cmtb-cookie-manage:hover { border-color: var(--color-brand); background: rgba(165,28,48,.2); color: #fff; text-decoration: none; transform: translateY(-2px); }
.official-footer-bottom a i, .official-footer-bottom .cmtb-cookie-manage i { color: var(--color-brand); font-size: 16px; }
.official-footer-bottom a:hover i, .official-footer-bottom .cmtb-cookie-manage:hover i { color: #fff; }

/* Página inicial institucional. */
.legacy-home { width: min(calc(100% - 2rem), 1450px); margin-inline: auto; }
/* O portal original usa 30px de respiro entre seções e 50px na Central da
   Mídia. Como seções vizinhas somam os dois paddings, valores altos aqui
   dobram o vão: 5rem + 5rem daria 160px onde o original tem 60px. */
.home-section { padding-block: clamp(1.5rem, 3vw, 1.875rem); }
.home-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.4rem; }
.home-section-heading h2 { margin: 0; color: var(--color-brand-dark); font-size: clamp(1.65rem, 3vw, 2.45rem); line-height: 1.08; text-transform: uppercase; }
.home-section-heading a { flex: 0 0 auto; color: var(--color-brand); font-weight: 750; }

.cmtb-carousel { position: relative; overflow: hidden; }
.carousel-viewport { overflow: hidden; }
.carousel-track { display: flex; transform: translateX(0); transition: transform .55s ease; }
.carousel-slide { flex: 0 0 100%; min-width: 0; }
.carousel-slide > a { display: block; }
.carousel-arrow {
    position: absolute; z-index: 3; top: 50%; width: 46px; min-height: 46px; padding: 0;
    border: 1px solid rgba(255, 255, 255, .65); border-radius: 50%; color: #fff;
    background: rgba(42, 12, 20, .68); font-size: 2rem; line-height: 1; transform: translateY(-50%);
}
.carousel-arrow:hover { background: var(--color-brand); }
.carousel-arrow--previous { left: 1rem; }
.carousel-arrow--next { right: 1rem; }
.carousel-footer { position: absolute; z-index: 3; right: 1rem; bottom: .8rem; left: 1rem; display: flex; align-items: center; justify-content: center; gap: .75rem; pointer-events: none; }
.carousel-dots { display: flex; align-items: center; gap: .45rem; }
.carousel-dot { width: 11px; min-height: 11px; padding: 0; border: 2px solid #fff; border-radius: 50%; background: rgba(0, 0, 0, .25); pointer-events: auto; cursor: pointer; }
.carousel-dot[aria-current="true"] { background: var(--color-accent); }
.carousel-pause { min-height: 30px; padding: .25rem .65rem; border: 1px solid rgba(255,255,255,.6); border-radius: 999px; color: #fff; background: rgba(42,12,20,.75); font-size: .75rem; font-weight: 700; pointer-events: auto; cursor: pointer; }

.home-banner-carousel { margin-block: 38px 48px; border-radius: .75rem; background: #171717; box-shadow: 0 7px 22px rgba(0,0,0,.13); }
.home-banner-carousel .carousel-slide > a { position: relative; color: #fff; }
.home-banner-carousel .carousel-slide > a > img { display: block; width: 100%; height: 230px; object-fit: cover; }
.home-banner-carousel .home-banner-slide--art > a { display: block; overflow: hidden; background: #111; }
.home-banner-carousel .home-banner-slide--art > a > img {
    height: clamp(175px, 20vw, 230px);
    object-fit: cover;
    object-position: center center;
    background: transparent;
}
.home-banner-content { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; padding: 2.5rem 5rem; background: linear-gradient(90deg, rgba(39,8,14,.9), rgba(39,8,14,.48) 52%, rgba(39,8,14,.08)); text-shadow: 0 2px 8px rgba(0,0,0,.6); }
.home-banner-content small { color: var(--color-accent); font-size: clamp(.8rem, 1.4vw, 1rem); font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.home-banner-content strong { max-width: 680px; margin-top: .25rem; font-size: clamp(1.5rem, 2.4vw, 2.5rem); line-height: 1.05; }
.home-banner-content > span { margin-top: .75rem; font-size: clamp(.88rem, 1.5vw, 1.08rem); }
.home-banner-carousel .carousel-arrow { width: 64px; min-height: 64px; border: 0; background: rgba(165,28,48,.78); font-size: 2.4rem; }
.home-banner-carousel .carousel-arrow--previous { left: 1.45rem; }
.home-banner-carousel .carousel-arrow--next { right: 1.45rem; }
.home-banner-carousel .carousel-footer { bottom: 1.35rem; }
.home-banner-carousel .carousel-dot { width: 15px; min-height: 15px; border: 0; background: #999; }
.home-banner-carousel .carousel-dot[aria-current="true"] { background: var(--color-brand); }
.home-banner-carousel .carousel-pause:not(:focus) { position: absolute; width: 1px; min-height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }

.home-banner-news { position: relative; display: block; height: 230px; overflow: hidden; background: #080808; text-decoration: none; }
.home-banner-news__photo { position: absolute; inset: 0 auto 0 0; width: 47% !important; height: 230px !important; object-fit: fill !important; }
.home-banner-news::after { position: absolute; inset: 0; background: linear-gradient(105deg, transparent 0 25%, rgba(5,5,5,.18) 34%, #080808 47%, #080808 100%); content: ""; }
.home-banner-news__content { position: relative; z-index: 1; display: grid; height: 100%; grid-template-columns: 148px 455px minmax(360px,1fr); align-items: center; gap: 2.5rem; padding: 1.25rem 0 1.25rem 355px; }
.home-banner-news__icon { display: grid; width: 148px; height: 148px; place-content: center; color: #fff; background: #f10b13; text-align: center; text-transform: uppercase; transform: translateY(8px); }
.home-banner-news__icon svg { width: 82px; height: 82px; }
.home-banner-news__icon small { margin-top: -.5rem; font-size: 1rem; font-weight: 850; }
.home-banner-news__title { display: flex; flex-direction: column; font-weight: 900; line-height: .95; text-transform: uppercase; transform: translateY(7px); }
.home-banner-news__title strong { color: #f10b13; font-size: 3.15rem; }
.home-banner-news__title b { margin-top: .35rem; color: #fff; font-size: 3.4rem; white-space: nowrap; }
.home-banner-news__title small { margin-top: 1.2rem; color: #ddd; font-size: 1rem; font-weight: 500; letter-spacing: .02em; white-space: nowrap; }
.home-banner-news__details { display: flex; min-width: 0; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.home-banner-news__brand { display: flex; align-items: center; gap: .45rem; margin-bottom: 1.2rem; color: #fff; font-family: Georgia, "Times New Roman", serif; font-size: 1.1rem; line-height: 1; text-align: left; text-transform: uppercase; }
.home-banner-news__brand, .home-banner-news__details > span:not(.home-banner-news__brand) { transform: translateX(-20px); }
.home-banner-news__brand > img { width: 56px !important; height: 64px !important; padding: 0; margin: 0; object-fit: contain; }
.home-banner-news__brand > span { display: flex; flex-direction: column; }
.home-banner-news__brand b { padding-top: .25rem; border-bottom: 3px solid #ed1d2f; font-size: 1.3rem; white-space: nowrap; }
.home-banner-news__details > span:not(.home-banner-news__brand) { color: #fff; font-size: .92rem; font-weight: 700; line-height: 1.3; white-space: nowrap; }
.home-banner-news__details > b { width: calc(100% + 46px); padding: .7rem 1.1rem; margin-top: .9rem; margin-left: -46px; border-radius: 999px; color: #fff; background: #f10b13; font-size: 1rem; line-height: 1.2; text-transform: uppercase; white-space: nowrap; }

.home-news-layout { display: grid; grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr); align-items: stretch; gap: 1.5rem; padding-bottom: clamp(3rem, 6vw, 5rem); }
.home-news-column {
    display: grid;
    height: 100%;
    min-height: 0;
    grid-template-rows: auto minmax( clamp(240px, 30vh, 380px), 1fr );
    gap: 0;
}
.home-featured-news { border-radius: .65rem; background: #2b2124; box-shadow: var(--shadow); }
.home-featured-slide { position: relative; }
.home-featured-slide > a { position: relative; height: clamp(300px, 34vw, 500px); color: #fff; text-decoration: none; }
.home-featured-image { display: block; width: 100%; height: 100%; object-fit: cover; }
.home-featured-overlay { position: absolute; right: 0; bottom: 0; left: 0; display: flex; flex-direction: column; justify-content: flex-end; min-height: 55%; padding: clamp(4.5rem, 10vw, 8rem) clamp(1.25rem, 4vw, 3.25rem) clamp(2.8rem, 6vw, 4.2rem); background: linear-gradient(transparent, rgba(29, 8, 14, .92)); }
.home-featured-overlay time { margin-bottom: .45rem; font-size: .9rem; font-weight: 700; }
.home-featured-overlay strong { max-width: 900px; font-size: clamp(1.4rem, 2.7vw, 2.2rem); line-height: 1.15; }
.carousel-footer--overlay { justify-content: flex-start; padding-left: clamp(.3rem, 2vw, 1.9rem); }

.home-quick-news {
    display: flex;
    min-width: 0;
    min-height: 0;
    flex-direction: column;
    padding-top: clamp(1.35rem, 2.5vw, 2.25rem);
}
.home-quick-news__panel {
    display: flex;
    height: 100%;
    min-height: 100%;
    flex: 1 1 auto;
    flex-direction: column;
    padding: clamp(1.15rem, 2.5vw, 1.5rem) clamp(1.15rem, 2.5vw, 1.65rem) clamp(1.25rem, 2.5vw, 1.65rem);
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 6px 28px rgba(42, 20, 25, .09);
}
.home-quick-news__header { margin-bottom: 1.15rem; }
.home-quick-news__title-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.home-quick-news__title-wrap h2 {
    margin: 0;
    color: var(--color-brand-dark);
    font-size: clamp(1.08rem, 1.85vw, 1.32rem);
    font-weight: 600;
    line-height: 1.25;
    text-transform: none;
}
.home-quick-news__title-wrap h2 i { margin-right: .45rem; color: #3d6a9e; font-size: 1.05em; }
.home-quick-news__all { flex: 0 0 auto; color: var(--color-brand); font-size: .9rem; font-weight: 750; text-decoration: none; white-space: nowrap; }
.home-quick-news__all:hover { text-decoration: underline; }
.home-quick-news__rule { display: flex; align-items: center; width: 100%; margin-top: .55rem; }
.home-quick-news__rule-accent { flex: 0 0 clamp(2.5rem, 8vw, 3.25rem); height: 3px; border-radius: 2px; background: var(--color-brand); }
.home-quick-news__rule-line { flex: 1; height: 2px; background: #b8b8b8; }
.home-quick-news-grid {
    display: grid;
    height: 100%;
    min-height: 0;
    flex: 1 1 auto;
    align-items: stretch;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-auto-rows: 1fr;
    gap: clamp(.85rem, 2vw, 1.15rem);
}
.home-quick-news-item {
    --news-accent: var(--color-brand);
    display: flex;
    height: 100%;
    min-height: 100%;
    flex-direction: column;
    padding: clamp(1rem, 2vw, 1.35rem) clamp(1rem, 2vw, 1.2rem) clamp(1rem, 2vw, 1.35rem) clamp(1.05rem, 2vw, 1.2rem);
    border-left: 5px solid var(--news-accent);
    border-radius: 10px;
    background: #f3f3f3;
    box-sizing: border-box;
}
.home-quick-news-item--green { --news-accent: #28a745; }
.home-quick-news-item--blue { --news-accent: #17a2b8; }
.home-quick-news-item--orange { --news-accent: #fd7e14; }
.home-news-category { color: var(--news-accent, var(--color-brand)); font-size: .72rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.home-quick-news-item h3 {
    flex: 1 1 auto;
    margin: .5rem 0 0;
    font-size: clamp(.84rem, 1.35vw, .94rem);
    font-weight: 700;
    line-height: 1.45;
}
.home-quick-news-item h3 a {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 8;
    color: var(--color-ink);
    text-decoration: none;
}
.home-quick-news-item a:hover { color: var(--color-brand-dark); text-decoration: underline; }
.home-quick-news-item p { margin: .65rem 0 0; color: var(--color-muted); font-size: .83rem; line-height: 1.45; }

.home-services { display: flex; min-width: 0; height: 100%; min-height: 0; overflow: hidden; flex-direction: column; border: 1px solid #d9d9d9; border-radius: .7rem; background: linear-gradient(135deg,#f8f9fa,#e9ecef); box-shadow: var(--shadow); }
.home-services > h2 { margin: 0; padding: 1rem; color: #fff; background: linear-gradient(135deg,var(--color-brand),#8a1827); font-size: 1.05rem; line-height: 1.15; text-align: center; text-transform: uppercase; }
.home-services mark { padding: 0; color: var(--color-accent); background: transparent; }
.home-services-list { display: grid; flex: 1 1 auto; align-content: start; gap: .8rem; padding: 1.15rem; }
.home-service-card { display: grid; grid-template-columns: 58px 1fr; align-items: center; min-height: 100px; overflow: hidden; border: 0; border-radius: .65rem; color: #fff; background: linear-gradient(135deg,var(--service-color),var(--service-color-dark)); box-shadow: 0 5px 14px rgba(42,20,25,.16); text-decoration: none; transition: transform .18s ease, box-shadow .18s ease; }
.home-service-card:hover { color: #fff; box-shadow: 0 9px 22px rgba(42,20,25,.24); transform: translateY(-3px); }
.home-service-icon { display: grid; width: 44px; height: 44px; margin-left: .75rem; place-items: center; border-radius: 50%; color: #fff; background: rgba(255,255,255,.18); font-size: 1.3rem; }
.home-service-card > span:last-child { display: flex; flex-direction: column; padding: .85rem .9rem .85rem .35rem; }
.home-service-card strong { color: #fff; font-size: .94rem; line-height: 1.2; text-transform: uppercase; }
.home-service-card small { margin-top: .3rem; color: rgba(255,255,255,.9); font-size: .73rem; line-height: 1.35; }
.home-service-card--green { --service-color: #28a745; --service-color-dark: #20a878; }
.home-service-card--blue { --service-color: #17a2b8; --service-color-dark: #13788a; }
.home-service-card--orange { --service-color: #fd7e14; --service-color-dark: #d85a00; }
.home-service-card--purple { --service-color: #7044bd; --service-color-dark: #542c89; }
.home-service-card--teal { --service-color: #20b895; --service-color-dark: #168ba0; }
.home-service-card--red { --service-color: #dc3545; --service-color-dark: #a91e2c; }
.home-service-card--indigo { --service-color: #6f42c1; --service-color-dark: #5a2d91; }
.home-service-card--brand { --service-color: var(--color-brand); --service-color-dark: var(--color-brand-dark); }

.home-quick-access-section { padding-block: clamp(1.75rem, 3vw, 2.25rem); background: #fff; }
.home-quick-access-heading { position: relative; margin-bottom: 1.75rem; padding-bottom: .75rem; border-bottom: 1px solid #e8e8e8; }
.home-quick-access-heading h2 {
    display: inline-block;
    margin: 0;
    padding-bottom: .55rem;
    border-bottom: 3px solid var(--color-brand-dark);
    color: #333;
    font-size: clamp(1.08rem, 1.85vw, 1.32rem);
    font-weight: 600;
    letter-spacing: .02em;
    line-height: 1.25;
    text-transform: none;
}
.home-media-section .home-section-heading h2 {
    font-size: clamp(1.08rem, 1.85vw, 1.32rem);
    font-weight: 600;
    line-height: 1.25;
    text-transform: none;
}
.home-quick-access-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.25rem; }
.home-quick-access {
    display: flex;
    min-height: 170px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 1.6rem 1.25rem;
    border: 1px solid rgba(0, 0, 0, .04);
    border-radius: 14px;
    color: var(--color-ink);
    background: #fff;
    box-shadow: 0 6px 22px rgba(0, 0, 0, .07);
    text-align: center;
    text-decoration: none;
    transition: transform .2s ease, box-shadow .2s ease;
}
.home-quick-access:hover {
    color: var(--color-ink);
    box-shadow: 0 10px 28px rgba(0, 0, 0, .1);
    transform: translateY(-4px);
}
.home-quick-access__icon {
    display: grid;
    width: 52px;
    height: 52px;
    place-items: center;
    border-radius: 10px;
    color: #fff;
    font-size: 1.35rem;
    line-height: 1;
}
.home-quick-access--brand .home-quick-access__icon { background: #8f1d33; }
.home-quick-access--purple .home-quick-access__icon { background: #7044bd; }
.home-quick-access--green .home-quick-access__icon { background: #2e9e5b; }
.home-quick-access--orange .home-quick-access__icon { background: #e8872a; }
.home-quick-access strong { margin-top: 1rem; color: #2d2d2d; font-size: 1.05rem; font-weight: 700; line-height: 1.25; }
.home-quick-access small { max-width: 16rem; margin-top: .4rem; color: #8a8a8a; font-size: .88rem; line-height: 1.45; }

.home-service-icon i, .float-action i { font-size: inherit; line-height: 1; }
.home-section-heading h2 i, .home-latest-videos h3 i { margin-right: .5rem; color: var(--color-brand); font-size: .9em; }

.home-councilors-section { padding-block: clamp(1.75rem, 3vw, 2.25rem); background: #fff; }
.home-councilors-heading { margin-bottom: 1.25rem; }
.home-councilors-heading__top { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.home-councilors-heading h2 {
    margin: 0;
    color: var(--color-brand-dark);
    font-size: clamp(1.08rem, 1.85vw, 1.32rem);
    font-weight: 600;
    line-height: 1.25;
    text-transform: none;
}
.home-councilors-heading__all { flex: 0 0 auto; color: var(--color-brand); font-size: .9rem; font-weight: 650; text-decoration: none; white-space: nowrap; }
.home-councilors-heading__all:hover { text-decoration: underline; }
.home-councilors-heading__rule { display: flex; align-items: center; width: 100%; margin-top: .55rem; }
.home-councilors-heading__rule-accent { flex: 0 0 clamp(2.5rem, 8vw, 3.25rem); height: 3px; border-radius: 2px; background: var(--color-brand); }
.home-councilors-heading__rule-line { flex: 1; height: 2px; background: #b8b8b8; }
.home-councilors-carousel { position: relative; }
.home-councilors { display: grid; grid-auto-columns: calc((100% - 3rem) / 4); grid-auto-flow: column; gap: 1rem; overflow-x: auto; padding: .2rem .2rem 1rem; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--color-brand) #e6dde0; }
.home-councilor-card { overflow: hidden; border-radius: 10px; background: #fff; box-shadow: 0 6px 22px rgba(49, 18, 25, .1); scroll-snap-align: start; }
.home-councilor-card a { display: block; color: var(--color-ink); text-decoration: none; }
.home-councilor-card img { display: block; width: 100%; height: clamp(200px, 22vw, 250px); object-fit: cover; object-position: top center; filter: saturate(.92); transition: transform .25s ease; }
.home-councilor-card a:hover img { transform: scale(1.02); }
.home-councilor-info {
    display: flex;
    min-height: 5.5rem;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    padding: .85rem 1rem 1rem;
    text-align: center;
}
.home-councilor-info::before { display: block; width: 2.25rem; height: 3px; margin-bottom: .65rem; border-radius: 2px; background: var(--color-brand); content: ""; }
.home-councilor-info strong { color: var(--color-brand-dark); font-size: .92rem; font-weight: 700; line-height: 1.3; text-transform: none; }
.home-councilor-info small { margin-top: .35rem; color: var(--color-muted); font-size: .72rem; font-weight: 600; letter-spacing: .03em; line-height: 1.35; text-transform: uppercase; }
.home-councilors-dots { display: flex; flex-wrap: wrap; justify-content: center; gap: .45rem; margin-top: .35rem; padding-bottom: .25rem; }
.home-councilors-dots button { width: 10px; min-height: 10px; padding: 0; border: 0; border-radius: 50%; background: #c8c8c8; cursor: pointer; transition: transform .15s ease, background .15s ease; }
.home-councilors-dots button[aria-current="true"] { background: var(--color-brand); transform: scale(1.15); }
.home-councilors-dots button:hover { background: var(--color-brand-dark); }
.home-horizontal-controls { display: none; }

.home-media-section { padding-block: clamp(2rem, 4vw, 3.125rem); }
.home-media-layout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(330px, .75fr); gap: 1.5rem; }
.home-main-video iframe, .home-video-card iframe { display: block; width: 100%; border: 0; background: #1d1719; }
.home-main-video iframe { aspect-ratio: 16 / 9; min-height: 360px; border-radius: .65rem; box-shadow: var(--shadow); }
.home-latest-videos { display: grid; align-content: start; gap: .8rem; }
.home-latest-videos h3 { margin: 0 0 .2rem; color: var(--color-brand-dark); font-size: 1.4rem; text-transform: uppercase; }
.home-video-card { display: grid; grid-template-columns: minmax(130px, .8fr) 1fr; gap: .85rem; align-items: center; padding-bottom: .8rem; border-bottom: 1px solid var(--color-line); }
.home-video-card iframe { aspect-ratio: 16 / 9; min-height: 86px; border-radius: .35rem; }
.home-video-card div { display: flex; min-width: 0; flex-direction: column; }
.home-video-card strong { font-size: .91rem; line-height: 1.3; }
.home-video-card time { margin-top: .35rem; color: var(--color-muted); font-size: .78rem; }



/*
 * O cabeçalho tem largura mínima própria, independente do layout das páginas:
 * marca 270 + folga 40 + menu 1017 + folga 40 + selo 160 + margem 26 = 1553px.
 * A lista do menu é flex sem quebra, então o <ul> nunca encolhe abaixo dos
 * 1017px do seu conteúdo. Por isso o cabeçalho tem quebras próprias, medidas,
 * em vez de acompanhar as quebras de layout em 991/767/575.
 */
/* Vereadores e proposições em página própria. */
.councilor-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.25rem; }
.councilor-grid .home-councilor-card { box-shadow: 0 6px 18px rgba(49,18,25,.1); }

.filter-bar { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.75rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--color-line); }
.filter-chip { display: inline-flex; align-items: center; gap: .4rem; border: 1px solid var(--color-line); border-radius: 999px; padding: .45rem 1rem; color: var(--color-ink); background: #fff; font-size: .88rem; font-weight: 650; text-decoration: none; }
.filter-chip span { border-radius: 999px; padding: .05rem .45rem; background: var(--color-surface); font-size: .78rem; }
.filter-chip:hover { color: var(--color-brand); border-color: var(--color-brand); }
.filter-chip.is-active { color: #fff; border-color: var(--color-brand); background: var(--color-brand); }
.filter-chip.is-active span { color: var(--color-brand-dark); background: rgba(255,255,255,.9); }

.proposition-list { display: grid; gap: 1rem; padding: 0; margin: 0; list-style: none; }
.proposition { padding: 1.25rem 1.4rem; border: 1px solid var(--color-line); border-left: 5px solid var(--color-brand); border-radius: .5rem; background: #fff; }
.proposition__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: .6rem; margin: 0 0 .55rem; }
.proposition__type { color: var(--color-brand-dark); font-size: 1.02rem; font-weight: 800; }
.proposition__number { color: var(--color-muted); font-size: .92rem; font-weight: 700; }
.proposition__summary { margin: 0; line-height: 1.55; }
.proposition__author { display: flex; align-items: center; gap: .45rem; margin: .7rem 0 0; color: var(--color-muted); font-size: .87rem; }
.proposition__author i { color: var(--color-brand); }

/* Atos da Presidência. */
.act-year { margin-bottom: 2.25rem; }
.act-year h2 { display: flex; align-items: baseline; gap: .6rem; margin: 0 0 .9rem; padding-bottom: .5rem; border-bottom: 2px solid var(--color-brand); color: var(--color-brand-dark); font-size: 1.4rem; }
.act-year h2 span { color: var(--color-muted); font-size: .82rem; font-weight: 600; }
.act-list { display: grid; gap: .5rem; padding: 0; margin: 0; list-style: none; }
.act a { display: flex; align-items: center; gap: .85rem; padding: .8rem 1rem; border: 1px solid var(--color-line); border-radius: .45rem; background: #fff; color: var(--color-ink); text-decoration: none; }
.act a:hover { border-color: var(--color-brand); background: var(--color-surface); }
.act i { flex: 0 0 auto; color: var(--color-brand); font-size: 1.3rem; }
.act span { display: flex; min-width: 0; flex-direction: column; }
.act small { margin-top: .1rem; color: var(--color-muted); font-size: .82rem; }

/* Mesa Diretora e cartões de acesso da Transparência. */
.councilor-grid--board { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 1.75rem; }
.access-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.access-card { display: grid; padding: 1.4rem; border: 1px solid var(--color-line); border-left: 5px solid var(--color-brand); border-radius: .55rem; background: #fff; color: var(--color-ink); text-decoration: none; }
.access-card:hover { color: var(--color-ink); border-color: var(--color-brand); box-shadow: var(--shadow); }
.access-card__icon { display: grid; width: 44px; height: 44px; margin-bottom: .8rem; place-items: center; border-radius: 50%; color: var(--color-brand); background: var(--color-surface); font-size: 1.2rem; }
.access-card strong { color: var(--color-brand-dark); font-size: 1.08rem; }
/* O cartão da Ouvidoria traz o e-mail inteiro, que é um único token sem
   espaço: sem isto ele define o piso de largura da coluna e empurra a página. */
.access-card small { margin-top: .3rem; overflow-wrap: anywhere; color: var(--color-muted); font-size: .87rem; line-height: 1.45; }

/* Comissões permanentes e histórico da presidência. */
.committee-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.committee { padding: 1.2rem 1.35rem; border: 1px solid var(--color-line); border-top: 4px solid var(--color-brand); border-radius: .5rem; background: #fff; }
.committee h3 { margin: 0 0 .8rem; color: var(--color-brand-dark); font-size: 1.05rem; line-height: 1.25; }
.committee ul { display: grid; gap: .4rem; padding: 0; margin: 0; list-style: none; }
.committee li { display: grid; grid-template-columns: 8.5rem 1fr; gap: .5rem; font-size: .9rem; }
.committee__role { color: var(--color-muted); font-weight: 650; }
.committee__name { font-weight: 600; }

.president-table { width: 100%; border-collapse: collapse; }
.president-table th, .president-table td { padding: .65rem .8rem; border-bottom: 1px solid var(--color-line); text-align: left; }
.president-table thead th { color: var(--color-brand-dark); font-size: .82rem; letter-spacing: .04em; text-transform: uppercase; }
.president-table tbody th { width: 9rem; color: var(--color-muted); font-weight: 700; white-space: nowrap; }
.president-table tbody tr:first-child { background: var(--color-surface); }
.president-table small { display: block; color: var(--color-brand); font-size: .78rem; font-weight: 650; }

/* Entenda o Legislativo — medidas extraídas da página institucional anterior. */
/* O portal anterior serve as páginas institucionais numa coluna de 1200px com
   20px de recuo — .container do tema legado. O cabeçalho e o rodapé continuam
   nos 1400px do tema, como lá. */
.legislative-hero .container, .legislative-container { --content: 1200px; padding-inline: 20px; }
.legislative-container { padding-block: 40px; }
/* O original abre 70px entre o cabeçalho e o hero em todas as institucionais.
   Os 30px de margem do cabeçalho se fundem com estes 70 — margens verticais
   adjacentes colapsam para a maior —, e o resultado é a folga do original. */
.legislative-hero {
    padding: 35px 0; margin: 70px 0 50px; border-radius: 0 0 50px 50px; color: #fff; text-align: center;
    background: linear-gradient(rgba(116,116,116,.9), rgba(31,30,30,.9)), url("assets/images/home/plenario-legislativo.jpg");
    background-position: center; background-size: cover;
}
.legislative-hero .section-title { position: relative; margin-bottom: 20px; border-bottom: 2px solid #e6e6e8; }
.legislative-hero .section-title::after { position: absolute; bottom: -2px; left: 0; width: 50px; height: 2px; background: #000; content: ""; }
/* text-transform vem de .section-title h1 no tema legado, não do CSS da página. */
.legislative-hero h1 { margin: 0 0 15px; font-size: 2.5em; font-weight: 600; line-height: 1.2; text-transform: uppercase; overflow-wrap: break-word; }
.legislative-hero .subtitle { display: block; margin: 0 0 16px; font-size: 1.2em; line-height: 1.5; opacity: .9; }

.info-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; margin-bottom: 50px; }
.info-card { padding: 30px; border-radius: 15px; background: #fff; box-shadow: 0 2px 15px rgba(0,0,0,.1); transition: transform .3s ease; }
.info-card:hover { transform: translateY(-5px); }
.info-card .card-icon { margin-bottom: 20px; color: var(--color-brand); font-size: 2.5em; text-align: center; }
.info-card h2, .info-card h3 { margin: 0 0 15px; color: #333; font-size: 1.5em; text-align: center; }
.info-card > p { margin-bottom: 15px; color: #666; }
.info-card ul { padding: 0; margin: 0; list-style: none; }
.info-card li { position: relative; padding: 8px 0 8px 20px; border-bottom: 1px solid #eee; color: #666; }
.info-card li::before { position: absolute; left: 0; color: var(--color-brand); content: "\2192"; }
.info-card li:last-child { border-bottom: 0; }

.participation-section { margin-top: 50px; text-align: center; }
.participation-section h2 { margin: 0 0 30px; color: #333; font-size: 2em; }
.participation-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 30px; }
.participation-card { padding: 30px; border-radius: 15px; background: #fff; box-shadow: 0 2px 15px rgba(0,0,0,.1); overflow-wrap: anywhere; transition: transform .3s ease; }
.participation-card:hover { transform: translateY(-5px); }
.participation-card i { margin-bottom: 15px; color: var(--color-brand); font-size: 2em; }
.participation-card h3 { margin: 0 0 15px; color: #333; font-size: 1.3em; }
.participation-card p { margin-bottom: 20px; color: #666; }
.saiba-mais { display: inline-block; padding: 8px 20px; border-radius: 25px; color: #fff; background: var(--color-brand); text-decoration: none; transition: background .3s ease, transform .3s ease; }
.saiba-mais:hover { color: #fff; background: var(--color-brand-dark); transform: translateY(-2px); }
/* Botão de documento dentro do cartão, na Tribuna Popular. */
.botoes-container { display: flex; margin-top: 20px; flex-direction: column; align-items: center; gap: 15px; }
.botoes-container .saiba-mais { width: 180px; text-align: center; }

/* Publicações da Escola — medidas da página no ar. */
.publications-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; padding: 20px 0; }
.publication-card { overflow: hidden; border-radius: 15px; background: #fff; box-shadow: 0 2px 15px rgba(0,0,0,.1); transition: transform .3s ease; }
.publication-card:hover { transform: translateY(-5px); }
.publication-image { width: 100%; height: 200px; overflow: hidden; }
.publication-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.publication-content { padding: 20px; }
.publication-content h2 { margin: 0 0 12px; color: #1b2a4a; font-size: 1.2em; line-height: 1.35; }
.publication-excerpt { margin: 0 0 15px; color: #666; line-height: 1.6; }
.publication-details { display: flex; align-items: center; justify-content: space-between; margin-top: 15px; padding-top: 12px; border-top: 1px solid var(--color-line); color: var(--school-blue, #094BA2); font-size: .88rem; font-weight: 650; }
.publication-details i { margin-right: .4rem; }
.btn-read-more { padding: 8px 15px; border: 0; border-radius: 20px; color: #fff; background: var(--school-blue, #094BA2); font-size: .9rem; font-weight: 650; cursor: pointer; transition: background .3s ease; }
.btn-read-more:hover { background: #063679; }
.publication-dialog { width: min(calc(100% - 2rem), 640px); padding: 1.6rem; border: 0; border-top: 5px solid var(--school-blue, #094BA2); border-radius: .7rem; color: var(--color-ink); box-shadow: 0 24px 80px rgba(9,32,74,.34); }
.publication-dialog::backdrop { background: rgba(12,22,40,.72); }
.publication-dialog__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.publication-dialog__header h2 { margin: 0; color: var(--school-blue, #094BA2); font-size: 1.3rem; line-height: 1.3; }
.publication-dialog__header button { width: 40px; min-height: 40px; flex: 0 0 auto; border: 0; border-radius: 50%; background: var(--color-surface); font-size: 1.5rem; cursor: pointer; }
.publication-dialog__date { margin: .8rem 0 0; color: var(--school-blue, #094BA2); font-size: .88rem; font-weight: 650; }
.publication-dialog p:last-child { margin: 1rem 0 0; line-height: 1.7; }

/* Galeria da Escola — medidas da página no ar. */
.galeria-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
.galeria-item { position: relative; overflow: hidden; border-radius: 8px; background: #fff; box-shadow: 0 2px 4px rgba(0,0,0,.1); transition: transform .3s ease, box-shadow .3s ease; }
.galeria-item:hover { box-shadow: 0 8px 20px rgba(0,0,0,.15); transform: translateY(-4px); }
.galeria-item > a { display: block; color: inherit; text-decoration: none; }
.galeria-image { position: relative; overflow: hidden; aspect-ratio: 4 / 3; }
.galeria-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.galeria-badge { position: absolute; top: 10px; right: 10px; display: inline-flex; align-items: center; gap: .35rem; padding: 5px 10px; border-radius: 20px; color: #fff; background: rgba(0,123,255,.9); font-size: .8rem; }
.galeria-hover-overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(0,123,255,.8); opacity: 0; transition: opacity .3s ease; }
.galeria-item:hover .galeria-hover-overlay, .galeria-item:focus-within .galeria-hover-overlay { opacity: 1; }
.galeria-hover-overlay__button { display: inline-flex; align-items: center; gap: .4rem; padding: .45rem 1rem; border-radius: .3rem; color: #212529; background: #f8f9fa; font-size: .88rem; font-weight: 650; }
.galeria-content { padding: 15px; border-top: 3px solid #007bff; background: #fff; }
.galeria-title { margin: 0 0 8px; color: #333; font-size: 1.1rem; font-weight: 600; line-height: 1.3; transition: color .3s ease; }
.galeria-item:hover .galeria-title { color: #007bff; }
/* Registro de foto única: acessível como os demais, mas a sobreposição usa
   tom neutro, porque não há acervo a anunciar. */
.galeria-item--unica .galeria-hover-overlay { background: rgba(33,37,41,.72); }
.galeria-description { display: -webkit-box; margin: 0; overflow: hidden; color: #666; font-size: .9rem; line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }

.photo-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.photo { margin: 0; overflow: hidden; border-radius: 8px; background: #fff; box-shadow: 0 2px 4px rgba(0,0,0,.1); }
.photo a { display: block; }
.photo img { display: block; width: 100%; height: 220px; object-fit: cover; transition: transform .3s ease; }
.photo:hover img { transform: scale(1.04); }
.photo-grid__back { margin-top: 2rem; }

/* Páginas internas da Escola. */
.history-section { padding: 40px; margin-bottom: 2.5rem; border-radius: 15px; background: #fff; box-shadow: 0 5px 15px rgba(0,0,0,.1); }
.history-section h2 { margin: 0 0 1.5rem; color: #1b2a4a; font-size: 1.9em; text-align: center; }
.history-section p { margin: 0 0 1.2rem; color: #555; line-height: 1.9; text-align: justify; }
.history-section p:last-child { margin-bottom: 0; }
.school-info__card h3 { margin: 0 0 12px; color: #1b2a4a; font-size: 1.35em; }
.school-programs { margin-top: 3rem; }
.school-programs h2 { margin: 0 0 1.6rem; color: #1b2a4a; font-size: 1.9em; text-align: center; }
.school-programs__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px; }
.school-button { display: inline-block; margin-top: 1rem; padding: 10px 26px; border-radius: 25px; color: #fff; background: var(--school-blue, #094BA2); font-weight: 700; text-decoration: none; }
.school-button:hover { color: #fff; background: #063679; }
.school-list { display: grid; gap: .5rem; padding: 0; margin: 0; list-style: none; text-align: left; }
.school-list li { position: relative; padding: 8px 0 8px 22px; border-bottom: 1px solid #eee; color: #666; }
.school-list li:last-child { border-bottom: 0; }
.school-list li::before { position: absolute; left: 0; color: var(--school-blue, #094BA2); content: "\2192"; }

.school-contact-block { margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid var(--color-line); }
.school-contact-block h2 { margin: 0 0 1.2rem; color: var(--school-blue, #094BA2); font-size: 1.4em; }
.school-contact { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; padding: 0; margin: 0; list-style: none; }
.school-contact li { display: flex; align-items: flex-start; gap: .8rem; }
.school-contact__icon { display: grid; width: 40px; height: 40px; flex: 0 0 auto; place-items: center; border-radius: 50%; color: #fff; background: var(--school-blue, #094BA2); font-size: 1rem; }
.school-contact span:last-child { display: flex; min-width: 0; flex-direction: column; }
.school-contact strong { color: #333; font-size: .88rem; }
.school-contact a, .school-contact span span { color: #666; font-size: .92rem; }

.school-contact-layout { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem; align-items: start; }
.school-contact-layout h2 { margin: 0 0 .8rem; color: var(--school-blue, #094BA2); font-size: 1.4em; }
.school-contact-layout h2 + h2, .school-contact-layout p + h2 { margin-top: 2rem; }
body.escola { --school-blue: #094BA2; }

/* Cabeçalho próprio da Escola do Legislativo. */
.school-header { position: relative; z-index: 100; background: #fff; border-bottom: 1px solid var(--color-line); box-shadow: 0 8px 16px rgba(0,0,0,.16); }
.school-header__row { display: flex; min-height: 110px; align-items: center; gap: 2rem; }
.school-header__brand { flex: 0 0 auto; }
.school-header__brand img { width: auto; max-width: min(260px, 46vw); max-height: 74px; object-fit: contain; }
.school-header__crest { flex: 0 0 auto; margin-left: auto; }
.school-header__crest img { width: auto; max-width: 210px; max-height: 56px; object-fit: contain; }
.school-nav { flex: 1 1 auto; }
.school-nav ul { display: flex; justify-content: center; gap: 0; padding: 0; margin: 0; list-style: none; }
.school-nav a { display: flex; min-height: 56px; align-items: center; padding: .8rem 1.1rem; color: #111; font-size: .95rem; font-weight: 750; letter-spacing: .01em; line-height: 1.2; text-decoration: none; text-transform: uppercase; }
/* A nav também carrega a classe primary-navigation, para reaproveitar o
   alternador móvel do tema. Isso traz junto o realce vermelho do portal, que
   destoa numa página de identidade azul; daí a sobreposição explícita. */
.school-nav a:hover, .school-nav .current-menu-item > a { color: var(--school-blue); background: rgba(9,75,162,.07); }
.school-nav .current-menu-item > a { box-shadow: inset 0 -3px 0 var(--school-blue); }
body.escola { --school-blue: #094BA2; }

/* Escola do Legislativo — paleta e medidas da página institucional anterior.
   A Escola tem identidade azul (#094BA2), distinta do vermelho do portal. */
.school-page { --school: #094BA2; --school-dark: #063679; padding: 40px 0; }
.school-hero-row { display: grid; grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr); gap: 30px; align-items: start; margin-bottom: 30px; }
.school-banner { border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,.1); }
.school-banner .carousel-slide img { display: block; width: 100%; height: auto; }
.school-banner .carousel-arrow { border: 0; background: rgba(9, 75, 162, .82); }
.school-banner .carousel-arrow:hover { background: var(--school, #094BA2); }
.school-banner .carousel-dot[aria-current="true"] { background: var(--school, #094BA2); border-color: #fff; }
/* O banner tem logos de parceiros no rodapé da arte; o botão de pausa fica
   fora da vista até receber foco, como no carrossel da home. */
.school-banner .carousel-pause:not(:focus) { position: absolute; width: 1px; min-height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }

.school-sidebar { overflow: hidden; border-radius: 12px; background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); box-shadow: 0 4px 15px rgba(0,0,0,.1); }
/* O original trazia o texto em caixa alta na marcação. Aqui a caixa é
   decisão de estilo: o leitor de tela recebe o texto em caixa normal. */
.school-sidebar__title { padding: 15px; margin: 0; color: #fff; background: linear-gradient(135deg, var(--school), var(--school-dark)); font-size: 16px; font-weight: 600; text-align: center; text-transform: uppercase; }
.school-sidebar__title mark { padding: 0; color: #ffd700; background: transparent; }
.school-sidebar__links { display: grid; gap: 15px; padding: 14px; }

.school-card { display: block; padding: 20px; border: 0; border-radius: 12px; color: #fff; text-decoration: none; transition: transform .3s ease; }
.school-card:hover { color: #fff; transform: translateY(-5px); }
.school-card__header { display: flex; align-items: center; margin-bottom: 10px; }
.school-card__icon { margin-right: 15px; color: #fff; font-size: 32px; line-height: 1; }
.school-card__title { color: #fff; font-size: 16px; font-weight: 700; text-transform: uppercase; }
.school-card__description { display: block; color: rgba(255,255,255,.9); font-size: 12px; line-height: 1.4; }
.school-card--blue   { background: linear-gradient(135deg, #094BA2, #063679); box-shadow: 0 4px 15px rgba(9,75,162,.3); }
.school-card--indigo { background: linear-gradient(135deg, #6f42c1, #5a2d91); box-shadow: 0 4px 15px rgba(111,66,193,.3); }
.school-card--teal   { background: linear-gradient(135deg, #17a2b8, #138496); box-shadow: 0 4px 15px rgba(23,162,184,.3); }
.school-card--navy   { background: linear-gradient(135deg, #007bff, #0056b3); box-shadow: 0 4px 15px rgba(0,123,255,.3); }

.school-info { margin-top: 40px; }
.school-info__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
.school-info__card { padding: 30px; border-radius: 15px; background: #fff; box-shadow: 0 5px 15px rgba(0,0,0,.1); text-align: center; transition: transform .3s ease; }
.school-info__card:hover { transform: translateY(-5px); }
.school-info__icon { display: flex; width: 70px; height: 70px; margin: 0 auto 20px; align-items: center; justify-content: center; border-radius: 50%; color: #fff; background: var(--school); font-size: 1.8em; }
.school-info__card h2 { margin: 0 0 12px; color: #333; font-size: 1.35em; }
/* Em Quem Somos o ícone é só o traço azul, sem o disco de fundo usado na
   home da Escola. Declarado após a regra base para vencer na cascata. */
.school-info__icon.school-info__icon--plain { width: auto; height: auto; margin: 0 auto 1rem; color: var(--school-blue, #094BA2); background: none; font-size: 2.4em; }
.school-info__card p { margin: 0; color: #666; line-height: 1.55; }

/* Cursos da Escola — medidas da página no ar. As abas continuam sendo inputs
   de rádio, como no original: a troca é do navegador, sem script. */
.tabset { max-width: 100%; margin: 0 auto; padding: 20px; border-radius: 15px; background: #fff; box-shadow: 0 5px 15px rgba(0,0,0,.1); }
.tabset__radio { position: absolute; left: -200vw; }
.tabset__label { position: relative; display: inline-flex; padding: 15px 30px; align-items: center; justify-content: center; border: 2px solid transparent; border-bottom: 0; border-radius: 10px 10px 0 0; color: #666; background: #f5f5f5; font-weight: 600; cursor: pointer; transition: all .3s ease; }
.tabset__radio:checked + .tabset__label { border-color: var(--school-blue, #094BA2); color: #fff; background: var(--school-blue, #094BA2); }
/* Traço curto sob o rótulo, como no componente de abas do portal anterior. */
.tabset__label::after { position: absolute; bottom: 10px; left: 15px; width: 22px; height: 4px; background: #8d8d8d; content: ""; }
.tabset__label:hover::after, .tabset__radio:checked + .tabset__label::after { background: #fff; }
/* O foco fica no rádio, que está fora da tela; sem este anel a aba selecionada
   por teclado não se distingue da outra. */
.tabset__radio:focus-visible + .tabset__label { outline: 3px solid #063679; outline-offset: 2px; }
.tabset .tab-panel { display: none; padding: 30px; border-radius: 0 0 10px 10px; background: #fff; }
.tabset__radio:first-of-type:checked ~ .tab-panels > .tab-panel:first-child,
.tabset__radio:nth-of-type(2):checked ~ .tab-panels > .tab-panel:nth-child(2) { display: block; }
.tab-panel__empty { margin: 0; color: #666; font-size: 1.2em; text-align: center; }

.courses-grid { display: grid; margin: 30px 0; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; }
.course-card { border-radius: 15px; background: #fff; box-shadow: 0 5px 15px rgba(0,0,0,.1); overflow: hidden; transition: transform .3s ease; }
.course-card:hover { transform: translateY(-10px); }
.course-image { position: relative; background: #f5f5f5; }
.course-image img { display: block; width: 100%; height: auto; transition: transform .3s ease; }
.course-card:hover .course-image img { transform: scale(1.1); }
/* O selo verde vem de um style inline no original; aqui é regra da folha. */
.course-status { position: absolute; top: 15px; right: 15px; padding: 5px 15px; border-radius: 20px; color: #fff; background: #1e8b17; font-size: .9em; }
.course-content { padding: 25px; }
.course-content h2 { margin: 0 0 15px; color: #333; font-size: 1.3em; }
.course-subtitle { margin: -8px 0 15px; color: #333; font-size: 1.05em; font-weight: 650; }
.course-description { margin: 0 0 20px; color: #666; line-height: 1.6; }
.course-details { display: flex; margin: 0 0 20px; padding: 0; flex-wrap: wrap; justify-content: space-between; gap: 5px 15px; list-style: none; color: #666; font-size: .9em; }
.course-details li { display: flex; align-items: center; gap: 5px; }
.course-buttons { display: flex; margin-top: 15px; gap: 15px; }
.btn-inscrever { display: inline-block; flex: 1; padding: 10px 25px; border: 0; border-radius: 25px; color: #fff; background: var(--school-blue, #094BA2); font-size: 14px; text-align: center; text-decoration: none; cursor: pointer; transition: all .3s ease; }
.btn-inscrever:hover { color: #fff; background: #063679; text-decoration: none; transform: translateY(-2px); }

.responsive-table { margin: 20px 0; overflow-x: auto; }
.cursos-table { width: 100%; border-collapse: collapse; background: #fff; }
.cursos-table th, .cursos-table td { padding: 15px; border-bottom: 1px solid #eee; text-align: left; }
/* No original só a coluna Nome ficava à esquerda; as demais eram centralizadas
   por style inline em cada célula. */
.cursos-table thead th + th, .cursos-table .is-centered { text-align: center; }
.cursos-table th { color: #333; background: #f8f9fa; font-weight: 600; }
.cursos-table tbody th { background: transparent; font-weight: 400; }
.cursos-table tbody tr:hover { background: #f8f9fa; }
.btn-detalhes { padding: 6px 14px; border: 0; border-radius: 20px; color: #fff; background: var(--school-blue, #094BA2); font-size: 1em; cursor: pointer; transition: background .3s ease; }
.btn-detalhes:hover { background: #063679; }

.info-section { margin: 60px 0; }
.faq-section { margin-bottom: 60px; }
.section-heading { margin: 0 0 30px; color: #333; font-size: 2em; text-align: center; }
.faq-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 30px; }
.faq-item { padding: 25px; border-radius: 15px; background: #fff; box-shadow: 0 5px 15px rgba(0,0,0,.1); }
.faq-item h3 { display: flex; margin: 0 0 15px; align-items: center; color: #333; font-size: 1.2em; }
.faq-item h3::before { content: '?'; display: flex; width: 24px; height: 24px; margin-right: 10px; flex: 0 0 auto; align-items: center; justify-content: center; border-radius: 50%; color: #fff; background: var(--school-blue, #094BA2); font-size: .9em; }
.faq-item p { margin: 0; color: #666; line-height: 1.6; }

@media (max-width: 1439px) and (min-width: 1366px) {
    .site-header .primary-navigation > ul { gap: 3px; }
    .site-header .primary-navigation > ul > li > a { padding-inline: 8px; font-size: 13px; }
    .site-header .access-info-seal img { width: 110px; height: 40px; }
}
@media (max-width: 1365px) {
    .site-header .branding-row { display: flex; position: relative; justify-content: space-between; width: min(calc(100% - 2rem), 1400px); }
    .site-header .primary-navigation { justify-self: auto; }
    .access-info-seal { display: none; }
    .menu-toggle { display: inline-flex; }
    .primary-navigation { position: absolute; top: 100%; right: 0; left: 0; display: none; margin: 0; border-top: 1px solid var(--color-line); background: #fff; box-shadow: 0 14px 30px rgba(49,18,25,.14); transform: none; }
    .primary-navigation.is-open { display: block; }
    .site-header .primary-navigation > ul { display: block; }
    .site-header .primary-navigation > ul > li > a { min-height: 46px; padding-inline: 1rem; font-size: .86rem; }
    .primary-navigation .sub-menu { position: static; display: none; min-width: 0; border: 0; border-radius: 0; opacity: 1; visibility: visible; background: #f8f5f6; box-shadow: none; transform: none; transition: none; }
    .primary-navigation .is-submenu-open > .sub-menu { display: block; }
    .primary-navigation .sub-menu a { padding-left: 2rem; }
    .school-header__row { position: relative; justify-content: space-between; }
    .school-header__crest { display: none; }
    .school-nav ul { display: block; }
    .school-nav a { min-height: 46px; justify-content: flex-start; }
}
/* Acima de 1024px o original desloca o logo 100px para fora da coluna. */
@media (max-width: 1024px) {
    .official-footer-brand img { max-width: 100%; margin-left: 0; }
}

@media (max-width: 991px) {
    .home-banner-news__content { grid-template-columns: 118px 1fr; padding: 1.25rem 2.5rem 1.25rem 30%; }
    .home-banner-news__icon { width: 118px; height: 118px; }
    .home-banner-news__icon svg { width: 66px; height: 66px; }
    .home-banner-news__title strong { font-size: 2.35rem; }
    .home-banner-news__title b { font-size: 2.55rem; }
    .home-banner-news__details { display: none; }
    .home-news-layout, .home-media-layout { grid-template-columns: 1fr; }
    .home-news-column { display: flex; flex-direction: column; height: auto; grid-template-rows: none; }
    .home-quick-news { min-height: 0; padding-top: 1.75rem; }
    .home-quick-news__panel { height: auto; min-height: 0; }
    .home-quick-news-grid { height: auto; grid-auto-rows: auto; }
    .home-quick-news-item { min-height: 0; }
    .home-services { height: auto; }
    .school-hero-row { grid-template-columns: 1fr; }
    .galeria-grid, .photo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .home-councilors { grid-auto-columns: calc((100% - 2rem) / 3); }
    .councilor-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .access-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .home-services-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .home-main-video iframe { min-height: 0; }
    .home-latest-videos { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .home-latest-videos h3 { grid-column: 1 / -1; }
    .home-video-card { grid-template-columns: 1fr; align-content: start; }
}
/* Regimento Interno / Lei Orgânica — medidas da página no ar. As abas eram
   <button onclick>; aqui são input de rádio, sem JavaScript em atributo. */
.organica-abas { max-width: 1200px; margin: 30px auto; }
/* A linha cinza sob as abas vem do topo do painel: sem embrulho nos rádios,
   não há onde pendurar um border-bottom na fileira de rótulos. */
.organica-abas .tab-panels { margin-top: -2px; padding-top: 20px; border-top: 2px solid #ddd; }
.organica-abas .tab-button { position: relative; display: inline-block; padding: 10px 20px; color: #666; font-size: 16px; cursor: pointer; transition: color .3s ease; }
.organica-abas .tab-button::after { position: absolute; right: 0; bottom: -2px; left: 0; z-index: 1; height: 2px; background: var(--color-brand); content: ""; transform: scaleX(0); transition: transform .3s ease; }
.organica-abas .tabset__radio:checked + .tab-button { color: var(--color-brand); font-weight: 700; }
.organica-abas .tabset__radio:checked + .tab-button::after { transform: scaleX(1); }
.organica-abas .tabset__radio:focus-visible + .tab-button { outline: 3px solid var(--color-brand); outline-offset: 2px; }
.organica-abas .tab-content { display: none; padding: 20px; border-radius: 8px; background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,.1); }
.organica-abas .tabset__radio:first-of-type:checked ~ .tab-panels > .tab-content:first-child,
.organica-abas .tabset__radio:nth-of-type(2):checked ~ .tab-panels > .tab-content:nth-child(2) { display: block; }
.download-button { display: inline-flex; padding: 10px 20px; align-items: center; gap: 8px; border-radius: 5px; color: #fff; background: var(--color-brand); text-decoration: none; transition: background .3s ease; }
.download-button:hover { color: #fff; background: var(--color-brand-dark); text-decoration: none; }

/* Atos da Presidência — medidas da página no ar. Uma aba por ano; quinze
   cobrem os sete de hoje e a próxima década. */
.atos-abas .tabset__radio:nth-of-type(1):checked ~ .tab-panels > .tab-panel:nth-child(1),
.atos-abas .tabset__radio:nth-of-type(2):checked ~ .tab-panels > .tab-panel:nth-child(2),
.atos-abas .tabset__radio:nth-of-type(3):checked ~ .tab-panels > .tab-panel:nth-child(3),
.atos-abas .tabset__radio:nth-of-type(4):checked ~ .tab-panels > .tab-panel:nth-child(4),
.atos-abas .tabset__radio:nth-of-type(5):checked ~ .tab-panels > .tab-panel:nth-child(5),
.atos-abas .tabset__radio:nth-of-type(6):checked ~ .tab-panels > .tab-panel:nth-child(6),
.atos-abas .tabset__radio:nth-of-type(7):checked ~ .tab-panels > .tab-panel:nth-child(7),
.atos-abas .tabset__radio:nth-of-type(8):checked ~ .tab-panels > .tab-panel:nth-child(8),
.atos-abas .tabset__radio:nth-of-type(9):checked ~ .tab-panels > .tab-panel:nth-child(9),
.atos-abas .tabset__radio:nth-of-type(10):checked ~ .tab-panels > .tab-panel:nth-child(10),
.atos-abas .tabset__radio:nth-of-type(11):checked ~ .tab-panels > .tab-panel:nth-child(11),
.atos-abas .tabset__radio:nth-of-type(12):checked ~ .tab-panels > .tab-panel:nth-child(12),
.atos-abas .tabset__radio:nth-of-type(13):checked ~ .tab-panels > .tab-panel:nth-child(13),
.atos-abas .tabset__radio:nth-of-type(14):checked ~ .tab-panels > .tab-panel:nth-child(14),
.atos-abas .tabset__radio:nth-of-type(15):checked ~ .tab-panels > .tab-panel:nth-child(15) { display: block; }
.pagination .current { color: #fff; background: var(--color-brand); }
/* Comissões Permanentes — o nome sai em caixa alta, como no original, sem
   mexer no cadastro. Nesta página, e só nela, o texto do cartão de apresentação
   fica alinhado à esquerda: é assim no portal anterior. */
.comissoes-titulo { margin: 0; text-align: center; }
.comissoes-sobre .participation-card, .comissoes-sobre .participation-card p { text-align: left; }
.comissoes-sobre .participation-card h3, .comissoes-sobre .participation-card i { display: block; text-align: center; }
.comissoes-grid { margin-top: 40px; }
/* A fonte do sistema é ~12% mais larga que a Signika do portal anterior: com
   os 24px de lá, sete dos dez nomes quebrariam em duas linhas em vez de três. */
.comissao-card h3 { font-size: 1.25em; text-transform: uppercase; }
.comissao-card li { padding: 12px 0 12px 20px; font-size: 14px; line-height: 1.5; }

/* Plano Diretor — três abas, listas de documentos e o formulário de
   participação popular, com as medidas do template do portal anterior. */
.plano-abas .tabset__radio:nth-of-type(3):checked ~ .tab-panels > .tab-panel:nth-child(3) { display: block; }
.plano-abas > .tabset__label::after { display: none; }
.plano-abas > .tabset__label { margin: 12px 8px 0 0; padding: 12px 22px 14px; border: 1px solid transparent; border-radius: 999px; color: #5f6368; background: transparent; font-size: .95rem; font-weight: 600; }
.plano-abas > .tabset__radio:checked + .tabset__label { margin-bottom: 0; border-color: rgba(165,28,48,.2); border-bottom: 1px solid rgba(165,28,48,.2); color: var(--color-brand); background: #fff; box-shadow: 0 4px 14px rgba(165,28,48,.12); }
.plano-abas .tab-panel { margin-top: 8px; padding: 28px 16px 40px; border-top: 1px solid rgba(0,0,0,.07); }
.legislative-hero .plano-page-intro { max-width: 84em; margin: 4px auto 0; padding: 26px 32px 22px; border: 1px solid rgba(255,255,255,.16); border-radius: 14px; background: rgba(18,16,20,.48); box-shadow: 0 12px 40px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.06); text-align: justify; }
.legislative-hero .plano-page-intro p { margin: 0 0 1rem; font-size: .95rem; line-height: 1.6; }
.legislative-hero .plano-page-intro p:last-child { margin-bottom: 0; }
.legislative-hero .plano-page-intro-closing { margin-top: 18px; padding-top: 16px; border-top: 1px solid rgba(255,255,255,.16); font-weight: 700; text-align: center; }
.plano-heading { margin: 0 0 16px; color: var(--color-brand-dark); font-size: 1.5rem; }
.plano-subheading { margin: 28px 0 16px; padding-bottom: 8px; border-bottom: 2px solid rgba(165,28,48,.18); color: var(--color-brand); font-size: 1.2rem; font-weight: 700; }
.plano-lead { margin: 0 0 16px; line-height: 1.7; text-align: justify; }
.plano-doc-list { display: grid; gap: 24px; padding: 0; margin: 0; list-style: none; }
.plano-doc-card { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 20px; padding: 20px 22px; border: 1px solid rgba(165,28,48,.18); border-radius: 10px; background: #fff; box-shadow: 0 6px 24px rgba(25,30,45,.06); }
.plano-doc-card-title { min-width: 200px; flex: 1; color: var(--color-ink); font-size: 1.15rem; font-weight: 700; line-height: 1.35; overflow-wrap: anywhere; }
.plano-doc-view-btn { display: inline-flex; min-height: 44px; flex: 0 0 auto; align-items: center; justify-content: center; padding: 0 24px; border: 0; border-radius: 999px; color: #fff; background: linear-gradient(180deg, var(--color-brand) 0%, var(--color-brand-dark) 100%); font-size: .95rem; font-weight: 600; line-height: 1.5; text-decoration: none; box-shadow: 0 4px 14px rgba(165,28,48,.28); transition: box-shadow .15s ease, transform .15s ease; }
a.plano-doc-view-btn:hover { color: #fff; text-decoration: none; box-shadow: 0 6px 18px rgba(165,28,48,.35); transform: translateY(-1px); }
a.plano-doc-view-btn:focus-visible { outline: 3px solid var(--color-brand-dark); outline-offset: 3px; }
.plano-doc-view-btn--off { color: var(--color-muted); background: #f5f5f5; box-shadow: none; cursor: not-allowed; }

.plano-form-wrap { max-width: 820px; margin: 0 auto; }
.plano-form-header { margin-bottom: 24px; text-align: center; }
.plano-form-institution { margin: 0 0 6px; color: var(--color-muted); font-size: .9rem; }
.plano-form-main-title { margin: 0 0 18px; color: var(--color-brand-dark); font-size: 1.5rem; }
.plano-form-callout { padding: 18px 20px; border-left: 4px solid var(--color-brand); border-radius: 10px; background: #fdf3f5; text-align: left; }
.plano-form-callout p { margin: 0 0 6px; }
.plano-form-callout p:last-child { margin-bottom: 0; }
.plano-form-callout-title { color: var(--color-brand-dark); font-weight: 700; }
.plano-form-callout-hint { color: var(--color-muted); font-size: .92rem; }
.plano-fieldset { margin: 0 0 20px; padding: 20px; border: 1px solid #e6e6e8; border-radius: 10px; background: #fff; }
.plano-fieldset legend { padding: 0 8px; color: var(--color-brand-dark); font-weight: 700; }
.plano-step-badge { margin-right: 6px; }
.plano-fieldset label { display: block; margin-bottom: 6px; font-weight: 500; }
.plano-input, .plano-textarea { width: 100%; margin-bottom: 14px; padding: 10px 12px; border: 1px solid #ddd; border-radius: 6px; font: inherit; }
.plano-textarea { margin-bottom: 0; resize: vertical; }
.plano-input:focus-visible, .plano-textarea:focus-visible { outline: 3px solid var(--color-brand); outline-offset: 1px; }
.plano-check { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; font-weight: 400; cursor: pointer; }
.plano-check:last-child { margin-bottom: 0; }
.plano-check input[type="radio"], .plano-check input[type="checkbox"] { width: 18px; height: 18px; flex: 0 0 auto; margin: 0; }
.plano-input-inline { width: auto; flex: 1 1 220px; margin: 0; padding: 6px 10px; }
.plano-lgpd { align-items: flex-start; }
.plano-lgpd input { margin-top: 3px; }
.plano-file-ui { display: grid; gap: 4px; padding: 22px; border: 2px dashed #ddd; border-radius: 10px; background: #fafafa; text-align: center; cursor: pointer; }
.plano-file-ui:hover { border-color: var(--color-brand); background: #fdf3f5; }
.plano-file-icon { color: var(--color-brand); font-size: 1.6rem; }
.plano-file-title { font-weight: 600; }
.plano-file-meta { color: var(--color-muted); font-size: .85rem; }
.plano-file-native { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.plano-file-native:focus-visible + .plano-file-ui, .plano-file-ui:has(+ .plano-file-native:focus-visible) { outline: 3px solid var(--color-brand); outline-offset: 2px; }
.plano-form-footer-line { margin: 0 0 18px; color: var(--color-muted); font-size: .85rem; text-align: center; }
.plano-submit { display: inline-flex; align-items: center; gap: 8px; width: 100%; justify-content: center; padding: 14px 24px; border: 0; border-radius: 8px; color: #fff; background: var(--color-brand); font: inherit; font-weight: 600; cursor: pointer; transition: background .3s ease, transform .3s ease; }
.plano-submit:hover { background: var(--color-brand-dark); transform: translateY(-2px); }
.plano-submit:focus-visible { outline: 3px solid var(--color-brand-dark); outline-offset: 3px; }

.plano-form-participacao { margin-top: 18px; padding: 18px 20px; border: 1px solid #eee; border-radius: 12px; background: #fafafa; text-align: left; }
.plano-form-participacao h3 { margin: 0 0 10px; color: var(--color-brand); font-size: 1.1rem; }
.plano-form-participacao p { margin: 0 0 8px; }
.plano-form-participacao ul { margin: 0 0 8px; padding-left: 22px; }
.plano-form-participacao li { margin-bottom: 6px; overflow-wrap: anywhere; }
.plano-form-participacao-destaque { margin: 0; font-weight: 600; }
.plano-form-intro { margin: 18px 0 8px; color: var(--color-muted); font-size: .95rem; text-align: justify; }
.plano-form-tagline { margin: 0; color: var(--color-brand); font-weight: 600; text-align: center; }
.plano-hint { margin: 0 0 12px; color: var(--color-muted); font-size: .9rem; }
.plano-wizard-progress { margin-bottom: 20px; padding: 18px 20px; border: 1px solid #eee; border-radius: 12px; background: #fafafa; }
.plano-wizard-label { margin: 0 0 12px; font-weight: 700; }
.plano-wizard-dots { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 0; margin: 0 0 12px; list-style: none; }
.plano-wizard-dot { display: grid; gap: 6px; padding: 12px; border: 1px solid #e6e6e8; border-radius: 10px; background: #fff; color: var(--color-muted); font-size: .85rem; text-align: center; }
.plano-wizard-dot-num { display: grid; width: 28px; height: 28px; margin: 0 auto; place-items: center; border-radius: 50%; color: var(--color-muted); background: #eee; font-weight: 700; }
.plano-wizard-dot.is-current { border-color: var(--color-brand); color: var(--color-brand); font-weight: 600; }
.plano-wizard-dot.is-current .plano-wizard-dot-num { color: #fff; background: var(--color-brand); }
.plano-wizard-bar { height: 6px; overflow: hidden; border-radius: 999px; background: #e6e6e8; }
.plano-wizard-bar span { display: block; width: 50%; height: 100%; border-radius: 999px; background: var(--color-brand); transition: width .3s ease; }
.plano-wizard.is-guiado .plano-wizard-pane { display: none; }
.plano-wizard.is-guiado .plano-wizard-pane.is-active { display: block; }
.plano-wizard-nav { display: flex; flex-wrap: wrap; gap: 12px; justify-content: flex-end; align-items: center; }
.plano-wizard-nav--final { justify-content: space-between; }
.plano-btn { display: inline-flex; align-items: center; gap: 8px; padding: 12px 22px; border: 1px solid transparent; border-radius: 8px; font: inherit; font-weight: 600; cursor: pointer; transition: background .3s ease, color .3s ease; }
.plano-btn-primary { color: #fff; background: var(--color-brand); }
.plano-btn-primary:hover { background: var(--color-brand-dark); }
.plano-btn-ghost { border-color: #ddd; color: var(--color-ink); background: #fff; }
.plano-btn-ghost:hover { background: #f5f5f5; }
.plano-btn:focus-visible, .plano-submit:focus-visible { outline: 3px solid var(--color-brand-dark); outline-offset: 3px; }
.plano-wizard-nav .plano-submit { width: auto; }

/* Audiências Públicas — medidas do template do portal anterior, onde o desenho
   vinha em atributo style em cada elemento. */
.audiencias-abas .tabset__radio:nth-of-type(1):checked ~ .tab-panels > .tab-panel:nth-child(1),
.audiencias-abas .tabset__radio:nth-of-type(2):checked ~ .tab-panels > .tab-panel:nth-child(2) { display: block; }
/* Aqui o portal anterior usa o componente de abas do próprio tema, sem o
   desenho próprio que a página de Atos da Presidência traz: rótulo vinho, aba
   aberta encaixada na linha do painel. */
.audiencias-abas { padding: 20px 20px 0; box-shadow: none; }
.audiencias-abas > .tabset__label { min-width: 0; margin: 0; padding: 15px 30px; border: 1px solid transparent; border-bottom: 0; border-radius: 0; color: var(--color-brand); background: transparent; font-size: 16px; font-weight: 600; box-shadow: none; }
.audiencias-abas > .tabset__radio:checked + .tabset__label { margin-bottom: -1px; border-color: #ccc; border-bottom: 1px solid #fff; color: var(--color-brand); background: #fff; }
.audiencias-abas > .tabset__radio:focus-visible + .tabset__label { outline: 3px solid var(--color-brand); outline-offset: -3px; }
.audiencias-abas .tab-panel { padding: 30px 0; border-top: 1px solid #ccc; border-radius: 0; background: transparent; box-shadow: none; }
.audiencias-sobre h2 { margin: 0 0 20px; color: var(--color-brand-dark); }
.audiencias-sobre p { margin: 0 0 16px; line-height: 1.7; }
.audiencias-sobre p:last-child { margin-bottom: 0; }
.comissoes-list { max-width: 1200px; margin: 0 auto; padding: 20px; }
.comissao-item { margin-bottom: 20px; overflow: hidden; border-radius: 12px; background: #fff; box-shadow: 0 4px 6px rgba(0,0,0,.1); }
.comissao-item:last-child { margin-bottom: 0; }
.comissao-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 15px; padding: 20px; }
.comissao-header h3 { margin: 0; color: #fff; font-size: 1.2em; line-height: 1.5; }
.comissao-anos { display: flex; flex-wrap: wrap; gap: 10px; }
.btnano { padding: 8px 15px; border: 1px solid rgba(255,255,255,.3); border-radius: 20px; color: #fff; background: rgba(255,255,255,.15); font: inherit; font-size: 1rem; line-height: 1.5; cursor: pointer; transition: background .3s ease; }
.btnano:hover { background: rgba(255,255,255,.25); }
.btnano:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.comissao-item--1 .comissao-header { background: linear-gradient(45deg, rgba(0,0,0,.9), rgba(180,0,0,.8)); }
.comissao-item--2 .comissao-header { background: linear-gradient(45deg, rgba(180,0,0,.8), rgba(0,0,0,.85)); }
.comissao-item--3 .comissao-header { background: linear-gradient(45deg, rgba(0,0,0,.85), rgba(180,0,0,.75)); }
.comissao-item--4 .comissao-header { background: linear-gradient(45deg, rgba(180,0,0,.75), rgba(0,0,0,.8)); }
.comissao-item--5 .comissao-header { background: linear-gradient(45deg, rgba(0,0,0,.8), rgba(180,0,0,.7)); }
.comissao-item--6 .comissao-header { background: linear-gradient(45deg, rgba(180,0,0,.7), rgba(0,0,0,.75)); }
.comissao-item--7 .comissao-header { background: linear-gradient(45deg, rgba(0,0,0,.75), rgba(180,0,0,.65)); }
.comissao-item--8 .comissao-header { background: linear-gradient(45deg, rgba(180,0,0,.65), rgba(0,0,0,.7)); }
.comissao-item--9 .comissao-header { background: linear-gradient(45deg, rgba(0,0,0,.7), rgba(180,0,0,.6)); }
.comissao-item--10 .comissao-header { background: linear-gradient(45deg, rgba(180,0,0,.6), rgba(0,0,0,.65)); }

.audiencia-dialog { width: min(90%, 1000px); max-height: calc(100vh - 6%); border: 0; border-radius: 12px; padding: 0; color: var(--color-ink); box-shadow: 0 2px 4px rgba(0,0,0,.1); }
.audiencia-dialog::backdrop { background: rgba(0,0,0,.3); }
.audiencia-dialog__header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 25px 30px; border-bottom: 1px solid #eee; border-radius: 12px 12px 0 0; background: #f8f9fa; }
.audiencia-dialog__header h2 { margin: 0; color: #333; font-size: 1.4em; font-weight: 600; }
.audiencia-dialog__header button { padding: 5px 10px; border: 0; border-radius: 50%; color: #666; background: none; font-size: 24px; line-height: 1; cursor: pointer; transition: background .2s ease; }
.audiencia-dialog__header button:hover { background: #eee; }
.audiencia-dialog__header button:focus-visible { outline: 3px solid var(--color-brand); outline-offset: 2px; }
.audiencia-dialog__body { padding: 30px; }
.audiencia-abas { padding: 0; border-radius: 0; background: transparent; box-shadow: none; }
.audiencia-abas > .tabset__label { min-width: 0; margin: 0 20px 0 0; padding: 20px 30px; border: 0; border-radius: 0; color: #666; background: none; font-size: 1.1em; font-weight: 400; box-shadow: none; }
.audiencia-abas > .tabset__label::after { display: none; }
.audiencia-abas > .tabset__radio:checked + .tabset__label { color: var(--color-brand); background: none; box-shadow: inset 0 -3px 0 var(--color-brand); }
.audiencia-abas > .tabset__radio:focus-visible + .tabset__label { outline: 3px solid var(--color-brand); outline-offset: -3px; }
.audiencia-abas > .tab-panels { border-top: 1px solid #eee; }
.audiencia-abas .tabset__radio:nth-of-type(1):checked ~ .tab-panels > .tab-panel:nth-child(1),
.audiencia-abas .tabset__radio:nth-of-type(2):checked ~ .tab-panels > .tab-panel:nth-child(2) { display: block; }
.audiencia-abas .tab-panel { padding: 30px; border-radius: 0; background: #fff; box-shadow: none; }
.document-item { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-bottom: 15px; padding: 20px; border: 1px solid #eee; border-radius: 8px; background: #fff; }
.document-item:last-child { margin-bottom: 0; }
.document-item h4 { min-width: 0; margin: 0; color: #333; font-size: 1.1em; font-weight: 500; line-height: 1.5; overflow-wrap: anywhere; }
.document-item a { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 8px; padding: 10px 20px; border: 1px solid #ddd; border-radius: 6px; color: #444; background: #fff; font-size: .95em; line-height: 1.5; text-decoration: none; transition: background .2s ease, border-color .2s ease; }
.document-item a:hover { border-color: #ccc; background: #f8f9fa; text-decoration: none; }
.document-item__ausente { flex: 0 0 auto; color: var(--color-muted); font-size: .95em; }

.atos-conteudo { margin-bottom: 30px; padding: 30px 0; border-radius: 15px; background: #fff; }
.atos-conteudo .legislative-container { padding-block: 0; }
.atos-abas,
.expediente-abas { padding: 20px 20px 0; box-shadow: none; }
.atos-abas .tabset__label,
.expediente-abas .tabset__label { min-width: 120px; margin-right: 5px; border-bottom: 2px solid transparent; color: #666; background: #fff; font-size: 1.1em; line-height: 1.5; box-shadow: 0 -2px 10px rgba(0,0,0,.05); }
.atos-abas .tabset__radio:checked + .tabset__label,
.expediente-abas .tabset__radio:checked + .tabset__label {
    margin-bottom: -2px; border-color: transparent; border-bottom: 0; color: #fff;
    background: linear-gradient(rgba(181,55,55,.9), rgba(116,71,71,.9)), url("assets/images/home/plenario-legislativo.jpg");
    background-position: center; background-size: cover;
    box-shadow: 0 -5px 15px rgba(218,73,71,.2);
}
.atos-abas .tabset__radio:focus-visible + .tabset__label,
.expediente-abas .tabset__radio:focus-visible + .tabset__label { outline: 3px solid var(--color-brand); outline-offset: 2px; }
.atos-abas .tab-panel,
.expediente-abas .tab-panel { padding: 40px; border-radius: 0 15px 15px 15px; background: #fff; box-shadow: 0 5px 15px rgba(0,0,0,.05); }
.ato-info { margin-bottom: 15px; }
.ato-info:last-child { margin-bottom: 0; }
.ato-info .btnmaterial { display: flex; width: 100%; margin: 0; padding: 15px 20px; line-height: 1.5; align-items: center; justify-content: space-between; gap: 1rem; border: 0; border-radius: 8px; background: #f8f9fa; color: #333; font-size: 14px; text-align: left; text-decoration: none; box-shadow: 0 2px 5px rgba(0,0,0,.05); transition: background .3s ease, color .3s ease, transform .3s ease; }
.ato-info .btnmaterial:hover { color: #fff; background: var(--color-brand); text-decoration: none; transform: translateY(-2px); }
.ato-info .btnmaterial:focus-visible { outline: 3px solid var(--color-brand); outline-offset: 2px; }
.ato-title { font-weight: 500; }
.view-button { display: flex; flex: 0 0 auto; align-items: center; gap: 5px; color: var(--color-brand); font-size: .9em; }
.ato-info .btnmaterial:hover .view-button { color: #fff; }

/* Licitações e Contratos — coluna mais larga (~90% da viewport). */
.legislative-hero.licitacoes-hero .container,
.licitacoes-page.legislative-container {
    --content: min(90vw, 1760px);
    width: min(90vw, 1760px);
    max-width: none;
    padding-inline: clamp(16px, 2vw, 28px);
}
.licitacoes-page { --licit-card-radius: 14px; }
.licitacoes-toolbar {
    margin-bottom: 2rem;
    padding: 1.35rem 1.5rem 1.5rem;
    border: 1px solid var(--color-line);
    border-radius: calc(var(--licit-card-radius) + 2px);
    background: linear-gradient(180deg, var(--color-white) 0%, var(--color-surface) 100%);
    box-shadow: var(--shadow);
}
.licitacoes-toolbar__block + .licitacoes-toolbar__block { margin-top: 1.25rem; padding-top: 1.25rem; border-top: 1px solid var(--color-line); }
.licitacoes-toolbar__heading {
    display: flex;
    margin: 0 0 .85rem;
    align-items: center;
    gap: .5rem;
    color: var(--color-ink);
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.licitacoes-toolbar__heading i { color: var(--color-brand); font-size: .95rem; }
.licitacoes-busca-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem 1.25rem;
    align-items: end;
}
@media (min-width: 720px) {
    .licitacoes-busca-grid { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr) auto; }
}
.licitacoes-field { display: flex; min-width: 0; flex-direction: column; gap: .35rem; }
.licitacoes-field--grow { grid-column: 1 / -1; }
@media (min-width: 720px) {
    .licitacoes-field--grow { grid-column: auto; }
}
.licitacoes-field__label { margin: 0; color: var(--color-muted); font-size: .8125rem; font-weight: 600; }
.licitacoes-field__label--hidden { visibility: hidden; user-select: none; }
.licitacoes-field__control { position: relative; display: flex; align-items: center; }
.licitacoes-field__control--icon i { position: absolute; left: .85rem; color: var(--color-muted); pointer-events: none; }
.licitacoes-field__control--icon .licitacoes-input { padding-left: 2.5rem; }
.licitacoes-input {
    width: 100%;
    padding: .65rem .85rem;
    border: 1px solid var(--color-line);
    border-radius: 10px;
    background: var(--color-white);
    color: var(--color-ink);
    font-size: 1rem;
    font-family: inherit;
    transition: border-color .2s ease, box-shadow .2s ease;
}
.licitacoes-input:focus { border-color: var(--color-brand); box-shadow: 0 0 0 3px rgba(165,28,48,.15); outline: none; }
.licitacoes-input--date { min-height: 2.75rem; }
.licitacoes-busca-acoes { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.licitacoes-btn {
    display: inline-flex;
    padding: .65rem 1.15rem;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    border: 1px solid transparent;
    border-radius: 10px;
    font-size: .9375rem;
    font-weight: 600;
    font-family: inherit;
    text-decoration: none;
    cursor: pointer;
    transition: background .2s ease, border-color .2s ease, color .2s ease, transform .2s ease, box-shadow .2s ease;
}
.licitacoes-btn--primary { border-color: var(--color-brand); color: var(--color-white); background: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-dark) 100%); box-shadow: 0 4px 14px rgba(165,28,48,.25); }
.licitacoes-btn--primary:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(165,28,48,.32); }
.licitacoes-btn--ghost { border-color: var(--color-line); color: var(--color-brand-dark); background: var(--color-white); }
.licitacoes-btn--ghost:hover { border-color: var(--color-brand); color: var(--color-brand); }
.licitacoes-busca-resumo {
    margin: 0 0 1.25rem;
    padding: .65rem 1rem;
    border-radius: 10px;
    color: var(--color-brand-dark);
    background: rgba(165,28,48,.06);
    font-size: .9375rem;
    text-align: center;
}
.licitacoes-list {
    display: grid;
    margin: 0;
    padding: .25rem 0 0;
    grid-template-columns: 1fr;
    gap: 1.35rem;
    list-style: none;
}
@media (min-width: 680px) {
    .licitacoes-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1080px) {
    .licitacoes-list { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
}
.licitacao-card {
    position: relative;
    display: flex;
    min-height: 100%;
    flex-direction: column;
    border: 1px solid var(--color-line);
    border-radius: var(--licit-card-radius);
    background: var(--color-white);
    box-shadow: 0 4px 20px rgba(36,33,38,.06);
    overflow: hidden;
    transition: transform .28s ease, box-shadow .28s ease, border-color .28s ease;
}
.licitacao-card:hover { border-color: rgba(165,28,48,.35); box-shadow: 0 14px 36px rgba(70,18,29,.14); transform: translateY(-4px); }
.licitacao-card__accent { height: 4px; background: linear-gradient(90deg, var(--color-brand) 0%, var(--color-accent) 100%); }
.licitacao-card__inner { display: flex; flex: 1; flex-direction: column; padding: 1.15rem 1.25rem 1.25rem; gap: .65rem; }
.licitacao-card__head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.licitacao-card__grid {
    display: grid;
    margin: 0;
    grid-template-columns: 1fr 1fr;
    gap: .65rem .85rem;
}
.licitacao-card__grid-item { margin: 0; min-width: 0; }
.licitacao-card__grid-item dt {
    margin: 0 0 .2rem;
    color: var(--color-muted);
    font-size: .6875rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.licitacao-card__grid-item dd { margin: 0; color: var(--color-ink); font-size: .875rem; font-weight: 600; line-height: 1.35; overflow-wrap: anywhere; }
.licitacao-card__titulo-label {
    display: block;
    margin-bottom: .35rem;
    color: var(--color-muted);
    font-size: .6875rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.licitacao-card__icon {
    display: grid;
    width: 2.5rem;
    height: 2.5rem;
    flex-shrink: 0;
    place-items: center;
    border-radius: 12px;
    color: var(--color-brand);
    background: rgba(165,28,48,.1);
    font-size: 1.1rem;
}
.licitacao-card__badge-anexo {
    display: inline-flex;
    padding: .25rem .55rem;
    align-items: center;
    gap: .3rem;
    border-radius: 999px;
    color: var(--color-muted);
    background: var(--color-surface);
    font-size: .75rem;
    font-weight: 600;
}
.licitacao-card__titulo {
    margin: 0;
    flex: 1;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.4;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;
}
.licitacao-card__titulo a { color: var(--color-ink); text-decoration: none; transition: color .2s ease; }
.licitacao-card__titulo a:hover { color: var(--color-brand); }
.licitacao-card__datas {
    display: flex;
    margin: .25rem 0 0;
    padding: .75rem 0 0;
    flex-direction: column;
    gap: .55rem;
    border-top: 1px dashed var(--color-line);
    list-style: none;
}
.licitacao-card__data-item {
    display: flex;
    align-items: flex-start;
    gap: .55rem;
    color: var(--color-ink);
    font-size: .8125rem;
    line-height: 1.35;
}
.licitacao-card__data-item > i { margin-top: .15rem; color: var(--color-brand); font-size: .95rem; opacity: .85; }
.licitacao-card__data-label { display: block; color: var(--color-muted); font-size: .6875rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.licitacao-card__data-item time { display: block; font-weight: 600; white-space: nowrap; }
.licitacao-card__foot { margin-top: auto; padding-top: .85rem; }
.licitacao-card__cta {
    display: inline-flex;
    width: 100%;
    padding: .6rem 1rem;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    border-radius: 10px;
    color: var(--color-white);
    background: var(--color-ink);
    font-size: .875rem;
    font-weight: 600;
    text-decoration: none;
    transition: background .2s ease, transform .2s ease;
}
.licitacao-card:hover .licitacao-card__cta { background: var(--color-brand); }
.licitacao-card__cta i { font-size: .75rem; transition: transform .2s ease; }
.licitacao-card:hover .licitacao-card__cta i { transform: translateX(3px); }
.licitacoes-total { margin-top: 1.75rem; color: var(--color-muted); font-size: .9375rem; text-align: center; }
.licitacoes-page .pagination { margin-top: 1.5rem; margin-bottom: .5rem; justify-content: center; }
@media (max-width: 679px) {
    .licitacoes-toolbar { padding: 1.1rem 1rem 1.25rem; }
    .licitacoes-field--actions .licitacoes-busca-acoes { width: 100%; }
    .licitacoes-btn { flex: 1; }
}

.procurement-detail-page { padding-block: 40px; }
.procurement-detail {
    max-width: 920px;
    margin: 0 auto;
    padding: 2rem 2.25rem;
    border: 1px solid var(--color-line);
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 4px 15px rgba(0, 0, 0, .1);
}
.procurement-detail__back { margin: 0 0 1.25rem; }
.procurement-detail__back a { color: var(--color-brand); font-weight: 650; text-decoration: none; }
.procurement-detail__back a:hover { color: var(--color-brand-dark); text-decoration: underline; }
.procurement-detail__title {
    margin: 0 0 1.25rem;
    color: var(--color-brand-dark);
    font-size: clamp(1.15rem, 2.5vw, 1.45rem);
    font-weight: 700;
    line-height: 1.35;
}
.procurement-detail__objeto { margin: 0 0 1.5rem; color: #444; line-height: 1.65; text-align: justify; }
.procurement-detail__objeto p { margin: 0; }
.procurement-detail__meta { margin: 0; padding: 0; list-style: none; color: #333; }
.procurement-detail__meta li { margin-bottom: .7rem; line-height: 1.5; }
.procurement-detail__meta strong { margin-right: .35rem; }
.procurement-detail__anexos { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: 1.75rem; padding-top: 1.35rem; border-top: 1px solid var(--color-line); }
.procurement-detail__anexos .button--secondary {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    padding: .45rem 1.15rem;
    border-radius: 999px;
    font-size: .92rem;
    font-weight: 700;
    text-decoration: none;
}
.procurement-detail-page .notice { max-width: 920px; margin: 0 auto; }

/* Detalhe da contratação.

   A ficha é o cabeçalho de identificação: campos curtos — órgão, número, ano,
   datas — numa grade que se reflui sozinha. `Valor estimado` cabe aqui e não
   cabe: às vezes é "197.600,00", às vezes é um parágrafo descrevendo dois
   lotes. Por isso o valor quebra linha como qualquer texto, e a célula cresce
   em vez de estourar a grade.

   A borda à esquerda de cada campo é o mesmo recurso de `.notice`, em vermelho
   institucional: dá âncora vertical à leitura sem acrescentar caixa, sombra
   nem outro vocabulário à página. */
.doc-detalhe__titulo { margin: 0 0 30px; color: var(--color-brand-dark); font-size: 1.6em; font-weight: 600; line-height: 1.3; overflow-wrap: break-word; }
/* align-items: start porque a célula da grade estica para a altura da linha:
   sem isso, a régua vermelha de "Ano" descia junto com o campo mais alto da
   mesma faixa e ficava uma barra comprida ao lado de quatro caracteres. */
.doc-detalhe__dados { display: grid; align-items: start; margin: 0 0 40px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 24px 30px; }
.doc-detalhe__dados > div { padding-left: 15px; border-left: 4px solid var(--color-brand); }
.doc-detalhe__dados dt { margin: 0 0 4px; color: var(--color-muted); font-size: .78rem; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; }
.doc-detalhe__dados dd { margin: 0; color: var(--color-ink); font-size: 1.05rem; line-height: 1.5; overflow-wrap: anywhere; }
.doc-detalhe__dados time { white-space: nowrap; }

/* Objeto e fornecedor são prosa, e não campo: ganham fundo em vez de régua,
   para o olho não os ler como mais dois itens da ficha. */
.doc-detalhe__bloco { padding: 20px 25px; margin: 0 0 24px; border-radius: var(--radius); background: var(--color-surface); }
.doc-detalhe__bloco h3, .doc-detalhe__anexos h3 { margin: 0 0 10px; color: var(--color-brand-dark); font-size: 1.1em; font-weight: 600; }
.doc-detalhe__bloco p { margin: 0; color: var(--color-ink); line-height: 1.6; overflow-wrap: anywhere; }

.doc-detalhe__anexos { margin-bottom: 40px; }
/* Nome de edital passa dos 90 caracteres — "EDITAL-362024-PROCESSO-362024-
   PREGAO-ELETRONICO-132024-…" —, e sem quebrar em qualquer ponto ele empurra
   a coluna de tamanho para fora da tela no celular. */
.doc-detalhe__anexos .licitacoes-table th[scope="row"] { overflow-wrap: anywhere; }
.doc-detalhe__anexos .licitacoes-table td { color: var(--color-muted); text-align: right; white-space: nowrap; }
.doc-detalhe__anexos .licitacoes-table thead th:last-child { text-align: right; }
.doc-detalhe__anexos .file-link { color: var(--color-brand-dark); font-weight: 600; text-decoration: none; }
.doc-detalhe__anexos .file-link:hover { color: var(--color-brand); text-decoration: underline; }

/* Mesa Diretora — medidas da página no ar. */
.member-info { text-align: center; }
.member-info img { width: 150px; height: 150px; margin-bottom: 15px; border: 3px solid var(--color-brand); border-radius: 50%; object-fit: cover; }
.member-details h3 { margin: 0 0 5px; color: #333; font-size: 1.2em; }
.member-details h3 a { color: inherit; text-decoration: none; }
.member-details h3 a:hover { color: var(--color-brand); }
.member-details > p { margin: 0 0 15px; color: #666; }
.member-details ul { padding: 0; margin: 0; list-style: none; text-align: left; }
.member-details li { position: relative; padding: 8px 0 8px 20px; border-bottom: 1px solid #eee; color: #666; }
.member-details li::before { position: absolute; left: 0; color: var(--color-brand); content: "\2192"; }
.member-details li:last-child { border-bottom: 0; }
.participation-card .card-icon { margin-bottom: 15px; }

/* Expediente — medidas da página no ar. A sanfona era <button> movida por
   script; aqui é <details>/<summary>, que o navegador já abre, fecha e
   anuncia. O sinal de + vira − quando aberto, como no original. */
/* A regra base do tabset cobre duas abas, que é o caso de Cursos. O
   Expediente tem uma por ano — hoje seis, e cresce a cada ano. Doze cobre a
   próxima meia dúzia sem precisar mexer aqui de novo. */
.concurso-page .concurso-intro { max-width: 720px; margin: 0 0 1.5rem; color: var(--color-muted); font-size: 1.05rem; line-height: 1.6; }
.concurso-abas .tabset__radio:nth-of-type(1):checked ~ .tab-panels > .tab-panel:nth-child(1),
.concurso-abas .tabset__radio:nth-of-type(2):checked ~ .tab-panels > .tab-panel:nth-child(2),
.concurso-abas .tabset__radio:nth-of-type(3):checked ~ .tab-panels > .tab-panel:nth-child(3),
.concurso-abas .tabset__radio:nth-of-type(4):checked ~ .tab-panels > .tab-panel:nth-child(4),
.concurso-abas .tabset__radio:nth-of-type(5):checked ~ .tab-panels > .tab-panel:nth-child(5),
.concurso-abas .tabset__radio:nth-of-type(6):checked ~ .tab-panels > .tab-panel:nth-child(6),
.concurso-abas .tabset__radio:nth-of-type(7):checked ~ .tab-panels > .tab-panel:nth-child(7),
.concurso-abas .tabset__radio:nth-of-type(8):checked ~ .tab-panels > .tab-panel:nth-child(8),
.concurso-abas .tabset__radio:nth-of-type(9):checked ~ .tab-panels > .tab-panel:nth-child(9),
.concurso-abas .tabset__radio:nth-of-type(10):checked ~ .tab-panels > .tab-panel:nth-child(10),
.concurso-abas .tabset__radio:nth-of-type(11):checked ~ .tab-panels > .tab-panel:nth-child(11),
.concurso-abas .tabset__radio:nth-of-type(12):checked ~ .tab-panels > .tab-panel:nth-child(12) { display: block; }

.expediente-abas .tabset__radio:nth-of-type(1):checked ~ .tab-panels > .tab-panel:nth-child(1),
.expediente-abas .tabset__radio:nth-of-type(2):checked ~ .tab-panels > .tab-panel:nth-child(2),
.expediente-abas .tabset__radio:nth-of-type(3):checked ~ .tab-panels > .tab-panel:nth-child(3),
.expediente-abas .tabset__radio:nth-of-type(4):checked ~ .tab-panels > .tab-panel:nth-child(4),
.expediente-abas .tabset__radio:nth-of-type(5):checked ~ .tab-panels > .tab-panel:nth-child(5),
.expediente-abas .tabset__radio:nth-of-type(6):checked ~ .tab-panels > .tab-panel:nth-child(6),
.expediente-abas .tabset__radio:nth-of-type(7):checked ~ .tab-panels > .tab-panel:nth-child(7),
.expediente-abas .tabset__radio:nth-of-type(8):checked ~ .tab-panels > .tab-panel:nth-child(8),
.expediente-abas .tabset__radio:nth-of-type(9):checked ~ .tab-panels > .tab-panel:nth-child(9),
.expediente-abas .tabset__radio:nth-of-type(10):checked ~ .tab-panels > .tab-panel:nth-child(10),
.expediente-abas .tabset__radio:nth-of-type(11):checked ~ .tab-panels > .tab-panel:nth-child(11),
.expediente-abas .tabset__radio:nth-of-type(12):checked ~ .tab-panels > .tab-panel:nth-child(12) { display: block; }

.expediente-sessao { margin-bottom: 10px; }
.expediente-sessao > summary { display: flex; padding: 20px 25px; align-items: center; justify-content: space-between; gap: 1rem; border-radius: 10px; background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,.05); color: #333; font-size: 16px; font-weight: 500; line-height: 1.5; cursor: pointer; list-style: none; transition: background .3s ease, color .3s ease, transform .3s ease; }
.expediente-sessao > summary::-webkit-details-marker { display: none; }
.expediente-sessao > summary::after { content: "+"; color: inherit; font-size: 20px; }
.expediente-sessao[open] > summary { background: rgba(66,66,66,.89); color: #fff; transform: translateY(-2px); }
.expediente-sessao[open] > summary::after { content: "−"; }
.expediente-sessao > summary:focus-visible { outline: 3px solid var(--color-brand); outline-offset: 2px; }
.expediente-documentos { margin: -5px 0 15px; padding: 25px; border-radius: 10px; background: #fff; box-shadow: 0 3px 12px rgba(0,0,0,.05); }
.expediente-documentos .btnedital, .expediente-documentos .btnmaterial { display: inline-flex; min-width: 140px; min-height: 48px; margin: 8px; padding: 12px 25px; align-items: center; justify-content: center; border: 0; border-radius: 25px; color: #fff; background: var(--color-brand); font-size: 14px; font-weight: 500; line-height: 1.5; white-space: nowrap; text-decoration: none; box-shadow: 0 3px 10px rgba(165,28,48,.2); transition: background .3s ease, transform .3s ease; }
.expediente-documentos .btnedital:hover, .expediente-documentos .btnmaterial:hover { color: #fff; background: var(--color-brand-dark); text-decoration: none; transform: translateY(-2px); }

/* No portal anterior este bloco é um modal que cobre a página a cada
   carregamento. Aqui é um convite visível, que não interrompe a consulta. */
.youtube-call { display: grid; grid-template-columns: auto 1fr auto; margin: 30px 0; padding: 24px; align-items: center; gap: 20px; border: 1px solid #e9ecef; border-radius: 16px; background: #f8f9fa; }
.youtube-call__icon { display: grid; width: 64px; height: 64px; place-items: center; border-radius: 50%; background: #fff; color: #f00; font-size: 2rem; }
.youtube-call h2 { margin: 0 0 6px; color: #333; font-size: 1.25em; font-weight: 600; }
.youtube-call h2 i { color: #f00; }
.youtube-call p { margin: 0; color: #555; line-height: 1.6; }
.youtube-btn { display: inline-flex; padding: 14px 28px; align-items: center; gap: 10px; border-radius: 8px; color: #fff; background: #f00; font-weight: 500; white-space: nowrap; text-decoration: none; box-shadow: 0 4px 12px rgba(255,0,0,.2); transition: background .2s ease, transform .2s ease; }
.youtube-btn:hover { color: #fff; background: #d40000; text-decoration: none; transform: translateY(-2px); }

/* Notícia individual — cartão na coluna institucional de 1200px.
   O WordPress também coloca a classe single-post no <body>; estilos do cartão
   ficam restritos a article.single-post para não afetar cabeçalho/rodapé. */
.single-post-page.legislative-container {
    padding-block: 40px 50px;
    min-width: 0;
}

article.single-post {
    margin: 0;
    min-width: 0;
    max-width: 100%;
    padding: clamp(24px, 4vw, 40px);
    border-radius: 15px;
    background: #fff;
    box-shadow: 0 2px 15px rgba(0, 0, 0, .1);
}

.single-post-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    min-width: 0;
    max-width: 100%;
    margin-bottom: 28px;
    padding-bottom: 18px;
    border-bottom: 2px solid #f0f0f0;
}
article.single-post .entry-title {
    flex: 1;
    min-width: 0;
    margin: 0;
    color: #333;
    font-size: clamp(1.35rem, 2.4vw + .5rem, 2.15rem);
    font-weight: 700;
    line-height: 1.25;
    overflow-wrap: break-word;
}
article.single-post .post-meta { flex: 0 0 auto; margin: 0; }
article.single-post .post-date {
    display: flex;
    margin: 0;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    border-radius: 25px;
    background: #f0f4f8;
    color: #5c6670;
    font-size: .95em;
    white-space: nowrap;
}
.single-post-vereador {
    display: inline-flex;
    margin: -8px 0 20px;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    padding: 8px 16px;
    border-radius: 25px;
    background: #f8f9fa;
    color: #666;
    font-size: .95em;
}
.single-post-vereador a { color: var(--color-brand-dark); font-weight: 600; text-decoration: none; }
.single-post-vereador a:hover { text-decoration: underline; }

.vereador-single {
    padding-block: 32px 48px;
    background: var(--color-surface);
}
.legislative-container.vereador-single__wrap {
    --content: min(90vw, 1720px);
    width: min(90vw, 1720px);
    max-width: 90%;
    padding-block: 0;
}
.vereador-profile__nav {
    margin: 0 0 1.25rem;
}
.vereador-profile__nav a {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    color: var(--color-muted);
    font-size: .9rem;
    font-weight: 600;
    text-decoration: none;
}
.vereador-profile__nav a:hover {
    color: var(--color-brand);
}
.vereador-single,
.vereador-single__wrap,
.vereador-profile,
.vereador-profile__layout {
    overflow: visible;
}
.vereador-profile__layout {
    display: grid;
    gap: 1.5rem;
    align-items: stretch;
}
@media (min-width: 768px) {
    .vereador-profile__layout {
        grid-template-columns: 280px minmax(0, 1fr);
        gap: 1.75rem;
    }
}
@media (min-width: 992px) {
    .vereador-profile__layout {
        grid-template-columns: minmax(280px, 22%) minmax(0, 1fr);
        gap: 2rem;
    }
}
@media (min-width: 1200px) {
    .vereador-profile__layout {
        grid-template-columns: minmax(300px, 24%) minmax(0, 1fr);
        gap: 2.25rem;
    }
}
/* A coluna ancora estica até a altura da biografia; o cartão gruda no topo ao rolar. */
.vereador-profile__sidebar-anchor {
    min-width: 0;
    align-self: stretch;
}
@media (min-width: 768px) {
    .vereador-profile__sidebar {
        position: sticky;
        top: 1.25rem;
        z-index: 2;
    }
}
.vereador-profile__identity {
    padding: 1.75rem 1.25rem 1.5rem;
    border: 1px solid var(--color-line);
    border-radius: var(--radius);
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .06);
    text-align: center;
}
.vereador-profile__avatar {
    width: 168px;
    height: 168px;
    margin: 0 auto 1.15rem;
    overflow: hidden;
    border: 4px solid #fff;
    border-radius: 50%;
    box-shadow: 0 0 0 1px var(--color-line), 0 4px 14px rgba(0, 0, 0, .1);
}
.vereador-profile__avatar-img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
}
.vereador-profile__name {
    margin: 0 0 .35rem;
    color: var(--color-ink);
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.3;
}
.vereador-profile__meta-line {
    margin: 0 0 .25rem;
    color: var(--color-muted);
    font-size: .9rem;
    line-height: 1.45;
}
.vereador-profile__meta-line--partido {
    margin-bottom: 0;
    font-size: .85rem;
}
.vereador-profile__tag {
    display: inline-block;
    margin: .75rem 0 0;
    padding: .25rem .65rem;
    border-radius: 4px;
    color: var(--color-muted);
    background: var(--color-surface);
    font-size: .8rem;
    font-style: italic;
}
.vereador-profile__identity-extra {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--color-line);
    text-align: left;
}
.vereador-profile__identity-block + .vereador-profile__identity-block {
    margin-top: 1.15rem;
}
.vereador-profile__identity-label {
    margin: 0 0 .65rem;
    color: var(--color-brand);
    font-size: .95rem;
    font-weight: 700;
    letter-spacing: .01em;
}
.vereador-profile__contacts {
    padding: 0;
    margin: 0;
    list-style: none;
}
.vereador-profile__contacts li {
    display: flex;
    align-items: flex-start;
    gap: .55rem;
    margin-bottom: .55rem;
    color: #444;
    font-size: .9rem;
    line-height: 1.45;
    word-break: break-word;
}
.vereador-profile__contacts li:last-child {
    margin-bottom: 0;
}
.vereador-profile__contacts i {
    flex: 0 0 1rem;
    margin-top: .2rem;
    color: var(--color-brand);
    font-size: .85rem;
    text-align: center;
}
.vereador-profile__contacts a {
    color: #444;
    text-decoration: none;
}
.vereador-profile__contacts a:hover {
    color: var(--color-brand);
    text-decoration: underline;
}
.vereador-profile__redes {
    justify-content: flex-start;
}
.vereador-profile__main {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    min-width: 0;
}
.vereador-profile__panel {
    padding: 1.5rem 1.35rem;
    border: 1px solid var(--color-line);
    border-radius: var(--radius);
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .06);
}
@media (min-width: 768px) {
    .vereador-profile__panel {
        padding: 1.75rem 2rem;
    }
}
@media (min-width: 1200px) {
    .vereador-profile__panel {
        padding: 2rem 2.25rem;
    }
}
.vereador-profile__panel-title {
    margin: 0 0 1rem;
    padding-bottom: .65rem;
    border-bottom: 2px solid var(--color-surface);
    color: var(--color-brand);
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.3;
}
.vereador-profile__content {
    color: #333;
    font-size: 1rem;
    line-height: 1.75;
    text-wrap: pretty;
}
@media (min-width: 768px) {
    .vereador-profile__content {
        font-size: 1.0625rem;
        line-height: 1.8;
    }
}
.vereador-profile__content > p {
    margin: 0 0 1.25rem;
}
.vereador-profile__content > p:last-child {
    margin-bottom: 0;
}
.vereador-profile__content > p + p {
    margin-top: 0;
}
.vereador-profile__content > p:has(strong:first-child) {
    margin-bottom: .5rem;
    padding: .4rem 0;
    color: var(--color-ink);
    font-size: .98rem;
    line-height: 1.5;
}
.vereador-profile__content > p:has(strong:first-child):first-of-type,
.vereador-profile__content > p:not(:has(strong:first-child)) + p:has(strong:first-child) {
    margin-top: 1.35rem;
    padding-top: 1.15rem;
    border-top: 1px solid var(--color-line);
}
.vereador-profile__content strong {
    color: var(--color-brand-dark);
    font-weight: 700;
}
.vereador-profile__content ul,
.vereador-profile__content ol {
    margin: 0 0 1.15rem;
    padding-left: 1.35rem;
}
.vereador-profile__content li + li {
    margin-top: .35rem;
}
.vereador-profile__news-list {
    padding: 0;
    margin: 0;
    list-style: none;
}
.vereador-profile__news-list li {
    padding: .85rem 0;
    border-bottom: 1px solid var(--color-line);
}
.vereador-profile__news-list li:first-child {
    padding-top: 0;
}
.vereador-profile__news-list li:last-child {
    padding-bottom: 0;
    border-bottom: 0;
}
.vereador-profile__news-list a {
    color: var(--color-brand-dark);
    font-weight: 600;
    line-height: 1.4;
    text-decoration: none;
}
.vereador-profile__news-list a:hover {
    color: var(--color-brand);
    text-decoration: underline;
}
.vereador-profile__news-list time {
    display: block;
    margin-top: .2rem;
    color: var(--color-muted);
    font-size: .85rem;
}
.vereador-profile__back {
    margin: 1.75rem 0 0;
}
.vereador-profile__back a {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    color: var(--color-brand);
    font-weight: 600;
    text-decoration: none;
}
.vereador-profile__back a:hover {
    text-decoration: underline;
}
article.single-post .entry-thumbnail {
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
}

.single-post-carousel {
    max-width: 100%;
    overflow: hidden;
}

article.single-post .entry-thumbnail .carousel-container {
    position: relative;
    width: 100%;
    max-width: 100%;
    margin: 0 0 32px;
    border-radius: 16px;
    box-shadow: 0 4px 15px rgba(0, 0, 0, .08);
    overflow: hidden;
    background: #f5f5f5;
}

.single-post-carousel .carousel-viewport {
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    border-radius: 16px;
}

.single-post-carousel .carousel-slide {
    flex: 0 0 100%;
    min-width: 0;
    max-width: 100%;
}

.single-post-carousel .gallery-image {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    margin: 0;
    border-radius: 16px;
    object-fit: contain;
    vertical-align: middle;
}

article.single-post .entry-content {
    min-width: 0;
    max-width: 100%;
    margin: 0;
    overflow-wrap: anywhere;
    color: #444;
    font-size: 1.05em;
    line-height: 1.8;
}
.carousel-item { display: flex; align-items: center; justify-content: center; background: transparent; }
.gallery-image { display: block; width: 100%; height: auto; margin: 0 auto; border-radius: 20px; object-fit: contain; }
.carousel-nav { width: 45px; min-height: 45px; border-radius: 50%; color: #333; background: rgba(255,255,255,.9); font-size: 1.2rem; }
.carousel-nav.prev { left: 20px; }
.carousel-nav.next { right: 20px; }
.image-counter { position: absolute; right: 15px; bottom: 15px; margin: 0; padding: 5px 12px; border-radius: 15px; background: rgba(255,255,255,.8); color: #333; font-size: .85em; }
.single-post-carousel .image-counter {
    padding: 6px 12px;
    background: rgba(0, 0, 0, .55);
    color: #fff;
    font-weight: 600;
}
/* O acervo migrado vem de texto colado do Word: centenas de espaços rígidos
   por notícia formam sequências de até 300 caracteres que não quebram linha e
   vazam do bloco. overflow-wrap: anywhere é a rede de proteção enquanto o
   conteúdo não for limpo — ver MIGRATION.md. */
article.single-post .entry-content p { margin-bottom: 20px; text-align: justify; }
article.single-post .entry-content h2,
article.single-post .entry-content h3 { margin: 1.75rem 0 .75rem; color: #333; line-height: 1.3; }
.post-navigation { margin: 40px 0 0; }
.back-to-news { display: inline-flex; padding: 12px 25px; align-items: center; gap: 10px; border-radius: 25px; color: #fff; background: var(--color-brand); text-decoration: none; transition: background .3s ease, transform .3s ease, box-shadow .3s ease; }
.back-to-news:hover { color: #fff; background: var(--color-brand-dark); text-decoration: none; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(165,28,48,.3); }

/* Notícias — medidas da página no ar. */
.search-container { margin: 30px 0; }
.search-form { max-width: 800px; margin: 0 auto; }
.search-wrapper { position: relative; display: flex; padding: 5px; align-items: center; border: 1px solid #e0e0e0; border-radius: 8px; background: #fff; box-shadow: 0 2px 6px rgba(0,0,0,.05); }
.search-icon { margin-left: 15px; color: #666; font-size: 1.1em; }
.search-input { flex: 1; padding: 12px 15px; border: 0; background: none; color: #333; font-size: 1em; font-family: inherit; outline: none; }
.search-buttons { display: flex; margin-right: 5px; align-items: center; gap: 10px; }
button.search-button { padding: 10px 25px; border: 0; border-radius: 6px; color: #fff; background: var(--color-brand); font-size: 1rem; font-weight: 500; cursor: pointer; transition: background .3s ease; }
button.search-button:hover { background: var(--color-brand-dark); }
.search-resumo { margin: 0 0 10px; color: var(--color-muted); }
.search-resumo a { margin-left: .5rem; }

.news-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 25px; padding: 20px 0; }
.news-card { display: flex; flex-direction: column; border-radius: 10px; background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,.1); overflow: hidden; transition: transform .3s ease, box-shadow .3s ease; }
.news-card:hover { transform: translateY(-5px); box-shadow: 0 5px 15px rgba(0,0,0,.2); }
.news-image { position: relative; width: 100%; height: 200px; overflow: hidden; }
.news-image img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.news-card:hover .news-image img { transform: scale(1.05); }
.no-image { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .4rem; background: #f8f9fa; color: #adb5bd; }
.no-image i { font-size: 2rem; }
.news-content { display: flex; flex: 1; flex-direction: column; padding: 20px; }
.news-date { display: flex; margin: 0 0 12px; align-items: center; gap: 5px; color: #666; font-size: .9em; }
.news-title { margin: 0 0 10px; font-size: 1.2em; line-height: 1.4; }
.news-title a { color: #333; text-decoration: none; transition: color .3s ease; }
.news-title a:hover { color: var(--color-brand); }
/* O resumo empurra o botão para baixo, que fica alinhado entre cartões da
   mesma linha. overflow-wrap é rede de proteção: o acervo tem texto colado com
   espaço rígido, que sem isso vira uma "palavra" larga demais para o cartão. */
.news-excerpt { margin: 0 0 15px; overflow-wrap: anywhere; color: #666; font-size: .9em; line-height: 1.6; }
.news-content .saiba-mais { align-self: flex-start; margin-top: auto; }

.pagination { display: flex; margin-top: 30px; flex-wrap: wrap; justify-content: center; gap: 10px; }
.page-link { padding: 8px 15px; border: 1px solid #ddd; border-radius: 5px; color: #333; text-decoration: none; transition: background .3s ease, color .3s ease, border-color .3s ease; }
.page-link:hover { border-color: var(--color-brand); color: var(--color-brand); }
.page-link.active { border-color: var(--color-brand); color: #fff; background: var(--color-brand); }
.page-link.dots { padding: 8px 5px; border: 0; }

/* Vereadores — medidas da página no ar. As abas usam o mesmo mecanismo de
   Cursos: input de rádio, sem Bootstrap e sem script. */
.vereadores-abas { padding-top: 20px; }
.vereadores-aba { display: inline-block; padding: 15px 30px; border-bottom: 3px solid transparent; color: #666; font-size: 1.1em; font-weight: 500; cursor: pointer; transition: color .3s ease, border-color .3s ease; }
.vereadores-abas .tabset__radio:checked + .vereadores-aba { border-bottom-color: var(--color-brand); color: var(--color-brand); }
.vereadores-abas .tabset__radio:focus-visible + .vereadores-aba { outline: 3px solid var(--color-brand); outline-offset: 2px; }
.vereadores-abas .tab-panels { border-top: 2px solid var(--color-brand); margin-top: -3px; padding-top: 30px; }
.vereadores-abas .tab-panel { display: none; }
.vereadores-abas .tabset__radio:first-of-type:checked ~ .tab-panels > .tab-panel:first-child,
.vereadores-abas .tabset__radio:nth-of-type(2):checked ~ .tab-panels > .tab-panel:nth-child(2) { display: block; }

.team-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 30px; margin-bottom: 30px; }
.team-grid:last-child { margin-bottom: 0; }
.team-member { position: relative; border-radius: 15px; background: #fff; box-shadow: 0 2px 15px rgba(0,0,0,.1); overflow: hidden; transition: transform .3s ease, box-shadow .3s ease; }
.team-member:hover { transform: translateY(-5px); box-shadow: 0 5px 20px rgba(0,0,0,.15); }
.team-member .thumb { position: relative; border-radius: 15px 15px 0 0; overflow: hidden; }
.team-member .thumb img { display: block; width: 100%; height: 300px; object-fit: cover; transition: transform .3s ease; }
.team-member:hover .thumb img { transform: scale(1.05); }
.team-member .text { position: relative; padding: 25px 20px 20px; background: #fff; text-align: center; }
/* O selo do cargo cavalga a borda entre a foto e o texto, como no original. */
.team-member .cargo { position: absolute; top: -15px; left: 50%; z-index: 1; padding: 8px 20px; border-radius: 25px; color: #fff; background: #DA4947; font-size: .9em; white-space: nowrap; box-shadow: 0 3px 10px rgba(218,73,71,.2); transform: translateX(-50%); }
.team-member h2 { margin: 0 0 8px; font-size: 1.25em; }
.team-member h2 a { color: var(--color-ink); text-decoration: none; }
.team-member h2 a:hover { color: var(--color-brand); }
.team-member p { margin: 0; color: #666; }
.global-list { display: flex; margin: 15px 0 0; padding: 0; justify-content: center; gap: 15px; list-style: none; }
.global-list a { display: grid; width: 32px; height: 32px; place-items: center; border-radius: 50%; color: var(--color-brand); background: var(--color-surface); }
.global-list a:hover { color: #fff; background: var(--color-brand); }

/* Presidentes — medidas da página no ar. */
.presidentes-lista { max-width: 800px; padding: 20px 0; margin: 0 auto; list-style: none; }
.presidente-item { display: flex; padding: 15px 20px; margin-bottom: 10px; align-items: center; flex-wrap: wrap; gap: 10px; border-radius: 10px; background: #fff; box-shadow: 0 2px 10px rgba(0,0,0,.1); transition: transform .3s ease, box-shadow .3s ease; }
.presidente-item:hover { transform: translateY(-2px); box-shadow: 0 4px 15px rgba(0,0,0,.15); }
.presidente-item .periodo { min-width: 120px; color: var(--color-brand); font-size: 1.1em; font-weight: 700; }
.presidente-item .nome { flex: 1; color: #333; font-size: 1.1em; font-weight: 500; }
.presidente-item .observacao { padding: 5px 10px; border-left: 3px solid var(--color-brand); border-radius: 15px; background: #f8f9fa; color: #666; font-size: .9em; font-style: italic; }

/* Legislaturas — medidas da página no ar. */
.legislaturas-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px; padding: 20px 0; }
.legislatura-card { padding: 30px; border-radius: 15px; background: #fff; box-shadow: 0 2px 15px rgba(0,0,0,.1); transition: transform .3s ease; }
.legislatura-card:hover { transform: translateY(-5px); }
.legislatura-card h2 { margin: 0 0 20px; padding-bottom: 10px; border-bottom: 2px solid var(--color-brand); color: #333; font-size: 1.3em; text-align: center; }
.vereadores-list ul { padding: 0; margin: 0; list-style: none; }
.vereadores-list li { position: relative; padding: 8px 0 8px 20px; border-bottom: 1px solid #eee; color: #666; }
.vereadores-list li::before { position: absolute; left: 0; color: var(--color-brand); content: "\2192"; }
.vereadores-list li:last-child { border-bottom: 0; }

/* Páginas de texto corrido — medidas da Política de Cookies no ar. */
.text-content { padding: 40px; border-radius: 15px; background: #fff; box-shadow: 0 2px 15px rgba(0,0,0,.1); }
.content-block { margin-bottom: 30px; }
/* Texto sem blocos, como na História do Legislativo. */
.text-content--solo > p { margin: 0 0 20px; color: #666; font-size: 1.1em; line-height: 1.8; }
.text-content--solo > p:last-child { margin-bottom: 0; }
.historia-link { color: var(--color-brand); font-weight: 600; text-decoration: none; }
.historia-link:hover { text-decoration: underline; }
.content-block:last-child { margin-bottom: 0; }
.content-block h2 { margin: 0 0 20px; color: var(--color-brand); font-size: 1.8em; font-weight: 600; }
.content-block h3 { margin: 25px 0 15px; color: #333; font-size: 1.3em; font-weight: 600; }
.content-block p { margin: 0 0 15px; color: #666; line-height: 1.6; }
.content-block ul { padding: 0; margin: 15px 0; list-style: none; }
.content-block li { position: relative; padding: 8px 0 8px 25px; color: #666; }
.content-block li::before { position: absolute; left: 5px; color: var(--color-brand); content: "\2022"; font-size: 1.2em; }

/* Lei de Acesso à Informação — medidas da página no ar. O cabeçalho é o mesmo
   fundo das demais páginas temáticas, mas sem o traço sob o título. */
.lai-hero { padding: 40px 0; margin-bottom: 40px; border-radius: 0 0 50px 50px; color: #fff; background-image: linear-gradient(rgba(116,116,116,.9), rgba(31,30,30,.9)), url("assets/images/home/banner-plenario-3.jpg"); background-position: center; background-size: cover; text-align: center; }
.lai-hero h1 { margin: 0 0 15px; font-size: 2.5em; font-weight: 600; }
.lai-hero .subtitle { display: block; font-size: 1.2em; opacity: .9; }

.lai-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 30px; margin: 40px 0; }
.lai-card { display: flex; min-height: 300px; padding: 30px; flex-direction: column; align-items: center; justify-content: center; border-radius: 10px; background: #fff; box-shadow: 0 2px 15px rgba(0,0,0,.1); text-align: center; transition: transform .3s ease; }
.lai-card:hover { transform: translateY(-5px); }
.lai-card__icon { display: flex; width: 80px; height: 80px; margin: 0 auto 20px; align-items: center; justify-content: center; border-radius: 50%; background: var(--color-brand); }
.lai-card__icon i { color: #fff; font-size: 32px; }
.lai-card h2 { margin: 0 0 15px; padding: 0 20px; color: #333; font-size: 1.5em; line-height: 1.4; }
.lai-card p { margin: 0 0 20px; padding: 0 20px; color: #666; font-size: 1em; line-height: 1.6; }
.lai-card__link { display: inline-flex; margin-top: auto; padding: 12px 25px; align-items: center; gap: 10px; border: 0; border-radius: 5px; color: #fff; background: var(--color-brand); font-size: 1rem; font-family: inherit; font-weight: 500; text-decoration: none; cursor: pointer; transition: background .3s ease; }
.lai-card__link:hover { color: #fff; background: var(--color-brand-dark); text-decoration: none; }

/* As janelas eram <div> com display alternado por script. O <dialog> nativo
   já trata Esc, foco e fundo, então o cabeçalho vermelho é o que resta do
   desenho anterior. */
.lai-dialog { width: min(90%, 800px); max-height: 85vh; padding: 0; border: 0; border-radius: 15px; color: var(--color-ink); box-shadow: 0 5px 15px rgba(0,0,0,.3); overflow: hidden; }
.lai-dialog::backdrop { background: rgba(0,0,0,.5); }
.lai-dialog__header { display: flex; padding: 20px 30px; align-items: center; justify-content: space-between; gap: 1rem; color: #fff; background: var(--color-brand); }
.lai-dialog__header h2 { margin: 0; font-size: 24px; font-weight: 500; }
.lai-dialog__header button { border: 0; padding: 0; color: #fff; background: none; font-size: 28px; font-weight: 700; line-height: 1; cursor: pointer; }
.lai-dialog__header button:hover { opacity: .8; }
.lai-dialog__body { max-height: calc(85vh - 76px); padding: 30px; overflow-y: auto; scrollbar-width: thin; scrollbar-color: var(--color-brand) #f0f0f0; }
.lai-dialog__body p { line-height: 1.6; text-align: justify; }
.lai-download { margin-top: 20px; }
.lai-download__button { display: inline-flex; margin-top: 20px; padding: 12px 25px; align-items: center; gap: 10px; border-radius: 5px; color: #fff; background: var(--color-brand); text-decoration: none; transition: background .3s ease; }
.lai-download__button:hover { color: #fff; background: var(--color-brand-dark); text-decoration: none; }

.lai-lei-header { margin-bottom: 30px; padding-bottom: 20px; border-bottom: 2px solid #eee; }
.lai-lei-header h3 { margin: 0 0 15px; color: #333; font-size: 1.4em; }
.lai-lei-header a { display: inline-flex; align-items: center; gap: 8px; color: var(--color-brand); text-decoration: none; }
.lai-capitulo { margin-bottom: 25px; padding: 20px; border-radius: 8px; background: #f8f9fa; }
.lai-capitulo h4 { margin: 0 0 15px; color: var(--color-brand); font-size: 1.2em; }
.lai-capitulo p { margin: 0 0 12px; color: #666; font-size: .95rem; }
.lai-capitulo p:last-child { margin-bottom: 0; }
.lai-transparencia { margin-top: 30px; padding: 20px; border-radius: 8px; background: #f8f9fa; }
.lai-transparencia h3 { margin: 0 0 15px; color: var(--color-brand); font-size: 1.2em; }

.form-solicitacao .form-group { margin-bottom: 20px; }
.form-solicitacao label { display: block; margin-bottom: 5px; color: #333; font-weight: 500; }
.form-solicitacao input, .form-solicitacao select, .form-solicitacao textarea { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font-size: 16px; font-family: inherit; box-sizing: border-box; }
.form-solicitacao textarea { min-height: 100px; resize: vertical; }
.form-solicitacao .form-actions { margin-top: 30px; text-align: center; }
button.submit-button { padding: 12px 30px; border: 0; border-radius: 5px; color: #fff; background: var(--color-brand); font-size: 16px; cursor: pointer; transition: background .3s ease; }
button.submit-button:hover { background: var(--color-brand-dark); }

/* Inscrição da Escola — medidas do formulário anterior. */
.geral { display: flex; padding: 20px 0; align-items: flex-start; justify-content: space-between; gap: 30px; }
.geral > .texto, .geral > .formulario { width: 48%; }
.texto h2 { margin: 0 0 10px; font-size: 24px; font-weight: 700; text-align: center; }
.texto p { margin: 5px 0; color: #333; font-size: 1em; line-height: 1.5; text-align: justify; }
.texto > span { display: block; margin-top: 20px; font-weight: 700; }
.evento-destaques { margin: 16px 0 0; padding: 0; list-style: none; }
.evento-destaques li { display: flex; margin-bottom: 6px; align-items: center; gap: 8px; font-weight: 700; }
.evento-destaques i { color: #1e8b17; }

.contact-form { width: 100%; padding: 28px 24px; border: 1px solid rgba(9,75,162,.08); border-radius: 16px; background: #fff; box-shadow: 0 4px 24px rgba(9,75,162,.08); }
.contact-form h2 { position: relative; margin: 0 0 24px; padding-bottom: 14px; color: var(--school-blue, #094BA2); font-size: 24px; font-weight: 700; text-align: center; }
.contact-form h2::after { content: ''; position: absolute; bottom: 0; left: 50%; width: 48px; height: 3px; border-radius: 2px; background: linear-gradient(90deg, var(--school-blue, #094BA2), #007bff); transform: translateX(-50%); }
.contact-form .form-row { display: flex; margin-bottom: 15px; justify-content: space-between; gap: 10px; }
.contact-form .form-group { flex: 1; }
.contact-form .form-group[hidden] { display: none; }
.contact-form label { display: block; margin-bottom: 6px; color: #475569; font-size: .8125rem; font-weight: 600; letter-spacing: .01em; }
.form-control { width: 100%; padding: 12px 14px; border: 1.5px solid #e2e8f0; border-radius: 10px; background: #f8fafc; color: #1e293b; font-size: .9375rem; font-family: inherit; box-sizing: border-box; appearance: none; transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease; }
.form-control::placeholder { color: #94a3b8; opacity: 1; }
.form-control:hover { border-color: #cbd5e1; background-color: #fff; }
.form-control:focus { outline: none; border-color: var(--school-blue, #094BA2); background-color: #fff; box-shadow: 0 0 0 3px rgba(9,75,162,.12); }
select.form-control { padding-right: 36px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23475569' d='M6 8L1 3h10z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; cursor: pointer; }
input[type="date"].form-control { cursor: pointer; }
.contact-form .form-check { display: flex; margin: 20px 0; align-items: flex-start; gap: 10px; }
.contact-form .form-check-input { width: 18px; min-width: 18px; height: 18px; margin: 2px 0 0; flex-shrink: 0; accent-color: var(--school-blue, #094BA2); cursor: pointer; }
.contact-form .form-check-label { margin: 0; color: #475569; font-size: 13px; font-weight: 400; line-height: 1.5; text-transform: none; cursor: pointer; }
.inscreva-se { display: flex; padding-top: 24px; align-items: center; justify-content: flex-end; }
/* Qualificado com button porque o tema já estiliza button[type="submit"] com o
   vermelho do portal, e ali a Escola é azul. */
button.btn-inscreva-se { display: inline-flex; width: auto; padding: 14px 28px; align-items: center; justify-content: center; gap: 8px; border: 0; border-radius: 12px; color: #fff; background: linear-gradient(135deg, var(--school-blue, #094BA2) 0%, #007bff 100%); font-size: 15px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; cursor: pointer; box-shadow: 0 4px 14px rgba(9,75,162,.3); transition: transform .2s ease, box-shadow .2s ease; }
button.btn-inscreva-se:hover { background: linear-gradient(135deg, #073a82 0%, #0056b3 100%); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(9,75,162,.4); }
button.btn-inscreva-se:active { transform: translateY(0); box-shadow: 0 2px 8px rgba(9,75,162,.3); }

/* Os blocos de 1550/1365/991 ficam no meio da folha, antes das seções de
   componente — regra de mesma especificidade declarada depois vence. Por isso
   o ponto de quebra dos cartões de vereador mora aqui, e não lá em cima. */
@media (max-width: 991px) {
    .team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* As três colunas do rodapé somam 770px de piso mais 48px de vão e 32px de
   respiro do container: abaixo de 850px elas empurravam a página para 834px de
   largura em qualquer template. */
@media (max-width: 849px) {
    .official-footer-grid { grid-template-columns: 1fr; }
    .official-footer-brand { text-align: center; }
    .official-footer-brand img { margin-top: 0; }
}
/* Em tela estreita o original empilha data e links e deixa a barra crescer.
   Mantendo a altura fixa, as pontas dos links sumiam sob as tarjas. */
@media (max-width: 991px) {
    .utility-bar { height: auto; }
    .utility-bar .container { width: min(calc(100% - 5rem), 1700px); flex-direction: column; justify-content: center; gap: .35rem; padding-block: .7rem; }
    .utility-date { position: static; transform: none; }
    .utility-links { flex-wrap: wrap; justify-content: center; }
}

@media (max-width: 768px) {
    .float-action { padding: 10px 20px; }
    .float-action--ouvidoria { left: 15px; }
    .float-action--agenda { right: 15px; }
    .float-action.is-compact { padding: 0; }
    .float-action.is-compact .float-action__icon { width: 40px; height: 40px; font-size: 22px; }
    .float-action__text strong { font-size: 12px; }
    .float-action__text small { font-size: 10px; }
    .ouvidoria-dialog { max-height: calc(100vh - 40px); width: 95%; }
    .ouvidoria-dialog__header { padding: 15px 20px; }
    .ouvidoria-dialog__body { padding: 20px; }
    .ouvidoria-options { grid-template-columns: 1fr; }
    .ouvidoria-option { padding: 15px; }
    .ouvidoria-option__icon { width: 40px; height: 40px; }
    .ouvidoria-option__text strong { font-size: 14px; }
    .ouvidoria-option__text small { font-size: 12px; }
}

@media (max-width: 767px) {
    .legislative-hero { padding: 40px 0; border-radius: 0 0 30px 30px; }
    .legislative-hero h1 { font-size: 2em; }
    .legislative-hero .subtitle { font-size: 1em; }
    .info-cards, .participation-cards { grid-template-columns: 1fr; gap: 20px; }
    .school-info__grid, .school-programs__grid { grid-template-columns: 1fr; }
    .courses-grid, .faq-grid { grid-template-columns: 1fr; gap: 20px; }
    .tabset { padding: 12px; }
    .tabset__label { padding: 10px 15px; font-size: .9em; }
    .tabset .tab-panel { padding: 20px 0 0; }
    .course-details { flex-direction: column; gap: 10px; }
    .faq-item { padding: 20px; }
    .responsive-table { margin: 10px -12px; }
    .ato-info .btnmaterial { padding: 10px 15px; }
    .organica-abas .tab-button { display: block; width: 100%; padding: 15px; text-align: center; }
    .organica-abas .tab-content { padding: 15px; }
    .youtube-call { grid-template-columns: 1fr; text-align: center; justify-items: center; }
    .expediente-sessao > summary { padding: 15px 20px; font-size: 15px; }
    .expediente-documentos { padding: 15px; }
    .expediente-documentos .btnedital, .expediente-documentos .btnmaterial { width: 100%; min-width: 0; margin: 5px 0; font-size: 13px; }


    .plano-doc-card { align-items: flex-start; flex-direction: column; }
    .plano-doc-view-btn { width: 100%; justify-content: center; }
    .plano-fieldset { padding: 16px; }
    .plano-check-outro { flex-wrap: wrap; }
    .plano-wizard-dots { grid-template-columns: 1fr; }
    .plano-wizard-nav--final { flex-direction: column-reverse; align-items: stretch; }
    .audiencias-abas { padding: 12px 12px 0; }
    .audiencias-abas > .tabset__label { padding: 12px 16px; font-size: 15px; }
    .audiencias-abas .tab-panel { padding: 20px 0; }
    .comissao-header { flex-direction: column; align-items: flex-start; }
    .audiencia-dialog { width: 95%; max-height: calc(100vh - 40px); }
    .audiencia-dialog__header { padding: 15px 20px; }
    .audiencia-dialog__header h2 { font-size: 1.15em; }
    .audiencia-dialog__body, .audiencia-abas .tab-panel { padding: 20px; }
    .audiencia-abas > .tabset__label { margin-right: 0; padding: 15px 20px; font-size: 1em; }
    .document-item { align-items: flex-start; flex-direction: column; padding: 15px; }
    .document-item a { width: 100%; justify-content: center; }
    .atos-abas, .expediente-abas, .concurso-abas { padding: 12px 12px 0; }
    .atos-abas .tabset__label, .expediente-abas .tabset__label, .concurso-abas .tabset__label { width: 100%; margin-right: 0; margin-bottom: 5px; border-radius: 10px; }
    .atos-abas .tabset__radio:checked + .tabset__label, .expediente-abas .tabset__radio:checked + .tabset__label, .concurso-abas .tabset__radio:checked + .tabset__label { margin-bottom: 5px; }
    .atos-abas .tab-panel, .expediente-abas .tab-panel, .concurso-abas .tab-panel { padding: 20px; border-radius: 15px; }
    .single-post-header { flex-direction: column; align-items: flex-start; }
    article.single-post .post-meta { width: 100%; }
    article.single-post .post-date { white-space: normal; }
    .news-grid { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 20px; }
    .news-image { height: 180px; }
    .search-wrapper { flex-direction: column; padding: 10px; gap: 10px; }
    .search-icon { display: none; }
    .search-input { width: 100%; padding: 10px 15px; }
    .search-buttons { width: 100%; margin: 0; flex-direction: column; }
    button.search-button { width: 100%; margin: 0; }
    .vereadores-aba { padding: 10px 15px; font-size: 1em; }
    .team-member .thumb img { height: 250px; }
    .team-member .text { padding: 20px 15px 15px; }
    .team-member .cargo { padding: 6px 15px; font-size: .8em; }
    .presidentes-lista { padding: 10px 0; }
    .presidente-item { flex-direction: column; align-items: flex-start; gap: 5px; }
    .presidente-item .periodo { min-width: auto; font-size: 1em; }
    .presidente-item .nome { font-size: 1em; }
    .presidente-item .observacao { width: 100%; font-size: .8em; }
    .legislaturas-grid { grid-template-columns: 1fr; gap: 20px; padding: 10px 0; }
    .legislatura-card { padding: 20px; }
    .text-content { padding: 20px; }
    .content-block h2 { font-size: 1.5em; }
    .content-block h3 { font-size: 1.15em; }
    .lai-hero { padding: 30px 0; border-radius: 0 0 30px 30px; }
    .lai-hero h1 { font-size: 2em; }
    .lai-hero .subtitle { font-size: 1em; }
    .lai-cards { grid-template-columns: 1fr; }
    .lai-card { min-height: auto; }
    .lai-dialog__body { padding: 20px; }
    .geral { flex-direction: column; gap: 24px; }
    .geral > .texto, .geral > .formulario { width: 100%; }
    .contact-form { padding: 20px 16px; }
    .contact-form .form-row { flex-direction: column; gap: 0; margin-bottom: 0; }
    .contact-form .form-group { margin-bottom: 12px; }
    .inscreva-se { justify-content: center; }
    button.btn-inscreva-se { width: 100%; }
    .galeria-grid, .photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .publications-grid { grid-template-columns: 1fr; gap: 20px; }
    .history-section { padding: 24px; }
    .school-contact, .school-contact-layout { grid-template-columns: 1fr; }
    .school-info__card { padding: 20px; }
    .info-card, .participation-card { padding: 20px; }
    .grid--3, .quick-links { grid-template-columns: repeat(2, 1fr); }
    .official-footer-grid { grid-template-columns: 1fr; gap: 20px; }
    .official-footer-brand { text-align: center; }
    .official-footer-brand img { max-width: 100%; height: 60px; margin-top: 0; }
    .official-footer-column { gap: 15px; }
    .official-footer-card { flex-direction: column; }
    .official-footer-card > h2 { align-self: flex-start; writing-mode: horizontal-tb; transform: none; }
    .official-footer-card > h2 span { transform: none; }
    .official-footer-card > div { align-self: stretch; border-left: 1px solid #fff; border-top: 4px solid var(--footer-card-color); border-radius: 0 8px 8px 8px; }
    .official-social-icons { justify-content: center; }
    .official-footer-bottom { flex-direction: column; gap: 15px; }
    .official-footer-bottom a { justify-content: center; padding: 10px 20px; font-size: 13px; }
    .home-quick-news-grid { grid-template-columns: 1fr; }
    .home-quick-access-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .councilor-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .councilor-grid--board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .access-grid { grid-template-columns: minmax(0, 1fr); }
    .committee-grid { grid-template-columns: 1fr; }
    .committee li { grid-template-columns: 1fr; gap: 0; }
}
@media (max-width: 575px) {
    .grid--2, .grid--3, .quick-links, .form-grid { grid-template-columns: 1fr; }
    .utility-bar .container { justify-content: center; }
    .utility-links { gap: .7rem; }
    .site-description { display: none; }
    .branding-row { min-height: 78px; }
    .site-branding img, .custom-logo { max-height: 54px; }
    .home-banner-carousel { width: calc(100% - 1rem); margin-block: .75rem 1.75rem; border-radius: .4rem; }
    .home-banner-carousel .carousel-slide > a > img { height: 200px; }
    .home-banner-carousel .home-banner-slide--art > a > img { height: 200px; }
    .home-banner-news, .home-banner-news__photo { height: 230px !important; }
    .home-banner-news__photo { width: 100% !important; opacity: .55; }
    .home-banner-news::after { background: rgba(0,0,0,.58); }
    .home-banner-news__content { grid-template-columns: 72px 1fr; gap: .75rem; padding: 1.25rem 2.8rem; }
    .home-banner-news__icon { width: 72px; height: 82px; }
    .home-banner-news__icon svg { width: 46px; height: 46px; }
    .home-banner-news__icon small { font-size: .65rem; }
    .home-banner-news__title strong { font-size: 1.45rem; }
    .home-banner-news__title b { font-size: 1.55rem; }
    .home-banner-news__title small { font-size: .64rem; white-space: normal; }
    .home-banner-content { padding: 2.5rem 3.5rem; }
    .home-banner-content strong { font-size: 1.5rem; }
    .home-banner-content > span { display: none; }
    .carousel-arrow { width: 40px; min-height: 40px; }
    .home-banner-carousel .carousel-arrow { width: 42px; min-height: 42px; font-size: 1.7rem; }
    .carousel-arrow--previous { left: .45rem; }
    .carousel-arrow--next { right: .45rem; }
    .home-featured-slide > a { height: 430px; }
    .home-featured-overlay { padding-inline: 1.2rem; }
    .home-services-list, .home-quick-access-grid, .home-latest-videos { grid-template-columns: 1fr; }
    .home-councilors { grid-auto-columns: 78%; }
    .councilor-grid { grid-template-columns: 1fr; }
    .team-grid { grid-template-columns: 1fr; }
    .home-quick-access { min-height: 155px; padding: 1.35rem 1rem; }
    .home-video-card { grid-template-columns: minmax(125px, .7fr) 1fr; }
    .home-section-heading { align-items: start; }
    .home-section-heading h2 { font-size: 1.55rem; }
}
@media (prefers-reduced-motion: reduce) {
    .float-action__icon { animation: none; }
    .float-action:hover, .float-action.is-compact:hover, .ouvidoria-option:hover { transform: none; }
    *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
