html, body {
    font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    background: #F5EEDD;
    color: #1F2937;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

:root {
    --retiro-primary: #14345A;
    --retiro-primary-dark: #0B2D52;
    --retiro-accent: #6E91A6;
    --retiro-soft: #F5EEDD;
    --retiro-text: #1F2937;
    --retiro-muted: #6B7280;

    /* Paleta CEN */
    --cen-navy-dark: #071F3A;
    --cen-navy: #0B2D52;
    --cen-blue: #14345A;
    --cen-blue-soft: #6E91A6;
    --cen-sage: #6F8F86;
    --cen-cream: #F5EEDD;
    --cen-paper: #FFFDF8;
    --cen-gold: #D8B56D;
    --cen-gold-dark: #B8892D;
    --cen-text: #1F2937;
    --cen-muted: #5B6270;
    --cen-border: rgba(20, 52, 90, 0.14);
    --cen-danger-bg: #FDE2E2;
    --cen-danger-border: #F5A3A3;
    --cen-danger-text: #7F1D1D;
}

a, .btn-link {
    color: var(--retiro-primary);
}

.btn-primary {
    color: #fff;
    background-color: var(--retiro-primary);
    border-color: var(--retiro-primary-dark);
}

    .btn-primary:hover,
    .btn-primary:focus {
        background-color: var(--retiro-primary-dark);
        border-color: var(--retiro-primary-dark);
    }

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
    box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem var(--retiro-accent);
}

.event-tag {
    color: var(--retiro-muted);
    font-style: italic;
    font-size: 0.9rem;
}

.site-tag {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.15;
}
.site-tag-title {
    font-weight: 700;
    color: var(--retiro-primary-dark);
    font-size: 1rem;
}
.site-tag-sub {
    font-size: 0.78rem;
    color: var(--retiro-muted);
    font-style: italic;
}

/* Home / hero */
.hero {
    background: linear-gradient(135deg, var(--retiro-primary) 0%, var(--retiro-primary-dark) 100%);
    color: #fff;
    padding: 4rem 0 3rem;
    margin: -1.1rem -1.5rem 2rem;
}

.retreat-hero-banner {
    display: block;
    text-align: center;
    margin: 0 0 1rem;
    background: transparent;
    line-height: 0;
}
.retreat-hero-banner img {
    max-width: 100%;
    max-height: 260px;
    width: auto;
    height: auto;
    aspect-ratio: 2172 / 724;
    display: inline-block;
    border-radius: 16px;
    box-shadow: 0 8px 24px rgba(7, 31, 58, 0.10);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    will-change: transform;
}
.retreat-hero-banner:hover img {
    transform: translateY(-2px);
    box-shadow: 0 14px 30px rgba(7, 31, 58, 0.14);
}

/* Bot\u00e3o de login externo (Google) seguindo a guia de marca */
.external-login-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.65rem;
    font-weight: 500;
}
.external-login-google {
    background-color: #ffffff;
    color: #1f1f1f;
    border: 1px solid #dadce0;
    box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}
.external-login-google:hover,
.external-login-google:focus {
    background-color: #f8f9fa;
    color: #1f1f1f;
    border-color: #dadce0;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.external-login-google svg { flex: 0 0 18px; }

.external-login-microsoft {
    background-color: #ffffff;
    color: #5e5e5e;
    border: 1px solid #8c8c8c;
    box-shadow: 0 1px 2px rgba(0,0,0,0.05);
    font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
}
.external-login-microsoft:hover,
.external-login-microsoft:focus {
    background-color: #f5f5f5;
    color: #5e5e5e;
    border-color: #8c8c8c;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.external-login-microsoft svg { flex: 0 0 18px; }

.external-login-yahoo {
    background-color: #6001d2;
    color: #ffffff;
    border: 1px solid #6001d2;
    box-shadow: 0 1px 2px rgba(0,0,0,0.05);
}
.external-login-yahoo:hover,
.external-login-yahoo:focus {
    background-color: #4d01a8;
    color: #ffffff;
    border-color: #4d01a8;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.external-login-yahoo svg { flex: 0 0 18px; }

.hero-eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.25em;
    font-size: 0.8rem;
    color: var(--retiro-accent);
    margin: 0;
}

.hero-title {
    font-size: 3rem;
    font-weight: 700;
    margin: 0.5rem 0 0.75rem;
}

.hero-subtitle {
    font-size: 1.15rem;
    opacity: 0.9;
    max-width: 36rem;
}

.info-grid {
    display: grid;
    gap: 1.25rem;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    margin-bottom: 2rem;
}

.info-card {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-radius: 16px;
    padding: 1.5rem;
    box-shadow: 0 4px 14px rgba(7, 31, 58, 0.05);
    border-top: 4px solid var(--cen-gold);
}

    .info-card h3 {
        margin-top: 0;
        font-size: 1.15rem;
        color: var(--cen-navy);
        font-family: 'Playfair Display', Georgia, serif;
        font-weight: 700;
    }

    .info-card p {
        margin: 0.25rem 0;
    }

.pix-key code {
    background: var(--retiro-soft);
    padding: 0.15rem 0.4rem;
    border-radius: 4px;
    color: var(--retiro-primary-dark);
}

/* Landing por retiro (Páscoa / Obreiros) */
.retreat-landing { margin-bottom: 2rem; }
.retreat-landing-card { padding: 2rem; }
.retreat-landing-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    border-bottom: 1px solid var(--retiro-soft);
    padding-bottom: 1rem;
    margin-bottom: 0.5rem;
}
.retreat-landing-header h2 {
    color: var(--retiro-primary-dark);
    margin: 0;
}
.retreat-landing-workers { border-top-color: var(--retiro-primary); }
.retreat-price-card {
    background: var(--retiro-soft);
    border-top-color: var(--retiro-primary-dark);
}
.retreat-price-card .display-7 { font-size: 1.25rem; }

.contact-list {
    list-style: none;
    padding-left: 0;
    margin: 0;
}

    .contact-list li {
        padding: 0.25rem 0;
        border-bottom: 1px dashed var(--retiro-soft);
    }

.notes {
    background: var(--retiro-soft);
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 3rem;
}

    .notes h3 {
        margin-top: 0;
        color: var(--retiro-primary);
    }

.scripture {
    margin-top: 1.5rem;
    padding: 1rem 1.5rem;
    border-left: 4px solid var(--retiro-accent);
    font-style: italic;
    color: var(--retiro-muted);
}

    .scripture footer {
        margin-top: 0.5rem;
        font-style: normal;
        font-weight: 600;
        color: var(--retiro-primary);
    }

/* Versículo posicionado logo abaixo do título do retiro, no cabeçalho da landing */
.scripture-inline {
    margin-top: 0.75rem;
    padding: 0.5rem 0 0.5rem 1rem;
    font-size: 0.95rem;
    max-width: 38rem;
}

/* Cabeçalho do card de landing: título à esquerda, CTA à direita */
.retreat-landing-title {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 1 1 auto;
    min-width: 0;
}

/* Badge circular para os ícones dos cards informativos */
.card-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: var(--retiro-soft);
    margin-right: 0.6rem;
    font-size: 1.1rem;
    line-height: 1;
    vertical-align: middle;
    box-shadow: inset 0 0 0 1px rgba(0,0,0,0.04);
}
.card-icon-dates    { background: #e3ecf6; }
.card-icon-location { background: #e6efe8; }
.card-icon-audience { background: #ede4f3; }
.card-icon-price    { background: #fbf1d8; }
.card-icon-help     { background: #f3e5e2; }

.info-card h3 {
    display: flex;
    align-items: center;
}

/* Link de WhatsApp nos contatos: ícone verde + texto */
.contact-whatsapp {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    text-decoration: none;
    color: #128c4a;
    font-weight: 600;
}
.contact-whatsapp:hover { text-decoration: underline; }
.contact-whatsapp-icon {
    width: 1.05rem;
    height: 1.05rem;
}

/* Formulário */
.form-page {
    padding-top: 1rem;
}

.form-header h1 {
    color: var(--cen-navy);
    font-family: 'Playfair Display', Georgia, serif;
    font-weight: 700;
    margin-bottom: 0.5rem;
}

/* Título do formulário */
.cen-form-title {
    font-family: 'Playfair Display', Georgia, serif;
    font-weight: 700;
    color: var(--cen-navy);
    line-height: 1.1;
}

.steps {
    display: flex;
    gap: 0.5rem;
    margin: 1rem 0 1.5rem;
    overflow-x: auto;
    padding-bottom: 0.25rem;
    -webkit-overflow-scrolling: touch;
}

.step {
    padding: 0.45rem 0.95rem;
    border-radius: 999px;
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    font-size: 0.9rem;
    color: var(--cen-muted);
    white-space: nowrap;
    flex: 0 0 auto;
    font-weight: 500;
}

    .step.active {
        background: var(--cen-navy);
        color: #fff;
        border-color: var(--cen-navy);
        font-weight: 700;
    }

    .step.done {
        background: var(--cen-cream);
        color: var(--cen-navy);
        border-color: var(--cen-border);
    }
    .step.done::before { content: "✓ "; color: var(--cen-gold-dark); font-weight: 700; }

.card-step {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-top: 4px solid var(--cen-gold);
    border-radius: 16px;
    padding: 1.5rem;
    margin-bottom: 1rem;
    box-shadow: 0 4px 14px rgba(7, 31, 58, 0.05);
}

    .card-step legend {
        float: left;
        width: 100%;
        padding: 0;
        margin: 0 0 1rem 0;
        color: var(--cen-navy);
        font-family: 'Playfair Display', Georgia, serif;
        font-weight: 700;
        font-size: 1.3rem;
    }

    .card-step legend + * { clear: both; }

.card-step > h3,
.card-step .card-body > h2,
.card-step .card-body > h3 {
    font-family: 'Playfair Display', Georgia, serif;
    font-weight: 700;
    color: var(--cen-navy);
    font-size: 1.3rem;
    margin: 0 0 1rem;
}

.card-step .form-control,
.card-step .form-select {
    min-height: 48px;
    border-radius: 10px;
}

@media (max-width: 640px) {
    .card-step { padding: 1.1rem; }
}

.dependents .dependent + .dependent {
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px dashed #e6dfd0;
}

.person-card {
    background: var(--cen-cream);
    border: 1px solid var(--cen-border);
    border-radius: 12px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
}

    .person-card h4 {
        margin: 0 0 0.5rem;
        color: var(--cen-navy);
        font-weight: 700;
    }

    .person-card .age-band {
        font-weight: 400;
        color: var(--cen-muted);
        font-size: 0.9rem;
        margin-left: 0.5rem;
    }

.check-group {
    display: flex;
    gap: 0.6rem;
    flex-wrap: wrap;
}

    .check-group label {
        display: inline-flex;
        align-items: center;
        gap: 0.5rem;
        background: #fff;
        padding: 0.65rem 0.9rem;
        border-radius: 10px;
        border: 1px solid var(--cen-border);
        min-height: 46px;
        cursor: pointer;
        font-size: 0.95rem;
    }
    .check-group input[type="checkbox"] {
        width: 1.2rem;
        height: 1.2rem;
        flex: 0 0 auto;
    }
    .check-group label:has(input:checked) {
        border-color: var(--cen-blue-soft);
        background: #eef4f9;
        color: var(--cen-navy);
        font-weight: 600;
    }

    .check-group label.covered {
        background: var(--cen-cream);
        color: var(--cen-muted);
        cursor: not-allowed;
    }

    .check-group label.covered em {
        font-size: 0.8rem;
        margin-left: 0.25rem;
    }

/* No mobile os chips ocupam a linha inteira (alvo de toque grande) */
@media (max-width: 640px) {
    .check-group { flex-direction: column; gap: 0.5rem; }
    .check-group label { width: 100%; min-height: 48px; }
}

.day-meals {
    background: #fff;
    border: 1px solid var(--cen-border);
    border-radius: 10px;
    padding: 0.85rem 1rem;
}

    .day-meals .form-label {
        font-weight: 700;
        color: var(--cen-navy);
        margin-bottom: 0.5rem;
    }

.meals-grid {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: repeat(3, 1fr);
}

    .meals-grid label {
        display: flex;
        flex-direction: column;
        gap: 0.25rem;
        font-size: 0.9rem;
        color: var(--retiro-muted);
    }

.preview tfoot th {
    font-size: 1.1rem;
    color: var(--cen-navy);
}

/* Tabela de resumo vira lista de cards no mobile */
@media (max-width: 640px) {
    .preview thead { display: none; }
    .preview, .preview tbody, .preview tfoot, .preview tr, .preview td, .preview th {
        display: block;
        width: 100%;
    }
    .preview tbody tr {
        border: 1px solid var(--cen-border);
        border-radius: 12px;
        margin-bottom: 0.6rem;
        padding: 0.6rem 0.85rem;
        background: var(--cen-paper);
    }
    .preview td {
        border: none !important;
        padding: 0.2rem 0;
        text-align: left !important;
    }
    .preview td::before {
        content: attr(data-label);
        display: block;
        font-size: 0.7rem;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: var(--cen-muted);
        font-weight: 700;
    }
    .preview tfoot tr {
        display: flex;
        justify-content: space-between;
        align-items: baseline;
        background: var(--cen-cream);
        border-radius: 12px;
        padding: 0.75rem 0.85rem;
        border: 1px solid var(--cen-border);
    }
    .preview tfoot th { width: auto; }
    .preview tfoot th[colspan] { text-align: left !important; }
    .preview tfoot th::before { content: none; }
}

.form-actions {
    display: flex;
    gap: 0.75rem;
    margin-top: 1.5rem;
    flex-wrap: wrap;
}

/* No mobile: botão principal em destaque, largura total */
@media (max-width: 560px) {
    .form-actions {
        flex-direction: column-reverse;
    }
    .form-actions .btn {
        width: 100%;
        min-height: 50px;
        margin: 0 !important;
    }
}

/* Confirmação */
.confirmation h1 {
    color: var(--cen-navy);
}
.cen-confirm-title {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    font-family: 'Playfair Display', Georgia, serif;
    font-weight: 700;
    color: var(--cen-navy);
}
.cen-confirm-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.4rem;
    height: 2.4rem;
    border-radius: 50%;
    background: #1E9E5A;
    color: #fff;
    font-size: 1.3rem;
    flex: 0 0 auto;
    box-shadow: 0 4px 12px rgba(30, 158, 90, 0.3);
}

.summary-card,
.pix-card,
.receipts-card {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-top: 4px solid var(--cen-gold);
    border-radius: 16px;
    padding: 1.35rem 1.5rem;
    margin: 1rem 0;
    box-shadow: 0 4px 14px rgba(7, 31, 58, 0.05);
}
.summary-card h3,
.pix-card h3,
.receipts-card h3 {
    font-family: 'Playfair Display', Georgia, serif;
    font-weight: 700;
    color: var(--cen-navy);
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.pix-card h3 .bi { color: var(--cen-blue); }
.receipts-card h3 .bi { color: var(--cen-blue); }

/* Espaçamento mais compacto no card "Como pagar" */
.pix-card { padding: 1.1rem 1.5rem; }
.pix-card h3 { margin-bottom: 0.6rem; }
.pix-card p { margin-bottom: 0.5rem; }
.pix-card .pix-key { margin: 0.25rem 0 0.5rem; }

    .summary-card ul {
        margin: 0;
        padding-left: 1.2rem;
    }

.amounts {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: repeat(3, 1fr);
    margin: 1rem 0 0.5rem;
}
@media (max-width: 560px) {
    .amounts { grid-template-columns: 1fr; }
}

.amount-box {
    display: flex;
    flex-direction: column;
    background: var(--cen-cream);
    border: 1px solid var(--cen-border);
    border-radius: 12px;
    padding: 0.75rem 1rem;
    border-left: 4px solid var(--cen-blue-soft);
}

    .amount-box .label {
        font-size: 0.8rem;
        color: var(--cen-muted);
        text-transform: uppercase;
        letter-spacing: 0.05em;
    }

    .amount-box .value {
        font-size: 1.35rem;
        font-weight: 700;
        color: var(--cen-navy);
    }

    .amount-box.paid { border-left-color: #1E9E5A; }
    .amount-box.due  { border-left-color: #B53636; }

/* Chave Pix: evita vazar em telas estreitas */
.pix-key code {
    word-break: break-all;
}

/* Entrada de data de nascimento (Dia / Mês / Ano) */
.dob-fields {
    display: flex;
    gap: 0.5rem;
    flex-wrap: nowrap;
    align-items: center;
}
.dob-field { min-width: 0; }
.dob-field.dob-day { flex: 0 0 5.5rem; }
.dob-field.dob-month { flex: 1 1 auto; min-width: 0; }
.dob-field.dob-year { flex: 0 0 6.75rem; }
.dob-age { font-size: 0.9rem; }
/* Mostra o texto padrão (Dia/Mês/Ano) em cinza, como um placeholder */
.dob-field .form-select.dob-placeholder { color: #6c757d; }

/* Painel de reaproveitar inscrição anterior (Fase 2) */
.reuse-card { border-left: 4px solid var(--cen-gold, #b8912f); }
.reuse-list { display: flex; flex-direction: column; gap: 0.5rem; }
.reuse-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid #e3e3e3;
    border-radius: 0.5rem;
    background: #fff;
}
.reuse-info { display: flex; flex-direction: column; min-width: 0; }
.reuse-item .btn { flex: 0 0 auto; }
@media (max-width: 575.98px) {
    .reuse-item { flex-direction: column; align-items: stretch; }
    .reuse-item .btn { width: 100%; }
}

/* Dropzone de comprovantes: aceita clique e arrastar-e-soltar. O InputFile nativo
   cobre toda a área (opacity 0), então o "drop" do arquivo é tratado pelo navegador. */
.cen-dropzone {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-height: 104px;
    padding: 1.25rem;
    margin-top: 0.25rem;
    border: 2px dashed var(--cen-navy);
    border-radius: 12px;
    background: rgba(11, 45, 82, 0.03);
    color: var(--cen-navy);
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease;
}
.cen-dropzone:hover { background: rgba(11, 45, 82, 0.06); }
.cen-dropzone.is-dragging {
    background: rgba(216, 181, 109, 0.16);
    border-color: var(--cen-gold);
}
.cen-dropzone.is-busy { cursor: default; opacity: .8; }
.cen-dropzone-inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    pointer-events: none;
}
.cen-dropzone-icon { font-size: 1.75rem; line-height: 1; }
.cen-dropzone-title { font-weight: 700; }
.cen-dropzone-sub { font-size: 0.9rem; color: var(--cen-muted, #6b6b6b); }
.cen-upload-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}
.cen-dropzone.is-busy .cen-upload-input { cursor: default; }

.receipts-list {
    list-style: none;
    padding-left: 0;
    margin-top: 1rem;
}

    .receipts-list li {
        padding: 0.6rem 0;
        border-bottom: 1px solid var(--cen-border);
        display: flex;
        align-items: center;
        gap: 0.5rem;
        flex-wrap: wrap;
    }
    .receipts-list li:last-child { border-bottom: none; }
    .receipts-list a {
        color: var(--cen-blue);
        font-weight: 600;
        text-decoration: none;
        display: inline-flex;
        align-items: center;
        gap: 0.35rem;
    }
    .receipts-list a:hover { text-decoration: underline; }
    .receipt-remove { margin-left: auto; }

@media (max-width: 560px) {
    .receipts-list li { flex-direction: column; align-items: flex-start; gap: 0.25rem; }
    .receipt-remove { margin-left: 0; }
}

.total-cell {
    font-size: 1.2rem;
    color: var(--cen-navy);
}

.content {
    padding-top: 1.1rem;
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "Ocorreu um erro."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}
/* Admin dashboard */
.admin-dashboard h3 { color: var(--retiro-primary); font-size: 1.15rem; margin-top: 1.5rem; border-bottom: 2px solid var(--retiro-accent); padding-bottom: .25rem; }
.stat-card { border: 1px solid #e6dccb; box-shadow: 0 1px 3px rgba(0,0,0,.04); transition: transform .1s; }
.stat-card:hover { transform: translateY(-2px); }
.stat-card .stat-value { font-size: 1.8rem; font-weight: 700; color: var(--retiro-primary); line-height: 1.1; }
.stat-card .stat-label { font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; }
.stat-card.stat-highlight { background: linear-gradient(135deg, #fff8ec 0%, #f7e7c0 100%); border-color: var(--retiro-accent); }
.stat-card.stat-highlight .stat-value { color: #5a3414; }
.stat-card.stat-danger { background: #fdecea; border-color: #f5b3ad; }
.stat-card.stat-danger .stat-value { color: #b1361e; }

/* Cor por ocupação (azul folgado, amarelo atenção, vermelho cheio) */
.stat-card.stat-blue { background: #eef5fc; border-color: #b9d4ef; }
.stat-card.stat-blue .stat-value { color: #1e4e79; }
.stat-card.stat-yellow { background: #fff6e0; border-color: #f0d488; }
.stat-card.stat-yellow .stat-value { color: #8a6410; }
.stat-card.stat-red { background: #fdecea; border-color: #f5b3ad; }
.stat-card.stat-red .stat-value { color: #b1361e; }

/* Modal de confirmação padrão (global — usado pelo componente ConfirmModal) */
.modal-backdrop-custom {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1080;
    padding: 1rem;
}
.modal-card {
    background: #fff;
    color: #212529;
    border-radius: 0.5rem;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.3);
    padding: 1.5rem;
    width: 100%;
    max-width: 520px;
    max-height: calc(100vh - 2rem);
    overflow-y: auto;
}

/* Admin edit bar on home page */
.home-retreat-block { position: relative; }
.admin-edit-bar { display: flex; justify-content: flex-end; padding: .75rem 1rem 0; }
.admin-edit-bar .btn { box-shadow: 0 1px 3px rgba(0,0,0,.08); background: #fff; }

/* =====================================================================
   CEN — Refino visual da Home (paleta cen-*)
   Container, faixa-resumo, CTA, cards informativos, alerta, contatos,
   versículo. Mantém .info-card/.retreat-* legados intactos.
   ===================================================================== */

.cen-page-container {
    max-width: 1360px;
    margin: 0 auto;
    width: 100%;
    padding: 0.5rem 0 2rem;
}
@media (max-width: 768px) {
    .cen-page-container { padding: 0.5rem 0 1.5rem; }
}

/* Alturas máximas do banner por breakpoint (imagem mantida em contain) */
@media (max-width: 1199px) {
    .retreat-hero-banner img { max-height: 220px; }
}
@media (max-width: 768px) {
    .retreat-hero-banner img { max-height: 160px; }
}

/* ---------- Faixa de resumo rápido ---------- */
.cen-quick-stats {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-radius: 16px;
    box-shadow: 0 8px 20px rgba(7, 31, 58, 0.06);
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0;
    padding: 0.75rem 1rem;
    margin-bottom: 0.75rem;
}

.cen-quick-stat {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 0.4rem 1.1rem;
    border-right: 1px solid var(--cen-border);
    min-width: 0;
}
.cen-quick-stat:last-child { border-right: none; }

.cen-quick-stat-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: var(--cen-cream);
    color: var(--cen-blue);
    flex: 0 0 auto;
    transition: transform 0.2s ease;
}
.cen-quick-stat-icon .bi { font-size: 1.15rem; }

/* Cores dos ícones da faixa-resumo espelham os cards informativos
   (saturação um pouco maior que o fundo cream para destacar). */
.cen-quick-stat:nth-child(1) .cen-quick-stat-icon { background: #D6E4F5; color: #14345A; }
.cen-quick-stat:nth-child(2) .cen-quick-stat-icon { background: #D4E7DA; color: #2F5147; }
.cen-quick-stat:nth-child(3) .cen-quick-stat-icon { background: #E3D6EE; color: #5A4582; }
.cen-quick-stat:nth-child(4) .cen-quick-stat-icon { background: #F5E6BE; color: #8C6A1D; }

.cen-quick-stat:hover .cen-quick-stat-icon {
    transform: scale(1.08);
    box-shadow: 0 4px 10px rgba(7, 31, 58, 0.10);
}

.cen-quick-stat-text { min-width: 0; }

.cen-quick-stat-label {
    display: block;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--cen-muted);
    margin-bottom: 0.15rem;
}

.cen-quick-stat-value {
    display: block;
    font-size: 0.92rem;
    font-weight: 400;
    color: var(--cen-text);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cen-quick-stat-value strong {
    display: block;
    font-weight: 700;
    color: var(--cen-navy);
}
.cen-quick-stat-value em {
    display: block;
    font-style: normal;
    font-weight: 400;
    font-size: 0.82rem;
    color: var(--cen-muted);
    margin-top: 0.1rem;
}

@media (max-width: 900px) {
    .cen-quick-stats { grid-template-columns: 1fr; padding: 0.5rem; }
    .cen-quick-stat {
        border-right: none;
        border-bottom: 1px solid var(--cen-border);
        padding: 0.75rem 1rem;
    }
    .cen-quick-stat:last-child { border-bottom: none; }
}

/* ---------- Grid unificado da Home ---------- */
/* 4 colunas no desktop. Título+versículo ocupa 2 col, CTA ocupa 2 col,
   4 cards informativos 1 col cada (Datas/Local/Público ficam com a mesma altura
   por estarem na mesma row), Valor estende-se para a row seguinte; aviso e
   dúvidas dividem o espaço dos 3 primeiros cards. */
.cen-home-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-auto-rows: auto;
    gap: 12px;
    margin-bottom: 0.75rem;
    align-items: stretch;
}

.cen-home-grid .cen-title-block { grid-column: span 2; }
.cen-home-grid .cen-cta-card    { grid-column: span 2; }
.cen-home-grid .cen-info-card   { grid-column: span 1; }
/* Valor ocupa 2 linhas (linha dos cards + linha do aviso/dúvidas) */
.cen-home-grid .cen-info-card--price { grid-row: span 2; }
/* Aviso = 1 col, Dúvidas = 2 cols (juntos = 3 cols, mesmo espaço dos 3 cards acima) */
.cen-home-grid .cen-alert        { grid-column: span 1; margin-bottom: 0; }
.cen-home-grid .cen-contact-card { grid-column: span 2; margin-bottom: 0; }

@media (max-width: 1199px) {
    .cen-home-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .cen-home-grid .cen-title-block,
    .cen-home-grid .cen-cta-card,
    .cen-home-grid .cen-alert,
    .cen-home-grid .cen-contact-card { grid-column: span 2; }
    .cen-home-grid .cen-info-card--price { grid-row: auto; }
}

@media (max-width: 768px) {
    .cen-home-grid {
        grid-template-columns: 1fr;
    }
    .cen-home-grid > * { grid-column: span 1 !important; }
}

.cen-title-block {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 0;
    align-self: stretch;
}

.cen-title-eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.22em;
    font-size: 0.78rem;
    color: var(--cen-blue-soft);
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.cen-title {
    font-family: 'Playfair Display', Georgia, 'Times New Roman', serif;
    font-size: 2.4rem;
    font-weight: 700;
    color: var(--cen-navy);
    line-height: 1.1;
    letter-spacing: -0.005em;
    margin: 0 0 0.5rem;
}

.cen-title-scripture {
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    padding: 0 0 0 1.75rem;
    margin: 0.5rem 0 0;
    max-width: 100%;
    position: relative;
    font-family: 'Playfair Display', Georgia, 'Times New Roman', serif;
    font-style: italic;
    font-weight: 400;
    font-size: 1rem;
    line-height: 1.5;
    color: var(--cen-text);
    opacity: 0.9;
}
.cen-title-scripture::before {
    content: '\201C';
    position: absolute;
    left: -0.15rem;
    top: -0.85rem;
    font-family: 'Playfair Display', Georgia, serif;
    font-size: 3.5rem;
    color: var(--cen-gold);
    line-height: 1;
    font-style: normal;
    font-weight: 700;
    opacity: 0.85;
}
.cen-title-scripture footer {
    margin-top: 0.35rem;
    font-family: inherit;
    font-style: inherit;
    font-weight: inherit;
    font-size: inherit;
    color: inherit;
    letter-spacing: normal;
    text-transform: none;
    opacity: inherit;
}

/* CTA card (ocupa toda a célula do grid; 2 colunas no desktop) */
.cen-cta-card {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-top: 4px solid var(--cen-gold);
    border-radius: 16px;
    padding: 18px 20px;
    box-shadow: 0 8px 20px rgba(7, 31, 58, 0.08);
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.9rem;
    width: 100%;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    will-change: transform;
}
.cen-cta-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 16px 32px rgba(7, 31, 58, 0.15);
}

.cen-cta-title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--cen-navy);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 0.45rem;
}
.cen-cta-title .bi { color: var(--cen-gold-dark); font-size: 1.05rem; }

/* Inscrições encerradas: mesma caixa e mesma altura do CTA, sem afordância de clique. */
.cen-cta-card--closed { border-top-color: var(--cen-border); }
.cen-cta-card--closed:hover {
    transform: none;
    box-shadow: 0 8px 20px rgba(7, 31, 58, 0.08);
}
.cen-cta-card--closed .cen-cta-title .bi { color: var(--cen-navy); }
.cen-cta-closed {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    width: 100%;
    min-height: 46px;
    margin: 0;
    padding: 0.5rem 1rem;
    border: 1px solid var(--cen-border);
    border-radius: 12px;
    background: rgba(7, 31, 58, 0.06);
    color: var(--cen-navy);
    font-weight: 600;
    font-size: 0.92rem;
    line-height: 1.25;
    text-align: center;
}
.cen-cta-closed .bi { color: var(--cen-gold-dark); flex-shrink: 0; }

.cen-cta-price {
    display: flex;
    align-items: baseline;
    gap: 0.35rem;
    color: var(--cen-navy);
}
.cen-cta-currency { font-size: 1rem; font-weight: 600; color: var(--cen-muted); }
.cen-cta-amount   { font-size: 1.9rem; font-weight: 700; line-height: 1; }
.cen-cta-unit     { font-size: 0.88rem; color: var(--cen-muted); margin: 0; }

.cen-cta-installments {
    list-style: none;
    padding: 0.6rem 0.85rem;
    margin: 0;
    background: var(--cen-cream);
    border-radius: 10px;
    font-size: 0.85rem;
    color: var(--cen-text);
}
.cen-cta-installments li + li { margin-top: 0.3rem; }
.cen-cta-installments strong { color: var(--cen-navy); }

.btn-cen-gold {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    background: var(--cen-gold);
    color: #fff;
    border: 1px solid var(--cen-gold-dark);
    font-weight: 700;
    border-radius: 12px;
    min-height: 46px;
    padding: 0 1.25rem;
    text-decoration: none;
    transition: background-color .15s ease, color .15s ease;
}
.cen-cta-card .btn-cen-gold { width: 100%; }
.btn-cen-gold:hover,
.btn-cen-gold:focus {
    background: var(--cen-gold-dark);
    color: #fff;
    text-decoration: none;
}
.btn-cen-gold:focus-visible {
    outline: 3px solid var(--cen-gold);
    outline-offset: 3px;
}

.cen-cta-foot {
    font-size: 0.78rem;
    color: var(--cen-muted);
    margin: 0;
    text-align: center;
}

@media (max-width: 900px) {
    .cen-title { font-size: 1.9rem; }
}

/* ---------- Cards informativos (estilo) ---------- */
.cen-info-card {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-top: 4px solid var(--cen-blue-soft);
    border-radius: 16px;
    padding: 24px;
    box-shadow: 0 2px 8px rgba(7, 31, 58, 0.05);
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-height: auto;
    height: auto;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    will-change: transform;
}
.cen-info-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 14px 32px rgba(7, 31, 58, 0.14);
}

.cen-info-card--dates    { border-top-color: #6E91A6; }
.cen-info-card--location { border-top-color: #6F8F86; }
.cen-info-card--audience { border-top-color: #7C6BA8; }
.cen-info-card--price    { border-top-color: #D8B56D; }

.cen-info-header {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    margin-bottom: 0.25rem;
}

.cen-info-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.4rem;
    height: 2.4rem;
    border-radius: 50%;
    background: var(--cen-cream);
    color: var(--cen-blue);
    flex: 0 0 auto;
    font-size: 1.1rem;
}

.cen-info-card--dates    .cen-info-icon { background: #E3ECF6; color: #14345A; }
.cen-info-card--location .cen-info-icon { background: #E6EFE8; color: #2F5147; }
.cen-info-card--audience .cen-info-icon { background: #EDE4F3; color: #5A4582; }
.cen-info-card--price    .cen-info-icon { background: #FBF1D8; color: #8C6A1D; }

.cen-info-title {
    font-size: 0.92rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--cen-navy);
    margin: 0;
}

.cen-info-card p { margin: 0.25rem 0; color: var(--cen-text); }
.cen-info-card ul {
    padding-left: 1.1rem;
    margin: 0.25rem 0 0;
    color: var(--cen-text);
}
.cen-info-card ul li { padding: 0.1rem 0; }

.cen-info-card .btn-outline-secondary {
    border-color: var(--cen-border);
    color: var(--cen-navy);
    background: #fff;
}
.cen-info-card .btn-outline-secondary:hover {
    background: var(--cen-cream);
    color: var(--cen-navy);
    border-color: var(--cen-blue-soft);
}

.cen-info-warning {
    background: #FBF1D8;
    border: 1px solid #ECD494;
    border-radius: 10px;
    padding: 0.5rem 0.75rem;
    font-size: 0.85rem;
    color: #6F5210;
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
}
.cen-info-warning .bi { color: #B8892D; margin-top: 0.1rem; }

.cen-pix {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--cen-paper);
    border: 1px solid rgba(216, 181, 109, 0.55);
    border-radius: 999px;
    padding: 0.35rem 0.8rem;
    font-size: 0.85rem;
    color: var(--cen-navy);
    max-width: 100%;
    word-break: break-all;
    box-shadow: 0 1px 2px rgba(7, 31, 58, 0.06);
}
.cen-pix strong {
    color: var(--cen-gold-dark);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 0.7rem;
    font-weight: 700;
}
.cen-pix code {
    background: transparent;
    color: var(--cen-navy);
    font-weight: 600;
    font-family: 'JetBrains Mono', 'Cascadia Code', Consolas, monospace;
    font-size: 0.83rem;
}

/* ---------- Card de aviso (Atenção) ---------- */
.cen-alert {
    background: var(--cen-danger-bg);
    border: 1px solid var(--cen-danger-border);
    color: var(--cen-danger-text);
    border-radius: 12px;
    padding: 8px 12px;
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 1.5rem;
}
.cen-alert .bi {
    font-size: 1.3rem;
    flex: 0 0 auto;
    color: #B53636;
    margin-top: 0.05rem;
}
.cen-alert p {
    margin: 0;
    font-size: 0.95rem;
    line-height: 1.4;
    color: var(--cen-danger-text);
}
.cen-alert strong { color: #7F1D1D; }

/* ---------- Dúvidas (contatos) ---------- */
.cen-contact-card {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-radius: 12px;
    padding: 8px 14px 10px;
    box-shadow: 0 6px 14px rgba(7, 31, 58, 0.05);
    margin-bottom: 1.5rem;
}

.cen-contact-header {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    color: var(--cen-navy);
    margin-bottom: 0.25rem;
}
.cen-contact-header h3 {
    margin: 0;
    font-size: 1rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
}
.cen-contact-header .bi {
    color: #128C4A;
    font-size: 1.2rem;
}

.cen-contact-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.cen-contact-list li {
    padding: 0.2rem 0;
    border-bottom: 1px solid rgba(20, 52, 90, 0.10);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    color: var(--cen-text);
    font-size: 0.95rem;
}
.cen-contact-list li:last-child { border-bottom: none; }
.cen-contact-list strong { color: var(--cen-navy); }
.cen-contact-list .cen-contact-role {
    color: var(--cen-muted);
    font-size: 0.85rem;
}

.cen-contact-whatsapp {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    text-decoration: none;
    color: #128C4A;
    font-weight: 600;
}
.cen-contact-whatsapp:hover { text-decoration: underline; }
.cen-contact-whatsapp .bi { font-size: 1rem; }

/* Card Valor com mais respiro entre elementos */
.cen-home-grid .cen-info-card--price {
    gap: 0.75rem;
}

/* Footer institucional (aparece em todas as paginas via MainLayout) */
.cen-footer {
    margin-top: 2rem;
    padding: 1.5rem 0 1rem;
    border-top: 1px solid var(--cen-border);
    color: var(--cen-muted);
    font-size: 0.82rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.1rem;
    letter-spacing: 0.01em;
}

.cen-footer-org {
    color: var(--cen-navy);
    font-style: italic;
    font-size: 0.82rem;
    line-height: 1.4;
}
.cen-footer-tagline {
    font-style: italic;
    font-size: 0.74rem;
    line-height: 1.4;
}

.cen-footer-links {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin: 0.5rem 0 0.35rem;
}
.cen-footer-icon {
    color: var(--cen-muted);
    display: inline-flex;
    transition: color 0.15s ease;
}
.cen-footer-icon:hover,
.cen-footer-icon:focus { color: #c4302b; }

.cen-footer-mana img {
    height: 1.4rem;
    width: auto;
    opacity: 0.85;
    transition: opacity 0.15s ease;
}
.cen-footer-mana:hover img,
.cen-footer-mana:focus img { opacity: 1; }

.cen-footer-legal { font-size: 0.74rem; }
.cen-footer-info {
    color: var(--cen-muted);
    font-style: italic;
}
.cen-footer-info .bi {
    color: #B53636;
    font-size: 0.8rem;
}

/* Estado vazio elegante quando nao ha retiros com inscricoes abertas */
.cen-empty-state {
    max-width: 640px;
    margin: 3rem auto 2rem;
    padding: 3rem 2rem;
    text-align: center;
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-top: 4px solid var(--cen-gold);
    border-radius: 20px;
    box-shadow: 0 12px 32px rgba(7, 31, 58, 0.08);
}

.cen-empty-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 4.5rem;
    height: 4.5rem;
    border-radius: 50%;
    background: #FBF1D8;
    color: var(--cen-gold-dark);
    margin-bottom: 1.25rem;
    font-size: 2rem;
    box-shadow: 0 4px 12px rgba(216, 181, 109, 0.25);
}

.cen-empty-title {
    font-family: 'Playfair Display', Georgia, serif;
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--cen-navy);
    margin: 0 0 0.75rem;
    line-height: 1.15;
}

.cen-empty-text {
    color: var(--cen-muted);
    font-size: 1rem;
    line-height: 1.5;
    margin: 0 auto 1.75rem;
    max-width: 42ch;
}

.cen-empty-verse {
    margin: 0 auto;
    padding: 1rem 1.25rem;
    max-width: 42ch;
    border-top: 1px solid var(--cen-border);
    font-family: 'Playfair Display', Georgia, serif;
    font-style: italic;
    color: var(--cen-text);
    opacity: 0.85;
    position: relative;
}
.cen-empty-verse-text { display: block; }
.cen-empty-verse footer {
    margin-top: 0.5rem;
    font-style: normal;
    font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--cen-blue);
    font-weight: 600;
}

/* =====================================================================
   CEN - Ajustes finais (skip link, CTA mobile, ornamento, animacoes)
   ===================================================================== */

/* Skip link acessivel: escondido ate receber foco por teclado */
.cen-skip-link {
    position: absolute;
    left: 0.75rem;
    top: -3rem;
    z-index: 2000;
    background: var(--cen-navy);
    color: #fff;
    padding: 0.55rem 1rem;
    border-radius: 0 0 10px 10px;
    font-size: 0.9rem;
    font-weight: 600;
    text-decoration: none;
    transition: top 0.2s ease;
}
.cen-skip-link:focus {
    top: 0;
    color: #fff;
    outline: 3px solid var(--cen-gold);
    outline-offset: 2px;
}

/* Ornamento dourado (pincelada) apos o titulo/versiculo */
.cen-title-ornament {
    display: block;
    width: 96px;
    height: 4px;
    margin-top: 1rem;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--cen-gold) 0%, var(--cen-gold-dark) 55%, transparent 100%);
    opacity: 0.9;
}

/* Endereco longo no card Local: quebra elegante */
.cen-info-card--location p {
    hyphens: auto;
    overflow-wrap: anywhere;
}

/* Barra fixa de inscricao (apenas mobile) */
.cen-mobile-cta {
    display: none;
}
@media (max-width: 768px) {
    .cen-mobile-cta {
        display: block;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1500;
        padding: 0.6rem 1rem calc(0.6rem + env(safe-area-inset-bottom, 0px));
        background: rgba(255, 253, 248, 0.96);
        backdrop-filter: blur(6px);
        border-top: 1px solid var(--cen-border);
        box-shadow: 0 -6px 18px rgba(7, 31, 58, 0.12);
    }
    .cen-mobile-cta .btn-cen-gold {
        width: 100%;
        min-height: 48px;
    }
    /* espaco extra no fim para o conteudo nao ficar sob a barra */
    .cen-page-container { padding-bottom: 5.5rem; }
}

/* Faixa-resumo: 2x2 em tablets, 1 coluna so em telas bem estreitas */
@media (min-width: 561px) and (max-width: 900px) {
    .cen-quick-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .cen-quick-stat:nth-child(2) { border-right: none; }
    .cen-quick-stat:nth-child(1),
    .cen-quick-stat:nth-child(2) { border-bottom: 1px solid var(--cen-border); }
}
@media (max-width: 560px) {
    .cen-quick-stats { grid-template-columns: 1fr; }
    .cen-quick-stat {
        border-right: none;
        border-bottom: 1px solid var(--cen-border);
    }
    .cen-quick-stat:last-child { border-bottom: none; }
}

/* Animacao de entrada suave (fade + subida) com stagger nos cards */
@keyframes cenFadeInUp {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}
.cen-home-grid > * {
    animation: cenFadeInUp 0.5s ease both;
}
.cen-home-grid > *:nth-child(1) { animation-delay: 0.02s; }
.cen-home-grid > *:nth-child(2) { animation-delay: 0.06s; }
.cen-home-grid > *:nth-child(3) { animation-delay: 0.10s; }
.cen-home-grid > *:nth-child(4) { animation-delay: 0.14s; }
.cen-home-grid > *:nth-child(5) { animation-delay: 0.18s; }
.cen-home-grid > *:nth-child(6) { animation-delay: 0.22s; }
.cen-home-grid > *:nth-child(7) { animation-delay: 0.26s; }
.retreat-hero-banner { animation: cenFadeInUp 0.5s ease both; }
.cen-quick-stats { animation: cenFadeInUp 0.5s ease 0.05s both; }

/* Respeita usuarios que pedem menos animacao */
@media (prefers-reduced-motion: reduce) {
    .cen-home-grid > *,
    .retreat-hero-banner,
    .cen-quick-stats {
        animation: none;
    }
    .cen-info-card,
    .cen-cta-card,
    .retreat-hero-banner {
        transition: none;
    }
    .cen-info-card:hover,
    .cen-cta-card:hover,
    .retreat-hero-banner:hover {
        transform: none;
    }
}

/* =====================================================================
   CEN - Telas de autenticacao (login, registro, etc.) - mobile-first
   ===================================================================== */
.cen-auth {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    padding: 1.5rem 1rem 3rem;
}

.cen-auth-card {
    width: 100%;
    max-width: 480px;
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-top: 4px solid var(--cen-gold);
    border-radius: 16px;
    box-shadow: 0 12px 32px rgba(7, 31, 58, 0.10);
    padding: 1.75rem 1.5rem 1.5rem;
}

.cen-auth-head {
    text-align: center;
    margin-bottom: 1.25rem;
}
.cen-auth-logo {
    width: 3rem;
    height: 3rem;
    border-radius: 12px;
    display: inline-block;
    margin-bottom: 0.6rem;
    box-shadow: 0 4px 12px rgba(7, 31, 58, 0.12);
}
.cen-auth-title {
    font-family: 'Playfair Display', Georgia, serif;
    font-size: 1.9rem;
    font-weight: 700;
    color: var(--cen-navy);
    margin: 0;
    line-height: 1.1;
}
.cen-auth-subtitle {
    color: var(--cen-muted);
    font-size: 0.95rem;
    margin: 0.35rem 0 0;
}

.cen-auth-social .external-login-btn {
    min-height: 48px;
    font-size: 1rem;
}

/* Divisor "ou" */
.cen-auth-divider {
    display: flex;
    align-items: center;
    text-align: center;
    color: var(--cen-muted);
    font-size: 0.82rem;
    margin: 1.25rem 0;
    gap: 0.75rem;
}
.cen-auth-divider::before,
.cen-auth-divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--cen-border);
}

/* Inputs: alvo de toque confortavel no mobile */
.cen-auth-card .form-control {
    min-height: 52px;
    border-radius: 10px;
}
.cen-auth-card .btn-primary {
    min-height: 50px;
    border-radius: 12px;
    font-weight: 700;
}

/* Links do rodape do card: alvos grandes e espacados */
.cen-auth-links {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--cen-border);
}
.cen-auth-links a {
    display: block;
    padding: 0.6rem 0.25rem;
    color: var(--cen-blue);
    text-decoration: none;
    font-size: 0.95rem;
    border-radius: 8px;
}
.cen-auth-links a:hover {
    background: var(--cen-cream);
    text-decoration: underline;
}

@media (max-width: 480px) {
    .cen-auth { padding: 1rem 0.75rem 2.5rem; }
    .cen-auth-card { padding: 1.5rem 1.1rem 1.25rem; }
    .cen-auth-title { font-size: 1.7rem; }
}

/* =====================================================================
   CEN - Minha conta (Manage) - card + menu de abas responsivo
   ===================================================================== */
.cen-manage {
    max-width: 1000px;
    margin: 0 auto;
    padding-top: 0.5rem;
}

.cen-manage-head {
    margin-bottom: 1.25rem;
}
.cen-manage-title {
    font-family: 'Playfair Display', Georgia, serif;
    font-size: 2rem;
    font-weight: 700;
    color: var(--cen-navy);
    margin: 0;
    line-height: 1.1;
}
.cen-manage-subtitle {
    color: var(--cen-muted);
    font-size: 0.95rem;
    margin: 0.25rem 0 0;
}
.cen-manage-subtitle strong { color: var(--cen-navy); font-weight: 600; }

.cen-manage-grid {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
}

/* Menu lateral (desktop) */
.cen-manage-menu {
    list-style: none;
    margin: 0;
    padding: 0.4rem;
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-radius: 14px;
    box-shadow: 0 2px 8px rgba(7, 31, 58, 0.05);
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}
.cen-manage-link {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.6rem 0.85rem;
    border-radius: 10px;
    color: var(--cen-text);
    text-decoration: none;
    font-size: 0.94rem;
    font-weight: 500;
    border-left: 3px solid transparent;
    white-space: nowrap;
}
.cen-manage-link .bi { color: var(--cen-blue-soft); }
.cen-manage-link:hover {
    background: var(--cen-cream);
    color: var(--cen-navy);
}
.cen-manage-link.active {
    background: var(--cen-navy);
    color: #fff;
    border-left-color: var(--cen-gold);
}
.cen-manage-link.active .bi { color: var(--cen-gold); }

/* Cartao de conteudo generico CEN */
.cen-card {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-top: 4px solid var(--cen-gold);
    border-radius: 16px;
    box-shadow: 0 8px 24px rgba(7, 31, 58, 0.07);
    padding: 1.5rem;
}
.cen-card .cen-card-title,
.cen-card h3 {
    font-family: 'Playfair Display', Georgia, serif;
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--cen-navy);
    margin: 0 0 1rem;
}
.cen-card .form-control { min-height: 50px; border-radius: 10px; }
.cen-card .btn-primary { min-height: 48px; border-radius: 12px; font-weight: 700; }

/* Mobile: abas horizontais rolaveis no topo */
@media (max-width: 820px) {
    .cen-manage-grid { grid-template-columns: 1fr; gap: 1rem; }
    .cen-manage-menu {
        flex-direction: row;
        overflow-x: auto;
        gap: 0.35rem;
        padding: 0.4rem;
        -webkit-overflow-scrolling: touch;
    }
    .cen-manage-link {
        border-left: none;
        border-bottom: 3px solid transparent;
        border-radius: 999px;
    }
    .cen-manage-link.active {
        border-left: none;
        border-bottom-color: transparent;
    }
}

/* =====================================================================
   CEN - Tabelas responsivas (viram cards no mobile) + avisos
   ===================================================================== */
.cen-cards-mobile th { color: var(--cen-navy); }

@media (max-width: 640px) {
    .cen-cards-mobile thead { display: none; }
    .cen-cards-mobile, .cen-cards-mobile tbody, .cen-cards-mobile tr, .cen-cards-mobile td {
        display: block;
        width: 100%;
    }
    .cen-cards-mobile tbody tr {
        border: 1px solid var(--cen-border);
        border-radius: 12px;
        margin-bottom: 0.6rem;
        padding: 0.6rem 0.85rem;
        background: var(--cen-paper);
        box-shadow: 0 2px 8px rgba(7, 31, 58, 0.04);
    }
    .cen-cards-mobile td {
        border: none !important;
        padding: 0.2rem 0;
        text-align: left !important;
    }
    .cen-cards-mobile td::before {
        content: attr(data-label);
        display: block;
        font-size: 0.7rem;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: var(--cen-muted);
        font-weight: 700;
    }
    .cen-cards-mobile td.cen-cards-actions {
        display: flex;
        gap: 0.5rem;
        margin-top: 0.5rem;
    }
    .cen-cards-mobile td.cen-cards-actions::before { content: none; }
    .cen-cards-mobile td.cen-cards-actions .btn { flex: 1; }
}

/* Avisos / paginas de estado (404, erro, indisponivel) */
.cen-notice {
    max-width: 560px;
    margin: 1rem auto;
    text-align: center;
    font-size: 0.9rem;
}
.cen-notice-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 50%;
    background: #FBF1D8;
    color: var(--cen-gold-dark);
    font-size: 1.6rem;
    margin-bottom: 0.75rem;
}
.cen-notice-icon--danger {
    background: var(--cen-danger-bg);
    color: #B53636;
}
.cen-notice .cen-form-title { justify-content: center; }

/* =====================================================================
   CEN - Card de tabela (visual institucional: cabecalho navy + card claro)
   Aplicado em "Minhas inscricoes" e listagens do admin.
   ===================================================================== */
.cen-table-card {
    background: var(--cen-paper);
    border: 1px solid var(--cen-border);
    border-radius: 16px;
    box-shadow: 0 4px 16px rgba(7, 31, 58, 0.06);
    overflow: hidden;
    margin-top: 1rem;
}
    .cen-table-card .table-responsive { margin: 0; }
    .cen-table-card > .table,
    .cen-table-card .table-responsive > .table { margin-bottom: 0; }

    .cen-table-card thead th {
        background: var(--cen-navy);
        color: #fff;
        border: none;
        font-weight: 600;
        font-size: 0.78rem;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        padding: 0.8rem 1rem;
        white-space: nowrap;
        vertical-align: middle;
    }
    .cen-table-card thead th .form-check-input {
        border-color: rgba(255, 255, 255, 0.6);
        background-color: transparent;
    }
    .cen-table-card tbody td {
        padding: 0.8rem 1rem;
        vertical-align: middle;
        border-color: var(--cen-border);
        border-top: none;
        border-bottom: 1px solid var(--cen-border);
    }
    .cen-table-card tbody tr:last-child td { border-bottom: none; }
    /* Neutraliza o zebra do Bootstrap para um tom quente e discreto */
    .cen-table-card .table-striped > tbody > tr:nth-of-type(odd) > td {
        background: rgba(216, 181, 109, 0.05);
    }
    .cen-table-card tbody tr:hover td {
        background: rgba(216, 181, 109, 0.12);
    }
    .cen-table-card tbody tr.table-active > td {
        background: rgba(20, 52, 90, 0.10) !important;
    }

/* No mobile o cabecalho some (linhas viram mini-cards via .cen-cards-mobile) */
@media (max-width: 640px) {
    .cen-table-card:has(.cen-cards-mobile) {
        background: transparent;
        border: none;
        box-shadow: none;
        border-radius: 0;
        overflow: visible;
    }
}

/* =====================================================================
   CEN - Alerts do Bootstrap em tons da paleta institucional
   ===================================================================== */
.alert-info {
    background: rgba(110, 145, 166, 0.12);
    border-color: rgba(110, 145, 166, 0.35);
    color: var(--cen-navy);
    border-radius: 12px;
}
.alert-success {
    background: rgba(111, 143, 134, 0.15);
    border-color: rgba(111, 143, 134, 0.4);
    color: #2F5148;
    border-radius: 12px;
}
.alert-warning {
    background: #FBF1D8;
    border-color: var(--cen-gold);
    color: var(--cen-gold-dark);
    border-radius: 12px;
}
.alert-info code,
.alert-success code,
.alert-warning code { color: inherit; }

/* =========================== Módulo de dormitórios =========================== */
.dorm-summary { display: flex; flex-wrap: wrap; gap: .4rem; }
.dorm-summary .badge { font-size: .85rem; }

.dorm-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: .6rem;
}
.dorm-card {
    display: block;
    text-decoration: none;
    border-radius: .6rem;
    padding: .6rem .7rem;
    border: 1px solid var(--cen-border);
    background: #fff;
    color: var(--cen-text);
    box-shadow: 0 1px 2px rgba(0,0,0,.05);
    transition: transform .08s ease, box-shadow .08s ease;
    border-left: 6px solid #9aa0a6;
}
.dorm-card:hover { transform: translateY(-1px); box-shadow: 0 3px 8px rgba(0,0,0,.12); color: var(--cen-text); }
.dorm-card.g-male { border-color: #2b6cb0; border-left-color: #2b6cb0; background: #f6f9fd; }
.dorm-card.g-female { border-color: #c53d6a; border-left-color: #c53d6a; background: #fdf6f9; }
.dorm-card.g-family { border-color: #8a6d3b; border-left-color: #8a6d3b; background: #fdfbf4; }
.dorm-card.is-full { background: #f3f4f6; }
.dorm-collapse { cursor: pointer; user-select: none; }
.dorm-collapse .bi { font-size: .8em; margin-right: .35rem; }
.dorm-card.drag-over { outline: 3px dashed #14345A; outline-offset: 2px; box-shadow: 0 4px 12px rgba(20,52,90,.25); transform: translateY(-1px); }
.dorm-page tbody tr[draggable="true"] { cursor: grab; }
.dorm-page tbody tr[draggable="true"]:active { cursor: grabbing; }
.dorm-card-top { display: flex; align-items: center; justify-content: space-between; }
.dorm-number { font-size: 1.5rem; font-weight: 800; letter-spacing: .5px; }
.dorm-gender { font-size: .72rem; font-weight: 700; text-transform: uppercase; padding: .1rem .4rem; border-radius: 1rem; background: #eef1f5; }
.dorm-card.g-male .dorm-gender { background: #e2edf8; color: #1e4e79; }
.dorm-card.g-female .dorm-gender { background: #fbe4ec; color: #a11d48; }
.dorm-card.g-family .dorm-gender { background: #f3ead6; color: #7a5b1e; }
.dorm-card-occ { margin-top: .3rem; font-size: .9rem; }
.dorm-card-occ .dorm-free { display: block; font-size: .78rem; color: var(--cen-muted); }

/* Tag de sexo (M/F) ao lado do nome nas listagens */
.sex-badge { display: inline-block; font-size: .68rem; font-weight: 800; line-height: 1; padding: .12rem .34rem; border-radius: 1rem; vertical-align: middle; }
.sex-badge.sex-m { background: #e2edf8; color: #1e4e79; }
.sex-badge.sex-f { background: #fbe4ec; color: #a11d48; }

/* Ícone WhatsApp clicável (sem o número) */
.wa-link { color: #25d366; margin-left: .4rem; font-size: 1.05rem; text-decoration: none; vertical-align: middle; }
.wa-link:hover { color: #1da851; }

/* Tom sutil de fundo por status de pagamento (listagem de participantes) */
.admin-list tr.pay-row-pending > td { background-color: #fff6e0 !important; }
.admin-list tr.pay-row-partial > td { background-color: #eef6fc !important; }
.admin-list tr.pay-row-paid > td { background-color: #eef8f0 !important; }

/* Indicador de carregamento padrão */
.cen-loading { display: flex; align-items: center; gap: .6rem; color: var(--cen-muted); padding: 1rem 0; font-size: .95rem; }
.cen-loading--compact { padding: .25rem 0; }
.cen-spinner { width: 1.15rem; height: 1.15rem; border: 2.5px solid rgba(20,52,90,.2); border-top-color: #14345A; border-radius: 50%; display: inline-block; animation: cen-spin .7s linear infinite; }
@keyframes cen-spin { to { transform: rotate(360deg); } }

/* Toast (canto inferior direito) */
.cen-toast-wrap { position: fixed; right: 1rem; bottom: 1rem; z-index: 3000; display: flex; flex-direction: column; gap: .5rem; }
.cen-toast { min-width: 220px; max-width: 360px; padding: .7rem 1rem; border-radius: 8px; color: #fff; box-shadow: 0 6px 20px rgba(0,0,0,.25); font-size: .92rem; animation: cen-toast-in .18s ease; }
.cen-toast.ok { background: #1e7e46; }
.cen-toast.warn { background: #9a6b12; }
.cen-toast.err { background: #b02a37; }
@keyframes cen-toast-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* Alvos de toque maiores (toggles M/F e ícone WhatsApp) */
.sex-toggle .btn { min-width: 2.6rem; min-height: 2.4rem; }
.wa-link { display: inline-flex; align-items: center; justify-content: center; min-width: 2.1rem; min-height: 2.1rem; }

/* Barra de filtros da grade de quartos: fixa no topo ao rolar no celular */
.dorm-filterbar { padding: .4rem 0; }
@media (max-width: 640px) {
    .dorm-filterbar { position: sticky; top: 0; z-index: 6; background: rgba(245,239,225,.97); backdrop-filter: blur(2px); box-shadow: 0 2px 6px rgba(0,0,0,.06); }
}
.dorm-free.free-blue { color: #1e6fd8; font-weight: 700; }
.dorm-free.free-yellow { color: #b8860b; font-weight: 700; }
.dorm-free.free-red { color: #c0392b; font-weight: 700; }

.dorm-number-lg {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 64px; height: 64px; padding: 0 .5rem;
    font-size: 1.9rem; font-weight: 800; border-radius: .6rem;
    background: #eef1f5; border-left: 8px solid #9aa0a6;
}
.dorm-number-lg.g-male { background: #e2edf8; border-left-color: #2b6cb0; color: #1e4e79; }
.dorm-number-lg.g-female { background: #fbe4ec; border-left-color: #c53d6a; color: #a11d48; }
.dorm-number-lg.g-family { background: #f3ead6; border-left-color: #8a6d3b; color: #7a5b1e; }

.slot-badge { display: inline-block; font-size: .75rem; font-weight: 700; padding: .1rem .45rem; border-radius: 1rem; background: #eef1f5; color: #333; }
.slot-badge.slot-lower { background: #e6f4ea; color: #1e7a3c; }
.slot-badge.slot-upper { background: #fdf1dd; color: #9a6b12; }
.slot-badge.slot-couple { background: #f3e8fb; color: #6b2fa0; }
.slot-badge.slot-common { background: #eef1f5; color: #33475b; }
.dorm-slot-legend { display: flex; flex-wrap: wrap; gap: .4rem; }

/* Folha de porta A4 (impressão) */
.print-root { padding: 1rem; }
.print-toolbar { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin-bottom: 1rem; }
.door-sheet {
    background: #fff;
    width: 210mm; max-width: 100%;
    min-height: 287mm;
    margin: 0 auto 1rem;
    padding: 14mm 14mm 10mm;
    box-sizing: border-box;
    box-shadow: 0 2px 10px rgba(0,0,0,.15);
    display: flex; flex-direction: column;
    border-top: 14px solid #14345A;
}
.door-sheet.g-male { border-top-color: #2b6cb0; }
.door-sheet.g-female { border-top-color: #c53d6a; }
.door-sheet.g-family { border-top-color: #8a6d3b; }
.ds-head { display: flex; align-items: center; gap: 1rem; border-bottom: 2px solid #eee; padding-bottom: 8mm; }
.ds-logo { height: 26mm; width: auto; border-radius: 8px; }.ds-title { flex: 1; }
.ds-retreat { font-size: 1.1rem; color: #14345A; font-weight: 700; }
.ds-quarto { display: flex; align-items: baseline; gap: 1rem; }
.ds-number { font-size: 62pt; font-weight: 900; line-height: 1; color: #14345A; }
.door-sheet.g-male .ds-number { color: #1e4e79; }
.door-sheet.g-female .ds-number { color: #a11d48; }
.door-sheet.g-family .ds-number { color: #7a5b1e; }
.ds-gender { font-size: 20pt; font-weight: 800; text-transform: uppercase; letter-spacing: 2px; padding: .2rem .8rem; border-radius: 2rem; background: #eef1f5; }
.door-sheet.g-male .ds-gender { background: #e2edf8; color: #1e4e79; }
.door-sheet.g-female .ds-gender { background: #fbe4ec; color: #a11d48; }
.door-sheet.g-family .ds-gender { background: #f3ead6; color: #7a5b1e; }
.ds-table { width: 100%; border-collapse: collapse; margin-top: 8mm; font-size: 13pt; }
.ds-table th { text-align: left; background: #14345A; color: #fff; padding: 3mm 4mm; }
.door-sheet.g-female .ds-table th { background: #a11d48; }
.door-sheet.g-family .ds-table th { background: #7a5b1e; }
.ds-table td { padding: 2.6mm 4mm; border-bottom: 1px solid #e5e5e5; }
.ds-center { text-align: center; }
.ds-table th.ds-center { text-align: center; }
.ds-empty td { height: 8mm; }
.ds-notes { margin-top: auto; border: 2px dashed #cbb87f; border-radius: 6px; padding: 5mm; background: #fffdf6; }
.ds-notes-title { font-weight: 800; color: #9a6b12; text-transform: uppercase; letter-spacing: 1px; font-size: 11pt; margin-bottom: 2mm; }
.ds-notes-body { font-size: 12pt; }
.ds-notes-empty { min-height: 30mm; }
.ds-foot { text-align: center; color: #999; font-size: 9pt; margin-top: 6mm; font-style: italic; }

@media print {
    body { background: #fff; }
    .print-toolbar { display: none !important; }
    .door-sheet { box-shadow: none; margin: 0; width: auto; min-height: auto; page-break-after: always; border-top-width: 10px; }
    .door-sheet:last-child { page-break-after: auto; }
}
@page { size: A4; margin: 0; }

@media (max-width: 575.98px) {
    .dorm-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
    .door-sheet { width: auto; padding: 6mm; }
    .ds-number { font-size: 40pt; }
}

/* ===== Chatbot do retiro (widget flutuante discreto) ===== */
.cen-chat { position: fixed; right: 18px; bottom: 18px; z-index: 1080; display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.cen-chat-fab { position: relative; width: 56px; height: 52px; border-radius: 50% 50% 50% 8px; border: none; background: var(--cen-navy, #0B2D52); color: #fff; box-shadow: 0 6px 18px rgba(7,31,58,.28); font-size: 1.35rem; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: transform .12s ease, background .12s ease; }
.cen-chat-fab::after { content: ""; position: absolute; left: 4px; bottom: -5px; width: 0; height: 0; border-right: 12px solid var(--cen-navy, #0B2D52); border-bottom: 9px solid transparent; transition: border-color .12s ease; }
.cen-chat-fab:hover { background: var(--cen-navy-dark, #071F3A); transform: translateY(-1px); }
.cen-chat-fab:hover::after { border-right-color: var(--cen-navy-dark, #071F3A); }
.cen-chat-panel { width: min(360px, calc(100vw - 32px)); height: min(70vh, 520px); background: #fff; border-radius: 14px; box-shadow: 0 12px 34px rgba(7,31,58,.30); display: flex; flex-direction: column; overflow: hidden; border: 1px solid rgba(7,31,58,.10); }
.cen-chat-head { background: var(--cen-navy, #0B2D52); color: #fff; padding: 10px 14px; font-weight: 600; font-size: .95rem; display: flex; align-items: center; justify-content: space-between; }
.cen-chat-x { background: none; border: none; color: #fff; font-size: 1.3rem; line-height: 1; cursor: pointer; opacity: .85; }
.cen-chat-x:hover { opacity: 1; }
.cen-chat-body { flex: 1; overflow-y: auto; padding: 12px; display: flex; flex-direction: column; gap: 8px; background: #F7F9FB; }
.cen-chat-msg { max-width: 85%; padding: 8px 11px; border-radius: 12px; font-size: .9rem; line-height: 1.35; white-space: pre-wrap; word-break: break-word; }
.cen-chat-msg.bot { background: #fff; border: 1px solid rgba(7,31,58,.10); align-self: flex-start; border-bottom-left-radius: 4px; }
.cen-chat-msg.me { background: var(--cen-navy, #0B2D52); color: #fff; align-self: flex-end; border-bottom-right-radius: 4px; }
.cen-chat-msg.bot a { color: var(--cen-navy, #0B2D52); font-weight: 600; text-decoration: underline; word-break: break-all; }
.cen-chat-msg.bot a:hover { color: var(--cen-navy-dark, #071F3A); }
.cen-typing { font-style: italic; color: var(--retiro-muted, #6B7280); }
.cen-chat-input { display: flex; gap: 6px; padding: 10px; border-top: 1px solid rgba(7,31,58,.08); background: #fff; }
.cen-chat-input .form-control { flex: 1; }
.cen-chat-foot { padding: 6px 10px 9px; font-size: .72rem; color: var(--retiro-muted, #6B7280); background: #fff; text-align: center; }
@media (max-width: 480px) { .cen-chat { right: 12px; bottom: 12px; } .cen-chat-panel { height: min(72vh, 480px); } }

/* ===== Botão "Instalar app" (PWA) — só mobile, revelado via JS ===== */
.cen-install-btn { display: none; position: fixed; left: calc(14px + env(safe-area-inset-left, 0px)); bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 1080; align-items: center; gap: 6px; border: none; border-radius: 999px; padding: 10px 16px; background: var(--cen-navy, #0B2D52); color: #fff; font-size: .9rem; font-weight: 600; box-shadow: 0 6px 18px rgba(7,31,58,.28); cursor: pointer; }
.cen-install-btn i { font-size: 1rem; }
.cen-install-btn:hover { background: var(--cen-navy-dark, #071F3A); }
.cen-install-btn.show { display: inline-flex; }
@media (min-width: 641px) { .cen-install-btn.show { display: none; } }

/* ===== Pix QR (copia e cola) na confirmacao ===== */
.pix-qr { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; padding: 12px; border: 1px solid rgba(7,31,58,.10); border-radius: 10px; background: #fff; }
.pix-qr-img { width: 190px; height: 190px; image-rendering: pixelated; border-radius: 6px; }
.pix-qr-copy { flex: 1; min-width: 220px; }
.pix-qr-copy .input-group input { font-family: monospace; font-size: .78rem; }

/* ===== Confirmacao: WhatsApp inline + card de notificacoes ===== */
.cen-wa-offer { font-size: .95rem; }
.cen-wa-inline { color: #128C7E; font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
.cen-wa-inline:hover { text-decoration: underline; }
.cen-wa-btn { border: 1.5px solid #25D366; color: #128C7E; background: #fff; font-weight: 600; font-size: 0.9rem; padding: 0.35rem 0.9rem; display: inline-flex; align-items: center; gap: 8px; }
.cen-wa-btn:hover { background: #25D366; border-color: #25D366; color: #fff; }
.cen-notify-card { display: flex; gap: 14px; align-items: center; padding: 14px 16px; border: 1px solid #cbb87f; border-radius: 12px; background: #fffdf6; }
.cen-notify-icon { font-size: 1.7rem; color: var(--cen-navy, #0B2D52); line-height: 1; }
.cen-notify-body { flex: 1; }
.cen-notify-body strong { display: block; color: var(--cen-navy, #0B2D52); margin-bottom: 8px; }

/* ===== Retiros: config recolhivel + menu de acoes ===== */
.retreat-config > summary { cursor: pointer; font-weight: 600; color: var(--retiro-primary, #14345A); font-size: .9rem; padding: 4px 0; list-style: none; }
.retreat-config > summary::-webkit-details-marker { display: none; }
.retreat-config > summary::before { content: "\25B8"; margin-right: 6px; display: inline-block; }
.retreat-config[open] > summary::before { content: "\25BE"; }
.retreat-actions-sep { flex-basis: 100%; height: 0; }
.dd-more { position: relative; }
.dd-more > summary { list-style: none; }
.dd-more > summary::-webkit-details-marker { display: none; }
.dd-more-menu { position: absolute; right: 0; top: 100%; margin-top: 4px; background: #fff; border: 1px solid rgba(7,31,58,.12); border-radius: 8px; box-shadow: 0 8px 22px rgba(7,31,58,.18); min-width: 150px; z-index: 30; padding: 4px; }
.dd-item { display: block; width: 100%; text-align: left; background: none; border: none; padding: 8px 12px; border-radius: 6px; font-size: .9rem; cursor: pointer; color: var(--retiro-text, #1F2937); }
.dd-item:hover { background: #f2f4f7; }
.dd-item--danger { color: #b53636; }
.dd-item--danger:hover { background: #fbeaea; }

/* ===== Abas contextuais por retiro ===== */
.retreat-tabs { display: flex; gap: 4px; flex-wrap: wrap; border-bottom: 2px solid rgba(7,31,58,.10); margin: 0 0 1rem; }
.retreat-tab { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: 8px 8px 0 0; color: var(--retiro-muted, #6B7280); text-decoration: none; font-weight: 600; font-size: .9rem; border-bottom: 2px solid transparent; margin-bottom: -2px; }
.retreat-tab:hover { color: var(--retiro-primary, #14345A); background: rgba(7,31,58,.04); }
.retreat-tab.is-active { color: var(--retiro-primary, #14345A); border-bottom-color: var(--retiro-primary, #14345A); }

/* ===== Polimento mobile do /admin ===== */
@media (max-width: 576px) {
  .retreat-tabs { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .retreat-tabs::-webkit-scrollbar { display: none; }
  .retreat-tab { white-space: nowrap; padding: 8px 12px; }
  .retreat-actions .btn { flex: 1 1 auto; min-height: 40px; }
  .retreat-actions .dd-more.ms-auto { flex-basis: 100%; }
  .retreat-actions .dd-more > summary.btn { width: 100%; }
  .dd-more-menu { left: 0; right: auto; width: 100%; }
  .retreat-config > summary { min-height: 40px; display: flex; align-items: center; }
  .retreat-config-body .btn { min-height: 40px; }
}

/* ===== Cards de estatistica clicaveis ===== */
a.stat-clickable { color: inherit; display: flex; flex-direction: column; transition: transform .12s ease, box-shadow .12s ease; cursor: pointer; }
a.stat-clickable:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(7,31,58,.16); }
a.stat-clickable:focus-visible { outline: 2px solid var(--retiro-primary, #14345A); outline-offset: 2px; }
a.stat-clickable .stat-value, a.stat-clickable .stat-label { color: inherit; }

/* Linha de participante cancelado (aparece so no filtro Cancelada) */
.pay-row-cancelled td { opacity: .6; text-decoration: line-through; text-decoration-color: rgba(150,60,60,.5); }

/* ===== Resumo de participantes (linha de contagem/pagamentos) ===== */
.participant-summary { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1rem; }
.participant-summary .ps-chips { display: inline-flex; flex-wrap: wrap; gap: .35rem .6rem; }
.participant-summary .ps-chip { white-space: nowrap; display: inline-flex; align-items: center; gap: .3rem; }
.participant-summary .ps-distinct { margin-left: auto; white-space: nowrap; }
@media (max-width: 576px) {
  .participant-summary { gap: .45rem .75rem; }
  .participant-summary .ps-total { flex-basis: 100%; }
  .participant-summary .ps-chips { flex-basis: 100%; justify-content: flex-start; }
  .participant-summary .ps-distinct { margin-left: 0; flex-basis: 100%; }
}

/* =====================================================================
   Polimento mobile (iOS + Android): zoom de input, alvos de toque e
   reducao de movimento. Complementa as safe areas aplicadas no layout.
   ===================================================================== */

/* #2 iOS Safari da zoom ao focar inputs < 16px. Fixa 16px no mobile. */
@media (max-width: 640px) {
  .form-control,
  .form-select,
  textarea {
    font-size: 16px;
  }
}

/* #3 Alvos de toque (Android 48dp / iOS 44pt / WCAG): controles pequenos
   ganham area minima em telas de toque, sem afetar mouse/desktop. */
@media (pointer: coarse) {
  .receipt-remove,
  .receipts-list a {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
}

/* #4 Respeita "reduzir movimento" de forma abrangente. Spinners de
   carregamento seguem girando (feedback funcional). */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .spinner-border, .spinner-grow {
    animation-duration: 0.75s !important;
    animation-iteration-count: infinite !important;
  }
}
