/* ============================================================
   MK Haus - Sistema de componentes
   Cada componente define seus próprios estados (:hover, :focus-visible,
   :active, :disabled) uma única vez aqui — as telas apenas aplicam a
   classe, nunca redefinem aparência ou comportamento localmente.
   ============================================================ */

/* ------------------------------------------------------------
   Ícones SVG inline — herdam a cor do texto via currentColor;
   o tamanho é a única coisa que varia por contexto de uso.
   ------------------------------------------------------------ */
.icone {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

.icone--sm {
    width: 14px;
    height: 14px;
}

.icone--lg {
    width: 28px;
    height: 28px;
}

/* ------------------------------------------------------------
   Painel de filtros recolhível — fechado por padrão em toda
   listagem; só abre ao clicar no gatilho (botão "Filtrar").
   ------------------------------------------------------------ */
.painel-filtros__gatilho {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    gap: var(--space-3);
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    cursor: pointer;
    font-family: inherit;
    color: inherit;
    text-align: left;
}

.painel-filtros__gatilho:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
    border-radius: var(--radius-sm);
}

.painel-filtros__gatilho .cartao__titulo {
    margin: 0;
}

.painel-filtros__seta {
    color: var(--color-text-muted);
    transition: transform var(--transicao-rapida);
    flex-shrink: 0;
}

[data-toggle-filtros][aria-expanded="true"] .painel-filtros__seta {
    transform: rotate(180deg);
}

.painel-filtros__contador {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 999px;
    background: var(--color-primary);
    color: #fff;
    font-size: var(--text-legenda-size);
    font-weight: var(--font-weight-semibold);
    margin-left: var(--space-2);
}

.painel-filtros__corpo {
    margin-top: var(--space-5);
}

.painel-filtros__corpo[hidden] {
    display: none;
}

/* Barra de busca sempre visível: campo de busca + botão "Filtros" ao lado,
   que abre/fecha só os filtros avançados (período, pavimento etc.) */
.painel-busca {
    display: flex;
    align-items: flex-end;
    gap: var(--space-3);
    flex-wrap: wrap;
}

.campo--busca {
    flex: 1 1 240px;
}

.botao--filtro-toggle {
    gap: var(--space-2);
}

/* ------------------------------------------------------------
   Botão
   ------------------------------------------------------------ */
.botao {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-5);
    border-radius: var(--radius-md);
    border: 1px solid transparent;
    font-family: inherit;
    font-size: var(--text-rotulo-size);
    font-weight: var(--text-rotulo-weight);
    cursor: pointer;
    transition: background-color var(--transicao-rapida), border-color var(--transicao-rapida),
        opacity var(--transicao-rapida), transform var(--transicao-rapida), box-shadow var(--transicao-rapida);
    white-space: nowrap;
}

.botao:active {
    transform: scale(0.97);
}

.botao:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
}

.botao:disabled {
    cursor: not-allowed;
    opacity: 0.5;
    transform: none;
}

.botao--primario {
    background: var(--color-primary);
    color: #fff;
}

.botao--primario:hover:not(:disabled) {
    background: var(--color-primary-hover);
}

.botao--secundario {
    /* --color-primary-hover sobre --color-primary-light fica em ~4.4:1,
       abaixo do AA (4.5:1) — --color-text garante contraste seguro */
    background: var(--color-primary-light);
    color: var(--color-text);
}

.botao--secundario:hover:not(:disabled) {
    background: var(--color-primary);
    color: #fff;
}

.botao--fantasma {
    background: transparent;
    border-color: var(--color-border);
    color: var(--color-text);
}

.botao--fantasma:hover:not(:disabled) {
    background: var(--color-bg-muted);
    border-color: var(--color-text-muted);
}

.botao--perigo {
    background: var(--color-danger-light);
    color: var(--color-danger);
}

.botao--perigo:hover:not(:disabled) {
    background: var(--color-danger);
    color: #fff;
}

.botao--sm {
    padding: var(--space-2) var(--space-3);
    font-size: var(--text-legenda-size);
}

.botao--full {
    width: 100%;
}

.acao-inline {
    display: inline-block;
}

/* ------------------------------------------------------------
   Campos de formulário
   ------------------------------------------------------------ */
.campo {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.campo__rotulo {
    font-size: var(--text-rotulo-size);
    font-weight: var(--text-rotulo-weight);
    color: var(--color-text);
}

.campo__input {
    font-family: inherit;
    font-size: var(--text-corpo-size);
    padding: var(--space-3) var(--space-4);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg);
    color: var(--color-text);
    transition: border-color var(--transicao-rapida), box-shadow var(--transicao-rapida);
}

.campo__input:hover:not(:disabled) {
    border-color: var(--color-text-muted);
}

.campo__input:focus,
.campo__input:focus-visible {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: var(--focus-ring);
}

.campo__input:disabled {
    background: var(--color-bg-muted);
    color: var(--color-text-muted);
    cursor: not-allowed;
}

.campo__ajuda {
    font-size: var(--text-legenda-size);
    color: var(--color-text-muted);
}

.campo__textarea {
    resize: vertical;
    font-family: inherit;
}

/* ------------------------------------------------------------
   Alertas
   ------------------------------------------------------------ */
.alerta {
    padding: var(--space-4);
    border-radius: var(--radius-md);
    font-size: var(--text-corpo-size);
    margin-bottom: var(--space-5);
}

.alerta--erro {
    background: var(--color-danger-light);
    color: var(--color-danger);
}

.alerta--sucesso {
    background: var(--color-success-light);
    color: var(--color-success);
}

.alerta__lista {
    list-style: disc;
    padding-left: var(--space-5);
    margin: 0;
}

/* ------------------------------------------------------------
   Cartão — a superfície de base é discreta (borda sutil, sem
   sombra); só quem precisa concentrar atenção usa --elevado
   ------------------------------------------------------------ */
.cartao {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: var(--space-5);
    margin-bottom: var(--space-5);
    transition: box-shadow var(--transicao-rapida), transform var(--transicao-rapida);
}

.cartao--elevado {
    border: none;
    box-shadow: var(--shadow-md);
}

.cartao--elevado:hover {
    box-shadow: var(--shadow-lg);
    transform: translateY(-2px);
}

.cartao__titulo {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-semibold);
    margin: 0 0 var(--space-1);
}

.cartao__subtitulo {
    color: var(--color-text-muted);
    font-size: var(--text-subtitulo-size);
    margin: 0 0 var(--space-5);
}

.cartao__subtitulo a {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

/* ------------------------------------------------------------
   Tabela — superfície plana por definição (regra: listagens não
   levam sombra decorativa). Nunca rola para os lados: em telas
   estreitas cada linha vira um cartão empilhado (ver breakpoint
   abaixo); em telas largas o texto quebra em vez de forçar largura.
   ------------------------------------------------------------ */
.tabela-wrapper {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
}

.tabela-wrapper--demandas {
    overflow-x: hidden;
}

.tabela-wrapper--lista {
    overflow-x: hidden;
}

.barra-rolagem-fixa {
    position: fixed;
    bottom: 8px;
    z-index: 80;
    height: 16px;
    overflow-x: auto;
    overflow-y: hidden;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: var(--color-bg);
    box-shadow: var(--shadow-sm);
}

.barra-rolagem-fixa[hidden] {
    display: none;
}

.barra-rolagem-fixa__conteudo {
    height: 1px;
}

@media (min-width: 1280px) {
    .tabela--lista th:last-child,
    .tabela--lista td:last-child {
        position: sticky;
        right: 0;
        z-index: 1;
        min-width: 150px;
        background: var(--color-bg);
        box-shadow: -8px 0 12px -12px var(--color-text);
    }

    .tabela--lista thead th:last-child {
        z-index: 2;
    }

    .tabela--lista tbody tr:hover td:last-child {
        background: var(--color-bg-muted);
    }
}

.tabela {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: var(--text-corpo-size);
}

.tabela th,
.tabela td {
    padding: var(--space-4);
    text-align: left;
    border-bottom: 1px solid var(--color-border);
    overflow-wrap: break-word;
}

.tabela th {
    color: var(--color-text-muted);
    font-weight: var(--font-weight-semibold);
    font-size: var(--text-legenda-size);
}

.tabela tbody tr:last-child td {
    border-bottom: none;
}

.tabela tbody tr:hover {
    background: var(--color-bg-muted);
}

.tabela__acoes {
    display: flex;
    gap: var(--space-2);
    align-items: center;
}

.tabela__vazio {
    text-align: center;
    color: var(--color-text-muted);
}

/* Empilhado em cartão (mobile-first): cada <tr> vira um bloco com
   rótulo + valor lado a lado, sem depender de rolagem horizontal.
   Desfeito a partir do breakpoint de tablet (ver style.css). */
.tabela thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.tabela,
.tabela tbody,
.tabela tr {
    display: block;
    width: 100%;
}

.tabela tr {
    padding: var(--space-3) var(--space-4);
    border-bottom: 8px solid var(--color-bg-muted);
}

.tabela tbody tr:last-child {
    border-bottom: none;
}

.tabela td {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    padding: var(--space-2) 0;
    border-bottom: 1px solid var(--color-border);
    text-align: right;
}

.tabela tr td:last-child {
    border-bottom: none;
}

.tabela td::before {
    content: attr(data-rotulo);
    font-size: var(--text-legenda-size);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-muted);
    text-align: left;
    margin-right: auto;
}

.tabela td.tabela__acoes {
    justify-content: flex-end;
    flex-wrap: wrap;
}

.tabela td.tabela__acoes::before {
    display: none;
}

/* ------------------------------------------------------------
   Selos, etiquetas e badge de status
   ------------------------------------------------------------ */
.selo {
    display: inline-block;
    padding: 2px var(--space-3);
    border-radius: 999px;
    font-size: var(--text-legenda-size);
    font-weight: var(--font-weight-semibold);
}

.selo--ativa {
    background: var(--color-success-light);
    color: var(--color-success);
}

.selo--pausada {
    background: rgba(159, 128, 71, 0.15);
    color: var(--color-text);
}

.selo--concluida {
    background: var(--color-primary-light);
    color: var(--color-text-muted);
}

.etiqueta {
    display: inline-block;
    padding: 2px var(--space-3);
    border-radius: 999px;
    background: var(--color-bg-muted);
    border: 1px solid var(--color-border);
    font-size: var(--text-legenda-size);
}

/* Status badge (demandas) — sem paleta nova: diferencia por ícone e
   peso/estilo de borda, usando só dourado/preto/branco */
.status-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: 2px var(--space-3);
    border-radius: 999px;
    font-size: var(--text-legenda-size);
    font-weight: var(--font-weight-semibold);
    border: 1px solid var(--color-border);
    background: var(--color-bg-muted);
    color: var(--color-text-muted);
    transition: background-color var(--transicao-rapida), border-color var(--transicao-rapida), color var(--transicao-rapida);
}

.status-badge--pendente {
    border-style: dashed;
}

.status-badge--em-andamento {
    border-color: var(--color-text);
    color: var(--color-text);
}

.status-badge--aguardando {
    border-width: 2px;
    border-color: var(--color-primary);
    background: var(--color-primary-light);
    color: var(--color-text);
}

.status-badge--concluido {
    border-color: var(--color-primary);
    background: var(--color-primary);
    color: #fff;
}

/* ------------------------------------------------------------
   Estado vazio — sempre com mensagem de próxima ação, nunca uma
   tela em branco
   ------------------------------------------------------------ */
.estado-vazio {
    background: var(--color-bg);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--space-7) var(--space-5);
    text-align: center;
    color: var(--color-text-muted);
}

.estado-vazio__titulo {
    color: var(--color-text);
    font-weight: var(--font-weight-semibold);
    margin: 0 0 var(--space-2);
}

.estado-vazio__texto {
    margin: 0;
    font-size: var(--text-corpo-size);
}

.estado-vazio .botao {
    margin-top: var(--space-4);
}

/* ------------------------------------------------------------
   Modal — oculto por padrão via [hidden] nativo (funciona sem
   JS); Anime.js só acrescenta a transição de abrir/fechar
   ------------------------------------------------------------ */
.modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(27, 35, 37, 0.4);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-5);
    z-index: 100;
}

.modal-overlay[hidden] {
    display: none;
}

.modal {
    background: var(--color-bg);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    padding: var(--space-6);
    width: 100%;
    max-width: 420px;
}

.modal__titulo {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-semibold);
    margin: 0 0 var(--space-2);
}

.modal__texto {
    color: var(--color-text-muted);
    font-size: var(--text-corpo-size);
    margin: 0 0 var(--space-6);
}

.modal__acoes {
    display: flex;
    justify-content: flex-end;
    gap: var(--space-3);
}

.modal-overlay--demanda {
    align-items: flex-start;
    overflow-y: auto;
    padding: var(--space-5);
}

.modal--demanda {
    max-width: 760px;
    padding: var(--space-5);
}

.modal--obra {
    max-width: 760px;
    max-height: calc(100vh - 40px);
    overflow-y: auto;
}

.modal--usuario {
    max-width: 680px;
    max-height: calc(100vh - 40px);
    overflow-y: auto;
}

.modal--relatorio {
    max-width: 720px;
    max-height: calc(100vh - 32px);
    overflow-y: auto;
    padding: var(--space-6);
}

.relatorio-formulario {
    margin-top: var(--space-4);
}

.modal--relatorio .modal-demanda__atividade {
    padding: var(--space-3);
    border-left: 3px solid var(--color-primary);
    border-radius: var(--radius-sm);
    background: var(--color-bg-muted);
}

.relatorio-formulario > .campo {
    margin-top: var(--space-4);
}

.relatorio-formulario > .campo .campo__input {
    min-height: 128px;
    resize: vertical;
}

.relatorio-fotos {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-3);
    margin-top: var(--space-4);
}

.relatorio-foto {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    min-width: 0;
    min-height: 132px;
    padding: var(--space-4);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg-muted);
    transition: border-color var(--transicao-rapida), background-color var(--transicao-rapida);
}

.relatorio-foto:focus-within {
    border-color: var(--color-primary);
    background: var(--color-primary-light);
}

.relatorio-foto span {
    font-size: var(--font-size-md);
    font-weight: var(--font-weight-semibold);
}

.relatorio-foto small {
    color: var(--color-text-muted);
    min-height: 2.4em;
}

.relatorio-foto input {
    width: 100%;
    max-width: 100%;
    margin-top: auto;
    font-size: var(--text-legenda-size);
}

.relatorio-foto input::file-selector-button {
    margin-right: var(--space-2);
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background: var(--color-bg);
    color: var(--color-text);
    cursor: pointer;
    font: inherit;
}

.relatorio-formulario .modal__acoes {
    align-items: center;
    margin-top: var(--space-5);
    padding-top: var(--space-4);
    border-top: 1px solid var(--color-border);
}

@media (max-width: 560px) {
    .modal--relatorio {
        padding: var(--space-4);
    }

    .relatorio-fotos {
        grid-template-columns: 1fr;
    }

    .relatorio-foto {
        min-height: 112px;
    }
}

.modal-overlay--usuario {
    align-items: flex-start;
    overflow-y: auto;
}

.modal-usuario__formulario {
    margin-top: var(--space-4);
}

.modal-usuario__senha-ajuda {
    margin: var(--space-4) 0 0;
    padding: var(--space-3);
    border-radius: var(--radius-md);
    background: var(--color-bg-muted);
    color: var(--color-text-muted);
    font-size: var(--text-legenda-size);
}

.usuario-detalhes {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3);
    margin: var(--space-5) 0;
}

.usuario-detalhes__identidade {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    margin: var(--space-5) 0;
    padding-bottom: var(--space-4);
    border-bottom: 1px solid var(--color-border);
}

.usuario-detalhes__foto {
    width: 64px;
    height: 64px;
    flex: 0 0 auto;
    border-radius: 50%;
    object-fit: cover;
    border: 1px solid var(--color-border);
}

.usuario-detalhes__foto--vazia {
    display: grid;
    place-items: center;
    background: var(--color-primary-light);
    color: var(--color-primary-hover);
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
}

.usuario-detalhes__identidade strong,
.usuario-detalhes__identidade span {
    display: block;
}

.usuario-detalhes__identidade strong {
    font-size: var(--font-size-lg);
}

.usuario-detalhes__identidade span {
    color: var(--color-text-muted);
    margin-top: var(--space-1);
    text-transform: capitalize;
}

.usuario-detalhes > div {
    padding: var(--space-3);
    border-radius: var(--radius-md);
    background: var(--color-bg-muted);
}

.usuario-detalhes dt {
    color: var(--color-text-muted);
    font-size: var(--text-legenda-size);
    font-weight: var(--font-weight-bold);
    text-transform: uppercase;
}

.usuario-detalhes dd {
    margin: var(--space-1) 0 0;
}

.usuario-detalhes__acoes {
    display: flex;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-top: var(--space-5);
    padding-top: var(--space-4);
    border-top: 1px solid var(--color-border);
}

.mensagem-usuario__texto {
    width: 100%;
    min-height: 180px;
    padding: var(--space-3);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    resize: vertical;
    font: inherit;
}

.usuario-toggle {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    margin-top: var(--space-4);
    cursor: pointer;
}

.usuario-toggle input[type="checkbox"] {
    position: absolute;
    opacity: 0;
}

.usuario-toggle__trilho {
    width: 42px;
    height: 24px;
    flex: 0 0 auto;
    border-radius: 999px;
    background: var(--color-border);
    position: relative;
    transition: background-color var(--transicao-rapida);
}

.usuario-toggle__trilho::after {
    content: '';
    position: absolute;
    top: 3px;
    left: 3px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    transition: transform var(--transicao-rapida);
}

.usuario-toggle input:checked + .usuario-toggle__trilho {
    background: var(--color-success, #2f855a);
}

.usuario-toggle input:checked + .usuario-toggle__trilho::after {
    transform: translateX(18px);
}

.usuario-toggle strong,
.usuario-toggle small {
    display: block;
}

.usuario-toggle small {
    color: var(--color-text-muted);
    margin-top: 2px;
}

.modal-overlay--obra {
    align-items: flex-start;
    overflow-y: auto;
}

.obra-modal__formulario > .campo,
.obra-modal__endereco {
    margin-top: var(--space-4);
}

.obra-modal__endereco {
    padding: var(--space-4);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg-muted);
}

.obra-modal__endereco-topo {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--space-3);
    margin-bottom: var(--space-3);
}

.obra-modal__endereco-topo h3 {
    margin: 0;
    font-size: var(--font-size-md);
}

.obra-modal__endereco-topo span,
[data-cep-status] {
    color: var(--color-text-muted);
    font-size: var(--text-legenda-size);
}

.obra-modal__grade {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3);
}

.obra-modal__logradouro {
    grid-column: 1 / -1;
}

.obra-modal__endereco-acoes {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-3);
    margin-top: var(--space-3);
}

@media (max-width: 560px) {
    .obra-modal__grade {
        grid-template-columns: 1fr;
    }

    .obra-modal__logradouro {
        grid-column: auto;
    }

    .obra-modal__endereco-topo,
    .obra-modal__endereco-acoes {
        align-items: flex-start;
        flex-direction: column;
    }
}

.modal-demanda__topo,
.modal-demanda__rodape,
.modal-demanda__acoes {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.modal-demanda__topo {
    justify-content: space-between;
    border-bottom: 1px solid var(--color-border);
    padding-bottom: var(--space-3);
}

.modal-demanda__codigo {
    display: block;
    color: var(--color-text-muted);
    font-size: var(--text-legenda-size);
    font-weight: var(--font-weight-bold);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.modal-demanda__topo .modal__titulo {
    margin: var(--space-1) 0 0;
}

.modal-demanda__fechar {
    border: 0;
    background: transparent;
    color: var(--color-text-muted);
    cursor: pointer;
    font-size: 1.5rem;
    line-height: 1;
    padding: var(--space-1);
}

.modal-demanda__atividade {
    margin: var(--space-4) 0;
    font-weight: var(--font-weight-semibold);
}

.modal-demanda__dados {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3);
    margin: 0;
}

.modal-demanda__legenda {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    margin: var(--space-4) 0 var(--space-3);
    color: var(--color-text-muted);
    font-size: var(--text-legenda-size);
}

.modal-demanda__modo {
    flex-shrink: 0;
    padding: 3px var(--space-2);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-weight: var(--font-weight-bold);
    text-transform: uppercase;
}

.modal--editando .modal-demanda__modo {
    border-color: var(--color-primary);
    background: var(--color-primary-light);
    color: var(--color-primary-hover);
}

.modal--editando .modal-demanda__campo [data-modal-editavel]:not(:disabled) {
    border-bottom: 1px solid var(--color-primary);
    background: var(--color-bg);
    border-radius: var(--radius-sm);
    padding: 5px 7px;
}

.modal-demanda__dados > div,
.modal-demanda__dados > .modal-demanda__campo {
    min-width: 0;
    padding: var(--space-3);
    background: var(--color-bg-muted);
    border-radius: var(--radius-md);
}

.modal-demanda__campo {
    display: block;
}

.modal-demanda__campo--atividade {
    grid-column: 1 / -1;
    order: -1;
}

.modal-demanda__campo span {
    display: block;
    color: var(--color-text-muted);
    font-size: var(--text-legenda-size);
    font-weight: var(--font-weight-bold);
    text-transform: uppercase;
}

.modal-demanda__campo input,
.modal-demanda__campo select,
.modal-demanda__campo textarea {
    display: block;
    width: 100%;
    border: 1px solid var(--color-border);
    background: transparent;
    color: var(--color-text);
    font: inherit;
    margin-top: var(--space-1);
    padding: 7px 8px;
    border-radius: var(--radius-sm);
}

.modal-demanda__campo textarea {
    resize: vertical;
}

.modal-demanda__campo input:disabled,
.modal-demanda__campo select:disabled,
.modal-demanda__campo textarea:disabled {
    cursor: not-allowed;
    opacity: 1;
    background: var(--color-bg);
}

.modal-demanda__campo--observacoes {
    display: block;
    background: var(--color-bg-muted);
    border-radius: var(--radius-md);
    margin-top: var(--space-3);
    padding: var(--space-3);
}

.modal-demanda__salvar {
    margin-top: var(--space-3);
}

.modal-demanda .botao:not(.modal-demanda__editar-toggle) {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: #fff;
}

.modal-demanda .botao:not(.modal-demanda__editar-toggle):hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: #fff;
}

.modal-demanda__editar-toggle {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: #fff;
}

.modal-demanda__editar-toggle:hover {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    color: #fff;
}

.modal-demanda__dados dt {
    color: var(--color-text-muted);
    font-size: var(--text-legenda-size);
    font-weight: var(--font-weight-bold);
    text-transform: uppercase;
}

.modal-demanda__dados dd {
    margin: var(--space-1) 0 0;
    overflow-wrap: break-word;
}

.modal-demanda__status {
    margin-top: var(--space-3);
}

.modal-demanda__acoes {
    flex-wrap: wrap;
    margin-top: var(--space-3);
}

.modal-demanda__fotos {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-2);
    margin-top: var(--space-3);
}

.modal-demanda__fotos > div {
    min-height: 64px;
    padding: var(--space-3);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-md);
}

.modal-demanda__fotos strong,
.modal-demanda__fotos span {
    display: block;
}

.modal-demanda__fotos strong {
    font-size: var(--text-legenda-size);
}

.modal-demanda__fotos span {
    color: var(--color-text-muted);
    font-size: var(--text-legenda-size);
    margin-top: var(--space-1);
}

.modal-demanda__rodape {
    justify-content: flex-start;
    flex-wrap: wrap;
    margin-top: var(--space-4);
    padding-top: var(--space-3);
    border-top: 1px solid var(--color-border);
}

.modal-demanda__rodape .botao {
    min-width: 132px;
    justify-content: center;
}

.modal-demanda__rastreamento {
    background: var(--color-success, #2f855a) !important;
    border-color: var(--color-success, #2f855a) !important;
    color: #fff !important;
}

.modal-demanda__rastreamento:hover {
    background: #276749 !important;
    border-color: #276749 !important;
    color: #fff !important;
}

.modal-demanda__editar-toggle {
    margin-top: var(--space-4);
}

.modal-demanda__edicao {
    border-top: 1px solid var(--color-border);
    margin-top: var(--space-3);
    padding-top: var(--space-4);
}

.modal-demanda__edicao .campo__input:disabled {
    color: var(--color-text);
    cursor: not-allowed;
    opacity: 1;
}

@media (max-width: 560px) {
    .modal-overlay {
        padding: var(--space-3);
    }

    .modal,
    .modal--demanda,
    .modal--obra,
    .modal--usuario {
        max-width: none;
        max-height: calc(100vh - 24px);
        padding: var(--space-4);
        border-radius: var(--radius-md);
    }

    .modal__acoes,
    .modal-demanda__rodape,
    .modal-demanda__acoes,
    .usuario-detalhes__acoes {
        align-items: stretch;
        flex-direction: column;
    }

    .modal__acoes .botao,
    .modal-demanda__rodape .botao,
    .modal-demanda__acoes .botao,
    .usuario-detalhes__acoes .botao {
        width: 100%;
        min-width: 0;
    }

    .modal-demanda__topo {
        gap: var(--space-2);
    }

    .modal-demanda__atividade {
        overflow-wrap: anywhere;
    }

    .usuario-detalhes {
        grid-template-columns: 1fr;
    }

    .modal-demanda__dados,
    .modal-demanda__fotos {
        grid-template-columns: 1fr;
    }
}

/* ------------------------------------------------------------
   Card de destaque — borda dourada com glow sutil, exclusiva dos
   stat cards do dashboard (nunca em linha de tabela ou cartão
   genérico de outra tela — Fase 3, regra 4: um único elemento de
   destaque por tela)
   ------------------------------------------------------------ */
.card--destaque {
    border: 2px solid var(--color-primary);
    box-shadow: 0 0 0 1px rgba(159, 128, 71, 0.15), 0 4px 20px rgba(159, 128, 71, 0.25);
}

/* ------------------------------------------------------------
   Agrupamento simples de controles inline (ex.: seletor + botão
   no cabeçalho de uma tela)
   ------------------------------------------------------------ */
.grupo-acoes {
    display: inline-flex;
    align-items: center;
    gap: var(--space-3);
    flex-wrap: wrap;
}

/* ------------------------------------------------------------
   Barras de distribuição horizontal (dashboard) — sem biblioteca
   de gráfico: a largura de cada preenchimento já vem calculada do
   servidor, em % relativo ao maior valor da lista
   ------------------------------------------------------------ */
.barra-distribuicao {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.barra-distribuicao__item {
    display: grid;
    grid-template-columns: minmax(70px, 120px) 1fr 32px;
    align-items: center;
    gap: var(--space-3);
}

.barra-distribuicao__rotulo {
    font-size: var(--text-rotulo-size);
    color: var(--color-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.barra-distribuicao__trilha {
    display: block;
    background: var(--color-bg-muted);
    border-radius: var(--radius-sm);
    height: 10px;
    overflow: hidden;
}

.barra-distribuicao__preenchimento {
    display: block;
    background: var(--color-primary);
    height: 100%;
    border-radius: var(--radius-sm);
    width: 0;
}

.barra-distribuicao__valor {
    font-size: var(--text-legenda-size);
    color: var(--color-text-muted);
    text-align: right;
}

/* ------------------------------------------------------------
   Foco visível: reforço global para qualquer elemento interativo
   que não tenha uma regra de foco mais específica acima
   ------------------------------------------------------------ */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: none;
    box-shadow: var(--focus-ring);
    border-radius: var(--radius-sm);
}
