/* Login page logo */
.login-logo {
    display: block;
    max-width: 120px;
    height: auto;
    margin: 0 auto 1.5rem auto;
}

/* Sidebar header logo — override Unfold's default h-8 (32px) */
#nav-sidebar-inner > div:first-child img {
    height: 48px !important;
    max-height: 48px;
    width: auto;
}

/* Two-level fieldset hierarchy on admin change forms (e.g. SystemConfiguration).
 * Injected by apps/core/static/js/admin_module_headers.js when a fieldset
 * carries both `module-first` and a `module-<slug>` class. */
.encontrarse-module-heading {
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--color-font-important-light, #0f172a);
    margin: 2.5rem 0 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid rgb(148, 163, 184);  /* slate-400 */
    text-transform: uppercase;
}

.dark .encontrarse-module-heading {
    color: var(--color-font-important-dark, #e2e8f0);
    border-bottom-color: rgb(71, 85, 105);  /* slate-600 */
}

/* The very first module heading gets less top space — it already has page
 * padding above it. */
.encontrarse-module-heading:first-of-type,
form .encontrarse-module-heading:first-child {
    margin-top: 0.5rem;
}

/* Fider #70 — tabela 2×2 dinâmica para o resumo de valores na ficha do
 * utente CAI / Parceria. Renderizada por `display_subsidy_table`. */
.subsidy-table-wrap {
    max-width: 36rem;
}

.subsidy-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.subsidy-table th,
.subsidy-table td {
    padding: 0.5rem 0.75rem;
    border: 1px solid #e5e7eb;
    text-align: right;
}

.subsidy-table th:first-child {
    text-align: left;
    font-weight: 600;
    background: #f9fafb;
}

.subsidy-table thead th {
    background: #f3f4f6;
    font-weight: 600;
    text-align: center;
}

.subsidy-table tbody tr:last-child td,
.subsidy-table tbody tr:last-child th {
    background: #f0fdf4;
}

.dark .subsidy-table th,
.dark .subsidy-table td {
    border-color: #374151;
}

.dark .subsidy-table th:first-child {
    background: #1f2937;
}

.dark .subsidy-table thead th {
    background: #111827;
}

.dark .subsidy-table tbody tr:last-child td,
.dark .subsidy-table tbody tr:last-child th {
    background: rgba(34, 197, 94, 0.1);
}

/* ==========================================================================
   Agenda semanal — Registo de Assiduidade (#75) + Calendário (#76)
   --------------------------------------------------------------------------
   O Unfold não expõe variantes `dark:` arbitrárias nem a escala `gray`; a sua
   paleta `base` é fixa (base-50 = mais claro … base-900 = fundo da página em
   modo escuro). Por isso as cores/superfícies destes componentes vivem aqui,
   com `.dark` explícito a usar `var(--color-base-*)`. O layout (flex,
   espaçamentos, raio, tipografia) continua em utilitários Tailwind no markup.
   ========================================================================== */

/* Cartão de um dia */
.agw-card { background: #fff; border: 1px solid var(--color-base-200, #e5e7eb); }
.dark .agw-card { background: var(--color-base-800, #1f2937); border-color: var(--color-base-700, #374151); }
.agw-card.is-today { border-color: var(--color-primary-500, #3b82f6); box-shadow: inset 0 0 0 1px var(--color-primary-500, #3b82f6); }

/* Espinha de data — largura aqui (fonte única: Presenças + Calendário) #80 */
.agw-spine { width: 7rem; background: var(--color-base-50, #f9fafb); border-right: 1px solid var(--color-base-100, #f3f4f6); color: var(--color-base-500, #6b7280); }
.dark .agw-spine { background: var(--color-base-900, #111827); border-right-color: var(--color-base-700, #374151); color: var(--color-base-400, #9ca3af); }
.agw-spine-num { color: var(--color-base-900, #111827); }
.dark .agw-spine-num { color: var(--color-base-100, #f3f4f6); }
.agw-spine.is-today { background: var(--color-primary-500, #3b82f6); border-right-color: rgba(255, 255, 255, 0.25); color: rgba(255, 255, 255, 0.85); }
.agw-spine.is-today .agw-spine-num { color: #fff; }

/* Linhas */
.agw-row:hover { background: var(--color-base-50, #f9fafb); }
.dark .agw-row:hover { background: var(--color-base-700, #374151); }
.agw-row + .agw-row { border-top: 1px solid var(--color-base-100, #f3f4f6); }
.dark .agw-row + .agw-row { border-top-color: var(--color-base-700, #374151); }
.agw-title { color: var(--color-base-900, #111827); }
.dark .agw-title { color: var(--color-base-100, #f3f4f6); }
.agw-sub, .agw-time { color: var(--color-base-500, #6b7280); }
.dark .agw-sub, .dark .agw-time { color: var(--color-base-400, #9ca3af); }
.agw-chevron { color: var(--color-base-300, #d1d5db); }
.dark .agw-chevron { color: var(--color-base-600, #4b5563); }
.agw-row:hover .agw-chevron { color: var(--color-primary-500, #3b82f6); }

/* Pills de estado */
.agw-pill { display: inline-flex; align-items: center; gap: 0.25rem; border-radius: 9999px; padding: 0.25rem 0.625rem; font-size: 0.75rem; font-weight: 600; background: var(--color-base-100, #f3f4f6); color: var(--color-base-600, #4b5563); }
.dark .agw-pill { background: var(--color-base-700, #374151); color: var(--color-base-200, #e5e7eb); }
.agw-pill.green { background: #dcfce7; color: #15803d; }
.dark .agw-pill.green { background: rgba(34, 197, 94, 0.16); color: #4ade80; }
.agw-pill.amber { background: #fef3c7; color: #b45309; }
.dark .agw-pill.amber { background: rgba(245, 158, 11, 0.16); color: #fbbf24; }
.agw-pill.gray { background: var(--color-base-100, #f3f4f6); color: var(--color-base-500, #6b7280); }
.dark .agw-pill.gray { background: var(--color-base-700, #374151); color: var(--color-base-400, #9ca3af); }
.agw-future { color: var(--color-base-400, #9ca3af); font-size: 0.75rem; font-weight: 500; }

/* Navegador de semana (Presenças) */
.agw-nav { background: #fff; border: 1px solid var(--color-base-200, #e5e7eb); }
.dark .agw-nav { background: var(--color-base-800, #1f2937); border-color: var(--color-base-700, #374151); }
.agw-nav-btn { color: var(--color-base-500, #6b7280); }
.agw-nav-btn:hover { background: var(--color-base-100, #f3f4f6); }
.dark .agw-nav-btn:hover { background: var(--color-base-700, #374151); }
.agw-range { color: var(--color-base-900, #111827); }
.dark .agw-range { color: var(--color-base-100, #f3f4f6); }
.agw-today-btn { background: var(--color-primary-50, #eff6ff); color: var(--color-primary-600, #2563eb); border: 1px solid var(--color-primary-200, #bfdbfe); }
.agw-today-btn:hover { background: var(--color-primary-100, #dbeafe); }
.dark .agw-today-btn { background: rgba(59, 130, 246, 0.16); color: var(--color-primary-400, #60a5fa); border-color: transparent; }
.dark .agw-today-btn:hover { background: rgba(59, 130, 246, 0.28); }

/* Estado vazio + fallback (Presenças) */
.agw-empty { color: var(--color-base-500, #6b7280); }
.agw-empty-icon { color: var(--color-base-300, #d1d5db); }
.dark .agw-empty-icon { color: var(--color-base-600, #4b5563); }
.agw-fallback { background: var(--color-base-50, #f9fafb); border: 1px solid var(--color-base-200, #e5e7eb); }
.dark .agw-fallback { background: var(--color-base-800, #1f2937); border-color: var(--color-base-700, #374151); }
.agw-summary { color: var(--color-base-700, #374151); }
.dark .agw-summary { color: var(--color-base-200, #e5e7eb); }

/* ===================================================================
   Refeições — vista semanal (Fider #78). Matriz utentes × dias.
   Mesmo princípio das classes .agw-*: layout via Tailwind, cor/superfície
   aqui com override .dark explícito usando var(--color-base-*).
   =================================================================== */

/* Cartão / superfície da grelha */
.mw-card { background: #fff; border: 1px solid var(--color-base-200, #e5e7eb); border-radius: 1rem; overflow: hidden; }
.dark .mw-card { background: var(--color-base-800, #1f2937); border-color: var(--color-base-700, #374151); }

/* Cabeçalho de coluna (dia) */
.mw-head { color: var(--color-base-500, #6b7280); }
.dark .mw-head { color: var(--color-base-400, #9ca3af); }
.mw-head-num { color: var(--color-base-400, #9ca3af); font-weight: 600; }
.mw-headrow { background: var(--color-base-50, #f9fafb); border-bottom: 1px solid var(--color-base-200, #e5e7eb); }
.dark .mw-headrow { background: var(--color-base-900, #111827); border-bottom-color: var(--color-base-700, #374151); }

/* Coluna de hoje destacada */
.mw-today { background: var(--color-primary-50, #eff6ff); }
.dark .mw-today { background: rgba(59, 130, 246, 0.10); }
.mw-head.mw-today, .mw-headrow .mw-today { color: var(--color-primary-600, #2563eb); }
.dark .mw-head.mw-today { color: var(--color-primary-400, #60a5fa); }
.mw-today-dot { width: 0.375rem; height: 0.375rem; border-radius: 9999px; background: var(--color-primary-500, #3b82f6); }

/* Linhas */
.mw-row { border-top: 1px solid var(--color-base-100, #f3f4f6); }
.dark .mw-row { border-top-color: var(--color-base-700, #374151); }
.mw-row:hover { background: var(--color-base-50, #f9fafb); }
.dark .mw-row:hover { background: rgba(255,255,255,0.02); }

/* Nome do utente — link para a ficha */
.mw-name { color: var(--color-base-900, #111827); font-weight: 600; text-decoration: none; }
.dark .mw-name { color: var(--color-base-100, #f3f4f6); }
.mw-name:hover { color: var(--color-primary-600, #2563eb); text-decoration: underline; }
.dark .mw-name:hover { color: var(--color-primary-400, #60a5fa); }
.mw-sub { color: var(--color-base-400, #9ca3af); font-size: 0.7rem; }

/* Toggle de presença: Veio (verde) ↔ Faltou (vermelho). Checkbox escondido. */
.mw-att-input { position: absolute; opacity: 0; width: 0; height: 0; }
.mw-att-btn { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.3rem 0.6rem; border-radius: 9999px; font-size: 0.7rem; font-weight: 700; cursor: pointer; transition: all .12s; user-select: none; border: 1px solid transparent; white-space: nowrap; }
.mw-att-btn .material-symbols-outlined { font-size: 1rem; }
/* estado por omissão (não marcado) = Veio */
.mw-att-btn { background: #dcfce7; color: #15803d; }
.dark .mw-att-btn { background: rgba(34,197,94,0.16); color: #4ade80; }
.mw-att-btn .mw-att-faltou { display: none; }
.mw-att-btn .mw-att-veio { display: inline-flex; align-items: center; gap: 0.25rem; }
.mw-att-input:checked + .mw-att-btn { background: #fee2e2; color: #b91c1c; }
.dark .mw-att-input:checked + .mw-att-btn { background: rgba(239,68,68,0.16); color: #f87171; }
.mw-att-input:checked + .mw-att-btn .mw-att-veio { display: none; }
.mw-att-input:checked + .mw-att-btn .mw-att-faltou { display: inline-flex; align-items: center; gap: 0.25rem; }
.mw-att-input:focus-visible + .mw-att-btn { outline: 2px solid var(--color-primary-500, #3b82f6); outline-offset: 1px; }

/* Toggle de sopa com ícone */
.mw-soup-input { position: absolute; opacity: 0; width: 0; height: 0; }
.mw-soup-btn { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.2rem 0.5rem; border-radius: 9999px; font-size: 0.68rem; font-weight: 600; cursor: pointer; transition: all .12s; user-select: none; border: 1px solid var(--color-base-200, #e5e7eb); background: transparent; color: var(--color-base-400, #9ca3af); }
.dark .mw-soup-btn { border-color: var(--color-base-600, #4b5563); color: var(--color-base-500, #6b7280); }
.mw-soup-btn .material-symbols-outlined { font-size: 0.95rem; }
.mw-soup-input:checked + .mw-soup-btn { background: #fef3c7; color: #b45309; border-color: #fcd34d; }
.dark .mw-soup-input:checked + .mw-soup-btn { background: rgba(245,158,11,0.18); color: #fbbf24; border-color: transparent; }
.mw-soup-input:focus-visible + .mw-soup-btn { outline: 2px solid var(--color-primary-500, #3b82f6); outline-offset: 1px; }
.mw-soup-input:disabled + .mw-soup-btn { opacity: 0.4; cursor: not-allowed; }

/* Select de ementa estilizado, com barra de cor por categoria */
.mw-select { appearance: none; -webkit-appearance: none; width: 100%; border-radius: 0.5rem; border: 1px solid var(--color-base-200, #e5e7eb); background: #fff; color: var(--color-base-800, #1f2937); font-size: 0.75rem; font-weight: 600; padding: 0.35rem 1.4rem 0.35rem 0.6rem; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.4rem center; background-size: 0.8rem; border-left-width: 3px; }
.dark .mw-select { background-color: rgba(255,255,255,0.04); border-color: var(--color-base-600, #4b5563); color: var(--color-base-100, #f3f4f6); }
.mw-select:focus { outline: none; border-color: var(--color-primary-500, #3b82f6); }
.mw-select[data-cat="meat"] { border-left-color: #ef4444; }
.mw-select[data-cat="fish"] { border-left-color: #3b82f6; }
.mw-select[data-cat="veg"] { border-left-color: #22c55e; }
.mw-select[data-cat="soup"] { border-left-color: #f59e0b; }
.mw-select[data-cat="cook"] { border-left-color: #a855f7; }
.mw-select[data-cat="own"] { border-left-color: var(--color-base-400, #9ca3af); }
.mw-select[data-cat="fridge"] { border-left-color: #06b6d4; }
.mw-select[data-cat="cancel"] { border-left-color: #ef4444; }
.mw-select[data-cat=""] { border-left-color: var(--color-base-200, #e5e7eb); }
.dark .mw-select[data-cat=""] { border-left-color: var(--color-base-600, #4b5563); }

/* Chip de ementa planeada (modo presenças/histórico) */
.mw-chip { display: inline-flex; align-items: center; border-radius: 9999px; padding: 0.08rem 0.45rem; font-size: 0.62rem; font-weight: 600; background: var(--color-base-100, #f3f4f6); color: var(--color-base-500, #6b7280); }
.dark .mw-chip { background: var(--color-base-700, #374151); color: var(--color-base-300, #d1d5db); }
.mw-chip--meat { background: #fee2e2; color: #b91c1c; } .dark .mw-chip--meat { background: rgba(239,68,68,.16); color: #f87171; }
.mw-chip--fish { background: #dbeafe; color: #1d4ed8; } .dark .mw-chip--fish { background: rgba(59,130,246,.16); color: #60a5fa; }
.mw-chip--veg { background: #dcfce7; color: #15803d; } .dark .mw-chip--veg { background: rgba(34,197,94,.16); color: #4ade80; }
.mw-chip--soup { background: #fef3c7; color: #b45309; } .dark .mw-chip--soup { background: rgba(245,158,11,.16); color: #fbbf24; }
.mw-chip--cook { background: #f3e8ff; color: #7e22ce; } .dark .mw-chip--cook { background: rgba(168,85,247,.16); color: #c084fc; }
.mw-chip--fridge { background: #cffafe; color: #0e7490; } .dark .mw-chip--fridge { background: rgba(6,182,212,.16); color: #22d3ee; }

/* Marcas só-leitura (histórico / dias futuros) */
.mw-ro-yes { display: inline-flex; align-items: center; justify-content: center; width: 1.6rem; height: 1.6rem; border-radius: 9999px; background: #dcfce7; color: #16a34a; }
.dark .mw-ro-yes { background: rgba(34,197,94,.16); color: #4ade80; }
.mw-ro-no { display: inline-flex; align-items: center; justify-content: center; width: 1.6rem; height: 1.6rem; border-radius: 9999px; background: #fee2e2; color: #dc2626; }
.dark .mw-ro-no { background: rgba(239,68,68,.16); color: #f87171; }
.mw-ro-none { color: var(--color-base-300, #d1d5db); }
.dark .mw-ro-none { color: var(--color-base-600, #4b5563); }

/* Feriado: coluna/célula acinzentada, sem refeição (como fim-de-semana) */
.mw-holiday-head { color: var(--color-base-400, #9ca3af); }
.dark .mw-holiday-head { color: var(--color-base-500, #6b7280); }
.mw-holiday-tag { color: var(--color-base-400, #9ca3af); max-width: 100%; }
.dark .mw-holiday-tag { color: var(--color-base-500, #6b7280); }
.mw-holiday-cell { background: var(--color-base-50, #f9fafb); }
.dark .mw-holiday-cell { background: rgba(255,255,255,0.02); }
.mw-holiday-chip { color: var(--color-base-400, #9ca3af); font-weight: 600; }
.dark .mw-holiday-chip { color: var(--color-base-500, #6b7280); }
.mw-holiday-chip .material-symbols-outlined { font-size: 0.95rem; }

/* Resumo de sopa por dia (rodapé do cabeçalho não, antes uma linha de totais) */
.mw-soupcount { color: var(--color-base-400, #9ca3af); font-size: 0.62rem; font-weight: 600; }

/* Botão remover utente da semana (Fider #90) */
.mw-remove { display: inline-flex; align-items: center; justify-content: center; padding: 0.15rem; border-radius: 0.375rem; color: var(--color-base-400, #9ca3af); background: transparent; border: none; cursor: pointer; transition: all .12s; flex-shrink: 0; }
.mw-remove:hover { color: #b91c1c; background: #fee2e2; }
.dark .mw-remove { color: var(--color-base-500, #6b7280); }
.dark .mw-remove:hover { color: #f87171; background: rgba(239,68,68,0.16); }

/* Etiqueta "a cobrar / cobrado" numa falta faturável (Fider #95).
   Usar :not(.hidden) para que a utility `.hidden` (display:none) ganhe quando
   presente — senão este `display` (carregado depois do Tailwind) sobrepõe-na. */
.mw-charge-tag:not(.hidden) { display: inline-flex; align-items: center; gap: 0.1rem; }
.mw-charge-tag { color: #b45309; }
.dark .mw-charge-tag { color: #fbbf24; }

/* Sufixo "c/ sopa" na escolha da semana atual (Fider #96) */
.mw-soup-tag { color: var(--color-base-400, #9ca3af); font-weight: 600; }
.dark .mw-soup-tag { color: var(--color-base-500, #6b7280); }

/* Modal "cobrar?" ao marcar Faltou (Fider #95).
   `display` em :not(.hidden) para que a utility `.hidden` (display:none) ganhe
   quando presente — senão o modal aparece logo no load e não fecha. */
.mw-modal-backdrop { position: fixed; inset: 0; z-index: 60; align-items: center; justify-content: center; padding: 1rem; background: rgba(17,24,39,0.55); }
.mw-modal-backdrop:not(.hidden) { display: flex; }
.mw-modal { background: #ffffff; color: var(--color-base-900, #111827); width: 100%; max-width: 26rem; border-radius: 1rem; padding: 1.75rem; box-shadow: 0 20px 25px -5px rgba(0,0,0,.2), 0 8px 10px -6px rgba(0,0,0,.2); text-align: center; }
.dark .mw-modal { background: var(--color-base-800, #1f2937); color: var(--color-base-100, #f3f4f6); }
.mw-modal-icon { font-size: 2.25rem; color: #b45309; }
.dark .mw-modal-icon { color: #fbbf24; }
.mw-modal-title { font-size: 1.125rem; font-weight: 700; margin: 0.5rem 0 0.25rem; }
.mw-modal-text { font-size: 0.875rem; color: var(--color-base-500, #6b7280); margin-bottom: 1.25rem; }
.dark .mw-modal-text { color: var(--color-base-400, #9ca3af); }
.mw-modal-actions { display: flex; gap: 0.75rem; justify-content: center; }
.mw-modal-btn { flex: 1; padding: 0.6rem 1rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; cursor: pointer; border: 1px solid transparent; transition: all .12s; }
.mw-modal-no { background: var(--color-base-100, #f3f4f6); color: var(--color-base-700, #374151); border-color: var(--color-base-200, #e5e7eb); }
.mw-modal-no:hover { background: var(--color-base-200, #e5e7eb); }
.dark .mw-modal-no { background: var(--color-base-700, #374151); color: var(--color-base-100, #f3f4f6); border-color: var(--color-base-600, #4b5563); }
.dark .mw-modal-no:hover { background: var(--color-base-600, #4b5563); }
.mw-modal-yes { background: var(--color-primary-600, #2563eb); color: #ffffff; }
.mw-modal-yes:hover { background: var(--color-primary-500, #3b82f6); }
.mw-modal-btn:focus-visible { outline: 2px solid var(--color-primary-500, #3b82f6); outline-offset: 2px; }
